<?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>59409</bug_id>
          
          <creation_ts>2011-04-25 18:55:01 -0700</creation_ts>
          <short_desc>Improve drag start logic</short_desc>
          <delta_ts>2011-05-13 17:51:05 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Cheng">dcheng</reporter>
          <assigned_to name="Daniel Cheng">dcheng</assigned_to>
          <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jhoneycutt</cc>
    
    <cc>thakis</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>392180</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-04-25 18:55:01 -0700</bug_when>
    <thetext>Per crbug.com/55019, the node is not used as the drag image if you start a drag by clicking on the anchor link text and trying to drag it.

The root cause is here:
http://codesearch.google.com/codesearch/p?hl=en#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/rendering/RenderObject.cpp&amp;l=1496
When you try to drag a link without highlighting anything, WebKit treats it as if you were dragging just the inner unnamed text node. I can modify the loop to check for DRAG_ELEMENT on text nodes, but that results in only the text being set as the drag image.

Maybe in http://codesearch.google.com/codesearch/p?hl=en#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/page/EventHandler.cpp&amp;q=draggableNode&amp;l=602 we should iterate up the node hierarchy while the current node is draggable until we find a node who&apos;s parent is not draggable; that way, we coalesce all children of a draggable node together as a web author might expect. Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392181</commentid>
    <comment_count>1</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-04-25 18:58:31 -0700</bug_when>
    <thetext>What does Firefox do?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392188</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-04-25 19:10:32 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; What does Firefox do?

It renders the entire anchor as the drag image as one might expect.

Also, upon further inspection, RenderObject::draggableNode is actually called from EventHandler::handleDrag. It appears eventMayStartDrag is actually a Mac specific method...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392247</commentid>
    <comment_count>3</comment_count>
      <attachid>91053</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-04-25 21:47:13 -0700</bug_when>
    <thetext>Created attachment 91053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392250</commentid>
    <comment_count>4</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-04-25 22:02:07 -0700</bug_when>
    <thetext>I&apos;m not a reviewer. +dglazkov, who is (and who can cc someone else if he feels not up to this)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392278</commentid>
    <comment_count>5</comment_count>
      <attachid>91060</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-04-25 23:03:36 -0700</bug_when>
    <thetext>Created attachment 91060
Patch

Add missing check that curr-&gt;parent() is not NULL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392521</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-26 09:42:47 -0700</bug_when>
    <thetext>This looks confusing to me. What if there are actually several nested draggable elements, and the user is dragging an innermost one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392731</commentid>
    <comment_count>7</comment_count>
      <attachid>91060</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-04-26 14:40:30 -0700</bug_when>
    <thetext>Comment on attachment 91060
Patch

(In reply to comment #6)
&gt; This looks confusing to me. What if there are actually several nested draggable elements, and the user is dragging an innermost one?


(Note I&apos;m assuming that draggable is implemented in these examples, while it currently isn&apos;t)

Case 1:
&lt;a href=&quot;foo.html&quot;&gt;Link&lt;/a&gt;

Anchors default to draggable=&quot;true&quot;. However, right now, a drag started by a click on &quot;Link&quot; is treated as if only the anonymous text node were dragged. You have to start the drag on the padding area (I think) to get a drag image to be rendered for the anchor element.

Case 2:
&lt;div draggable&gt;Draggable text with a &lt;a href=&quot;foo.html&quot;&gt;link&lt;/a&gt;&lt;div&gt;Div inside a div&lt;/div&gt;&lt;/div&gt;

Dragging the anchor will result in just the anchor getting dragged (on Firefox and Chrome). But starting a drag on any other element inside the div will result in the entire div getting dragged.

I think case 1 is something that we should fix. Case 2 is weird but will probably require a more authoritative statement from the spec. The attached patch doesn&apos;t really address case 1 correctly though, so I&apos;m marking it as R- while I debate a better fix...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395127</commentid>
    <comment_count>8</comment_count>
      <attachid>91641</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-04-28 22:54:29 -0700</bug_when>
    <thetext>Created attachment 91641
Test case

I&apos;ve been investigating this more, and this logic seems to be a lot more complicated than necessary:

Today, the code does something like this...

EventHandler::handleMouseMoveEvent(...)
  Does a hit test, I think? This gives us a MouseEventWIthHitTestResults. Dispatch the mouse event. If the event isn&apos;t canceled (I think?), treat it as a potential drag event.
EventHandler::handleMouseDraggedEvent(...)
  chains into...
EventHandler::handleDrag(...)
  Hit test the document. If we hit a node, call node-&gt;renderer()-&gt;draggableNode()
RenderObject::draggableNode(...)
  Using the node we hit, iterate upwards through the tree repeating the following steps:
    Element node and drag mode = element?
      Great, we&apos;re done. Return this node and set m_dragSrcIsDHTML to true.
    Text node or element node with drag mode = auto?
      Call EventHandler::shouldDragAutoNode(...)
EventHandler::shouldDragAutoNode(...)
  chains into...
DragController::mayStartDragAtEventLocation(...)
  which does *another* hit test using EventHandler::hitTestResultAtPoint (which does all sorts of stuff I don&apos;t really undestand).
  If this one hits an image, link, or selection, then it returns true, other wise false. This extra hit test / short-circuiting is the cause (I believe) of some of the complications.

I believe the logic should be simplified into something more like this:
In selection? Draggable, return the node that was hit.
Otherwise, iterate up the tree.
If the node has drag mode == element or is a node that is draggable by default (anchor or image) and the drag mode is not none, return that node.

Also, what exactly is HitTestResult::innerNonSharedNode()? I see it used several times throughout the dragging code but I&apos;m not really sure what it means...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400321</commentid>
    <comment_count>9</comment_count>
      <attachid>92755</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-08 19:35:58 -0700</bug_when>
    <thetext>Created attachment 92755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400322</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-08 19:37:14 -0700</bug_when>
    <thetext>I&apos;d like to see what people think of this change before I add the new file to all the build systems. If people are generally positive, I&apos;ll go ahead and fix the build for all the other platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400340</commentid>
    <comment_count>11</comment_count>
      <attachid>92755</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-08 21:13:20 -0700</bug_when>
    <thetext>Comment on attachment 92755
Patch

Attachment 92755 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/8655413</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400342</commentid>
    <comment_count>12</comment_count>
      <attachid>92755</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-08 21:15:42 -0700</bug_when>
    <thetext>Comment on attachment 92755
Patch

Attachment 92755 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8640399</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400346</commentid>
    <comment_count>13</comment_count>
      <attachid>92755</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-08 22:34:18 -0700</bug_when>
    <thetext>Comment on attachment 92755
Patch

Attachment 92755 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/8648419</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400349</commentid>
    <comment_count>14</comment_count>
      <attachid>92755</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-05-08 22:52:14 -0700</bug_when>
    <thetext>Comment on attachment 92755
Patch

Attachment 92755 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8655435</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400350</commentid>
    <comment_count>15</comment_count>
      <attachid>92755</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-08 22:57:28 -0700</bug_when>
    <thetext>Comment on attachment 92755
Patch

You need to add DragState.h to XCode &amp; Visual Studio project files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400367</commentid>
    <comment_count>16</comment_count>
      <attachid>92763</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-09 00:13:51 -0700</bug_when>
    <thetext>Created attachment 92763
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400391</commentid>
    <comment_count>17</comment_count>
      <attachid>92763</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-09 01:43:30 -0700</bug_when>
    <thetext>Comment on attachment 92763
Patch

Attachment 92763 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8652486</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400393</commentid>
    <comment_count>18</comment_count>
      <attachid>92763</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-09 01:45:33 -0700</bug_when>
    <thetext>Comment on attachment 92763
Patch

Attachment 92763 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/8660475</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400418</commentid>
    <comment_count>19</comment_count>
      <attachid>92763</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-05-09 02:52:59 -0700</bug_when>
    <thetext>Comment on attachment 92763
Patch

Attachment 92763 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8660494</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400421</commentid>
    <comment_count>20</comment_count>
      <attachid>92763</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-09 03:07:45 -0700</bug_when>
    <thetext>Comment on attachment 92763
Patch

Attachment 92763 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/8653540</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400568</commentid>
    <comment_count>21</comment_count>
      <attachid>92763</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-05-09 10:20:48 -0700</bug_when>
    <thetext>Comment on attachment 92763
Patch

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

Can we split this into 2 patches?  The first patch would just be a refactoring patch and not change any behavior.  It would introduce the DragState class and probably move draggableNode into DragController.  The second patch would be the behavioral change.

&gt; LayoutTests/ChangeLog:11
&gt; +        * fast/css/user-drag-none.html:

Can you add a sentence or two explaining why these changed?

&gt; LayoutTests/editing/pasteboard/drag-selected-image-to-contenteditable.html:47
&gt; +    eventSender.leapForward(500);

Hmm, how was this passing on Mac before?

&gt; Source/WebCore/page/DragController.cpp:580
&gt; +// Determine which node the user wants to drag. In order of priority:
&gt; +// 1. The user is dragging a selection.
&gt; +// 2. The user is dragging an element where draggable=true.
&gt; +// 3. The user is dragging an element where draggable is the default auto value (e.g. unset) and
&gt; +// the element is either an anchor element with an href attribute or an image element.

WebKit normally avoids comments that describe what the code is doing.  I think the preferred style is to make each of these a function, e.g., isDraggingSelection, isDraggableElement, and isElementDraggableByDefault.

&gt; Source/WebCore/page/DragController.cpp:609
&gt; +                    &amp;&amp; (m_dragSourceAction&amp; DragSourceActionImage)) {

Nit: missing space before &amp;

&gt; Source/WebCore/page/DragController.cpp:746
&gt; +            m_dragOffset = IntPoint((int)(dragOrigin.x() - dragLoc.x()), (int)(dragOrigin.y() - dragLoc.y()));

Nit: static_cast instead of (int)

&gt; Source/WebCore/page/DragState.h:31
&gt; +#include &lt;wtf/FastAllocBase.h&gt;
&gt; +#include &lt;wtf/Noncopyable.h&gt;
&gt; +#include &lt;wtf/RefPtr.h&gt;

Can we use wtf/Forward.h for some of these?

&gt; Source/WebCore/page/EventHandler.cpp:2640
&gt; +    default:
&gt; +        break;

Can we enumerate the other cases here rather than using default:?  That will give us a compile break if someone adds a new value to the enum rather than silently falling through.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401799</commentid>
    <comment_count>22</comment_count>
      <attachid>93078</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-10 23:36:43 -0700</bug_when>
    <thetext>Created attachment 93078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401806</commentid>
    <comment_count>23</comment_count>
      <attachid>93080</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-10 23:54:09 -0700</bug_when>
    <thetext>Created attachment 93080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401807</commentid>
    <comment_count>24</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-10 23:54:19 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 92763 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=92763&amp;action=review
&gt; 
&gt; Can we split this into 2 patches?  The first patch would just be a refactoring patch and not change any behavior.  It would introduce the DragState class and probably move draggableNode into DragController.  The second patch would be the behavioral change.

Done.

&gt; 
&gt; &gt; LayoutTests/ChangeLog:11
&gt; &gt; +        * fast/css/user-drag-none.html:
&gt; 
&gt; Can you add a sentence or two explaining why these changed?
&gt; 

Done.

&gt; &gt; LayoutTests/editing/pasteboard/drag-selected-image-to-contenteditable.html:47
&gt; &gt; +    eventSender.leapForward(500);
&gt; 
&gt; Hmm, how was this passing on Mac before?
&gt; 

This was required because of a behavior change which I documented in the ChangeLog.

&gt; &gt; Source/WebCore/page/DragController.cpp:580
&gt; &gt; +// Determine which node the user wants to drag. In order of priority:
&gt; &gt; +// 1. The user is dragging a selection.
&gt; &gt; +// 2. The user is dragging an element where draggable=true.
&gt; &gt; +// 3. The user is dragging an element where draggable is the default auto value (e.g. unset) and
&gt; &gt; +// the element is either an anchor element with an href attribute or an image element.
&gt; 
&gt; WebKit normally avoids comments that describe what the code is doing.  I think the preferred style is to make each of these a function, e.g., isDraggingSelection, isDraggableElement, and isElementDraggableByDefault.
&gt; 

I think the code is self-explanatory enough now to avoid pulling those out into separate blocks. Let me know what you think.

&gt; &gt; Source/WebCore/page/DragController.cpp:609
&gt; &gt; +                    &amp;&amp; (m_dragSourceAction&amp; DragSourceActionImage)) {
&gt; 
&gt; Nit: missing space before &amp;
&gt; 

Fixed.

&gt; &gt; Source/WebCore/page/DragController.cpp:746
&gt; &gt; +            m_dragOffset = IntPoint((int)(dragOrigin.x() - dragLoc.x()), (int)(dragOrigin.y() - dragLoc.y()));
&gt; 
&gt; Nit: static_cast instead of (int)
&gt; 

Done.

&gt; &gt; Source/WebCore/page/DragState.h:31
&gt; &gt; +#include &lt;wtf/FastAllocBase.h&gt;
&gt; &gt; +#include &lt;wtf/Noncopyable.h&gt;
&gt; &gt; +#include &lt;wtf/RefPtr.h&gt;
&gt; 
&gt; Can we use wtf/Forward.h for some of these?
&gt; 

We would have to split the definition for the constructor into a .cpp file. I kept the original style where the constructor was inline.

&gt; &gt; Source/WebCore/page/EventHandler.cpp:2640
&gt; &gt; +    default:
&gt; &gt; +        break;
&gt; 
&gt; Can we enumerate the other cases here rather than using default:?  That will give us a compile break if someone adds a new value to the enum rather than silently falling through.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401830</commentid>
    <comment_count>25</comment_count>
      <attachid>93078</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-05-11 01:06:01 -0700</bug_when>
    <thetext>Comment on attachment 93078
Patch

Attachment 93078 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8688224</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401839</commentid>
    <comment_count>26</comment_count>
      <attachid>93080</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-11 01:22:01 -0700</bug_when>
    <thetext>Comment on attachment 93080
Patch

Attachment 93080 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8690178</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401853</commentid>
    <comment_count>27</comment_count>
      <attachid>93080</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-11 01:44:11 -0700</bug_when>
    <thetext>Comment on attachment 93080
Patch

Attachment 93080 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8685302</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402153</commentid>
    <comment_count>28</comment_count>
      <attachid>93155</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-11 12:13:10 -0700</bug_when>
    <thetext>Created attachment 93155
Patch

Fix Mac build (hopefully)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402170</commentid>
    <comment_count>29</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-05-11 12:35:33 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=93080&amp;action=review

This looks like a move in the right direction.  I just have a mix of style nits and some questions so I can understand the change better.

&gt; LayoutTests/ChangeLog:13
&gt; +        mouse down and the mouse move. The change in dragging priority matches IE and Firefox
&gt; +        behavior.

AFAICT, this matches OSX&apos;s behavior as well.  For example, if I put an image in a Stickies note, select text + the image, and try to drag by clicking on the image, I get the whole selection (text + image).

However, if I don&apos;t click and hold on the image before the drag, I only get the image in my drag.  Is it possible to make sure both behaviors are retained on Mac (i.e., include tests for the no delay case as well)?  On Win/Linux, I wouldn&apos;t expect the delay to be necessary (EventHandler::TextDragDelay is 0).

&gt; Source/WebCore/page/DragController.cpp:698
&gt; +    if (state.m_dragType == DragSourceActionSelection || !imageURL.isEmpty() || !linkURL.isEmpty())

Nit: Can this be an &apos;else if&apos;?

&gt; Source/WebCore/page/DragController.cpp:702
&gt; +        m_sourceDragOperation = static_cast&lt;DragOperation&gt;(m_sourceDragOperation | DragOperationGeneric | DragOperationCopy);

Why did the previous code replace m_sourceDragOperation and we now add?

&gt; Source/WebCore/page/DragController.cpp:785
&gt; +        // image or link had no URL. Oh well.

Nit: I would replace &quot;Oh well.&quot; with &quot;so there&apos;s nothing to drag.&quot;

&gt; Source/WebCore/page/EventHandler.cpp:891
&gt; +void EventHandler::updateDragSourceActionsAllowed(DragState::EventDispatchPolicy&amp; policy) const

Nit: Maybe this method can just return a DragState::EventDispatchPolicy value?

&gt; Source/WebCore/page/EventHandler.cpp:-913
&gt; -    flagUA = ((mask &amp; DragSourceActionImage) || (mask &amp; DragSourceActionLink) || (mask &amp; DragSourceActionSelection));

Where did this check go?  Is it no longer needed?  It&apos;s not clear to me what flagUA was for.

&gt; Source/WebCore/page/EventHandler.cpp:908
&gt; +    if (mask &amp; DragSourceActionDHTML)
&gt; +        policy = DragState::DISPATCH_EVENTS;
&gt; +    else
&gt; +        policy = DragState::DO_NOT_DISPATCH_EVENTS;

Nit: Maybe use a ternary operator?

&gt; Source/WebCore/page/EventHandler.cpp:2640
&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();

I think if you enumerate all the cases, you don&apos;t need the default: case at all which makes new DragSourceActions give a compile error rather than a runtime error.  I.e., I would change default: to DragSourceActionNone: DragSourceActionAny:.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402257</commentid>
    <comment_count>30</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-11 14:03:54 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=93080&amp;action=review
&gt; 
&gt; This looks like a move in the right direction.  I just have a mix of style nits and some questions so I can understand the change better.
&gt; 
&gt; &gt; LayoutTests/ChangeLog:13
&gt; &gt; +        mouse down and the mouse move. The change in dragging priority matches IE and Firefox
&gt; &gt; +        behavior.
&gt; 
&gt; AFAICT, this matches OSX&apos;s behavior as well.  For example, if I put an image in a Stickies note, select text + the image, and try to drag by clicking on the image, I get the whole selection (text + image).
&gt; 
&gt; However, if I don&apos;t click and hold on the image before the drag, I only get the image in my drag.  Is it possible to make sure both behaviors are retained on Mac (i.e., include tests for the no delay case as well)?  On Win/Linux, I wouldn&apos;t expect the delay to be necessary (EventHandler::TextDragDelay is 0).
&gt; 

I&apos;m currently working on seeing if it&apos;s possible to implement the behavior you&apos;ve described. I&apos;ll have to figure out how to write a OS-specific layout test too though. Any tips?

&gt; &gt; Source/WebCore/page/DragController.cpp:698
&gt; &gt; +    if (state.m_dragType == DragSourceActionSelection || !imageURL.isEmpty() || !linkURL.isEmpty())
&gt; 
&gt; Nit: Can this be an &apos;else if&apos;?
&gt; 

It is intentionally an if to make sure that &lt;anchors&gt; and &lt;images&gt; that were explicitly marked draggable still get the additional behavior for links/images. I&apos;m not sure if that&apos;s a desirable thing or not though.

&gt; &gt; Source/WebCore/page/DragController.cpp:702
&gt; &gt; +        m_sourceDragOperation = static_cast&lt;DragOperation&gt;(m_sourceDragOperation | DragOperationGeneric | DragOperationCopy);
&gt; 
&gt; Why did the previous code replace m_sourceDragOperation and we now add?
&gt; 

If the dragged node only set move as an operation, we&apos;d unset it.

&gt; &gt; Source/WebCore/page/DragController.cpp:785
&gt; &gt; +        // image or link had no URL. Oh well.
&gt; 
&gt; Nit: I would replace &quot;Oh well.&quot; with &quot;so there&apos;s nothing to drag.&quot;
&gt; 

Done.

&gt; &gt; Source/WebCore/page/EventHandler.cpp:891
&gt; &gt; +void EventHandler::updateDragSourceActionsAllowed(DragState::EventDispatchPolicy&amp; policy) const
&gt; 
&gt; Nit: Maybe this method can just return a DragState::EventDispatchPolicy value?
&gt; 

I didn&apos;t do that since it doesn&apos;t seem clear to me what the return value from a function like this would mean. Maybe the function needs a better name? (I can&apos;t think of one at the moment though...)

&gt; &gt; Source/WebCore/page/EventHandler.cpp:-913
&gt; &gt; -    flagUA = ((mask &amp; DragSourceActionImage) || (mask &amp; DragSourceActionLink) || (mask &amp; DragSourceActionSelection));
&gt; 
&gt; Where did this check go?  Is it no longer needed?  It&apos;s not clear to me what flagUA was for.
&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:908
&gt; &gt; +    if (mask &amp; DragSourceActionDHTML)
&gt; &gt; +        policy = DragState::DISPATCH_EVENTS;
&gt; &gt; +    else
&gt; &gt; +        policy = DragState::DO_NOT_DISPATCH_EVENTS;
&gt; 
&gt; Nit: Maybe use a ternary operator?
&gt; 

Done.

&gt; &gt; Source/WebCore/page/EventHandler.cpp:2640
&gt; &gt; +    default:
&gt; &gt; +        ASSERT_NOT_REACHED();
&gt; 
&gt; I think if you enumerate all the cases, you don&apos;t need the default: case at all which makes new DragSourceActions give a compile error rather than a runtime error.  I.e., I would change default: to DragSourceActionNone: DragSourceActionAny:.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402259</commentid>
    <comment_count>31</comment_count>
      <attachid>93181</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-11 14:04:36 -0700</bug_when>
    <thetext>Created attachment 93181
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402303</commentid>
    <comment_count>32</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-11 14:49:04 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/page/EventHandler.cpp:-913
&gt; &gt; -    flagUA = ((mask &amp; DragSourceActionImage) || (mask &amp; DragSourceActionLink) || (mask &amp; DragSourceActionSelection));
&gt; 
&gt; Where did this check go?  Is it no longer needed?  It&apos;s not clear to me what flagUA was for.
&gt; 

It was used for two things;
- Potential short-circuiting of logic in eventMayStartDrag(), a Mac-specific method. By removing it, eventMayStartDrag() can no longer return early if DragController::delegateDragSourceAction() returns DragSourceActionNone. I think this is fairly minor, since we&apos;ll still get the same return value in the end (draggableNode() won&apos;t return anything and we&apos;ll return false). If people feel strongly about it, I can certainly add a check to early return if DragController::dragSourceAction() == DragSourceActionNone.
- Double-checked permissions in draggableNode. This is redundant, since we have to check the drag source actions allowed anyway in draggableNode when determining the node to drag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402309</commentid>
    <comment_count>33</comment_count>
      <attachid>93181</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-11 14:58:34 -0700</bug_when>
    <thetext>Comment on attachment 93181
Patch

Thinking more about how to resolve selection vs image drag issue on Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403329</commentid>
    <comment_count>34</comment_count>
      <attachid>93389</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-12 19:15:58 -0700</bug_when>
    <thetext>Created attachment 93389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403332</commentid>
    <comment_count>35</comment_count>
      <attachid>93391</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-12 19:40:29 -0700</bug_when>
    <thetext>Created attachment 93391
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403421</commentid>
    <comment_count>36</comment_count>
      <attachid>93391</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-05-13 00:28:36 -0700</bug_when>
    <thetext>Comment on attachment 93391
Patch

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

Just for curious, do we need the pixel test? typical editing tests are covered by text test with Markup.dump().
(I&apos;m not an expert in this area and this might be a stupid question....)

&gt; Source/WebCore/page/DragController.cpp:577
&gt; +        state.m_dragType = DragSourceActionSelection;

If/else or ternary op? usually assigning-only-once is good idea.

&gt; Source/WebCore/page/DragState.h:46
&gt; +    };

We usually use CamelCase for defining enum. (there are some old code that don&apos;t follow this though.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403636</commentid>
    <comment_count>37</comment_count>
      <attachid>93391</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-05-13 10:22:24 -0700</bug_when>
    <thetext>Comment on attachment 93391
Patch

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

This is looking really good.  One more round and I think we&apos;ll be done.

&gt; LayoutTests/platform/mac/editing/pasteboard/drag-selections-to-contenteditable.html:1
&gt; +&lt;html&gt;

Morita is right, this could be a dump as markup test.  You can include LayoutTest/resources/dump-as-markup.js to use Markup.dump.  It would make the pixel result unnecessary (seems like dumping the DOM tree of the contentEditable region is sufficient).

&gt; Source/WebCore/page/DragController.cpp:686
&gt; +    if (!state.m_dragSrc-&gt;contains(hitTestResult.innerNode()))
&gt; +        // The original node being dragged isn&apos;t under the mouse for some reason... bail out.
&gt; +        return false;

Is this check new?  Can the comment describe why this might happen rather than just describing what the code is doing?

&gt; Source/WebCore/page/EventHandler.cpp:2732
&gt; +            // 4. We enter this block again, and since it&apos;s now marked as a selection drag, we
&gt; +            //    cancel the drag.
&gt; +            m_mouseDownTimestamp = event.event().timestamp() - 2 * TextDragDelay;

This seems hacky-- is there other code that depends on m_mouseDownTimestamp?  Maybe we can put an extra bool in dragState() to keep track of this case?

&gt; Source/WebCore/page/EventHandler.cpp:2745
&gt; +    if (!ExactlyOneBitSet(dragState().m_dragType)) {
&gt; +        ASSERT((dragState().m_dragType &amp; DragSourceActionSelection));
&gt; +        ASSERT((dragState().m_dragType &amp; ~DragSourceActionSelection) == DragSourceActionDHTML
&gt; +                || (dragState().m_dragType &amp; ~DragSourceActionSelection) == DragSourceActionImage
&gt; +                || (dragState().m_dragType &amp; ~DragSourceActionSelection) == DragSourceActionLink);
&gt; +        dragState().m_dragType = DragSourceActionSelection;
&gt; +    }

Why is this needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403908</commentid>
    <comment_count>38</comment_count>
      <attachid>93521</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-13 15:18:06 -0700</bug_when>
    <thetext>Created attachment 93521
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403910</commentid>
    <comment_count>39</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-13 15:19:56 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; (From update of attachment 93391 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=93391&amp;action=review
&gt; 
&gt; Just for curious, do we need the pixel test? typical editing tests are covered by text test with Markup.dump().
&gt; (I&apos;m not an expert in this area and this might be a stupid question....)
&gt; 

I&apos;ve changed the layout test.

&gt; &gt; Source/WebCore/page/DragController.cpp:577
&gt; &gt; +        state.m_dragType = DragSourceActionSelection;
&gt; 
&gt; If/else or ternary op? usually assigning-only-once is good idea.
&gt; 

Done.

&gt; &gt; Source/WebCore/page/DragState.h:46
&gt; &gt; +    };
&gt; 
&gt; We usually use CamelCase for defining enum. (there are some old code that don&apos;t follow this though.)

Done.

(In reply to comment #37)
&gt; (From update of attachment 93391 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=93391&amp;action=review
&gt; 
&gt; This is looking really good.  One more round and I think we&apos;ll be done.
&gt; 
&gt; &gt; LayoutTests/platform/mac/editing/pasteboard/drag-selections-to-contenteditable.html:1
&gt; &gt; +&lt;html&gt;
&gt; 
&gt; Morita is right, this could be a dump as markup test.  You can include LayoutTest/resources/dump-as-markup.js to use Markup.dump.  It would make the pixel result unnecessary (seems like dumping the DOM tree of the contentEditable region is sufficient).
&gt; 

Done.

&gt; &gt; Source/WebCore/page/DragController.cpp:686
&gt; &gt; +    if (!state.m_dragSrc-&gt;contains(hitTestResult.innerNode()))
&gt; &gt; +        // The original node being dragged isn&apos;t under the mouse for some reason... bail out.
&gt; &gt; +        return false;
&gt; 
&gt; Is this check new?  Can the comment describe why this might happen rather than just describing what the code is doing?
&gt; 

Done.

&gt; &gt; Source/WebCore/page/EventHandler.cpp:2732
&gt; &gt; +            // 4. We enter this block again, and since it&apos;s now marked as a selection drag, we
&gt; &gt; +            //    cancel the drag.
&gt; &gt; +            m_mouseDownTimestamp = event.event().timestamp() - 2 * TextDragDelay;
&gt; 
&gt; This seems hacky-- is there other code that depends on m_mouseDownTimestamp?  Maybe we can put an extra bool in dragState() to keep track of this case?
&gt; 

Done.

&gt; &gt; Source/WebCore/page/EventHandler.cpp:2745
&gt; &gt; +    if (!ExactlyOneBitSet(dragState().m_dragType)) {
&gt; &gt; +        ASSERT((dragState().m_dragType &amp; DragSourceActionSelection));
&gt; &gt; +        ASSERT((dragState().m_dragType &amp; ~DragSourceActionSelection) == DragSourceActionDHTML
&gt; &gt; +                || (dragState().m_dragType &amp; ~DragSourceActionSelection) == DragSourceActionImage
&gt; &gt; +                || (dragState().m_dragType &amp; ~DragSourceActionSelection) == DragSourceActionLink);
&gt; &gt; +        dragState().m_dragType = DragSourceActionSelection;
&gt; &gt; +    }
&gt; 
&gt; Why is this needed?

It&apos;s just an assertion to make sure that the code is updated if we ever add new edge cases. Right now, I want to make sure only one other bit other than selection is ever set and that bit has to be for either an image/link/HTML drag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403927</commentid>
    <comment_count>40</comment_count>
      <attachid>93525</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-13 16:06:26 -0700</bug_when>
    <thetext>Created attachment 93525
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403933</commentid>
    <comment_count>41</comment_count>
      <attachid>93525</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-05-13 16:11:03 -0700</bug_when>
    <thetext>Comment on attachment 93525
Patch

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

&gt; LayoutTests/platform/mac/editing/pasteboard/drag-selections-to-contenteditable.html:33
&gt; +    log(document.getElementById(&apos;target&apos;).children[0].tagName);
&gt; +    log(document.getElementById(&apos;target&apos;).children[1].tagName);
&gt; +    log(document.getElementById(&apos;target&apos;).children[2].tagName);
&gt; +    log(document.getElementById(&apos;target&apos;).children[3].tagName);

Nit: It might be good to verify that there are exactly 4 children, although I guess we&apos;d see the extra output in the text dump.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403942</commentid>
    <comment_count>42</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-13 16:32:01 -0700</bug_when>
    <thetext>Committed r86472: &lt;http://trac.webkit.org/changeset/86472&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403957</commentid>
    <comment_count>43</comment_count>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2011-05-13 16:57:15 -0700</bug_when>
    <thetext>It looks like this broke the Windows build:

http://build.webkit.org/builders/Windows%20Release%20%28Build%29/builds/16362/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403959</commentid>
    <comment_count>44</comment_count>
      <attachid>93521</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-13 16:59:43 -0700</bug_when>
    <thetext>Comment on attachment 93521
Patch

Attachment 93521 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/8693345</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403974</commentid>
    <comment_count>45</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-13 17:16:35 -0700</bug_when>
    <thetext>(In reply to comment #43)
&gt; It looks like this broke the Windows build:
&gt; 
&gt; http://build.webkit.org/builders/Windows%20Release%20%28Build%29/builds/16362/steps/compile-webkit/logs/stdio

Working on fixing this at the moment. It should be a simple fix, I&apos;m just testing that it works before committing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403990</commentid>
    <comment_count>46</comment_count>
      <attachid>93525</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-13 17:30:21 -0700</bug_when>
    <thetext>Comment on attachment 93525
Patch

Attachment 93525 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/8698221</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403998</commentid>
    <comment_count>47</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-13 17:51:05 -0700</bug_when>
    <thetext>Unfortunately I can&apos;t figure out how to fix this the right way, nor can I figure out why EWS started hating the last two patches. I tried pulling the ctor/dtor out into its own .cpp file but that didn&apos;t make the build any happier. For now I&apos;m adding extra #includes to DragState.h.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91053</attachid>
            <date>2011-04-25 21:47:13 -0700</date>
            <delta_ts>2011-04-25 23:03:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59409-20110425214712.patch</filename>
            <type>text/plain</type>
            <size>1892</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQ2ODUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5Y2MyMDA2NGU1NzE1NmM5
ZGQzMDExNmE2NjU3NzM5NWI4YzViZDdlLi45Mjk0MDMwNGZkODg2ZjVlOTViOTE0YTk1ZjZjMmM3
ZDkzNzMwNWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQtMjUgIERhbmll
bCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRHJhZyBpbWFnZXMgbm90IGdlbmVyYXRlZCBmb3IgYW5j
aG9ycyB3aGVuIGRyYWcgaXMgaW5pdGlhdGVkIHZpYSB0aGUgYW5jaG9yIHRleHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NDA5CisKKyAgICAgICAg
V2hlbiBkZXRlcm1pbmluZyB3aGljaCBub2RlIHRvIGRyYWcsIHVzZSB0aGUgdG9wLW1vc3QgZHJh
Z2dhYmxlIG5vZGUuCisKKyAgICAgICAgTm90IHRlc3RhYmxlIHZpYSBsYXlvdXQgdGVzdHMuCisK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6ZHJhZ2dhYmxlTm9kZSk6CisKIDIwMTEtMDQtMjIgIEpvc2VwaCBQZWNv
cmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRh
bXVyYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggODYw
YTliYjk2NjI0MzZlY2YzMDgxNDhmZTkwNDg4ZTQ2N2RjY2I1MS4uNTBlZTBiMzJjOGRmZTljNmQx
OWNlZTFjYzZiOTJmY2FmMDc3ZGNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAKQEAgLTE0OTIsNiArMTQ5MiwxMyBAQCBOb2RlKiBSZW5kZXJPYmplY3Q6OmRy
YWdnYWJsZU5vZGUoYm9vbCBkaHRtbE9LLCBib29sIHVhT0ssIGludCB4LCBpbnQgeSwgYm9vbCYg
ZAogICAgICAgICByZXR1cm4gMDsKIAogICAgIGZvciAoY29uc3QgUmVuZGVyT2JqZWN0KiBjdXJy
ID0gdGhpczsgY3VycjsgY3VyciA9IGN1cnItPnBhcmVudCgpKSB7CisgICAgICAgIC8vIElmIHRo
ZSBjdXJyZW50IG5vZGUgYW5kIGl0cyBwYXJlbnQgYXJlIGJvdGggZHJhZ2dhYmxlLCBjb2FsZXNj
ZSB0aGUgZHJhZyBpbnRvIHRoZSBwYXJlbnQuCisgICAgICAgIC8vIFRoaXMgYWxsb3dzIHVzIHRv
IGdlbmVyYXRlIGEgcHJvcGVyIGRyYWcgaW1hZ2UgZm9yIGFuY2hvciBlbGVtZW50cyBpZiB0aGUg
ZHJhZyB3YXMKKyAgICAgICAgLy8gaW5pdGlhdGVkIG9uIHRoZSBsaW5rIHRleHQuCisgICAgICAg
IGlmIChjdXJyLT5zdHlsZSgpLT51c2VyRHJhZygpID09IERSQUdfRUxFTUVOVAorICAgICAgICAg
ICAgJiYgY3Vyci0+cGFyZW50KCktPnN0eWxlKCktPnVzZXJEcmFnKCkgPT0gRFJBR19FTEVNRU5U
KSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogICAgICAgICBOb2RlKiBlbHQg
PSBjdXJyLT5ub2RlKCk7CiAgICAgICAgIGlmIChlbHQgJiYgZWx0LT5ub2RlVHlwZSgpID09IE5v
ZGU6OlRFWFRfTk9ERSkgewogICAgICAgICAgICAgLy8gU2luY2UgdGhlcmUncyBubyB3YXkgZm9y
IHRoZSBhdXRob3IgdG8gYWRkcmVzcyB0aGUgLXdlYmtpdC11c2VyLWRyYWcgc3R5bGUgZm9yIGEg
dGV4dCBub2RlLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91060</attachid>
            <date>2011-04-25 23:03:36 -0700</date>
            <delta_ts>2011-05-08 19:35:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59409-20110425230335.patch</filename>
            <type>text/plain</type>
            <size>1923</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQ2ODUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5Y2MyMDA2NGU1NzE1NmM5
ZGQzMDExNmE2NjU3NzM5NWI4YzViZDdlLi45Mjk0MDMwNGZkODg2ZjVlOTViOTE0YTk1ZjZjMmM3
ZDkzNzMwNWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQtMjUgIERhbmll
bCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRHJhZyBpbWFnZXMgbm90IGdlbmVyYXRlZCBmb3IgYW5j
aG9ycyB3aGVuIGRyYWcgaXMgaW5pdGlhdGVkIHZpYSB0aGUgYW5jaG9yIHRleHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NDA5CisKKyAgICAgICAg
V2hlbiBkZXRlcm1pbmluZyB3aGljaCBub2RlIHRvIGRyYWcsIHVzZSB0aGUgdG9wLW1vc3QgZHJh
Z2dhYmxlIG5vZGUuCisKKyAgICAgICAgTm90IHRlc3RhYmxlIHZpYSBsYXlvdXQgdGVzdHMuCisK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6ZHJhZ2dhYmxlTm9kZSk6CisKIDIwMTEtMDQtMjIgIEpvc2VwaCBQZWNv
cmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRh
bXVyYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggODYw
YTliYjk2NjI0MzZlY2YzMDgxNDhmZTkwNDg4ZTQ2N2RjY2I1MS4uYjE2MDhlNTAyM2QyZmFjMjY4
NmVlNDUxMDAyNWJlZDY5OGUxOTEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAKQEAgLTE0OTIsNiArMTQ5MiwxNCBAQCBOb2RlKiBSZW5kZXJPYmplY3Q6OmRy
YWdnYWJsZU5vZGUoYm9vbCBkaHRtbE9LLCBib29sIHVhT0ssIGludCB4LCBpbnQgeSwgYm9vbCYg
ZAogICAgICAgICByZXR1cm4gMDsKIAogICAgIGZvciAoY29uc3QgUmVuZGVyT2JqZWN0KiBjdXJy
ID0gdGhpczsgY3VycjsgY3VyciA9IGN1cnItPnBhcmVudCgpKSB7CisgICAgICAgIC8vIElmIHRo
ZSBjdXJyZW50IG5vZGUgYW5kIGl0cyBwYXJlbnQgYXJlIGJvdGggZHJhZ2dhYmxlLCBjb2FsZXNj
ZSB0aGUgZHJhZyBpbnRvIHRoZSBwYXJlbnQuCisgICAgICAgIC8vIFRoaXMgYWxsb3dzIHVzIHRv
IGdlbmVyYXRlIGEgcHJvcGVyIGRyYWcgaW1hZ2UgZm9yIGFuY2hvciBlbGVtZW50cyBpZiB0aGUg
ZHJhZyB3YXMKKyAgICAgICAgLy8gaW5pdGlhdGVkIG9uIHRoZSBsaW5rIHRleHQuCisgICAgICAg
IGlmIChjdXJyLT5zdHlsZSgpLT51c2VyRHJhZygpID09IERSQUdfRUxFTUVOVAorICAgICAgICAg
ICAgJiYgY3Vyci0+cGFyZW50KCkKKyAgICAgICAgICAgICYmIGN1cnItPnBhcmVudCgpLT5zdHls
ZSgpLT51c2VyRHJhZygpID09IERSQUdfRUxFTUVOVCkgeworICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KICAgICAgICAgTm9kZSogZWx0ID0gY3Vyci0+bm9kZSgpOwogICAgICAgICBp
ZiAoZWx0ICYmIGVsdC0+bm9kZVR5cGUoKSA9PSBOb2RlOjpURVhUX05PREUpIHsKICAgICAgICAg
ICAgIC8vIFNpbmNlIHRoZXJlJ3Mgbm8gd2F5IGZvciB0aGUgYXV0aG9yIHRvIGFkZHJlc3MgdGhl
IC13ZWJraXQtdXNlci1kcmFnIHN0eWxlIGZvciBhIHRleHQgbm9kZSwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>91641</attachid>
            <date>2011-04-28 22:54:29 -0700</date>
            <delta_ts>2011-04-28 22:54:29 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>draggable.html</filename>
            <type>text/html</type>
            <size>462</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c3R5bGU+CmJvZHkgPiBhLCBib2R5ID4gZGl2IHsKYmFja2dyb3VuZDog
IzljZjsKYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Cn0KKiA+IGRpdiA+IGRpdiB7CmJhY2tncm91
bmQ6ICNmOWM7CmJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwp9CmJvZHkgPiAqID4gZGl2IHsKYmFj
a2dyb3VuZDogIzlmYzsKYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Cn0KPC9zdHlsZT4KPC9oZWFk
Pgo8Ym9keT4KPGRpdiBkcmFnZ2FibGU9InRydWUiPlRoaXMgaXMgYSBkcmFnZ2FibGUgZWxlbWVu
dDxkaXY+RWxlbWVudCAyPGRpdj5FbGVtZW50IDM8L2Rpdj48L2Rpdj48L2Rpdj4KPGEgaHJlZj0i
aHR0cDovL3d3dy5nb29nbGUuY29tLyI+VGhpcyBzaG91bGQgYmUgZHJhZ2dhYmxlIGJ5IGRlZmF1
bHQ8ZGl2PkVsZW1lbnQgMjxkaXY+RWxlbWVudCAzPC9kaXY+PC9kaXY+PC9hPgo8L2JvZHk+Cjwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92755</attachid>
            <date>2011-05-08 19:35:58 -0700</date>
            <delta_ts>2011-05-09 00:13:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59409-20110508193557.patch</filename>
            <type>text/plain</type>
            <size>33376</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU5NTQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzNmZiYTNhOWNmN2QxNDgzYmVlNzMw
MTY0Yjc2NzBiOTk3YTlkMjFmLi43MTAxYmNmZDQ3NzQxZDM0MDM1MmNhYzk5MGNhY2UxOGUxYTJj
OTRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDUtMDggIERhbmllbCBDaGVuZyAgPGRj
aGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wcm92ZSBkcmFnIHN0YXJ0IGxvZ2ljCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTQwOQorCisgICAgICAgIFJlYmFzZWxpbmUg
dGVzdHMgZm9yIG5ldyBiZWhhdmlvci4KKworICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9k
cmFnLXNlbGVjdGVkLWltYWdlLXRvLWNvbnRlbnRlZGl0YWJsZS5odG1sOgorICAgICAgICAqIGZh
c3QvY3NzL3VzZXItZHJhZy1ub25lLmh0bWw6CisKIDIwMTEtMDUtMDYgIEFkcmllbm5lIFdhbGtl
ciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIFVucmV2aWV3ZWQsIGZp
eCBwYXJzZSBlcnJvcnMgaW4gdGVzdF9leHBlY3RhdGlvbnMuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1zZWxlY3RlZC1pbWFnZS10by1jb250ZW50ZWRp
dGFibGUuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGVk
LWltYWdlLXRvLWNvbnRlbnRlZGl0YWJsZS5odG1sCmluZGV4IDIxNDBhMTUwYjJjYjBkMjQ5NTJj
NDI1ZDQ2YjBkZjk4NDNiNGQ4N2UuLmMwZjNiNzBkNWQwNTEyODFjMjhiODcwODhhZjFhM2U3M2Ux
YmRiOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNl
bGVjdGVkLWltYWdlLXRvLWNvbnRlbnRlZGl0YWJsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGVkLWltYWdlLXRvLWNvbnRlbnRlZGl0YWJsZS5o
dG1sCkBAIC00NCw2ICs0NCw3IEBAIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB4ID0gZS5vZmZzZXRM
ZWZ0ICsgZS5vZmZzZXRXaWR0aCAvIDI7CiAgICAgeSA9IGUub2Zmc2V0VG9wICsgZS5vZmZzZXRI
ZWlnaHQgLyAyOwogICAgIAorICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDUwMCk7CiAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CiAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgp
OwogICAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXNlci1kcmFnLW5vbmUu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3VzZXItZHJhZy1ub25lLmh0bWwKaW5kZXggYzg4
Y2FhZjZlZTU2YzM4NmI4ZTNiNmY0NDVkNGMxYTc3M2UxYTA4Yy4uZjkzMzUxMzVjNWQ5YzFhNWY5
MTdlN2UwYzViZTg0YTU4ZTlhODE0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
dXNlci1kcmFnLW5vbmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy91c2VyLWRyYWct
bm9uZS5odG1sCkBAIC0xOSwxMSArMTksMTEgQEAKICAgICAgICAgPGltZyBjbGFzcz0iZHJhZy1u
b25lIiBzcmM9InJlc291cmNlcy9ncmVlbmJveC5wbmciPgogICAgIDwvZGl2PgogCi0gICAgPGRp
diBjbGFzcz0iYm94IiBleHBlY3Q9IklNRyB0ZXh0IHRleHQgQSBuaWwiPgorICAgIDxkaXYgY2xh
c3M9ImJveCIgZXhwZWN0PSJJTUcgQSBBIEEgbmlsIj4KICAgICAgICAgPGEgaHJlZj0iIyI+PGlt
ZyBzcmM9InJlc291cmNlcy9ncmVlbmJveC5wbmciPng8YnI+PHNwYW4+eTwvc3Bhbj48L2E+CiAg
ICAgPC9kaXY+CiAKLSAgICA8ZGl2IGNsYXNzPSJib3giIGV4cGVjdD0iSU1HIHRleHQgdGV4dCBB
IG5pbCI+CisgICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9IklNRyBBIEEgQSBuaWwiPgogICAg
ICAgICA8YSBocmVmPSIjIiBjbGFzcz0iZHJhZy1lbGVtZW50Ij48aW1nIHNyYz0icmVzb3VyY2Vz
L2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIApAQCAt
MzEsMTEgKzMxLDExIEBACiAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcmFnLW5vbmUiPjxp
bWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW5ib3gucG5nIj54PGJyPjxzcGFuPnk8L3NwYW4+PC9hPgog
ICAgIDwvZGl2PgogCi0gICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9IkEgdGV4dCB0ZXh0IEEg
bmlsIj4KKyAgICA8ZGl2IGNsYXNzPSJib3giIGV4cGVjdD0iQSBBIEEgQSBuaWwiPgogICAgICAg
ICA8YSBocmVmPSIjIj48aW1nIGNsYXNzPSJkcmFnLW5vbmUiIHNyYz0icmVzb3VyY2VzL2dyZWVu
Ym94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIAotICAgIDxkaXYg
Y2xhc3M9ImJveCIgZXhwZWN0PSJBIHRleHQgdGV4dCBBIG5pbCI+CisgICAgPGRpdiBjbGFzcz0i
Ym94IiBleHBlY3Q9IkEgQSBBIEEgbmlsIj4KICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRy
YWctZWxlbWVudCI+PGltZyBjbGFzcz0iZHJhZy1ub25lIiBzcmM9InJlc291cmNlcy9ncmVlbmJv
eC5wbmciPng8YnI+PHNwYW4+eTwvc3Bhbj48L2E+CiAgICAgPC9kaXY+CiAKQEAgLTQzLDExICs0
MywxMSBAQAogICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iZHJhZy1ub25lIj48aW1nIHNyYz0i
cmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rp
dj4KIAotICAgIDxkaXYgY2xhc3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSB0ZXh0IHRl
eHQgQSBESVYiPgorICAgIDxkaXYgY2xhc3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSBB
IEEgQSBESVYiPgogICAgICAgICA8YSBocmVmPSIjIj48aW1nIGNsYXNzPSJkcmFnLW5vbmUiIHNy
Yz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8
L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSB0ZXh0
IHRleHQgQSBESVYiPgorICAgIDxkaXYgY2xhc3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0i
QSBBIEEgQSBESVYiPgogICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iZHJhZy1lbGVtZW50Ij48
aW1nIGNsYXNzPSJkcmFnLW5vbmUiIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48
c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIDwvZGl2PgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM3MzA2
MzM4YjRjZDg3MTJjZGNhZTlkNmRiZmIyY2U5YzcxODkyYmYuLmFkMTg0NDY1YTNhMGVkNjg2Mjhm
NDIzNTY4ZjVmMTJiMDE2NDE5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMS0w
NS0wOCAgRGFuaWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXByb3ZlIGRyYWcgc3RhcnQgbG9n
aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NDA5
CisKKyAgICAgICAgV2hlbiBzdGFydGluZyBhIGRyYWcsIGZvbGxvdyBJRS9GaXJlZm94IHByaW9y
aXR5IGZvciBkZXRlcm1pbmluZyB3aGF0IHRvIGRyYWcuCisgICAgICAgIFRoZSBjb2RlIGhhcyBh
bHNvIGJlZW4gcmVvcmdhbml6ZWQgdG8gcmVtb3ZlIG11bHRpcGxlIGhpdCB0ZXN0cyBkdXJpbmcg
dGhlIGRyYWcgbm9kZQorICAgICAgICBzZWxlY3Rpb24gcHJvY2Vzcy4KKworICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVOb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDb250cm9sbGVyOjpzdGFydERyYWcpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL0RyYWdTdGF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdTdGF0ZTo6RHJhZ1N0YXRlKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRyYWdTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmV2ZW50TWF5U3RhcnREcmFnKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcpOgorICAgICAgICAqIHBhZ2UvRXZl
bnRIYW5kbGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorCiAyMDExLTA1LTA2ICBFcmljIENhcmxz
b24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDUwMWE3NmQ4NDE0NGUxNmFlN2M4OGUzZTFjNjgx
OGI2MGYzMDhmNzcuLjM3ZDhmNmRkNmJiYTc0YWU4NTg0NDNmMjJmYmJmNTcwNmUzMWQxNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKQEAgLTY4OSw2ICs2ODksNyBAQAogICAgICAgICAgICAgJ3BhZ2UvRHJh
Z0FjdGlvbnMuaCcsCiAgICAgICAgICAgICAncGFnZS9EcmFnQ2xpZW50LmgnLAogICAgICAgICAg
ICAgJ3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaCcsCisgICAgICAgICAgICAncGFnZS9EcmFnU3RhdGUu
aCcsCiAgICAgICAgICAgICAncGFnZS9FZGl0b3JDbGllbnQuaCcsCiAgICAgICAgICAgICAncGFn
ZS9FdmVudEhhbmRsZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9Gb2N1c0NvbnRyb2xsZXIuaCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDQ5ODEyMjQxNDJmMzFm
NWE5M2M1MTZhMmU0ZTY4MzQ1ZDA1NWI4ODMuLjA2MDE1YWE5NjlkMjdhYmNjYzUzYTQ5N2U3Nzc2
NmZiYWU5NTI3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSAiRHJhZ0FjdGlvbnMuaCIKICNpbmNsdWRlICJEcmFnQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiRHJhZ0RhdGEuaCIKKyNpbmNsdWRlICJEcmFnU3RhdGUuaCIKICNp
bmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKICNpbmNsdWRlICJF
bGVtZW50LmgiCkBAIC01NzIsMzcgKzU3Myw1MyBAQCBib29sIERyYWdDb250cm9sbGVyOjp0cnlE
SFRNTERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhLCBEcmFnT3BlcmF0aW9uJiBvcGVyYXRpb24pCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRHJhZ0NvbnRyb2xsZXI6Om1heVN0YXJ0RHJhZ0F0
RXZlbnRMb2NhdGlvbihjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IEludFBvaW50JiBmcmFtZVBv
cywgTm9kZSogbm9kZSkKKy8vIERldGVybWluZSB3aGljaCBub2RlIHRoZSB1c2VyIHdhbnRzIHRv
IGRyYWcuIEluIG9yZGVyIG9mIHByaW9yaXR5OgorLy8gMS4gVGhlIHVzZXIgaXMgZHJhZ2dpbmcg
YSBzZWxlY3Rpb24uCisvLyAyLiBUaGUgdXNlciBpcyBkcmFnZ2luZyBhbiBlbGVtZW50IHdoZXJl
IGRyYWdnYWJsZT10cnVlLgorLy8gMy4gVGhlIHVzZXIgaXMgZHJhZ2dpbmcgYW4gZWxlbWVudCB3
aGVyZSBkcmFnZ2FibGUgaXMgdGhlIGRlZmF1bHQgYXV0byB2YWx1ZSAoZS5nLiB1bnNldCkgYW5k
CisvLyB0aGUgZWxlbWVudCBpcyBlaXRoZXIgYW4gYW5jaG9yIGVsZW1lbnQgd2l0aCBhbiBocmVm
IGF0dHJpYnV0ZSBvciBhbiBpbWFnZSBlbGVtZW50LgorTm9kZSogRHJhZ0NvbnRyb2xsZXI6OmRy
YWdnYWJsZU5vZGUoY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIGNvbnN0IEZyYW1lKiBzcmMs
IE5vZGUqIG5vZGUsIERyYWdTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGZyYW1l
KTsKLSAgICBBU1NFUlQoZnJhbWUtPnNldHRpbmdzKCkpOwotCi0gICAgaWYgKCFmcmFtZS0+dmll
dygpIHx8ICFmcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIEhpdFRlc3RSZXN1bHQgbW91c2VEb3duVGFyZ2V0ID0gSGl0VGVzdFJlc3VsdChmcmFt
ZVBvcyk7Ci0KLSAgICBtb3VzZURvd25UYXJnZXQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhp
dFRlc3RSZXN1bHRBdFBvaW50KGZyYW1lUG9zLCB0cnVlKTsKLSAgICBpZiAobm9kZSkKLSAgICAg
ICAgbW91c2VEb3duVGFyZ2V0LnNldElubmVyTm9uU2hhcmVkTm9kZShub2RlKTsKLQotICAgIGlm
IChtb3VzZURvd25UYXJnZXQuaW1hZ2UoKQotICAgICAgICAmJiAhbW91c2VEb3duVGFyZ2V0LmFi
c29sdXRlSW1hZ2VVUkwoKS5pc0VtcHR5KCkKLSAgICAgICAgJiYgZnJhbWUtPnNldHRpbmdzKCkt
PmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpCi0gICAgICAgICYmIG1fZHJhZ1NvdXJjZUFjdGlv
biAmIERyYWdTb3VyY2VBY3Rpb25JbWFnZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBp
ZiAoIW1vdXNlRG93blRhcmdldC5hYnNvbHV0ZUxpbmtVUkwoKS5pc0VtcHR5KCkKLSAgICAgICAg
JiYgbV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkxpbmsKLSAgICAgICAgJiYg
bW91c2VEb3duVGFyZ2V0LmlzTGl2ZUxpbmsoKQotICAgICAgICAmJiBtb3VzZURvd25UYXJnZXQu
VVJMRWxlbWVudCgpLT5yZW5kZXJlcigpICYmIG1vdXNlRG93blRhcmdldC5VUkxFbGVtZW50KCkt
PnJlbmRlcmVyKCktPnN0eWxlKCktPnVzZXJEcmFnKCkgIT0gRFJBR19OT05FKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIXN0YXRlLm1fZHJhZ1NyY01heUJlREhUTUwgJiYgIXN0YXRl
Lm1fZHJhZ1NyY01heUJlVUEpCisgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKG1vdXNlRG93
blRhcmdldC5pc1NlbGVjdGVkKCkKLSAgICAgICAgJiYgbV9kcmFnU291cmNlQWN0aW9uICYgRHJh
Z1NvdXJjZUFjdGlvblNlbGVjdGlvbikKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgLy8gRmly
c3QgY2hlY2sgaWYgd2UgYXJlIGRyYWdnaW5nIGEgc2VsZWN0aW9uLiBEcmFnZ2luZyBhbnkgcGFy
dCBvZiBhIHNlbGVjdGlvbiB0YWtlcworICAgIC8vIHByZWNlZGVuY2Ugb3ZlciBkcmFnZ2luZyBh
biBpbmRpdmlkdWFsIGVsZW1lbnQgdGhhdCBtYXkgYmUgcGFydCBvZiBhIHNlbGVjdGlvbi4KKyAg
ICBpZiAoc3RhdGUubV9kcmFnU3JjTWF5QmVVQSAmJiAobV9kcmFnU291cmNlQWN0aW9uICYgRHJh
Z1NvdXJjZUFjdGlvblNlbGVjdGlvbikKKyAgICAgICAgJiYgc3JjLT5zZWxlY3Rpb24oKS0+Y29u
dGFpbnMoZHJhZ09yaWdpbikpIHsKKyAgICAgICAgc3RhdGUubV9kcmFnVHlwZSA9IERyYWdTdGF0
ZTo6U0VMRUNUSU9OOworICAgICAgICByZXR1cm4gbm9kZTsKKyAgICB9CiAKLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgZm9yICg7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKKyAg
ICAgICAgaWYgKG5vZGUtPmlzVGV4dE5vZGUoKSAmJiBub2RlLT5jYW5TdGFydFNlbGVjdGlvbigp
KQorICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIGhhdmUgYSBjbGljayBpbiB0aGUgdW5z
ZWxlY3RlZCBwb3J0aW9uIG9mIHRleHQuIElmIHRoaXMgdGV4dCBpcworICAgICAgICAgICAgLy8g
c2VsZWN0YWJsZSwgd2Ugd2FudCB0byBzdGFydCB0aGUgc2VsZWN0aW9uIHByb2Nlc3MgaW5zdGVh
ZCBvZiBsb29raW5nIGZvciBhIG5vZGUgdG8KKyAgICAgICAgICAgIC8vIHRyeSB0byBkcmFnLgor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkp
IHsKKyAgICAgICAgICAgIEVVc2VyRHJhZyBkcmFnTW9kZSA9IG5vZGUtPnJlbmRlclN0eWxlKCkt
PnVzZXJEcmFnKCk7CisgICAgICAgICAgICBpZiAoc3RhdGUubV9kcmFnU3JjTWF5QmVESFRNTCAm
JiBkcmFnTW9kZSA9PSBEUkFHX0VMRU1FTlQpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS5tX2Ry
YWdUeXBlID0gRHJhZ1N0YXRlOjpIVE1MOworICAgICAgICAgICAgICAgIHJldHVybiBub2RlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0YXRlLm1fZHJhZ1NyY01heUJlVUEgJiYg
ZHJhZ01vZGUgPT0gRFJBR19BVVRPKSB7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmhhc1Rh
Z05hbWUoSFRNTE5hbWVzOjppbWdUYWcpCisgICAgICAgICAgICAgICAgICAgICYmIHNyYy0+c2V0
dGluZ3MoKS0+bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkKKyAgICAgICAgICAgICAgICAgICAg
JiYgKG1fZHJhZ1NvdXJjZUFjdGlvbiYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKSkgeworICAgICAg
ICAgICAgICAgICAgICBzdGF0ZS5tX2RyYWdUeXBlID0gRHJhZ1N0YXRlOjpJTUFHRTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YVRhZykKKyAgICAgICAgICAg
ICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8SFRNTEFuY2hvckVsZW1lbnQqPihub2RlKS0+aXNMaXZl
TGluaygpCisgICAgICAgICAgICAgICAgICAgICYmIChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFn
U291cmNlQWN0aW9uTGluaykpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUubV9kcmFnVHlw
ZSA9IERyYWdTdGF0ZTo6TElOSzsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiAwOwogfQogCiBzdGF0aWMgQ2FjaGVkSW1hZ2UqIGdldENhY2hlZEltYWdlKEVsZW1lbnQq
IGVsZW1lbnQpCkBAIC02NjQsMTkgKzY4MSwyMCBAQCBzdGF0aWMgSW50UG9pbnQgZHJhZ0xvY0Zv
clNlbGVjdGlvbkRyYWcoRnJhbWUqIHNyYykKICAgICByZXR1cm4gSW50UG9pbnQoeHBvcywgeXBv
cyk7CiB9CiAKLWJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlw
Ym9hcmQqIGNsaXBib2FyZCwgRHJhZ09wZXJhdGlvbiBzcmNPcCwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBib29sIGlzREhU
TUxEcmFnKQorYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lKiBzcmMsIGNvbnN0
IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24gc3JjT3AsIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbikKIHsKICAgICBB
U1NFUlQoc3JjKTsKLSAgICBBU1NFUlQoY2xpcGJvYXJkKTsKIAogICAgIGlmICghc3JjLT52aWV3
KCkgfHwgIXNyYy0+Y29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIEhpdFRlc3RSZXN1bHQgZHJhZ1NvdXJjZSA9IEhpdFRlc3RSZXN1bHQoZHJhZ09yaWdpbik7
Ci0gICAgZHJhZ1NvdXJjZSA9IHNyYy0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBv
aW50KGRyYWdPcmlnaW4sIHRydWUpOwotICAgIEtVUkwgbGlua1VSTCA9IGRyYWdTb3VyY2UuYWJz
b2x1dGVMaW5rVVJMKCk7Ci0gICAgS1VSTCBpbWFnZVVSTCA9IGRyYWdTb3VyY2UuYWJzb2x1dGVJ
bWFnZVVSTCgpOwotICAgIGJvb2wgaXNTZWxlY3RlZCA9IGRyYWdTb3VyY2UuaXNTZWxlY3RlZCgp
OworICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IHNyYy0+ZXZlbnRIYW5kbGVyKCkt
PmhpdFRlc3RSZXN1bHRBdFBvaW50KGRyYWdPcmlnaW4sIHRydWUpOworICAgIC8vIFNhbml0eSBj
aGVjazogdGhlIG9yaWdpbmFsIG5vZGUgd2UgdHJ5IHRvIGRyYWcgc2hvdWxkIHN0aWxsIGJlIHVu
ZGVyIHRoZSBkcmFnIG9yaWdpbi4KKyAgICBpZiAoIXN0YXRlLm1fZHJhZ1NyYy0+Y29udGFpbnMo
aGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IEtVUkwgbGlua1VSTCA9IGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CisgICAgS1VS
TCBpbWFnZVVSTCA9IGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpOwogCiAgICAgSW50
UG9pbnQgbW91c2VEcmFnZ2VkUG9pbnQgPSBzcmMtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhk
cmFnRXZlbnQucG9zKCkpOwogCkBAIC02ODcsMTQgKzcwNSwxNiBAQCBib29sIERyYWdDb250cm9s
bGVyOjpzdGFydERyYWcoRnJhbWUqIHNyYywgQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIERyYWdPcGVy
YXRpb24gcwogICAgIEludFBvaW50IGRyYWdMb2MoMCwgMCk7CiAgICAgSW50UG9pbnQgZHJhZ0lt
YWdlT2Zmc2V0KDAsIDApOwogCi0gICAgaWYgKGlzREhUTUxEcmFnKQorICAgIENsaXBib2FyZCog
Y2xpcGJvYXJkID0gc3RhdGUubV9kcmFnQ2xpcGJvYXJkLmdldCgpOworCisgICAgaWYgKHN0YXRl
Lm1fZHJhZ1R5cGUgPT0gRHJhZ1N0YXRlOjpIVE1MKQogICAgICAgICBkcmFnSW1hZ2UgPSBjbGlw
Ym9hcmQtPmNyZWF0ZURyYWdJbWFnZShkcmFnSW1hZ2VPZmZzZXQpOwotICAgIGVsc2UgewotICAg
ICAgICAvLyBUaGlzIGRyYWcgb3BlcmF0aW9uIGlzIG5vdCBhIERIVE1MIGRyYWcgYW5kIG1heSBn
byBvdXRzaWRlIHRoZSBXZWJWaWV3LgorCisgICAgLy8gTGluayBvciBpbWFnZSBkcmFncyBhcmUg
YWxsb3dlZCB0byBnbyBvdXQgdGhlIHdlYnZpZXcgYnkgZGVmYXVsdC4KKyAgICBpZiAoIWxpbmtV
UkwuaXNFbXB0eSgpIHx8ICFpbWFnZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIC8vIFdlIHByb3Zp
ZGUgYSBkZWZhdWx0IHNldCBvZiBhbGxvd2VkIGRyYWcgb3BlcmF0aW9ucyB0aGF0IGZvbGxvd3Mg
ZnJvbToKICAgICAgICAgLy8gaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbT9yZXY9NDg1MjYjTDM0MzAKICAgICAgICAg
bV9zb3VyY2VEcmFnT3BlcmF0aW9uID0gKERyYWdPcGVyYXRpb24pKERyYWdPcGVyYXRpb25HZW5l
cmljIHwgRHJhZ09wZXJhdGlvbkNvcHkpOwotICAgIH0KIAogICAgIC8vIFdlIGFsbG93IERIVE1M
L0pTIHRvIHNldCB0aGUgZHJhZyBpbWFnZSwgZXZlbiBpZiBpdHMgYSBsaW5rLCBpbWFnZSBvciB0
ZXh0IHdlJ3JlIGRyYWdnaW5nLgogICAgIC8vIFRoaXMgaXMgaW4gdGhlIHNwaXJpdCBvZiB0aGUg
SUUgQVBJLCB3aGljaCBhbGxvd3Mgb3ZlcnJpZGluZyBvZiBwYXN0ZWJvYXJkIGRhdGEgYW5kIERy
YWdPcC4KQEAgLTcwNSwzNSArNzI1LDU1IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJh
ZyhGcmFtZSogc3JjLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRHJhZ09wZXJhdGlvbiBzCiAKICAg
ICBib29sIHN0YXJ0ZWREcmFnID0gdHJ1ZTsgLy8gb3B0aW1pc20gLSB3ZSBhbG1vc3QgYWx3YXlz
IG1hbmFnZSB0byBzdGFydCB0aGUgZHJhZwogCi0gICAgTm9kZSogbm9kZSA9IGRyYWdTb3VyY2Uu
aW5uZXJOb25TaGFyZWROb2RlKCk7Ci0KKyAgICBOb2RlKiBub2RlID0gc3RhdGUubV9kcmFnU3Jj
LmdldCgpOwogICAgIEltYWdlKiBpbWFnZSA9IGdldEltYWdlKHN0YXRpY19jYXN0PEVsZW1lbnQq
Pihub2RlKSk7Ci0gICAgaWYgKCFpbWFnZVVSTC5pc0VtcHR5KCkgJiYgbm9kZSAmJiBub2RlLT5p
c0VsZW1lbnROb2RlKCkgJiYgaW1hZ2UKLSAgICAgICAgICAgICYmIChtX2RyYWdTb3VyY2VBY3Rp
b24gJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpKSB7CisKKyAgICBpZiAoc3RhdGUubV9kcmFnVHlw
ZSA9PSBEcmFnU3RhdGU6OlNFTEVDVElPTikgeworICAgICAgICBpZiAoIWNsaXBib2FyZC0+aGFz
RGF0YSgpKSB7CisgICAgICAgICAgICBpZiAoaXNOb2RlSW5UZXh0Rm9ybUNvbnRyb2woc3JjLT5z
ZWxlY3Rpb24oKS0+c3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpKSkKKyAgICAgICAgICAgICAgICBj
bGlwYm9hcmQtPndyaXRlUGxhaW5UZXh0KHNyYy0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsK
KyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0
aW9uUmFuZ2UgPSBzcmMtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAg
ICAgICAgICAgIEFTU0VSVChzZWxlY3Rpb25SYW5nZSk7CisKKyAgICAgICAgICAgICAgICBjbGlw
Ym9hcmQtPndyaXRlUmFuZ2Uoc2VsZWN0aW9uUmFuZ2UuZ2V0KCksIHNyYyk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgbV9jbGllbnQtPndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFj
dGlvbihEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQpOwor
ICAgICAgICBpZiAoIWRyYWdJbWFnZSkgeworICAgICAgICAgICAgZHJhZ0ltYWdlID0gY3JlYXRl
RHJhZ0ltYWdlRm9yU2VsZWN0aW9uKHNyYyk7CisgICAgICAgICAgICBkcmFnTG9jID0gZHJhZ0xv
Y0ZvclNlbGVjdGlvbkRyYWcoc3JjKTsKKyAgICAgICAgICAgIG1fZHJhZ09mZnNldCA9IEludFBv
aW50KChpbnQpKGRyYWdPcmlnaW4ueCgpIC0gZHJhZ0xvYy54KCkpLCAoaW50KShkcmFnT3JpZ2lu
LnkoKSAtIGRyYWdMb2MueSgpKSk7CisgICAgICAgIH0KKyAgICAgICAgZG9TeXN0ZW1EcmFnKGRy
YWdJbWFnZSwgZHJhZ0xvYywgZHJhZ09yaWdpbiwgY2xpcGJvYXJkLCBzcmMsIGZhbHNlKTsKKyAg
ICB9IGVsc2UgaWYgKChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uSW1hZ2Up
CisgICAgICAgICAgICAgICAmJiAhaW1hZ2VVUkwuaXNFbXB0eSgpICYmIG5vZGUgJiYgbm9kZS0+
aXNFbGVtZW50Tm9kZSgpICYmIGltYWdlKSB7CisgICAgICAgIC8vIFdlIGludGVudGlvbmFsbHkg
ZG9uJ3QgY2hlY2sgbV9kcmFnVHlwZSBmb3IgaW1hZ2VzIGFuZCBsaW5rcywgc28gdGhhdCBpbWFn
ZXMgYW5kIGxpbmtzCisgICAgICAgIC8vIGZsYWdnZWQgYXMgZHJhZ2dhYmxlIHN0aWxsIGdldCBp
bWFnZSBhbmQgbGluay1zcGVjaWZpYyBiZWhhdmlvci4KICAgICAgICAgLy8gV2Ugc2hvdWxkbid0
IGJlIHN0YXJ0aW5nIGEgZHJhZyBmb3IgYW4gaW1hZ2UgdGhhdCBjYW4ndCBwcm92aWRlIGFuIGV4
dGVuc2lvbi4KICAgICAgICAgLy8gVGhpcyBpcyBhbiBlYXJseSBkZXRlY3Rpb24gZm9yIHByb2Js
ZW1zIGVuY291bnRlcmVkIGxhdGVyIHVwb24gZHJvcC4KICAgICAgICAgQVNTRVJUKCFpbWFnZS0+
ZmlsZW5hbWVFeHRlbnNpb24oKS5pc0VtcHR5KCkpOwogICAgICAgICBFbGVtZW50KiBlbGVtZW50
ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpOwogICAgICAgICBpZiAoIWNsaXBib2FyZC0+
aGFzRGF0YSgpKSB7CiAgICAgICAgICAgICBtX2RyYWdnaW5nSW1hZ2VVUkwgPSBpbWFnZVVSTDsK
LSAgICAgICAgICAgIHByZXBhcmVDbGlwYm9hcmRGb3JJbWFnZURyYWcoc3JjLCBjbGlwYm9hcmQs
IGVsZW1lbnQsIGxpbmtVUkwsIGltYWdlVVJMLCBkcmFnU291cmNlLmFsdERpc3BsYXlTdHJpbmco
KSk7CisgICAgICAgICAgICBwcmVwYXJlQ2xpcGJvYXJkRm9ySW1hZ2VEcmFnKHNyYywgY2xpcGJv
YXJkLCBlbGVtZW50LCBsaW5rVVJMLCBpbWFnZVVSTCwgaGl0VGVzdFJlc3VsdC5hbHREaXNwbGF5
U3RyaW5nKCkpOwogICAgICAgICB9CiAKICAgICAgICAgbV9jbGllbnQtPndpbGxQZXJmb3JtRHJh
Z1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uSW1hZ2UsIGRyYWdPcmlnaW4sIGNsaXBib2Fy
ZCk7CiAKICAgICAgICAgaWYgKCFkcmFnSW1hZ2UpIHsKLSAgICAgICAgICAgIEludFJlY3QgaW1h
Z2VSZWN0ID0gZHJhZ1NvdXJjZS5pbWFnZVJlY3QoKTsKKyAgICAgICAgICAgIEludFJlY3QgaW1h
Z2VSZWN0ID0gaGl0VGVzdFJlc3VsdC5pbWFnZVJlY3QoKTsKICAgICAgICAgICAgIGltYWdlUmVj
dC5zZXRMb2NhdGlvbihtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCktPndpbmRvd1RvQ29udGVu
dHMoc3JjLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coaW1hZ2VSZWN0LmxvY2F0aW9uKCkpKSk7
Ci0gICAgICAgICAgICBkb0ltYWdlRHJhZyhlbGVtZW50LCBkcmFnT3JpZ2luLCBkcmFnU291cmNl
LmltYWdlUmVjdCgpLCBjbGlwYm9hcmQsIHNyYywgbV9kcmFnT2Zmc2V0KTsKKyAgICAgICAgICAg
IGRvSW1hZ2VEcmFnKGVsZW1lbnQsIGRyYWdPcmlnaW4sIGhpdFRlc3RSZXN1bHQuaW1hZ2VSZWN0
KCksIGNsaXBib2FyZCwgc3JjLCBtX2RyYWdPZmZzZXQpOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIC8vIERIVE1MIGRlZmluZWQgZHJhZyBpbWFnZQogICAgICAgICAgICAgZG9TeXN0ZW1E
cmFnKGRyYWdJbWFnZSwgZHJhZ0xvYywgZHJhZ09yaWdpbiwgY2xpcGJvYXJkLCBzcmMsIGZhbHNl
KTsKIAotICAgIH0gZWxzZSBpZiAoIWxpbmtVUkwuaXNFbXB0eSgpICYmIChtX2RyYWdTb3VyY2VB
Y3Rpb24gJiBEcmFnU291cmNlQWN0aW9uTGluaykpIHsKKyAgICB9IGVsc2UgaWYgKChtX2RyYWdT
b3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uTGluaykgJiYgIWxpbmtVUkwuaXNFbXB0eSgp
KSB7CiAgICAgICAgIGlmICghY2xpcGJvYXJkLT5oYXNEYXRhKCkpCiAgICAgICAgICAgICAvLyBT
aW1wbGlmeSB3aGl0ZXNwYWNlIHNvIHRoZSB0aXRsZSBwdXQgb24gdGhlIGNsaXBib2FyZCByZXNl
bWJsZXMgd2hhdCB0aGUgdXNlciBzZWVzCiAgICAgICAgICAgICAvLyBvbiB0aGUgd2ViIHBhZ2Uu
IFRoaXMgaW5jbHVkZXMgcmVwbGFjaW5nIG5ld2xpbmVzIHdpdGggc3BhY2VzLgotICAgICAgICAg
ICAgY2xpcGJvYXJkLT53cml0ZVVSTChsaW5rVVJMLCBkcmFnU291cmNlLnRleHRDb250ZW50KCku
c2ltcGxpZnlXaGl0ZVNwYWNlKCksIHNyYyk7CisgICAgICAgICAgICBjbGlwYm9hcmQtPndyaXRl
VVJMKGxpbmtVUkwsIGhpdFRlc3RSZXN1bHQudGV4dENvbnRlbnQoKS5zaW1wbGlmeVdoaXRlU3Bh
Y2UoKSwgc3JjKTsKIAogICAgICAgICBpZiAoc3JjLT5zZWxlY3Rpb24oKS0+aXNDYXJldCgpICYm
IHNyYy0+c2VsZWN0aW9uKCktPmlzQ29udGVudEVkaXRhYmxlKCkpIHsKICAgICAgICAgICAgIC8v
IGEgdXNlciBjYW4gaW5pdGlhdGUgYSBkcmFnIG9uIGEgbGluayB3aXRob3V0IGhhdmluZyBhbnkg
dGV4dApAQCAtNzQ3LDM3ICs3ODcsMTggQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFn
KEZyYW1lKiBzcmMsIENsaXBib2FyZCogY2xpcGJvYXJkLCBEcmFnT3BlcmF0aW9uIHMKIAogICAg
ICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rp
b25MaW5rLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQpOwogICAgICAgICBpZiAoIWRyYWdJbWFnZSkg
ewotICAgICAgICAgICAgZHJhZ0ltYWdlID0gY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhsaW5rVVJM
LCBkcmFnU291cmNlLnRleHRDb250ZW50KCksIHNyYyk7CisgICAgICAgICAgICBkcmFnSW1hZ2Ug
PSBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKGxpbmtVUkwsIGhpdFRlc3RSZXN1bHQudGV4dENvbnRl
bnQoKSwgc3JjKTsKICAgICAgICAgICAgIEludFNpemUgc2l6ZSA9IGRyYWdJbWFnZVNpemUoZHJh
Z0ltYWdlKTsKICAgICAgICAgICAgIG1fZHJhZ09mZnNldCA9IEludFBvaW50KC1zaXplLndpZHRo
KCkgLyAyLCAtTGlua0RyYWdCb3JkZXJJbnNldCk7CiAgICAgICAgICAgICBkcmFnTG9jID0gSW50
UG9pbnQobW91c2VEcmFnZ2VkUG9pbnQueCgpICsgbV9kcmFnT2Zmc2V0LngoKSwgbW91c2VEcmFn
Z2VkUG9pbnQueSgpICsgbV9kcmFnT2Zmc2V0LnkoKSk7CiAgICAgICAgIH0KICAgICAgICAgZG9T
eXN0ZW1EcmFnKGRyYWdJbWFnZSwgZHJhZ0xvYywgbW91c2VEcmFnZ2VkUG9pbnQsIGNsaXBib2Fy
ZCwgc3JjLCB0cnVlKTsKLSAgICB9IGVsc2UgaWYgKGlzU2VsZWN0ZWQgJiYgKG1fZHJhZ1NvdXJj
ZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pKSB7Ci0gICAgICAgIGlmICghY2xp
cGJvYXJkLT5oYXNEYXRhKCkpIHsKLSAgICAgICAgICAgIGlmIChpc05vZGVJblRleHRGb3JtQ29u
dHJvbChzcmMtPnNlbGVjdGlvbigpLT5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCkpKQotICAgICAg
ICAgICAgICAgIGNsaXBib2FyZC0+d3JpdGVQbGFpblRleHQoc3JjLT5lZGl0b3IoKS0+c2VsZWN0
ZWRUZXh0KCkpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJh
bmdlPiBzZWxlY3Rpb25SYW5nZSA9IHNyYy0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdl
KCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHNlbGVjdGlvblJhbmdlKTsKLQotICAgICAgICAg
ICAgICAgIGNsaXBib2FyZC0+d3JpdGVSYW5nZShzZWxlY3Rpb25SYW5nZS5nZXQoKSwgc3JjKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1E
cmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24sIGRyYWdPcmlnaW4sIGNs
aXBib2FyZCk7Ci0gICAgICAgIGlmICghZHJhZ0ltYWdlKSB7Ci0gICAgICAgICAgICBkcmFnSW1h
Z2UgPSBjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24oc3JjKTsKLSAgICAgICAgICAgIGRyYWdM
b2MgPSBkcmFnTG9jRm9yU2VsZWN0aW9uRHJhZyhzcmMpOwotICAgICAgICAgICAgbV9kcmFnT2Zm
c2V0ID0gSW50UG9pbnQoKGludCkoZHJhZ09yaWdpbi54KCkgLSBkcmFnTG9jLngoKSksIChpbnQp
KGRyYWdPcmlnaW4ueSgpIC0gZHJhZ0xvYy55KCkpKTsKLSAgICAgICAgfQotICAgICAgICBkb1N5
c3RlbURyYWcoZHJhZ0ltYWdlLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQsIHNyYywg
ZmFsc2UpOwotICAgIH0gZWxzZSBpZiAoaXNESFRNTERyYWcpIHsKKyAgICB9IGVsc2UgaWYgKHN0
YXRlLm1fZHJhZ1R5cGUgPT0gRHJhZ1N0YXRlOjpIVE1MKSB7CiAgICAgICAgIEFTU0VSVChtX2Ry
YWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uREhUTUwpOwogICAgICAgICBtX2NsaWVu
dC0+d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25ESFRNTCwgZHJh
Z09yaWdpbiwgY2xpcGJvYXJkKTsKICAgICAgICAgZG9TeXN0ZW1EcmFnKGRyYWdJbWFnZSwgZHJh
Z0xvYywgZHJhZ09yaWdpbiwgY2xpcGJvYXJkLCBzcmMsIGZhbHNlKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICAvLyBPbmx5IHdheSBJIGtub3cgdG8gZ2V0IGhlcmUgaXMgaWYgdG8gZ2V0IGhlcmUg
aXMgaWYgdGhlIG9yaWdpbmFsIGVsZW1lbnQgY2xpY2tlZCBvbiBpbiB0aGUgbW91c2Vkb3duIGlz
IG5vIGxvbmdlcgotICAgICAgICAvLyB1bmRlciB0aGUgbW91c2Vkb3duIHBvaW50LCBzbyBsaW5r
VVJMLCBpbWFnZVVSTCBhbmQgaXNTZWxlY3RlZCBhcmUgYWxsIGZhbHNlL2VtcHR5LgorICAgICAg
ICAvLyBUaGVyZSB3YXMgbm8gbGluayBvciBpbWFnZSBVUkwgZm9yIHNvbWUgcmVhc29uIGlmIHdl
IGdvdCBoZXJlLgogICAgICAgICBzdGFydGVkRHJhZyA9IGZhbHNlOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCmluZGV4IGJlMWU0NTY5NWM2NmE4NTM4OWQ1YmNlYzM4
NzU2NGNkNDdmNjIxZjIuLjNkNTI3ODBhMzNhNWJkM2IyMzhkYzk4YmU0NDBmYTNlMDZmMzg3Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIERvY3VtZW50OwogICAgIGNsYXNzIERyYWdDbGll
bnQ7CiAgICAgY2xhc3MgRHJhZ0RhdGE7CisgICAgY2xhc3MgRHJhZ1N0YXRlOwogICAgIGNsYXNz
IEVsZW1lbnQ7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgRnJhbWVTZWxlY3Rpb247CkBA
IC03NSwxMiArNzYsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBEcmFnRGVzdGlu
YXRpb25BY3Rpb24gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kcmFn
RGVzdGluYXRpb25BY3Rpb247IH0KICAgICAgICAgRHJhZ1NvdXJjZUFjdGlvbiBkZWxlZ2F0ZURy
YWdTb3VyY2VBY3Rpb24oY29uc3QgSW50UG9pbnQmIHBhZ2VQb2ludCk7CiAgICAgICAgIAotICAg
ICAgICBib29sIG1heVN0YXJ0RHJhZ0F0RXZlbnRMb2NhdGlvbihjb25zdCBGcmFtZSosIGNvbnN0
IEludFBvaW50JiBmcmFtZVBvcywgTm9kZSopOworICAgICAgICBOb2RlKiBkcmFnZ2FibGVOb2Rl
KGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBjb25zdCBGcmFtZSosIE5vZGUqLCBEcmFnU3Rh
dGUmKSBjb25zdDsKKwogICAgICAgICB2b2lkIGRyYWdFbmRlZCgpOwogICAgICAgICAKICAgICAg
ICAgdm9pZCBwbGFjZURyYWdDYXJldChjb25zdCBJbnRQb2ludCYpOwogICAgICAgICAKLSAgICAg
ICAgYm9vbCBzdGFydERyYWcoRnJhbWUqIHNyYywgQ2xpcGJvYXJkKiwgRHJhZ09wZXJhdGlvbiBz
cmNPcCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50
JiBkcmFnT3JpZ2luLCBib29sIGlzREhUTUxEcmFnKTsKKyAgICAgICAgYm9vbCBzdGFydERyYWco
RnJhbWUqIHNyYywgY29uc3QgRHJhZ1N0YXRlJiwgRHJhZ09wZXJhdGlvbiBzcmNPcCwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2lu
KTsKICAgICAgICAgc3RhdGljIGNvbnN0IEludFNpemUmIG1heERyYWdJbWFnZVNpemUoKTsKICAg
ICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgTGlua0RyYWdCb3JkZXJJbnNldDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdTdGF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmNTk5YjcwMjI4YjE4NTZhZmJkODg5YTA2
ODc3MzEwZGMzZjEzN2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdTdGF0ZS5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBEcmFnU3RhdGVfaAorI2RlZmluZSBEcmFnU3RhdGVf
aAorCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgQ2xpcGJvYXJkOworY2xhc3MgTm9kZTsKKworc3RydWN0IERyYWdTdGF0ZSB7IAor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERyYWdTdGF0ZSk7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7IAorcHVibGljOiAKKyAgICBlbnVtIERyYWdUeXBlIHsKKyAgICAgICAgU0VMRUNU
SU9OLAorICAgICAgICBIVE1MLCAvLyBBbiBIVE1MIGVsZW1lbnQgd2l0aCBkcmFnZ2FibGU9dHJ1
ZS4KKyAgICAgICAgSU1BR0UsCisgICAgICAgIExJTkssCisgICAgfTsKKworICAgIERyYWdTdGF0
ZSgpIHsgfSAKKyAgICAvLyBFbGVtZW50IHRoYXQgbWF5IGJlIGEgZHJhZyBzb3VyY2UsIGZvciB0
aGUgY3VycmVudCBtb3VzZSBnZXN0dXJlIC4KKyAgICBSZWZQdHI8Tm9kZT4gbV9kcmFnU3JjOwor
ICAgIERyYWdUeXBlIG1fZHJhZ1R5cGU7CisgICAgLy8gQXJlIERIVE1MIGFuZC9vciB0aGUgdXNl
ciBhZ2VudCBhbGxvd2VkIHRvIGRyYWcgb3V0PyAKKyAgICBib29sIG1fZHJhZ1NyY01heUJlREhU
TUw7IAorICAgIGJvb2wgbV9kcmFnU3JjTWF5QmVVQTsKKyAgICAvLyBVc2VkIGJ5IHRoZSBkcmFn
IHNvdXJjZSB0byBzZXQgYWxsb3dlZCBzb3VyY2Ugb3BlcmF0aW9ucywgZGF0YSwgZXRjLgorICAg
IFJlZlB0cjxDbGlwYm9hcmQ+IG1fZHJhZ0NsaXBib2FyZDsKK307IAorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBEcmFnU3RhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IGU2NjI4NWYxYmU1ZDg1NDQyMzRhNGI0YmM5NjM2ODI4YzEzNjBkY2Iu
LmFkZmU2NmZkYjY3YWVkMzk3NWQ3N2Y3MTdiMzU3YjQzZjZkNjZmZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJDdXJzb3JM
aXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEcmFnQ29udHJvbGxlci5o
IgorI2luY2x1ZGUgIkRyYWdTdGF0ZS5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCkBAIC0yMTcsOSArMjE4LDkg
QEAgRXZlbnRIYW5kbGVyOjp+RXZlbnRIYW5kbGVyKCkKIH0KICAgICAKICNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQotRXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXJEcmFnU3RhdGUmIEV2ZW50SGFu
ZGxlcjo6ZHJhZ1N0YXRlKCkKK0RyYWdTdGF0ZSYgRXZlbnRIYW5kbGVyOjpkcmFnU3RhdGUoKQog
ewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoRXZlbnRIYW5kbGVyRHJhZ1N0YXRlLCBzdGF0ZSwg
KCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoRHJhZ1N0YXRlLCBzdGF0ZSwgKCkpOwogICAg
IHJldHVybiBzdGF0ZTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtNTg1
LDIxICs1ODYsMjMgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmV2ZW50TWF5U3RhcnREcmFnKGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIGNvbnN0CiAgICAgaWYgKGV2ZW50LmJ1dHRvbigp
ICE9IExlZnRCdXR0b24gfHwgZXZlbnQuY2xpY2tDb3VudCgpICE9IDEpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKLSAgICBib29sIERIVE1MRmxhZzsKLSAgICBib29sIFVBRmxhZzsKLSAg
ICBhbGxvd0RIVE1MRHJhZyhESFRNTEZsYWcsIFVBRmxhZyk7Ci0gICAgaWYgKCFESFRNTEZsYWcg
JiYgIVVBRmxhZykKKyAgICBEcmFnU3RhdGUgc3RhdGU7CisgICAgYWxsb3dESFRNTERyYWcoc3Rh
dGUubV9kcmFnU3JjTWF5QmVESFRNTCwgc3RhdGUubV9kcmFnU3JjTWF5QmVVQSk7CisgICAgaWYg
KCFzdGF0ZS5tX2RyYWdTcmNNYXlCZURIVE1MICYmICFzdGF0ZS5tX2RyYWdTcmNNYXlCZVVBKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52
aWV3KCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBQYWdl
KiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVh
ZE9ubHkpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29udGVudHMo
ZXZlbnQucG9zKCkpKTsKICAgICBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+bGF5ZXIoKS0+
aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwotICAgIGJvb2wgc3JjSXNESFRNTDsKLSAgICByZXR1
cm4gcmVzdWx0LmlubmVyTm9kZSgpICYmIHJlc3VsdC5pbm5lck5vZGUoKS0+cmVuZGVyZXIoKS0+
ZHJhZ2dhYmxlTm9kZShESFRNTEZsYWcsIFVBRmxhZywgcmVzdWx0LnBvaW50KCkueCgpLCByZXN1
bHQucG9pbnQoKS55KCksIHNyY0lzREhUTUwpOworICAgIHJldHVybiByZXN1bHQuaW5uZXJOb2Rl
KCkgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZHJhZ2dhYmxlTm9kZShyZXN1bHQucG9pbnQo
KSwgbV9mcmFtZSwgcmVzdWx0LmlubmVyTm9kZSgpLCBzdGF0ZSk7CiB9CiAKIHZvaWQgRXZlbnRI
YW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcoKQpAQCAtMjYyMywxMiArMjYyNiwx
OSBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChjb25zdCBJbnRQ
b2ludCYgZHJhZ1ZpZXdwb3J0TG9jYXRpb24pCiAgICAgSW50U2l6ZSBkZWx0YSA9IGRyYWdMb2Nh
dGlvbiAtIG1fbW91c2VEb3duUG9zOwogICAgIAogICAgIGludCB0aHJlc2hvbGQgPSBHZW5lcmFs
RHJhZ0h5c3RlcmVzaXM7Ci0gICAgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzSW1hZ2UpCisg
ICAgc3dpdGNoIChkcmFnU3RhdGUoKS5tX2RyYWdUeXBlKSB7CisgICAgY2FzZSBEcmFnU3RhdGU6
OlNFTEVDVElPTjoKKyAgICAgICAgdGhyZXNob2xkID0gVGV4dERyYWdIeXN0ZXJlc2lzOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIERyYWdTdGF0ZTo6SU1BR0U6CiAgICAgICAgIHRocmVzaG9s
ZCA9IEltYWdlRHJhZ0h5c3RlcmVzaXM7Ci0gICAgZWxzZSBpZiAoZHJhZ1N0YXRlKCkubV9kcmFn
U3JjSXNMaW5rKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIERyYWdTdGF0ZTo6TElOSzoKICAg
ICAgICAgdGhyZXNob2xkID0gTGlua0RyYWdIeXN0ZXJlc2lzOwotICAgIGVsc2UgaWYgKGRyYWdT
dGF0ZSgpLm1fZHJhZ1NyY0luU2VsZWN0aW9uKQotICAgICAgICB0aHJlc2hvbGQgPSBUZXh0RHJh
Z0h5c3RlcmVzaXM7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFr
OworICAgIH0KICAgICAKICAgICByZXR1cm4gYWJzKGRlbHRhLndpZHRoKCkpID49IHRocmVzaG9s
ZCB8fCBhYnMoZGVsdGEuaGVpZ2h0KCkpID49IHRocmVzaG9sZDsKIH0KQEAgLTI2MzksMTQgKzI2
NDksNiBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZnJlZUNsaXBib2FyZCgpCiAgICAgICAgIGRyYWdT
dGF0ZSgpLm1fZHJhZ0NsaXBib2FyZC0+c2V0QWNjZXNzUG9saWN5KENsaXBib2FyZE51bWIpOwog
fQogCi1ib29sIEV2ZW50SGFuZGxlcjo6c2hvdWxkRHJhZ0F1dG9Ob2RlKE5vZGUqIG5vZGUsIGNv
bnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKLXsKLSAgICBpZiAoIW5vZGUgfHwgIW1fZnJhbWUt
PnZpZXcoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCk7Ci0gICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+bWF5
U3RhcnREcmFnQXRFdmVudExvY2F0aW9uKG1fZnJhbWUsIHBvaW50LCBub2RlKTsKLX0KLQogdm9p
ZCBFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZXZlbnQsIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQogewogICAgIGlmIChkcmFnU3RhdGUo
KS5tX2RyYWdTcmMgJiYgZHJhZ1N0YXRlKCkubV9kcmFnU3JjTWF5QmVESFRNTCkgewpAQCAtMjY5
NCwzMCArMjY5NiwxOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3Vz
ZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKICAgICAgICAgSGl0VGVzdFJlcXVlc3Qg
cmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOwogICAgICAgICBIaXRUZXN0UmVzdWx0
IHJlc3VsdChtX21vdXNlRG93blBvcyk7CiAgICAgICAgIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJl
cigpLT5sYXllcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CisKICAgICAgICAgTm9kZSog
bm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKLSAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS0+cmVu
ZGVyZXIoKSkKLSAgICAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyA9IG5vZGUtPnJlbmRl
cmVyKCktPmRyYWdnYWJsZU5vZGUoZHJhZ1N0YXRlKCkubV9kcmFnU3JjTWF5QmVESFRNTCwgZHJh
Z1N0YXRlKCkubV9kcmFnU3JjTWF5QmVVQSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9tb3VzZURvd25Qb3MueCgp
LCBtX21vdXNlRG93blBvcy55KCksIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzREhUTUwpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdTcmMgPSAwOworICAgICAg
ICBpZiAobm9kZSAmJiBtX2ZyYW1lLT5wYWdlKCkpCisgICAgICAgICAgICBkcmFnU3RhdGUoKS5t
X2RyYWdTcmMgPSBtX2ZyYW1lLT5wYWdlKCktPmRyYWdDb250cm9sbGVyKCktPmRyYWdnYWJsZU5v
ZGUobV9tb3VzZURvd25Qb3MsIG1fZnJhbWUsIG5vZGUsIGRyYWdTdGF0ZSgpKTsKICAgICAgICAg
CiAgICAgICAgIGlmICghZHJhZ1N0YXRlKCkubV9kcmFnU3JjKQogICAgICAgICAgICAgbV9tb3Vz
ZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsgLy8gbm8gZWxlbWVudCBpcyBkcmFnZ2FibGUKLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvLyByZW1lbWJlciBzb21lIGZhY3RzIGFib3V0IHRo
aXMgc291cmNlLCB3aGlsZSB3ZSBoYXZlIGEgSGl0VGVzdFJlc3VsdCBoYW5keQotICAgICAgICAg
ICAgbm9kZSA9IHJlc3VsdC5VUkxFbGVtZW50KCk7Ci0gICAgICAgICAgICBkcmFnU3RhdGUoKS5t
X2RyYWdTcmNJc0xpbmsgPSBub2RlICYmIG5vZGUtPmlzTGluaygpOwotICAgICAgICAgICAgCi0g
ICAgICAgICAgICBub2RlID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpOwotICAgICAgICAg
ICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjSXNJbWFnZSA9IG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIo
KSAmJiBub2RlLT5yZW5kZXJlcigpLT5pc0ltYWdlKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0luU2VsZWN0aW9uID0gbV9mcmFtZS0+c2VsZWN0aW9u
KCktPmNvbnRhaW5zKG1fbW91c2VEb3duUG9zKTsKLSAgICAgICAgfSAgICAgICAgICAgICAgICAK
ICAgICB9CiAgICAgCiAgICAgLy8gRm9yIGRyYWdzIHN0YXJ0aW5nIGluIHRoZSBzZWxlY3Rpb24s
IHRoZSB1c2VyIG11c3Qgd2FpdCBiZXR3ZWVuIHRoZSBtb3VzZWRvd24gYW5kIG1vdXNlZHJhZywK
ICAgICAvLyBvciBlbHNlIHdlIGJhaWwgb24gdGhlIGRyYWdnaW5nIHN0dWZmIGFuZCBhbGxvdyBz
ZWxlY3Rpb24gdG8gb2NjdXIKLSAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcgJiYgIWRy
YWdTdGF0ZSgpLm1fZHJhZ1NyY0lzSW1hZ2UgJiYgZHJhZ1N0YXRlKCkubV9kcmFnU3JjSW5TZWxl
Y3Rpb24gJiYgZXZlbnQuZXZlbnQoKS50aW1lc3RhbXAoKSAtIG1fbW91c2VEb3duVGltZXN0YW1w
IDwgVGV4dERyYWdEZWxheSkgeworICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0RHJhZyAmJiBk
cmFnU3RhdGUoKS5tX2RyYWdUeXBlID09IERyYWdTdGF0ZTo6U0VMRUNUSU9OICYmIGV2ZW50LmV2
ZW50KCkudGltZXN0YW1wKCkgLSBtX21vdXNlRG93blRpbWVzdGFtcCA8IFRleHREcmFnRGVsYXkp
IHsKICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsKICAgICAgICAgZHJh
Z1N0YXRlKCkubV9kcmFnU3JjID0gMDsKICAgICAgICAgLy8gLi4uYnV0IGlmIHRoaXMgd2FzIHRo
ZSBmaXJzdCBjbGljayBpbiB0aGUgd2luZG93LCB3ZSBkb24ndCBldmVuIHdhbnQgdG8gc3RhcnQg
c2VsZWN0aW9uCkBAIC0yNzQ5LDcgKzI3MzksNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
RHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKICAgICBpZiAo
ZHJhZ1N0YXRlKCkubV9kcmFnU3JjTWF5QmVESFRNTCkgewogICAgICAgICAvLyBDaGVjayB0byBz
ZWUgaWYgdGhlIGlzIGEgRE9NIGJhc2VkIGRyYWcsIGlmIGl0IGlzIGdldCB0aGUgRE9NIHNwZWNp
ZmllZCBkcmFnIAogICAgICAgICAvLyBpbWFnZSBhbmQgb2Zmc2V0Ci0gICAgICAgIGlmIChkcmFn
U3RhdGUoKS5tX2RyYWdTcmNJc0RIVE1MKSB7CisgICAgICAgIGlmIChkcmFnU3RhdGUoKS5tX2Ry
YWdUeXBlID09IERyYWdTdGF0ZTo6SFRNTCkgewogICAgICAgICAgICAgaWYgKFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBkcmFnU3RhdGUoKS5tX2RyYWdTcmMtPnJlbmRlcmVyKCkpIHsKICAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IHdvcmsgY29ycmVjdGx5IHdpdGggdHJh
bnNmb3Jtcy4KICAgICAgICAgICAgICAgICBGbG9hdFBvaW50IGFic1BvcyA9IHJlbmRlcmVyLT5s
b2NhbFRvQWJzb2x1dGUoKTsKQEAgLTI3ODUsNyArMjc3NSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQog
ICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0RHJhZykgewogICAgICAgICBQYWdlKiBwYWdlID0g
bV9mcmFtZS0+cGFnZSgpOwogICAgICAgICBEcmFnQ29udHJvbGxlciogZHJhZ0NvbnRyb2xsZXIg
PSBwYWdlID8gcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKSA6IDA7Ci0gICAgICAgIGJvb2wgc3RhcnRl
ZERyYWcgPSBkcmFnQ29udHJvbGxlciAmJiBkcmFnQ29udHJvbGxlci0+c3RhcnREcmFnKG1fZnJh
bWUsIGRyYWdTdGF0ZSgpLm1fZHJhZ0NsaXBib2FyZC5nZXQoKSwgc3JjT3AsIGV2ZW50LmV2ZW50
KCksIG1fbW91c2VEb3duUG9zLCBkcmFnU3RhdGUoKS5tX2RyYWdTcmNJc0RIVE1MKTsKKyAgICAg
ICAgYm9vbCBzdGFydGVkRHJhZyA9IGRyYWdDb250cm9sbGVyICYmIGRyYWdDb250cm9sbGVyLT5z
dGFydERyYWcobV9mcmFtZSwgZHJhZ1N0YXRlKCksIHNyY09wLCBldmVudC5ldmVudCgpLCBtX21v
dXNlRG93blBvcyk7CiAgICAgICAgIGlmICghc3RhcnRlZERyYWcgJiYgZHJhZ1N0YXRlKCkubV9k
cmFnU3JjTWF5QmVESFRNTCkgewogICAgICAgICAgICAgLy8gRHJhZyB3YXMgY2FubmVkIGF0IHRo
ZSBsYXN0IG1pbnV0ZSAtIHdlIG93ZSBtX2RyYWdTcmMgYSBEUkFHRU5EIGV2ZW50CiAgICAgICAg
ICAgICBkaXNwYXRjaERyYWdTcmNFdmVudChldmVudE5hbWVzKCkuZHJhZ2VuZEV2ZW50LCBldmVu
dC5ldmVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDJiZWZhZjM1NTg0
YzUwNTM0NmY0MjgyYWVjMDQ2NTJiMjAzNjIxMmEuLjBjOTVmYWZlMGQ0ZTQzMzBmZTU4YTg3MDkw
ZjllMzY1ZDhmZjIyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtNDksNiAr
NDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENsaXBib2FyZDsKIGNsYXNzIEN1
cnNvcjsKK2NsYXNzIERyYWdTdGF0ZTsKIGNsYXNzIEV2ZW50OwogY2xhc3MgRXZlbnRUYXJnZXQ7
CiBjbGFzcyBGbG9hdFBvaW50OwpAQCAtMTQ1LDEwICsxNDYsNiBAQCBwdWJsaWM6CiAgICAgYm9v
bCBzY3JvbGxSZWN1cnNpdmVseShTY3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBO
b2RlKiBzdGFydGluZ05vZGUgPSAwKTsKICAgICBib29sIGxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVs
eShTY3JvbGxMb2dpY2FsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgTm9kZSogc3RhcnRp
bmdOb2RlID0gMCk7CiAKLSNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIGJvb2wgc2hvdWxk
RHJhZ0F1dG9Ob2RlKE5vZGUqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OyAvLyAtd2Via2l0LXVz
ZXItZHJhZyA9PSBhdXRvCi0jZW5kaWYKLQogICAgIGJvb2wgdGFic1RvTGlua3MoS2V5Ym9hcmRF
dmVudCopIGNvbnN0OwogICAgIGJvb2wgdGFic1RvQWxsRm9ybUNvbnRyb2xzKEtleWJvYXJkRXZl
bnQqKSBjb25zdDsKIApAQCAtMjIzLDIwICsyMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBQZXJm
b3JtRHJhZ0FuZERyb3AKICAgICB9OwogCi0gICAgc3RydWN0IEV2ZW50SGFuZGxlckRyYWdTdGF0
ZSB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEV2ZW50SGFuZGxlckRyYWdTdGF0ZSk7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgRXZlbnRIYW5k
bGVyRHJhZ1N0YXRlKCkgeyB9Ci0gICAgICAgIFJlZlB0cjxOb2RlPiBtX2RyYWdTcmM7IC8vIGVs
ZW1lbnQgdGhhdCBtYXkgYmUgYSBkcmFnIHNvdXJjZSwgZm9yIHRoZSBjdXJyZW50IG1vdXNlIGdl
c3R1cmUKLSAgICAgICAgYm9vbCBtX2RyYWdTcmNJc0xpbms7Ci0gICAgICAgIGJvb2wgbV9kcmFn
U3JjSXNJbWFnZTsKLSAgICAgICAgYm9vbCBtX2RyYWdTcmNJblNlbGVjdGlvbjsKLSAgICAgICAg
Ym9vbCBtX2RyYWdTcmNNYXlCZURIVE1MOwotICAgICAgICBib29sIG1fZHJhZ1NyY01heUJlVUE7
IC8vIEFyZSBESFRNTCBhbmQvb3IgdGhlIFVzZXJBZ2VudCBhbGxvd2VkIHRvIGRyYWcgb3V0Pwot
ICAgICAgICBib29sIG1fZHJhZ1NyY0lzREhUTUw7Ci0gICAgICAgIFJlZlB0cjxDbGlwYm9hcmQ+
IG1fZHJhZ0NsaXBib2FyZDsgLy8gdXNlZCBvbiBvbmx5IHRoZSBzb3VyY2Ugc2lkZSBvZiBkcmFn
Z2luZwotICAgIH07Ci0gICAgc3RhdGljIEV2ZW50SGFuZGxlckRyYWdTdGF0ZSYgZHJhZ1N0YXRl
KCk7CisgICAgc3RhdGljIERyYWdTdGF0ZSYgZHJhZ1N0YXRlKCk7CiAgICAgc3RhdGljIGNvbnN0
IGRvdWJsZSBUZXh0RHJhZ0RlbGF5OwogCiAgICAgYm9vbCBjYW5IYW5kbGVEcmFnQW5kRHJvcEZv
clRhcmdldChEcmFnQW5kRHJvcEhhbmRsZVR5cGUsIE5vZGUqIHRhcmdldCwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiwgQ2xpcGJvYXJkKiwgYm9vbCogYWNjZXB0ZWQgPSAwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggOGQ2ZTQzODMyMDVkNDc5ZWJl
NTJiODg1NGZhMjA0OTNhYWMxN2U2NS4uMGQ0OTg1NjVmOWI5NjMwMzAyZWE1MGQ1NmEyNmQwMDM2
M2MyYzVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAg
LTE0OTgsNDMgKzE0OTgsNiBAQCBDb2xvciBSZW5kZXJPYmplY3Q6OnNlbGVjdGlvbkVtcGhhc2lz
TWFya0NvbG9yKCkgY29uc3QKICAgICByZXR1cm4gc2VsZWN0aW9uQ29sb3IoQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RW1waGFzaXNDb2xvcik7CiB9CiAKLSNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQot
Tm9kZSogUmVuZGVyT2JqZWN0OjpkcmFnZ2FibGVOb2RlKGJvb2wgZGh0bWxPSywgYm9vbCB1YU9L
LCBpbnQgeCwgaW50IHksIGJvb2wmIGRodG1sV2lsbERyYWcpIGNvbnN0Ci17Ci0gICAgaWYgKCFk
aHRtbE9LICYmICF1YU9LKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGZvciAoY29uc3QgUmVu
ZGVyT2JqZWN0KiBjdXJyID0gdGhpczsgY3VycjsgY3VyciA9IGN1cnItPnBhcmVudCgpKSB7Ci0g
ICAgICAgIE5vZGUqIGVsdCA9IGN1cnItPm5vZGUoKTsKLSAgICAgICAgaWYgKGVsdCAmJiBlbHQt
Pm5vZGVUeXBlKCkgPT0gTm9kZTo6VEVYVF9OT0RFKSB7Ci0gICAgICAgICAgICAvLyBTaW5jZSB0
aGVyZSdzIG5vIHdheSBmb3IgdGhlIGF1dGhvciB0byBhZGRyZXNzIHRoZSAtd2Via2l0LXVzZXIt
ZHJhZyBzdHlsZSBmb3IgYSB0ZXh0IG5vZGUsCi0gICAgICAgICAgICAvLyB3ZSB1c2Ugb3VyIG93
biBqdWRnZW1lbnQuCi0gICAgICAgICAgICBpZiAodWFPSyAmJiB2aWV3KCktPmZyYW1lVmlldygp
LT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+c2hvdWxkRHJhZ0F1dG9Ob2RlKGN1cnItPm5vZGUo
KSwgSW50UG9pbnQoeCwgeSkpKSB7Ci0gICAgICAgICAgICAgICAgZGh0bWxXaWxsRHJhZyA9IGZh
bHNlOwotICAgICAgICAgICAgICAgIHJldHVybiBjdXJyLT5ub2RlKCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoZWx0LT5jYW5TdGFydFNlbGVjdGlvbigpKQotICAgICAgICAgICAg
ICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBoYXZlIGEgY2xpY2sgaW4gdGhlIHVuc2VsZWN0ZWQgcG9y
dGlvbiBvZiB0ZXh0LiAgSWYgdGhpcyB0ZXh0IGlzCi0gICAgICAgICAgICAgICAgLy8gc2VsZWN0
YWJsZSwgd2Ugd2FudCB0byBzdGFydCB0aGUgc2VsZWN0aW9uIHByb2Nlc3MgaW5zdGVhZCBvZiBs
b29raW5nIGZvciBhIHBhcmVudAotICAgICAgICAgICAgICAgIC8vIHRvIHRyeSB0byBkcmFnLgot
ICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
RVVzZXJEcmFnIGRyYWdNb2RlID0gY3Vyci0+c3R5bGUoKS0+dXNlckRyYWcoKTsKLSAgICAgICAg
ICAgIGlmIChkaHRtbE9LICYmIGRyYWdNb2RlID09IERSQUdfRUxFTUVOVCkgewotICAgICAgICAg
ICAgICAgIGRodG1sV2lsbERyYWcgPSB0cnVlOwotICAgICAgICAgICAgICAgIHJldHVybiBjdXJy
LT5ub2RlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodWFPSyAmJiBkcmFnTW9k
ZSA9PSBEUkFHX0FVVE8KLSAgICAgICAgICAgICAgICAgICAgJiYgdmlldygpLT5mcmFtZVZpZXco
KS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPnNob3VsZERyYWdBdXRvTm9kZShjdXJyLT5ub2Rl
KCksIEludFBvaW50KHgsIHkpKSkgewotICAgICAgICAgICAgICAgIGRodG1sV2lsbERyYWcgPSBm
YWxzZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3Vyci0+bm9kZSgpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotI2VuZGlmIC8vIEVOQUJMRShE
UkFHX1NVUFBPUlQpCi0KIHZvaWQgUmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25TdGFydEVuZChpbnQm
IHNwb3MsIGludCYgZXBvcykgY29uc3QKIHsKICAgICB2aWV3KCktPnNlbGVjdGlvblN0YXJ0RW5k
KHNwb3MsIGVwb3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4
IDdmOTNhMGYwMDdiOGVhM2E0OTVjZGFkNjE5YjQ3MTdjZDFiMzhiY2IuLjAyNmZmNmY0M2QxMGE4
YWZlNTg1MDY0YTViOWNmOWU2ZjFkMzJhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgKQEAgLTcxNCwxMCArNzE0LDYgQEAgcHVibGljOgogICAgIC8vIFdoZXRoZXIg
b3Igbm90IGEgZ2l2ZW4gYmxvY2sgbmVlZHMgdG8gcGFpbnQgc2VsZWN0aW9uIGdhcHMuCiAgICAg
dmlydHVhbCBib29sIHNob3VsZFBhaW50U2VsZWN0aW9uR2FwcygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKLSNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIE5vZGUqIGRyYWdnYWJsZU5v
ZGUoYm9vbCBkaHRtbE9LLCBib29sIHVhT0ssIGludCB4LCBpbnQgeSwgYm9vbCYgZGh0bWxXaWxs
RHJhZykgY29uc3Q7Ci0jZW5kaWYKLQogICAgIC8qKgogICAgICAqIFJldHVybnMgdGhlIGxvY2Fs
IGNvb3JkaW5hdGVzIG9mIHRoZSBjYXJldCB3aXRoaW4gdGhpcyByZW5kZXIgb2JqZWN0LgogICAg
ICAqIEBwYXJhbSBjYXJldE9mZnNldCB6ZXJvLWJhc2VkIG9mZnNldCBkZXRlcm1pbmluZyBwb3Np
dGlvbiB3aXRoaW4gdGhlIHJlbmRlciBvYmplY3QuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92763</attachid>
            <date>2011-05-09 00:13:51 -0700</date>
            <delta_ts>2011-05-10 23:36:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59409-20110509001350.patch</filename>
            <type>text/plain</type>
            <size>39087</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU5NTQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzNmZiYTNhOWNmN2QxNDgzYmVlNzMw
MTY0Yjc2NzBiOTk3YTlkMjFmLi43MTAxYmNmZDQ3NzQxZDM0MDM1MmNhYzk5MGNhY2UxOGUxYTJj
OTRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDUtMDggIERhbmllbCBDaGVuZyAgPGRj
aGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wcm92ZSBkcmFnIHN0YXJ0IGxvZ2ljCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTQwOQorCisgICAgICAgIFJlYmFzZWxpbmUg
dGVzdHMgZm9yIG5ldyBiZWhhdmlvci4KKworICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9k
cmFnLXNlbGVjdGVkLWltYWdlLXRvLWNvbnRlbnRlZGl0YWJsZS5odG1sOgorICAgICAgICAqIGZh
c3QvY3NzL3VzZXItZHJhZy1ub25lLmh0bWw6CisKIDIwMTEtMDUtMDYgIEFkcmllbm5lIFdhbGtl
ciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIFVucmV2aWV3ZWQsIGZp
eCBwYXJzZSBlcnJvcnMgaW4gdGVzdF9leHBlY3RhdGlvbnMuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1zZWxlY3RlZC1pbWFnZS10by1jb250ZW50ZWRp
dGFibGUuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGVk
LWltYWdlLXRvLWNvbnRlbnRlZGl0YWJsZS5odG1sCmluZGV4IDIxNDBhMTUwYjJjYjBkMjQ5NTJj
NDI1ZDQ2YjBkZjk4NDNiNGQ4N2UuLmMwZjNiNzBkNWQwNTEyODFjMjhiODcwODhhZjFhM2U3M2Ux
YmRiOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNl
bGVjdGVkLWltYWdlLXRvLWNvbnRlbnRlZGl0YWJsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGVkLWltYWdlLXRvLWNvbnRlbnRlZGl0YWJsZS5o
dG1sCkBAIC00NCw2ICs0NCw3IEBAIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB4ID0gZS5vZmZzZXRM
ZWZ0ICsgZS5vZmZzZXRXaWR0aCAvIDI7CiAgICAgeSA9IGUub2Zmc2V0VG9wICsgZS5vZmZzZXRI
ZWlnaHQgLyAyOwogICAgIAorICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDUwMCk7CiAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CiAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgp
OwogICAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXNlci1kcmFnLW5vbmUu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3VzZXItZHJhZy1ub25lLmh0bWwKaW5kZXggYzg4
Y2FhZjZlZTU2YzM4NmI4ZTNiNmY0NDVkNGMxYTc3M2UxYTA4Yy4uZjkzMzUxMzVjNWQ5YzFhNWY5
MTdlN2UwYzViZTg0YTU4ZTlhODE0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
dXNlci1kcmFnLW5vbmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy91c2VyLWRyYWct
bm9uZS5odG1sCkBAIC0xOSwxMSArMTksMTEgQEAKICAgICAgICAgPGltZyBjbGFzcz0iZHJhZy1u
b25lIiBzcmM9InJlc291cmNlcy9ncmVlbmJveC5wbmciPgogICAgIDwvZGl2PgogCi0gICAgPGRp
diBjbGFzcz0iYm94IiBleHBlY3Q9IklNRyB0ZXh0IHRleHQgQSBuaWwiPgorICAgIDxkaXYgY2xh
c3M9ImJveCIgZXhwZWN0PSJJTUcgQSBBIEEgbmlsIj4KICAgICAgICAgPGEgaHJlZj0iIyI+PGlt
ZyBzcmM9InJlc291cmNlcy9ncmVlbmJveC5wbmciPng8YnI+PHNwYW4+eTwvc3Bhbj48L2E+CiAg
ICAgPC9kaXY+CiAKLSAgICA8ZGl2IGNsYXNzPSJib3giIGV4cGVjdD0iSU1HIHRleHQgdGV4dCBB
IG5pbCI+CisgICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9IklNRyBBIEEgQSBuaWwiPgogICAg
ICAgICA8YSBocmVmPSIjIiBjbGFzcz0iZHJhZy1lbGVtZW50Ij48aW1nIHNyYz0icmVzb3VyY2Vz
L2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIApAQCAt
MzEsMTEgKzMxLDExIEBACiAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcmFnLW5vbmUiPjxp
bWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW5ib3gucG5nIj54PGJyPjxzcGFuPnk8L3NwYW4+PC9hPgog
ICAgIDwvZGl2PgogCi0gICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9IkEgdGV4dCB0ZXh0IEEg
bmlsIj4KKyAgICA8ZGl2IGNsYXNzPSJib3giIGV4cGVjdD0iQSBBIEEgQSBuaWwiPgogICAgICAg
ICA8YSBocmVmPSIjIj48aW1nIGNsYXNzPSJkcmFnLW5vbmUiIHNyYz0icmVzb3VyY2VzL2dyZWVu
Ym94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIAotICAgIDxkaXYg
Y2xhc3M9ImJveCIgZXhwZWN0PSJBIHRleHQgdGV4dCBBIG5pbCI+CisgICAgPGRpdiBjbGFzcz0i
Ym94IiBleHBlY3Q9IkEgQSBBIEEgbmlsIj4KICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRy
YWctZWxlbWVudCI+PGltZyBjbGFzcz0iZHJhZy1ub25lIiBzcmM9InJlc291cmNlcy9ncmVlbmJv
eC5wbmciPng8YnI+PHNwYW4+eTwvc3Bhbj48L2E+CiAgICAgPC9kaXY+CiAKQEAgLTQzLDExICs0
MywxMSBAQAogICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iZHJhZy1ub25lIj48aW1nIHNyYz0i
cmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rp
dj4KIAotICAgIDxkaXYgY2xhc3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSB0ZXh0IHRl
eHQgQSBESVYiPgorICAgIDxkaXYgY2xhc3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSBB
IEEgQSBESVYiPgogICAgICAgICA8YSBocmVmPSIjIj48aW1nIGNsYXNzPSJkcmFnLW5vbmUiIHNy
Yz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8
L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSB0ZXh0
IHRleHQgQSBESVYiPgorICAgIDxkaXYgY2xhc3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0i
QSBBIEEgQSBESVYiPgogICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iZHJhZy1lbGVtZW50Ij48
aW1nIGNsYXNzPSJkcmFnLW5vbmUiIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48
c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIDwvZGl2PgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM3MzA2
MzM4YjRjZDg3MTJjZGNhZTlkNmRiZmIyY2U5YzcxODkyYmYuLmFkMTg0NDY1YTNhMGVkNjg2Mjhm
NDIzNTY4ZjVmMTJiMDE2NDE5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMS0w
NS0wOCAgRGFuaWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXByb3ZlIGRyYWcgc3RhcnQgbG9n
aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NDA5
CisKKyAgICAgICAgV2hlbiBzdGFydGluZyBhIGRyYWcsIGZvbGxvdyBJRS9GaXJlZm94IHByaW9y
aXR5IGZvciBkZXRlcm1pbmluZyB3aGF0IHRvIGRyYWcuCisgICAgICAgIFRoZSBjb2RlIGhhcyBh
bHNvIGJlZW4gcmVvcmdhbml6ZWQgdG8gcmVtb3ZlIG11bHRpcGxlIGhpdCB0ZXN0cyBkdXJpbmcg
dGhlIGRyYWcgbm9kZQorICAgICAgICBzZWxlY3Rpb24gcHJvY2Vzcy4KKworICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVOb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDb250cm9sbGVyOjpzdGFydERyYWcpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL0RyYWdTdGF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdTdGF0ZTo6RHJhZ1N0YXRlKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRyYWdTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmV2ZW50TWF5U3RhcnREcmFnKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcpOgorICAgICAgICAqIHBhZ2UvRXZl
bnRIYW5kbGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorCiAyMDExLTA1LTA2ICBFcmljIENhcmxz
b24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggOWZjOTI2MTUzZGQyY2I5
ODVlZDc4NTgxMDc2MzgxYmQyODU0MmIyYS4uN2UwMmVmOGU0YjkyMDY2MjRlZjM5MGIwMzBiZGMy
MzhkZmNiMTMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yMTU5LDYgKzIx
NTksNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Ns
aWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdTdGF0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBjNTRmZmNkMzY4YTZm
ZGU5NmIzM2FlZjc3OGI0ODM2NzJkNmI0M2YyLi5mZGM0ZWNjNmQzM2Q3MWU1N2U2M2NjYjA0MDlm
ODBkN2QzYzQxMjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTAxMiw2ICsxMDEyLDcgQEAg
X19aTjdXZWJDb3JlOXBsYWluVGV4dEVQS05TXzVSYW5nZUVOU18yMFRleHRJdGVyYXRvckJlaGF2
aW9yRQogX19aTjdXZWJDb3JlOXRvRWxlbWVudEVOM0pTQzdKU1ZhbHVlRQogX19aTkszSlNDOEJp
bmRpbmdzMTBSb290T2JqZWN0MTJnbG9iYWxPYmplY3RFdgogX19aTkszV1RGNlN0cmluZzE0Y3Jl
YXRlQ0ZTdHJpbmdFdgorX19aTks3V2ViQ29yZTROb2RlMTFyZW5kZXJTdHlsZUV2CiBfX1pOSzdX
ZWJDb3JlNUZyYW1lMjZnZXREb2N1bWVudEJhY2tncm91bmRDb2xvckV2CiBfX1pOSzdXZWJDb3Jl
MTBDcmVkZW50aWFsMTFwZXJzaXN0ZW5jZUV2CiBfX1pOSzdXZWJDb3JlMTBDcmVkZW50aWFsNHVz
ZXJFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDUwMWE3NmQ4NDE0NGUxNmFlN2M4OGUzZTFjNjgxOGI2
MGYzMDhmNzcuLjM3ZDhmNmRkNmJiYTc0YWU4NTg0NDNmMjJmYmJmNTcwNmUzMWQxNjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTY4OSw2ICs2ODksNyBAQAogICAgICAgICAgICAgJ3BhZ2UvRHJhZ0Fj
dGlvbnMuaCcsCiAgICAgICAgICAgICAncGFnZS9EcmFnQ2xpZW50LmgnLAogICAgICAgICAgICAg
J3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaCcsCisgICAgICAgICAgICAncGFnZS9EcmFnU3RhdGUuaCcs
CiAgICAgICAgICAgICAncGFnZS9FZGl0b3JDbGllbnQuaCcsCiAgICAgICAgICAgICAncGFnZS9F
dmVudEhhbmRsZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9Gb2N1c0NvbnRyb2xsZXIuaCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvCmluZGV4IDY1NjU0MGFjNGQwNTVkNGY1OTdhN2E5NjA3YmI4NGYyODU5YjQ5MmUu
Ljg3MGI3Yzg1ODcyNTgyYzY0MDRmOWUxZWM1Y2M4NDQ1YWUyMDFkYjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJv
CkBAIC0xODQyLDYgKzE4NDIsNyBAQCBIRUFERVJTICs9IFwKICAgICBwYWdlL0RPTVRpbWVyLmgg
XAogICAgIHBhZ2UvRE9NV2luZG93LmggXAogICAgIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBcCisg
ICAgcGFnZS9EcmFnU3RhdGUuaCBcCiAgICAgcGFnZS9FdmVudEhhbmRsZXIuaCBcCiAgICAgcGFn
ZS9FdmVudFNvdXJjZS5oIFwKICAgICBwYWdlL0VkaXRvckNsaWVudC5oIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggM2RjMDJjODk3ODk0ZjU2
ZmUzNDgwZGE5ODVkZDAyYWY3YzYwMzg3YS4uNTM0MDJhMWM3MjcyMTNmYmM5NGMxMmMxYzM1MDUw
MjFiNDFmMDQzMCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKQEAgLTI0NDk4LDYgKzI0NDk4LDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcRHJhZ1N0YXRlLmgiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2Vcd2luXERyYWdDb250cm9s
bGVyV2luLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTY3Mzk1ZTM2MWNlN2M1MDBlZmJh
NzZjOTBlNTEzNDJiYTVkMGZiMC4uNDExOWY2MzIwMmU0MjliYWU2NzI2ZDYwMGFjODkwOTkxMmY1
ZjMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTY3NCw2ICsxNjc0LDcgQEAKIAkJODFCRTIwOTkxMUY0QUI4RDAwOTE1REZB
IC8qIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxQkUyMDk0MTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlLmggKi87IH07CiAJCTgxQkUyMEQyMTFGNEJDMzIwMDkxNURGQSAv
KiBKU0lEQkN1cnNvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MUJFMjBBNzExRjRCNjZGMDA5MTVERkEgLyogSlNJREJDdXJzb3IuY3BwICovOyB9
OwogCQk4MUJFMjBEMzExRjRCQzMyMDA5MTVERkEgLyogSlNJREJDdXJzb3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxQkUyMEE4MTFGNEI2NkYwMDkx
NURGQSAvKiBKU0lEQkN1cnNvci5oICovOyB9OworCQk4MUY2NUVDRjEzNzdDQjBEMDBGRjZGMkQg
LyogRHJhZ1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MUY2NUVDRTEzNzdDQjBEMDBGRjZGMkQgLyogRHJhZ1N0YXRlLmggKi87IH07CiAJCTgy
QUIxNzQzMTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0b3JDU1NBZ2VudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MkFCMTc0MTEyNEI5OUVDMDBD
NTA2OUQgLyogSW5zcGVjdG9yQ1NTQWdlbnQuY3BwICovOyB9OwogCQk4MkFCMTc0NDEyNEI5OUVD
MDBDNTA2OUQgLyogSW5zcGVjdG9yQ1NTQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyQUIxNzQyMTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0
b3JDU1NBZ2VudC5oICovOyB9OwogCQk4MkFCMTc3MzEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVj
dG9yU3R5bGVTaGVldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MkFCMTc2RjEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAgKi87IH07CkBAIC04MjE5LDYgKzgyMjAsNyBAQAogCQk4MUJFMjA5QzExRjRBQkJEMDA5MTVE
RkEgLyogSURCQ3Vyc29yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJREJDdXJzb3IuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MUJFMjBBNzExRjRCNjZGMDA5MTVERkEg
LyogSlNJREJDdXJzb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNJREJDdXJzb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MUJFMjBBODEx
RjRCNjZGMDA5MTVERkEgLyogSlNJREJDdXJzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNJREJDdXJzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODFG
NjVFQ0UxMzc3Q0IwRDAwRkY2RjJEIC8qIERyYWdTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEcmFnU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODJBQjE3NDExMjRCOTlFQzAwQzUwNjlEIC8qIEluc3BlY3RvckNTU0FnZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckNTU0FnZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODJBQjE3NDIxMjRCOTlFQzAwQzUwNjlEIC8qIElu
c3BlY3RvckNTU0FnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3Bl
Y3RvckNTU0FnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgyQUIxNzZGMTI1
QzgyNjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclN0eWxlU2hlZXQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTQxMDUsNiArMTQxMDcsNyBAQAogCQkJCUE3Q0E1OTYyMEIy
N0MxRjIwMEZBMDIxRCAvKiBEcmFnQ2xpZW50LmggKi8sCiAJCQkJQTdDQTU5NUMwQjI3QkQ5RTAw
RkEwMjFEIC8qIERyYWdDb250cm9sbGVyLmNwcCAqLywKIAkJCQlBN0NBNTk1QjBCMjdCRDlFMDBG
QTAyMUQgLyogRHJhZ0NvbnRyb2xsZXIuaCAqLywKKwkJCQk4MUY2NUVDRTEzNzdDQjBEMDBGRjZG
MkQgLyogRHJhZ1N0YXRlLmggKi8sCiAJCQkJMUFGMzI2NzcwRDc4Qjk0NDAwNjhGMEM0IC8qIEVk
aXRvckNsaWVudC5oICovLAogCQkJCTkzQzA5QTgwMEIwNjRGMDAwMDVBQkQ0RCAvKiBFdmVudEhh
bmRsZXIuY3BwICovLAogCQkJCTkzQzA5QTUyMEIwNjREQjMwMDVBQkQ0RCAvKiBFdmVudEhhbmRs
ZXIuaCAqLywKQEAgLTIwNzg2LDYgKzIwNzg5LDcgQEAKIAkJCQlBN0NBNTk1RDBCMjdCRDlFMDBG
QTAyMUQgLyogRHJhZ0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QjZFNjlGMEIy
OTFBOTYwMEQwNTI5RiAvKiBEcmFnRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDRkIzRDIw
QjdFRDEwQTAwNzBDMzJEIC8qIERyYWdJbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODFGNjVF
Q0YxMzc3Q0IwRDAwRkY2RjJEIC8qIERyYWdTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk4
NzcwREMxMjQyQzUzNTAwMjIyNkJBIC8qIERyYXdpbmdCdWZmZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDN0ZBNjIxMEQxRjBDQkQwMERCMjJBOSAvKiBEeW5hbWljTm9kZUxpc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzMzA5REUyMDk5RTY0OTIwMDU2RTU4MSAvKiBFZGl0QWN0aW9uLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggNDk4
MTIyNDE0MmYzMWY1YTkzYzUxNmEyZTRlNjgzNDVkMDU1Yjg4My4uMDYwMTVhYTk2OWQyN2FiY2Nj
NTNhNDk3ZTc3NzY2ZmJhZTk1MjdlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgogI2luY2x1
ZGUgIkRyYWdDbGllbnQuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgorI2luY2x1ZGUgIkRyYWdT
dGF0ZS5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgog
I2luY2x1ZGUgIkVsZW1lbnQuaCIKQEAgLTU3MiwzNyArNTczLDUzIEBAIGJvb2wgRHJhZ0NvbnRy
b2xsZXI6OnRyeURIVE1MRHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEsIERyYWdPcGVyYXRpb24mIG9w
ZXJhdGlvbikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBEcmFnQ29udHJvbGxlcjo6bWF5
U3RhcnREcmFnQXRFdmVudExvY2F0aW9uKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgSW50UG9p
bnQmIGZyYW1lUG9zLCBOb2RlKiBub2RlKQorLy8gRGV0ZXJtaW5lIHdoaWNoIG5vZGUgdGhlIHVz
ZXIgd2FudHMgdG8gZHJhZy4gSW4gb3JkZXIgb2YgcHJpb3JpdHk6CisvLyAxLiBUaGUgdXNlciBp
cyBkcmFnZ2luZyBhIHNlbGVjdGlvbi4KKy8vIDIuIFRoZSB1c2VyIGlzIGRyYWdnaW5nIGFuIGVs
ZW1lbnQgd2hlcmUgZHJhZ2dhYmxlPXRydWUuCisvLyAzLiBUaGUgdXNlciBpcyBkcmFnZ2luZyBh
biBlbGVtZW50IHdoZXJlIGRyYWdnYWJsZSBpcyB0aGUgZGVmYXVsdCBhdXRvIHZhbHVlIChlLmcu
IHVuc2V0KSBhbmQKKy8vIHRoZSBlbGVtZW50IGlzIGVpdGhlciBhbiBhbmNob3IgZWxlbWVudCB3
aXRoIGFuIGhyZWYgYXR0cmlidXRlIG9yIGFuIGltYWdlIGVsZW1lbnQuCitOb2RlKiBEcmFnQ29u
dHJvbGxlcjo6ZHJhZ2dhYmxlTm9kZShjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgY29uc3Qg
RnJhbWUqIHNyYywgTm9kZSogbm9kZSwgRHJhZ1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBB
U1NFUlQoZnJhbWUpOwotICAgIEFTU0VSVChmcmFtZS0+c2V0dGluZ3MoKSk7Ci0KLSAgICBpZiAo
IWZyYW1lLT52aWV3KCkgfHwgIWZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgSGl0VGVzdFJlc3VsdCBtb3VzZURvd25UYXJnZXQgPSBIaXRUZXN0
UmVzdWx0KGZyYW1lUG9zKTsKLQotICAgIG1vdXNlRG93blRhcmdldCA9IGZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWVQb3MsIHRydWUpOwotICAgIGlmIChu
b2RlKQotICAgICAgICBtb3VzZURvd25UYXJnZXQuc2V0SW5uZXJOb25TaGFyZWROb2RlKG5vZGUp
OwotCi0gICAgaWYgKG1vdXNlRG93blRhcmdldC5pbWFnZSgpCi0gICAgICAgICYmICFtb3VzZURv
d25UYXJnZXQuYWJzb2x1dGVJbWFnZVVSTCgpLmlzRW1wdHkoKQotICAgICAgICAmJiBmcmFtZS0+
c2V0dGluZ3MoKS0+bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkKLSAgICAgICAgJiYgbV9kcmFn
U291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIGlmICghbW91c2VEb3duVGFyZ2V0LmFic29sdXRlTGlua1VSTCgpLmlzRW1wdHko
KQotICAgICAgICAmJiBtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uTGluawot
ICAgICAgICAmJiBtb3VzZURvd25UYXJnZXQuaXNMaXZlTGluaygpCi0gICAgICAgICYmIG1vdXNl
RG93blRhcmdldC5VUkxFbGVtZW50KCktPnJlbmRlcmVyKCkgJiYgbW91c2VEb3duVGFyZ2V0LlVS
TEVsZW1lbnQoKS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+dXNlckRyYWcoKSAhPSBEUkFHX05PTkUp
Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICghc3RhdGUubV9kcmFnU3JjTWF5QmVESFRN
TCAmJiAhc3RhdGUubV9kcmFnU3JjTWF5QmVVQSkKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBp
ZiAobW91c2VEb3duVGFyZ2V0LmlzU2VsZWN0ZWQoKQotICAgICAgICAmJiBtX2RyYWdTb3VyY2VB
Y3Rpb24gJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAvLyBGaXJzdCBjaGVjayBpZiB3ZSBhcmUgZHJhZ2dpbmcgYSBzZWxlY3Rpb24uIERyYWdn
aW5nIGFueSBwYXJ0IG9mIGEgc2VsZWN0aW9uIHRha2VzCisgICAgLy8gcHJlY2VkZW5jZSBvdmVy
IGRyYWdnaW5nIGFuIGluZGl2aWR1YWwgZWxlbWVudCB0aGF0IG1heSBiZSBwYXJ0IG9mIGEgc2Vs
ZWN0aW9uLgorICAgIGlmIChzdGF0ZS5tX2RyYWdTcmNNYXlCZVVBICYmIChtX2RyYWdTb3VyY2VB
Y3Rpb24gJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKQorICAgICAgICAmJiBzcmMtPnNlbGVj
dGlvbigpLT5jb250YWlucyhkcmFnT3JpZ2luKSkgeworICAgICAgICBzdGF0ZS5tX2RyYWdUeXBl
ID0gRHJhZ1N0YXRlOjpTRUxFQ1RJT047CisgICAgICAgIHJldHVybiBub2RlOworICAgIH0KIAot
ICAgIHJldHVybiBmYWxzZTsKKyAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5v
ZGUoKSkgeworICAgICAgICBpZiAobm9kZS0+aXNUZXh0Tm9kZSgpICYmIG5vZGUtPmNhblN0YXJ0
U2VsZWN0aW9uKCkpCisgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgaGF2ZSBhIGNsaWNr
IGluIHRoZSB1bnNlbGVjdGVkIHBvcnRpb24gb2YgdGV4dC4gSWYgdGhpcyB0ZXh0IGlzCisgICAg
ICAgICAgICAvLyBzZWxlY3RhYmxlLCB3ZSB3YW50IHRvIHN0YXJ0IHRoZSBzZWxlY3Rpb24gcHJv
Y2VzcyBpbnN0ZWFkIG9mIGxvb2tpbmcgZm9yIGEgbm9kZSB0bworICAgICAgICAgICAgLy8gdHJ5
IHRvIGRyYWcuCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKG5vZGUtPmlzRWxl
bWVudE5vZGUoKSkgeworICAgICAgICAgICAgRVVzZXJEcmFnIGRyYWdNb2RlID0gbm9kZS0+cmVu
ZGVyU3R5bGUoKS0+dXNlckRyYWcoKTsKKyAgICAgICAgICAgIGlmIChzdGF0ZS5tX2RyYWdTcmNN
YXlCZURIVE1MICYmIGRyYWdNb2RlID09IERSQUdfRUxFTUVOVCkgeworICAgICAgICAgICAgICAg
IHN0YXRlLm1fZHJhZ1R5cGUgPSBEcmFnU3RhdGU6OkhUTUw7CisgICAgICAgICAgICAgICAgcmV0
dXJuIG5vZGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3RhdGUubV9kcmFnU3Jj
TWF5QmVVQSAmJiBkcmFnTW9kZSA9PSBEUkFHX0FVVE8pIHsKKyAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmltZ1RhZykKKyAgICAgICAgICAgICAgICAgICAg
JiYgc3JjLT5zZXR0aW5ncygpLT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKQorICAgICAgICAg
ICAgICAgICAgICAmJiAobV9kcmFnU291cmNlQWN0aW9uJiBEcmFnU291cmNlQWN0aW9uSW1hZ2Up
KSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLm1fZHJhZ1R5cGUgPSBEcmFnU3RhdGU6OklN
QUdFOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjphVGFnKQor
ICAgICAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxIVE1MQW5jaG9yRWxlbWVudCo+KG5v
ZGUpLT5pc0xpdmVMaW5rKCkKKyAgICAgICAgICAgICAgICAgICAgJiYgKG1fZHJhZ1NvdXJjZUFj
dGlvbiAmIERyYWdTb3VyY2VBY3Rpb25MaW5rKSkgeworICAgICAgICAgICAgICAgICAgICBzdGF0
ZS5tX2RyYWdUeXBlID0gRHJhZ1N0YXRlOjpMSU5LOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbm9kZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBDYWNoZWRJbWFnZSogZ2V0Q2FjaGVkSW1h
Z2UoRWxlbWVudCogZWxlbWVudCkKQEAgLTY2NCwxOSArNjgxLDIwIEBAIHN0YXRpYyBJbnRQb2lu
dCBkcmFnTG9jRm9yU2VsZWN0aW9uRHJhZyhGcmFtZSogc3JjKQogICAgIHJldHVybiBJbnRQb2lu
dCh4cG9zLCB5cG9zKTsKIH0KIAotYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1l
KiBzcmMsIENsaXBib2FyZCogY2xpcGJvYXJkLCBEcmFnT3BlcmF0aW9uIHNyY09wLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4s
IGJvb2wgaXNESFRNTERyYWcpCitib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUq
IHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbiBzcmNPcCwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2lu
KQogewogICAgIEFTU0VSVChzcmMpOwotICAgIEFTU0VSVChjbGlwYm9hcmQpOwogCiAgICAgaWYg
KCFzcmMtPnZpZXcoKSB8fCAhc3JjLT5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgSGl0VGVzdFJlc3VsdCBkcmFnU291cmNlID0gSGl0VGVzdFJlc3VsdChk
cmFnT3JpZ2luKTsKLSAgICBkcmFnU291cmNlID0gc3JjLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVz
dFJlc3VsdEF0UG9pbnQoZHJhZ09yaWdpbiwgdHJ1ZSk7Ci0gICAgS1VSTCBsaW5rVVJMID0gZHJh
Z1NvdXJjZS5hYnNvbHV0ZUxpbmtVUkwoKTsKLSAgICBLVVJMIGltYWdlVVJMID0gZHJhZ1NvdXJj
ZS5hYnNvbHV0ZUltYWdlVVJMKCk7Ci0gICAgYm9vbCBpc1NlbGVjdGVkID0gZHJhZ1NvdXJjZS5p
c1NlbGVjdGVkKCk7CisgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0gc3JjLT5ldmVu
dEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZHJhZ09yaWdpbiwgdHJ1ZSk7CisgICAg
Ly8gU2FuaXR5IGNoZWNrOiB0aGUgb3JpZ2luYWwgbm9kZSB3ZSB0cnkgdG8gZHJhZyBzaG91bGQg
c3RpbGwgYmUgdW5kZXIgdGhlIGRyYWcgb3JpZ2luLgorICAgIGlmICghc3RhdGUubV9kcmFnU3Jj
LT5jb250YWlucyhoaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgpKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgS1VSTCBsaW5rVVJMID0gaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwo
KTsKKyAgICBLVVJMIGltYWdlVVJMID0gaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMKCk7
CiAKICAgICBJbnRQb2ludCBtb3VzZURyYWdnZWRQb2ludCA9IHNyYy0+dmlldygpLT53aW5kb3dU
b0NvbnRlbnRzKGRyYWdFdmVudC5wb3MoKSk7CiAKQEAgLTY4NywxNCArNzA1LDE2IEBAIGJvb2wg
RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlwYm9hcmQqIGNsaXBib2Fy
ZCwgRHJhZ09wZXJhdGlvbiBzCiAgICAgSW50UG9pbnQgZHJhZ0xvYygwLCAwKTsKICAgICBJbnRQ
b2ludCBkcmFnSW1hZ2VPZmZzZXQoMCwgMCk7CiAKLSAgICBpZiAoaXNESFRNTERyYWcpCisgICAg
Q2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBzdGF0ZS5tX2RyYWdDbGlwYm9hcmQuZ2V0KCk7CisKKyAg
ICBpZiAoc3RhdGUubV9kcmFnVHlwZSA9PSBEcmFnU3RhdGU6OkhUTUwpCiAgICAgICAgIGRyYWdJ
bWFnZSA9IGNsaXBib2FyZC0+Y3JlYXRlRHJhZ0ltYWdlKGRyYWdJbWFnZU9mZnNldCk7Ci0gICAg
ZWxzZSB7Ci0gICAgICAgIC8vIFRoaXMgZHJhZyBvcGVyYXRpb24gaXMgbm90IGEgREhUTUwgZHJh
ZyBhbmQgbWF5IGdvIG91dHNpZGUgdGhlIFdlYlZpZXcuCisKKyAgICAvLyBMaW5rIG9yIGltYWdl
IGRyYWdzIGFyZSBhbGxvd2VkIHRvIGdvIG91dCB0aGUgd2VidmlldyBieSBkZWZhdWx0LgorICAg
IGlmICghbGlua1VSTC5pc0VtcHR5KCkgfHwgIWltYWdlVVJMLmlzRW1wdHkoKSkKICAgICAgICAg
Ly8gV2UgcHJvdmlkZSBhIGRlZmF1bHQgc2V0IG9mIGFsbG93ZWQgZHJhZyBvcGVyYXRpb25zIHRo
YXQgZm9sbG93cyBmcm9tOgogICAgICAgICAvLyBodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dz
ZXIvdHJ1bmsvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tP3Jldj00ODUyNiNMMzQz
MAogICAgICAgICBtX3NvdXJjZURyYWdPcGVyYXRpb24gPSAoRHJhZ09wZXJhdGlvbikoRHJhZ09w
ZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uQ29weSk7Ci0gICAgfQogCiAgICAgLy8gV2Ug
YWxsb3cgREhUTUwvSlMgdG8gc2V0IHRoZSBkcmFnIGltYWdlLCBldmVuIGlmIGl0cyBhIGxpbmss
IGltYWdlIG9yIHRleHQgd2UncmUgZHJhZ2dpbmcuCiAgICAgLy8gVGhpcyBpcyBpbiB0aGUgc3Bp
cml0IG9mIHRoZSBJRSBBUEksIHdoaWNoIGFsbG93cyBvdmVycmlkaW5nIG9mIHBhc3RlYm9hcmQg
ZGF0YSBhbmQgRHJhZ09wLgpAQCAtNzA1LDM1ICs3MjUsNTUgQEAgYm9vbCBEcmFnQ29udHJvbGxl
cjo6c3RhcnREcmFnKEZyYW1lKiBzcmMsIENsaXBib2FyZCogY2xpcGJvYXJkLCBEcmFnT3BlcmF0
aW9uIHMKIAogICAgIGJvb2wgc3RhcnRlZERyYWcgPSB0cnVlOyAvLyBvcHRpbWlzbSAtIHdlIGFs
bW9zdCBhbHdheXMgbWFuYWdlIHRvIHN0YXJ0IHRoZSBkcmFnCiAKLSAgICBOb2RlKiBub2RlID0g
ZHJhZ1NvdXJjZS5pbm5lck5vblNoYXJlZE5vZGUoKTsKLQorICAgIE5vZGUqIG5vZGUgPSBzdGF0
ZS5tX2RyYWdTcmMuZ2V0KCk7CiAgICAgSW1hZ2UqIGltYWdlID0gZ2V0SW1hZ2Uoc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KG5vZGUpKTsKLSAgICBpZiAoIWltYWdlVVJMLmlzRW1wdHkoKSAmJiBub2Rl
ICYmIG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiBpbWFnZQotICAgICAgICAgICAgJiYgKG1fZHJh
Z1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25JbWFnZSkpIHsKKworICAgIGlmIChzdGF0
ZS5tX2RyYWdUeXBlID09IERyYWdTdGF0ZTo6U0VMRUNUSU9OKSB7CisgICAgICAgIGlmICghY2xp
cGJvYXJkLT5oYXNEYXRhKCkpIHsKKyAgICAgICAgICAgIGlmIChpc05vZGVJblRleHRGb3JtQ29u
dHJvbChzcmMtPnNlbGVjdGlvbigpLT5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCkpKQorICAgICAg
ICAgICAgICAgIGNsaXBib2FyZC0+d3JpdGVQbGFpblRleHQoc3JjLT5lZGl0b3IoKS0+c2VsZWN0
ZWRUZXh0KCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJh
bmdlPiBzZWxlY3Rpb25SYW5nZSA9IHNyYy0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdl
KCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHNlbGVjdGlvblJhbmdlKTsKKworICAgICAgICAg
ICAgICAgIGNsaXBib2FyZC0+d3JpdGVSYW5nZShzZWxlY3Rpb25SYW5nZS5nZXQoKSwgc3JjKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1E
cmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24sIGRyYWdPcmlnaW4sIGNs
aXBib2FyZCk7CisgICAgICAgIGlmICghZHJhZ0ltYWdlKSB7CisgICAgICAgICAgICBkcmFnSW1h
Z2UgPSBjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24oc3JjKTsKKyAgICAgICAgICAgIGRyYWdM
b2MgPSBkcmFnTG9jRm9yU2VsZWN0aW9uRHJhZyhzcmMpOworICAgICAgICAgICAgbV9kcmFnT2Zm
c2V0ID0gSW50UG9pbnQoKGludCkoZHJhZ09yaWdpbi54KCkgLSBkcmFnTG9jLngoKSksIChpbnQp
KGRyYWdPcmlnaW4ueSgpIC0gZHJhZ0xvYy55KCkpKTsKKyAgICAgICAgfQorICAgICAgICBkb1N5
c3RlbURyYWcoZHJhZ0ltYWdlLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQsIHNyYywg
ZmFsc2UpOworICAgIH0gZWxzZSBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VB
Y3Rpb25JbWFnZSkKKyAgICAgICAgICAgICAgICYmICFpbWFnZVVSTC5pc0VtcHR5KCkgJiYgbm9k
ZSAmJiBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgaW1hZ2UpIHsKKyAgICAgICAgLy8gV2UgaW50
ZW50aW9uYWxseSBkb24ndCBjaGVjayBtX2RyYWdUeXBlIGZvciBpbWFnZXMgYW5kIGxpbmtzLCBz
byB0aGF0IGltYWdlcyBhbmQgbGlua3MKKyAgICAgICAgLy8gZmxhZ2dlZCBhcyBkcmFnZ2FibGUg
c3RpbGwgZ2V0IGltYWdlIGFuZCBsaW5rLXNwZWNpZmljIGJlaGF2aW9yLgogICAgICAgICAvLyBX
ZSBzaG91bGRuJ3QgYmUgc3RhcnRpbmcgYSBkcmFnIGZvciBhbiBpbWFnZSB0aGF0IGNhbid0IHBy
b3ZpZGUgYW4gZXh0ZW5zaW9uLgogICAgICAgICAvLyBUaGlzIGlzIGFuIGVhcmx5IGRldGVjdGlv
biBmb3IgcHJvYmxlbXMgZW5jb3VudGVyZWQgbGF0ZXIgdXBvbiBkcm9wLgogICAgICAgICBBU1NF
UlQoIWltYWdlLT5maWxlbmFtZUV4dGVuc2lvbigpLmlzRW1wdHkoKSk7CiAgICAgICAgIEVsZW1l
bnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7CiAgICAgICAgIGlmICgh
Y2xpcGJvYXJkLT5oYXNEYXRhKCkpIHsKICAgICAgICAgICAgIG1fZHJhZ2dpbmdJbWFnZVVSTCA9
IGltYWdlVVJMOwotICAgICAgICAgICAgcHJlcGFyZUNsaXBib2FyZEZvckltYWdlRHJhZyhzcmMs
IGNsaXBib2FyZCwgZWxlbWVudCwgbGlua1VSTCwgaW1hZ2VVUkwsIGRyYWdTb3VyY2UuYWx0RGlz
cGxheVN0cmluZygpKTsKKyAgICAgICAgICAgIHByZXBhcmVDbGlwYm9hcmRGb3JJbWFnZURyYWco
c3JjLCBjbGlwYm9hcmQsIGVsZW1lbnQsIGxpbmtVUkwsIGltYWdlVVJMLCBoaXRUZXN0UmVzdWx0
LmFsdERpc3BsYXlTdHJpbmcoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBtX2NsaWVudC0+d2ls
bFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25JbWFnZSwgZHJhZ09yaWdp
biwgY2xpcGJvYXJkKTsKIAogICAgICAgICBpZiAoIWRyYWdJbWFnZSkgewotICAgICAgICAgICAg
SW50UmVjdCBpbWFnZVJlY3QgPSBkcmFnU291cmNlLmltYWdlUmVjdCgpOworICAgICAgICAgICAg
SW50UmVjdCBpbWFnZVJlY3QgPSBoaXRUZXN0UmVzdWx0LmltYWdlUmVjdCgpOwogICAgICAgICAg
ICAgaW1hZ2VSZWN0LnNldExvY2F0aW9uKG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+d2lu
ZG93VG9Db250ZW50cyhzcmMtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhpbWFnZVJlY3QubG9j
YXRpb24oKSkpKTsKLSAgICAgICAgICAgIGRvSW1hZ2VEcmFnKGVsZW1lbnQsIGRyYWdPcmlnaW4s
IGRyYWdTb3VyY2UuaW1hZ2VSZWN0KCksIGNsaXBib2FyZCwgc3JjLCBtX2RyYWdPZmZzZXQpOwor
ICAgICAgICAgICAgZG9JbWFnZURyYWcoZWxlbWVudCwgZHJhZ09yaWdpbiwgaGl0VGVzdFJlc3Vs
dC5pbWFnZVJlY3QoKSwgY2xpcGJvYXJkLCBzcmMsIG1fZHJhZ09mZnNldCk7CiAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgLy8gREhUTUwgZGVmaW5lZCBkcmFnIGltYWdlCiAgICAgICAgICAg
ICBkb1N5c3RlbURyYWcoZHJhZ0ltYWdlLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQs
IHNyYywgZmFsc2UpOwogCi0gICAgfSBlbHNlIGlmICghbGlua1VSTC5pc0VtcHR5KCkgJiYgKG1f
ZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25MaW5rKSkgeworICAgIH0gZWxzZSBp
ZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25MaW5rKSAmJiAhbGlua1VS
TC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKCFjbGlwYm9hcmQtPmhhc0RhdGEoKSkKICAgICAg
ICAgICAgIC8vIFNpbXBsaWZ5IHdoaXRlc3BhY2Ugc28gdGhlIHRpdGxlIHB1dCBvbiB0aGUgY2xp
cGJvYXJkIHJlc2VtYmxlcyB3aGF0IHRoZSB1c2VyIHNlZXMKICAgICAgICAgICAgIC8vIG9uIHRo
ZSB3ZWIgcGFnZS4gVGhpcyBpbmNsdWRlcyByZXBsYWNpbmcgbmV3bGluZXMgd2l0aCBzcGFjZXMu
Ci0gICAgICAgICAgICBjbGlwYm9hcmQtPndyaXRlVVJMKGxpbmtVUkwsIGRyYWdTb3VyY2UudGV4
dENvbnRlbnQoKS5zaW1wbGlmeVdoaXRlU3BhY2UoKSwgc3JjKTsKKyAgICAgICAgICAgIGNsaXBi
b2FyZC0+d3JpdGVVUkwobGlua1VSTCwgaGl0VGVzdFJlc3VsdC50ZXh0Q29udGVudCgpLnNpbXBs
aWZ5V2hpdGVTcGFjZSgpLCBzcmMpOwogCiAgICAgICAgIGlmIChzcmMtPnNlbGVjdGlvbigpLT5p
c0NhcmV0KCkgJiYgc3JjLT5zZWxlY3Rpb24oKS0+aXNDb250ZW50RWRpdGFibGUoKSkgewogICAg
ICAgICAgICAgLy8gYSB1c2VyIGNhbiBpbml0aWF0ZSBhIGRyYWcgb24gYSBsaW5rIHdpdGhvdXQg
aGF2aW5nIGFueSB0ZXh0CkBAIC03NDcsMzcgKzc4NywxOCBAQCBib29sIERyYWdDb250cm9sbGVy
OjpzdGFydERyYWcoRnJhbWUqIHNyYywgQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIERyYWdPcGVyYXRp
b24gcwogCiAgICAgICAgIG1fY2xpZW50LT53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJh
Z1NvdXJjZUFjdGlvbkxpbmssIGRyYWdPcmlnaW4sIGNsaXBib2FyZCk7CiAgICAgICAgIGlmICgh
ZHJhZ0ltYWdlKSB7Ci0gICAgICAgICAgICBkcmFnSW1hZ2UgPSBjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKGxpbmtVUkwsIGRyYWdTb3VyY2UudGV4dENvbnRlbnQoKSwgc3JjKTsKKyAgICAgICAgICAg
IGRyYWdJbWFnZSA9IGNyZWF0ZURyYWdJbWFnZUZvckxpbmsobGlua1VSTCwgaGl0VGVzdFJlc3Vs
dC50ZXh0Q29udGVudCgpLCBzcmMpOwogICAgICAgICAgICAgSW50U2l6ZSBzaXplID0gZHJhZ0lt
YWdlU2l6ZShkcmFnSW1hZ2UpOwogICAgICAgICAgICAgbV9kcmFnT2Zmc2V0ID0gSW50UG9pbnQo
LXNpemUud2lkdGgoKSAvIDIsIC1MaW5rRHJhZ0JvcmRlckluc2V0KTsKICAgICAgICAgICAgIGRy
YWdMb2MgPSBJbnRQb2ludChtb3VzZURyYWdnZWRQb2ludC54KCkgKyBtX2RyYWdPZmZzZXQueCgp
LCBtb3VzZURyYWdnZWRQb2ludC55KCkgKyBtX2RyYWdPZmZzZXQueSgpKTsKICAgICAgICAgfQog
ICAgICAgICBkb1N5c3RlbURyYWcoZHJhZ0ltYWdlLCBkcmFnTG9jLCBtb3VzZURyYWdnZWRQb2lu
dCwgY2xpcGJvYXJkLCBzcmMsIHRydWUpOwotICAgIH0gZWxzZSBpZiAoaXNTZWxlY3RlZCAmJiAo
bV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikpIHsKLSAgICAg
ICAgaWYgKCFjbGlwYm9hcmQtPmhhc0RhdGEoKSkgewotICAgICAgICAgICAgaWYgKGlzTm9kZUlu
VGV4dEZvcm1Db250cm9sKHNyYy0+c2VsZWN0aW9uKCktPnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUo
KSkpCi0gICAgICAgICAgICAgICAgY2xpcGJvYXJkLT53cml0ZVBsYWluVGV4dChzcmMtPmVkaXRv
cigpLT5zZWxlY3RlZFRleHQoKSk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvblJhbmdlID0gc3JjLT5zZWxlY3Rpb24oKS0+dG9Ob3Jt
YWxpemVkUmFuZ2UoKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoc2VsZWN0aW9uUmFuZ2UpOwot
Ci0gICAgICAgICAgICAgICAgY2xpcGJvYXJkLT53cml0ZVJhbmdlKHNlbGVjdGlvblJhbmdlLmdl
dCgpLCBzcmMpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIG1fY2xpZW50LT53
aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbiwgZHJh
Z09yaWdpbiwgY2xpcGJvYXJkKTsKLSAgICAgICAgaWYgKCFkcmFnSW1hZ2UpIHsKLSAgICAgICAg
ICAgIGRyYWdJbWFnZSA9IGNyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlvbihzcmMpOwotICAgICAg
ICAgICAgZHJhZ0xvYyA9IGRyYWdMb2NGb3JTZWxlY3Rpb25EcmFnKHNyYyk7Ci0gICAgICAgICAg
ICBtX2RyYWdPZmZzZXQgPSBJbnRQb2ludCgoaW50KShkcmFnT3JpZ2luLngoKSAtIGRyYWdMb2Mu
eCgpKSwgKGludCkoZHJhZ09yaWdpbi55KCkgLSBkcmFnTG9jLnkoKSkpOwotICAgICAgICB9Ci0g
ICAgICAgIGRvU3lzdGVtRHJhZyhkcmFnSW1hZ2UsIGRyYWdMb2MsIGRyYWdPcmlnaW4sIGNsaXBi
b2FyZCwgc3JjLCBmYWxzZSk7Ci0gICAgfSBlbHNlIGlmIChpc0RIVE1MRHJhZykgeworICAgIH0g
ZWxzZSBpZiAoc3RhdGUubV9kcmFnVHlwZSA9PSBEcmFnU3RhdGU6OkhUTUwpIHsKICAgICAgICAg
QVNTRVJUKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25ESFRNTCk7CiAgICAg
ICAgIG1fY2xpZW50LT53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlv
bkRIVE1MLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQpOwogICAgICAgICBkb1N5c3RlbURyYWcoZHJh
Z0ltYWdlLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQsIHNyYywgZmFsc2UpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIC8vIE9ubHkgd2F5IEkga25vdyB0byBnZXQgaGVyZSBpcyBpZiB0
byBnZXQgaGVyZSBpcyBpZiB0aGUgb3JpZ2luYWwgZWxlbWVudCBjbGlja2VkIG9uIGluIHRoZSBt
b3VzZWRvd24gaXMgbm8gbG9uZ2VyCi0gICAgICAgIC8vIHVuZGVyIHRoZSBtb3VzZWRvd24gcG9p
bnQsIHNvIGxpbmtVUkwsIGltYWdlVVJMIGFuZCBpc1NlbGVjdGVkIGFyZSBhbGwgZmFsc2UvZW1w
dHkuCisgICAgICAgIC8vIFRoZXJlIHdhcyBubyBsaW5rIG9yIGltYWdlIFVSTCBmb3Igc29tZSBy
ZWFzb24gaWYgd2UgZ290IGhlcmUuCiAgICAgICAgIHN0YXJ0ZWREcmFnID0gZmFsc2U7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKaW5kZXggYmUxZTQ1Njk1YzY2YTg1
Mzg5ZDViY2VjMzg3NTY0Y2Q0N2Y2MjFmMi4uM2Q1Mjc4MGEzM2E1YmQzYjIzOGRjOThiZTQ0MGZh
M2UwNmYzODdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaApAQCAtMzcsNiAr
MzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRG9jdW1lbnQ7CiAgICAgY2xh
c3MgRHJhZ0NsaWVudDsKICAgICBjbGFzcyBEcmFnRGF0YTsKKyAgICBjbGFzcyBEcmFnU3RhdGU7
CiAgICAgY2xhc3MgRWxlbWVudDsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBGcmFtZVNl
bGVjdGlvbjsKQEAgLTc1LDEyICs3NiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IERyYWdEZXN0aW5hdGlvbkFjdGlvbiBkcmFnRGVzdGluYXRpb25BY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbjsgfQogICAgICAgICBEcmFnU291cmNlQWN0aW9u
IGRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbihjb25zdCBJbnRQb2ludCYgcGFnZVBvaW50KTsKICAg
ICAgICAgCi0gICAgICAgIGJvb2wgbWF5U3RhcnREcmFnQXRFdmVudExvY2F0aW9uKGNvbnN0IEZy
YW1lKiwgY29uc3QgSW50UG9pbnQmIGZyYW1lUG9zLCBOb2RlKik7CisgICAgICAgIE5vZGUqIGRy
YWdnYWJsZU5vZGUoY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIGNvbnN0IEZyYW1lKiwgTm9k
ZSosIERyYWdTdGF0ZSYpIGNvbnN0OworCiAgICAgICAgIHZvaWQgZHJhZ0VuZGVkKCk7CiAgICAg
ICAgIAogICAgICAgICB2b2lkIHBsYWNlRHJhZ0NhcmV0KGNvbnN0IEludFBvaW50Jik7CiAgICAg
ICAgIAotICAgICAgICBib29sIHN0YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlwYm9hcmQqLCBEcmFn
T3BlcmF0aW9uIHNyY09wLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29u
c3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIGJvb2wgaXNESFRNTERyYWcpOworICAgICAgICBib29s
IHN0YXJ0RHJhZyhGcmFtZSogc3JjLCBjb25zdCBEcmFnU3RhdGUmLCBEcmFnT3BlcmF0aW9uIHNy
Y09wLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQm
IGRyYWdPcmlnaW4pOwogICAgICAgICBzdGF0aWMgY29uc3QgSW50U2l6ZSYgbWF4RHJhZ0ltYWdl
U2l6ZSgpOwogICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBMaW5rRHJhZ0JvcmRl
ckluc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ1N0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmY1OTliNzAyMjhiMTg1
NmFmYmQ4ODlhMDY4NzczMTBkYzNmMTM3YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ1N0YXRlLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERyYWdTdGF0ZV9oCisjZGVmaW5l
IERyYWdTdGF0ZV9oCisKKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgorI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBDbGlwYm9hcmQ7CitjbGFzcyBOb2RlOworCitzdHJ1Y3QgRHJh
Z1N0YXRlIHsgCisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHJhZ1N0YXRlKTsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsgCitwdWJsaWM6IAorICAgIGVudW0gRHJhZ1R5cGUgeworICAg
ICAgICBTRUxFQ1RJT04sCisgICAgICAgIEhUTUwsIC8vIEFuIEhUTUwgZWxlbWVudCB3aXRoIGRy
YWdnYWJsZT10cnVlLgorICAgICAgICBJTUFHRSwKKyAgICAgICAgTElOSywKKyAgICB9OworCisg
ICAgRHJhZ1N0YXRlKCkgeyB9IAorICAgIC8vIEVsZW1lbnQgdGhhdCBtYXkgYmUgYSBkcmFnIHNv
dXJjZSwgZm9yIHRoZSBjdXJyZW50IG1vdXNlIGdlc3R1cmUgLgorICAgIFJlZlB0cjxOb2RlPiBt
X2RyYWdTcmM7CisgICAgRHJhZ1R5cGUgbV9kcmFnVHlwZTsKKyAgICAvLyBBcmUgREhUTUwgYW5k
L29yIHRoZSB1c2VyIGFnZW50IGFsbG93ZWQgdG8gZHJhZyBvdXQ/IAorICAgIGJvb2wgbV9kcmFn
U3JjTWF5QmVESFRNTDsgCisgICAgYm9vbCBtX2RyYWdTcmNNYXlCZVVBOworICAgIC8vIFVzZWQg
YnkgdGhlIGRyYWcgc291cmNlIHRvIHNldCBhbGxvd2VkIHNvdXJjZSBvcGVyYXRpb25zLCBkYXRh
LCBldGMuCisgICAgUmVmUHRyPENsaXBib2FyZD4gbV9kcmFnQ2xpcGJvYXJkOworfTsgCisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIERyYWdTdGF0ZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZTY2Mjg1ZjFiZTVkODU0NDIzNGE0YjRiYzk2MzY4
MjhjMTM2MGRjYi4uYWRmZTY2ZmRiNjdhZWQzOTc1ZDc3ZjcxN2IzNTdiNDNmNmQ2NmZlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIkN1cnNvckxpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRyYWdD
b250cm9sbGVyLmgiCisjaW5jbHVkZSAiRHJhZ1N0YXRlLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgi
CiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV2ZW50UXVldWUuaCIKQEAgLTIx
Nyw5ICsyMTgsOSBAQCBFdmVudEhhbmRsZXI6On5FdmVudEhhbmRsZXIoKQogfQogICAgIAogI2lm
IEVOQUJMRShEUkFHX1NVUFBPUlQpCi1FdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlckRyYWdTdGF0
ZSYgRXZlbnRIYW5kbGVyOjpkcmFnU3RhdGUoKQorRHJhZ1N0YXRlJiBFdmVudEhhbmRsZXI6OmRy
YWdTdGF0ZSgpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChFdmVudEhhbmRsZXJEcmFnU3Rh
dGUsIHN0YXRlLCAoKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChEcmFnU3RhdGUsIHN0YXRl
LCAoKSk7CiAgICAgcmV0dXJuIHN0YXRlOwogfQogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBP
UlQpCkBAIC01ODUsMjEgKzU4NiwyMyBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZXZlbnRNYXlTdGFy
dERyYWcoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkgY29uc3QKICAgICBpZiAoZXZl
bnQuYnV0dG9uKCkgIT0gTGVmdEJ1dHRvbiB8fCBldmVudC5jbGlja0NvdW50KCkgIT0gMSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIGJvb2wgREhUTUxGbGFnOwotICAgIGJvb2wg
VUFGbGFnOwotICAgIGFsbG93REhUTUxEcmFnKERIVE1MRmxhZywgVUFGbGFnKTsKLSAgICBpZiAo
IURIVE1MRmxhZyAmJiAhVUFGbGFnKQorICAgIERyYWdTdGF0ZSBzdGF0ZTsKKyAgICBhbGxvd0RI
VE1MRHJhZyhzdGF0ZS5tX2RyYWdTcmNNYXlCZURIVE1MLCBzdGF0ZS5tX2RyYWdTcmNNYXlCZVVB
KTsKKyAgICBpZiAoIXN0YXRlLm1fZHJhZ1NyY01heUJlREhUTUwgJiYgIXN0YXRlLm1fZHJhZ1Ny
Y01heUJlVUEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEZyYW1lVmlldyogdmlldyA9
IG1fZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAorICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RS
ZXF1ZXN0OjpSZWFkT25seSk7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmlldy0+d2luZG93
VG9Db250ZW50cyhldmVudC5wb3MoKSkpOwogICAgIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigp
LT5sYXllcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7Ci0gICAgYm9vbCBzcmNJc0RIVE1M
OwotICAgIHJldHVybiByZXN1bHQuaW5uZXJOb2RlKCkgJiYgcmVzdWx0LmlubmVyTm9kZSgpLT5y
ZW5kZXJlcigpLT5kcmFnZ2FibGVOb2RlKERIVE1MRmxhZywgVUFGbGFnLCByZXN1bHQucG9pbnQo
KS54KCksIHJlc3VsdC5wb2ludCgpLnkoKSwgc3JjSXNESFRNTCk7CisgICAgcmV0dXJuIHJlc3Vs
dC5pbm5lck5vZGUoKSAmJiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5kcmFnZ2FibGVOb2RlKHJl
c3VsdC5wb2ludCgpLCBtX2ZyYW1lLCByZXN1bHQuaW5uZXJOb2RlKCksIHN0YXRlKTsKIH0KIAog
dm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZygpCkBAIC0yNjIz
LDEyICsyNjI2LDE5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVk
KGNvbnN0IEludFBvaW50JiBkcmFnVmlld3BvcnRMb2NhdGlvbikKICAgICBJbnRTaXplIGRlbHRh
ID0gZHJhZ0xvY2F0aW9uIC0gbV9tb3VzZURvd25Qb3M7CiAgICAgCiAgICAgaW50IHRocmVzaG9s
ZCA9IEdlbmVyYWxEcmFnSHlzdGVyZXNpczsKLSAgICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3Jj
SXNJbWFnZSkKKyAgICBzd2l0Y2ggKGRyYWdTdGF0ZSgpLm1fZHJhZ1R5cGUpIHsKKyAgICBjYXNl
IERyYWdTdGF0ZTo6U0VMRUNUSU9OOgorICAgICAgICB0aHJlc2hvbGQgPSBUZXh0RHJhZ0h5c3Rl
cmVzaXM7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRHJhZ1N0YXRlOjpJTUFHRToKICAgICAg
ICAgdGhyZXNob2xkID0gSW1hZ2VEcmFnSHlzdGVyZXNpczsKLSAgICBlbHNlIGlmIChkcmFnU3Rh
dGUoKS5tX2RyYWdTcmNJc0xpbmspCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRHJhZ1N0YXRl
OjpMSU5LOgogICAgICAgICB0aHJlc2hvbGQgPSBMaW5rRHJhZ0h5c3RlcmVzaXM7Ci0gICAgZWxz
ZSBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjSW5TZWxlY3Rpb24pCi0gICAgICAgIHRocmVzaG9s
ZCA9IFRleHREcmFnSHlzdGVyZXNpczsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgYnJlYWs7CisgICAgfQogICAgIAogICAgIHJldHVybiBhYnMoZGVsdGEud2lkdGgoKSkg
Pj0gdGhyZXNob2xkIHx8IGFicyhkZWx0YS5oZWlnaHQoKSkgPj0gdGhyZXNob2xkOwogfQpAQCAt
MjYzOSwxNCArMjY0OSw2IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpmcmVlQ2xpcGJvYXJkKCkKICAg
ICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnQ2xpcGJvYXJkLT5zZXRBY2Nlc3NQb2xpY3koQ2xpcGJv
YXJkTnVtYik7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpzaG91bGREcmFnQXV0b05vZGUoTm9k
ZSogbm9kZSwgY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAotewotICAgIGlmICghbm9kZSB8
fCAhbV9mcmFtZS0+dmlldygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgUGFnZSogcGFn
ZSA9IG1fZnJhbWUtPnBhZ2UoKTsKLSAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5kcmFnQ29udHJv
bGxlcigpLT5tYXlTdGFydERyYWdBdEV2ZW50TG9jYXRpb24obV9mcmFtZSwgcG9pbnQsIG5vZGUp
OwotfQotCiB2b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCwgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCiB7CiAgICAgaWYg
KGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyAmJiBkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1M
KSB7CkBAIC0yNjk0LDMwICsyNjk2LDE4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFn
KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogICAgICAgICBIaXRU
ZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSk7CiAgICAgICAgIEhp
dFRlc3RSZXN1bHQgcmVzdWx0KG1fbW91c2VEb3duUG9zKTsKICAgICAgICAgbV9mcmFtZS0+Y29u
dGVudFJlbmRlcmVyKCktPmxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKKwogICAg
ICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwotICAgICAgICBpZiAobm9kZSAm
JiBub2RlLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0g
bm9kZS0+cmVuZGVyZXIoKS0+ZHJhZ2dhYmxlTm9kZShkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlC
ZURIVE1MLCBkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZVVBLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX21vdXNl
RG93blBvcy54KCksIG1fbW91c2VEb3duUG9zLnkoKSwgZHJhZ1N0YXRlKCkubV9kcmFnU3JjSXNE
SFRNTCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyA9
IDA7CisgICAgICAgIGlmIChub2RlICYmIG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgICAgIGRy
YWdTdGF0ZSgpLm1fZHJhZ1NyYyA9IG1fZnJhbWUtPnBhZ2UoKS0+ZHJhZ0NvbnRyb2xsZXIoKS0+
ZHJhZ2dhYmxlTm9kZShtX21vdXNlRG93blBvcywgbV9mcmFtZSwgbm9kZSwgZHJhZ1N0YXRlKCkp
OwogICAgICAgICAKICAgICAgICAgaWYgKCFkcmFnU3RhdGUoKS5tX2RyYWdTcmMpCiAgICAgICAg
ICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOyAvLyBubyBlbGVtZW50IGlzIGRy
YWdnYWJsZQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8vIHJlbWVtYmVyIHNvbWUgZmFj
dHMgYWJvdXQgdGhpcyBzb3VyY2UsIHdoaWxlIHdlIGhhdmUgYSBIaXRUZXN0UmVzdWx0IGhhbmR5
Ci0gICAgICAgICAgICBub2RlID0gcmVzdWx0LlVSTEVsZW1lbnQoKTsKLSAgICAgICAgICAgIGRy
YWdTdGF0ZSgpLm1fZHJhZ1NyY0lzTGluayA9IG5vZGUgJiYgbm9kZS0+aXNMaW5rKCk7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIG5vZGUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7
Ci0gICAgICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdTcmNJc0ltYWdlID0gbm9kZSAmJiBub2Rl
LT5yZW5kZXJlcigpICYmIG5vZGUtPnJlbmRlcmVyKCktPmlzSW1hZ2UoKTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjSW5TZWxlY3Rpb24gPSBtX2ZyYW1l
LT5zZWxlY3Rpb24oKS0+Y29udGFpbnMobV9tb3VzZURvd25Qb3MpOwotICAgICAgICB9ICAgICAg
ICAgICAgICAgIAogICAgIH0KICAgICAKICAgICAvLyBGb3IgZHJhZ3Mgc3RhcnRpbmcgaW4gdGhl
IHNlbGVjdGlvbiwgdGhlIHVzZXIgbXVzdCB3YWl0IGJldHdlZW4gdGhlIG1vdXNlZG93biBhbmQg
bW91c2VkcmFnLAogICAgIC8vIG9yIGVsc2Ugd2UgYmFpbCBvbiB0aGUgZHJhZ2dpbmcgc3R1ZmYg
YW5kIGFsbG93IHNlbGVjdGlvbiB0byBvY2N1cgotICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0
RHJhZyAmJiAhZHJhZ1N0YXRlKCkubV9kcmFnU3JjSXNJbWFnZSAmJiBkcmFnU3RhdGUoKS5tX2Ry
YWdTcmNJblNlbGVjdGlvbiAmJiBldmVudC5ldmVudCgpLnRpbWVzdGFtcCgpIC0gbV9tb3VzZURv
d25UaW1lc3RhbXAgPCBUZXh0RHJhZ0RlbGF5KSB7CisgICAgaWYgKG1fbW91c2VEb3duTWF5U3Rh
cnREcmFnICYmIGRyYWdTdGF0ZSgpLm1fZHJhZ1R5cGUgPT0gRHJhZ1N0YXRlOjpTRUxFQ1RJT04g
JiYgZXZlbnQuZXZlbnQoKS50aW1lc3RhbXAoKSAtIG1fbW91c2VEb3duVGltZXN0YW1wIDwgVGV4
dERyYWdEZWxheSkgewogICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOwog
ICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdTcmMgPSAwOwogICAgICAgICAvLyAuLi5idXQgaWYg
dGhpcyB3YXMgdGhlIGZpcnN0IGNsaWNrIGluIHRoZSB3aW5kb3csIHdlIGRvbid0IGV2ZW4gd2Fu
dCB0byBzdGFydCBzZWxlY3Rpb24KQEAgLTI3NDksNyArMjczOSw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50
KQogICAgIGlmIChkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MKSB7CiAgICAgICAgIC8v
IENoZWNrIHRvIHNlZSBpZiB0aGUgaXMgYSBET00gYmFzZWQgZHJhZywgaWYgaXQgaXMgZ2V0IHRo
ZSBET00gc3BlY2lmaWVkIGRyYWcgCiAgICAgICAgIC8vIGltYWdlIGFuZCBvZmZzZXQKLSAgICAg
ICAgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzREhUTUwpIHsKKyAgICAgICAgaWYgKGRyYWdT
dGF0ZSgpLm1fZHJhZ1R5cGUgPT0gRHJhZ1N0YXRlOjpIVE1MKSB7CiAgICAgICAgICAgICBpZiAo
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYy0+cmVuZGVyZXIo
KSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3Qgd29yayBjb3JyZWN0
bHkgd2l0aCB0cmFuc2Zvcm1zLgogICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQgYWJzUG9zID0g
cmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZSgpOwpAQCAtMjc4NSw3ICsyNzc1LDcgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cyYgZXZlbnQpCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFnKSB7CiAgICAgICAgIFBh
Z2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgICAgIERyYWdDb250cm9sbGVyKiBkcmFn
Q29udHJvbGxlciA9IHBhZ2UgPyBwYWdlLT5kcmFnQ29udHJvbGxlcigpIDogMDsKLSAgICAgICAg
Ym9vbCBzdGFydGVkRHJhZyA9IGRyYWdDb250cm9sbGVyICYmIGRyYWdDb250cm9sbGVyLT5zdGFy
dERyYWcobV9mcmFtZSwgZHJhZ1N0YXRlKCkubV9kcmFnQ2xpcGJvYXJkLmdldCgpLCBzcmNPcCwg
ZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25Qb3MsIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzREhU
TUwpOworICAgICAgICBib29sIHN0YXJ0ZWREcmFnID0gZHJhZ0NvbnRyb2xsZXIgJiYgZHJhZ0Nv
bnRyb2xsZXItPnN0YXJ0RHJhZyhtX2ZyYW1lLCBkcmFnU3RhdGUoKSwgc3JjT3AsIGV2ZW50LmV2
ZW50KCksIG1fbW91c2VEb3duUG9zKTsKICAgICAgICAgaWYgKCFzdGFydGVkRHJhZyAmJiBkcmFn
U3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MKSB7CiAgICAgICAgICAgICAvLyBEcmFnIHdhcyBj
YW5uZWQgYXQgdGhlIGxhc3QgbWludXRlIC0gd2Ugb3dlIG1fZHJhZ1NyYyBhIERSQUdFTkQgZXZl
bnQKICAgICAgICAgICAgIGRpc3BhdGNoRHJhZ1NyY0V2ZW50KGV2ZW50TmFtZXMoKS5kcmFnZW5k
RXZlbnQsIGV2ZW50LmV2ZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXgg
MmJlZmFmMzU1ODRjNTA1MzQ2ZjQyODJhZWMwNDY1MmIyMDM2MjEyYS4uMGM5NWZhZmUwZDRlNDMz
MGZlNThhODcwOTBmOWUzNjVkOGZmMjJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5o
CkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2xpcGJvYXJk
OwogY2xhc3MgQ3Vyc29yOworY2xhc3MgRHJhZ1N0YXRlOwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBF
dmVudFRhcmdldDsKIGNsYXNzIEZsb2F0UG9pbnQ7CkBAIC0xNDUsMTAgKzE0Niw2IEBAIHB1Ymxp
YzoKICAgICBib29sIHNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xsR3Jh
bnVsYXJpdHksIE5vZGUqIHN0YXJ0aW5nTm9kZSA9IDApOwogICAgIGJvb2wgbG9naWNhbFNjcm9s
bFJlY3Vyc2l2ZWx5KFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBO
b2RlKiBzdGFydGluZ05vZGUgPSAwKTsKIAotI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAg
Ym9vbCBzaG91bGREcmFnQXV0b05vZGUoTm9kZSosIGNvbnN0IEludFBvaW50JikgY29uc3Q7IC8v
IC13ZWJraXQtdXNlci1kcmFnID09IGF1dG8KLSNlbmRpZgotCiAgICAgYm9vbCB0YWJzVG9MaW5r
cyhLZXlib2FyZEV2ZW50KikgY29uc3Q7CiAgICAgYm9vbCB0YWJzVG9BbGxGb3JtQ29udHJvbHMo
S2V5Ym9hcmRFdmVudCopIGNvbnN0OwogCkBAIC0yMjMsMjAgKzIyMCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIFBlcmZvcm1EcmFnQW5kRHJvcAogICAgIH07CiAKLSAgICBzdHJ1Y3QgRXZlbnRIYW5k
bGVyRHJhZ1N0YXRlIHsKLSAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXZlbnRIYW5kbGVy
RHJhZ1N0YXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgcHVibGljOgotICAgICAg
ICBFdmVudEhhbmRsZXJEcmFnU3RhdGUoKSB7IH0KLSAgICAgICAgUmVmUHRyPE5vZGU+IG1fZHJh
Z1NyYzsgLy8gZWxlbWVudCB0aGF0IG1heSBiZSBhIGRyYWcgc291cmNlLCBmb3IgdGhlIGN1cnJl
bnQgbW91c2UgZ2VzdHVyZQotICAgICAgICBib29sIG1fZHJhZ1NyY0lzTGluazsKLSAgICAgICAg
Ym9vbCBtX2RyYWdTcmNJc0ltYWdlOwotICAgICAgICBib29sIG1fZHJhZ1NyY0luU2VsZWN0aW9u
OwotICAgICAgICBib29sIG1fZHJhZ1NyY01heUJlREhUTUw7Ci0gICAgICAgIGJvb2wgbV9kcmFn
U3JjTWF5QmVVQTsgLy8gQXJlIERIVE1MIGFuZC9vciB0aGUgVXNlckFnZW50IGFsbG93ZWQgdG8g
ZHJhZyBvdXQ/Ci0gICAgICAgIGJvb2wgbV9kcmFnU3JjSXNESFRNTDsKLSAgICAgICAgUmVmUHRy
PENsaXBib2FyZD4gbV9kcmFnQ2xpcGJvYXJkOyAvLyB1c2VkIG9uIG9ubHkgdGhlIHNvdXJjZSBz
aWRlIG9mIGRyYWdnaW5nCi0gICAgfTsKLSAgICBzdGF0aWMgRXZlbnRIYW5kbGVyRHJhZ1N0YXRl
JiBkcmFnU3RhdGUoKTsKKyAgICBzdGF0aWMgRHJhZ1N0YXRlJiBkcmFnU3RhdGUoKTsKICAgICBz
dGF0aWMgY29uc3QgZG91YmxlIFRleHREcmFnRGVsYXk7CiAKICAgICBib29sIGNhbkhhbmRsZURy
YWdBbmREcm9wRm9yVGFyZ2V0KERyYWdBbmREcm9wSGFuZGxlVHlwZSwgTm9kZSogdGFyZ2V0LCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBDbGlwYm9hcmQqLCBib29sKiBhY2NlcHRlZCA9IDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA4ZDZlNDM4
MzIwNWQ0NzllYmU1MmI4ODU0ZmEyMDQ5M2FhYzE3ZTY1Li4wZDQ5ODU2NWY5Yjk2MzAzMDJlYTUw
ZDU2YTI2ZDAwMzYzYzJjNWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcApAQCAtMTQ5OCw0MyArMTQ5OCw2IEBAIENvbG9yIFJlbmRlck9iamVjdDo6c2VsZWN0
aW9uRW1waGFzaXNNYXJrQ29sb3IoKSBjb25zdAogICAgIHJldHVybiBzZWxlY3Rpb25Db2xvcihD
U1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yKTsKIH0KIAotI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCi1Ob2RlKiBSZW5kZXJPYmplY3Q6OmRyYWdnYWJsZU5vZGUoYm9vbCBkaHRtbE9L
LCBib29sIHVhT0ssIGludCB4LCBpbnQgeSwgYm9vbCYgZGh0bWxXaWxsRHJhZykgY29uc3QKLXsK
LSAgICBpZiAoIWRodG1sT0sgJiYgIXVhT0spCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgZm9y
IChjb25zdCBSZW5kZXJPYmplY3QqIGN1cnIgPSB0aGlzOyBjdXJyOyBjdXJyID0gY3Vyci0+cGFy
ZW50KCkpIHsKLSAgICAgICAgTm9kZSogZWx0ID0gY3Vyci0+bm9kZSgpOwotICAgICAgICBpZiAo
ZWx0ICYmIGVsdC0+bm9kZVR5cGUoKSA9PSBOb2RlOjpURVhUX05PREUpIHsKLSAgICAgICAgICAg
IC8vIFNpbmNlIHRoZXJlJ3Mgbm8gd2F5IGZvciB0aGUgYXV0aG9yIHRvIGFkZHJlc3MgdGhlIC13
ZWJraXQtdXNlci1kcmFnIHN0eWxlIGZvciBhIHRleHQgbm9kZSwKLSAgICAgICAgICAgIC8vIHdl
IHVzZSBvdXIgb3duIGp1ZGdlbWVudC4KLSAgICAgICAgICAgIGlmICh1YU9LICYmIHZpZXcoKS0+
ZnJhbWVWaWV3KCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5zaG91bGREcmFnQXV0b05vZGUo
Y3Vyci0+bm9kZSgpLCBJbnRQb2ludCh4LCB5KSkpIHsKLSAgICAgICAgICAgICAgICBkaHRtbFdp
bGxEcmFnID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnItPm5vZGUoKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChlbHQtPmNhblN0YXJ0U2VsZWN0aW9uKCkpCi0g
ICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIGhhdmUgYSBjbGljayBpbiB0aGUgdW5z
ZWxlY3RlZCBwb3J0aW9uIG9mIHRleHQuICBJZiB0aGlzIHRleHQgaXMKLSAgICAgICAgICAgICAg
ICAvLyBzZWxlY3RhYmxlLCB3ZSB3YW50IHRvIHN0YXJ0IHRoZSBzZWxlY3Rpb24gcHJvY2VzcyBp
bnN0ZWFkIG9mIGxvb2tpbmcgZm9yIGEgcGFyZW50Ci0gICAgICAgICAgICAgICAgLy8gdG8gdHJ5
IHRvIGRyYWcuCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBFVXNlckRyYWcgZHJhZ01vZGUgPSBjdXJyLT5zdHlsZSgpLT51c2VyRHJhZygp
OwotICAgICAgICAgICAgaWYgKGRodG1sT0sgJiYgZHJhZ01vZGUgPT0gRFJBR19FTEVNRU5UKSB7
Ci0gICAgICAgICAgICAgICAgZGh0bWxXaWxsRHJhZyA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGN1cnItPm5vZGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh1YU9L
ICYmIGRyYWdNb2RlID09IERSQUdfQVVUTwotICAgICAgICAgICAgICAgICAgICAmJiB2aWV3KCkt
PmZyYW1lVmlldygpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+c2hvdWxkRHJhZ0F1dG9Ob2Rl
KGN1cnItPm5vZGUoKSwgSW50UG9pbnQoeCwgeSkpKSB7Ci0gICAgICAgICAgICAgICAgZGh0bWxX
aWxsRHJhZyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHJldHVybiBjdXJyLT5ub2RlKCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYg
Ly8gRU5BQkxFKERSQUdfU1VQUE9SVCkKLQogdm9pZCBSZW5kZXJPYmplY3Q6OnNlbGVjdGlvblN0
YXJ0RW5kKGludCYgc3BvcywgaW50JiBlcG9zKSBjb25zdAogewogICAgIHZpZXcoKS0+c2VsZWN0
aW9uU3RhcnRFbmQoc3BvcywgZXBvcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgKaW5kZXggN2Y5M2EwZjAwN2I4ZWEzYTQ5NWNkYWQ2MTliNDcxN2NkMWIzOGJjYi4uMDI2
ZmY2ZjQzZDEwYThhZmU1ODUwNjRhNWI5Y2Y5ZTZmMWQzMmEwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtNzE0LDEwICs3MTQsNiBAQCBwdWJsaWM6CiAgICAg
Ly8gV2hldGhlciBvciBub3QgYSBnaXZlbiBibG9jayBuZWVkcyB0byBwYWludCBzZWxlY3Rpb24g
Z2Fwcy4KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFpbnRTZWxlY3Rpb25HYXBzKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIAotI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgTm9kZSog
ZHJhZ2dhYmxlTm9kZShib29sIGRodG1sT0ssIGJvb2wgdWFPSywgaW50IHgsIGludCB5LCBib29s
JiBkaHRtbFdpbGxEcmFnKSBjb25zdDsKLSNlbmRpZgotCiAgICAgLyoqCiAgICAgICogUmV0dXJu
cyB0aGUgbG9jYWwgY29vcmRpbmF0ZXMgb2YgdGhlIGNhcmV0IHdpdGhpbiB0aGlzIHJlbmRlciBv
YmplY3QuCiAgICAgICogQHBhcmFtIGNhcmV0T2Zmc2V0IHplcm8tYmFzZWQgb2Zmc2V0IGRldGVy
bWluaW5nIHBvc2l0aW9uIHdpdGhpbiB0aGUgcmVuZGVyIG9iamVjdC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93078</attachid>
            <date>2011-05-10 23:36:43 -0700</date>
            <delta_ts>2011-05-11 01:06:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59409-20110510233642.patch</filename>
            <type>text/plain</type>
            <size>33320</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYxNjQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiYTQzNTYzOWJmMjE1MWNjYTk4MmJj
YjYzNDZhZmZjNDczMWYxZTkxLi5lZWViZDE0OTVjZmNiZmFiZDlmMWYyN2JjZGM1NDkyYWQxNTAy
ZDAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDUtMTAgIERhbmllbCBDaGVuZyAgPGRj
aGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wcm92ZSBkcmFnIHN0YXJ0IGxvZ2ljCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTQwOQorCisgICAgICAgIFJlYmFzZSB0ZXN0
cyB0byBuZXcgZXhwZWN0ZWQgYmVoYXZpb3IuCisKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9h
cmQvZHJhZy1zZWxlY3RlZC1pbWFnZS10by1jb250ZW50ZWRpdGFibGUuaHRtbDogU2VsZWN0aW9u
cyBhcmUgcHJpb3JpdGl6ZWQKKyAgICAgICAgb3ZlciBpbWFnZXMgZHVyaW5nIHRoZSBkcmFnZ2lu
ZyBwcm9jZXNzIG5vdywgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byBoYXZlIGEgZGVsYXkgYmV0d2Vl
biB0aGUKKyAgICAgICAgbW91c2UgZG93biBhbmQgdGhlIG1vdXNlIG1vdmUuIFRoZSBjaGFuZ2Ug
aW4gZHJhZ2dpbmcgcHJpb3JpdHkgbWF0Y2hlcyBJRSBhbmQgRmlyZWZveAorICAgICAgICBiZWhh
dmlvci4KKyAgICAgICAgKiBmYXN0L2Nzcy91c2VyLWRyYWctbm9uZS5odG1sOiBUZXh0IG5vZGVz
IGFyZSBubyBsb25nZXIgY29uc2lkZXJlZCBkcmFnZ2FibGUuCisKIDIwMTEtMDUtMTAgIEFiaGlz
aGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
ZHJhZy1zZWxlY3RlZC1pbWFnZS10by1jb250ZW50ZWRpdGFibGUuaHRtbCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGVkLWltYWdlLXRvLWNvbnRlbnRlZGl0YWJs
ZS5odG1sCmluZGV4IDIxNDBhMTUwYjJjYjBkMjQ5NTJjNDI1ZDQ2YjBkZjk4NDNiNGQ4N2UuLmMw
ZjNiNzBkNWQwNTEyODFjMjhiODcwODhhZjFhM2U3M2UxYmRiOWEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGVkLWltYWdlLXRvLWNvbnRlbnRl
ZGl0YWJsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNl
bGVjdGVkLWltYWdlLXRvLWNvbnRlbnRlZGl0YWJsZS5odG1sCkBAIC00NCw2ICs0NCw3IEBAIGZ1
bmN0aW9uIHN0ZXAyKCkKICAgICB4ID0gZS5vZmZzZXRMZWZ0ICsgZS5vZmZzZXRXaWR0aCAvIDI7
CiAgICAgeSA9IGUub2Zmc2V0VG9wICsgZS5vZmZzZXRIZWlnaHQgLyAyOwogICAgIAorICAgIGV2
ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDUwMCk7CiAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
eCwgeSk7CiAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwogICAgIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3MvdXNlci1kcmFnLW5vbmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3VzZXItZHJhZy1ub25lLmh0bWwKaW5kZXggYzg4Y2FhZjZlZTU2YzM4NmI4ZTNiNmY0NDVk
NGMxYTc3M2UxYTA4Yy4uZjkzMzUxMzVjNWQ5YzFhNWY5MTdlN2UwYzViZTg0YTU4ZTlhODE0YSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXNlci1kcmFnLW5vbmUuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy91c2VyLWRyYWctbm9uZS5odG1sCkBAIC0xOSwxMSArMTks
MTEgQEAKICAgICAgICAgPGltZyBjbGFzcz0iZHJhZy1ub25lIiBzcmM9InJlc291cmNlcy9ncmVl
bmJveC5wbmciPgogICAgIDwvZGl2PgogCi0gICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9IklN
RyB0ZXh0IHRleHQgQSBuaWwiPgorICAgIDxkaXYgY2xhc3M9ImJveCIgZXhwZWN0PSJJTUcgQSBB
IEEgbmlsIj4KICAgICAgICAgPGEgaHJlZj0iIyI+PGltZyBzcmM9InJlc291cmNlcy9ncmVlbmJv
eC5wbmciPng8YnI+PHNwYW4+eTwvc3Bhbj48L2E+CiAgICAgPC9kaXY+CiAKLSAgICA8ZGl2IGNs
YXNzPSJib3giIGV4cGVjdD0iSU1HIHRleHQgdGV4dCBBIG5pbCI+CisgICAgPGRpdiBjbGFzcz0i
Ym94IiBleHBlY3Q9IklNRyBBIEEgQSBuaWwiPgogICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0i
ZHJhZy1lbGVtZW50Ij48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bh
bj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIApAQCAtMzEsMTEgKzMxLDExIEBACiAgICAgICAg
IDxhIGhyZWY9IiMiIGNsYXNzPSJkcmFnLW5vbmUiPjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW5i
b3gucG5nIj54PGJyPjxzcGFuPnk8L3NwYW4+PC9hPgogICAgIDwvZGl2PgogCi0gICAgPGRpdiBj
bGFzcz0iYm94IiBleHBlY3Q9IkEgdGV4dCB0ZXh0IEEgbmlsIj4KKyAgICA8ZGl2IGNsYXNzPSJi
b3giIGV4cGVjdD0iQSBBIEEgQSBuaWwiPgogICAgICAgICA8YSBocmVmPSIjIj48aW1nIGNsYXNz
PSJkcmFnLW5vbmUiIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9z
cGFuPjwvYT4KICAgICA8L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9ImJveCIgZXhwZWN0PSJBIHRl
eHQgdGV4dCBBIG5pbCI+CisgICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9IkEgQSBBIEEgbmls
Ij4KICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyYWctZWxlbWVudCI+PGltZyBjbGFzcz0i
ZHJhZy1ub25lIiBzcmM9InJlc291cmNlcy9ncmVlbmJveC5wbmciPng8YnI+PHNwYW4+eTwvc3Bh
bj48L2E+CiAgICAgPC9kaXY+CiAKQEAgLTQzLDExICs0MywxMSBAQAogICAgICAgICA8YSBocmVm
PSIjIiBjbGFzcz0iZHJhZy1ub25lIj48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+
eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9ImJv
eCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSB0ZXh0IHRleHQgQSBESVYiPgorICAgIDxkaXYgY2xh
c3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSBBIEEgQSBESVYiPgogICAgICAgICA8YSBo
cmVmPSIjIj48aW1nIGNsYXNzPSJkcmFnLW5vbmUiIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBu
ZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9
ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSB0ZXh0IHRleHQgQSBESVYiPgorICAgIDxkaXYg
Y2xhc3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSBBIEEgQSBESVYiPgogICAgICAgICA8
YSBocmVmPSIjIiBjbGFzcz0iZHJhZy1lbGVtZW50Ij48aW1nIGNsYXNzPSJkcmFnLW5vbmUiIHNy
Yz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8
L2Rpdj4KIDwvZGl2PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE3ZDdlMDI3ZTZmNDA3NTM4ZDA3Y2VjOGNmNDg5
MDllNjY3YTBmNDkuLmI0NDZmNWM3OTlkMDhjOGIxYzk3M2Q5MWI4NjEwODEyYWM1M2U3ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMS0wNS0xMCAgRGFuaWVsIENoZW5nICA8ZGNo
ZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbXByb3ZlIGRyYWcgc3RhcnQgbG9naWMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NDA5CisKKyAgICAgICAgUmV3cml0ZSBhbmQg
c2ltcGxpZnkgdGhlIGRyYWdnaW5nIGxvZ2ljIHRvIGJldHRlciBtYXRjaCBJRSwgRmlyZWZveCwg
YW5kIHRoZSBiZWhhdmlvcgorICAgICAgICBkZWZpbmVkIGluIHRoZSBzcGVjLiBBbW9uZyBvdGhl
ciB0aGluZ3M6CisgICAgICAgIC0gZHJhZ2dhYmxlTm9kZSgpIG5vIGxvbmdlciByZXR1cm5zIHRl
eHQgbm9kZXMgd2hlbiBkcmFnZ2luZyBhbmNob3JzLgorICAgICAgICAtIFdoZW4gc3RhcnRpbmcg
YSBkcmFnIG92ZXIgYW4gaW1hZ2UgaW4gYSBzZWxlY3Rpb24sIHByZWZlciB0byBkcmFnIHRoZSBz
ZWxlY3Rpb24uCisgICAgICAgIC0gU2V2ZXJhbCByZWR1bmRhbnQgaGl0IHRlc3RzIGhhdmUgYmVl
biByZW1vdmVkLgorICAgICAgICAtIE1pbm9yIHJlZmFjdG9yaW5nIHRvIG1ha2UgdGhlIGxvZ2lj
IGVhc2llciB0byBmb2xsb3cuCisKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpzdGFydERyYWcpOgorICAgICAgICAqIHBhZ2Uv
RHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL0RyYWdTdGF0ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ1N0YXRlOjpzaG91bGREaXNwYXRjaEV2ZW50cyk6CisgICAgICAgICogcGFn
ZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpldmVu
dE1heVN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZURy
YWdTb3VyY2VBY3Rpb25zQWxsb3dlZCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OnVwZGF0ZURyYWdBbmREcm9wKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Y2Fu
Y2VsRHJhZ0FuZERyb3ApOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkcmFnSHlz
dGVyZXNpc0V4Y2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ1Nv
dXJjZUVuZGVkQXQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFn
KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorCiAyMDExLTA1LTA2ICBCcmV0dCBX
aWxzb24gIDxicmV0dHdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
QmFydGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDgxY2U5MmQ0
ZjUwZDY5OTBjYmIzZmRmYTJlMGM1ZWQ3MTI0ZThkNmEuLmRhYTQyY2Y2NDdkNmU5N2I5OGZhMjNk
NzMxZDBjOWY3MjkyODgwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
CkBAIC01NjksNzMgKzU2OSw0OSBAQCBib29sIERyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWco
RHJhZ0RhdGEqIGRyYWdEYXRhLCBEcmFnT3BlcmF0aW9uJiBvcGVyYXRpb24pCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLU5vZGUqIERyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVOb2RlKGNvbnN0IEZy
YW1lKiBzcmMsIE5vZGUqIHN0YXJ0Tm9kZSwgYm9vbCBkaHRtbE9LLCBib29sIHVhT0ssIGludCB4
LCBpbnQgeSwgYm9vbCYgZGh0bWxXaWxsRHJhZykgY29uc3QKK05vZGUqIERyYWdDb250cm9sbGVy
OjpkcmFnZ2FibGVOb2RlKGNvbnN0IEZyYW1lKiBzcmMsIE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3Qg
SW50UG9pbnQmIGRyYWdPcmlnaW4sIERyYWdTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgaWYg
KCFkaHRtbE9LICYmICF1YU9LKQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoc3JjLT5zZWxl
Y3Rpb24oKS0+Y29udGFpbnMoZHJhZ09yaWdpbikpIHsKKyAgICAgICAgc3RhdGUubV9kcmFnVHlw
ZSA9IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb247CisgICAgICAgIHJldHVybiBzdGFydE5vZGU7
CisgICAgfQogCiAgICAgZm9yIChjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc3RhcnRO
b2RlLT5yZW5kZXJlcigpOyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCkp
IHsKICAgICAgICAgTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5ub2RlKCk7Ci0gICAgICAgIGlmIChu
b2RlICYmIG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6VEVYVF9OT0RFKSB7Ci0gICAgICAgICAg
ICAvLyBTaW5jZSB0aGVyZSdzIG5vIHdheSBmb3IgdGhlIGF1dGhvciB0byBhZGRyZXNzIHRoZSAt
d2Via2l0LXVzZXItZHJhZyBzdHlsZSBmb3IgYSB0ZXh0IG5vZGUsCi0gICAgICAgICAgICAvLyB3
ZSB1c2Ugb3VyIG93biBqdWRnZW1lbnQuCi0gICAgICAgICAgICBpZiAodWFPSyAmJiBtYXlTdGFy
dERyYWdBdEV2ZW50TG9jYXRpb24oc3JjLCBJbnRQb2ludCh4LCB5KSwgbm9kZSkpIHsKLSAgICAg
ICAgICAgICAgICBkaHRtbFdpbGxEcmFnID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG5vZGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobm9kZS0+Y2FuU3RhcnRTZWxl
Y3Rpb24oKSkKLSAgICAgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgaGF2ZSBhIGNsaWNr
IGluIHRoZSB1bnNlbGVjdGVkIHBvcnRpb24gb2YgdGV4dC4gSWYgdGhpcyB0ZXh0IGlzCi0gICAg
ICAgICAgICAgICAgLy8gc2VsZWN0YWJsZSwgd2Ugd2FudCB0byBzdGFydCB0aGUgc2VsZWN0aW9u
IHByb2Nlc3MgaW5zdGVhZCBvZiBsb29raW5nIGZvciBhIHBhcmVudAotICAgICAgICAgICAgICAg
IC8vIHRvIHRyeSB0byBkcmFnLgotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9
IGVsc2UgeworICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAvLyBBbm9ueW1vdXMgcmVu
ZGVyIGJsb2NrcyBkb24ndCBjb3JyZXNwb25kIHRvIGFjdHVhbCBET00gbm9kZXMsIHNvIHdlIHNr
aXAgb3ZlciB0aGVtCisgICAgICAgICAgICAvLyBmb3IgdGhlIHB1cnBvc2VzIG9mIGZpbmRpbmcg
YSBkcmFnZ2FibGUgbm9kZS4KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAobm9k
ZS0+aXNUZXh0Tm9kZSgpICYmIG5vZGUtPmNhblN0YXJ0U2VsZWN0aW9uKCkpCisgICAgICAgICAg
ICAvLyBJbiB0aGlzIGNhc2Ugd2UgaGF2ZSBhIGNsaWNrIGluIHRoZSB1bnNlbGVjdGVkIHBvcnRp
b24gb2YgdGV4dC4gSWYgdGhpcyB0ZXh0IGlzCisgICAgICAgICAgICAvLyBzZWxlY3RhYmxlLCB3
ZSB3YW50IHRvIHN0YXJ0IHRoZSBzZWxlY3Rpb24gcHJvY2VzcyBpbnN0ZWFkIG9mIGxvb2tpbmcg
Zm9yIGEgcGFyZW50CisgICAgICAgICAgICAvLyB0byB0cnkgdG8gZHJhZy4KKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CiAgICAgICAg
ICAgICBFVXNlckRyYWcgZHJhZ01vZGUgPSByZW5kZXJlci0+c3R5bGUoKS0+dXNlckRyYWcoKTsK
LSAgICAgICAgICAgIGlmIChkaHRtbE9LICYmIGRyYWdNb2RlID09IERSQUdfRUxFTUVOVCkgewot
ICAgICAgICAgICAgICAgIGRodG1sV2lsbERyYWcgPSB0cnVlOworICAgICAgICAgICAgaWYgKCht
X2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uREhUTUwpICYmIGRyYWdNb2RlID09
IERSQUdfRUxFTUVOVCkgeworICAgICAgICAgICAgICAgIHN0YXRlLm1fZHJhZ1R5cGUgPSBEcmFn
U291cmNlQWN0aW9uREhUTUw7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpZiAodWFPSyAmJiBkcmFnTW9kZSA9PSBEUkFHX0FVVE8gJiYg
bWF5U3RhcnREcmFnQXRFdmVudExvY2F0aW9uKHNyYywgSW50UG9pbnQoeCwgeSksIG5vZGUpKSB7
Ci0gICAgICAgICAgICAgICAgZGh0bWxXaWxsRHJhZyA9IGZhbHNlOwotICAgICAgICAgICAgICAg
IHJldHVybiBub2RlOworICAgICAgICAgICAgaWYgKGRyYWdNb2RlID09IERSQUdfQVVUTykgewor
ICAgICAgICAgICAgICAgIGlmICgobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlv
bkltYWdlKQorICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6aW1nVGFnKQorICAgICAgICAgICAgICAgICAgICAmJiBzcmMtPnNldHRpbmdzKCktPmxvYWRz
SW1hZ2VzQXV0b21hdGljYWxseSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLm1fZHJh
Z1R5cGUgPSBEcmFnU291cmNlQWN0aW9uSW1hZ2U7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBub2RlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoKG1fZHJhZ1Nv
dXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25MaW5rKQorICAgICAgICAgICAgICAgICAgICAm
JiBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YVRhZykKKyAgICAgICAgICAgICAgICAgICAg
JiYgc3RhdGljX2Nhc3Q8SFRNTEFuY2hvckVsZW1lbnQqPihub2RlKS0+aXNMaXZlTGluaygpKSB7
CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLm1fZHJhZ1R5cGUgPSBEcmFnU291cmNlQWN0aW9u
TGluazsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiAwOwogfQogCi1i
b29sIERyYWdDb250cm9sbGVyOjptYXlTdGFydERyYWdBdEV2ZW50TG9jYXRpb24oY29uc3QgRnJh
bWUqIGZyYW1lLCBjb25zdCBJbnRQb2ludCYgZnJhbWVQb3MsIE5vZGUqIG5vZGUpIGNvbnN0Ci17
Ci0gICAgQVNTRVJUKGZyYW1lKTsKLSAgICBBU1NFUlQoZnJhbWUtPnNldHRpbmdzKCkpOwotCi0g
ICAgaWYgKCFmcmFtZS0+dmlldygpIHx8ICFmcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIEhpdFRlc3RSZXN1bHQgbW91c2VEb3duVGFyZ2V0ID0g
SGl0VGVzdFJlc3VsdChmcmFtZVBvcyk7Ci0KLSAgICBtb3VzZURvd25UYXJnZXQgPSBmcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGZyYW1lUG9zLCB0cnVlKTsKLSAg
ICBpZiAobm9kZSkKLSAgICAgICAgbW91c2VEb3duVGFyZ2V0LnNldElubmVyTm9uU2hhcmVkTm9k
ZShub2RlKTsKLQotICAgIGlmIChtb3VzZURvd25UYXJnZXQuaW1hZ2UoKQotICAgICAgICAmJiAh
bW91c2VEb3duVGFyZ2V0LmFic29sdXRlSW1hZ2VVUkwoKS5pc0VtcHR5KCkKLSAgICAgICAgJiYg
ZnJhbWUtPnNldHRpbmdzKCktPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpCi0gICAgICAgICYm
IG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25JbWFnZSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0KLSAgICBpZiAoIW1vdXNlRG93blRhcmdldC5hYnNvbHV0ZUxpbmtVUkwoKS5p
c0VtcHR5KCkKLSAgICAgICAgJiYgbV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlv
bkxpbmsKLSAgICAgICAgJiYgbW91c2VEb3duVGFyZ2V0LmlzTGl2ZUxpbmsoKQotICAgICAgICAm
JiBtb3VzZURvd25UYXJnZXQuVVJMRWxlbWVudCgpLT5yZW5kZXJlcigpICYmIG1vdXNlRG93blRh
cmdldC5VUkxFbGVtZW50KCktPnJlbmRlcmVyKCktPnN0eWxlKCktPnVzZXJEcmFnKCkgIT0gRFJB
R19OT05FKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChtb3VzZURvd25UYXJnZXQu
aXNTZWxlY3RlZCgpCi0gICAgICAgICYmIG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VB
Y3Rpb25TZWxlY3Rpb24pCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCiBzdGF0aWMgQ2FjaGVkSW1hZ2UqIGdldENhY2hlZEltYWdlKEVsZW1lbnQqIGVsZW1l
bnQpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQpOwpAQCAtNjk1LDE5ICs2NzEsMTcgQEAgc3RhdGlj
IEludFBvaW50IGRyYWdMb2NGb3JTZWxlY3Rpb25EcmFnKEZyYW1lKiBzcmMpCiAgICAgcmV0dXJu
IEludFBvaW50KHhwb3MsIHlwb3MpOwogfQogCi1ib29sIERyYWdDb250cm9sbGVyOjpzdGFydERy
YWcoRnJhbWUqIHNyYywgQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIERyYWdPcGVyYXRpb24gc3JjT3As
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJh
Z09yaWdpbiwgYm9vbCBpc0RIVE1MRHJhZykKK2Jvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJh
ZyhGcmFtZSogc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uIHNyY09w
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRy
YWdPcmlnaW4pCiB7CiAgICAgQVNTRVJUKHNyYyk7Ci0gICAgQVNTRVJUKGNsaXBib2FyZCk7CiAK
ICAgICBpZiAoIXNyYy0+dmlldygpIHx8ICFzcmMtPmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBIaXRUZXN0UmVzdWx0IGRyYWdTb3VyY2UgPSBIaXRUZXN0
UmVzdWx0KGRyYWdPcmlnaW4pOwotICAgIGRyYWdTb3VyY2UgPSBzcmMtPmV2ZW50SGFuZGxlcigp
LT5oaXRUZXN0UmVzdWx0QXRQb2ludChkcmFnT3JpZ2luLCB0cnVlKTsKLSAgICBLVVJMIGxpbmtV
UkwgPSBkcmFnU291cmNlLmFic29sdXRlTGlua1VSTCgpOwotICAgIEtVUkwgaW1hZ2VVUkwgPSBk
cmFnU291cmNlLmFic29sdXRlSW1hZ2VVUkwoKTsKLSAgICBib29sIGlzU2VsZWN0ZWQgPSBkcmFn
U291cmNlLmlzU2VsZWN0ZWQoKTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQgPSBz
cmMtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChkcmFnT3JpZ2luLCB0cnVl
KTsKKyAgICAvLyBGSVhNRTogU2FuaXR5IGNoZWNrIGhlcmUgdGhhdCB3ZSdyZSBzdGlsbCBkcmFn
Z2luZyB0aGUgc2FtZSBub2RlLgorICAgIEtVUkwgbGlua1VSTCA9IGhpdFRlc3RSZXN1bHQuYWJz
b2x1dGVMaW5rVVJMKCk7CisgICAgS1VSTCBpbWFnZVVSTCA9IGhpdFRlc3RSZXN1bHQuYWJzb2x1
dGVJbWFnZVVSTCgpOwogCiAgICAgSW50UG9pbnQgbW91c2VEcmFnZ2VkUG9pbnQgPSBzcmMtPnZp
ZXcoKS0+d2luZG93VG9Db250ZW50cyhkcmFnRXZlbnQucG9zKCkpOwogCkBAIC03MTgsMTQgKzY5
MiwxNCBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUqIHNyYywgQ2xpcGJv
YXJkKiBjbGlwYm9hcmQsIERyYWdPcGVyYXRpb24gcwogICAgIEludFBvaW50IGRyYWdMb2MoMCwg
MCk7CiAgICAgSW50UG9pbnQgZHJhZ0ltYWdlT2Zmc2V0KDAsIDApOwogCi0gICAgaWYgKGlzREhU
TUxEcmFnKQorICAgIENsaXBib2FyZCogY2xpcGJvYXJkID0gc3RhdGUubV9kcmFnQ2xpcGJvYXJk
LmdldCgpOworICAgIGlmIChzdGF0ZS5tX2RyYWdUeXBlID09IERyYWdTb3VyY2VBY3Rpb25ESFRN
TCkKICAgICAgICAgZHJhZ0ltYWdlID0gY2xpcGJvYXJkLT5jcmVhdGVEcmFnSW1hZ2UoZHJhZ0lt
YWdlT2Zmc2V0KTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gVGhpcyBkcmFnIG9wZXJhdGlvbiBp
cyBub3QgYSBESFRNTCBkcmFnIGFuZCBtYXkgZ28gb3V0c2lkZSB0aGUgV2ViVmlldy4KLSAgICAg
ICAgLy8gV2UgcHJvdmlkZSBhIGRlZmF1bHQgc2V0IG9mIGFsbG93ZWQgZHJhZyBvcGVyYXRpb25z
IHRoYXQgZm9sbG93cyBmcm9tOgorICAgIGlmIChzdGF0ZS5tX2RyYWdUeXBlID09IERyYWdTb3Vy
Y2VBY3Rpb25TZWxlY3Rpb24gfHwgIWltYWdlVVJMLmlzRW1wdHkoKSB8fCAhbGlua1VSTC5pc0Vt
cHR5KCkpCisgICAgICAgIC8vIFNlbGVjdGlvbiwgaW1hZ2UsIGFuZCBsaW5rIGRyYWdzIHJlY2Vp
dmUgYSBkZWZhdWx0IHNldCBvZiBhbGxvd2VkIGRyYWcgb3BlcmF0aW9ucyB0aGF0CisgICAgICAg
IC8vIGZvbGxvd3MgZnJvbToKICAgICAgICAgLy8gaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93
c2VyL3RydW5rL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbT9yZXY9NDg1MjYjTDM0
MzAKLSAgICAgICAgbV9zb3VyY2VEcmFnT3BlcmF0aW9uID0gKERyYWdPcGVyYXRpb24pKERyYWdP
cGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJhdGlvbkNvcHkpOwotICAgIH0KKyAgICAgICAgbV9z
b3VyY2VEcmFnT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4obV9zb3VyY2VE
cmFnT3BlcmF0aW9uIHwgRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uQ29weSk7
CiAKICAgICAvLyBXZSBhbGxvdyBESFRNTC9KUyB0byBzZXQgdGhlIGRyYWcgaW1hZ2UsIGV2ZW4g
aWYgaXRzIGEgbGluaywgaW1hZ2Ugb3IgdGV4dCB3ZSdyZSBkcmFnZ2luZy4KICAgICAvLyBUaGlz
IGlzIGluIHRoZSBzcGlyaXQgb2YgdGhlIElFIEFQSSwgd2hpY2ggYWxsb3dzIG92ZXJyaWRpbmcg
b2YgcGFzdGVib2FyZCBkYXRhIGFuZCBEcmFnT3AuCkBAIC03MzYsMjYgKzcxMCw0NCBAQCBib29s
IERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUqIHNyYywgQ2xpcGJvYXJkKiBjbGlwYm9h
cmQsIERyYWdPcGVyYXRpb24gcwogCiAgICAgYm9vbCBzdGFydGVkRHJhZyA9IHRydWU7IC8vIG9w
dGltaXNtIC0gd2UgYWxtb3N0IGFsd2F5cyBtYW5hZ2UgdG8gc3RhcnQgdGhlIGRyYWcKIAotICAg
IE5vZGUqIG5vZGUgPSBkcmFnU291cmNlLmlubmVyTm9uU2hhcmVkTm9kZSgpOworICAgIE5vZGUq
IG5vZGUgPSBzdGF0ZS5tX2RyYWdTcmMuZ2V0KCk7CiAKICAgICBJbWFnZSogaW1hZ2UgPSBnZXRJ
bWFnZShzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSkpOwotICAgIGlmICghaW1hZ2VVUkwuaXNF
bXB0eSgpICYmIG5vZGUgJiYgbm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmIGltYWdlCi0gICAgICAg
ICAgICAmJiAobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKSkgewor
ICAgIGlmIChzdGF0ZS5tX2RyYWdUeXBlID09IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pIHsK
KyAgICAgICAgaWYgKCFjbGlwYm9hcmQtPmhhc0RhdGEoKSkgeworICAgICAgICAgICAgaWYgKGlz
Tm9kZUluVGV4dEZvcm1Db250cm9sKHNyYy0+c2VsZWN0aW9uKCktPnN0YXJ0KCkuZGVwcmVjYXRl
ZE5vZGUoKSkpCisgICAgICAgICAgICAgICAgY2xpcGJvYXJkLT53cml0ZVBsYWluVGV4dChzcmMt
PmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvblJhbmdlID0gc3JjLT5zZWxlY3Rpb24oKS0+
dG9Ob3JtYWxpemVkUmFuZ2UoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc2VsZWN0aW9uUmFu
Z2UpOworCisgICAgICAgICAgICAgICAgY2xpcGJvYXJkLT53cml0ZVJhbmdlKHNlbGVjdGlvblJh
bmdlLmdldCgpLCBzcmMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1fY2xp
ZW50LT53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlv
biwgZHJhZ09yaWdpbiwgY2xpcGJvYXJkKTsKKyAgICAgICAgaWYgKCFkcmFnSW1hZ2UpIHsKKyAg
ICAgICAgICAgIGRyYWdJbWFnZSA9IGNyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlvbihzcmMpOwor
ICAgICAgICAgICAgZHJhZ0xvYyA9IGRyYWdMb2NGb3JTZWxlY3Rpb25EcmFnKHNyYyk7CisgICAg
ICAgICAgICBtX2RyYWdPZmZzZXQgPSBJbnRQb2ludCgoaW50KShkcmFnT3JpZ2luLngoKSAtIGRy
YWdMb2MueCgpKSwgKGludCkoZHJhZ09yaWdpbi55KCkgLSBkcmFnTG9jLnkoKSkpOworICAgICAg
ICB9CisgICAgICAgIGRvU3lzdGVtRHJhZyhkcmFnSW1hZ2UsIGRyYWdMb2MsIGRyYWdPcmlnaW4s
IGNsaXBib2FyZCwgc3JjLCBmYWxzZSk7CisgICAgfSBlbHNlIGlmICghaW1hZ2VVUkwuaXNFbXB0
eSgpICYmIG5vZGUgJiYgbm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmIGltYWdlCisgICAgICAgICAg
ICAgICAmJiAobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKSkgewog
ICAgICAgICAvLyBXZSBzaG91bGRuJ3QgYmUgc3RhcnRpbmcgYSBkcmFnIGZvciBhbiBpbWFnZSB0
aGF0IGNhbid0IHByb3ZpZGUgYW4gZXh0ZW5zaW9uLgogICAgICAgICAvLyBUaGlzIGlzIGFuIGVh
cmx5IGRldGVjdGlvbiBmb3IgcHJvYmxlbXMgZW5jb3VudGVyZWQgbGF0ZXIgdXBvbiBkcm9wLgog
ICAgICAgICBBU1NFUlQoIWltYWdlLT5maWxlbmFtZUV4dGVuc2lvbigpLmlzRW1wdHkoKSk7CiAg
ICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7CiAg
ICAgICAgIGlmICghY2xpcGJvYXJkLT5oYXNEYXRhKCkpIHsKICAgICAgICAgICAgIG1fZHJhZ2dp
bmdJbWFnZVVSTCA9IGltYWdlVVJMOwotICAgICAgICAgICAgcHJlcGFyZUNsaXBib2FyZEZvcklt
YWdlRHJhZyhzcmMsIGNsaXBib2FyZCwgZWxlbWVudCwgbGlua1VSTCwgaW1hZ2VVUkwsIGRyYWdT
b3VyY2UuYWx0RGlzcGxheVN0cmluZygpKTsKKyAgICAgICAgICAgIHByZXBhcmVDbGlwYm9hcmRG
b3JJbWFnZURyYWcoc3JjLCBjbGlwYm9hcmQsIGVsZW1lbnQsIGxpbmtVUkwsIGltYWdlVVJMLCBo
aXRUZXN0UmVzdWx0LmFsdERpc3BsYXlTdHJpbmcoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBt
X2NsaWVudC0+d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25JbWFn
ZSwgZHJhZ09yaWdpbiwgY2xpcGJvYXJkKTsKIAogICAgICAgICBpZiAoIWRyYWdJbWFnZSkgewot
ICAgICAgICAgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBkcmFnU291cmNlLmltYWdlUmVjdCgpOwor
ICAgICAgICAgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBoaXRUZXN0UmVzdWx0LmltYWdlUmVjdCgp
OwogICAgICAgICAgICAgaW1hZ2VSZWN0LnNldExvY2F0aW9uKG1fcGFnZS0+bWFpbkZyYW1lKCkt
PnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhzcmMtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhp
bWFnZVJlY3QubG9jYXRpb24oKSkpKTsKLSAgICAgICAgICAgIGRvSW1hZ2VEcmFnKGVsZW1lbnQs
IGRyYWdPcmlnaW4sIGRyYWdTb3VyY2UuaW1hZ2VSZWN0KCksIGNsaXBib2FyZCwgc3JjLCBtX2Ry
YWdPZmZzZXQpOworICAgICAgICAgICAgZG9JbWFnZURyYWcoZWxlbWVudCwgZHJhZ09yaWdpbiwg
aGl0VGVzdFJlc3VsdC5pbWFnZVJlY3QoKSwgY2xpcGJvYXJkLCBzcmMsIG1fZHJhZ09mZnNldCk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgLy8gREhUTUwgZGVmaW5lZCBkcmFnIGltYWdl
CiAgICAgICAgICAgICBkb1N5c3RlbURyYWcoZHJhZ0ltYWdlLCBkcmFnTG9jLCBkcmFnT3JpZ2lu
LCBjbGlwYm9hcmQsIHNyYywgZmFsc2UpOwpAQCAtNzY0LDcgKzc1Niw3IEBAIGJvb2wgRHJhZ0Nv
bnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRHJh
Z09wZXJhdGlvbiBzCiAgICAgICAgIGlmICghY2xpcGJvYXJkLT5oYXNEYXRhKCkpCiAgICAgICAg
ICAgICAvLyBTaW1wbGlmeSB3aGl0ZXNwYWNlIHNvIHRoZSB0aXRsZSBwdXQgb24gdGhlIGNsaXBi
b2FyZCByZXNlbWJsZXMgd2hhdCB0aGUgdXNlciBzZWVzCiAgICAgICAgICAgICAvLyBvbiB0aGUg
d2ViIHBhZ2UuIFRoaXMgaW5jbHVkZXMgcmVwbGFjaW5nIG5ld2xpbmVzIHdpdGggc3BhY2VzLgot
ICAgICAgICAgICAgY2xpcGJvYXJkLT53cml0ZVVSTChsaW5rVVJMLCBkcmFnU291cmNlLnRleHRD
b250ZW50KCkuc2ltcGxpZnlXaGl0ZVNwYWNlKCksIHNyYyk7CisgICAgICAgICAgICBjbGlwYm9h
cmQtPndyaXRlVVJMKGxpbmtVUkwsIGhpdFRlc3RSZXN1bHQudGV4dENvbnRlbnQoKS5zaW1wbGlm
eVdoaXRlU3BhY2UoKSwgc3JjKTsKIAogICAgICAgICBpZiAoc3JjLT5zZWxlY3Rpb24oKS0+aXND
YXJldCgpICYmIHNyYy0+c2VsZWN0aW9uKCktPmlzQ29udGVudEVkaXRhYmxlKCkpIHsKICAgICAg
ICAgICAgIC8vIGEgdXNlciBjYW4gaW5pdGlhdGUgYSBkcmFnIG9uIGEgbGluayB3aXRob3V0IGhh
dmluZyBhbnkgdGV4dApAQCAtNzc4LDM3ICs3NzAsMTkgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6
c3RhcnREcmFnKEZyYW1lKiBzcmMsIENsaXBib2FyZCogY2xpcGJvYXJkLCBEcmFnT3BlcmF0aW9u
IHMKIAogICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdT
b3VyY2VBY3Rpb25MaW5rLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQpOwogICAgICAgICBpZiAoIWRy
YWdJbWFnZSkgewotICAgICAgICAgICAgZHJhZ0ltYWdlID0gY3JlYXRlRHJhZ0ltYWdlRm9yTGlu
ayhsaW5rVVJMLCBkcmFnU291cmNlLnRleHRDb250ZW50KCksIHNyYyk7CisgICAgICAgICAgICBk
cmFnSW1hZ2UgPSBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKGxpbmtVUkwsIGhpdFRlc3RSZXN1bHQu
dGV4dENvbnRlbnQoKSwgc3JjKTsKICAgICAgICAgICAgIEludFNpemUgc2l6ZSA9IGRyYWdJbWFn
ZVNpemUoZHJhZ0ltYWdlKTsKICAgICAgICAgICAgIG1fZHJhZ09mZnNldCA9IEludFBvaW50KC1z
aXplLndpZHRoKCkgLyAyLCAtTGlua0RyYWdCb3JkZXJJbnNldCk7CiAgICAgICAgICAgICBkcmFn
TG9jID0gSW50UG9pbnQobW91c2VEcmFnZ2VkUG9pbnQueCgpICsgbV9kcmFnT2Zmc2V0LngoKSwg
bW91c2VEcmFnZ2VkUG9pbnQueSgpICsgbV9kcmFnT2Zmc2V0LnkoKSk7CiAgICAgICAgIH0KICAg
ICAgICAgZG9TeXN0ZW1EcmFnKGRyYWdJbWFnZSwgZHJhZ0xvYywgbW91c2VEcmFnZ2VkUG9pbnQs
IGNsaXBib2FyZCwgc3JjLCB0cnVlKTsKLSAgICB9IGVsc2UgaWYgKGlzU2VsZWN0ZWQgJiYgKG1f
ZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pKSB7Ci0gICAgICAg
IGlmICghY2xpcGJvYXJkLT5oYXNEYXRhKCkpIHsKLSAgICAgICAgICAgIGlmIChpc05vZGVJblRl
eHRGb3JtQ29udHJvbChzcmMtPnNlbGVjdGlvbigpLT5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCkp
KQotICAgICAgICAgICAgICAgIGNsaXBib2FyZC0+d3JpdGVQbGFpblRleHQoc3JjLT5lZGl0b3Io
KS0+c2VsZWN0ZWRUZXh0KCkpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
UmVmUHRyPFJhbmdlPiBzZWxlY3Rpb25SYW5nZSA9IHNyYy0+c2VsZWN0aW9uKCktPnRvTm9ybWFs
aXplZFJhbmdlKCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHNlbGVjdGlvblJhbmdlKTsKLQot
ICAgICAgICAgICAgICAgIGNsaXBib2FyZC0+d3JpdGVSYW5nZShzZWxlY3Rpb25SYW5nZS5nZXQo
KSwgc3JjKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBtX2NsaWVudC0+d2ls
bFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24sIGRyYWdP
cmlnaW4sIGNsaXBib2FyZCk7Ci0gICAgICAgIGlmICghZHJhZ0ltYWdlKSB7Ci0gICAgICAgICAg
ICBkcmFnSW1hZ2UgPSBjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24oc3JjKTsKLSAgICAgICAg
ICAgIGRyYWdMb2MgPSBkcmFnTG9jRm9yU2VsZWN0aW9uRHJhZyhzcmMpOwotICAgICAgICAgICAg
bV9kcmFnT2Zmc2V0ID0gSW50UG9pbnQoKGludCkoZHJhZ09yaWdpbi54KCkgLSBkcmFnTG9jLngo
KSksIChpbnQpKGRyYWdPcmlnaW4ueSgpIC0gZHJhZ0xvYy55KCkpKTsKLSAgICAgICAgfQotICAg
ICAgICBkb1N5c3RlbURyYWcoZHJhZ0ltYWdlLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBjbGlwYm9h
cmQsIHNyYywgZmFsc2UpOwotICAgIH0gZWxzZSBpZiAoaXNESFRNTERyYWcpIHsKKyAgICB9IGVs
c2UgaWYgKHN0YXRlLm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKSB7CiAgICAg
ICAgIEFTU0VSVChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uREhUTUwpOwog
ICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VB
Y3Rpb25ESFRNTCwgZHJhZ09yaWdpbiwgY2xpcGJvYXJkKTsKICAgICAgICAgZG9TeXN0ZW1EcmFn
KGRyYWdJbWFnZSwgZHJhZ0xvYywgZHJhZ09yaWdpbiwgY2xpcGJvYXJkLCBzcmMsIGZhbHNlKTsK
ICAgICB9IGVsc2UgewotICAgICAgICAvLyBPbmx5IHdheSBJIGtub3cgdG8gZ2V0IGhlcmUgaXMg
aWYgdG8gZ2V0IGhlcmUgaXMgaWYgdGhlIG9yaWdpbmFsIGVsZW1lbnQgY2xpY2tlZCBvbiBpbiB0
aGUgbW91c2Vkb3duIGlzIG5vIGxvbmdlcgotICAgICAgICAvLyB1bmRlciB0aGUgbW91c2Vkb3du
IHBvaW50LCBzbyBsaW5rVVJMLCBpbWFnZVVSTCBhbmQgaXNTZWxlY3RlZCBhcmUgYWxsIGZhbHNl
L2VtcHR5LgorICAgICAgICAvLyBkcmFnZ2FibGVOb2RlKCkgZGV0ZXJtaW5lZCBhbiBpbWFnZSBv
ciBsaW5rIG5vZGUgd2FzIGRyYWdnYWJsZSwgYnV0IGl0IHR1cm5zIG91dCB0aGUKKyAgICAgICAg
Ly8gaW1hZ2Ugb3IgbGluayBoYWQgbm8gVVJMLiBPaCB3ZWxsLgogICAgICAgICBzdGFydGVkRHJh
ZyA9IGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCmluZGV4
IGJlOGM4MzRhZWU2MTU2OWJkZTIxYzhiOTBmYWU5YzA0ZmEzNWEwYmEuLjI2MWE4ZDUzZjczNjU4
YjA3MWYyMTA1NmFlNThiMjRiMWJiNDU5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIERv
Y3VtZW50OwogICAgIGNsYXNzIERyYWdDbGllbnQ7CiAgICAgY2xhc3MgRHJhZ0RhdGE7CisgICAg
c3RydWN0IERyYWdTdGF0ZTsKICAgICBjbGFzcyBFbGVtZW50OwogICAgIGNsYXNzIEZyYW1lOwog
ICAgIGNsYXNzIEZyYW1lU2VsZWN0aW9uOwpAQCAtNzUsMTMgKzc2LDEyIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGRyYWdEZXN0aW5hdGlvbkFj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOyB9CiAgICAgICAg
IERyYWdTb3VyY2VBY3Rpb24gZGVsZWdhdGVEcmFnU291cmNlQWN0aW9uKGNvbnN0IEludFBvaW50
JiBwYWdlUG9pbnQpOwogICAgICAgICAKLSAgICAgICAgTm9kZSogZHJhZ2dhYmxlTm9kZShjb25z
dCBGcmFtZSosIE5vZGUqLCBib29sIGRodG1sT0ssIGJvb2wgdWFPSywgaW50IHgsIGludCB5LCBi
b29sJiBkaHRtbFdpbGxEcmFnKSBjb25zdDsKLSAgICAgICAgYm9vbCBtYXlTdGFydERyYWdBdEV2
ZW50TG9jYXRpb24oY29uc3QgRnJhbWUqLCBjb25zdCBJbnRQb2ludCYgZnJhbWVQb3MsIE5vZGUq
KSBjb25zdDsKKyAgICAgICAgTm9kZSogZHJhZ2dhYmxlTm9kZShjb25zdCBGcmFtZSosIE5vZGUq
LCBjb25zdCBJbnRQb2ludCYsIERyYWdTdGF0ZSYpIGNvbnN0OwogICAgICAgICB2b2lkIGRyYWdF
bmRlZCgpOwogICAgICAgICAKICAgICAgICAgdm9pZCBwbGFjZURyYWdDYXJldChjb25zdCBJbnRQ
b2ludCYpOwogICAgICAgICAKLSAgICAgICAgYm9vbCBzdGFydERyYWcoRnJhbWUqIHNyYywgQ2xp
cGJvYXJkKiwgRHJhZ09wZXJhdGlvbiBzcmNPcCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBk
cmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBib29sIGlzREhUTUxEcmFnKTsK
KyAgICAgICAgYm9vbCBzdGFydERyYWcoRnJhbWUqIHNyYywgY29uc3QgRHJhZ1N0YXRlJiwgRHJh
Z09wZXJhdGlvbiBzcmNPcCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNv
bnN0IEludFBvaW50JiBkcmFnT3JpZ2luKTsKICAgICAgICAgc3RhdGljIGNvbnN0IEludFNpemUm
IG1heERyYWdJbWFnZVNpemUoKTsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQg
TGlua0RyYWdCb3JkZXJJbnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5oCmluZGV4IDZiMWY2NzU2
ZTNkMjFlNzdmYjE5YjBiOTg3YjI0MDMxZDcwZWQwZmEuLjVhYmQyYTAxY2ZmMTk2MzNiN2VlY2Jm
MzViMWY3Y2EyZDY4YTI4NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ1N0
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaApAQCAtMjYsMjMgKzI2
LDI5IEBACiAjaWZuZGVmIERyYWdTdGF0ZV9oCiAjZGVmaW5lIERyYWdTdGF0ZV9oCiAKKyNpbmNs
dWRlICJEcmFnQWN0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIENsaXBib2FyZDsKK2NsYXNzIE5vZGU7CisKIHN0cnVjdCBEcmFn
U3RhdGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERyYWdTdGF0ZSk7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CisgICAgZW51bSBFdmVudERpc3BhdGNoUG9saWN5
IHsKKyAgICAgICAgRE9fTk9UX0RJU1BBVENIX0VWRU5UUywKKyAgICAgICAgRElTUEFUQ0hfRVZF
TlRTLAorICAgIH07CiAgICAgRHJhZ1N0YXRlKCkgeyB9CisgICAgYm9vbCBzaG91bGREaXNwYXRj
aEV2ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnREaXNwYXRjaFBvbGljeSA9PSBESVNQQVRD
SF9FVkVOVFM7IH0KICAgICBSZWZQdHI8Tm9kZT4gbV9kcmFnU3JjOyAvLyBlbGVtZW50IHRoYXQg
bWF5IGJlIGEgZHJhZyBzb3VyY2UsIGZvciB0aGUgY3VycmVudCBtb3VzZSBnZXN0dXJlCi0gICAg
Ym9vbCBtX2RyYWdTcmNJc0xpbms7Ci0gICAgYm9vbCBtX2RyYWdTcmNJc0ltYWdlOwotICAgIGJv
b2wgbV9kcmFnU3JjSW5TZWxlY3Rpb247Ci0gICAgYm9vbCBtX2RyYWdTcmNNYXlCZURIVE1MOwot
ICAgIGJvb2wgbV9kcmFnU3JjTWF5QmVVQTsgLy8gQXJlIERIVE1MIGFuZC9vciB0aGUgVXNlckFn
ZW50IGFsbG93ZWQgdG8gZHJhZyBvdXQ/Ci0gICAgYm9vbCBtX2RyYWdTcmNJc0RIVE1MOworICAg
IEV2ZW50RGlzcGF0Y2hQb2xpY3kgbV9ldmVudERpc3BhdGNoUG9saWN5OworICAgIERyYWdTb3Vy
Y2VBY3Rpb24gbV9kcmFnVHlwZTsKICAgICBSZWZQdHI8Q2xpcGJvYXJkPiBtX2RyYWdDbGlwYm9h
cmQ7IC8vIHVzZWQgb24gb25seSB0aGUgc291cmNlIHNpZGUgb2YgZHJhZ2dpbmcKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBkMjE1OTVhYmM1YTViMTIwNTVkMTky
YjIzN2MyZWI0MmMwY2FlNTIzLi5jOGU2ZTg4MDJhZWM0YmI5YzM0YWZmYzE5MTZkNDVkZTdjOWI3
NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC03OCw2ICs3OCw3IEBA
CiAjaW5jbHVkZSAiVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJXaGVl
bEV2ZW50LmgiCiAjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKKyNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtNTg3LDEyICs1ODgsNiBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6ZXZlbnRNYXlTdGFydERyYWcoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkg
Y29uc3QKICAgICBpZiAoZXZlbnQuYnV0dG9uKCkgIT0gTGVmdEJ1dHRvbiB8fCBldmVudC5jbGlj
a0NvdW50KCkgIT0gMSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIGJvb2wgREhU
TUxGbGFnOwotICAgIGJvb2wgVUFGbGFnOwotICAgIGFsbG93REhUTUxEcmFnKERIVE1MRmxhZywg
VUFGbGFnKTsKLSAgICBpZiAoIURIVE1MRmxhZyAmJiAhVUFGbGFnKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KICAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7CiAgICAgaWYg
KCF2aWV3KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MDEsMTEgKzU5NiwxMiBAQCBib29s
IEV2ZW50SGFuZGxlcjo6ZXZlbnRNYXlTdGFydERyYWcoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldmVudCkgY29uc3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAor
ICAgIERyYWdTdGF0ZSBzdGF0ZTsKKyAgICB1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQo
c3RhdGUubV9ldmVudERpc3BhdGNoUG9saWN5KTsKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0
KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSk7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmll
dy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3MoKSkpOwogICAgIG1fZnJhbWUtPmNvbnRlbnRS
ZW5kZXJlcigpLT5sYXllcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7Ci0gICAgYm9vbCBz
cmNJc0RIVE1MOwotICAgIHJldHVybiByZXN1bHQuaW5uZXJOb2RlKCkgJiYgcGFnZS0+ZHJhZ0Nv
bnRyb2xsZXIoKS0+ZHJhZ2dhYmxlTm9kZShtX2ZyYW1lLCByZXN1bHQuaW5uZXJOb2RlKCksIERI
VE1MRmxhZywgVUFGbGFnLCByZXN1bHQucG9pbnQoKS54KCksIHJlc3VsdC5wb2ludCgpLnkoKSwg
c3JjSXNESFRNTCk7CisgICAgcmV0dXJuIHJlc3VsdC5pbm5lck5vZGUoKSAmJiBwYWdlLT5kcmFn
Q29udHJvbGxlcigpLT5kcmFnZ2FibGVOb2RlKG1fZnJhbWUsIHJlc3VsdC5pbm5lck5vZGUoKSwg
cmVzdWx0LnBvaW50KCksIHN0YXRlKTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZVNl
bGVjdGlvbkZvck1vdXNlRHJhZygpCkBAIC04OTIsMTEgKzg4OCw4IEBAIHZvaWQgRXZlbnRIYW5k
bGVyOjpzZXRBdXRvc2Nyb2xsUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIH0KIAog
I2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi12b2lkIEV2ZW50SGFuZGxlcjo6YWxsb3dESFRNTERy
YWcoYm9vbCYgZmxhZ0RIVE1MLCBib29sJiBmbGFnVUEpIGNvbnN0Cit2b2lkIEV2ZW50SGFuZGxl
cjo6dXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKERyYWdTdGF0ZTo6RXZlbnREaXNwYXRj
aFBvbGljeSYgcG9saWN5KSBjb25zdAogewotICAgIGZsYWdESFRNTCA9IGZhbHNlOwotICAgIGZs
YWdVQSA9IGZhbHNlOwotCiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47CiAKQEAg
LTkwOCw5ICs5MDEsMTEgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmFsbG93REhUTUxEcmFnKGJvb2wm
IGZsYWdESFRNTCwgYm9vbCYgZmxhZ1VBKSBjb25zdAogICAgIGlmICghdmlldykKICAgICAgICAg
cmV0dXJuOwogCi0gICAgdW5zaWduZWQgbWFzayA9IHBhZ2UtPmRyYWdDb250cm9sbGVyKCktPmRl
bGVnYXRlRHJhZ1NvdXJjZUFjdGlvbih2aWV3LT5jb250ZW50c1RvV2luZG93KG1fbW91c2VEb3du
UG9zKSk7Ci0gICAgZmxhZ0RIVE1MID0gKG1hc2sgJiBEcmFnU291cmNlQWN0aW9uREhUTUwpICE9
IERyYWdTb3VyY2VBY3Rpb25Ob25lOwotICAgIGZsYWdVQSA9ICgobWFzayAmIERyYWdTb3VyY2VB
Y3Rpb25JbWFnZSkgfHwgKG1hc2sgJiBEcmFnU291cmNlQWN0aW9uTGluaykgfHwgKG1hc2sgJiBE
cmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSk7CisgICAgRHJhZ1NvdXJjZUFjdGlvbiBtYXNrID0g
cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZGVsZWdhdGVEcmFnU291cmNlQWN0aW9uKHZpZXctPmNv
bnRlbnRzVG9XaW5kb3cobV9tb3VzZURvd25Qb3MpKTsKKyAgICBpZiAobWFzayAmIERyYWdTb3Vy
Y2VBY3Rpb25ESFRNTCkKKyAgICAgICAgcG9saWN5ID0gRHJhZ1N0YXRlOjpESVNQQVRDSF9FVkVO
VFM7CisgICAgZWxzZQorICAgICAgICBwb2xpY3kgPSBEcmFnU3RhdGU6OkRPX05PVF9ESVNQQVRD
SF9FVkVOVFM7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICAKQEAgLTE4
MDIsNyArMTc5Nyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBDbGlwYm9hcmQqCiAgICAgICAgIC8vIE1vcmVv
dmVyLCB0aGlzIG9yZGVyaW5nIGNvbmZvcm1zIHRvIHNlY3Rpb24gNy45LjQgb2YgdGhlIEhUTUwg
NSBzcGVjLiA8aHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2RyYWct
YW5kLWRyb3AtcHJvY2Vzc2luZy1tb2RlbD4uCiAgICAgICAgIGlmIChuZXdUYXJnZXQgJiYgY2Fu
SGFuZGxlRHJhZ0FuZERyb3BGb3JUYXJnZXQoVXBkYXRlRHJhZ0FuZERyb3AsIG5ld1RhcmdldCwg
ZXZlbnQsIGNsaXBib2FyZCwgJmFjY2VwdCkpIHsKICAgICAgICAgICAgIC8vIEFzIHBlciBzZWN0
aW9uIDcuOS40IG9mIHRoZSBIVE1MIDUgc3BlYy4sIHdlIG11c3QgYWx3YXlzIGZpcmUgYSBkcmFn
IGV2ZW50IGJlZm9yZSBmaXJpbmcgYSBkcmFnZW50ZXIsIGRyYWdsZWF2ZSwgb3IgZHJhZ292ZXIg
ZXZlbnQuCi0gICAgICAgICAgICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjICYmIGRyYWdTdGF0
ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwpIHsKKyAgICAgICAgICAgIGlmIChkcmFnU3RhdGUoKS5t
X2RyYWdTcmMgJiYgZHJhZ1N0YXRlKCkuc2hvdWxkRGlzcGF0Y2hFdmVudHMoKSkgewogICAgICAg
ICAgICAgICAgIC8vIGZvciBub3cgd2UgZG9uJ3QgY2FyZSBpZiBldmVudCBoYW5kbGVyIGNhbmNl
bHMgZGVmYXVsdCBiZWhhdmlvciwgc2luY2UgdGhlcmUgaXMgbm9uZQogICAgICAgICAgICAgICAg
IGRpc3BhdGNoRHJhZ1NyY0V2ZW50KGV2ZW50TmFtZXMoKS5kcmFnRXZlbnQsIGV2ZW50KTsKICAg
ICAgICAgICAgIH0KQEAgLTE4MjAsNyArMTgxNSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp1cGRh
dGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBDbGlwYm9hcmQq
CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG5ld1RhcmdldCAmJiBjYW5IYW5kbGVEcmFnQW5k
RHJvcEZvclRhcmdldChVcGRhdGVEcmFnQW5kRHJvcCwgbmV3VGFyZ2V0LCBldmVudCwgY2xpcGJv
YXJkLCAmYWNjZXB0KSkgewogICAgICAgICAgICAgLy8gTm90ZSwgd2hlbiBkZWFsaW5nIHdpdGgg
c3ViLWZyYW1lcywgd2UgbWF5IG5lZWQgdG8gZmlyZSBvbmx5IGEgZHJhZ292ZXIgZXZlbnQgYXMg
YSBkcmFnIGV2ZW50IG1heSBoYXZlIGJlZW4gZmlyZWQgZWFybGllci4KLSAgICAgICAgICAgIGlm
ICghbV9zaG91bGRPbmx5RmlyZURyYWdPdmVyRXZlbnQgJiYgZHJhZ1N0YXRlKCkubV9kcmFnU3Jj
ICYmIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwpIHsKKyAgICAgICAgICAgIGlmICgh
bV9zaG91bGRPbmx5RmlyZURyYWdPdmVyRXZlbnQgJiYgZHJhZ1N0YXRlKCkubV9kcmFnU3JjICYm
IGRyYWdTdGF0ZSgpLnNob3VsZERpc3BhdGNoRXZlbnRzKCkpIHsKICAgICAgICAgICAgICAgICAv
LyBmb3Igbm93IHdlIGRvbid0IGNhcmUgaWYgZXZlbnQgaGFuZGxlciBjYW5jZWxzIGRlZmF1bHQg
YmVoYXZpb3IsIHNpbmNlIHRoZXJlIGlzIG5vbmUKICAgICAgICAgICAgICAgICBkaXNwYXRjaERy
YWdTcmNFdmVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVudCk7CiAgICAgICAgICAgICB9
CkBAIC0xODM2LDcgKzE4MzEsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERy
b3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkKgogdm9pZCBFdmVu
dEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZl
bnQsIENsaXBib2FyZCogY2xpcGJvYXJkKQogewogICAgIGlmIChtX2RyYWdUYXJnZXQgJiYgY2Fu
SGFuZGxlRHJhZ0FuZERyb3BGb3JUYXJnZXQoQ2FuY2VsRHJhZ0FuZERyb3AsIG1fZHJhZ1Rhcmdl
dC5nZXQoKSwgZXZlbnQsIGNsaXBib2FyZCkpIHsKLSAgICAgICAgaWYgKGRyYWdTdGF0ZSgpLm1f
ZHJhZ1NyYyAmJiBkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MKQorICAgICAgICBpZiAo
ZHJhZ1N0YXRlKCkubV9kcmFnU3JjICYmIGRyYWdTdGF0ZSgpLnNob3VsZERpc3BhdGNoRXZlbnRz
KCkpCiAgICAgICAgICAgICBkaXNwYXRjaERyYWdTcmNFdmVudChldmVudE5hbWVzKCkuZHJhZ0V2
ZW50LCBldmVudCk7CiAgICAgICAgIGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50TmFtZXMoKS5kcmFn
bGVhdmVFdmVudCwgbV9kcmFnVGFyZ2V0LmdldCgpLCBldmVudCwgY2xpcGJvYXJkKTsKICAgICB9
CkBAIC0yNjI5LDEyICsyNjI0LDIxIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNp
c0V4Y2VlZGVkKGNvbnN0IEludFBvaW50JiBkcmFnVmlld3BvcnRMb2NhdGlvbikKICAgICBJbnRT
aXplIGRlbHRhID0gZHJhZ0xvY2F0aW9uIC0gbV9tb3VzZURvd25Qb3M7CiAgICAgCiAgICAgaW50
IHRocmVzaG9sZCA9IEdlbmVyYWxEcmFnSHlzdGVyZXNpczsKLSAgICBpZiAoZHJhZ1N0YXRlKCku
bV9kcmFnU3JjSXNJbWFnZSkKKyAgICBzd2l0Y2ggKGRyYWdTdGF0ZSgpLm1fZHJhZ1R5cGUpIHsK
KyAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb246CisgICAgICAgIHRocmVzaG9sZCA9
IFRleHREcmFnSHlzdGVyZXNpczsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEcmFnU291cmNl
QWN0aW9uSW1hZ2U6CiAgICAgICAgIHRocmVzaG9sZCA9IEltYWdlRHJhZ0h5c3RlcmVzaXM7Ci0g
ICAgZWxzZSBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjSXNMaW5rKQorICAgICAgICBicmVhazsK
KyAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25MaW5rOgogICAgICAgICB0aHJlc2hvbGQgPSBMaW5r
RHJhZ0h5c3RlcmVzaXM7Ci0gICAgZWxzZSBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjSW5TZWxl
Y3Rpb24pCi0gICAgICAgIHRocmVzaG9sZCA9IFRleHREcmFnSHlzdGVyZXNpczsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBEcmFnU291cmNlQWN0aW9uREhUTUw6CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KICAgICAK
ICAgICByZXR1cm4gYWJzKGRlbHRhLndpZHRoKCkpID49IHRocmVzaG9sZCB8fCBhYnMoZGVsdGEu
aGVpZ2h0KCkpID49IHRocmVzaG9sZDsKIH0KQEAgLTI2NDcsNyArMjY1MSw3IEBAIHZvaWQgRXZl
bnRIYW5kbGVyOjpmcmVlQ2xpcGJvYXJkKCkKIAogdm9pZCBFdmVudEhhbmRsZXI6OmRyYWdTb3Vy
Y2VFbmRlZEF0KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIERyYWdPcGVyYXRpb24g
b3BlcmF0aW9uKQogewotICAgIGlmIChkcmFnU3RhdGUoKS5tX2RyYWdTcmMgJiYgZHJhZ1N0YXRl
KCkubV9kcmFnU3JjTWF5QmVESFRNTCkgeworICAgIGlmIChkcmFnU3RhdGUoKS5tX2RyYWdTcmMg
JiYgZHJhZ1N0YXRlKCkuc2hvdWxkRGlzcGF0Y2hFdmVudHMoKSkgewogICAgICAgICBkcmFnU3Rh
dGUoKS5tX2RyYWdDbGlwYm9hcmQtPnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKG9wZXJhdGlvbik7
CiAgICAgICAgIC8vIGZvciBub3cgd2UgZG9uJ3QgY2FyZSBpZiBldmVudCBoYW5kbGVyIGNhbmNl
bHMgZGVmYXVsdCBiZWhhdmlvciwgc2luY2UgdGhlcmUgaXMgbm9uZQogICAgICAgICBkaXNwYXRj
aERyYWdTcmNFdmVudChldmVudE5hbWVzKCkuZHJhZ2VuZEV2ZW50LCBldmVudCk7CkBAIC0yNjgy
LDQwICsyNjg2LDI2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogICAgIC8vIENhcmVmdWwgdGhhdCB0aGUg
ZHJhZyBzdGFydGluZyBsb2dpYyBzdGF5cyBpbiBzeW5jIHdpdGggZXZlbnRNYXlTdGFydERyYWco
KQogICAgIAogICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0RHJhZyAmJiAhZHJhZ1N0YXRlKCku
bV9kcmFnU3JjKSB7Ci0gICAgICAgIGFsbG93REhUTUxEcmFnKGRyYWdTdGF0ZSgpLm1fZHJhZ1Ny
Y01heUJlREhUTUwsIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlVUEpOwotICAgICAgICBpZiAo
IWRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwgJiYgIWRyYWdTdGF0ZSgpLm1fZHJhZ1Ny
Y01heUJlVUEpCi0gICAgICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOyAv
LyBubyBlbGVtZW50IGlzIGRyYWdnYWJsZQotICAgIH0KKyAgICAgICAgdXBkYXRlRHJhZ1NvdXJj
ZUFjdGlvbnNBbGxvd2VkKGRyYWdTdGF0ZSgpLm1fZXZlbnREaXNwYXRjaFBvbGljeSk7CiAKLSAg
ICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcgJiYgIWRyYWdTdGF0ZSgpLm1fZHJhZ1NyYykg
ewogICAgICAgICAvLyB0cnkgdG8gZmluZCBhbiBlbGVtZW50IHRoYXQgd2FudHMgdG8gYmUgZHJh
Z2dlZAogICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFk
T25seSk7CisgICAgICAgIC8vIEZJWE1FOiBUaGUgaW5jb25zaXN0ZW50IHVzZSBvZiBtX21vdXNl
RG93blBvcyBhbmQgdmlldy0+d2luZG93VG9Db250ZW50cygpIGlzIG9kZC4KICAgICAgICAgSGl0
VGVzdFJlc3VsdCByZXN1bHQobV9tb3VzZURvd25Qb3MpOwogICAgICAgICBtX2ZyYW1lLT5jb250
ZW50UmVuZGVyZXIoKS0+bGF5ZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogICAgICAg
ICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAgICAgICBpZiAobm9kZSAmJiBt
X2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdTcmMgPSBtX2Zy
YW1lLT5wYWdlKCktPmRyYWdDb250cm9sbGVyKCktPmRyYWdnYWJsZU5vZGUobV9mcmFtZSwgbm9k
ZSwgZHJhZ1N0YXRlKCkubV9kcmFnU3JjTWF5QmVESFRNTCwgZHJhZ1N0YXRlKCkubV9kcmFnU3Jj
TWF5QmVVQSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX21vdXNlRG93blBvcy54KCks
IG1fbW91c2VEb3duUG9zLnkoKSwgZHJhZ1N0YXRlKCkubV9kcmFnU3JjSXNESFRNTCk7CisgICAg
ICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdTcmMgPSBtX2ZyYW1lLT5wYWdlKCktPmRyYWdDb250
cm9sbGVyKCktPmRyYWdnYWJsZU5vZGUobV9mcmFtZSwgbm9kZSwgbV9tb3VzZURvd25Qb3MsIGRy
YWdTdGF0ZSgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFn
U3JjID0gMDsKICAgICAgICAgCiAgICAgICAgIGlmICghZHJhZ1N0YXRlKCkubV9kcmFnU3JjKQog
ICAgICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsgLy8gbm8gZWxlbWVu
dCBpcyBkcmFnZ2FibGUKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvLyByZW1lbWJlciBz
b21lIGZhY3RzIGFib3V0IHRoaXMgc291cmNlLCB3aGlsZSB3ZSBoYXZlIGEgSGl0VGVzdFJlc3Vs
dCBoYW5keQotICAgICAgICAgICAgbm9kZSA9IHJlc3VsdC5VUkxFbGVtZW50KCk7Ci0gICAgICAg
ICAgICBkcmFnU3RhdGUoKS5tX2RyYWdTcmNJc0xpbmsgPSBub2RlICYmIG5vZGUtPmlzTGluaygp
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBub2RlID0gcmVzdWx0LmlubmVyTm9uU2hhcmVk
Tm9kZSgpOwotICAgICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjSXNJbWFnZSA9IG5vZGUg
JiYgbm9kZS0+cmVuZGVyZXIoKSAmJiBub2RlLT5yZW5kZXJlcigpLT5pc0ltYWdlKCk7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0luU2VsZWN0aW9uID0g
bV9mcmFtZS0+c2VsZWN0aW9uKCktPmNvbnRhaW5zKG1fbW91c2VEb3duUG9zKTsKLSAgICAgICAg
fSAgICAgICAgICAgICAgICAKICAgICB9CiAgICAgCiAgICAgLy8gRm9yIGRyYWdzIHN0YXJ0aW5n
IGluIHRoZSBzZWxlY3Rpb24sIHRoZSB1c2VyIG11c3Qgd2FpdCBiZXR3ZWVuIHRoZSBtb3VzZWRv
d24gYW5kIG1vdXNlZHJhZywKICAgICAvLyBvciBlbHNlIHdlIGJhaWwgb24gdGhlIGRyYWdnaW5n
IHN0dWZmIGFuZCBhbGxvdyBzZWxlY3Rpb24gdG8gb2NjdXIKLSAgICBpZiAobV9tb3VzZURvd25N
YXlTdGFydERyYWcgJiYgIWRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzSW1hZ2UgJiYgZHJhZ1N0YXRl
KCkubV9kcmFnU3JjSW5TZWxlY3Rpb24gJiYgZXZlbnQuZXZlbnQoKS50aW1lc3RhbXAoKSAtIG1f
bW91c2VEb3duVGltZXN0YW1wIDwgVGV4dERyYWdEZWxheSkgeworICAgIGlmIChtX21vdXNlRG93
bk1heVN0YXJ0RHJhZyAmJiBkcmFnU3RhdGUoKS5tX2RyYWdUeXBlID09IERyYWdTb3VyY2VBY3Rp
b25TZWxlY3Rpb24gJiYgZXZlbnQuZXZlbnQoKS50aW1lc3RhbXAoKSAtIG1fbW91c2VEb3duVGlt
ZXN0YW1wIDwgVGV4dERyYWdEZWxheSkgewogICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJh
ZyA9IGZhbHNlOwogICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdTcmMgPSAwOwogICAgICAgICAv
LyAuLi5idXQgaWYgdGhpcyB3YXMgdGhlIGZpcnN0IGNsaWNrIGluIHRoZSB3aW5kb3csIHdlIGRv
bid0IGV2ZW4gd2FudCB0byBzdGFydCBzZWxlY3Rpb24KQEAgLTI3NDQsMTAgKzI3MzQsMTAgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyYgZXZlbnQpCiAgICAgICAgICAgICAgICAgICAgICAvLyB0byBtYWtlIHN1cmUgaXQg
Z2V0cyBudW1iaWZpZWQKICAgICBkcmFnU3RhdGUoKS5tX2RyYWdDbGlwYm9hcmQgPSBjcmVhdGVE
cmFnZ2luZ0NsaXBib2FyZCgpOyAgCiAgICAgCi0gICAgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1Ny
Y01heUJlREhUTUwpIHsKKyAgICBpZiAoZHJhZ1N0YXRlKCkuc2hvdWxkRGlzcGF0Y2hFdmVudHMo
KSkgewogICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGlzIGEgRE9NIGJhc2VkIGRyYWcs
IGlmIGl0IGlzIGdldCB0aGUgRE9NIHNwZWNpZmllZCBkcmFnIAogICAgICAgICAvLyBpbWFnZSBh
bmQgb2Zmc2V0Ci0gICAgICAgIGlmIChkcmFnU3RhdGUoKS5tX2RyYWdTcmNJc0RIVE1MKSB7Cisg
ICAgICAgIGlmIChkcmFnU3RhdGUoKS5tX2RyYWdUeXBlID09IERyYWdTb3VyY2VBY3Rpb25ESFRN
TCkgewogICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBkcmFnU3RhdGUo
KS5tX2RyYWdTcmMtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhp
cyBkb2Vzbid0IHdvcmsgY29ycmVjdGx5IHdpdGggdHJhbnNmb3Jtcy4KICAgICAgICAgICAgICAg
ICBGbG9hdFBvaW50IGFic1BvcyA9IHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGUoKTsKQEAgLTI3
ODMsOCArMjc3Myw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogICAgIGlmIChtX21vdXNlRG93bk1heVN0
YXJ0RHJhZykgewogICAgICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgICAg
ICBEcmFnQ29udHJvbGxlciogZHJhZ0NvbnRyb2xsZXIgPSBwYWdlID8gcGFnZS0+ZHJhZ0NvbnRy
b2xsZXIoKSA6IDA7Ci0gICAgICAgIGJvb2wgc3RhcnRlZERyYWcgPSBkcmFnQ29udHJvbGxlciAm
JiBkcmFnQ29udHJvbGxlci0+c3RhcnREcmFnKG1fZnJhbWUsIGRyYWdTdGF0ZSgpLm1fZHJhZ0Ns
aXBib2FyZC5nZXQoKSwgc3JjT3AsIGV2ZW50LmV2ZW50KCksIG1fbW91c2VEb3duUG9zLCBkcmFn
U3RhdGUoKS5tX2RyYWdTcmNJc0RIVE1MKTsKLSAgICAgICAgaWYgKCFzdGFydGVkRHJhZyAmJiBk
cmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MKSB7CisgICAgICAgIGJvb2wgc3RhcnRlZERy
YWcgPSBkcmFnQ29udHJvbGxlciAmJiBkcmFnQ29udHJvbGxlci0+c3RhcnREcmFnKG1fZnJhbWUs
IGRyYWdTdGF0ZSgpLCBzcmNPcCwgZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25Qb3MpOworICAg
ICAgICBpZiAoIXN0YXJ0ZWREcmFnICYmIGRyYWdTdGF0ZSgpLnNob3VsZERpc3BhdGNoRXZlbnRz
KCkpIHsKICAgICAgICAgICAgIC8vIERyYWcgd2FzIGNhbm5lZCBhdCB0aGUgbGFzdCBtaW51dGUg
LSB3ZSBvd2UgbV9kcmFnU3JjIGEgRFJBR0VORCBldmVudAogICAgICAgICAgICAgZGlzcGF0Y2hE
cmFnU3JjRXZlbnQoZXZlbnROYW1lcygpLmRyYWdlbmRFdmVudCwgZXZlbnQuZXZlbnQoKSk7CiAg
ICAgICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmgKaW5kZXggYWE0NDRiMzQ2NjNiNTljMzc4YTQxN2M3MmVkZGVjOWNlYWJk
OTJhMS4uYjQxZmY1Y2E3NWQxMDNhZDY1NTUwMTM0YmEzZGIyOWMwYjgyNTY1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEV2ZW50SGFu
ZGxlcl9oCiAKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgorI2luY2x1ZGUgIkRyYWdTdGF0ZS5o
IgogI2luY2x1ZGUgIkZvY3VzRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlcXVlc3Qu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKQEAgLTQ5LDcgKzUwLDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDbGlwYm9hcmQ7CiBjbGFzcyBDdXJzb3I7Ci1zdHJ1
Y3QgRHJhZ1N0YXRlOwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBFdmVudFRhcmdldDsKIGNsYXNzIEZs
b2F0UG9pbnQ7CkBAIC0zMjIsNyArMzIyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlZmF1bHRB
cnJvd0V2ZW50SGFuZGxlcihGb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCopOwogCiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICB2b2lkIGFsbG93REhUTUxEcmFnKGJvb2wmIGZsYWdE
SFRNTCwgYm9vbCYgZmxhZ1VBKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZURyYWdTb3VyY2VBY3Rp
b25zQWxsb3dlZChEcmFnU3RhdGU6OkV2ZW50RGlzcGF0Y2hQb2xpY3kmKSBjb25zdDsKICNlbmRp
ZgogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgY2FsbGVkIGF0IHRoZSBiZWdpbm5pbmcgb2Yg
aGFuZGxlTW91c2VVcCBhbmQgaGFuZGxlRHJhZy4gIAo=
</data>
<flag name="commit-queue"
          id="86183"
          type_id="3"
          status="-"
          setter="dbates"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93080</attachid>
            <date>2011-05-10 23:54:09 -0700</date>
            <delta_ts>2011-05-11 12:13:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59409-20110510235408.patch</filename>
            <type>text/plain</type>
            <size>33306</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYxNjQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiYTQzNTYzOWJmMjE1MWNjYTk4MmJj
YjYzNDZhZmZjNDczMWYxZTkxLi5lZWViZDE0OTVjZmNiZmFiZDlmMWYyN2JjZGM1NDkyYWQxNTAy
ZDAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDUtMTAgIERhbmllbCBDaGVuZyAgPGRj
aGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wcm92ZSBkcmFnIHN0YXJ0IGxvZ2ljCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTQwOQorCisgICAgICAgIFJlYmFzZSB0ZXN0
cyB0byBuZXcgZXhwZWN0ZWQgYmVoYXZpb3IuCisKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9h
cmQvZHJhZy1zZWxlY3RlZC1pbWFnZS10by1jb250ZW50ZWRpdGFibGUuaHRtbDogU2VsZWN0aW9u
cyBhcmUgcHJpb3JpdGl6ZWQKKyAgICAgICAgb3ZlciBpbWFnZXMgZHVyaW5nIHRoZSBkcmFnZ2lu
ZyBwcm9jZXNzIG5vdywgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byBoYXZlIGEgZGVsYXkgYmV0d2Vl
biB0aGUKKyAgICAgICAgbW91c2UgZG93biBhbmQgdGhlIG1vdXNlIG1vdmUuIFRoZSBjaGFuZ2Ug
aW4gZHJhZ2dpbmcgcHJpb3JpdHkgbWF0Y2hlcyBJRSBhbmQgRmlyZWZveAorICAgICAgICBiZWhh
dmlvci4KKyAgICAgICAgKiBmYXN0L2Nzcy91c2VyLWRyYWctbm9uZS5odG1sOiBUZXh0IG5vZGVz
IGFyZSBubyBsb25nZXIgY29uc2lkZXJlZCBkcmFnZ2FibGUuCisKIDIwMTEtMDUtMTAgIEFiaGlz
aGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
ZHJhZy1zZWxlY3RlZC1pbWFnZS10by1jb250ZW50ZWRpdGFibGUuaHRtbCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGVkLWltYWdlLXRvLWNvbnRlbnRlZGl0YWJs
ZS5odG1sCmluZGV4IDIxNDBhMTUwYjJjYjBkMjQ5NTJjNDI1ZDQ2YjBkZjk4NDNiNGQ4N2UuLmMw
ZjNiNzBkNWQwNTEyODFjMjhiODcwODhhZjFhM2U3M2UxYmRiOWEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGVkLWltYWdlLXRvLWNvbnRlbnRl
ZGl0YWJsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNl
bGVjdGVkLWltYWdlLXRvLWNvbnRlbnRlZGl0YWJsZS5odG1sCkBAIC00NCw2ICs0NCw3IEBAIGZ1
bmN0aW9uIHN0ZXAyKCkKICAgICB4ID0gZS5vZmZzZXRMZWZ0ICsgZS5vZmZzZXRXaWR0aCAvIDI7
CiAgICAgeSA9IGUub2Zmc2V0VG9wICsgZS5vZmZzZXRIZWlnaHQgLyAyOwogICAgIAorICAgIGV2
ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDUwMCk7CiAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
eCwgeSk7CiAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwogICAgIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3MvdXNlci1kcmFnLW5vbmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3VzZXItZHJhZy1ub25lLmh0bWwKaW5kZXggYzg4Y2FhZjZlZTU2YzM4NmI4ZTNiNmY0NDVk
NGMxYTc3M2UxYTA4Yy4uZjkzMzUxMzVjNWQ5YzFhNWY5MTdlN2UwYzViZTg0YTU4ZTlhODE0YSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXNlci1kcmFnLW5vbmUuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy91c2VyLWRyYWctbm9uZS5odG1sCkBAIC0xOSwxMSArMTks
MTEgQEAKICAgICAgICAgPGltZyBjbGFzcz0iZHJhZy1ub25lIiBzcmM9InJlc291cmNlcy9ncmVl
bmJveC5wbmciPgogICAgIDwvZGl2PgogCi0gICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9IklN
RyB0ZXh0IHRleHQgQSBuaWwiPgorICAgIDxkaXYgY2xhc3M9ImJveCIgZXhwZWN0PSJJTUcgQSBB
IEEgbmlsIj4KICAgICAgICAgPGEgaHJlZj0iIyI+PGltZyBzcmM9InJlc291cmNlcy9ncmVlbmJv
eC5wbmciPng8YnI+PHNwYW4+eTwvc3Bhbj48L2E+CiAgICAgPC9kaXY+CiAKLSAgICA8ZGl2IGNs
YXNzPSJib3giIGV4cGVjdD0iSU1HIHRleHQgdGV4dCBBIG5pbCI+CisgICAgPGRpdiBjbGFzcz0i
Ym94IiBleHBlY3Q9IklNRyBBIEEgQSBuaWwiPgogICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0i
ZHJhZy1lbGVtZW50Ij48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bh
bj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIApAQCAtMzEsMTEgKzMxLDExIEBACiAgICAgICAg
IDxhIGhyZWY9IiMiIGNsYXNzPSJkcmFnLW5vbmUiPjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW5i
b3gucG5nIj54PGJyPjxzcGFuPnk8L3NwYW4+PC9hPgogICAgIDwvZGl2PgogCi0gICAgPGRpdiBj
bGFzcz0iYm94IiBleHBlY3Q9IkEgdGV4dCB0ZXh0IEEgbmlsIj4KKyAgICA8ZGl2IGNsYXNzPSJi
b3giIGV4cGVjdD0iQSBBIEEgQSBuaWwiPgogICAgICAgICA8YSBocmVmPSIjIj48aW1nIGNsYXNz
PSJkcmFnLW5vbmUiIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9z
cGFuPjwvYT4KICAgICA8L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9ImJveCIgZXhwZWN0PSJBIHRl
eHQgdGV4dCBBIG5pbCI+CisgICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9IkEgQSBBIEEgbmls
Ij4KICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyYWctZWxlbWVudCI+PGltZyBjbGFzcz0i
ZHJhZy1ub25lIiBzcmM9InJlc291cmNlcy9ncmVlbmJveC5wbmciPng8YnI+PHNwYW4+eTwvc3Bh
bj48L2E+CiAgICAgPC9kaXY+CiAKQEAgLTQzLDExICs0MywxMSBAQAogICAgICAgICA8YSBocmVm
PSIjIiBjbGFzcz0iZHJhZy1ub25lIj48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+
eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9ImJv
eCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSB0ZXh0IHRleHQgQSBESVYiPgorICAgIDxkaXYgY2xh
c3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSBBIEEgQSBESVYiPgogICAgICAgICA8YSBo
cmVmPSIjIj48aW1nIGNsYXNzPSJkcmFnLW5vbmUiIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBu
ZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9
ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSB0ZXh0IHRleHQgQSBESVYiPgorICAgIDxkaXYg
Y2xhc3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSBBIEEgQSBESVYiPgogICAgICAgICA8
YSBocmVmPSIjIiBjbGFzcz0iZHJhZy1lbGVtZW50Ij48aW1nIGNsYXNzPSJkcmFnLW5vbmUiIHNy
Yz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8
L2Rpdj4KIDwvZGl2PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE3ZDdlMDI3ZTZmNDA3NTM4ZDA3Y2VjOGNmNDg5
MDllNjY3YTBmNDkuLmI0NDZmNWM3OTlkMDhjOGIxYzk3M2Q5MWI4NjEwODEyYWM1M2U3ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMS0wNS0xMCAgRGFuaWVsIENoZW5nICA8ZGNo
ZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbXByb3ZlIGRyYWcgc3RhcnQgbG9naWMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NDA5CisKKyAgICAgICAgUmV3cml0ZSBhbmQg
c2ltcGxpZnkgdGhlIGRyYWdnaW5nIGxvZ2ljIHRvIGJldHRlciBtYXRjaCBJRSwgRmlyZWZveCwg
YW5kIHRoZSBiZWhhdmlvcgorICAgICAgICBkZWZpbmVkIGluIHRoZSBzcGVjLiBBbW9uZyBvdGhl
ciB0aGluZ3M6CisgICAgICAgIC0gZHJhZ2dhYmxlTm9kZSgpIG5vIGxvbmdlciByZXR1cm5zIHRl
eHQgbm9kZXMgd2hlbiBkcmFnZ2luZyBhbmNob3JzLgorICAgICAgICAtIFdoZW4gc3RhcnRpbmcg
YSBkcmFnIG92ZXIgYW4gaW1hZ2UgaW4gYSBzZWxlY3Rpb24sIHByZWZlciB0byBkcmFnIHRoZSBz
ZWxlY3Rpb24uCisgICAgICAgIC0gU2V2ZXJhbCByZWR1bmRhbnQgaGl0IHRlc3RzIGhhdmUgYmVl
biByZW1vdmVkLgorICAgICAgICAtIE1pbm9yIHJlZmFjdG9yaW5nIHRvIG1ha2UgdGhlIGxvZ2lj
IGVhc2llciB0byBmb2xsb3cuCisKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpzdGFydERyYWcpOgorICAgICAgICAqIHBhZ2Uv
RHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL0RyYWdTdGF0ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ1N0YXRlOjpzaG91bGREaXNwYXRjaEV2ZW50cyk6CisgICAgICAgICogcGFn
ZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpldmVu
dE1heVN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZURy
YWdTb3VyY2VBY3Rpb25zQWxsb3dlZCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OnVwZGF0ZURyYWdBbmREcm9wKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Y2Fu
Y2VsRHJhZ0FuZERyb3ApOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkcmFnSHlz
dGVyZXNpc0V4Y2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ1Nv
dXJjZUVuZGVkQXQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFn
KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorCiAyMDExLTA1LTA2ICBCcmV0dCBX
aWxzb24gIDxicmV0dHdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
QmFydGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDgxY2U5MmQ0
ZjUwZDY5OTBjYmIzZmRmYTJlMGM1ZWQ3MTI0ZThkNmEuLmViZjk3ODM0Mzg2YWI0NDVkNjcwMmYx
NjdiYmE1OGE4N2ExZTZmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
CkBAIC01NjksNzMgKzU2OSw0OSBAQCBib29sIERyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWco
RHJhZ0RhdGEqIGRyYWdEYXRhLCBEcmFnT3BlcmF0aW9uJiBvcGVyYXRpb24pCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLU5vZGUqIERyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVOb2RlKGNvbnN0IEZy
YW1lKiBzcmMsIE5vZGUqIHN0YXJ0Tm9kZSwgYm9vbCBkaHRtbE9LLCBib29sIHVhT0ssIGludCB4
LCBpbnQgeSwgYm9vbCYgZGh0bWxXaWxsRHJhZykgY29uc3QKK05vZGUqIERyYWdDb250cm9sbGVy
OjpkcmFnZ2FibGVOb2RlKGNvbnN0IEZyYW1lKiBzcmMsIE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3Qg
SW50UG9pbnQmIGRyYWdPcmlnaW4sIERyYWdTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgaWYg
KCFkaHRtbE9LICYmICF1YU9LKQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoc3JjLT5zZWxl
Y3Rpb24oKS0+Y29udGFpbnMoZHJhZ09yaWdpbikpIHsKKyAgICAgICAgc3RhdGUubV9kcmFnVHlw
ZSA9IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb247CisgICAgICAgIHJldHVybiBzdGFydE5vZGU7
CisgICAgfQogCiAgICAgZm9yIChjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc3RhcnRO
b2RlLT5yZW5kZXJlcigpOyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCkp
IHsKICAgICAgICAgTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5ub2RlKCk7Ci0gICAgICAgIGlmIChu
b2RlICYmIG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6VEVYVF9OT0RFKSB7Ci0gICAgICAgICAg
ICAvLyBTaW5jZSB0aGVyZSdzIG5vIHdheSBmb3IgdGhlIGF1dGhvciB0byBhZGRyZXNzIHRoZSAt
d2Via2l0LXVzZXItZHJhZyBzdHlsZSBmb3IgYSB0ZXh0IG5vZGUsCi0gICAgICAgICAgICAvLyB3
ZSB1c2Ugb3VyIG93biBqdWRnZW1lbnQuCi0gICAgICAgICAgICBpZiAodWFPSyAmJiBtYXlTdGFy
dERyYWdBdEV2ZW50TG9jYXRpb24oc3JjLCBJbnRQb2ludCh4LCB5KSwgbm9kZSkpIHsKLSAgICAg
ICAgICAgICAgICBkaHRtbFdpbGxEcmFnID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG5vZGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobm9kZS0+Y2FuU3RhcnRTZWxl
Y3Rpb24oKSkKLSAgICAgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgaGF2ZSBhIGNsaWNr
IGluIHRoZSB1bnNlbGVjdGVkIHBvcnRpb24gb2YgdGV4dC4gSWYgdGhpcyB0ZXh0IGlzCi0gICAg
ICAgICAgICAgICAgLy8gc2VsZWN0YWJsZSwgd2Ugd2FudCB0byBzdGFydCB0aGUgc2VsZWN0aW9u
IHByb2Nlc3MgaW5zdGVhZCBvZiBsb29raW5nIGZvciBhIHBhcmVudAotICAgICAgICAgICAgICAg
IC8vIHRvIHRyeSB0byBkcmFnLgotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9
IGVsc2UgeworICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAvLyBBbm9ueW1vdXMgcmVu
ZGVyIGJsb2NrcyBkb24ndCBjb3JyZXNwb25kIHRvIGFjdHVhbCBET00gbm9kZXMsIHNvIHdlIHNr
aXAgb3ZlciB0aGVtCisgICAgICAgICAgICAvLyBmb3IgdGhlIHB1cnBvc2VzIG9mIGZpbmRpbmcg
YSBkcmFnZ2FibGUgbm9kZS4KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAobm9k
ZS0+aXNUZXh0Tm9kZSgpICYmIG5vZGUtPmNhblN0YXJ0U2VsZWN0aW9uKCkpCisgICAgICAgICAg
ICAvLyBJbiB0aGlzIGNhc2Ugd2UgaGF2ZSBhIGNsaWNrIGluIHRoZSB1bnNlbGVjdGVkIHBvcnRp
b24gb2YgdGV4dC4gSWYgdGhpcyB0ZXh0IGlzCisgICAgICAgICAgICAvLyBzZWxlY3RhYmxlLCB3
ZSB3YW50IHRvIHN0YXJ0IHRoZSBzZWxlY3Rpb24gcHJvY2VzcyBpbnN0ZWFkIG9mIGxvb2tpbmcg
Zm9yIGEgcGFyZW50CisgICAgICAgICAgICAvLyB0byB0cnkgdG8gZHJhZy4KKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CiAgICAgICAg
ICAgICBFVXNlckRyYWcgZHJhZ01vZGUgPSByZW5kZXJlci0+c3R5bGUoKS0+dXNlckRyYWcoKTsK
LSAgICAgICAgICAgIGlmIChkaHRtbE9LICYmIGRyYWdNb2RlID09IERSQUdfRUxFTUVOVCkgewot
ICAgICAgICAgICAgICAgIGRodG1sV2lsbERyYWcgPSB0cnVlOworICAgICAgICAgICAgaWYgKCht
X2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uREhUTUwpICYmIGRyYWdNb2RlID09
IERSQUdfRUxFTUVOVCkgeworICAgICAgICAgICAgICAgIHN0YXRlLm1fZHJhZ1R5cGUgPSBEcmFn
U291cmNlQWN0aW9uREhUTUw7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpZiAodWFPSyAmJiBkcmFnTW9kZSA9PSBEUkFHX0FVVE8gJiYg
bWF5U3RhcnREcmFnQXRFdmVudExvY2F0aW9uKHNyYywgSW50UG9pbnQoeCwgeSksIG5vZGUpKSB7
Ci0gICAgICAgICAgICAgICAgZGh0bWxXaWxsRHJhZyA9IGZhbHNlOwotICAgICAgICAgICAgICAg
IHJldHVybiBub2RlOworICAgICAgICAgICAgaWYgKGRyYWdNb2RlID09IERSQUdfQVVUTykgewor
ICAgICAgICAgICAgICAgIGlmICgobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlv
bkltYWdlKQorICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6aW1nVGFnKQorICAgICAgICAgICAgICAgICAgICAmJiBzcmMtPnNldHRpbmdzKCktPmxvYWRz
SW1hZ2VzQXV0b21hdGljYWxseSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLm1fZHJh
Z1R5cGUgPSBEcmFnU291cmNlQWN0aW9uSW1hZ2U7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBub2RlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoKG1fZHJhZ1Nv
dXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25MaW5rKQorICAgICAgICAgICAgICAgICAgICAm
JiBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YVRhZykKKyAgICAgICAgICAgICAgICAgICAg
JiYgc3RhdGljX2Nhc3Q8SFRNTEFuY2hvckVsZW1lbnQqPihub2RlKS0+aXNMaXZlTGluaygpKSB7
CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLm1fZHJhZ1R5cGUgPSBEcmFnU291cmNlQWN0aW9u
TGluazsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiAwOwogfQogCi1i
b29sIERyYWdDb250cm9sbGVyOjptYXlTdGFydERyYWdBdEV2ZW50TG9jYXRpb24oY29uc3QgRnJh
bWUqIGZyYW1lLCBjb25zdCBJbnRQb2ludCYgZnJhbWVQb3MsIE5vZGUqIG5vZGUpIGNvbnN0Ci17
Ci0gICAgQVNTRVJUKGZyYW1lKTsKLSAgICBBU1NFUlQoZnJhbWUtPnNldHRpbmdzKCkpOwotCi0g
ICAgaWYgKCFmcmFtZS0+dmlldygpIHx8ICFmcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIEhpdFRlc3RSZXN1bHQgbW91c2VEb3duVGFyZ2V0ID0g
SGl0VGVzdFJlc3VsdChmcmFtZVBvcyk7Ci0KLSAgICBtb3VzZURvd25UYXJnZXQgPSBmcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGZyYW1lUG9zLCB0cnVlKTsKLSAg
ICBpZiAobm9kZSkKLSAgICAgICAgbW91c2VEb3duVGFyZ2V0LnNldElubmVyTm9uU2hhcmVkTm9k
ZShub2RlKTsKLQotICAgIGlmIChtb3VzZURvd25UYXJnZXQuaW1hZ2UoKQotICAgICAgICAmJiAh
bW91c2VEb3duVGFyZ2V0LmFic29sdXRlSW1hZ2VVUkwoKS5pc0VtcHR5KCkKLSAgICAgICAgJiYg
ZnJhbWUtPnNldHRpbmdzKCktPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpCi0gICAgICAgICYm
IG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25JbWFnZSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0KLSAgICBpZiAoIW1vdXNlRG93blRhcmdldC5hYnNvbHV0ZUxpbmtVUkwoKS5p
c0VtcHR5KCkKLSAgICAgICAgJiYgbV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlv
bkxpbmsKLSAgICAgICAgJiYgbW91c2VEb3duVGFyZ2V0LmlzTGl2ZUxpbmsoKQotICAgICAgICAm
JiBtb3VzZURvd25UYXJnZXQuVVJMRWxlbWVudCgpLT5yZW5kZXJlcigpICYmIG1vdXNlRG93blRh
cmdldC5VUkxFbGVtZW50KCktPnJlbmRlcmVyKCktPnN0eWxlKCktPnVzZXJEcmFnKCkgIT0gRFJB
R19OT05FKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChtb3VzZURvd25UYXJnZXQu
aXNTZWxlY3RlZCgpCi0gICAgICAgICYmIG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VB
Y3Rpb25TZWxlY3Rpb24pCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCiBzdGF0aWMgQ2FjaGVkSW1hZ2UqIGdldENhY2hlZEltYWdlKEVsZW1lbnQqIGVsZW1l
bnQpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQpOwpAQCAtNjk1LDE5ICs2NzEsMTcgQEAgc3RhdGlj
IEludFBvaW50IGRyYWdMb2NGb3JTZWxlY3Rpb25EcmFnKEZyYW1lKiBzcmMpCiAgICAgcmV0dXJu
IEludFBvaW50KHhwb3MsIHlwb3MpOwogfQogCi1ib29sIERyYWdDb250cm9sbGVyOjpzdGFydERy
YWcoRnJhbWUqIHNyYywgQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIERyYWdPcGVyYXRpb24gc3JjT3As
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJh
Z09yaWdpbiwgYm9vbCBpc0RIVE1MRHJhZykKK2Jvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJh
ZyhGcmFtZSogc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uIHNyY09w
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRy
YWdPcmlnaW4pCiB7CiAgICAgQVNTRVJUKHNyYyk7Ci0gICAgQVNTRVJUKGNsaXBib2FyZCk7CiAK
ICAgICBpZiAoIXNyYy0+dmlldygpIHx8ICFzcmMtPmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBIaXRUZXN0UmVzdWx0IGRyYWdTb3VyY2UgPSBIaXRUZXN0
UmVzdWx0KGRyYWdPcmlnaW4pOwotICAgIGRyYWdTb3VyY2UgPSBzcmMtPmV2ZW50SGFuZGxlcigp
LT5oaXRUZXN0UmVzdWx0QXRQb2ludChkcmFnT3JpZ2luLCB0cnVlKTsKLSAgICBLVVJMIGxpbmtV
UkwgPSBkcmFnU291cmNlLmFic29sdXRlTGlua1VSTCgpOwotICAgIEtVUkwgaW1hZ2VVUkwgPSBk
cmFnU291cmNlLmFic29sdXRlSW1hZ2VVUkwoKTsKLSAgICBib29sIGlzU2VsZWN0ZWQgPSBkcmFn
U291cmNlLmlzU2VsZWN0ZWQoKTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQgPSBz
cmMtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChkcmFnT3JpZ2luLCB0cnVl
KTsKKyAgICAvLyBGSVhNRTogU2FuaXR5IGNoZWNrIGhlcmUgdGhhdCB3ZSdyZSBzdGlsbCBkcmFn
Z2luZyB0aGUgc2FtZSBub2RlLgorICAgIEtVUkwgbGlua1VSTCA9IGhpdFRlc3RSZXN1bHQuYWJz
b2x1dGVMaW5rVVJMKCk7CisgICAgS1VSTCBpbWFnZVVSTCA9IGhpdFRlc3RSZXN1bHQuYWJzb2x1
dGVJbWFnZVVSTCgpOwogCiAgICAgSW50UG9pbnQgbW91c2VEcmFnZ2VkUG9pbnQgPSBzcmMtPnZp
ZXcoKS0+d2luZG93VG9Db250ZW50cyhkcmFnRXZlbnQucG9zKCkpOwogCkBAIC03MTgsMTQgKzY5
MiwxNCBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUqIHNyYywgQ2xpcGJv
YXJkKiBjbGlwYm9hcmQsIERyYWdPcGVyYXRpb24gcwogICAgIEludFBvaW50IGRyYWdMb2MoMCwg
MCk7CiAgICAgSW50UG9pbnQgZHJhZ0ltYWdlT2Zmc2V0KDAsIDApOwogCi0gICAgaWYgKGlzREhU
TUxEcmFnKQorICAgIENsaXBib2FyZCogY2xpcGJvYXJkID0gc3RhdGUubV9kcmFnQ2xpcGJvYXJk
LmdldCgpOworICAgIGlmIChzdGF0ZS5tX2RyYWdUeXBlID09IERyYWdTb3VyY2VBY3Rpb25ESFRN
TCkKICAgICAgICAgZHJhZ0ltYWdlID0gY2xpcGJvYXJkLT5jcmVhdGVEcmFnSW1hZ2UoZHJhZ0lt
YWdlT2Zmc2V0KTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gVGhpcyBkcmFnIG9wZXJhdGlvbiBp
cyBub3QgYSBESFRNTCBkcmFnIGFuZCBtYXkgZ28gb3V0c2lkZSB0aGUgV2ViVmlldy4KLSAgICAg
ICAgLy8gV2UgcHJvdmlkZSBhIGRlZmF1bHQgc2V0IG9mIGFsbG93ZWQgZHJhZyBvcGVyYXRpb25z
IHRoYXQgZm9sbG93cyBmcm9tOgorICAgIGlmIChzdGF0ZS5tX2RyYWdUeXBlID09IERyYWdTb3Vy
Y2VBY3Rpb25TZWxlY3Rpb24gfHwgIWltYWdlVVJMLmlzRW1wdHkoKSB8fCAhbGlua1VSTC5pc0Vt
cHR5KCkpCisgICAgICAgIC8vIFNlbGVjdGlvbiwgaW1hZ2UsIGFuZCBsaW5rIGRyYWdzIHJlY2Vp
dmUgYSBkZWZhdWx0IHNldCBvZiBhbGxvd2VkIGRyYWcgb3BlcmF0aW9ucyB0aGF0CisgICAgICAg
IC8vIGZvbGxvd3MgZnJvbToKICAgICAgICAgLy8gaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93
c2VyL3RydW5rL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbT9yZXY9NDg1MjYjTDM0
MzAKLSAgICAgICAgbV9zb3VyY2VEcmFnT3BlcmF0aW9uID0gKERyYWdPcGVyYXRpb24pKERyYWdP
cGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJhdGlvbkNvcHkpOwotICAgIH0KKyAgICAgICAgbV9z
b3VyY2VEcmFnT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4obV9zb3VyY2VE
cmFnT3BlcmF0aW9uIHwgRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uQ29weSk7
CiAKICAgICAvLyBXZSBhbGxvdyBESFRNTC9KUyB0byBzZXQgdGhlIGRyYWcgaW1hZ2UsIGV2ZW4g
aWYgaXRzIGEgbGluaywgaW1hZ2Ugb3IgdGV4dCB3ZSdyZSBkcmFnZ2luZy4KICAgICAvLyBUaGlz
IGlzIGluIHRoZSBzcGlyaXQgb2YgdGhlIElFIEFQSSwgd2hpY2ggYWxsb3dzIG92ZXJyaWRpbmcg
b2YgcGFzdGVib2FyZCBkYXRhIGFuZCBEcmFnT3AuCkBAIC03MzYsMjYgKzcxMCw0NCBAQCBib29s
IERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUqIHNyYywgQ2xpcGJvYXJkKiBjbGlwYm9h
cmQsIERyYWdPcGVyYXRpb24gcwogCiAgICAgYm9vbCBzdGFydGVkRHJhZyA9IHRydWU7IC8vIG9w
dGltaXNtIC0gd2UgYWxtb3N0IGFsd2F5cyBtYW5hZ2UgdG8gc3RhcnQgdGhlIGRyYWcKIAotICAg
IE5vZGUqIG5vZGUgPSBkcmFnU291cmNlLmlubmVyTm9uU2hhcmVkTm9kZSgpOworICAgIE5vZGUq
IG5vZGUgPSBzdGF0ZS5tX2RyYWdTcmMuZ2V0KCk7CiAKICAgICBJbWFnZSogaW1hZ2UgPSBnZXRJ
bWFnZShzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSkpOwotICAgIGlmICghaW1hZ2VVUkwuaXNF
bXB0eSgpICYmIG5vZGUgJiYgbm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmIGltYWdlCi0gICAgICAg
ICAgICAmJiAobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKSkgewor
ICAgIGlmIChzdGF0ZS5tX2RyYWdUeXBlID09IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pIHsK
KyAgICAgICAgaWYgKCFjbGlwYm9hcmQtPmhhc0RhdGEoKSkgeworICAgICAgICAgICAgaWYgKGlz
Tm9kZUluVGV4dEZvcm1Db250cm9sKHNyYy0+c2VsZWN0aW9uKCktPnN0YXJ0KCkuZGVwcmVjYXRl
ZE5vZGUoKSkpCisgICAgICAgICAgICAgICAgY2xpcGJvYXJkLT53cml0ZVBsYWluVGV4dChzcmMt
PmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvblJhbmdlID0gc3JjLT5zZWxlY3Rpb24oKS0+
dG9Ob3JtYWxpemVkUmFuZ2UoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc2VsZWN0aW9uUmFu
Z2UpOworCisgICAgICAgICAgICAgICAgY2xpcGJvYXJkLT53cml0ZVJhbmdlKHNlbGVjdGlvblJh
bmdlLmdldCgpLCBzcmMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1fY2xp
ZW50LT53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlv
biwgZHJhZ09yaWdpbiwgY2xpcGJvYXJkKTsKKyAgICAgICAgaWYgKCFkcmFnSW1hZ2UpIHsKKyAg
ICAgICAgICAgIGRyYWdJbWFnZSA9IGNyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlvbihzcmMpOwor
ICAgICAgICAgICAgZHJhZ0xvYyA9IGRyYWdMb2NGb3JTZWxlY3Rpb25EcmFnKHNyYyk7CisgICAg
ICAgICAgICBtX2RyYWdPZmZzZXQgPSBJbnRQb2ludChkcmFnT3JpZ2luLngoKSAtIGRyYWdMb2Mu
eCgpLCBkcmFnT3JpZ2luLnkoKSAtIGRyYWdMb2MueSgpKTsKKyAgICAgICAgfQorICAgICAgICBk
b1N5c3RlbURyYWcoZHJhZ0ltYWdlLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQsIHNy
YywgZmFsc2UpOworICAgIH0gZWxzZSBpZiAoIWltYWdlVVJMLmlzRW1wdHkoKSAmJiBub2RlICYm
IG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiBpbWFnZQorICAgICAgICAgICAgICAgJiYgKG1fZHJh
Z1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25JbWFnZSkpIHsKICAgICAgICAgLy8gV2Ug
c2hvdWxkbid0IGJlIHN0YXJ0aW5nIGEgZHJhZyBmb3IgYW4gaW1hZ2UgdGhhdCBjYW4ndCBwcm92
aWRlIGFuIGV4dGVuc2lvbi4KICAgICAgICAgLy8gVGhpcyBpcyBhbiBlYXJseSBkZXRlY3Rpb24g
Zm9yIHByb2JsZW1zIGVuY291bnRlcmVkIGxhdGVyIHVwb24gZHJvcC4KICAgICAgICAgQVNTRVJU
KCFpbWFnZS0+ZmlsZW5hbWVFeHRlbnNpb24oKS5pc0VtcHR5KCkpOwogICAgICAgICBFbGVtZW50
KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpOwogICAgICAgICBpZiAoIWNs
aXBib2FyZC0+aGFzRGF0YSgpKSB7CiAgICAgICAgICAgICBtX2RyYWdnaW5nSW1hZ2VVUkwgPSBp
bWFnZVVSTDsKLSAgICAgICAgICAgIHByZXBhcmVDbGlwYm9hcmRGb3JJbWFnZURyYWcoc3JjLCBj
bGlwYm9hcmQsIGVsZW1lbnQsIGxpbmtVUkwsIGltYWdlVVJMLCBkcmFnU291cmNlLmFsdERpc3Bs
YXlTdHJpbmcoKSk7CisgICAgICAgICAgICBwcmVwYXJlQ2xpcGJvYXJkRm9ySW1hZ2VEcmFnKHNy
YywgY2xpcGJvYXJkLCBlbGVtZW50LCBsaW5rVVJMLCBpbWFnZVVSTCwgaGl0VGVzdFJlc3VsdC5h
bHREaXNwbGF5U3RyaW5nKCkpOwogICAgICAgICB9CiAKICAgICAgICAgbV9jbGllbnQtPndpbGxQ
ZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uSW1hZ2UsIGRyYWdPcmlnaW4s
IGNsaXBib2FyZCk7CiAKICAgICAgICAgaWYgKCFkcmFnSW1hZ2UpIHsKLSAgICAgICAgICAgIElu
dFJlY3QgaW1hZ2VSZWN0ID0gZHJhZ1NvdXJjZS5pbWFnZVJlY3QoKTsKKyAgICAgICAgICAgIElu
dFJlY3QgaW1hZ2VSZWN0ID0gaGl0VGVzdFJlc3VsdC5pbWFnZVJlY3QoKTsKICAgICAgICAgICAg
IGltYWdlUmVjdC5zZXRMb2NhdGlvbihtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCktPndpbmRv
d1RvQ29udGVudHMoc3JjLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coaW1hZ2VSZWN0LmxvY2F0
aW9uKCkpKSk7Ci0gICAgICAgICAgICBkb0ltYWdlRHJhZyhlbGVtZW50LCBkcmFnT3JpZ2luLCBk
cmFnU291cmNlLmltYWdlUmVjdCgpLCBjbGlwYm9hcmQsIHNyYywgbV9kcmFnT2Zmc2V0KTsKKyAg
ICAgICAgICAgIGRvSW1hZ2VEcmFnKGVsZW1lbnQsIGRyYWdPcmlnaW4sIGhpdFRlc3RSZXN1bHQu
aW1hZ2VSZWN0KCksIGNsaXBib2FyZCwgc3JjLCBtX2RyYWdPZmZzZXQpOwogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIC8vIERIVE1MIGRlZmluZWQgZHJhZyBpbWFnZQogICAgICAgICAgICAg
ZG9TeXN0ZW1EcmFnKGRyYWdJbWFnZSwgZHJhZ0xvYywgZHJhZ09yaWdpbiwgY2xpcGJvYXJkLCBz
cmMsIGZhbHNlKTsKQEAgLTc2NCw3ICs3NTYsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFy
dERyYWcoRnJhbWUqIHNyYywgQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIERyYWdPcGVyYXRpb24gcwog
ICAgICAgICBpZiAoIWNsaXBib2FyZC0+aGFzRGF0YSgpKQogICAgICAgICAgICAgLy8gU2ltcGxp
Znkgd2hpdGVzcGFjZSBzbyB0aGUgdGl0bGUgcHV0IG9uIHRoZSBjbGlwYm9hcmQgcmVzZW1ibGVz
IHdoYXQgdGhlIHVzZXIgc2VlcwogICAgICAgICAgICAgLy8gb24gdGhlIHdlYiBwYWdlLiBUaGlz
IGluY2x1ZGVzIHJlcGxhY2luZyBuZXdsaW5lcyB3aXRoIHNwYWNlcy4KLSAgICAgICAgICAgIGNs
aXBib2FyZC0+d3JpdGVVUkwobGlua1VSTCwgZHJhZ1NvdXJjZS50ZXh0Q29udGVudCgpLnNpbXBs
aWZ5V2hpdGVTcGFjZSgpLCBzcmMpOworICAgICAgICAgICAgY2xpcGJvYXJkLT53cml0ZVVSTChs
aW5rVVJMLCBoaXRUZXN0UmVzdWx0LnRleHRDb250ZW50KCkuc2ltcGxpZnlXaGl0ZVNwYWNlKCks
IHNyYyk7CiAKICAgICAgICAgaWYgKHNyYy0+c2VsZWN0aW9uKCktPmlzQ2FyZXQoKSAmJiBzcmMt
PnNlbGVjdGlvbigpLT5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7CiAgICAgICAgICAgICAvLyBhIHVz
ZXIgY2FuIGluaXRpYXRlIGEgZHJhZyBvbiBhIGxpbmsgd2l0aG91dCBoYXZpbmcgYW55IHRleHQK
QEAgLTc3OCwzNyArNzcwLDE5IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFt
ZSogc3JjLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRHJhZ09wZXJhdGlvbiBzCiAKICAgICAgICAg
bV9jbGllbnQtPndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uTGlu
aywgZHJhZ09yaWdpbiwgY2xpcGJvYXJkKTsKICAgICAgICAgaWYgKCFkcmFnSW1hZ2UpIHsKLSAg
ICAgICAgICAgIGRyYWdJbWFnZSA9IGNyZWF0ZURyYWdJbWFnZUZvckxpbmsobGlua1VSTCwgZHJh
Z1NvdXJjZS50ZXh0Q29udGVudCgpLCBzcmMpOworICAgICAgICAgICAgZHJhZ0ltYWdlID0gY3Jl
YXRlRHJhZ0ltYWdlRm9yTGluayhsaW5rVVJMLCBoaXRUZXN0UmVzdWx0LnRleHRDb250ZW50KCks
IHNyYyk7CiAgICAgICAgICAgICBJbnRTaXplIHNpemUgPSBkcmFnSW1hZ2VTaXplKGRyYWdJbWFn
ZSk7CiAgICAgICAgICAgICBtX2RyYWdPZmZzZXQgPSBJbnRQb2ludCgtc2l6ZS53aWR0aCgpIC8g
MiwgLUxpbmtEcmFnQm9yZGVySW5zZXQpOwogICAgICAgICAgICAgZHJhZ0xvYyA9IEludFBvaW50
KG1vdXNlRHJhZ2dlZFBvaW50LngoKSArIG1fZHJhZ09mZnNldC54KCksIG1vdXNlRHJhZ2dlZFBv
aW50LnkoKSArIG1fZHJhZ09mZnNldC55KCkpOwogICAgICAgICB9CiAgICAgICAgIGRvU3lzdGVt
RHJhZyhkcmFnSW1hZ2UsIGRyYWdMb2MsIG1vdXNlRHJhZ2dlZFBvaW50LCBjbGlwYm9hcmQsIHNy
YywgdHJ1ZSk7Ci0gICAgfSBlbHNlIGlmIChpc1NlbGVjdGVkICYmIChtX2RyYWdTb3VyY2VBY3Rp
b24gJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSkgewotICAgICAgICBpZiAoIWNsaXBib2Fy
ZC0+aGFzRGF0YSgpKSB7Ci0gICAgICAgICAgICBpZiAoaXNOb2RlSW5UZXh0Rm9ybUNvbnRyb2wo
c3JjLT5zZWxlY3Rpb24oKS0+c3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpKSkKLSAgICAgICAgICAg
ICAgICBjbGlwYm9hcmQtPndyaXRlUGxhaW5UZXh0KHNyYy0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4
dCgpKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4g
c2VsZWN0aW9uUmFuZ2UgPSBzcmMtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpOwot
ICAgICAgICAgICAgICAgIEFTU0VSVChzZWxlY3Rpb25SYW5nZSk7Ci0KLSAgICAgICAgICAgICAg
ICBjbGlwYm9hcmQtPndyaXRlUmFuZ2Uoc2VsZWN0aW9uUmFuZ2UuZ2V0KCksIHNyYyk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgbV9jbGllbnQtPndpbGxQZXJmb3JtRHJhZ1Nv
dXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uLCBkcmFnT3JpZ2luLCBjbGlwYm9h
cmQpOwotICAgICAgICBpZiAoIWRyYWdJbWFnZSkgewotICAgICAgICAgICAgZHJhZ0ltYWdlID0g
Y3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKHNyYyk7Ci0gICAgICAgICAgICBkcmFnTG9jID0g
ZHJhZ0xvY0ZvclNlbGVjdGlvbkRyYWcoc3JjKTsKLSAgICAgICAgICAgIG1fZHJhZ09mZnNldCA9
IEludFBvaW50KChpbnQpKGRyYWdPcmlnaW4ueCgpIC0gZHJhZ0xvYy54KCkpLCAoaW50KShkcmFn
T3JpZ2luLnkoKSAtIGRyYWdMb2MueSgpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZG9TeXN0ZW1E
cmFnKGRyYWdJbWFnZSwgZHJhZ0xvYywgZHJhZ09yaWdpbiwgY2xpcGJvYXJkLCBzcmMsIGZhbHNl
KTsKLSAgICB9IGVsc2UgaWYgKGlzREhUTUxEcmFnKSB7CisgICAgfSBlbHNlIGlmIChzdGF0ZS5t
X2RyYWdUeXBlID09IERyYWdTb3VyY2VBY3Rpb25ESFRNTCkgewogICAgICAgICBBU1NFUlQobV9k
cmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKTsKICAgICAgICAgbV9jbGll
bnQtPndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uREhUTUwsIGRy
YWdPcmlnaW4sIGNsaXBib2FyZCk7CiAgICAgICAgIGRvU3lzdGVtRHJhZyhkcmFnSW1hZ2UsIGRy
YWdMb2MsIGRyYWdPcmlnaW4sIGNsaXBib2FyZCwgc3JjLCBmYWxzZSk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgLy8gT25seSB3YXkgSSBrbm93IHRvIGdldCBoZXJlIGlzIGlmIHRvIGdldCBoZXJl
IGlzIGlmIHRoZSBvcmlnaW5hbCBlbGVtZW50IGNsaWNrZWQgb24gaW4gdGhlIG1vdXNlZG93biBp
cyBubyBsb25nZXIKLSAgICAgICAgLy8gdW5kZXIgdGhlIG1vdXNlZG93biBwb2ludCwgc28gbGlu
a1VSTCwgaW1hZ2VVUkwgYW5kIGlzU2VsZWN0ZWQgYXJlIGFsbCBmYWxzZS9lbXB0eS4KKyAgICAg
ICAgLy8gZHJhZ2dhYmxlTm9kZSgpIGRldGVybWluZWQgYW4gaW1hZ2Ugb3IgbGluayBub2RlIHdh
cyBkcmFnZ2FibGUsIGJ1dCBpdCB0dXJucyBvdXQgdGhlCisgICAgICAgIC8vIGltYWdlIG9yIGxp
bmsgaGFkIG5vIFVSTC4gT2ggd2VsbC4KICAgICAgICAgc3RhcnRlZERyYWcgPSBmYWxzZTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAppbmRleCBiZThjODM0YWVlNjE1
NjliZGUyMWM4YjkwZmFlOWMwNGZhMzVhMGJhLi4yNjFhOGQ1M2Y3MzY1OGIwNzFmMjEwNTZhZTU4
YjI0YjFiYjQ1OTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCkBAIC0zNyw2
ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBEb2N1bWVudDsKICAgICBj
bGFzcyBEcmFnQ2xpZW50OwogICAgIGNsYXNzIERyYWdEYXRhOworICAgIHN0cnVjdCBEcmFnU3Rh
dGU7CiAgICAgY2xhc3MgRWxlbWVudDsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBGcmFt
ZVNlbGVjdGlvbjsKQEAgLTc1LDEzICs3NiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIERyYWdEZXN0aW5hdGlvbkFjdGlvbiBkcmFnRGVzdGluYXRpb25BY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbjsgfQogICAgICAgICBEcmFnU291cmNlQWN0
aW9uIGRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbihjb25zdCBJbnRQb2ludCYgcGFnZVBvaW50KTsK
ICAgICAgICAgCi0gICAgICAgIE5vZGUqIGRyYWdnYWJsZU5vZGUoY29uc3QgRnJhbWUqLCBOb2Rl
KiwgYm9vbCBkaHRtbE9LLCBib29sIHVhT0ssIGludCB4LCBpbnQgeSwgYm9vbCYgZGh0bWxXaWxs
RHJhZykgY29uc3Q7Ci0gICAgICAgIGJvb2wgbWF5U3RhcnREcmFnQXRFdmVudExvY2F0aW9uKGNv
bnN0IEZyYW1lKiwgY29uc3QgSW50UG9pbnQmIGZyYW1lUG9zLCBOb2RlKikgY29uc3Q7CisgICAg
ICAgIE5vZGUqIGRyYWdnYWJsZU5vZGUoY29uc3QgRnJhbWUqLCBOb2RlKiwgY29uc3QgSW50UG9p
bnQmLCBEcmFnU3RhdGUmKSBjb25zdDsKICAgICAgICAgdm9pZCBkcmFnRW5kZWQoKTsKICAgICAg
ICAgCiAgICAgICAgIHZvaWQgcGxhY2VEcmFnQ2FyZXQoY29uc3QgSW50UG9pbnQmKTsKICAgICAg
ICAgCi0gICAgICAgIGJvb2wgc3RhcnREcmFnKEZyYW1lKiBzcmMsIENsaXBib2FyZCosIERyYWdP
cGVyYXRpb24gc3JjT3AsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25z
dCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgYm9vbCBpc0RIVE1MRHJhZyk7CisgICAgICAgIGJvb2wg
c3RhcnREcmFnKEZyYW1lKiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYsIERyYWdPcGVyYXRpb24gc3Jj
T3AsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYg
ZHJhZ09yaWdpbik7CiAgICAgICAgIHN0YXRpYyBjb25zdCBJbnRTaXplJiBtYXhEcmFnSW1hZ2VT
aXplKCk7CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgaW50IExpbmtEcmFnQm9yZGVy
SW5zZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaAppbmRleCA2YjFmNjc1NmUzZDIxZTc3ZmIxOWIw
Yjk4N2IyNDAzMWQ3MGVkMGZhLi41YWJkMmEwMWNmZjE5NjMzYjdlZWNiZjM1YjFmN2NhMmQ2OGEy
ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ1N0YXRlLmgKQEAgLTI2LDIzICsyNiwyOSBAQAogI2lmbmRl
ZiBEcmFnU3RhdGVfaAogI2RlZmluZSBEcmFnU3RhdGVfaAogCisjaW5jbHVkZSAiRHJhZ0FjdGlv
bnMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBDbGlwYm9hcmQ7CitjbGFzcyBOb2RlOworCiBzdHJ1Y3QgRHJhZ1N0YXRlIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShEcmFnU3RhdGUpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgorICAgIGVudW0gRXZlbnREaXNwYXRjaFBvbGljeSB7CisgICAgICAgIERP
X05PVF9ESVNQQVRDSF9FVkVOVFMsCisgICAgICAgIERJU1BBVENIX0VWRU5UUywKKyAgICB9Owog
ICAgIERyYWdTdGF0ZSgpIHsgfQorICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hFdmVudHMoKSBjb25z
dCB7IHJldHVybiBtX2V2ZW50RGlzcGF0Y2hQb2xpY3kgPT0gRElTUEFUQ0hfRVZFTlRTOyB9CiAg
ICAgUmVmUHRyPE5vZGU+IG1fZHJhZ1NyYzsgLy8gZWxlbWVudCB0aGF0IG1heSBiZSBhIGRyYWcg
c291cmNlLCBmb3IgdGhlIGN1cnJlbnQgbW91c2UgZ2VzdHVyZQotICAgIGJvb2wgbV9kcmFnU3Jj
SXNMaW5rOwotICAgIGJvb2wgbV9kcmFnU3JjSXNJbWFnZTsKLSAgICBib29sIG1fZHJhZ1NyY0lu
U2VsZWN0aW9uOwotICAgIGJvb2wgbV9kcmFnU3JjTWF5QmVESFRNTDsKLSAgICBib29sIG1fZHJh
Z1NyY01heUJlVUE7IC8vIEFyZSBESFRNTCBhbmQvb3IgdGhlIFVzZXJBZ2VudCBhbGxvd2VkIHRv
IGRyYWcgb3V0PwotICAgIGJvb2wgbV9kcmFnU3JjSXNESFRNTDsKKyAgICBFdmVudERpc3BhdGNo
UG9saWN5IG1fZXZlbnREaXNwYXRjaFBvbGljeTsKKyAgICBEcmFnU291cmNlQWN0aW9uIG1fZHJh
Z1R5cGU7CiAgICAgUmVmUHRyPENsaXBib2FyZD4gbV9kcmFnQ2xpcGJvYXJkOyAvLyB1c2VkIG9u
IG9ubHkgdGhlIHNvdXJjZSBzaWRlIG9mIGRyYWdnaW5nCiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKaW5kZXggZDIxNTk1YWJjNWE1YjEyMDU1ZDE5MmIyMzdjMmViNDJjMGNh
ZTUyMy4uYzhlNmU4ODAyYWVjNGJiOWMzNGFmZmMxOTE2ZDQ1ZGU3YzliNzYxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtNzgsNiArNzgsNyBAQAogI2luY2x1ZGUgIlVz
ZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgogI2lu
Y2x1ZGUgIldpbmRvd3NLZXlib2FyZENvZGVzLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAKQEAgLTU4NywxMiArNTg4LDYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmV2ZW50TWF5
U3RhcnREcmFnKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIGNvbnN0CiAgICAgaWYg
KGV2ZW50LmJ1dHRvbigpICE9IExlZnRCdXR0b24gfHwgZXZlbnQuY2xpY2tDb3VudCgpICE9IDEp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBib29sIERIVE1MRmxhZzsKLSAgICBi
b29sIFVBRmxhZzsKLSAgICBhbGxvd0RIVE1MRHJhZyhESFRNTEZsYWcsIFVBRmxhZyk7Ci0gICAg
aWYgKCFESFRNTEZsYWcgJiYgIVVBRmxhZykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAg
RnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpOwogICAgIGlmICghdmlldykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNjAxLDExICs1OTYsMTIgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmV2ZW50TWF5U3RhcnREcmFnKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIGNvbnN0
CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBEcmFnU3RhdGUg
c3RhdGU7CisgICAgdXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKHN0YXRlLm1fZXZlbnRE
aXNwYXRjaFBvbGljeSk7CiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVz
dDo6UmVhZE9ubHkpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29u
dGVudHMoZXZlbnQucG9zKCkpKTsKICAgICBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+bGF5
ZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwotICAgIGJvb2wgc3JjSXNESFRNTDsKLSAg
ICByZXR1cm4gcmVzdWx0LmlubmVyTm9kZSgpICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCktPmRy
YWdnYWJsZU5vZGUobV9mcmFtZSwgcmVzdWx0LmlubmVyTm9kZSgpLCBESFRNTEZsYWcsIFVBRmxh
ZywgcmVzdWx0LnBvaW50KCkueCgpLCByZXN1bHQucG9pbnQoKS55KCksIHNyY0lzREhUTUwpOwor
ICAgIHJldHVybiByZXN1bHQuaW5uZXJOb2RlKCkgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+
ZHJhZ2dhYmxlTm9kZShtX2ZyYW1lLCByZXN1bHQuaW5uZXJOb2RlKCksIHJlc3VsdC5wb2ludCgp
LCBzdGF0ZSk7CiB9CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3Vz
ZURyYWcoKQpAQCAtODkyLDExICs4ODgsOCBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c2V0QXV0b3Nj
cm9sbFJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB9CiAKICNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQotdm9pZCBFdmVudEhhbmRsZXI6OmFsbG93REhUTUxEcmFnKGJvb2wmIGZsYWdE
SFRNTCwgYm9vbCYgZmxhZ1VBKSBjb25zdAordm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdT
b3VyY2VBY3Rpb25zQWxsb3dlZChEcmFnU3RhdGU6OkV2ZW50RGlzcGF0Y2hQb2xpY3kmIHBvbGlj
eSkgY29uc3QKIHsKLSAgICBmbGFnREhUTUwgPSBmYWxzZTsKLSAgICBmbGFnVUEgPSBmYWxzZTsK
LQogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC05MDgsOSArOTAxLDEx
IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjphbGxvd0RIVE1MRHJhZyhib29sJiBmbGFnREhUTUwsIGJv
b2wmIGZsYWdVQSkgY29uc3QKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHVuc2lnbmVkIG1hc2sgPSBwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5kZWxlZ2F0ZURyYWdTb3Vy
Y2VBY3Rpb24odmlldy0+Y29udGVudHNUb1dpbmRvdyhtX21vdXNlRG93blBvcykpOwotICAgIGZs
YWdESFRNTCA9IChtYXNrICYgRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKSAhPSBEcmFnU291cmNlQWN0
aW9uTm9uZTsKLSAgICBmbGFnVUEgPSAoKG1hc2sgJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpIHx8
IChtYXNrICYgRHJhZ1NvdXJjZUFjdGlvbkxpbmspIHx8IChtYXNrICYgRHJhZ1NvdXJjZUFjdGlv
blNlbGVjdGlvbikpOworICAgIERyYWdTb3VyY2VBY3Rpb24gbWFzayA9IHBhZ2UtPmRyYWdDb250
cm9sbGVyKCktPmRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbih2aWV3LT5jb250ZW50c1RvV2luZG93
KG1fbW91c2VEb3duUG9zKSk7CisgICAgaWYgKG1hc2sgJiBEcmFnU291cmNlQWN0aW9uREhUTUwp
CisgICAgICAgIHBvbGljeSA9IERyYWdTdGF0ZTo6RElTUEFUQ0hfRVZFTlRTOworICAgIGVsc2UK
KyAgICAgICAgcG9saWN5ID0gRHJhZ1N0YXRlOjpET19OT1RfRElTUEFUQ0hfRVZFTlRTOwogfQog
I2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgCkBAIC0xODAyLDcgKzE3OTcsNyBA
QCBib29sIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkKgogICAgICAgICAvLyBNb3Jlb3ZlciwgdGhpcyBvcmRl
cmluZyBjb25mb3JtcyB0byBzZWN0aW9uIDcuOS40IG9mIHRoZSBIVE1MIDUgc3BlYy4gPGh0dHA6
Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvT3ZlcnZpZXcuaHRtbCNkcmFnLWFuZC1kcm9wLXByb2Nl
c3NpbmctbW9kZWw+LgogICAgICAgICBpZiAobmV3VGFyZ2V0ICYmIGNhbkhhbmRsZURyYWdBbmRE
cm9wRm9yVGFyZ2V0KFVwZGF0ZURyYWdBbmREcm9wLCBuZXdUYXJnZXQsIGV2ZW50LCBjbGlwYm9h
cmQsICZhY2NlcHQpKSB7CiAgICAgICAgICAgICAvLyBBcyBwZXIgc2VjdGlvbiA3LjkuNCBvZiB0
aGUgSFRNTCA1IHNwZWMuLCB3ZSBtdXN0IGFsd2F5cyBmaXJlIGEgZHJhZyBldmVudCBiZWZvcmUg
ZmlyaW5nIGEgZHJhZ2VudGVyLCBkcmFnbGVhdmUsIG9yIGRyYWdvdmVyIGV2ZW50LgotICAgICAg
ICAgICAgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyAmJiBkcmFnU3RhdGUoKS5tX2RyYWdTcmNN
YXlCZURIVE1MKSB7CisgICAgICAgICAgICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjICYmIGRy
YWdTdGF0ZSgpLnNob3VsZERpc3BhdGNoRXZlbnRzKCkpIHsKICAgICAgICAgICAgICAgICAvLyBm
b3Igbm93IHdlIGRvbid0IGNhcmUgaWYgZXZlbnQgaGFuZGxlciBjYW5jZWxzIGRlZmF1bHQgYmVo
YXZpb3IsIHNpbmNlIHRoZXJlIGlzIG5vbmUKICAgICAgICAgICAgICAgICBkaXNwYXRjaERyYWdT
cmNFdmVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVudCk7CiAgICAgICAgICAgICB9CkBA
IC0xODIwLDcgKzE4MTUsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3Ao
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkKgogICAgIH0gZWxzZSB7
CiAgICAgICAgIGlmIChuZXdUYXJnZXQgJiYgY2FuSGFuZGxlRHJhZ0FuZERyb3BGb3JUYXJnZXQo
VXBkYXRlRHJhZ0FuZERyb3AsIG5ld1RhcmdldCwgZXZlbnQsIGNsaXBib2FyZCwgJmFjY2VwdCkp
IHsKICAgICAgICAgICAgIC8vIE5vdGUsIHdoZW4gZGVhbGluZyB3aXRoIHN1Yi1mcmFtZXMsIHdl
IG1heSBuZWVkIHRvIGZpcmUgb25seSBhIGRyYWdvdmVyIGV2ZW50IGFzIGEgZHJhZyBldmVudCBt
YXkgaGF2ZSBiZWVuIGZpcmVkIGVhcmxpZXIuCi0gICAgICAgICAgICBpZiAoIW1fc2hvdWxkT25s
eUZpcmVEcmFnT3ZlckV2ZW50ICYmIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyAmJiBkcmFnU3RhdGUo
KS5tX2RyYWdTcmNNYXlCZURIVE1MKSB7CisgICAgICAgICAgICBpZiAoIW1fc2hvdWxkT25seUZp
cmVEcmFnT3ZlckV2ZW50ICYmIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyAmJiBkcmFnU3RhdGUoKS5z
aG91bGREaXNwYXRjaEV2ZW50cygpKSB7CiAgICAgICAgICAgICAgICAgLy8gZm9yIG5vdyB3ZSBk
b24ndCBjYXJlIGlmIGV2ZW50IGhhbmRsZXIgY2FuY2VscyBkZWZhdWx0IGJlaGF2aW9yLCBzaW5j
ZSB0aGVyZSBpcyBub25lCiAgICAgICAgICAgICAgICAgZGlzcGF0Y2hEcmFnU3JjRXZlbnQoZXZl
bnROYW1lcygpLmRyYWdFdmVudCwgZXZlbnQpOwogICAgICAgICAgICAgfQpAQCAtMTgzNiw3ICsx
ODMxLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQsIENsaXBib2FyZCoKIHZvaWQgRXZlbnRIYW5kbGVyOjpjYW5j
ZWxEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBDbGlwYm9hcmQq
IGNsaXBib2FyZCkKIHsKICAgICBpZiAobV9kcmFnVGFyZ2V0ICYmIGNhbkhhbmRsZURyYWdBbmRE
cm9wRm9yVGFyZ2V0KENhbmNlbERyYWdBbmREcm9wLCBtX2RyYWdUYXJnZXQuZ2V0KCksIGV2ZW50
LCBjbGlwYm9hcmQpKSB7Ci0gICAgICAgIGlmIChkcmFnU3RhdGUoKS5tX2RyYWdTcmMgJiYgZHJh
Z1N0YXRlKCkubV9kcmFnU3JjTWF5QmVESFRNTCkKKyAgICAgICAgaWYgKGRyYWdTdGF0ZSgpLm1f
ZHJhZ1NyYyAmJiBkcmFnU3RhdGUoKS5zaG91bGREaXNwYXRjaEV2ZW50cygpKQogICAgICAgICAg
ICAgZGlzcGF0Y2hEcmFnU3JjRXZlbnQoZXZlbnROYW1lcygpLmRyYWdFdmVudCwgZXZlbnQpOwog
ICAgICAgICBkaXNwYXRjaERyYWdFdmVudChldmVudE5hbWVzKCkuZHJhZ2xlYXZlRXZlbnQsIG1f
ZHJhZ1RhcmdldC5nZXQoKSwgZXZlbnQsIGNsaXBib2FyZCk7CiAgICAgfQpAQCAtMjYyOSwxMiAr
MjYyNCwyMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChjb25z
dCBJbnRQb2ludCYgZHJhZ1ZpZXdwb3J0TG9jYXRpb24pCiAgICAgSW50U2l6ZSBkZWx0YSA9IGRy
YWdMb2NhdGlvbiAtIG1fbW91c2VEb3duUG9zOwogICAgIAogICAgIGludCB0aHJlc2hvbGQgPSBH
ZW5lcmFsRHJhZ0h5c3RlcmVzaXM7Ci0gICAgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzSW1h
Z2UpCisgICAgc3dpdGNoIChkcmFnU3RhdGUoKS5tX2RyYWdUeXBlKSB7CisgICAgY2FzZSBEcmFn
U291cmNlQWN0aW9uU2VsZWN0aW9uOgorICAgICAgICB0aHJlc2hvbGQgPSBUZXh0RHJhZ0h5c3Rl
cmVzaXM7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbkltYWdlOgog
ICAgICAgICB0aHJlc2hvbGQgPSBJbWFnZURyYWdIeXN0ZXJlc2lzOwotICAgIGVsc2UgaWYgKGRy
YWdTdGF0ZSgpLm1fZHJhZ1NyY0lzTGluaykKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEcmFn
U291cmNlQWN0aW9uTGluazoKICAgICAgICAgdGhyZXNob2xkID0gTGlua0RyYWdIeXN0ZXJlc2lz
OwotICAgIGVsc2UgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0luU2VsZWN0aW9uKQotICAgICAg
ICB0aHJlc2hvbGQgPSBUZXh0RHJhZ0h5c3RlcmVzaXM7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRHJhZ1NvdXJjZUFjdGlvbkRIVE1MOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIGFi
cyhkZWx0YS53aWR0aCgpKSA+PSB0aHJlc2hvbGQgfHwgYWJzKGRlbHRhLmhlaWdodCgpKSA+PSB0
aHJlc2hvbGQ7CiB9CkBAIC0yNjQ3LDcgKzI2NTEsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZnJl
ZUNsaXBib2FyZCgpCiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRBdChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKIHsK
LSAgICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjICYmIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01h
eUJlREhUTUwpIHsKKyAgICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjICYmIGRyYWdTdGF0ZSgp
LnNob3VsZERpc3BhdGNoRXZlbnRzKCkpIHsKICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnQ2xp
cGJvYXJkLT5zZXREZXN0aW5hdGlvbk9wZXJhdGlvbihvcGVyYXRpb24pOwogICAgICAgICAvLyBm
b3Igbm93IHdlIGRvbid0IGNhcmUgaWYgZXZlbnQgaGFuZGxlciBjYW5jZWxzIGRlZmF1bHQgYmVo
YXZpb3IsIHNpbmNlIHRoZXJlIGlzIG5vbmUKICAgICAgICAgZGlzcGF0Y2hEcmFnU3JjRXZlbnQo
ZXZlbnROYW1lcygpLmRyYWdlbmRFdmVudCwgZXZlbnQpOwpAQCAtMjY4Miw0MCArMjY4NiwyNiBA
QCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzJiBldmVudCkKICAgICAvLyBDYXJlZnVsIHRoYXQgdGhlIGRyYWcgc3RhcnRpbmcg
bG9naWMgc3RheXMgaW4gc3luYyB3aXRoIGV2ZW50TWF5U3RhcnREcmFnKCkKICAgICAKICAgICBp
ZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcgJiYgIWRyYWdTdGF0ZSgpLm1fZHJhZ1NyYykgewot
ICAgICAgICBhbGxvd0RIVE1MRHJhZyhkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MLCBk
cmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZVVBKTsKLSAgICAgICAgaWYgKCFkcmFnU3RhdGUoKS5t
X2RyYWdTcmNNYXlCZURIVE1MICYmICFkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZVVBKQotICAg
ICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsgLy8gbm8gZWxlbWVudCBp
cyBkcmFnZ2FibGUKLSAgICB9CisgICAgICAgIHVwZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dl
ZChkcmFnU3RhdGUoKS5tX2V2ZW50RGlzcGF0Y2hQb2xpY3kpOwogCi0gICAgaWYgKG1fbW91c2VE
b3duTWF5U3RhcnREcmFnICYmICFkcmFnU3RhdGUoKS5tX2RyYWdTcmMpIHsKICAgICAgICAgLy8g
dHJ5IHRvIGZpbmQgYW4gZWxlbWVudCB0aGF0IHdhbnRzIHRvIGJlIGRyYWdnZWQKICAgICAgICAg
SGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOworICAgICAg
ICAvLyBGSVhNRTogVGhlIGluY29uc2lzdGVudCB1c2Ugb2YgbV9tb3VzZURvd25Qb3MgYW5kIHZp
ZXctPndpbmRvd1RvQ29udGVudHMoKSBpcyBvZGQuCiAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0KG1fbW91c2VEb3duUG9zKTsKICAgICAgICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkt
PmxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICAgICAgTm9kZSogbm9kZSA9
IHJlc3VsdC5pbm5lck5vZGUoKTsKICAgICAgICAgaWYgKG5vZGUgJiYgbV9mcmFtZS0+cGFnZSgp
KQotICAgICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0gbV9mcmFtZS0+cGFnZSgpLT5k
cmFnQ29udHJvbGxlcigpLT5kcmFnZ2FibGVOb2RlKG1fZnJhbWUsIG5vZGUsIGRyYWdTdGF0ZSgp
Lm1fZHJhZ1NyY01heUJlREhUTUwsIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlVUEsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9tb3VzZURvd25Qb3MueCgpLCBtX21vdXNlRG93blBv
cy55KCksIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzREhUTUwpOworICAgICAgICAgICAgZHJhZ1N0
YXRlKCkubV9kcmFnU3JjID0gbV9mcmFtZS0+cGFnZSgpLT5kcmFnQ29udHJvbGxlcigpLT5kcmFn
Z2FibGVOb2RlKG1fZnJhbWUsIG5vZGUsIG1fbW91c2VEb3duUG9zLCBkcmFnU3RhdGUoKSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyA9IDA7CiAgICAg
ICAgIAogICAgICAgICBpZiAoIWRyYWdTdGF0ZSgpLm1fZHJhZ1NyYykKICAgICAgICAgICAgIG1f
bW91c2VEb3duTWF5U3RhcnREcmFnID0gZmFsc2U7IC8vIG5vIGVsZW1lbnQgaXMgZHJhZ2dhYmxl
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8gcmVtZW1iZXIgc29tZSBmYWN0cyBhYm91
dCB0aGlzIHNvdXJjZSwgd2hpbGUgd2UgaGF2ZSBhIEhpdFRlc3RSZXN1bHQgaGFuZHkKLSAgICAg
ICAgICAgIG5vZGUgPSByZXN1bHQuVVJMRWxlbWVudCgpOwotICAgICAgICAgICAgZHJhZ1N0YXRl
KCkubV9kcmFnU3JjSXNMaW5rID0gbm9kZSAmJiBub2RlLT5pc0xpbmsoKTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgbm9kZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKTsKLSAgICAg
ICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzSW1hZ2UgPSBub2RlICYmIG5vZGUtPnJlbmRl
cmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdTcmNJblNlbGVjdGlvbiA9IG1fZnJhbWUtPnNlbGVj
dGlvbigpLT5jb250YWlucyhtX21vdXNlRG93blBvcyk7Ci0gICAgICAgIH0gICAgICAgICAgICAg
ICAgCiAgICAgfQogICAgIAogICAgIC8vIEZvciBkcmFncyBzdGFydGluZyBpbiB0aGUgc2VsZWN0
aW9uLCB0aGUgdXNlciBtdXN0IHdhaXQgYmV0d2VlbiB0aGUgbW91c2Vkb3duIGFuZCBtb3VzZWRy
YWcsCiAgICAgLy8gb3IgZWxzZSB3ZSBiYWlsIG9uIHRoZSBkcmFnZ2luZyBzdHVmZiBhbmQgYWxs
b3cgc2VsZWN0aW9uIHRvIG9jY3VyCi0gICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFnICYm
ICFkcmFnU3RhdGUoKS5tX2RyYWdTcmNJc0ltYWdlICYmIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lu
U2VsZWN0aW9uICYmIGV2ZW50LmV2ZW50KCkudGltZXN0YW1wKCkgLSBtX21vdXNlRG93blRpbWVz
dGFtcCA8IFRleHREcmFnRGVsYXkpIHsKKyAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcg
JiYgZHJhZ1N0YXRlKCkubV9kcmFnVHlwZSA9PSBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uICYm
IGV2ZW50LmV2ZW50KCkudGltZXN0YW1wKCkgLSBtX21vdXNlRG93blRpbWVzdGFtcCA8IFRleHRE
cmFnRGVsYXkpIHsKICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsKICAg
ICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0gMDsKICAgICAgICAgLy8gLi4uYnV0IGlmIHRo
aXMgd2FzIHRoZSBmaXJzdCBjbGljayBpbiB0aGUgd2luZG93LCB3ZSBkb24ndCBldmVuIHdhbnQg
dG8gc3RhcnQgc2VsZWN0aW9uCkBAIC0yNzQ0LDEwICsyNzM0LDEwIEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50
KQogICAgICAgICAgICAgICAgICAgICAgLy8gdG8gbWFrZSBzdXJlIGl0IGdldHMgbnVtYmlmaWVk
CiAgICAgZHJhZ1N0YXRlKCkubV9kcmFnQ2xpcGJvYXJkID0gY3JlYXRlRHJhZ2dpbmdDbGlwYm9h
cmQoKTsgIAogICAgIAotICAgIGlmIChkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MKSB7
CisgICAgaWYgKGRyYWdTdGF0ZSgpLnNob3VsZERpc3BhdGNoRXZlbnRzKCkpIHsKICAgICAgICAg
Ly8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBpcyBhIERPTSBiYXNlZCBkcmFnLCBpZiBpdCBpcyBnZXQg
dGhlIERPTSBzcGVjaWZpZWQgZHJhZyAKICAgICAgICAgLy8gaW1hZ2UgYW5kIG9mZnNldAotICAg
ICAgICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjSXNESFRNTCkgeworICAgICAgICBpZiAoZHJh
Z1N0YXRlKCkubV9kcmFnVHlwZSA9PSBEcmFnU291cmNlQWN0aW9uREhUTUwpIHsKICAgICAgICAg
ICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZHJhZ1N0YXRlKCkubV9kcmFnU3JjLT5y
ZW5kZXJlcigpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCB3b3Jr
IGNvcnJlY3RseSB3aXRoIHRyYW5zZm9ybXMuCiAgICAgICAgICAgICAgICAgRmxvYXRQb2ludCBh
YnNQb3MgPSByZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKCk7CkBAIC0yNzgzLDggKzI3NzMsOCBA
QCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzJiBldmVudCkKICAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcpIHsKICAg
ICAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICAgICAgRHJhZ0NvbnRyb2xs
ZXIqIGRyYWdDb250cm9sbGVyID0gcGFnZSA/IHBhZ2UtPmRyYWdDb250cm9sbGVyKCkgOiAwOwot
ICAgICAgICBib29sIHN0YXJ0ZWREcmFnID0gZHJhZ0NvbnRyb2xsZXIgJiYgZHJhZ0NvbnRyb2xs
ZXItPnN0YXJ0RHJhZyhtX2ZyYW1lLCBkcmFnU3RhdGUoKS5tX2RyYWdDbGlwYm9hcmQuZ2V0KCks
IHNyY09wLCBldmVudC5ldmVudCgpLCBtX21vdXNlRG93blBvcywgZHJhZ1N0YXRlKCkubV9kcmFn
U3JjSXNESFRNTCk7Ci0gICAgICAgIGlmICghc3RhcnRlZERyYWcgJiYgZHJhZ1N0YXRlKCkubV9k
cmFnU3JjTWF5QmVESFRNTCkgeworICAgICAgICBib29sIHN0YXJ0ZWREcmFnID0gZHJhZ0NvbnRy
b2xsZXIgJiYgZHJhZ0NvbnRyb2xsZXItPnN0YXJ0RHJhZyhtX2ZyYW1lLCBkcmFnU3RhdGUoKSwg
c3JjT3AsIGV2ZW50LmV2ZW50KCksIG1fbW91c2VEb3duUG9zKTsKKyAgICAgICAgaWYgKCFzdGFy
dGVkRHJhZyAmJiBkcmFnU3RhdGUoKS5zaG91bGREaXNwYXRjaEV2ZW50cygpKSB7CiAgICAgICAg
ICAgICAvLyBEcmFnIHdhcyBjYW5uZWQgYXQgdGhlIGxhc3QgbWludXRlIC0gd2Ugb3dlIG1fZHJh
Z1NyYyBhIERSQUdFTkQgZXZlbnQKICAgICAgICAgICAgIGRpc3BhdGNoRHJhZ1NyY0V2ZW50KGV2
ZW50TmFtZXMoKS5kcmFnZW5kRXZlbnQsIGV2ZW50LmV2ZW50KCkpOwogICAgICAgICAgICAgbV9t
b3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5o
CmluZGV4IGFhNDQ0YjM0NjYzYjU5YzM3OGE0MTdjNzJlZGRlYzljZWFiZDkyYTEuLmI0MWZmNWNh
NzVkMTAzYWQ2NTU1MDEzNGJhM2RiMjljMGI4MjU2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBFdmVudEhhbmRsZXJfaAogCiAjaW5j
bHVkZSAiRHJhZ0FjdGlvbnMuaCIKKyNpbmNsdWRlICJEcmFnU3RhdGUuaCIKICNpbmNsdWRlICJG
b2N1c0RpcmVjdGlvbi5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1Nb3VzZUV2ZW50LmgiCkBAIC00OSw3ICs1MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ2xpcGJvYXJkOwogY2xhc3MgQ3Vyc29yOwotc3RydWN0IERyYWdTdGF0ZTsK
IGNsYXNzIEV2ZW50OwogY2xhc3MgRXZlbnRUYXJnZXQ7CiBjbGFzcyBGbG9hdFBvaW50OwpAQCAt
MzIyLDcgKzMyMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWZhdWx0QXJyb3dFdmVudEhhbmRs
ZXIoRm9jdXNEaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqKTsKIAogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCi0gICAgdm9pZCBhbGxvd0RIVE1MRHJhZyhib29sJiBmbGFnREhUTUwsIGJvb2wmIGZs
YWdVQSkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQoRHJh
Z1N0YXRlOjpFdmVudERpc3BhdGNoUG9saWN5JikgY29uc3Q7CiAjZW5kaWYKIAogICAgIC8vIFRo
ZSBmb2xsb3dpbmcgYXJlIGNhbGxlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGhhbmRsZU1vdXNlVXAg
YW5kIGhhbmRsZURyYWcuICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93155</attachid>
            <date>2011-05-11 12:13:10 -0700</date>
            <delta_ts>2011-05-11 14:04:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59409-20110511121309.patch</filename>
            <type>text/plain</type>
            <size>34934</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYxNjQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiYTQzNTYzOWJmMjE1MWNjYTk4MmJj
YjYzNDZhZmZjNDczMWYxZTkxLi5lZWViZDE0OTVjZmNiZmFiZDlmMWYyN2JjZGM1NDkyYWQxNTAy
ZDAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDUtMTAgIERhbmllbCBDaGVuZyAgPGRj
aGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wcm92ZSBkcmFnIHN0YXJ0IGxvZ2ljCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTQwOQorCisgICAgICAgIFJlYmFzZSB0ZXN0
cyB0byBuZXcgZXhwZWN0ZWQgYmVoYXZpb3IuCisKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9h
cmQvZHJhZy1zZWxlY3RlZC1pbWFnZS10by1jb250ZW50ZWRpdGFibGUuaHRtbDogU2VsZWN0aW9u
cyBhcmUgcHJpb3JpdGl6ZWQKKyAgICAgICAgb3ZlciBpbWFnZXMgZHVyaW5nIHRoZSBkcmFnZ2lu
ZyBwcm9jZXNzIG5vdywgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byBoYXZlIGEgZGVsYXkgYmV0d2Vl
biB0aGUKKyAgICAgICAgbW91c2UgZG93biBhbmQgdGhlIG1vdXNlIG1vdmUuIFRoZSBjaGFuZ2Ug
aW4gZHJhZ2dpbmcgcHJpb3JpdHkgbWF0Y2hlcyBJRSBhbmQgRmlyZWZveAorICAgICAgICBiZWhh
dmlvci4KKyAgICAgICAgKiBmYXN0L2Nzcy91c2VyLWRyYWctbm9uZS5odG1sOiBUZXh0IG5vZGVz
IGFyZSBubyBsb25nZXIgY29uc2lkZXJlZCBkcmFnZ2FibGUuCisKIDIwMTEtMDUtMTAgIEFiaGlz
aGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
ZHJhZy1zZWxlY3RlZC1pbWFnZS10by1jb250ZW50ZWRpdGFibGUuaHRtbCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGVkLWltYWdlLXRvLWNvbnRlbnRlZGl0YWJs
ZS5odG1sCmluZGV4IDIxNDBhMTUwYjJjYjBkMjQ5NTJjNDI1ZDQ2YjBkZjk4NDNiNGQ4N2UuLmMw
ZjNiNzBkNWQwNTEyODFjMjhiODcwODhhZjFhM2U3M2UxYmRiOWEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGVkLWltYWdlLXRvLWNvbnRlbnRl
ZGl0YWJsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNl
bGVjdGVkLWltYWdlLXRvLWNvbnRlbnRlZGl0YWJsZS5odG1sCkBAIC00NCw2ICs0NCw3IEBAIGZ1
bmN0aW9uIHN0ZXAyKCkKICAgICB4ID0gZS5vZmZzZXRMZWZ0ICsgZS5vZmZzZXRXaWR0aCAvIDI7
CiAgICAgeSA9IGUub2Zmc2V0VG9wICsgZS5vZmZzZXRIZWlnaHQgLyAyOwogICAgIAorICAgIGV2
ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDUwMCk7CiAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
eCwgeSk7CiAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwogICAgIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3MvdXNlci1kcmFnLW5vbmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3VzZXItZHJhZy1ub25lLmh0bWwKaW5kZXggYzg4Y2FhZjZlZTU2YzM4NmI4ZTNiNmY0NDVk
NGMxYTc3M2UxYTA4Yy4uZjkzMzUxMzVjNWQ5YzFhNWY5MTdlN2UwYzViZTg0YTU4ZTlhODE0YSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXNlci1kcmFnLW5vbmUuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy91c2VyLWRyYWctbm9uZS5odG1sCkBAIC0xOSwxMSArMTks
MTEgQEAKICAgICAgICAgPGltZyBjbGFzcz0iZHJhZy1ub25lIiBzcmM9InJlc291cmNlcy9ncmVl
bmJveC5wbmciPgogICAgIDwvZGl2PgogCi0gICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9IklN
RyB0ZXh0IHRleHQgQSBuaWwiPgorICAgIDxkaXYgY2xhc3M9ImJveCIgZXhwZWN0PSJJTUcgQSBB
IEEgbmlsIj4KICAgICAgICAgPGEgaHJlZj0iIyI+PGltZyBzcmM9InJlc291cmNlcy9ncmVlbmJv
eC5wbmciPng8YnI+PHNwYW4+eTwvc3Bhbj48L2E+CiAgICAgPC9kaXY+CiAKLSAgICA8ZGl2IGNs
YXNzPSJib3giIGV4cGVjdD0iSU1HIHRleHQgdGV4dCBBIG5pbCI+CisgICAgPGRpdiBjbGFzcz0i
Ym94IiBleHBlY3Q9IklNRyBBIEEgQSBuaWwiPgogICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0i
ZHJhZy1lbGVtZW50Ij48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bh
bj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIApAQCAtMzEsMTEgKzMxLDExIEBACiAgICAgICAg
IDxhIGhyZWY9IiMiIGNsYXNzPSJkcmFnLW5vbmUiPjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW5i
b3gucG5nIj54PGJyPjxzcGFuPnk8L3NwYW4+PC9hPgogICAgIDwvZGl2PgogCi0gICAgPGRpdiBj
bGFzcz0iYm94IiBleHBlY3Q9IkEgdGV4dCB0ZXh0IEEgbmlsIj4KKyAgICA8ZGl2IGNsYXNzPSJi
b3giIGV4cGVjdD0iQSBBIEEgQSBuaWwiPgogICAgICAgICA8YSBocmVmPSIjIj48aW1nIGNsYXNz
PSJkcmFnLW5vbmUiIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9z
cGFuPjwvYT4KICAgICA8L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9ImJveCIgZXhwZWN0PSJBIHRl
eHQgdGV4dCBBIG5pbCI+CisgICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9IkEgQSBBIEEgbmls
Ij4KICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyYWctZWxlbWVudCI+PGltZyBjbGFzcz0i
ZHJhZy1ub25lIiBzcmM9InJlc291cmNlcy9ncmVlbmJveC5wbmciPng8YnI+PHNwYW4+eTwvc3Bh
bj48L2E+CiAgICAgPC9kaXY+CiAKQEAgLTQzLDExICs0MywxMSBAQAogICAgICAgICA8YSBocmVm
PSIjIiBjbGFzcz0iZHJhZy1ub25lIj48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+
eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9ImJv
eCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSB0ZXh0IHRleHQgQSBESVYiPgorICAgIDxkaXYgY2xh
c3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSBBIEEgQSBESVYiPgogICAgICAgICA8YSBo
cmVmPSIjIj48aW1nIGNsYXNzPSJkcmFnLW5vbmUiIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBu
ZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9
ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSB0ZXh0IHRleHQgQSBESVYiPgorICAgIDxkaXYg
Y2xhc3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSBBIEEgQSBESVYiPgogICAgICAgICA8
YSBocmVmPSIjIiBjbGFzcz0iZHJhZy1lbGVtZW50Ij48aW1nIGNsYXNzPSJkcmFnLW5vbmUiIHNy
Yz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8
L2Rpdj4KIDwvZGl2PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE3ZDdlMDI3ZTZmNDA3NTM4ZDA3Y2VjOGNmNDg5
MDllNjY3YTBmNDkuLmNjNWYyNmNlMzM2MTYzNzJmYWY4NDc5YWY2N2ZjZTNkOWRlZDMyMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMS0wNS0xMCAgRGFuaWVsIENoZW5nICA8ZGNo
ZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbXByb3ZlIGRyYWcgc3RhcnQgbG9naWMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NDA5CisKKyAgICAgICAgUmV3cml0ZSBhbmQg
c2ltcGxpZnkgdGhlIGRyYWdnaW5nIGxvZ2ljIHRvIGJldHRlciBtYXRjaCBJRSwgRmlyZWZveCwg
YW5kIHRoZSBiZWhhdmlvcgorICAgICAgICBkZWZpbmVkIGluIHRoZSBzcGVjLiBBbW9uZyBvdGhl
ciB0aGluZ3M6CisgICAgICAgIC0gZHJhZ2dhYmxlTm9kZSgpIG5vIGxvbmdlciByZXR1cm5zIHRl
eHQgbm9kZXMgd2hlbiBkcmFnZ2luZyBhbmNob3JzLgorICAgICAgICAtIFdoZW4gc3RhcnRpbmcg
YSBkcmFnIG92ZXIgYW4gaW1hZ2UgaW4gYSBzZWxlY3Rpb24sIHByZWZlciB0byBkcmFnIHRoZSBz
ZWxlY3Rpb24uCisgICAgICAgIC0gU2V2ZXJhbCByZWR1bmRhbnQgaGl0IHRlc3RzIGhhdmUgYmVl
biByZW1vdmVkLgorICAgICAgICAtIE1pbm9yIHJlZmFjdG9yaW5nIHRvIG1ha2UgdGhlIGxvZ2lj
IGVhc2llciB0byBmb2xsb3cuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ2dhYmxlTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9s
bGVyLmg6CisgICAgICAgICogcGFnZS9EcmFnU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdTdGF0ZTo6c2hvdWxkRGlzcGF0Y2hFdmVudHMpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZXZlbnRNYXlTdGFydERy
YWcpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnU291cmNlQWN0
aW9uc0FsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFn
QW5kRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmRE
cm9wKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ0h5c3RlcmVzaXNFeGNl
ZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAg
ICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKwogMjAxMS0wNS0wNiAgQnJldHQgV2lsc29uICA8YnJl
dHR3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDE0ZTQyMzEzN2NmYzQ2YWI1YzgwNGMzMGM3OWQ5NGFlN2FkOWNiMWQuLjg3YmJmNmUxODgzMWUx
ZTY1NDViY2RjNDU5ZmQ0NmVkOGExYTI3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2NzIsNyArMTY3Miw3IEBACiAJCTgx
QkUyMDk5MTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MUJFMjA5NDExRjRB
QjhEMDA5MTVERkEgLyogSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oICovOyB9OwogCQk4MUJF
MjBEMjExRjRCQzMyMDA5MTVERkEgLyogSlNJREJDdXJzb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFCRTIwQTcxMUY0QjY2RjAwOTE1REZBIC8q
IEpTSURCQ3Vyc29yLmNwcCAqLzsgfTsKIAkJODFCRTIwRDMxMUY0QkMzMjAwOTE1REZBIC8qIEpT
SURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MUJFMjBBODExRjRCNjZGMDA5MTVERkEgLyogSlNJREJDdXJzb3IuaCAqLzsgfTsKLQkJODFG
NjVGRjYxMzc4OEZBQTAwRkY2RjJEIC8qIERyYWdTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFGNjVGRjUxMzc4OEZBQTAwRkY2RjJEIC8qIERy
YWdTdGF0ZS5oICovOyB9OworCQk4MUY2NUZGNjEzNzg4RkFBMDBGRjZGMkQgLyogRHJhZ1N0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MUY2NUZG
NTEzNzg4RkFBMDBGRjZGMkQgLyogRHJhZ1N0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODJBQjE3NDMxMjRCOTlFQzAwQzUwNjlEIC8qIElu
c3BlY3RvckNTU0FnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgyQUIxNzQxMTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0b3JDU1NBZ2VudC5j
cHAgKi87IH07CiAJCTgyQUIxNzQ0MTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0b3JDU1NBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODJBQjE3
NDIxMjRCOTlFQzAwQzUwNjlEIC8qIEluc3BlY3RvckNTU0FnZW50LmggKi87IH07CiAJCTgyQUIx
NzczMTI1QzgyNjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyQUIxNzZGMTI1QzgyNjcwMEM1
MDY5RCAvKiBJbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAKaW5kZXggODFjZTkyZDRmNTBkNjk5MGNiYjNmZGZhMmUwYzVlZDcx
MjRlOGQ2YS4uZWJmOTc4MzQzODZhYjQ0NWQ2NzAyZjE2N2JiYTU4YTg3YTFlNmYzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTU2OSw3MyArNTY5LDQ5IEBAIGJv
b2wgRHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEsIERyYWdP
cGVyYXRpb24mIG9wZXJhdGlvbikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotTm9kZSogRHJhZ0Nv
bnRyb2xsZXI6OmRyYWdnYWJsZU5vZGUoY29uc3QgRnJhbWUqIHNyYywgTm9kZSogc3RhcnROb2Rl
LCBib29sIGRodG1sT0ssIGJvb2wgdWFPSywgaW50IHgsIGludCB5LCBib29sJiBkaHRtbFdpbGxE
cmFnKSBjb25zdAorTm9kZSogRHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZU5vZGUoY29uc3QgRnJh
bWUqIHNyYywgTm9kZSogc3RhcnROb2RlLCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgRHJh
Z1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBpZiAoIWRodG1sT0sgJiYgIXVhT0spCi0gICAg
ICAgIHJldHVybiAwOworICAgIGlmIChzcmMtPnNlbGVjdGlvbigpLT5jb250YWlucyhkcmFnT3Jp
Z2luKSkgeworICAgICAgICBzdGF0ZS5tX2RyYWdUeXBlID0gRHJhZ1NvdXJjZUFjdGlvblNlbGVj
dGlvbjsKKyAgICAgICAgcmV0dXJuIHN0YXJ0Tm9kZTsKKyAgICB9CiAKICAgICBmb3IgKGNvbnN0
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdGFydE5vZGUtPnJlbmRlcmVyKCk7IHJlbmRlcmVy
OyByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKSkgewogICAgICAgICBOb2RlKiBub2RlID0g
cmVuZGVyZXItPm5vZGUoKTsKLSAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS0+bm9kZVR5cGUoKSA9
PSBOb2RlOjpURVhUX05PREUpIHsKLSAgICAgICAgICAgIC8vIFNpbmNlIHRoZXJlJ3Mgbm8gd2F5
IGZvciB0aGUgYXV0aG9yIHRvIGFkZHJlc3MgdGhlIC13ZWJraXQtdXNlci1kcmFnIHN0eWxlIGZv
ciBhIHRleHQgbm9kZSwKLSAgICAgICAgICAgIC8vIHdlIHVzZSBvdXIgb3duIGp1ZGdlbWVudC4K
LSAgICAgICAgICAgIGlmICh1YU9LICYmIG1heVN0YXJ0RHJhZ0F0RXZlbnRMb2NhdGlvbihzcmMs
IEludFBvaW50KHgsIHkpLCBub2RlKSkgewotICAgICAgICAgICAgICAgIGRodG1sV2lsbERyYWcg
PSBmYWxzZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbm9kZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGlmIChub2RlLT5jYW5TdGFydFNlbGVjdGlvbigpKQotICAgICAgICAgICAgICAg
IC8vIEluIHRoaXMgY2FzZSB3ZSBoYXZlIGEgY2xpY2sgaW4gdGhlIHVuc2VsZWN0ZWQgcG9ydGlv
biBvZiB0ZXh0LiBJZiB0aGlzIHRleHQgaXMKLSAgICAgICAgICAgICAgICAvLyBzZWxlY3RhYmxl
LCB3ZSB3YW50IHRvIHN0YXJ0IHRoZSBzZWxlY3Rpb24gcHJvY2VzcyBpbnN0ZWFkIG9mIGxvb2tp
bmcgZm9yIGEgcGFyZW50Ci0gICAgICAgICAgICAgICAgLy8gdG8gdHJ5IHRvIGRyYWcuCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghbm9k
ZSkKKyAgICAgICAgICAgIC8vIEFub255bW91cyByZW5kZXIgYmxvY2tzIGRvbid0IGNvcnJlc3Bv
bmQgdG8gYWN0dWFsIERPTSBub2Rlcywgc28gd2Ugc2tpcCBvdmVyIHRoZW0KKyAgICAgICAgICAg
IC8vIGZvciB0aGUgcHVycG9zZXMgb2YgZmluZGluZyBhIGRyYWdnYWJsZSBub2RlLgorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIGlmIChub2RlLT5pc1RleHROb2RlKCkgJiYgbm9kZS0+
Y2FuU3RhcnRTZWxlY3Rpb24oKSkKKyAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBoYXZl
IGEgY2xpY2sgaW4gdGhlIHVuc2VsZWN0ZWQgcG9ydGlvbiBvZiB0ZXh0LiBJZiB0aGlzIHRleHQg
aXMKKyAgICAgICAgICAgIC8vIHNlbGVjdGFibGUsIHdlIHdhbnQgdG8gc3RhcnQgdGhlIHNlbGVj
dGlvbiBwcm9jZXNzIGluc3RlYWQgb2YgbG9va2luZyBmb3IgYSBwYXJlbnQKKyAgICAgICAgICAg
IC8vIHRvIHRyeSB0byBkcmFnLgorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChu
b2RlLT5pc0VsZW1lbnROb2RlKCkpIHsKICAgICAgICAgICAgIEVVc2VyRHJhZyBkcmFnTW9kZSA9
IHJlbmRlcmVyLT5zdHlsZSgpLT51c2VyRHJhZygpOwotICAgICAgICAgICAgaWYgKGRodG1sT0sg
JiYgZHJhZ01vZGUgPT0gRFJBR19FTEVNRU5UKSB7Ci0gICAgICAgICAgICAgICAgZGh0bWxXaWxs
RHJhZyA9IHRydWU7CisgICAgICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdT
b3VyY2VBY3Rpb25ESFRNTCkgJiYgZHJhZ01vZGUgPT0gRFJBR19FTEVNRU5UKSB7CisgICAgICAg
ICAgICAgICAgc3RhdGUubV9kcmFnVHlwZSA9IERyYWdTb3VyY2VBY3Rpb25ESFRNTDsKICAgICAg
ICAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh1
YU9LICYmIGRyYWdNb2RlID09IERSQUdfQVVUTyAmJiBtYXlTdGFydERyYWdBdEV2ZW50TG9jYXRp
b24oc3JjLCBJbnRQb2ludCh4LCB5KSwgbm9kZSkpIHsKLSAgICAgICAgICAgICAgICBkaHRtbFdp
bGxEcmFnID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgICAgICAg
ICBpZiAoZHJhZ01vZGUgPT0gRFJBR19BVVRPKSB7CisgICAgICAgICAgICAgICAgaWYgKChtX2Ry
YWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpCisgICAgICAgICAgICAgICAg
ICAgICYmIG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbWdUYWcpCisgICAgICAgICAgICAg
ICAgICAgICYmIHNyYy0+c2V0dGluZ3MoKS0+bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgc3RhdGUubV9kcmFnVHlwZSA9IERyYWdTb3VyY2VBY3Rpb25J
bWFnZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmICgobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFj
dGlvbkxpbmspCisgICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5h
bWVzOjphVGFnKQorICAgICAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxIVE1MQW5jaG9y
RWxlbWVudCo+KG5vZGUpLT5pc0xpdmVMaW5rKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3Rh
dGUubV9kcmFnVHlwZSA9IERyYWdTb3VyY2VBY3Rpb25MaW5rOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbm9kZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgRHJhZ0NvbnRyb2xsZXI6Om1heVN0
YXJ0RHJhZ0F0RXZlbnRMb2NhdGlvbihjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IEludFBvaW50
JiBmcmFtZVBvcywgTm9kZSogbm9kZSkgY29uc3QKLXsKLSAgICBBU1NFUlQoZnJhbWUpOwotICAg
IEFTU0VSVChmcmFtZS0+c2V0dGluZ3MoKSk7Ci0KLSAgICBpZiAoIWZyYW1lLT52aWV3KCkgfHwg
IWZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
SGl0VGVzdFJlc3VsdCBtb3VzZURvd25UYXJnZXQgPSBIaXRUZXN0UmVzdWx0KGZyYW1lUG9zKTsK
LQotICAgIG1vdXNlRG93blRhcmdldCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJl
c3VsdEF0UG9pbnQoZnJhbWVQb3MsIHRydWUpOwotICAgIGlmIChub2RlKQotICAgICAgICBtb3Vz
ZURvd25UYXJnZXQuc2V0SW5uZXJOb25TaGFyZWROb2RlKG5vZGUpOwotCi0gICAgaWYgKG1vdXNl
RG93blRhcmdldC5pbWFnZSgpCi0gICAgICAgICYmICFtb3VzZURvd25UYXJnZXQuYWJzb2x1dGVJ
bWFnZVVSTCgpLmlzRW1wdHkoKQotICAgICAgICAmJiBmcmFtZS0+c2V0dGluZ3MoKS0+bG9hZHNJ
bWFnZXNBdXRvbWF0aWNhbGx5KCkKLSAgICAgICAgJiYgbV9kcmFnU291cmNlQWN0aW9uICYgRHJh
Z1NvdXJjZUFjdGlvbkltYWdlKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmICghbW91
c2VEb3duVGFyZ2V0LmFic29sdXRlTGlua1VSTCgpLmlzRW1wdHkoKQotICAgICAgICAmJiBtX2Ry
YWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uTGluawotICAgICAgICAmJiBtb3VzZURv
d25UYXJnZXQuaXNMaXZlTGluaygpCi0gICAgICAgICYmIG1vdXNlRG93blRhcmdldC5VUkxFbGVt
ZW50KCktPnJlbmRlcmVyKCkgJiYgbW91c2VEb3duVGFyZ2V0LlVSTEVsZW1lbnQoKS0+cmVuZGVy
ZXIoKS0+c3R5bGUoKS0+dXNlckRyYWcoKSAhPSBEUkFHX05PTkUpCi0gICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgaWYgKG1vdXNlRG93blRhcmdldC5pc1NlbGVjdGVkKCkKLSAgICAgICAgJiYg
bV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHN0YXRpYyBDYWNoZWRJbWFn
ZSogZ2V0Q2FjaGVkSW1hZ2UoRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBBU1NFUlQoZWxlbWVu
dCk7CkBAIC02OTUsMTkgKzY3MSwxNyBAQCBzdGF0aWMgSW50UG9pbnQgZHJhZ0xvY0ZvclNlbGVj
dGlvbkRyYWcoRnJhbWUqIHNyYykKICAgICByZXR1cm4gSW50UG9pbnQoeHBvcywgeXBvcyk7CiB9
CiAKLWJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlwYm9hcmQq
IGNsaXBib2FyZCwgRHJhZ09wZXJhdGlvbiBzcmNPcCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBib29sIGlzREhUTUxEcmFn
KQorYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lKiBzcmMsIGNvbnN0IERyYWdT
dGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24gc3JjT3AsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbikKIHsKICAgICBBU1NFUlQo
c3JjKTsKLSAgICBBU1NFUlQoY2xpcGJvYXJkKTsKIAogICAgIGlmICghc3JjLT52aWV3KCkgfHwg
IXNyYy0+Y29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEhp
dFRlc3RSZXN1bHQgZHJhZ1NvdXJjZSA9IEhpdFRlc3RSZXN1bHQoZHJhZ09yaWdpbik7Ci0gICAg
ZHJhZ1NvdXJjZSA9IHNyYy0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGRy
YWdPcmlnaW4sIHRydWUpOwotICAgIEtVUkwgbGlua1VSTCA9IGRyYWdTb3VyY2UuYWJzb2x1dGVM
aW5rVVJMKCk7Ci0gICAgS1VSTCBpbWFnZVVSTCA9IGRyYWdTb3VyY2UuYWJzb2x1dGVJbWFnZVVS
TCgpOwotICAgIGJvb2wgaXNTZWxlY3RlZCA9IGRyYWdTb3VyY2UuaXNTZWxlY3RlZCgpOworICAg
IEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IHNyYy0+ZXZlbnRIYW5kbGVyKCktPmhpdFRl
c3RSZXN1bHRBdFBvaW50KGRyYWdPcmlnaW4sIHRydWUpOworICAgIC8vIEZJWE1FOiBTYW5pdHkg
Y2hlY2sgaGVyZSB0aGF0IHdlJ3JlIHN0aWxsIGRyYWdnaW5nIHRoZSBzYW1lIG5vZGUuCisgICAg
S1VSTCBsaW5rVVJMID0gaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKKyAgICBLVVJM
IGltYWdlVVJMID0gaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMKCk7CiAKICAgICBJbnRQ
b2ludCBtb3VzZURyYWdnZWRQb2ludCA9IHNyYy0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGRy
YWdFdmVudC5wb3MoKSk7CiAKQEAgLTcxOCwxNCArNjkyLDE0IEBAIGJvb2wgRHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRHJhZ09wZXJh
dGlvbiBzCiAgICAgSW50UG9pbnQgZHJhZ0xvYygwLCAwKTsKICAgICBJbnRQb2ludCBkcmFnSW1h
Z2VPZmZzZXQoMCwgMCk7CiAKLSAgICBpZiAoaXNESFRNTERyYWcpCisgICAgQ2xpcGJvYXJkKiBj
bGlwYm9hcmQgPSBzdGF0ZS5tX2RyYWdDbGlwYm9hcmQuZ2V0KCk7CisgICAgaWYgKHN0YXRlLm1f
ZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKQogICAgICAgICBkcmFnSW1hZ2UgPSBj
bGlwYm9hcmQtPmNyZWF0ZURyYWdJbWFnZShkcmFnSW1hZ2VPZmZzZXQpOwotICAgIGVsc2Ugewot
ICAgICAgICAvLyBUaGlzIGRyYWcgb3BlcmF0aW9uIGlzIG5vdCBhIERIVE1MIGRyYWcgYW5kIG1h
eSBnbyBvdXRzaWRlIHRoZSBXZWJWaWV3LgotICAgICAgICAvLyBXZSBwcm92aWRlIGEgZGVmYXVs
dCBzZXQgb2YgYWxsb3dlZCBkcmFnIG9wZXJhdGlvbnMgdGhhdCBmb2xsb3dzIGZyb206CisgICAg
aWYgKHN0YXRlLm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbiB8fCAhaW1h
Z2VVUkwuaXNFbXB0eSgpIHx8ICFsaW5rVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgLy8gU2VsZWN0
aW9uLCBpbWFnZSwgYW5kIGxpbmsgZHJhZ3MgcmVjZWl2ZSBhIGRlZmF1bHQgc2V0IG9mIGFsbG93
ZWQgZHJhZyBvcGVyYXRpb25zIHRoYXQKKyAgICAgICAgLy8gZm9sbG93cyBmcm9tOgogICAgICAg
ICAvLyBodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tP3Jldj00ODUyNiNMMzQzMAotICAgICAgICBtX3NvdXJjZURyYWdP
cGVyYXRpb24gPSAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3Bl
cmF0aW9uQ29weSk7Ci0gICAgfQorICAgICAgICBtX3NvdXJjZURyYWdPcGVyYXRpb24gPSBzdGF0
aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihtX3NvdXJjZURyYWdPcGVyYXRpb24gfCBEcmFnT3BlcmF0
aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Db3B5KTsKIAogICAgIC8vIFdlIGFsbG93IERIVE1M
L0pTIHRvIHNldCB0aGUgZHJhZyBpbWFnZSwgZXZlbiBpZiBpdHMgYSBsaW5rLCBpbWFnZSBvciB0
ZXh0IHdlJ3JlIGRyYWdnaW5nLgogICAgIC8vIFRoaXMgaXMgaW4gdGhlIHNwaXJpdCBvZiB0aGUg
SUUgQVBJLCB3aGljaCBhbGxvd3Mgb3ZlcnJpZGluZyBvZiBwYXN0ZWJvYXJkIGRhdGEgYW5kIERy
YWdPcC4KQEAgLTczNiwyNiArNzEwLDQ0IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJh
ZyhGcmFtZSogc3JjLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRHJhZ09wZXJhdGlvbiBzCiAKICAg
ICBib29sIHN0YXJ0ZWREcmFnID0gdHJ1ZTsgLy8gb3B0aW1pc20gLSB3ZSBhbG1vc3QgYWx3YXlz
IG1hbmFnZSB0byBzdGFydCB0aGUgZHJhZwogCi0gICAgTm9kZSogbm9kZSA9IGRyYWdTb3VyY2Uu
aW5uZXJOb25TaGFyZWROb2RlKCk7CisgICAgTm9kZSogbm9kZSA9IHN0YXRlLm1fZHJhZ1NyYy5n
ZXQoKTsKIAogICAgIEltYWdlKiBpbWFnZSA9IGdldEltYWdlKHN0YXRpY19jYXN0PEVsZW1lbnQq
Pihub2RlKSk7Ci0gICAgaWYgKCFpbWFnZVVSTC5pc0VtcHR5KCkgJiYgbm9kZSAmJiBub2RlLT5p
c0VsZW1lbnROb2RlKCkgJiYgaW1hZ2UKLSAgICAgICAgICAgICYmIChtX2RyYWdTb3VyY2VBY3Rp
b24gJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpKSB7CisgICAgaWYgKHN0YXRlLm1fZHJhZ1R5cGUg
PT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgeworICAgICAgICBpZiAoIWNsaXBib2FyZC0+
aGFzRGF0YSgpKSB7CisgICAgICAgICAgICBpZiAoaXNOb2RlSW5UZXh0Rm9ybUNvbnRyb2woc3Jj
LT5zZWxlY3Rpb24oKS0+c3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpKSkKKyAgICAgICAgICAgICAg
ICBjbGlwYm9hcmQtPndyaXRlUGxhaW5UZXh0KHNyYy0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgp
KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc2Vs
ZWN0aW9uUmFuZ2UgPSBzcmMtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpOworICAg
ICAgICAgICAgICAgIEFTU0VSVChzZWxlY3Rpb25SYW5nZSk7CisKKyAgICAgICAgICAgICAgICBj
bGlwYm9hcmQtPndyaXRlUmFuZ2Uoc2VsZWN0aW9uUmFuZ2UuZ2V0KCksIHNyYyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbV9jbGllbnQtPndpbGxQZXJmb3JtRHJhZ1NvdXJj
ZUFjdGlvbihEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQp
OworICAgICAgICBpZiAoIWRyYWdJbWFnZSkgeworICAgICAgICAgICAgZHJhZ0ltYWdlID0gY3Jl
YXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKHNyYyk7CisgICAgICAgICAgICBkcmFnTG9jID0gZHJh
Z0xvY0ZvclNlbGVjdGlvbkRyYWcoc3JjKTsKKyAgICAgICAgICAgIG1fZHJhZ09mZnNldCA9IElu
dFBvaW50KGRyYWdPcmlnaW4ueCgpIC0gZHJhZ0xvYy54KCksIGRyYWdPcmlnaW4ueSgpIC0gZHJh
Z0xvYy55KCkpOworICAgICAgICB9CisgICAgICAgIGRvU3lzdGVtRHJhZyhkcmFnSW1hZ2UsIGRy
YWdMb2MsIGRyYWdPcmlnaW4sIGNsaXBib2FyZCwgc3JjLCBmYWxzZSk7CisgICAgfSBlbHNlIGlm
ICghaW1hZ2VVUkwuaXNFbXB0eSgpICYmIG5vZGUgJiYgbm9kZS0+aXNFbGVtZW50Tm9kZSgpICYm
IGltYWdlCisgICAgICAgICAgICAgICAmJiAobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJj
ZUFjdGlvbkltYWdlKSkgewogICAgICAgICAvLyBXZSBzaG91bGRuJ3QgYmUgc3RhcnRpbmcgYSBk
cmFnIGZvciBhbiBpbWFnZSB0aGF0IGNhbid0IHByb3ZpZGUgYW4gZXh0ZW5zaW9uLgogICAgICAg
ICAvLyBUaGlzIGlzIGFuIGVhcmx5IGRldGVjdGlvbiBmb3IgcHJvYmxlbXMgZW5jb3VudGVyZWQg
bGF0ZXIgdXBvbiBkcm9wLgogICAgICAgICBBU1NFUlQoIWltYWdlLT5maWxlbmFtZUV4dGVuc2lv
bigpLmlzRW1wdHkoKSk7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxF
bGVtZW50Kj4obm9kZSk7CiAgICAgICAgIGlmICghY2xpcGJvYXJkLT5oYXNEYXRhKCkpIHsKICAg
ICAgICAgICAgIG1fZHJhZ2dpbmdJbWFnZVVSTCA9IGltYWdlVVJMOwotICAgICAgICAgICAgcHJl
cGFyZUNsaXBib2FyZEZvckltYWdlRHJhZyhzcmMsIGNsaXBib2FyZCwgZWxlbWVudCwgbGlua1VS
TCwgaW1hZ2VVUkwsIGRyYWdTb3VyY2UuYWx0RGlzcGxheVN0cmluZygpKTsKKyAgICAgICAgICAg
IHByZXBhcmVDbGlwYm9hcmRGb3JJbWFnZURyYWcoc3JjLCBjbGlwYm9hcmQsIGVsZW1lbnQsIGxp
bmtVUkwsIGltYWdlVVJMLCBoaXRUZXN0UmVzdWx0LmFsdERpc3BsYXlTdHJpbmcoKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERy
YWdTb3VyY2VBY3Rpb25JbWFnZSwgZHJhZ09yaWdpbiwgY2xpcGJvYXJkKTsKIAogICAgICAgICBp
ZiAoIWRyYWdJbWFnZSkgewotICAgICAgICAgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBkcmFnU291
cmNlLmltYWdlUmVjdCgpOworICAgICAgICAgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBoaXRUZXN0
UmVzdWx0LmltYWdlUmVjdCgpOwogICAgICAgICAgICAgaW1hZ2VSZWN0LnNldExvY2F0aW9uKG1f
cGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhzcmMtPnZpZXcoKS0+
Y29udGVudHNUb1dpbmRvdyhpbWFnZVJlY3QubG9jYXRpb24oKSkpKTsKLSAgICAgICAgICAgIGRv
SW1hZ2VEcmFnKGVsZW1lbnQsIGRyYWdPcmlnaW4sIGRyYWdTb3VyY2UuaW1hZ2VSZWN0KCksIGNs
aXBib2FyZCwgc3JjLCBtX2RyYWdPZmZzZXQpOworICAgICAgICAgICAgZG9JbWFnZURyYWcoZWxl
bWVudCwgZHJhZ09yaWdpbiwgaGl0VGVzdFJlc3VsdC5pbWFnZVJlY3QoKSwgY2xpcGJvYXJkLCBz
cmMsIG1fZHJhZ09mZnNldCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgLy8gREhUTUwg
ZGVmaW5lZCBkcmFnIGltYWdlCiAgICAgICAgICAgICBkb1N5c3RlbURyYWcoZHJhZ0ltYWdlLCBk
cmFnTG9jLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQsIHNyYywgZmFsc2UpOwpAQCAtNzY0LDcgKzc1
Niw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlwYm9h
cmQqIGNsaXBib2FyZCwgRHJhZ09wZXJhdGlvbiBzCiAgICAgICAgIGlmICghY2xpcGJvYXJkLT5o
YXNEYXRhKCkpCiAgICAgICAgICAgICAvLyBTaW1wbGlmeSB3aGl0ZXNwYWNlIHNvIHRoZSB0aXRs
ZSBwdXQgb24gdGhlIGNsaXBib2FyZCByZXNlbWJsZXMgd2hhdCB0aGUgdXNlciBzZWVzCiAgICAg
ICAgICAgICAvLyBvbiB0aGUgd2ViIHBhZ2UuIFRoaXMgaW5jbHVkZXMgcmVwbGFjaW5nIG5ld2xp
bmVzIHdpdGggc3BhY2VzLgotICAgICAgICAgICAgY2xpcGJvYXJkLT53cml0ZVVSTChsaW5rVVJM
LCBkcmFnU291cmNlLnRleHRDb250ZW50KCkuc2ltcGxpZnlXaGl0ZVNwYWNlKCksIHNyYyk7Cisg
ICAgICAgICAgICBjbGlwYm9hcmQtPndyaXRlVVJMKGxpbmtVUkwsIGhpdFRlc3RSZXN1bHQudGV4
dENvbnRlbnQoKS5zaW1wbGlmeVdoaXRlU3BhY2UoKSwgc3JjKTsKIAogICAgICAgICBpZiAoc3Jj
LT5zZWxlY3Rpb24oKS0+aXNDYXJldCgpICYmIHNyYy0+c2VsZWN0aW9uKCktPmlzQ29udGVudEVk
aXRhYmxlKCkpIHsKICAgICAgICAgICAgIC8vIGEgdXNlciBjYW4gaW5pdGlhdGUgYSBkcmFnIG9u
IGEgbGluayB3aXRob3V0IGhhdmluZyBhbnkgdGV4dApAQCAtNzc4LDM3ICs3NzAsMTkgQEAgYm9v
bCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lKiBzcmMsIENsaXBib2FyZCogY2xpcGJv
YXJkLCBEcmFnT3BlcmF0aW9uIHMKIAogICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFn
U291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25MaW5rLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQp
OwogICAgICAgICBpZiAoIWRyYWdJbWFnZSkgewotICAgICAgICAgICAgZHJhZ0ltYWdlID0gY3Jl
YXRlRHJhZ0ltYWdlRm9yTGluayhsaW5rVVJMLCBkcmFnU291cmNlLnRleHRDb250ZW50KCksIHNy
Yyk7CisgICAgICAgICAgICBkcmFnSW1hZ2UgPSBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKGxpbmtV
UkwsIGhpdFRlc3RSZXN1bHQudGV4dENvbnRlbnQoKSwgc3JjKTsKICAgICAgICAgICAgIEludFNp
emUgc2l6ZSA9IGRyYWdJbWFnZVNpemUoZHJhZ0ltYWdlKTsKICAgICAgICAgICAgIG1fZHJhZ09m
ZnNldCA9IEludFBvaW50KC1zaXplLndpZHRoKCkgLyAyLCAtTGlua0RyYWdCb3JkZXJJbnNldCk7
CiAgICAgICAgICAgICBkcmFnTG9jID0gSW50UG9pbnQobW91c2VEcmFnZ2VkUG9pbnQueCgpICsg
bV9kcmFnT2Zmc2V0LngoKSwgbW91c2VEcmFnZ2VkUG9pbnQueSgpICsgbV9kcmFnT2Zmc2V0Lnko
KSk7CiAgICAgICAgIH0KICAgICAgICAgZG9TeXN0ZW1EcmFnKGRyYWdJbWFnZSwgZHJhZ0xvYywg
bW91c2VEcmFnZ2VkUG9pbnQsIGNsaXBib2FyZCwgc3JjLCB0cnVlKTsKLSAgICB9IGVsc2UgaWYg
KGlzU2VsZWN0ZWQgJiYgKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25TZWxl
Y3Rpb24pKSB7Ci0gICAgICAgIGlmICghY2xpcGJvYXJkLT5oYXNEYXRhKCkpIHsKLSAgICAgICAg
ICAgIGlmIChpc05vZGVJblRleHRGb3JtQ29udHJvbChzcmMtPnNlbGVjdGlvbigpLT5zdGFydCgp
LmRlcHJlY2F0ZWROb2RlKCkpKQotICAgICAgICAgICAgICAgIGNsaXBib2FyZC0+d3JpdGVQbGFp
blRleHQoc3JjLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpOwotICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb25SYW5nZSA9IHNyYy0+c2Vs
ZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHNl
bGVjdGlvblJhbmdlKTsKLQotICAgICAgICAgICAgICAgIGNsaXBib2FyZC0+d3JpdGVSYW5nZShz
ZWxlY3Rpb25SYW5nZS5nZXQoKSwgc3JjKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rp
b25TZWxlY3Rpb24sIGRyYWdPcmlnaW4sIGNsaXBib2FyZCk7Ci0gICAgICAgIGlmICghZHJhZ0lt
YWdlKSB7Ci0gICAgICAgICAgICBkcmFnSW1hZ2UgPSBjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rp
b24oc3JjKTsKLSAgICAgICAgICAgIGRyYWdMb2MgPSBkcmFnTG9jRm9yU2VsZWN0aW9uRHJhZyhz
cmMpOwotICAgICAgICAgICAgbV9kcmFnT2Zmc2V0ID0gSW50UG9pbnQoKGludCkoZHJhZ09yaWdp
bi54KCkgLSBkcmFnTG9jLngoKSksIChpbnQpKGRyYWdPcmlnaW4ueSgpIC0gZHJhZ0xvYy55KCkp
KTsKLSAgICAgICAgfQotICAgICAgICBkb1N5c3RlbURyYWcoZHJhZ0ltYWdlLCBkcmFnTG9jLCBk
cmFnT3JpZ2luLCBjbGlwYm9hcmQsIHNyYywgZmFsc2UpOwotICAgIH0gZWxzZSBpZiAoaXNESFRN
TERyYWcpIHsKKyAgICB9IGVsc2UgaWYgKHN0YXRlLm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFj
dGlvbkRIVE1MKSB7CiAgICAgICAgIEFTU0VSVChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291
cmNlQWN0aW9uREhUTUwpOwogICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFnU291cmNl
QWN0aW9uKERyYWdTb3VyY2VBY3Rpb25ESFRNTCwgZHJhZ09yaWdpbiwgY2xpcGJvYXJkKTsKICAg
ICAgICAgZG9TeXN0ZW1EcmFnKGRyYWdJbWFnZSwgZHJhZ0xvYywgZHJhZ09yaWdpbiwgY2xpcGJv
YXJkLCBzcmMsIGZhbHNlKTsKICAgICB9IGVsc2UgewotICAgICAgICAvLyBPbmx5IHdheSBJIGtu
b3cgdG8gZ2V0IGhlcmUgaXMgaWYgdG8gZ2V0IGhlcmUgaXMgaWYgdGhlIG9yaWdpbmFsIGVsZW1l
bnQgY2xpY2tlZCBvbiBpbiB0aGUgbW91c2Vkb3duIGlzIG5vIGxvbmdlcgotICAgICAgICAvLyB1
bmRlciB0aGUgbW91c2Vkb3duIHBvaW50LCBzbyBsaW5rVVJMLCBpbWFnZVVSTCBhbmQgaXNTZWxl
Y3RlZCBhcmUgYWxsIGZhbHNlL2VtcHR5LgorICAgICAgICAvLyBkcmFnZ2FibGVOb2RlKCkgZGV0
ZXJtaW5lZCBhbiBpbWFnZSBvciBsaW5rIG5vZGUgd2FzIGRyYWdnYWJsZSwgYnV0IGl0IHR1cm5z
IG91dCB0aGUKKyAgICAgICAgLy8gaW1hZ2Ugb3IgbGluayBoYWQgbm8gVVJMLiBPaCB3ZWxsLgog
ICAgICAgICBzdGFydGVkRHJhZyA9IGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5oCmluZGV4IGJlOGM4MzRhZWU2MTU2OWJkZTIxYzhiOTBmYWU5YzA0ZmEzNWEw
YmEuLjI2MWE4ZDUzZjczNjU4YjA3MWYyMTA1NmFlNThiMjRiMWJiNDU5NjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIERvY3VtZW50OwogICAgIGNsYXNzIERyYWdDbGllbnQ7CiAgICAgY2xh
c3MgRHJhZ0RhdGE7CisgICAgc3RydWN0IERyYWdTdGF0ZTsKICAgICBjbGFzcyBFbGVtZW50Owog
ICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEZyYW1lU2VsZWN0aW9uOwpAQCAtNzUsMTMgKzc2
LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
IGRyYWdEZXN0aW5hdGlvbkFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uOyB9CiAgICAgICAgIERyYWdTb3VyY2VBY3Rpb24gZGVsZWdhdGVEcmFnU291cmNlQWN0
aW9uKGNvbnN0IEludFBvaW50JiBwYWdlUG9pbnQpOwogICAgICAgICAKLSAgICAgICAgTm9kZSog
ZHJhZ2dhYmxlTm9kZShjb25zdCBGcmFtZSosIE5vZGUqLCBib29sIGRodG1sT0ssIGJvb2wgdWFP
SywgaW50IHgsIGludCB5LCBib29sJiBkaHRtbFdpbGxEcmFnKSBjb25zdDsKLSAgICAgICAgYm9v
bCBtYXlTdGFydERyYWdBdEV2ZW50TG9jYXRpb24oY29uc3QgRnJhbWUqLCBjb25zdCBJbnRQb2lu
dCYgZnJhbWVQb3MsIE5vZGUqKSBjb25zdDsKKyAgICAgICAgTm9kZSogZHJhZ2dhYmxlTm9kZShj
b25zdCBGcmFtZSosIE5vZGUqLCBjb25zdCBJbnRQb2ludCYsIERyYWdTdGF0ZSYpIGNvbnN0Owog
ICAgICAgICB2b2lkIGRyYWdFbmRlZCgpOwogICAgICAgICAKICAgICAgICAgdm9pZCBwbGFjZURy
YWdDYXJldChjb25zdCBJbnRQb2ludCYpOwogICAgICAgICAKLSAgICAgICAgYm9vbCBzdGFydERy
YWcoRnJhbWUqIHNyYywgQ2xpcGJvYXJkKiwgRHJhZ09wZXJhdGlvbiBzcmNPcCwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBi
b29sIGlzREhUTUxEcmFnKTsKKyAgICAgICAgYm9vbCBzdGFydERyYWcoRnJhbWUqIHNyYywgY29u
c3QgRHJhZ1N0YXRlJiwgRHJhZ09wZXJhdGlvbiBzcmNPcCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luKTsKICAgICAgICAgc3Rh
dGljIGNvbnN0IEludFNpemUmIG1heERyYWdJbWFnZVNpemUoKTsKICAgICAgICAgCiAgICAgICAg
IHN0YXRpYyBjb25zdCBpbnQgTGlua0RyYWdCb3JkZXJJbnNldDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0
ZS5oCmluZGV4IDZiMWY2NzU2ZTNkMjFlNzdmYjE5YjBiOTg3YjI0MDMxZDcwZWQwZmEuLjVhYmQy
YTAxY2ZmMTk2MzNiN2VlY2JmMzViMWY3Y2EyZDY4YTI4NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3Rh
dGUuaApAQCAtMjYsMjMgKzI2LDI5IEBACiAjaWZuZGVmIERyYWdTdGF0ZV9oCiAjZGVmaW5lIERy
YWdTdGF0ZV9oCiAKKyNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENsaXBib2FyZDsKK2NsYXNzIE5v
ZGU7CisKIHN0cnVjdCBEcmFnU3RhdGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERyYWdT
dGF0ZSk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CisgICAgZW51bSBF
dmVudERpc3BhdGNoUG9saWN5IHsKKyAgICAgICAgRE9fTk9UX0RJU1BBVENIX0VWRU5UUywKKyAg
ICAgICAgRElTUEFUQ0hfRVZFTlRTLAorICAgIH07CiAgICAgRHJhZ1N0YXRlKCkgeyB9CisgICAg
Ym9vbCBzaG91bGREaXNwYXRjaEV2ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnREaXNwYXRj
aFBvbGljeSA9PSBESVNQQVRDSF9FVkVOVFM7IH0KICAgICBSZWZQdHI8Tm9kZT4gbV9kcmFnU3Jj
OyAvLyBlbGVtZW50IHRoYXQgbWF5IGJlIGEgZHJhZyBzb3VyY2UsIGZvciB0aGUgY3VycmVudCBt
b3VzZSBnZXN0dXJlCi0gICAgYm9vbCBtX2RyYWdTcmNJc0xpbms7Ci0gICAgYm9vbCBtX2RyYWdT
cmNJc0ltYWdlOwotICAgIGJvb2wgbV9kcmFnU3JjSW5TZWxlY3Rpb247Ci0gICAgYm9vbCBtX2Ry
YWdTcmNNYXlCZURIVE1MOwotICAgIGJvb2wgbV9kcmFnU3JjTWF5QmVVQTsgLy8gQXJlIERIVE1M
IGFuZC9vciB0aGUgVXNlckFnZW50IGFsbG93ZWQgdG8gZHJhZyBvdXQ/Ci0gICAgYm9vbCBtX2Ry
YWdTcmNJc0RIVE1MOworICAgIEV2ZW50RGlzcGF0Y2hQb2xpY3kgbV9ldmVudERpc3BhdGNoUG9s
aWN5OworICAgIERyYWdTb3VyY2VBY3Rpb24gbV9kcmFnVHlwZTsKICAgICBSZWZQdHI8Q2xpcGJv
YXJkPiBtX2RyYWdDbGlwYm9hcmQ7IC8vIHVzZWQgb24gb25seSB0aGUgc291cmNlIHNpZGUgb2Yg
ZHJhZ2dpbmcKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBkMjE1
OTVhYmM1YTViMTIwNTVkMTkyYjIzN2MyZWI0MmMwY2FlNTIzLi5jOGU2ZTg4MDJhZWM0YmI5YzM0
YWZmYzE5MTZkNDVkZTdjOWI3NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CkBAIC03OCw2ICs3OCw3IEBACiAjaW5jbHVkZSAiVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3Iu
aCIKICNpbmNsdWRlICJXaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29k
ZXMuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtNTg3LDEyICs1ODgs
NiBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZXZlbnRNYXlTdGFydERyYWcoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldmVudCkgY29uc3QKICAgICBpZiAoZXZlbnQuYnV0dG9uKCkgIT0gTGVmdEJ1
dHRvbiB8fCBldmVudC5jbGlja0NvdW50KCkgIT0gMSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIAotICAgIGJvb2wgREhUTUxGbGFnOwotICAgIGJvb2wgVUFGbGFnOwotICAgIGFsbG93REhU
TUxEcmFnKERIVE1MRmxhZywgVUFGbGFnKTsKLSAgICBpZiAoIURIVE1MRmxhZyAmJiAhVUFGbGFn
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1l
LT52aWV3KCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MDEs
MTEgKzU5NiwxMiBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZXZlbnRNYXlTdGFydERyYWcoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkgY29uc3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAorICAgIERyYWdTdGF0ZSBzdGF0ZTsKKyAgICB1cGRhdGVEcmFnU291
cmNlQWN0aW9uc0FsbG93ZWQoc3RhdGUubV9ldmVudERpc3BhdGNoUG9saWN5KTsKICAgICBIaXRU
ZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSk7CiAgICAgSGl0VGVz
dFJlc3VsdCByZXN1bHQodmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3MoKSkpOwogICAg
IG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5sYXllcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJl
c3VsdCk7Ci0gICAgYm9vbCBzcmNJc0RIVE1MOwotICAgIHJldHVybiByZXN1bHQuaW5uZXJOb2Rl
KCkgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZHJhZ2dhYmxlTm9kZShtX2ZyYW1lLCByZXN1
bHQuaW5uZXJOb2RlKCksIERIVE1MRmxhZywgVUFGbGFnLCByZXN1bHQucG9pbnQoKS54KCksIHJl
c3VsdC5wb2ludCgpLnkoKSwgc3JjSXNESFRNTCk7CisgICAgcmV0dXJuIHJlc3VsdC5pbm5lck5v
ZGUoKSAmJiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5kcmFnZ2FibGVOb2RlKG1fZnJhbWUsIHJl
c3VsdC5pbm5lck5vZGUoKSwgcmVzdWx0LnBvaW50KCksIHN0YXRlKTsKIH0KIAogdm9pZCBFdmVu
dEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZygpCkBAIC04OTIsMTEgKzg4OCw4
IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpzZXRBdXRvc2Nyb2xsUmVuZGVyZXIoUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi12b2lkIEV2ZW50SGFu
ZGxlcjo6YWxsb3dESFRNTERyYWcoYm9vbCYgZmxhZ0RIVE1MLCBib29sJiBmbGFnVUEpIGNvbnN0
Cit2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKERyYWdT
dGF0ZTo6RXZlbnREaXNwYXRjaFBvbGljeSYgcG9saWN5KSBjb25zdAogewotICAgIGZsYWdESFRN
TCA9IGZhbHNlOwotICAgIGZsYWdVQSA9IGZhbHNlOwotCiAgICAgaWYgKCFtX2ZyYW1lKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTkwOCw5ICs5MDEsMTEgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmFs
bG93REhUTUxEcmFnKGJvb2wmIGZsYWdESFRNTCwgYm9vbCYgZmxhZ1VBKSBjb25zdAogICAgIGlm
ICghdmlldykKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5zaWduZWQgbWFzayA9IHBhZ2UtPmRy
YWdDb250cm9sbGVyKCktPmRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbih2aWV3LT5jb250ZW50c1Rv
V2luZG93KG1fbW91c2VEb3duUG9zKSk7Ci0gICAgZmxhZ0RIVE1MID0gKG1hc2sgJiBEcmFnU291
cmNlQWN0aW9uREhUTUwpICE9IERyYWdTb3VyY2VBY3Rpb25Ob25lOwotICAgIGZsYWdVQSA9ICgo
bWFzayAmIERyYWdTb3VyY2VBY3Rpb25JbWFnZSkgfHwgKG1hc2sgJiBEcmFnU291cmNlQWN0aW9u
TGluaykgfHwgKG1hc2sgJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSk7CisgICAgRHJhZ1Nv
dXJjZUFjdGlvbiBtYXNrID0gcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZGVsZWdhdGVEcmFnU291
cmNlQWN0aW9uKHZpZXctPmNvbnRlbnRzVG9XaW5kb3cobV9tb3VzZURvd25Qb3MpKTsKKyAgICBp
ZiAobWFzayAmIERyYWdTb3VyY2VBY3Rpb25ESFRNTCkKKyAgICAgICAgcG9saWN5ID0gRHJhZ1N0
YXRlOjpESVNQQVRDSF9FVkVOVFM7CisgICAgZWxzZQorICAgICAgICBwb2xpY3kgPSBEcmFnU3Rh
dGU6OkRPX05PVF9ESVNQQVRDSF9FVkVOVFM7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQ
UE9SVCkKICAgICAKQEAgLTE4MDIsNyArMTc5Nyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp1cGRh
dGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBDbGlwYm9hcmQq
CiAgICAgICAgIC8vIE1vcmVvdmVyLCB0aGlzIG9yZGVyaW5nIGNvbmZvcm1zIHRvIHNlY3Rpb24g
Ny45LjQgb2YgdGhlIEhUTUwgNSBzcGVjLiA8aHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9P
dmVydmlldy5odG1sI2RyYWctYW5kLWRyb3AtcHJvY2Vzc2luZy1tb2RlbD4uCiAgICAgICAgIGlm
IChuZXdUYXJnZXQgJiYgY2FuSGFuZGxlRHJhZ0FuZERyb3BGb3JUYXJnZXQoVXBkYXRlRHJhZ0Fu
ZERyb3AsIG5ld1RhcmdldCwgZXZlbnQsIGNsaXBib2FyZCwgJmFjY2VwdCkpIHsKICAgICAgICAg
ICAgIC8vIEFzIHBlciBzZWN0aW9uIDcuOS40IG9mIHRoZSBIVE1MIDUgc3BlYy4sIHdlIG11c3Qg
YWx3YXlzIGZpcmUgYSBkcmFnIGV2ZW50IGJlZm9yZSBmaXJpbmcgYSBkcmFnZW50ZXIsIGRyYWds
ZWF2ZSwgb3IgZHJhZ292ZXIgZXZlbnQuCi0gICAgICAgICAgICBpZiAoZHJhZ1N0YXRlKCkubV9k
cmFnU3JjICYmIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwpIHsKKyAgICAgICAgICAg
IGlmIChkcmFnU3RhdGUoKS5tX2RyYWdTcmMgJiYgZHJhZ1N0YXRlKCkuc2hvdWxkRGlzcGF0Y2hF
dmVudHMoKSkgewogICAgICAgICAgICAgICAgIC8vIGZvciBub3cgd2UgZG9uJ3QgY2FyZSBpZiBl
dmVudCBoYW5kbGVyIGNhbmNlbHMgZGVmYXVsdCBiZWhhdmlvciwgc2luY2UgdGhlcmUgaXMgbm9u
ZQogICAgICAgICAgICAgICAgIGRpc3BhdGNoRHJhZ1NyY0V2ZW50KGV2ZW50TmFtZXMoKS5kcmFn
RXZlbnQsIGV2ZW50KTsKICAgICAgICAgICAgIH0KQEAgLTE4MjAsNyArMTgxNSw3IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2ZW50LCBDbGlwYm9hcmQqCiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG5ld1RhcmdldCAm
JiBjYW5IYW5kbGVEcmFnQW5kRHJvcEZvclRhcmdldChVcGRhdGVEcmFnQW5kRHJvcCwgbmV3VGFy
Z2V0LCBldmVudCwgY2xpcGJvYXJkLCAmYWNjZXB0KSkgewogICAgICAgICAgICAgLy8gTm90ZSwg
d2hlbiBkZWFsaW5nIHdpdGggc3ViLWZyYW1lcywgd2UgbWF5IG5lZWQgdG8gZmlyZSBvbmx5IGEg
ZHJhZ292ZXIgZXZlbnQgYXMgYSBkcmFnIGV2ZW50IG1heSBoYXZlIGJlZW4gZmlyZWQgZWFybGll
ci4KLSAgICAgICAgICAgIGlmICghbV9zaG91bGRPbmx5RmlyZURyYWdPdmVyRXZlbnQgJiYgZHJh
Z1N0YXRlKCkubV9kcmFnU3JjICYmIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwpIHsK
KyAgICAgICAgICAgIGlmICghbV9zaG91bGRPbmx5RmlyZURyYWdPdmVyRXZlbnQgJiYgZHJhZ1N0
YXRlKCkubV9kcmFnU3JjICYmIGRyYWdTdGF0ZSgpLnNob3VsZERpc3BhdGNoRXZlbnRzKCkpIHsK
ICAgICAgICAgICAgICAgICAvLyBmb3Igbm93IHdlIGRvbid0IGNhcmUgaWYgZXZlbnQgaGFuZGxl
ciBjYW5jZWxzIGRlZmF1bHQgYmVoYXZpb3IsIHNpbmNlIHRoZXJlIGlzIG5vbmUKICAgICAgICAg
ICAgICAgICBkaXNwYXRjaERyYWdTcmNFdmVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVu
dCk7CiAgICAgICAgICAgICB9CkBAIC0xODM2LDcgKzE4MzEsNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgQ2xp
cGJvYXJkKgogdm9pZCBFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQsIENsaXBib2FyZCogY2xpcGJvYXJkKQogewogICAgIGlmICht
X2RyYWdUYXJnZXQgJiYgY2FuSGFuZGxlRHJhZ0FuZERyb3BGb3JUYXJnZXQoQ2FuY2VsRHJhZ0Fu
ZERyb3AsIG1fZHJhZ1RhcmdldC5nZXQoKSwgZXZlbnQsIGNsaXBib2FyZCkpIHsKLSAgICAgICAg
aWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyAmJiBkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURI
VE1MKQorICAgICAgICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjICYmIGRyYWdTdGF0ZSgpLnNo
b3VsZERpc3BhdGNoRXZlbnRzKCkpCiAgICAgICAgICAgICBkaXNwYXRjaERyYWdTcmNFdmVudChl
dmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVudCk7CiAgICAgICAgIGRpc3BhdGNoRHJhZ0V2ZW50
KGV2ZW50TmFtZXMoKS5kcmFnbGVhdmVFdmVudCwgbV9kcmFnVGFyZ2V0LmdldCgpLCBldmVudCwg
Y2xpcGJvYXJkKTsKICAgICB9CkBAIC0yNjI5LDEyICsyNjI0LDIxIEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGNvbnN0IEludFBvaW50JiBkcmFnVmlld3BvcnRM
b2NhdGlvbikKICAgICBJbnRTaXplIGRlbHRhID0gZHJhZ0xvY2F0aW9uIC0gbV9tb3VzZURvd25Q
b3M7CiAgICAgCiAgICAgaW50IHRocmVzaG9sZCA9IEdlbmVyYWxEcmFnSHlzdGVyZXNpczsKLSAg
ICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjSXNJbWFnZSkKKyAgICBzd2l0Y2ggKGRyYWdTdGF0
ZSgpLm1fZHJhZ1R5cGUpIHsKKyAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb246Cisg
ICAgICAgIHRocmVzaG9sZCA9IFRleHREcmFnSHlzdGVyZXNpczsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBEcmFnU291cmNlQWN0aW9uSW1hZ2U6CiAgICAgICAgIHRocmVzaG9sZCA9IEltYWdl
RHJhZ0h5c3RlcmVzaXM7Ci0gICAgZWxzZSBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjSXNMaW5r
KQorICAgICAgICBicmVhazsKKyAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25MaW5rOgogICAgICAg
ICB0aHJlc2hvbGQgPSBMaW5rRHJhZ0h5c3RlcmVzaXM7Ci0gICAgZWxzZSBpZiAoZHJhZ1N0YXRl
KCkubV9kcmFnU3JjSW5TZWxlY3Rpb24pCi0gICAgICAgIHRocmVzaG9sZCA9IFRleHREcmFnSHlz
dGVyZXNpczsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEcmFnU291cmNlQWN0aW9uREhUTUw6
CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIH0KICAgICAKICAgICByZXR1cm4gYWJzKGRlbHRhLndpZHRoKCkpID49IHRocmVz
aG9sZCB8fCBhYnMoZGVsdGEuaGVpZ2h0KCkpID49IHRocmVzaG9sZDsKIH0KQEAgLTI2NDcsNyAr
MjY1MSw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpmcmVlQ2xpcGJvYXJkKCkKIAogdm9pZCBFdmVu
dEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZl
bnQsIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQogewotICAgIGlmIChkcmFnU3RhdGUoKS5tX2Ry
YWdTcmMgJiYgZHJhZ1N0YXRlKCkubV9kcmFnU3JjTWF5QmVESFRNTCkgeworICAgIGlmIChkcmFn
U3RhdGUoKS5tX2RyYWdTcmMgJiYgZHJhZ1N0YXRlKCkuc2hvdWxkRGlzcGF0Y2hFdmVudHMoKSkg
ewogICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdDbGlwYm9hcmQtPnNldERlc3RpbmF0aW9uT3Bl
cmF0aW9uKG9wZXJhdGlvbik7CiAgICAgICAgIC8vIGZvciBub3cgd2UgZG9uJ3QgY2FyZSBpZiBl
dmVudCBoYW5kbGVyIGNhbmNlbHMgZGVmYXVsdCBiZWhhdmlvciwgc2luY2UgdGhlcmUgaXMgbm9u
ZQogICAgICAgICBkaXNwYXRjaERyYWdTcmNFdmVudChldmVudE5hbWVzKCkuZHJhZ2VuZEV2ZW50
LCBldmVudCk7CkBAIC0yNjgyLDQwICsyNjg2LDI2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogICAgIC8v
IENhcmVmdWwgdGhhdCB0aGUgZHJhZyBzdGFydGluZyBsb2dpYyBzdGF5cyBpbiBzeW5jIHdpdGgg
ZXZlbnRNYXlTdGFydERyYWcoKQogICAgIAogICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0RHJh
ZyAmJiAhZHJhZ1N0YXRlKCkubV9kcmFnU3JjKSB7Ci0gICAgICAgIGFsbG93REhUTUxEcmFnKGRy
YWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwsIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJl
VUEpOwotICAgICAgICBpZiAoIWRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwgJiYgIWRy
YWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlVUEpCi0gICAgICAgICAgICBtX21vdXNlRG93bk1heVN0
YXJ0RHJhZyA9IGZhbHNlOyAvLyBubyBlbGVtZW50IGlzIGRyYWdnYWJsZQotICAgIH0KKyAgICAg
ICAgdXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKGRyYWdTdGF0ZSgpLm1fZXZlbnREaXNw
YXRjaFBvbGljeSk7CiAKLSAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcgJiYgIWRyYWdT
dGF0ZSgpLm1fZHJhZ1NyYykgewogICAgICAgICAvLyB0cnkgdG8gZmluZCBhbiBlbGVtZW50IHRo
YXQgd2FudHMgdG8gYmUgZHJhZ2dlZAogICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhp
dFRlc3RSZXF1ZXN0OjpSZWFkT25seSk7CisgICAgICAgIC8vIEZJWE1FOiBUaGUgaW5jb25zaXN0
ZW50IHVzZSBvZiBtX21vdXNlRG93blBvcyBhbmQgdmlldy0+d2luZG93VG9Db250ZW50cygpIGlz
IG9kZC4KICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQobV9tb3VzZURvd25Qb3MpOwogICAg
ICAgICBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+bGF5ZXIoKS0+aGl0VGVzdChyZXF1ZXN0
LCByZXN1bHQpOwogICAgICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAg
ICAgICBpZiAobm9kZSAmJiBtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAgICBkcmFnU3RhdGUo
KS5tX2RyYWdTcmMgPSBtX2ZyYW1lLT5wYWdlKCktPmRyYWdDb250cm9sbGVyKCktPmRyYWdnYWJs
ZU5vZGUobV9mcmFtZSwgbm9kZSwgZHJhZ1N0YXRlKCkubV9kcmFnU3JjTWF5QmVESFRNTCwgZHJh
Z1N0YXRlKCkubV9kcmFnU3JjTWF5QmVVQSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X21vdXNlRG93blBvcy54KCksIG1fbW91c2VEb3duUG9zLnkoKSwgZHJhZ1N0YXRlKCkubV9kcmFn
U3JjSXNESFRNTCk7CisgICAgICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdTcmMgPSBtX2ZyYW1l
LT5wYWdlKCktPmRyYWdDb250cm9sbGVyKCktPmRyYWdnYWJsZU5vZGUobV9mcmFtZSwgbm9kZSwg
bV9tb3VzZURvd25Qb3MsIGRyYWdTdGF0ZSgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0gMDsKICAgICAgICAgCiAgICAgICAgIGlmICghZHJhZ1N0
YXRlKCkubV9kcmFnU3JjKQogICAgICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBm
YWxzZTsgLy8gbm8gZWxlbWVudCBpcyBkcmFnZ2FibGUKLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAvLyByZW1lbWJlciBzb21lIGZhY3RzIGFib3V0IHRoaXMgc291cmNlLCB3aGlsZSB3ZSBo
YXZlIGEgSGl0VGVzdFJlc3VsdCBoYW5keQotICAgICAgICAgICAgbm9kZSA9IHJlc3VsdC5VUkxF
bGVtZW50KCk7Ci0gICAgICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdTcmNJc0xpbmsgPSBub2Rl
ICYmIG5vZGUtPmlzTGluaygpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBub2RlID0gcmVz
dWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpOwotICAgICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFn
U3JjSXNJbWFnZSA9IG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIoKSAmJiBub2RlLT5yZW5kZXJlcigp
LT5pc0ltYWdlKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJh
Z1NyY0luU2VsZWN0aW9uID0gbV9mcmFtZS0+c2VsZWN0aW9uKCktPmNvbnRhaW5zKG1fbW91c2VE
b3duUG9zKTsKLSAgICAgICAgfSAgICAgICAgICAgICAgICAKICAgICB9CiAgICAgCiAgICAgLy8g
Rm9yIGRyYWdzIHN0YXJ0aW5nIGluIHRoZSBzZWxlY3Rpb24sIHRoZSB1c2VyIG11c3Qgd2FpdCBi
ZXR3ZWVuIHRoZSBtb3VzZWRvd24gYW5kIG1vdXNlZHJhZywKICAgICAvLyBvciBlbHNlIHdlIGJh
aWwgb24gdGhlIGRyYWdnaW5nIHN0dWZmIGFuZCBhbGxvdyBzZWxlY3Rpb24gdG8gb2NjdXIKLSAg
ICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcgJiYgIWRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lz
SW1hZ2UgJiYgZHJhZ1N0YXRlKCkubV9kcmFnU3JjSW5TZWxlY3Rpb24gJiYgZXZlbnQuZXZlbnQo
KS50aW1lc3RhbXAoKSAtIG1fbW91c2VEb3duVGltZXN0YW1wIDwgVGV4dERyYWdEZWxheSkgewor
ICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0RHJhZyAmJiBkcmFnU3RhdGUoKS5tX2RyYWdUeXBl
ID09IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24gJiYgZXZlbnQuZXZlbnQoKS50aW1lc3RhbXAo
KSAtIG1fbW91c2VEb3duVGltZXN0YW1wIDwgVGV4dERyYWdEZWxheSkgewogICAgICAgICBtX21v
dXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOwogICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdT
cmMgPSAwOwogICAgICAgICAvLyAuLi5idXQgaWYgdGhpcyB3YXMgdGhlIGZpcnN0IGNsaWNrIGlu
IHRoZSB3aW5kb3csIHdlIGRvbid0IGV2ZW4gd2FudCB0byBzdGFydCBzZWxlY3Rpb24KQEAgLTI3
NDQsMTAgKzI3MzQsMTAgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiAgICAgICAgICAgICAgICAgICAgICAv
LyB0byBtYWtlIHN1cmUgaXQgZ2V0cyBudW1iaWZpZWQKICAgICBkcmFnU3RhdGUoKS5tX2RyYWdD
bGlwYm9hcmQgPSBjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCgpOyAgCiAgICAgCi0gICAgaWYgKGRy
YWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwpIHsKKyAgICBpZiAoZHJhZ1N0YXRlKCkuc2hv
dWxkRGlzcGF0Y2hFdmVudHMoKSkgewogICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGlz
IGEgRE9NIGJhc2VkIGRyYWcsIGlmIGl0IGlzIGdldCB0aGUgRE9NIHNwZWNpZmllZCBkcmFnIAog
ICAgICAgICAvLyBpbWFnZSBhbmQgb2Zmc2V0Ci0gICAgICAgIGlmIChkcmFnU3RhdGUoKS5tX2Ry
YWdTcmNJc0RIVE1MKSB7CisgICAgICAgIGlmIChkcmFnU3RhdGUoKS5tX2RyYWdUeXBlID09IERy
YWdTb3VyY2VBY3Rpb25ESFRNTCkgewogICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBkcmFnU3RhdGUoKS5tX2RyYWdTcmMtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IHdvcmsgY29ycmVjdGx5IHdpdGggdHJhbnNmb3Jt
cy4KICAgICAgICAgICAgICAgICBGbG9hdFBvaW50IGFic1BvcyA9IHJlbmRlcmVyLT5sb2NhbFRv
QWJzb2x1dGUoKTsKQEAgLTI3ODMsOCArMjc3Myw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogICAgIGlm
IChtX21vdXNlRG93bk1heVN0YXJ0RHJhZykgewogICAgICAgICBQYWdlKiBwYWdlID0gbV9mcmFt
ZS0+cGFnZSgpOwogICAgICAgICBEcmFnQ29udHJvbGxlciogZHJhZ0NvbnRyb2xsZXIgPSBwYWdl
ID8gcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKSA6IDA7Ci0gICAgICAgIGJvb2wgc3RhcnRlZERyYWcg
PSBkcmFnQ29udHJvbGxlciAmJiBkcmFnQ29udHJvbGxlci0+c3RhcnREcmFnKG1fZnJhbWUsIGRy
YWdTdGF0ZSgpLm1fZHJhZ0NsaXBib2FyZC5nZXQoKSwgc3JjT3AsIGV2ZW50LmV2ZW50KCksIG1f
bW91c2VEb3duUG9zLCBkcmFnU3RhdGUoKS5tX2RyYWdTcmNJc0RIVE1MKTsKLSAgICAgICAgaWYg
KCFzdGFydGVkRHJhZyAmJiBkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MKSB7CisgICAg
ICAgIGJvb2wgc3RhcnRlZERyYWcgPSBkcmFnQ29udHJvbGxlciAmJiBkcmFnQ29udHJvbGxlci0+
c3RhcnREcmFnKG1fZnJhbWUsIGRyYWdTdGF0ZSgpLCBzcmNPcCwgZXZlbnQuZXZlbnQoKSwgbV9t
b3VzZURvd25Qb3MpOworICAgICAgICBpZiAoIXN0YXJ0ZWREcmFnICYmIGRyYWdTdGF0ZSgpLnNo
b3VsZERpc3BhdGNoRXZlbnRzKCkpIHsKICAgICAgICAgICAgIC8vIERyYWcgd2FzIGNhbm5lZCBh
dCB0aGUgbGFzdCBtaW51dGUgLSB3ZSBvd2UgbV9kcmFnU3JjIGEgRFJBR0VORCBldmVudAogICAg
ICAgICAgICAgZGlzcGF0Y2hEcmFnU3JjRXZlbnQoZXZlbnROYW1lcygpLmRyYWdlbmRFdmVudCwg
ZXZlbnQuZXZlbnQoKSk7CiAgICAgICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggYWE0NDRiMzQ2NjNiNTljMzc4
YTQxN2M3MmVkZGVjOWNlYWJkOTJhMS4uYjQxZmY1Y2E3NWQxMDNhZDY1NTUwMTM0YmEzZGIyOWMw
YjgyNTY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0yNyw2ICsyNyw3IEBA
CiAjZGVmaW5lIEV2ZW50SGFuZGxlcl9oCiAKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgorI2lu
Y2x1ZGUgIkRyYWdTdGF0ZS5oIgogI2luY2x1ZGUgIkZvY3VzRGlyZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKQEAg
LTQ5LDcgKzUwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDbGlwYm9hcmQ7CiBj
bGFzcyBDdXJzb3I7Ci1zdHJ1Y3QgRHJhZ1N0YXRlOwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBFdmVu
dFRhcmdldDsKIGNsYXNzIEZsb2F0UG9pbnQ7CkBAIC0zMjIsNyArMzIyLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRlZmF1bHRBcnJvd0V2ZW50SGFuZGxlcihGb2N1c0RpcmVjdGlvbiwgS2V5Ym9h
cmRFdmVudCopOwogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICB2b2lkIGFsbG93REhU
TUxEcmFnKGJvb2wmIGZsYWdESFRNTCwgYm9vbCYgZmxhZ1VBKSBjb25zdDsKKyAgICB2b2lkIHVw
ZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZChEcmFnU3RhdGU6OkV2ZW50RGlzcGF0Y2hQb2xp
Y3kmKSBjb25zdDsKICNlbmRpZgogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgY2FsbGVkIGF0
IHRoZSBiZWdpbm5pbmcgb2YgaGFuZGxlTW91c2VVcCBhbmQgaGFuZGxlRHJhZy4gIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93181</attachid>
            <date>2011-05-11 14:04:36 -0700</date>
            <delta_ts>2011-05-12 19:15:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59409-20110511140435.patch</filename>
            <type>text/plain</type>
            <size>34965</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYxNjQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiYTQzNTYzOWJmMjE1MWNjYTk4MmJj
YjYzNDZhZmZjNDczMWYxZTkxLi5lZWViZDE0OTVjZmNiZmFiZDlmMWYyN2JjZGM1NDkyYWQxNTAy
ZDAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDUtMTAgIERhbmllbCBDaGVuZyAgPGRj
aGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wcm92ZSBkcmFnIHN0YXJ0IGxvZ2ljCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTQwOQorCisgICAgICAgIFJlYmFzZSB0ZXN0
cyB0byBuZXcgZXhwZWN0ZWQgYmVoYXZpb3IuCisKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9h
cmQvZHJhZy1zZWxlY3RlZC1pbWFnZS10by1jb250ZW50ZWRpdGFibGUuaHRtbDogU2VsZWN0aW9u
cyBhcmUgcHJpb3JpdGl6ZWQKKyAgICAgICAgb3ZlciBpbWFnZXMgZHVyaW5nIHRoZSBkcmFnZ2lu
ZyBwcm9jZXNzIG5vdywgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byBoYXZlIGEgZGVsYXkgYmV0d2Vl
biB0aGUKKyAgICAgICAgbW91c2UgZG93biBhbmQgdGhlIG1vdXNlIG1vdmUuIFRoZSBjaGFuZ2Ug
aW4gZHJhZ2dpbmcgcHJpb3JpdHkgbWF0Y2hlcyBJRSBhbmQgRmlyZWZveAorICAgICAgICBiZWhh
dmlvci4KKyAgICAgICAgKiBmYXN0L2Nzcy91c2VyLWRyYWctbm9uZS5odG1sOiBUZXh0IG5vZGVz
IGFyZSBubyBsb25nZXIgY29uc2lkZXJlZCBkcmFnZ2FibGUuCisKIDIwMTEtMDUtMTAgIEFiaGlz
aGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
ZHJhZy1zZWxlY3RlZC1pbWFnZS10by1jb250ZW50ZWRpdGFibGUuaHRtbCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGVkLWltYWdlLXRvLWNvbnRlbnRlZGl0YWJs
ZS5odG1sCmluZGV4IDIxNDBhMTUwYjJjYjBkMjQ5NTJjNDI1ZDQ2YjBkZjk4NDNiNGQ4N2UuLmMw
ZjNiNzBkNWQwNTEyODFjMjhiODcwODhhZjFhM2U3M2UxYmRiOWEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGVkLWltYWdlLXRvLWNvbnRlbnRl
ZGl0YWJsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNl
bGVjdGVkLWltYWdlLXRvLWNvbnRlbnRlZGl0YWJsZS5odG1sCkBAIC00NCw2ICs0NCw3IEBAIGZ1
bmN0aW9uIHN0ZXAyKCkKICAgICB4ID0gZS5vZmZzZXRMZWZ0ICsgZS5vZmZzZXRXaWR0aCAvIDI7
CiAgICAgeSA9IGUub2Zmc2V0VG9wICsgZS5vZmZzZXRIZWlnaHQgLyAyOwogICAgIAorICAgIGV2
ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDUwMCk7CiAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
eCwgeSk7CiAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwogICAgIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3MvdXNlci1kcmFnLW5vbmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3VzZXItZHJhZy1ub25lLmh0bWwKaW5kZXggYzg4Y2FhZjZlZTU2YzM4NmI4ZTNiNmY0NDVk
NGMxYTc3M2UxYTA4Yy4uZjkzMzUxMzVjNWQ5YzFhNWY5MTdlN2UwYzViZTg0YTU4ZTlhODE0YSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXNlci1kcmFnLW5vbmUuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy91c2VyLWRyYWctbm9uZS5odG1sCkBAIC0xOSwxMSArMTks
MTEgQEAKICAgICAgICAgPGltZyBjbGFzcz0iZHJhZy1ub25lIiBzcmM9InJlc291cmNlcy9ncmVl
bmJveC5wbmciPgogICAgIDwvZGl2PgogCi0gICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9IklN
RyB0ZXh0IHRleHQgQSBuaWwiPgorICAgIDxkaXYgY2xhc3M9ImJveCIgZXhwZWN0PSJJTUcgQSBB
IEEgbmlsIj4KICAgICAgICAgPGEgaHJlZj0iIyI+PGltZyBzcmM9InJlc291cmNlcy9ncmVlbmJv
eC5wbmciPng8YnI+PHNwYW4+eTwvc3Bhbj48L2E+CiAgICAgPC9kaXY+CiAKLSAgICA8ZGl2IGNs
YXNzPSJib3giIGV4cGVjdD0iSU1HIHRleHQgdGV4dCBBIG5pbCI+CisgICAgPGRpdiBjbGFzcz0i
Ym94IiBleHBlY3Q9IklNRyBBIEEgQSBuaWwiPgogICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0i
ZHJhZy1lbGVtZW50Ij48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bh
bj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIApAQCAtMzEsMTEgKzMxLDExIEBACiAgICAgICAg
IDxhIGhyZWY9IiMiIGNsYXNzPSJkcmFnLW5vbmUiPjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW5i
b3gucG5nIj54PGJyPjxzcGFuPnk8L3NwYW4+PC9hPgogICAgIDwvZGl2PgogCi0gICAgPGRpdiBj
bGFzcz0iYm94IiBleHBlY3Q9IkEgdGV4dCB0ZXh0IEEgbmlsIj4KKyAgICA8ZGl2IGNsYXNzPSJi
b3giIGV4cGVjdD0iQSBBIEEgQSBuaWwiPgogICAgICAgICA8YSBocmVmPSIjIj48aW1nIGNsYXNz
PSJkcmFnLW5vbmUiIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9z
cGFuPjwvYT4KICAgICA8L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9ImJveCIgZXhwZWN0PSJBIHRl
eHQgdGV4dCBBIG5pbCI+CisgICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9IkEgQSBBIEEgbmls
Ij4KICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyYWctZWxlbWVudCI+PGltZyBjbGFzcz0i
ZHJhZy1ub25lIiBzcmM9InJlc291cmNlcy9ncmVlbmJveC5wbmciPng8YnI+PHNwYW4+eTwvc3Bh
bj48L2E+CiAgICAgPC9kaXY+CiAKQEAgLTQzLDExICs0MywxMSBAQAogICAgICAgICA8YSBocmVm
PSIjIiBjbGFzcz0iZHJhZy1ub25lIj48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+
eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9ImJv
eCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSB0ZXh0IHRleHQgQSBESVYiPgorICAgIDxkaXYgY2xh
c3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSBBIEEgQSBESVYiPgogICAgICAgICA8YSBo
cmVmPSIjIj48aW1nIGNsYXNzPSJkcmFnLW5vbmUiIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBu
ZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9
ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSB0ZXh0IHRleHQgQSBESVYiPgorICAgIDxkaXYg
Y2xhc3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSBBIEEgQSBESVYiPgogICAgICAgICA8
YSBocmVmPSIjIiBjbGFzcz0iZHJhZy1lbGVtZW50Ij48aW1nIGNsYXNzPSJkcmFnLW5vbmUiIHNy
Yz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8
L2Rpdj4KIDwvZGl2PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE3ZDdlMDI3ZTZmNDA3NTM4ZDA3Y2VjOGNmNDg5
MDllNjY3YTBmNDkuLmNjNWYyNmNlMzM2MTYzNzJmYWY4NDc5YWY2N2ZjZTNkOWRlZDMyMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMS0wNS0xMCAgRGFuaWVsIENoZW5nICA8ZGNo
ZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbXByb3ZlIGRyYWcgc3RhcnQgbG9naWMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NDA5CisKKyAgICAgICAgUmV3cml0ZSBhbmQg
c2ltcGxpZnkgdGhlIGRyYWdnaW5nIGxvZ2ljIHRvIGJldHRlciBtYXRjaCBJRSwgRmlyZWZveCwg
YW5kIHRoZSBiZWhhdmlvcgorICAgICAgICBkZWZpbmVkIGluIHRoZSBzcGVjLiBBbW9uZyBvdGhl
ciB0aGluZ3M6CisgICAgICAgIC0gZHJhZ2dhYmxlTm9kZSgpIG5vIGxvbmdlciByZXR1cm5zIHRl
eHQgbm9kZXMgd2hlbiBkcmFnZ2luZyBhbmNob3JzLgorICAgICAgICAtIFdoZW4gc3RhcnRpbmcg
YSBkcmFnIG92ZXIgYW4gaW1hZ2UgaW4gYSBzZWxlY3Rpb24sIHByZWZlciB0byBkcmFnIHRoZSBz
ZWxlY3Rpb24uCisgICAgICAgIC0gU2V2ZXJhbCByZWR1bmRhbnQgaGl0IHRlc3RzIGhhdmUgYmVl
biByZW1vdmVkLgorICAgICAgICAtIE1pbm9yIHJlZmFjdG9yaW5nIHRvIG1ha2UgdGhlIGxvZ2lj
IGVhc2llciB0byBmb2xsb3cuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ2dhYmxlTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9s
bGVyLmg6CisgICAgICAgICogcGFnZS9EcmFnU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdTdGF0ZTo6c2hvdWxkRGlzcGF0Y2hFdmVudHMpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZXZlbnRNYXlTdGFydERy
YWcpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnU291cmNlQWN0
aW9uc0FsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFn
QW5kRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmRE
cm9wKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ0h5c3RlcmVzaXNFeGNl
ZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAg
ICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKwogMjAxMS0wNS0wNiAgQnJldHQgV2lsc29uICA8YnJl
dHR3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDE0ZTQyMzEzN2NmYzQ2YWI1YzgwNGMzMGM3OWQ5NGFlN2FkOWNiMWQuLjg3YmJmNmUxODgzMWUx
ZTY1NDViY2RjNDU5ZmQ0NmVkOGExYTI3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2NzIsNyArMTY3Miw3IEBACiAJCTgx
QkUyMDk5MTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MUJFMjA5NDExRjRB
QjhEMDA5MTVERkEgLyogSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oICovOyB9OwogCQk4MUJF
MjBEMjExRjRCQzMyMDA5MTVERkEgLyogSlNJREJDdXJzb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFCRTIwQTcxMUY0QjY2RjAwOTE1REZBIC8q
IEpTSURCQ3Vyc29yLmNwcCAqLzsgfTsKIAkJODFCRTIwRDMxMUY0QkMzMjAwOTE1REZBIC8qIEpT
SURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MUJFMjBBODExRjRCNjZGMDA5MTVERkEgLyogSlNJREJDdXJzb3IuaCAqLzsgfTsKLQkJODFG
NjVGRjYxMzc4OEZBQTAwRkY2RjJEIC8qIERyYWdTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFGNjVGRjUxMzc4OEZBQTAwRkY2RjJEIC8qIERy
YWdTdGF0ZS5oICovOyB9OworCQk4MUY2NUZGNjEzNzg4RkFBMDBGRjZGMkQgLyogRHJhZ1N0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MUY2NUZG
NTEzNzg4RkFBMDBGRjZGMkQgLyogRHJhZ1N0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODJBQjE3NDMxMjRCOTlFQzAwQzUwNjlEIC8qIElu
c3BlY3RvckNTU0FnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgyQUIxNzQxMTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0b3JDU1NBZ2VudC5j
cHAgKi87IH07CiAJCTgyQUIxNzQ0MTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0b3JDU1NBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODJBQjE3
NDIxMjRCOTlFQzAwQzUwNjlEIC8qIEluc3BlY3RvckNTU0FnZW50LmggKi87IH07CiAJCTgyQUIx
NzczMTI1QzgyNjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyQUIxNzZGMTI1QzgyNjcwMEM1
MDY5RCAvKiBJbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAKaW5kZXggODFjZTkyZDRmNTBkNjk5MGNiYjNmZGZhMmUwYzVlZDcx
MjRlOGQ2YS4uYWVmOWI5MDY1ZmJhYmNiZmViZjliMjVhNTdiMTE5NzQzNWRjNWQ1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTU2OSw3MyArNTY5LDQ5IEBAIGJv
b2wgRHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEsIERyYWdP
cGVyYXRpb24mIG9wZXJhdGlvbikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotTm9kZSogRHJhZ0Nv
bnRyb2xsZXI6OmRyYWdnYWJsZU5vZGUoY29uc3QgRnJhbWUqIHNyYywgTm9kZSogc3RhcnROb2Rl
LCBib29sIGRodG1sT0ssIGJvb2wgdWFPSywgaW50IHgsIGludCB5LCBib29sJiBkaHRtbFdpbGxE
cmFnKSBjb25zdAorTm9kZSogRHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZU5vZGUoY29uc3QgRnJh
bWUqIHNyYywgTm9kZSogc3RhcnROb2RlLCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgRHJh
Z1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBpZiAoIWRodG1sT0sgJiYgIXVhT0spCi0gICAg
ICAgIHJldHVybiAwOworICAgIGlmIChzcmMtPnNlbGVjdGlvbigpLT5jb250YWlucyhkcmFnT3Jp
Z2luKSkgeworICAgICAgICBzdGF0ZS5tX2RyYWdUeXBlID0gRHJhZ1NvdXJjZUFjdGlvblNlbGVj
dGlvbjsKKyAgICAgICAgcmV0dXJuIHN0YXJ0Tm9kZTsKKyAgICB9CiAKICAgICBmb3IgKGNvbnN0
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdGFydE5vZGUtPnJlbmRlcmVyKCk7IHJlbmRlcmVy
OyByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKSkgewogICAgICAgICBOb2RlKiBub2RlID0g
cmVuZGVyZXItPm5vZGUoKTsKLSAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS0+bm9kZVR5cGUoKSA9
PSBOb2RlOjpURVhUX05PREUpIHsKLSAgICAgICAgICAgIC8vIFNpbmNlIHRoZXJlJ3Mgbm8gd2F5
IGZvciB0aGUgYXV0aG9yIHRvIGFkZHJlc3MgdGhlIC13ZWJraXQtdXNlci1kcmFnIHN0eWxlIGZv
ciBhIHRleHQgbm9kZSwKLSAgICAgICAgICAgIC8vIHdlIHVzZSBvdXIgb3duIGp1ZGdlbWVudC4K
LSAgICAgICAgICAgIGlmICh1YU9LICYmIG1heVN0YXJ0RHJhZ0F0RXZlbnRMb2NhdGlvbihzcmMs
IEludFBvaW50KHgsIHkpLCBub2RlKSkgewotICAgICAgICAgICAgICAgIGRodG1sV2lsbERyYWcg
PSBmYWxzZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbm9kZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGlmIChub2RlLT5jYW5TdGFydFNlbGVjdGlvbigpKQotICAgICAgICAgICAgICAg
IC8vIEluIHRoaXMgY2FzZSB3ZSBoYXZlIGEgY2xpY2sgaW4gdGhlIHVuc2VsZWN0ZWQgcG9ydGlv
biBvZiB0ZXh0LiBJZiB0aGlzIHRleHQgaXMKLSAgICAgICAgICAgICAgICAvLyBzZWxlY3RhYmxl
LCB3ZSB3YW50IHRvIHN0YXJ0IHRoZSBzZWxlY3Rpb24gcHJvY2VzcyBpbnN0ZWFkIG9mIGxvb2tp
bmcgZm9yIGEgcGFyZW50Ci0gICAgICAgICAgICAgICAgLy8gdG8gdHJ5IHRvIGRyYWcuCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghbm9k
ZSkKKyAgICAgICAgICAgIC8vIEFub255bW91cyByZW5kZXIgYmxvY2tzIGRvbid0IGNvcnJlc3Bv
bmQgdG8gYWN0dWFsIERPTSBub2Rlcywgc28gd2Ugc2tpcCBvdmVyIHRoZW0KKyAgICAgICAgICAg
IC8vIGZvciB0aGUgcHVycG9zZXMgb2YgZmluZGluZyBhIGRyYWdnYWJsZSBub2RlLgorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIGlmIChub2RlLT5pc1RleHROb2RlKCkgJiYgbm9kZS0+
Y2FuU3RhcnRTZWxlY3Rpb24oKSkKKyAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBoYXZl
IGEgY2xpY2sgaW4gdGhlIHVuc2VsZWN0ZWQgcG9ydGlvbiBvZiB0ZXh0LiBJZiB0aGlzIHRleHQg
aXMKKyAgICAgICAgICAgIC8vIHNlbGVjdGFibGUsIHdlIHdhbnQgdG8gc3RhcnQgdGhlIHNlbGVj
dGlvbiBwcm9jZXNzIGluc3RlYWQgb2YgbG9va2luZyBmb3IgYSBwYXJlbnQKKyAgICAgICAgICAg
IC8vIHRvIHRyeSB0byBkcmFnLgorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChu
b2RlLT5pc0VsZW1lbnROb2RlKCkpIHsKICAgICAgICAgICAgIEVVc2VyRHJhZyBkcmFnTW9kZSA9
IHJlbmRlcmVyLT5zdHlsZSgpLT51c2VyRHJhZygpOwotICAgICAgICAgICAgaWYgKGRodG1sT0sg
JiYgZHJhZ01vZGUgPT0gRFJBR19FTEVNRU5UKSB7Ci0gICAgICAgICAgICAgICAgZGh0bWxXaWxs
RHJhZyA9IHRydWU7CisgICAgICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdT
b3VyY2VBY3Rpb25ESFRNTCkgJiYgZHJhZ01vZGUgPT0gRFJBR19FTEVNRU5UKSB7CisgICAgICAg
ICAgICAgICAgc3RhdGUubV9kcmFnVHlwZSA9IERyYWdTb3VyY2VBY3Rpb25ESFRNTDsKICAgICAg
ICAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh1
YU9LICYmIGRyYWdNb2RlID09IERSQUdfQVVUTyAmJiBtYXlTdGFydERyYWdBdEV2ZW50TG9jYXRp
b24oc3JjLCBJbnRQb2ludCh4LCB5KSwgbm9kZSkpIHsKLSAgICAgICAgICAgICAgICBkaHRtbFdp
bGxEcmFnID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgICAgICAg
ICBpZiAoZHJhZ01vZGUgPT0gRFJBR19BVVRPKSB7CisgICAgICAgICAgICAgICAgaWYgKChtX2Ry
YWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpCisgICAgICAgICAgICAgICAg
ICAgICYmIG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbWdUYWcpCisgICAgICAgICAgICAg
ICAgICAgICYmIHNyYy0+c2V0dGluZ3MoKS0+bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgc3RhdGUubV9kcmFnVHlwZSA9IERyYWdTb3VyY2VBY3Rpb25J
bWFnZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmICgobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFj
dGlvbkxpbmspCisgICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5h
bWVzOjphVGFnKQorICAgICAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxIVE1MQW5jaG9y
RWxlbWVudCo+KG5vZGUpLT5pc0xpdmVMaW5rKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3Rh
dGUubV9kcmFnVHlwZSA9IERyYWdTb3VyY2VBY3Rpb25MaW5rOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbm9kZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgRHJhZ0NvbnRyb2xsZXI6Om1heVN0
YXJ0RHJhZ0F0RXZlbnRMb2NhdGlvbihjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IEludFBvaW50
JiBmcmFtZVBvcywgTm9kZSogbm9kZSkgY29uc3QKLXsKLSAgICBBU1NFUlQoZnJhbWUpOwotICAg
IEFTU0VSVChmcmFtZS0+c2V0dGluZ3MoKSk7Ci0KLSAgICBpZiAoIWZyYW1lLT52aWV3KCkgfHwg
IWZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
SGl0VGVzdFJlc3VsdCBtb3VzZURvd25UYXJnZXQgPSBIaXRUZXN0UmVzdWx0KGZyYW1lUG9zKTsK
LQotICAgIG1vdXNlRG93blRhcmdldCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJl
c3VsdEF0UG9pbnQoZnJhbWVQb3MsIHRydWUpOwotICAgIGlmIChub2RlKQotICAgICAgICBtb3Vz
ZURvd25UYXJnZXQuc2V0SW5uZXJOb25TaGFyZWROb2RlKG5vZGUpOwotCi0gICAgaWYgKG1vdXNl
RG93blRhcmdldC5pbWFnZSgpCi0gICAgICAgICYmICFtb3VzZURvd25UYXJnZXQuYWJzb2x1dGVJ
bWFnZVVSTCgpLmlzRW1wdHkoKQotICAgICAgICAmJiBmcmFtZS0+c2V0dGluZ3MoKS0+bG9hZHNJ
bWFnZXNBdXRvbWF0aWNhbGx5KCkKLSAgICAgICAgJiYgbV9kcmFnU291cmNlQWN0aW9uICYgRHJh
Z1NvdXJjZUFjdGlvbkltYWdlKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmICghbW91
c2VEb3duVGFyZ2V0LmFic29sdXRlTGlua1VSTCgpLmlzRW1wdHkoKQotICAgICAgICAmJiBtX2Ry
YWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uTGluawotICAgICAgICAmJiBtb3VzZURv
d25UYXJnZXQuaXNMaXZlTGluaygpCi0gICAgICAgICYmIG1vdXNlRG93blRhcmdldC5VUkxFbGVt
ZW50KCktPnJlbmRlcmVyKCkgJiYgbW91c2VEb3duVGFyZ2V0LlVSTEVsZW1lbnQoKS0+cmVuZGVy
ZXIoKS0+c3R5bGUoKS0+dXNlckRyYWcoKSAhPSBEUkFHX05PTkUpCi0gICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgaWYgKG1vdXNlRG93blRhcmdldC5pc1NlbGVjdGVkKCkKLSAgICAgICAgJiYg
bV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHN0YXRpYyBDYWNoZWRJbWFn
ZSogZ2V0Q2FjaGVkSW1hZ2UoRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBBU1NFUlQoZWxlbWVu
dCk7CkBAIC02OTUsMTkgKzY3MSwxNyBAQCBzdGF0aWMgSW50UG9pbnQgZHJhZ0xvY0ZvclNlbGVj
dGlvbkRyYWcoRnJhbWUqIHNyYykKICAgICByZXR1cm4gSW50UG9pbnQoeHBvcywgeXBvcyk7CiB9
CiAKLWJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlwYm9hcmQq
IGNsaXBib2FyZCwgRHJhZ09wZXJhdGlvbiBzcmNPcCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBib29sIGlzREhUTUxEcmFn
KQorYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lKiBzcmMsIGNvbnN0IERyYWdT
dGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24gc3JjT3AsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbikKIHsKICAgICBBU1NFUlQo
c3JjKTsKLSAgICBBU1NFUlQoY2xpcGJvYXJkKTsKIAogICAgIGlmICghc3JjLT52aWV3KCkgfHwg
IXNyYy0+Y29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEhp
dFRlc3RSZXN1bHQgZHJhZ1NvdXJjZSA9IEhpdFRlc3RSZXN1bHQoZHJhZ09yaWdpbik7Ci0gICAg
ZHJhZ1NvdXJjZSA9IHNyYy0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGRy
YWdPcmlnaW4sIHRydWUpOwotICAgIEtVUkwgbGlua1VSTCA9IGRyYWdTb3VyY2UuYWJzb2x1dGVM
aW5rVVJMKCk7Ci0gICAgS1VSTCBpbWFnZVVSTCA9IGRyYWdTb3VyY2UuYWJzb2x1dGVJbWFnZVVS
TCgpOwotICAgIGJvb2wgaXNTZWxlY3RlZCA9IGRyYWdTb3VyY2UuaXNTZWxlY3RlZCgpOworICAg
IEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IHNyYy0+ZXZlbnRIYW5kbGVyKCktPmhpdFRl
c3RSZXN1bHRBdFBvaW50KGRyYWdPcmlnaW4sIHRydWUpOworICAgIC8vIEZJWE1FOiBTYW5pdHkg
Y2hlY2sgaGVyZSB0aGF0IHdlJ3JlIHN0aWxsIGRyYWdnaW5nIHRoZSBzYW1lIG5vZGUuCisgICAg
S1VSTCBsaW5rVVJMID0gaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKKyAgICBLVVJM
IGltYWdlVVJMID0gaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMKCk7CiAKICAgICBJbnRQ
b2ludCBtb3VzZURyYWdnZWRQb2ludCA9IHNyYy0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGRy
YWdFdmVudC5wb3MoKSk7CiAKQEAgLTcxOCwxNCArNjkyLDE0IEBAIGJvb2wgRHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRHJhZ09wZXJh
dGlvbiBzCiAgICAgSW50UG9pbnQgZHJhZ0xvYygwLCAwKTsKICAgICBJbnRQb2ludCBkcmFnSW1h
Z2VPZmZzZXQoMCwgMCk7CiAKLSAgICBpZiAoaXNESFRNTERyYWcpCisgICAgQ2xpcGJvYXJkKiBj
bGlwYm9hcmQgPSBzdGF0ZS5tX2RyYWdDbGlwYm9hcmQuZ2V0KCk7CisgICAgaWYgKHN0YXRlLm1f
ZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKQogICAgICAgICBkcmFnSW1hZ2UgPSBj
bGlwYm9hcmQtPmNyZWF0ZURyYWdJbWFnZShkcmFnSW1hZ2VPZmZzZXQpOwotICAgIGVsc2Ugewot
ICAgICAgICAvLyBUaGlzIGRyYWcgb3BlcmF0aW9uIGlzIG5vdCBhIERIVE1MIGRyYWcgYW5kIG1h
eSBnbyBvdXRzaWRlIHRoZSBXZWJWaWV3LgotICAgICAgICAvLyBXZSBwcm92aWRlIGEgZGVmYXVs
dCBzZXQgb2YgYWxsb3dlZCBkcmFnIG9wZXJhdGlvbnMgdGhhdCBmb2xsb3dzIGZyb206CisgICAg
aWYgKHN0YXRlLm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbiB8fCAhaW1h
Z2VVUkwuaXNFbXB0eSgpIHx8ICFsaW5rVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgLy8gU2VsZWN0
aW9uLCBpbWFnZSwgYW5kIGxpbmsgZHJhZ3MgcmVjZWl2ZSBhIGRlZmF1bHQgc2V0IG9mIGFsbG93
ZWQgZHJhZyBvcGVyYXRpb25zIHRoYXQKKyAgICAgICAgLy8gZm9sbG93cyBmcm9tOgogICAgICAg
ICAvLyBodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tP3Jldj00ODUyNiNMMzQzMAotICAgICAgICBtX3NvdXJjZURyYWdP
cGVyYXRpb24gPSAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3Bl
cmF0aW9uQ29weSk7Ci0gICAgfQorICAgICAgICBtX3NvdXJjZURyYWdPcGVyYXRpb24gPSBzdGF0
aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihtX3NvdXJjZURyYWdPcGVyYXRpb24gfCBEcmFnT3BlcmF0
aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Db3B5KTsKIAogICAgIC8vIFdlIGFsbG93IERIVE1M
L0pTIHRvIHNldCB0aGUgZHJhZyBpbWFnZSwgZXZlbiBpZiBpdHMgYSBsaW5rLCBpbWFnZSBvciB0
ZXh0IHdlJ3JlIGRyYWdnaW5nLgogICAgIC8vIFRoaXMgaXMgaW4gdGhlIHNwaXJpdCBvZiB0aGUg
SUUgQVBJLCB3aGljaCBhbGxvd3Mgb3ZlcnJpZGluZyBvZiBwYXN0ZWJvYXJkIGRhdGEgYW5kIERy
YWdPcC4KQEAgLTczNiwyNiArNzEwLDQ0IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJh
ZyhGcmFtZSogc3JjLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRHJhZ09wZXJhdGlvbiBzCiAKICAg
ICBib29sIHN0YXJ0ZWREcmFnID0gdHJ1ZTsgLy8gb3B0aW1pc20gLSB3ZSBhbG1vc3QgYWx3YXlz
IG1hbmFnZSB0byBzdGFydCB0aGUgZHJhZwogCi0gICAgTm9kZSogbm9kZSA9IGRyYWdTb3VyY2Uu
aW5uZXJOb25TaGFyZWROb2RlKCk7CisgICAgTm9kZSogbm9kZSA9IHN0YXRlLm1fZHJhZ1NyYy5n
ZXQoKTsKIAogICAgIEltYWdlKiBpbWFnZSA9IGdldEltYWdlKHN0YXRpY19jYXN0PEVsZW1lbnQq
Pihub2RlKSk7Ci0gICAgaWYgKCFpbWFnZVVSTC5pc0VtcHR5KCkgJiYgbm9kZSAmJiBub2RlLT5p
c0VsZW1lbnROb2RlKCkgJiYgaW1hZ2UKLSAgICAgICAgICAgICYmIChtX2RyYWdTb3VyY2VBY3Rp
b24gJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpKSB7CisgICAgaWYgKHN0YXRlLm1fZHJhZ1R5cGUg
PT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgeworICAgICAgICBpZiAoIWNsaXBib2FyZC0+
aGFzRGF0YSgpKSB7CisgICAgICAgICAgICBpZiAoaXNOb2RlSW5UZXh0Rm9ybUNvbnRyb2woc3Jj
LT5zZWxlY3Rpb24oKS0+c3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpKSkKKyAgICAgICAgICAgICAg
ICBjbGlwYm9hcmQtPndyaXRlUGxhaW5UZXh0KHNyYy0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgp
KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc2Vs
ZWN0aW9uUmFuZ2UgPSBzcmMtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpOworICAg
ICAgICAgICAgICAgIEFTU0VSVChzZWxlY3Rpb25SYW5nZSk7CisKKyAgICAgICAgICAgICAgICBj
bGlwYm9hcmQtPndyaXRlUmFuZ2Uoc2VsZWN0aW9uUmFuZ2UuZ2V0KCksIHNyYyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbV9jbGllbnQtPndpbGxQZXJmb3JtRHJhZ1NvdXJj
ZUFjdGlvbihEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQp
OworICAgICAgICBpZiAoIWRyYWdJbWFnZSkgeworICAgICAgICAgICAgZHJhZ0ltYWdlID0gY3Jl
YXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKHNyYyk7CisgICAgICAgICAgICBkcmFnTG9jID0gZHJh
Z0xvY0ZvclNlbGVjdGlvbkRyYWcoc3JjKTsKKyAgICAgICAgICAgIG1fZHJhZ09mZnNldCA9IElu
dFBvaW50KGRyYWdPcmlnaW4ueCgpIC0gZHJhZ0xvYy54KCksIGRyYWdPcmlnaW4ueSgpIC0gZHJh
Z0xvYy55KCkpOworICAgICAgICB9CisgICAgICAgIGRvU3lzdGVtRHJhZyhkcmFnSW1hZ2UsIGRy
YWdMb2MsIGRyYWdPcmlnaW4sIGNsaXBib2FyZCwgc3JjLCBmYWxzZSk7CisgICAgfSBlbHNlIGlm
ICghaW1hZ2VVUkwuaXNFbXB0eSgpICYmIG5vZGUgJiYgbm9kZS0+aXNFbGVtZW50Tm9kZSgpICYm
IGltYWdlCisgICAgICAgICAgICAgICAmJiAobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJj
ZUFjdGlvbkltYWdlKSkgewogICAgICAgICAvLyBXZSBzaG91bGRuJ3QgYmUgc3RhcnRpbmcgYSBk
cmFnIGZvciBhbiBpbWFnZSB0aGF0IGNhbid0IHByb3ZpZGUgYW4gZXh0ZW5zaW9uLgogICAgICAg
ICAvLyBUaGlzIGlzIGFuIGVhcmx5IGRldGVjdGlvbiBmb3IgcHJvYmxlbXMgZW5jb3VudGVyZWQg
bGF0ZXIgdXBvbiBkcm9wLgogICAgICAgICBBU1NFUlQoIWltYWdlLT5maWxlbmFtZUV4dGVuc2lv
bigpLmlzRW1wdHkoKSk7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxF
bGVtZW50Kj4obm9kZSk7CiAgICAgICAgIGlmICghY2xpcGJvYXJkLT5oYXNEYXRhKCkpIHsKICAg
ICAgICAgICAgIG1fZHJhZ2dpbmdJbWFnZVVSTCA9IGltYWdlVVJMOwotICAgICAgICAgICAgcHJl
cGFyZUNsaXBib2FyZEZvckltYWdlRHJhZyhzcmMsIGNsaXBib2FyZCwgZWxlbWVudCwgbGlua1VS
TCwgaW1hZ2VVUkwsIGRyYWdTb3VyY2UuYWx0RGlzcGxheVN0cmluZygpKTsKKyAgICAgICAgICAg
IHByZXBhcmVDbGlwYm9hcmRGb3JJbWFnZURyYWcoc3JjLCBjbGlwYm9hcmQsIGVsZW1lbnQsIGxp
bmtVUkwsIGltYWdlVVJMLCBoaXRUZXN0UmVzdWx0LmFsdERpc3BsYXlTdHJpbmcoKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERy
YWdTb3VyY2VBY3Rpb25JbWFnZSwgZHJhZ09yaWdpbiwgY2xpcGJvYXJkKTsKIAogICAgICAgICBp
ZiAoIWRyYWdJbWFnZSkgewotICAgICAgICAgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBkcmFnU291
cmNlLmltYWdlUmVjdCgpOworICAgICAgICAgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBoaXRUZXN0
UmVzdWx0LmltYWdlUmVjdCgpOwogICAgICAgICAgICAgaW1hZ2VSZWN0LnNldExvY2F0aW9uKG1f
cGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhzcmMtPnZpZXcoKS0+
Y29udGVudHNUb1dpbmRvdyhpbWFnZVJlY3QubG9jYXRpb24oKSkpKTsKLSAgICAgICAgICAgIGRv
SW1hZ2VEcmFnKGVsZW1lbnQsIGRyYWdPcmlnaW4sIGRyYWdTb3VyY2UuaW1hZ2VSZWN0KCksIGNs
aXBib2FyZCwgc3JjLCBtX2RyYWdPZmZzZXQpOworICAgICAgICAgICAgZG9JbWFnZURyYWcoZWxl
bWVudCwgZHJhZ09yaWdpbiwgaGl0VGVzdFJlc3VsdC5pbWFnZVJlY3QoKSwgY2xpcGJvYXJkLCBz
cmMsIG1fZHJhZ09mZnNldCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgLy8gREhUTUwg
ZGVmaW5lZCBkcmFnIGltYWdlCiAgICAgICAgICAgICBkb1N5c3RlbURyYWcoZHJhZ0ltYWdlLCBk
cmFnTG9jLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQsIHNyYywgZmFsc2UpOwpAQCAtNzY0LDcgKzc1
Niw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlwYm9h
cmQqIGNsaXBib2FyZCwgRHJhZ09wZXJhdGlvbiBzCiAgICAgICAgIGlmICghY2xpcGJvYXJkLT5o
YXNEYXRhKCkpCiAgICAgICAgICAgICAvLyBTaW1wbGlmeSB3aGl0ZXNwYWNlIHNvIHRoZSB0aXRs
ZSBwdXQgb24gdGhlIGNsaXBib2FyZCByZXNlbWJsZXMgd2hhdCB0aGUgdXNlciBzZWVzCiAgICAg
ICAgICAgICAvLyBvbiB0aGUgd2ViIHBhZ2UuIFRoaXMgaW5jbHVkZXMgcmVwbGFjaW5nIG5ld2xp
bmVzIHdpdGggc3BhY2VzLgotICAgICAgICAgICAgY2xpcGJvYXJkLT53cml0ZVVSTChsaW5rVVJM
LCBkcmFnU291cmNlLnRleHRDb250ZW50KCkuc2ltcGxpZnlXaGl0ZVNwYWNlKCksIHNyYyk7Cisg
ICAgICAgICAgICBjbGlwYm9hcmQtPndyaXRlVVJMKGxpbmtVUkwsIGhpdFRlc3RSZXN1bHQudGV4
dENvbnRlbnQoKS5zaW1wbGlmeVdoaXRlU3BhY2UoKSwgc3JjKTsKIAogICAgICAgICBpZiAoc3Jj
LT5zZWxlY3Rpb24oKS0+aXNDYXJldCgpICYmIHNyYy0+c2VsZWN0aW9uKCktPmlzQ29udGVudEVk
aXRhYmxlKCkpIHsKICAgICAgICAgICAgIC8vIGEgdXNlciBjYW4gaW5pdGlhdGUgYSBkcmFnIG9u
IGEgbGluayB3aXRob3V0IGhhdmluZyBhbnkgdGV4dApAQCAtNzc4LDM3ICs3NzAsMTkgQEAgYm9v
bCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lKiBzcmMsIENsaXBib2FyZCogY2xpcGJv
YXJkLCBEcmFnT3BlcmF0aW9uIHMKIAogICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFn
U291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25MaW5rLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQp
OwogICAgICAgICBpZiAoIWRyYWdJbWFnZSkgewotICAgICAgICAgICAgZHJhZ0ltYWdlID0gY3Jl
YXRlRHJhZ0ltYWdlRm9yTGluayhsaW5rVVJMLCBkcmFnU291cmNlLnRleHRDb250ZW50KCksIHNy
Yyk7CisgICAgICAgICAgICBkcmFnSW1hZ2UgPSBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKGxpbmtV
UkwsIGhpdFRlc3RSZXN1bHQudGV4dENvbnRlbnQoKSwgc3JjKTsKICAgICAgICAgICAgIEludFNp
emUgc2l6ZSA9IGRyYWdJbWFnZVNpemUoZHJhZ0ltYWdlKTsKICAgICAgICAgICAgIG1fZHJhZ09m
ZnNldCA9IEludFBvaW50KC1zaXplLndpZHRoKCkgLyAyLCAtTGlua0RyYWdCb3JkZXJJbnNldCk7
CiAgICAgICAgICAgICBkcmFnTG9jID0gSW50UG9pbnQobW91c2VEcmFnZ2VkUG9pbnQueCgpICsg
bV9kcmFnT2Zmc2V0LngoKSwgbW91c2VEcmFnZ2VkUG9pbnQueSgpICsgbV9kcmFnT2Zmc2V0Lnko
KSk7CiAgICAgICAgIH0KICAgICAgICAgZG9TeXN0ZW1EcmFnKGRyYWdJbWFnZSwgZHJhZ0xvYywg
bW91c2VEcmFnZ2VkUG9pbnQsIGNsaXBib2FyZCwgc3JjLCB0cnVlKTsKLSAgICB9IGVsc2UgaWYg
KGlzU2VsZWN0ZWQgJiYgKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25TZWxl
Y3Rpb24pKSB7Ci0gICAgICAgIGlmICghY2xpcGJvYXJkLT5oYXNEYXRhKCkpIHsKLSAgICAgICAg
ICAgIGlmIChpc05vZGVJblRleHRGb3JtQ29udHJvbChzcmMtPnNlbGVjdGlvbigpLT5zdGFydCgp
LmRlcHJlY2F0ZWROb2RlKCkpKQotICAgICAgICAgICAgICAgIGNsaXBib2FyZC0+d3JpdGVQbGFp
blRleHQoc3JjLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpOwotICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb25SYW5nZSA9IHNyYy0+c2Vs
ZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHNl
bGVjdGlvblJhbmdlKTsKLQotICAgICAgICAgICAgICAgIGNsaXBib2FyZC0+d3JpdGVSYW5nZShz
ZWxlY3Rpb25SYW5nZS5nZXQoKSwgc3JjKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rp
b25TZWxlY3Rpb24sIGRyYWdPcmlnaW4sIGNsaXBib2FyZCk7Ci0gICAgICAgIGlmICghZHJhZ0lt
YWdlKSB7Ci0gICAgICAgICAgICBkcmFnSW1hZ2UgPSBjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rp
b24oc3JjKTsKLSAgICAgICAgICAgIGRyYWdMb2MgPSBkcmFnTG9jRm9yU2VsZWN0aW9uRHJhZyhz
cmMpOwotICAgICAgICAgICAgbV9kcmFnT2Zmc2V0ID0gSW50UG9pbnQoKGludCkoZHJhZ09yaWdp
bi54KCkgLSBkcmFnTG9jLngoKSksIChpbnQpKGRyYWdPcmlnaW4ueSgpIC0gZHJhZ0xvYy55KCkp
KTsKLSAgICAgICAgfQotICAgICAgICBkb1N5c3RlbURyYWcoZHJhZ0ltYWdlLCBkcmFnTG9jLCBk
cmFnT3JpZ2luLCBjbGlwYm9hcmQsIHNyYywgZmFsc2UpOwotICAgIH0gZWxzZSBpZiAoaXNESFRN
TERyYWcpIHsKKyAgICB9IGVsc2UgaWYgKHN0YXRlLm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFj
dGlvbkRIVE1MKSB7CiAgICAgICAgIEFTU0VSVChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291
cmNlQWN0aW9uREhUTUwpOwogICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFnU291cmNl
QWN0aW9uKERyYWdTb3VyY2VBY3Rpb25ESFRNTCwgZHJhZ09yaWdpbiwgY2xpcGJvYXJkKTsKICAg
ICAgICAgZG9TeXN0ZW1EcmFnKGRyYWdJbWFnZSwgZHJhZ0xvYywgZHJhZ09yaWdpbiwgY2xpcGJv
YXJkLCBzcmMsIGZhbHNlKTsKICAgICB9IGVsc2UgewotICAgICAgICAvLyBPbmx5IHdheSBJIGtu
b3cgdG8gZ2V0IGhlcmUgaXMgaWYgdG8gZ2V0IGhlcmUgaXMgaWYgdGhlIG9yaWdpbmFsIGVsZW1l
bnQgY2xpY2tlZCBvbiBpbiB0aGUgbW91c2Vkb3duIGlzIG5vIGxvbmdlcgotICAgICAgICAvLyB1
bmRlciB0aGUgbW91c2Vkb3duIHBvaW50LCBzbyBsaW5rVVJMLCBpbWFnZVVSTCBhbmQgaXNTZWxl
Y3RlZCBhcmUgYWxsIGZhbHNlL2VtcHR5LgorICAgICAgICAvLyBkcmFnZ2FibGVOb2RlKCkgZGV0
ZXJtaW5lZCBhbiBpbWFnZSBvciBsaW5rIG5vZGUgd2FzIGRyYWdnYWJsZSwgYnV0IGl0IHR1cm5z
IG91dCB0aGUKKyAgICAgICAgLy8gaW1hZ2Ugb3IgbGluayBoYWQgbm8gVVJMLCBzbyB0aGVyZSBp
cyBub3RoaW5nIHRvIGRyYWcuCiAgICAgICAgIHN0YXJ0ZWREcmFnID0gZmFsc2U7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKaW5kZXggYmU4YzgzNGFlZTYxNTY5YmRl
MjFjOGI5MGZhZTljMDRmYTM1YTBiYS4uMjYxYThkNTNmNzM2NThiMDcxZjIxMDU2YWU1OGIyNGIx
YmI0NTk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaApAQCAtMzcsNiArMzcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRG9jdW1lbnQ7CiAgICAgY2xhc3Mg
RHJhZ0NsaWVudDsKICAgICBjbGFzcyBEcmFnRGF0YTsKKyAgICBzdHJ1Y3QgRHJhZ1N0YXRlOwog
ICAgIGNsYXNzIEVsZW1lbnQ7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgRnJhbWVTZWxl
Y3Rpb247CkBAIC03NSwxMyArNzYsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBE
cmFnRGVzdGluYXRpb25BY3Rpb24gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9kcmFnRGVzdGluYXRpb25BY3Rpb247IH0KICAgICAgICAgRHJhZ1NvdXJjZUFjdGlvbiBk
ZWxlZ2F0ZURyYWdTb3VyY2VBY3Rpb24oY29uc3QgSW50UG9pbnQmIHBhZ2VQb2ludCk7CiAgICAg
ICAgIAotICAgICAgICBOb2RlKiBkcmFnZ2FibGVOb2RlKGNvbnN0IEZyYW1lKiwgTm9kZSosIGJv
b2wgZGh0bWxPSywgYm9vbCB1YU9LLCBpbnQgeCwgaW50IHksIGJvb2wmIGRodG1sV2lsbERyYWcp
IGNvbnN0OwotICAgICAgICBib29sIG1heVN0YXJ0RHJhZ0F0RXZlbnRMb2NhdGlvbihjb25zdCBG
cmFtZSosIGNvbnN0IEludFBvaW50JiBmcmFtZVBvcywgTm9kZSopIGNvbnN0OworICAgICAgICBO
b2RlKiBkcmFnZ2FibGVOb2RlKGNvbnN0IEZyYW1lKiwgTm9kZSosIGNvbnN0IEludFBvaW50Jiwg
RHJhZ1N0YXRlJikgY29uc3Q7CiAgICAgICAgIHZvaWQgZHJhZ0VuZGVkKCk7CiAgICAgICAgIAog
ICAgICAgICB2b2lkIHBsYWNlRHJhZ0NhcmV0KGNvbnN0IEludFBvaW50Jik7CiAgICAgICAgIAot
ICAgICAgICBib29sIHN0YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlwYm9hcmQqLCBEcmFnT3BlcmF0
aW9uIHNyY09wLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50
UG9pbnQmIGRyYWdPcmlnaW4sIGJvb2wgaXNESFRNTERyYWcpOworICAgICAgICBib29sIHN0YXJ0
RHJhZyhGcmFtZSogc3JjLCBjb25zdCBEcmFnU3RhdGUmLCBEcmFnT3BlcmF0aW9uIHNyY09wLCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdP
cmlnaW4pOwogICAgICAgICBzdGF0aWMgY29uc3QgSW50U2l6ZSYgbWF4RHJhZ0ltYWdlU2l6ZSgp
OwogICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBMaW5rRHJhZ0JvcmRlckluc2V0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ1N0YXRlLmgKaW5kZXggNmIxZjY3NTZlM2QyMWU3N2ZiMTliMGI5ODdi
MjQwMzFkNzBlZDBmYS4uNWFiZDJhMDFjZmYxOTYzM2I3ZWVjYmYzNWIxZjdjYTJkNjhhMjg0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5oCkBAIC0yNiwyMyArMjYsMjkgQEAKICNpZm5kZWYgRHJh
Z1N0YXRlX2gKICNkZWZpbmUgRHJhZ1N0YXRlX2gKIAorI2luY2x1ZGUgIkRyYWdBY3Rpb25zLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
Q2xpcGJvYXJkOworY2xhc3MgTm9kZTsKKwogc3RydWN0IERyYWdTdGF0ZSB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoRHJhZ1N0YXRlKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKKyAgICBlbnVtIEV2ZW50RGlzcGF0Y2hQb2xpY3kgeworICAgICAgICBET19OT1Rf
RElTUEFUQ0hfRVZFTlRTLAorICAgICAgICBESVNQQVRDSF9FVkVOVFMsCisgICAgfTsKICAgICBE
cmFnU3RhdGUoKSB7IH0KKyAgICBib29sIHNob3VsZERpc3BhdGNoRXZlbnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9ldmVudERpc3BhdGNoUG9saWN5ID09IERJU1BBVENIX0VWRU5UUzsgfQogICAgIFJl
ZlB0cjxOb2RlPiBtX2RyYWdTcmM7IC8vIGVsZW1lbnQgdGhhdCBtYXkgYmUgYSBkcmFnIHNvdXJj
ZSwgZm9yIHRoZSBjdXJyZW50IG1vdXNlIGdlc3R1cmUKLSAgICBib29sIG1fZHJhZ1NyY0lzTGlu
azsKLSAgICBib29sIG1fZHJhZ1NyY0lzSW1hZ2U7Ci0gICAgYm9vbCBtX2RyYWdTcmNJblNlbGVj
dGlvbjsKLSAgICBib29sIG1fZHJhZ1NyY01heUJlREhUTUw7Ci0gICAgYm9vbCBtX2RyYWdTcmNN
YXlCZVVBOyAvLyBBcmUgREhUTUwgYW5kL29yIHRoZSBVc2VyQWdlbnQgYWxsb3dlZCB0byBkcmFn
IG91dD8KLSAgICBib29sIG1fZHJhZ1NyY0lzREhUTUw7CisgICAgRXZlbnREaXNwYXRjaFBvbGlj
eSBtX2V2ZW50RGlzcGF0Y2hQb2xpY3k7CisgICAgRHJhZ1NvdXJjZUFjdGlvbiBtX2RyYWdUeXBl
OwogICAgIFJlZlB0cjxDbGlwYm9hcmQ+IG1fZHJhZ0NsaXBib2FyZDsgLy8gdXNlZCBvbiBvbmx5
IHRoZSBzb3VyY2Ugc2lkZSBvZiBkcmFnZ2luZwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IGQyMTU5NWFiYzVhNWIxMjA1NWQxOTJiMjM3YzJlYjQyYzBjYWU1MjMu
Ljc3ZTllYTgwODMzODZjOGE3NGU5MTU0OTEyMDU5MmVhMTIwOGI3MjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTc4LDYgKzc4LDcgQEAKICNpbmNsdWRlICJVc2VyVHlw
aW5nR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKICNpbmNsdWRl
ICJXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogCkBAIC01ODcsMTIgKzU4OCw2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpldmVudE1heVN0YXJ0
RHJhZyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KSBjb25zdAogICAgIGlmIChldmVu
dC5idXR0b24oKSAhPSBMZWZ0QnV0dG9uIHx8IGV2ZW50LmNsaWNrQ291bnQoKSAhPSAxKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgYm9vbCBESFRNTEZsYWc7Ci0gICAgYm9vbCBV
QUZsYWc7Ci0gICAgYWxsb3dESFRNTERyYWcoREhUTUxGbGFnLCBVQUZsYWcpOwotICAgIGlmICgh
REhUTUxGbGFnICYmICFVQUZsYWcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIEZyYW1l
VmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTYwMSwxMSArNTk2LDEyIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpldmVu
dE1heVN0YXJ0RHJhZyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KSBjb25zdAogICAg
IGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgRHJhZ1N0YXRlIHN0YXRl
OworICAgIHVwZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZChzdGF0ZS5tX2V2ZW50RGlzcGF0
Y2hQb2xpY3kpOwogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJl
YWRPbmx5KTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5kb3dUb0NvbnRlbnRz
KGV2ZW50LnBvcygpKSk7CiAgICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmxheWVyKCkt
PmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKLSAgICBib29sIHNyY0lzREhUTUw7Ci0gICAgcmV0
dXJuIHJlc3VsdC5pbm5lck5vZGUoKSAmJiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5kcmFnZ2Fi
bGVOb2RlKG1fZnJhbWUsIHJlc3VsdC5pbm5lck5vZGUoKSwgREhUTUxGbGFnLCBVQUZsYWcsIHJl
c3VsdC5wb2ludCgpLngoKSwgcmVzdWx0LnBvaW50KCkueSgpLCBzcmNJc0RIVE1MKTsKKyAgICBy
ZXR1cm4gcmVzdWx0LmlubmVyTm9kZSgpICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCktPmRyYWdn
YWJsZU5vZGUobV9mcmFtZSwgcmVzdWx0LmlubmVyTm9kZSgpLCByZXN1bHQucG9pbnQoKSwgc3Rh
dGUpOwogfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFn
KCkKQEAgLTg5MiwxMSArODg4LDggQEAgdm9pZCBFdmVudEhhbmRsZXI6OnNldEF1dG9zY3JvbGxS
ZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQ
UE9SVCkKLXZvaWQgRXZlbnRIYW5kbGVyOjphbGxvd0RIVE1MRHJhZyhib29sJiBmbGFnREhUTUws
IGJvb2wmIGZsYWdVQSkgY29uc3QKK3ZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnU291cmNl
QWN0aW9uc0FsbG93ZWQoRHJhZ1N0YXRlOjpFdmVudERpc3BhdGNoUG9saWN5JiBwb2xpY3kpIGNv
bnN0CiB7Ci0gICAgZmxhZ0RIVE1MID0gZmFsc2U7Ci0gICAgZmxhZ1VBID0gZmFsc2U7Ci0KICAg
ICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKIApAQCAtOTA4LDkgKzkwMSw4IEBAIHZv
aWQgRXZlbnRIYW5kbGVyOjphbGxvd0RIVE1MRHJhZyhib29sJiBmbGFnREhUTUwsIGJvb2wmIGZs
YWdVQSkgY29uc3QKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVuc2ln
bmVkIG1hc2sgPSBwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5kZWxlZ2F0ZURyYWdTb3VyY2VBY3Rp
b24odmlldy0+Y29udGVudHNUb1dpbmRvdyhtX21vdXNlRG93blBvcykpOwotICAgIGZsYWdESFRN
TCA9IChtYXNrICYgRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKSAhPSBEcmFnU291cmNlQWN0aW9uTm9u
ZTsKLSAgICBmbGFnVUEgPSAoKG1hc2sgJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpIHx8IChtYXNr
ICYgRHJhZ1NvdXJjZUFjdGlvbkxpbmspIHx8IChtYXNrICYgRHJhZ1NvdXJjZUFjdGlvblNlbGVj
dGlvbikpOworICAgIERyYWdTb3VyY2VBY3Rpb24gbWFzayA9IHBhZ2UtPmRyYWdDb250cm9sbGVy
KCktPmRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbih2aWV3LT5jb250ZW50c1RvV2luZG93KG1fbW91
c2VEb3duUG9zKSk7CisgICAgcG9saWN5ID0gKG1hc2sgJiBEcmFnU291cmNlQWN0aW9uREhUTUwp
ID8gRHJhZ1N0YXRlOjpESVNQQVRDSF9FVkVOVFMgOiBEcmFnU3RhdGU6OkRPX05PVF9ESVNQQVRD
SF9FVkVOVFM7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICAKQEAgLTE4
MDIsNyArMTc5NCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBDbGlwYm9hcmQqCiAgICAgICAgIC8vIE1vcmVv
dmVyLCB0aGlzIG9yZGVyaW5nIGNvbmZvcm1zIHRvIHNlY3Rpb24gNy45LjQgb2YgdGhlIEhUTUwg
NSBzcGVjLiA8aHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2RyYWct
YW5kLWRyb3AtcHJvY2Vzc2luZy1tb2RlbD4uCiAgICAgICAgIGlmIChuZXdUYXJnZXQgJiYgY2Fu
SGFuZGxlRHJhZ0FuZERyb3BGb3JUYXJnZXQoVXBkYXRlRHJhZ0FuZERyb3AsIG5ld1RhcmdldCwg
ZXZlbnQsIGNsaXBib2FyZCwgJmFjY2VwdCkpIHsKICAgICAgICAgICAgIC8vIEFzIHBlciBzZWN0
aW9uIDcuOS40IG9mIHRoZSBIVE1MIDUgc3BlYy4sIHdlIG11c3QgYWx3YXlzIGZpcmUgYSBkcmFn
IGV2ZW50IGJlZm9yZSBmaXJpbmcgYSBkcmFnZW50ZXIsIGRyYWdsZWF2ZSwgb3IgZHJhZ292ZXIg
ZXZlbnQuCi0gICAgICAgICAgICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjICYmIGRyYWdTdGF0
ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwpIHsKKyAgICAgICAgICAgIGlmIChkcmFnU3RhdGUoKS5t
X2RyYWdTcmMgJiYgZHJhZ1N0YXRlKCkuc2hvdWxkRGlzcGF0Y2hFdmVudHMoKSkgewogICAgICAg
ICAgICAgICAgIC8vIGZvciBub3cgd2UgZG9uJ3QgY2FyZSBpZiBldmVudCBoYW5kbGVyIGNhbmNl
bHMgZGVmYXVsdCBiZWhhdmlvciwgc2luY2UgdGhlcmUgaXMgbm9uZQogICAgICAgICAgICAgICAg
IGRpc3BhdGNoRHJhZ1NyY0V2ZW50KGV2ZW50TmFtZXMoKS5kcmFnRXZlbnQsIGV2ZW50KTsKICAg
ICAgICAgICAgIH0KQEAgLTE4MjAsNyArMTgxMiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp1cGRh
dGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBDbGlwYm9hcmQq
CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG5ld1RhcmdldCAmJiBjYW5IYW5kbGVEcmFnQW5k
RHJvcEZvclRhcmdldChVcGRhdGVEcmFnQW5kRHJvcCwgbmV3VGFyZ2V0LCBldmVudCwgY2xpcGJv
YXJkLCAmYWNjZXB0KSkgewogICAgICAgICAgICAgLy8gTm90ZSwgd2hlbiBkZWFsaW5nIHdpdGgg
c3ViLWZyYW1lcywgd2UgbWF5IG5lZWQgdG8gZmlyZSBvbmx5IGEgZHJhZ292ZXIgZXZlbnQgYXMg
YSBkcmFnIGV2ZW50IG1heSBoYXZlIGJlZW4gZmlyZWQgZWFybGllci4KLSAgICAgICAgICAgIGlm
ICghbV9zaG91bGRPbmx5RmlyZURyYWdPdmVyRXZlbnQgJiYgZHJhZ1N0YXRlKCkubV9kcmFnU3Jj
ICYmIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwpIHsKKyAgICAgICAgICAgIGlmICgh
bV9zaG91bGRPbmx5RmlyZURyYWdPdmVyRXZlbnQgJiYgZHJhZ1N0YXRlKCkubV9kcmFnU3JjICYm
IGRyYWdTdGF0ZSgpLnNob3VsZERpc3BhdGNoRXZlbnRzKCkpIHsKICAgICAgICAgICAgICAgICAv
LyBmb3Igbm93IHdlIGRvbid0IGNhcmUgaWYgZXZlbnQgaGFuZGxlciBjYW5jZWxzIGRlZmF1bHQg
YmVoYXZpb3IsIHNpbmNlIHRoZXJlIGlzIG5vbmUKICAgICAgICAgICAgICAgICBkaXNwYXRjaERy
YWdTcmNFdmVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVudCk7CiAgICAgICAgICAgICB9
CkBAIC0xODM2LDcgKzE4MjgsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERy
b3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkKgogdm9pZCBFdmVu
dEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZl
bnQsIENsaXBib2FyZCogY2xpcGJvYXJkKQogewogICAgIGlmIChtX2RyYWdUYXJnZXQgJiYgY2Fu
SGFuZGxlRHJhZ0FuZERyb3BGb3JUYXJnZXQoQ2FuY2VsRHJhZ0FuZERyb3AsIG1fZHJhZ1Rhcmdl
dC5nZXQoKSwgZXZlbnQsIGNsaXBib2FyZCkpIHsKLSAgICAgICAgaWYgKGRyYWdTdGF0ZSgpLm1f
ZHJhZ1NyYyAmJiBkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MKQorICAgICAgICBpZiAo
ZHJhZ1N0YXRlKCkubV9kcmFnU3JjICYmIGRyYWdTdGF0ZSgpLnNob3VsZERpc3BhdGNoRXZlbnRz
KCkpCiAgICAgICAgICAgICBkaXNwYXRjaERyYWdTcmNFdmVudChldmVudE5hbWVzKCkuZHJhZ0V2
ZW50LCBldmVudCk7CiAgICAgICAgIGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50TmFtZXMoKS5kcmFn
bGVhdmVFdmVudCwgbV9kcmFnVGFyZ2V0LmdldCgpLCBldmVudCwgY2xpcGJvYXJkKTsKICAgICB9
CkBAIC0yNjI5LDEyICsyNjIxLDIyIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNp
c0V4Y2VlZGVkKGNvbnN0IEludFBvaW50JiBkcmFnVmlld3BvcnRMb2NhdGlvbikKICAgICBJbnRT
aXplIGRlbHRhID0gZHJhZ0xvY2F0aW9uIC0gbV9tb3VzZURvd25Qb3M7CiAgICAgCiAgICAgaW50
IHRocmVzaG9sZCA9IEdlbmVyYWxEcmFnSHlzdGVyZXNpczsKLSAgICBpZiAoZHJhZ1N0YXRlKCku
bV9kcmFnU3JjSXNJbWFnZSkKKyAgICBzd2l0Y2ggKGRyYWdTdGF0ZSgpLm1fZHJhZ1R5cGUpIHsK
KyAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb246CisgICAgICAgIHRocmVzaG9sZCA9
IFRleHREcmFnSHlzdGVyZXNpczsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEcmFnU291cmNl
QWN0aW9uSW1hZ2U6CiAgICAgICAgIHRocmVzaG9sZCA9IEltYWdlRHJhZ0h5c3RlcmVzaXM7Ci0g
ICAgZWxzZSBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjSXNMaW5rKQorICAgICAgICBicmVhazsK
KyAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25MaW5rOgogICAgICAgICB0aHJlc2hvbGQgPSBMaW5r
RHJhZ0h5c3RlcmVzaXM7Ci0gICAgZWxzZSBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjSW5TZWxl
Y3Rpb24pCi0gICAgICAgIHRocmVzaG9sZCA9IFRleHREcmFnSHlzdGVyZXNpczsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBEcmFnU291cmNlQWN0aW9uREhUTUw6CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbk5vbmU6CisgICAgY2FzZSBEcmFnU291cmNlQWN0aW9u
QW55OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAgICAgCiAgICAgcmV0
dXJuIGFicyhkZWx0YS53aWR0aCgpKSA+PSB0aHJlc2hvbGQgfHwgYWJzKGRlbHRhLmhlaWdodCgp
KSA+PSB0aHJlc2hvbGQ7CiB9CkBAIC0yNjQ3LDcgKzI2NDksNyBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6ZnJlZUNsaXBib2FyZCgpCiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRB
dChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBEcmFnT3BlcmF0aW9uIG9wZXJhdGlv
bikKIHsKLSAgICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjICYmIGRyYWdTdGF0ZSgpLm1fZHJh
Z1NyY01heUJlREhUTUwpIHsKKyAgICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjICYmIGRyYWdT
dGF0ZSgpLnNob3VsZERpc3BhdGNoRXZlbnRzKCkpIHsKICAgICAgICAgZHJhZ1N0YXRlKCkubV9k
cmFnQ2xpcGJvYXJkLT5zZXREZXN0aW5hdGlvbk9wZXJhdGlvbihvcGVyYXRpb24pOwogICAgICAg
ICAvLyBmb3Igbm93IHdlIGRvbid0IGNhcmUgaWYgZXZlbnQgaGFuZGxlciBjYW5jZWxzIGRlZmF1
bHQgYmVoYXZpb3IsIHNpbmNlIHRoZXJlIGlzIG5vbmUKICAgICAgICAgZGlzcGF0Y2hEcmFnU3Jj
RXZlbnQoZXZlbnROYW1lcygpLmRyYWdlbmRFdmVudCwgZXZlbnQpOwpAQCAtMjY4Miw0MCArMjY4
NCwyNiBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKICAgICAvLyBDYXJlZnVsIHRoYXQgdGhlIGRyYWcgc3Rh
cnRpbmcgbG9naWMgc3RheXMgaW4gc3luYyB3aXRoIGV2ZW50TWF5U3RhcnREcmFnKCkKICAgICAK
ICAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcgJiYgIWRyYWdTdGF0ZSgpLm1fZHJhZ1Ny
YykgewotICAgICAgICBhbGxvd0RIVE1MRHJhZyhkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURI
VE1MLCBkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZVVBKTsKLSAgICAgICAgaWYgKCFkcmFnU3Rh
dGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MICYmICFkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZVVB
KQotICAgICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsgLy8gbm8gZWxl
bWVudCBpcyBkcmFnZ2FibGUKLSAgICB9CisgICAgICAgIHVwZGF0ZURyYWdTb3VyY2VBY3Rpb25z
QWxsb3dlZChkcmFnU3RhdGUoKS5tX2V2ZW50RGlzcGF0Y2hQb2xpY3kpOwogCi0gICAgaWYgKG1f
bW91c2VEb3duTWF5U3RhcnREcmFnICYmICFkcmFnU3RhdGUoKS5tX2RyYWdTcmMpIHsKICAgICAg
ICAgLy8gdHJ5IHRvIGZpbmQgYW4gZWxlbWVudCB0aGF0IHdhbnRzIHRvIGJlIGRyYWdnZWQKICAg
ICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOwor
ICAgICAgICAvLyBGSVhNRTogVGhlIGluY29uc2lzdGVudCB1c2Ugb2YgbV9tb3VzZURvd25Qb3Mg
YW5kIHZpZXctPndpbmRvd1RvQ29udGVudHMoKSBpcyBvZGQuCiAgICAgICAgIEhpdFRlc3RSZXN1
bHQgcmVzdWx0KG1fbW91c2VEb3duUG9zKTsKICAgICAgICAgbV9mcmFtZS0+Y29udGVudFJlbmRl
cmVyKCktPmxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICAgICAgTm9kZSog
bm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKICAgICAgICAgaWYgKG5vZGUgJiYgbV9mcmFtZS0+
cGFnZSgpKQotICAgICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0gbV9mcmFtZS0+cGFn
ZSgpLT5kcmFnQ29udHJvbGxlcigpLT5kcmFnZ2FibGVOb2RlKG1fZnJhbWUsIG5vZGUsIGRyYWdT
dGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwsIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlVUEs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9tb3VzZURvd25Qb3MueCgpLCBtX21vdXNl
RG93blBvcy55KCksIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzREhUTUwpOworICAgICAgICAgICAg
ZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0gbV9mcmFtZS0+cGFnZSgpLT5kcmFnQ29udHJvbGxlcigp
LT5kcmFnZ2FibGVOb2RlKG1fZnJhbWUsIG5vZGUsIG1fbW91c2VEb3duUG9zLCBkcmFnU3RhdGUo
KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyA9IDA7
CiAgICAgICAgIAogICAgICAgICBpZiAoIWRyYWdTdGF0ZSgpLm1fZHJhZ1NyYykKICAgICAgICAg
ICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0gZmFsc2U7IC8vIG5vIGVsZW1lbnQgaXMgZHJh
Z2dhYmxlCi0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8gcmVtZW1iZXIgc29tZSBmYWN0
cyBhYm91dCB0aGlzIHNvdXJjZSwgd2hpbGUgd2UgaGF2ZSBhIEhpdFRlc3RSZXN1bHQgaGFuZHkK
LSAgICAgICAgICAgIG5vZGUgPSByZXN1bHQuVVJMRWxlbWVudCgpOwotICAgICAgICAgICAgZHJh
Z1N0YXRlKCkubV9kcmFnU3JjSXNMaW5rID0gbm9kZSAmJiBub2RlLT5pc0xpbmsoKTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgbm9kZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKTsK
LSAgICAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzSW1hZ2UgPSBub2RlICYmIG5vZGUt
PnJlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdTcmNJblNlbGVjdGlvbiA9IG1fZnJhbWUt
PnNlbGVjdGlvbigpLT5jb250YWlucyhtX21vdXNlRG93blBvcyk7Ci0gICAgICAgIH0gICAgICAg
ICAgICAgICAgCiAgICAgfQogICAgIAogICAgIC8vIEZvciBkcmFncyBzdGFydGluZyBpbiB0aGUg
c2VsZWN0aW9uLCB0aGUgdXNlciBtdXN0IHdhaXQgYmV0d2VlbiB0aGUgbW91c2Vkb3duIGFuZCBt
b3VzZWRyYWcsCiAgICAgLy8gb3IgZWxzZSB3ZSBiYWlsIG9uIHRoZSBkcmFnZ2luZyBzdHVmZiBh
bmQgYWxsb3cgc2VsZWN0aW9uIHRvIG9jY3VyCi0gICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnRE
cmFnICYmICFkcmFnU3RhdGUoKS5tX2RyYWdTcmNJc0ltYWdlICYmIGRyYWdTdGF0ZSgpLm1fZHJh
Z1NyY0luU2VsZWN0aW9uICYmIGV2ZW50LmV2ZW50KCkudGltZXN0YW1wKCkgLSBtX21vdXNlRG93
blRpbWVzdGFtcCA8IFRleHREcmFnRGVsYXkpIHsKKyAgICBpZiAobV9tb3VzZURvd25NYXlTdGFy
dERyYWcgJiYgZHJhZ1N0YXRlKCkubV9kcmFnVHlwZSA9PSBEcmFnU291cmNlQWN0aW9uU2VsZWN0
aW9uICYmIGV2ZW50LmV2ZW50KCkudGltZXN0YW1wKCkgLSBtX21vdXNlRG93blRpbWVzdGFtcCA8
IFRleHREcmFnRGVsYXkpIHsKICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxz
ZTsKICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0gMDsKICAgICAgICAgLy8gLi4uYnV0
IGlmIHRoaXMgd2FzIHRoZSBmaXJzdCBjbGljayBpbiB0aGUgd2luZG93LCB3ZSBkb24ndCBldmVu
IHdhbnQgdG8gc3RhcnQgc2VsZWN0aW9uCkBAIC0yNzQ0LDEwICsyNzMyLDEwIEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMm
IGV2ZW50KQogICAgICAgICAgICAgICAgICAgICAgLy8gdG8gbWFrZSBzdXJlIGl0IGdldHMgbnVt
YmlmaWVkCiAgICAgZHJhZ1N0YXRlKCkubV9kcmFnQ2xpcGJvYXJkID0gY3JlYXRlRHJhZ2dpbmdD
bGlwYm9hcmQoKTsgIAogICAgIAotICAgIGlmIChkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURI
VE1MKSB7CisgICAgaWYgKGRyYWdTdGF0ZSgpLnNob3VsZERpc3BhdGNoRXZlbnRzKCkpIHsKICAg
ICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBpcyBhIERPTSBiYXNlZCBkcmFnLCBpZiBpdCBp
cyBnZXQgdGhlIERPTSBzcGVjaWZpZWQgZHJhZyAKICAgICAgICAgLy8gaW1hZ2UgYW5kIG9mZnNl
dAotICAgICAgICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjSXNESFRNTCkgeworICAgICAgICBp
ZiAoZHJhZ1N0YXRlKCkubV9kcmFnVHlwZSA9PSBEcmFnU291cmNlQWN0aW9uREhUTUwpIHsKICAg
ICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZHJhZ1N0YXRlKCkubV9kcmFn
U3JjLT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24n
dCB3b3JrIGNvcnJlY3RseSB3aXRoIHRyYW5zZm9ybXMuCiAgICAgICAgICAgICAgICAgRmxvYXRQ
b2ludCBhYnNQb3MgPSByZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKCk7CkBAIC0yNzgzLDggKzI3
NzEsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKICAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcp
IHsKICAgICAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICAgICAgRHJhZ0Nv
bnRyb2xsZXIqIGRyYWdDb250cm9sbGVyID0gcGFnZSA/IHBhZ2UtPmRyYWdDb250cm9sbGVyKCkg
OiAwOwotICAgICAgICBib29sIHN0YXJ0ZWREcmFnID0gZHJhZ0NvbnRyb2xsZXIgJiYgZHJhZ0Nv
bnRyb2xsZXItPnN0YXJ0RHJhZyhtX2ZyYW1lLCBkcmFnU3RhdGUoKS5tX2RyYWdDbGlwYm9hcmQu
Z2V0KCksIHNyY09wLCBldmVudC5ldmVudCgpLCBtX21vdXNlRG93blBvcywgZHJhZ1N0YXRlKCku
bV9kcmFnU3JjSXNESFRNTCk7Ci0gICAgICAgIGlmICghc3RhcnRlZERyYWcgJiYgZHJhZ1N0YXRl
KCkubV9kcmFnU3JjTWF5QmVESFRNTCkgeworICAgICAgICBib29sIHN0YXJ0ZWREcmFnID0gZHJh
Z0NvbnRyb2xsZXIgJiYgZHJhZ0NvbnRyb2xsZXItPnN0YXJ0RHJhZyhtX2ZyYW1lLCBkcmFnU3Rh
dGUoKSwgc3JjT3AsIGV2ZW50LmV2ZW50KCksIG1fbW91c2VEb3duUG9zKTsKKyAgICAgICAgaWYg
KCFzdGFydGVkRHJhZyAmJiBkcmFnU3RhdGUoKS5zaG91bGREaXNwYXRjaEV2ZW50cygpKSB7CiAg
ICAgICAgICAgICAvLyBEcmFnIHdhcyBjYW5uZWQgYXQgdGhlIGxhc3QgbWludXRlIC0gd2Ugb3dl
IG1fZHJhZ1NyYyBhIERSQUdFTkQgZXZlbnQKICAgICAgICAgICAgIGRpc3BhdGNoRHJhZ1NyY0V2
ZW50KGV2ZW50TmFtZXMoKS5kcmFnZW5kRXZlbnQsIGV2ZW50LmV2ZW50KCkpOwogICAgICAgICAg
ICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5oCmluZGV4IGFhNDQ0YjM0NjYzYjU5YzM3OGE0MTdjNzJlZGRlYzljZWFiZDkyYTEuLmI0
MWZmNWNhNzVkMTAzYWQ2NTU1MDEzNGJhM2RiMjljMGI4MjU2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBFdmVudEhhbmRsZXJfaAog
CiAjaW5jbHVkZSAiRHJhZ0FjdGlvbnMuaCIKKyNpbmNsdWRlICJEcmFnU3RhdGUuaCIKICNpbmNs
dWRlICJGb2N1c0RpcmVjdGlvbi5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCkBAIC00OSw3ICs1MCw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ2xpcGJvYXJkOwogY2xhc3MgQ3Vyc29yOwotc3RydWN0IERyYWdT
dGF0ZTsKIGNsYXNzIEV2ZW50OwogY2xhc3MgRXZlbnRUYXJnZXQ7CiBjbGFzcyBGbG9hdFBvaW50
OwpAQCAtMzIyLDcgKzMyMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWZhdWx0QXJyb3dFdmVu
dEhhbmRsZXIoRm9jdXNEaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqKTsKIAogI2lmIEVOQUJMRShE
UkFHX1NVUFBPUlQpCi0gICAgdm9pZCBhbGxvd0RIVE1MRHJhZyhib29sJiBmbGFnREhUTUwsIGJv
b2wmIGZsYWdVQSkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93
ZWQoRHJhZ1N0YXRlOjpFdmVudERpc3BhdGNoUG9saWN5JikgY29uc3Q7CiAjZW5kaWYKIAogICAg
IC8vIFRoZSBmb2xsb3dpbmcgYXJlIGNhbGxlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGhhbmRsZU1v
dXNlVXAgYW5kIGhhbmRsZURyYWcuICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93389</attachid>
            <date>2011-05-12 19:15:58 -0700</date>
            <delta_ts>2011-05-12 19:40:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59409-20110512191557.patch</filename>
            <type>text/plain</type>
            <size>122245</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYxNjQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiYTQzNTYzOWJmMjE1MWNjYTk4MmJj
YjYzNDZhZmZjNDczMWYxZTkxLi44MGVhZGUxODNjMDUyZjE0Y2FjMDk3ZDVkMGVlMTE3MWZkODgw
ZTg4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDUtMTIgIERhbmllbCBDaGVuZyAgPGRj
aGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wcm92ZSBkcmFnIHN0YXJ0IGxvZ2ljCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTQwOQorCisgICAgICAgIEFkZCBhIG5ldyB0
ZXN0IHRvIHRlc3QgZHJhZyBzdGFydCBlZGdlIGNhc2VzIG9uIE1hYyAoYmVjYXVzZSBvZiBhIG5v
bi16ZXJvIHRleHQgZHJhZyBkZWxheSkKKyAgICAgICAgYXMgd2VsbCBhcyByZWJhc2UgYW4gZXhp
c3RpbmcgdGVzdC4KKworICAgICAgICAqIGZhc3QvY3NzL3VzZXItZHJhZy1ub25lLmh0bWw6IFRl
eHQgbm9kZXMgYXJlIG5vIGxvbmdlciBkcmFnZ2FibGUuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGlvbnMtdG8tY29udGVudGVkaXRhYmxlLWV4
cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVi
b2FyZC9kcmFnLXNlbGVjdGlvbnMtdG8tY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVj
dGlvbnMtdG8tY29udGVudGVkaXRhYmxlLmh0bWw6IEFkZGVkLgorCiAyMDExLTA1LTEwICBBYmhp
c2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXNlci1kcmFn
LW5vbmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3VzZXItZHJhZy1ub25lLmh0bWwKaW5k
ZXggYzg4Y2FhZjZlZTU2YzM4NmI4ZTNiNmY0NDVkNGMxYTc3M2UxYTA4Yy4uZjkzMzUxMzVjNWQ5
YzFhNWY5MTdlN2UwYzViZTg0YTU4ZTlhODE0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvdXNlci1kcmFnLW5vbmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy91c2Vy
LWRyYWctbm9uZS5odG1sCkBAIC0xOSwxMSArMTksMTEgQEAKICAgICAgICAgPGltZyBjbGFzcz0i
ZHJhZy1ub25lIiBzcmM9InJlc291cmNlcy9ncmVlbmJveC5wbmciPgogICAgIDwvZGl2PgogCi0g
ICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9IklNRyB0ZXh0IHRleHQgQSBuaWwiPgorICAgIDxk
aXYgY2xhc3M9ImJveCIgZXhwZWN0PSJJTUcgQSBBIEEgbmlsIj4KICAgICAgICAgPGEgaHJlZj0i
IyI+PGltZyBzcmM9InJlc291cmNlcy9ncmVlbmJveC5wbmciPng8YnI+PHNwYW4+eTwvc3Bhbj48
L2E+CiAgICAgPC9kaXY+CiAKLSAgICA8ZGl2IGNsYXNzPSJib3giIGV4cGVjdD0iSU1HIHRleHQg
dGV4dCBBIG5pbCI+CisgICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9IklNRyBBIEEgQSBuaWwi
PgogICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iZHJhZy1lbGVtZW50Ij48aW1nIHNyYz0icmVz
b3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4K
IApAQCAtMzEsMTEgKzMxLDExIEBACiAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcmFnLW5v
bmUiPjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW5ib3gucG5nIj54PGJyPjxzcGFuPnk8L3NwYW4+
PC9hPgogICAgIDwvZGl2PgogCi0gICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9IkEgdGV4dCB0
ZXh0IEEgbmlsIj4KKyAgICA8ZGl2IGNsYXNzPSJib3giIGV4cGVjdD0iQSBBIEEgQSBuaWwiPgog
ICAgICAgICA8YSBocmVmPSIjIj48aW1nIGNsYXNzPSJkcmFnLW5vbmUiIHNyYz0icmVzb3VyY2Vz
L2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIAotICAg
IDxkaXYgY2xhc3M9ImJveCIgZXhwZWN0PSJBIHRleHQgdGV4dCBBIG5pbCI+CisgICAgPGRpdiBj
bGFzcz0iYm94IiBleHBlY3Q9IkEgQSBBIEEgbmlsIj4KICAgICAgICAgPGEgaHJlZj0iIyIgY2xh
c3M9ImRyYWctZWxlbWVudCI+PGltZyBjbGFzcz0iZHJhZy1ub25lIiBzcmM9InJlc291cmNlcy9n
cmVlbmJveC5wbmciPng8YnI+PHNwYW4+eTwvc3Bhbj48L2E+CiAgICAgPC9kaXY+CiAKQEAgLTQz
LDExICs0MywxMSBAQAogICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iZHJhZy1ub25lIj48aW1n
IHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAg
ICA8L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSB0
ZXh0IHRleHQgQSBESVYiPgorICAgIDxkaXYgY2xhc3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVj
dD0iQSBBIEEgQSBESVYiPgogICAgICAgICA8YSBocmVmPSIjIj48aW1nIGNsYXNzPSJkcmFnLW5v
bmUiIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4K
ICAgICA8L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0i
QSB0ZXh0IHRleHQgQSBESVYiPgorICAgIDxkaXYgY2xhc3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4
cGVjdD0iQSBBIEEgQSBESVYiPgogICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iZHJhZy1lbGVt
ZW50Ij48aW1nIGNsYXNzPSJkcmFnLW5vbmUiIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+
eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIDwvZGl2PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGlv
bnMtdG8tY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1zZWxlY3Rpb25zLXRvLWNvbnRlbnRlZGl0YWJs
ZS1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzcwYmM2NTRjZjRlNjE1MzcwMjA0MmEzMjI5ZTJl
YmMzYjA4YzkwMgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNzAzMDEKemNtWl5MMlJ6bUx8Mzhy
dEF0YyRBSDAqfHp0JiopfVp6MUVAZHlsZCpEdjhWX2dza2p3akVHOEIkbGpSOyQyeU1mCnp8Tjdr
ZmB+QU40ZDtJP1FhbGlMX0ZYQSZePEdKMyMpSyVxPUE3ZVUzS3RPT0A7bSp4XzFPIUFKMU8hTDQk
VmxLTAp6MzlmPG1AUEMoX1opckszSn5sSjhjNSo9eGh6Z3JMR0ImJHpDTSttdVZ0KTBDaGBFNU1z
bjlodWYkUF5ydWJQV0kKengqR0YqYkI9KDNnRnhZPyVtZXFOTVlMdGFxZ2p1IS01YmApZ0stOH5l
Y0dPN0RObkR5enNSazNfQT0pIXJFOUU9CnpwV1lHI3puWWUjO1J1LVV1MUt8fDhSajZ7YCRqQDM7
KHo+Nno7QkxZTSQrYWkzaCZLWS19OGpeZ2J2dj1zOFdZPwp6eDZQdzZAeWp9RHkjdmMzM0hhb044
RmtlakxQdXUmSGVxQit7JkoyT2p3YktgPnkmYzFGNj5WJUwtVH5GTnVLKy0KenhufDw5MG17KXZw
c31sZ3ZXNFg4VkhVcDw0U2U+JXVkJFdDUE1MPUkhUjM9V2M/PmMlTXZOcFd2bENUKFFCJmhwCnpg
M0wxQCtCZmdzJTxjVjU7PVdZY3c7fj5gJW9UKGg7IzgxajQyRi10PGF+N0h2fnFYVEg1Sk42Zl9l
ZVVlSiVRMQp6QjJucHZKPWF0fDRlO0Voemd5Nl4+Y2lncE5xe25sZ04hV0RVbkVNOWxCaUsmJlJJ
KyhPNzExK1I7P09pdS01Q1IKem1JK01gJThiRms5WXRBTSh0NTI8MWZOTm5lVzk4cXM2eUJKc2dP
cz51LXRQPUIjSiFILT9jZ3RIQl4xPHQ+aVB5CnpnYzJSemVMSX1hZnw5LXlPQUF+Tk9HfWNkbFg7
KD9mMWpiQnt6N141NCo4K0FII1I3IWA+TU9jO01Va2QhaClZJQp6QU9+Mz4kNmpoPDhIKCR8MXlS
U31XU04jZj1iYjxGVlhoXnJ6K0pmTC1eK2RfYFEhdTlvJUY2YkhmZnVvPTQmYmgKekZGRFZJcFhF
JjxXTjhffGBSeXBZb0V5dVk8IS1Sald8KChvPlJBN3ZrIXhkVGNifHRMPj5aaV5nVWZJeSpPLW42
CnphQDFjX2ZwMngtIV9+Y0hhe0tOUlc1KWg2bUVyK1R2TGo7MlJJa2xtYmorQGJNe19FYFc4aFE+
Ry1sTCNvJDw4Nwp6R2cyZjk9WEZfemEqPWw2KiFqOEdjI1d+JUd9KkFaa2JUblVKTnMpbUkoUyNg
SHgpejluR3Z1NHVoV2k7aTtMPDcKemVHVi0wODBuJDEoeD8paVRyWXlWQ1BuMitkMkVgV0AyNEdQ
bWRDSVk2VFVXXkBKTH1PbCVXfi1VfjdxRFAxbmZuCnp2Sm9QMHIwS3E8QGJhYyUzOHQhUS1JZygh
MGtoPClkI0luTC1rSSEkNllxVmYrMUtOUlVhMHlrel5PcEhwTVpBYgp6PSNpMX1kMktLO3lqJDVq
d2F+ZERLKik8NUdUaV83bEFaKVRPJGVYdzRlKztwb0dZaHJJcmVBQmk7TGxSR1ZZQksKemgwP2E9
PFF8X311NEhQUC0+KXw0dlB8SExSZVg5b28kemdvcj5tPiRpVnU3RHdRdGpvNzVQZlYxTWo7WSgq
I2ZDCnokMnxBc0tkKDA+KChJenxWfEIwR3dnPm1yXyliPiRuT0hANVlUMTM1UkNufktEdz1pKXk+
Vj1FKVliPmZjbyFTbQp6IV9UeilkfXBiXl9uLUdtX1BOMmRwZ0ZKQz5PdDs5bzF0SFdUR3krKk81
WXd8cT5hZVk5Wl9Ob1BJVyhybE1PYTUKekVHdWpOYGp6YUJhJldhOV9SNVZMYTAjNG90Iz5jZFlp
Vm56Pkc0ZkBxJThNai1NY2c/bDQoJDJuIXVHWllkbG84CnpvUmVFa05SWEA9YXhxKiQ8JGh7ZWtC
Z2pVMnsrO0I/d01ZNCVLcXlJLTl5dEArYFd6UG5Oan1ocWIyMzskRmohYAp6N0FgPXwhUVUpQW8p
PmZubXhRPnZ4cUdheD1pVHEha2BqKyt4SG9yI3J9ZE1vJEJFNHBFemp5bkZGKEZtTU5XbSEKejhB
QD9tR3MxUD40RUs4dFV2UUVLMXFEXil4NlhIR2lUZG5aWWwmdj5Hazwqa04kKmgtOEdeI3J4IzhX
MzleOGkpCnpYOT5wZW1nUGd4azBXU0psayMld2Y/RHBQVlFWdFlrP3FsQ152KCRYJkpYbVJ7WV8x
JmY2OW4+IVlGT1NwbkFtSQp6KSVBNjI5RGl8RCklVlIhQSlGXmAkTkMld1ZgXm07Wm56ejVYI0R1
YDlXe354ZjEjX0BgTWN6ZUR+JUNmPmhtaVAKek9wM215OT9ZayUkQF5geypRfmVTY3ZQJT9gfVhh
fXI4KnghZXpjISRYU0UldmBtKFdjdCtCRE9CTENUfTJQR3c/CnpmUVUjYWNLMmdKS0AyQjNkPkg7
ZlMkWC11O05hT1AoXz5FcVlvOSY7X0sxO0BAb2luNXExJFpsaFpqNWZaMSpSJQp6TW95fXklNz5a
WjslVWR3YG4lfDJvNFB5Rk5gS3ZmUCtsIzUpTjhMN2dJJTNiaTVady0jSSMlNyR1UnpFVX4xJSgK
ekBgQm9NY0JVOys5NiMpJnRmblI8Oz1mZn1VPkNPJHR8VSMtWCVPXkRtVjYwYntNdDtTbyNSeVZA
JGZIYXApen1XCnpBOXt+djYlPGduSUI0blhwUW5fdzlqakdBOChiaGVsOWAhVjtsNnRJKnxUU1Fi
LXRgKWN1fEsqOyUpQn5ZTkBeRgp6bTZmOENCSWZTeUB5PXFBbjV5XlBtaGRkJVEmTUw3aSVlZkJw
MSZMJCZkfWppeX1aRXByMFNRIW5VNHB7IzttJnIKem8xUUcyWGFEUz1UUTUxYDtqTjYrKXFLbTw8
UX1HSzdKTnB2RWdOcHEoNkNCaz17MmkwU2ZqWUw+UDF7bzZLSSpoCnpCSSYmcUtyVFRrMmprai0x
I15PfXd7bj92e3E4eFRXMzhXSDkoZjxgajx1fGRHZXdmKlgqYG9udE1CUWRwTFJTdwp6aEpPPHVa
dl5pWlVTNH1VUmRJM2drTT8jKStgPmFEYzFkTmk8bU9MMmBURXQoZ00mO3JacnQjKz8qOUR3TlAy
cEAKelVXSStZUjcqNkplO21LeiVzemZCPnQ2UEY2KDQrdHtAQnI8XlZpXkNENTxHMjlUVTVmaysq
fXFCQDIjVWQ4MiVyCnp4enJkPmFgQWpnRWF8KHghPDlsXylxOGRPeT11dHRCOTsreHVXPlU9c2pK
WiNjbDlEcD8+Snx1ZTMhM14taWhqSQp6aTR2RkQ8YzFIRy0/eGVPP2ByT3R5eiZuWkU+bndocGgq
QCthVVpTZDx2b2JsV357WXpibHojP29AZnpGUitUNHgKejRudmhPbV9eRHJza0hQdTB8VWR3U1Zk
KTNSbVk5RnlJZnBjQTl9NVpFMWcyJWpseVROMz1SOHlnT1R9KVUwZnt1CnpeaHVVND9wJjFWJTxR
YlRxMll4blF9Sz8qUGR2UCVOKlN+az9NVntAN09CKGdzZlhoOCZJeig8Wj5kUlI2Pm17WQp6c0Fp
Pk93SDhsKU0rWkFUSmFfJEYmJEF2b3p5Rk02bTxWcFJxVFg2ZEVwejNVPSZNTWhQMS1aPXR6M0ww
YXBldHQKemltQX45JCZNTGFIQEoyYU9HYF5QRHpaaFlwWkFZdz1qa2paP2ByT1A2YU09M1l2VCoh
WlEoYiVFXy1nU3UzT19sCnopTCRRNmZpPnpFKkUlaVl5KE02M1lGZEBjLVhhSnlkaEMpdj1+LVZW
cnhAJExkPFgyUDFXJjdwd1k4R2x3aWxqcQp6c0h8O3JAP0d0WDYpNVI3LTghNlpsOSlAbFlqc3to
a3h0JkUkN3BfSSg3UWg4eWdsbExzT0J0ST5HIV5NLXY2MjMKeipqPkg0c2g4Z34tUGZFTkh7d2Ar
RXAqTj9MTTh1diF9QnlyTmk0RDlofWN5MFByV1V5ampnUkRXNWRHIVY0Xks2CnphbG9lVmhPTytD
MjswbzIhTkcpc1dUdjZKclYyN05pOzcxeSZ3NmAjQzFVeXRvR2B6NSoqdCFxVjJUVzBGNDQ/PQp6
JG91WW9IYSRVYGN9ISZGYVVvJTA3bVotYzFvJTBWQkVOMzAqYSNfIUM3WXZBa3BselRQYHRENCR4
fVZxX2pqMF8KekRwfkgqIXwtPkpIc3RxR25PY1luNndfUDB3TlBIU0w7bWwpQ3coUm9yTDklRUot
b2d6P3Z4KkRuUDc5Qm1hbU9PCnpyMGkqJjxGYGp3QTMyVzQpM0V3UEJxeHE+a3AtJWVvTEUrdypT
UCV+ZVc7T3MzcCErfCteKlpJbHFgXi0mIXJTQQp6Nkdee2F0NSZNaE9YI1VjcFdFYGxEOWtkVVlQ
fj5nY0VQNy08Y1FmVDRSJEAzbF5lLWF5O2lZczJqTzRkWkVecn4KekZ0QFB5Mmp5JmhlWGU2c1Uw
UndeSyp8PHpZemR2NENSdDZ9e3JBKmBYJnhFWElOdkNHPDxje09LO2BkRUxVSn1rCno0RyNKPyU9
YSRZPnQ4JnNzYTJneUBvdl81KF5sQTFEPU50SUR5fHMyWWxBYHczSmMzSzJKN2Y/N3YmSVZWUnIj
NAp6e1dyakpwPjwxQkgqI2B2PkxiMTlNKS07I2RQPEFKV3t6WXgrdCVBfEM1ODVERXRZNW1TQXB8
UCZkY0tecGtmdWYKem5jbnF3I0oybkt3VChlTjdmbCZmJTF4Iyh0U3d6MzVvKHo2S2dhOE1DbzRZ
c24rMTt6KGJAVj40SkRNeT1OaGd3CnpUJm9WRHpId0I4ZDQjMTtWSmBMYzFPYXVFT0ZAQE5scXQr
MldAaEZlOVVaMk9CKFBKSngjVkRPaE0obld7ayQkdAp6TFEwQmJKPEAmYzY4JGteOFJfYmdPcjUt
WUpQZjdmNEZaJUJqYFlMPHNzfGJ2bl49RHJlYS0wMHI5LUhaZENke08KenhucEJgZEBVb0BaazRW
fU9tY0VeP2tRUkZzUlkzeEE9dyhhbztIZiliRTYlKHF3P2c3e35JMjBTWEV7bEtZd210CnpIeGd5
NiEkPVo7OD9WTWZkSVQ+Y1hUVURLJCkkenFUUk1HZDtiZjtgI1ZAUHQ0NXY7M3NGWTJVMkhiTl8z
YTs4Jgp6RVUkV04kKDRCd0A2dENTSyZqVzRwXj59OUd5clMweGByT2p0PX4lKVpKRlJLI2BeQiFQ
bUdhRGNoa0IhT0dfNykKeiRiU0NrYEdjK0shfXdeYWdMcnYxazA8bDxtZnhxWkJxazxhVn5XKHpI
UjwoZ1hjWDN2cCFeZEpOV1VYe2BRJjFoCnpwYTRmT1g4Pm5abX16SkxYWWdGRHpTaX0wOU8yRWpJ
bFN3fi1WVXBXKjE1ZXUmanx4JnBuckE/UjtCfD5oKUt+TQp6U2xjY3h2NEEkR0w7d1h0QUd4X3FP
KkgpYWE1MD4kayozOUFCUkU1dUU4VTBraV4rP3lGIUJgTjlaVDQ1KiQ9e0YKelZeOE1tUmV0e1FC
WjV1aDZWRWRhdkpKKTsqailmJGxCcz5vMyRWcnhfVWpKdSVGNDxzMXFaISNsUTJHRSR9PmVhCno9
allldDFrd0pzQF92bGY4OENTN3lQS1BlMDIocU5OQW4jZiVwYFkqKGNMRiprXyp6OShpK25lOGsy
PCROV0BFUAp6YXhkI040aGBNSEY2a3NARCYlUSZiM2FoJmV5XyZ8eTtrOXwmSUwlTCNsYVAyWnpZ
cm40YTk1aXdhI0pXY0tmSX0KeiYxIytvZ0AxUFRDRXFEdy09SV41LVk7cnZCXkBoUyUyMlNlOGU3
PT9laGted3dRKDJKQVBAO0tTZS1uU25GMX5KCnpmJil1MjhsNnxKZW1ifmVaJT0kfHlXTmVFaVJv
O3pZRH1CQ1RpRTFpJDhoNCg+YSlPJktRQ1YoRVMtXz1hU09TXgp6NW8yUFJlJC0zKHVweDtqSCNf
R21ETkd1Sks4QipMQU42V1F7KTZiQDBteyhLVUMoRnQqKklaV3ZsYHI5R0taI2sKelRnTDU/bDcl
TD5EeiZLfGBHdVhZJTRmVHBeV2RgaCFQYj1jP3FWXnJKUCFfaGxVZFZoTmNaPm1CTylUfkh5NT01
CnpOUWlpQ0B7QW9HLX5yN04wNzhJU216JGRseFVJUlIxJlZ0fCFuJX1jWTxDcERIUH4wJUpVOyRi
JGVRfj1oO0Nicwp6ZiomYGVgOUM5RCE2ZDxtc1kzY092antgfj5qMlk0NXQ0cVlfajtqZCh2Qmor
a3l9e1M3eFBPR0BVRVlGWilia18KemE/NXdDa3NVIWZARX5QcTleZF9fRT1tdSg8ZUFOUjRIKEM4
Wjl4NmxkXllaOFdAU357UGFGWSZIbUVrPyE4WSUjCno2TjFVY2U+RT9MJiFfa3VjPHx7fSlXNWxF
O1hXTyF4d1JWWXJ3cEJ9ZXZ4MVZyOFlEKTFkIzV0SyMlV0pENi1kYQp6YWk+cTg/Jj5RT1pxVzRe
TUlZSFFtZXUpbFQrPFdUNUtUVD1wNVo+JVArQmlvTy1lJnJOTmV4NE4jaz8mYihPSFgKejh1PlE/
TmA8VSQmKSkjTU1tPVUoNGdCXzljeGAkWWVuQztVeFYrXlN4cDNqYXJDM0YxMiNMIU5jbyt+R0gj
SWQ/Cnp2by1td3h+WTBmcWB4Y0AyQndgfGNWRDBVS2xHRlU5c2E4ZjFySystPCMzRExYPzV+ZT9m
I1A4YGEqOE9ye2R6RQp6U3I0R0dAY0lyeUprZTJAcyopa3BzUTA9YGR4fUlnX2l3Q21gYn5lS2hn
Zys4VSZjUSVqMGpee21AIWtsUCR5eEYKek9DYndJPiQwU0khYm1tOC1QczFHNjRJTH0kM1JrNnBY
KThgd0AjRnl5NjJ0a1M+UmlAUHEpVHQ+KilNNkFUMGdmCno+IUpfUzBwTnZXckx2KFJgPyspSEh0
X2hYKlJJYF5PbEAofEtsYiFVMm88WXx6NVZtMEJAYGVON2skKTY0WGlkXwp6OThPMmFFVyh1fiNK
cEdtQTxlaHdaK1h2TE8tO0woWk5JWiZpOURvSC0oOGdWKnpESUE9V0p8aklecChiZVlmQzIKelBH
bXsjWFYoKEZVQjB+R2QyKEUpeXc8STAhVDhBa2RMeHZ5JThtOGNsekMpJVhxOVBnVEkqZnZ1VCZX
eFZ8TUxXCnohbj5+WVYpZ29acio2UTJnZHFYVDQhODRnJlVKWnJYR2c/aWpneVghNHZQNDt5IT5m
KV83KEAwRHttKyheYGJ4fAp6eipHJjZ5YH04JVhYc2RST31yVFhrOCtVaSNRJjFCPiRBP3RVRz1g
bzska19tPGU0dzAzP0YlVkNMSGRpOSRxYSMKelohJHFDUlNsKUtuT2swQ1lJNkFUe3JmUkhHPiMh
QUNneFNed0VrejBnMWI1JXFXPTJsP299PHt0TW1DRVEyQ2FUCno8aEFqMEJqWkZvSFNfQipSRHU9
KnFkIVc8Tld3aV9DQHEoTWRHekQ0KHpkVmI7eUp4SjJZNyhFRnFtT35MWVg/fgp6JDA9cmYtZD47
ZVNqZihia0J7I1pXcUB0fnpCMmRUJk1kU0hsXyhOckRVfHNCLVgpO3ptbX0yMyYyZFFfV0Y7TmEK
eld8e3o2Y3Z8MCQqaUx6ezRjS1ZSPmIrXzsrdTdYPm5+TEF3X0U3SGJWZkJMKkI3ZzhibUspRm08
QGt1JEArU1d0CnppdStOPEFIITJYQSVlTDNpZVAjXlkxNVRAJlczQldIalZXVFJjdDQrdlBlOyVn
VzQtO15UZkREJTVXOGBkfnhhTwp6N3dyTTtmakNsNzVOJWJlMnB7UXNZPiFtKE1oNUB0VHpXTEQo
e0hvdTVtOFlLJVlGcys4bk8+aWtNRXNrMnNaQVYKemNMckp9d2t7aHNheHVLKll4S0wmK3Z6Zn1R
YWJLcHRTRnV5JCsjQj1xYykwN0xoJlVoXmItSyQ/WHxlTmtKU2gzCno+Kzlab3QxV3RIJnNiPmFn
dHA5REEtSkw3cj1IWDxLR2J3d2U+VEowYyY9Yz0qR0RyZ2pmTlA/JSM0T2VVVXk1Xwp6RmZ3ZVlQ
R0VAY1ZCP2pzTnhtO1I7Yy1hfSN3Y2JtdmFtZEljNzckQj04dmdMbEpyU3tmdTF4bVZRZSNHNG90
SmEKenw2dkxkTkVyYi1rdy0zZCllNmgjam9lYnRUcEcwPVFoTGMqa3gkYEZTS3JHVDBLMWpYcHlx
M3VUdTh8dyRTayE3Cnp4UHRvXj19V00oVlY+dWtyYks/ZFZUMSheLXo3YGRYWTRQTyZQNl9RVHVV
THpuZmgjNWZUe0xLcT9RNmNEaXF9dwp6SWRfYiVeUnM9eW9yZVlfPUxMPjgpfn0wMDMmSVEoPm83
NGYzNTRlWkMwJmIhaXc3QTM8UWc7VyFRJHROODcySE8KekJQVDkwSmdiKTcrNj4yIXpUazJuRlB9
UigwMkZNNEhUMFooKUprUUNQWlY1aEFqa016UzJ7NU02ej9eSzYhJUdUCnpnZEhYKV9nYXBwJXYk
PSUwYG4/RUV2NUctVEdnS1Y2Q05uRFBgcVRNckY8dUhoU0shJmQje1VPXks5eSRYIyFKdAp6d1df
SCZzND1mI3dCT0h1I1NqREszZU9mTWdsfnZRbG5ZWmk2VDRPVVEwbXIjdnpYXm1sd0Y5U25VP3NF
e15RbGgKeiRJeUxvb2FFNCVmRXV2N2pLS340e2Z5bistN3Q2bnVVKS0qd0ZsIyhua3cxJEUjfF4k
Q1o8V0MlYGlnZGVuYzkpCnpfKmdAK1B+fERDa05jQ1o1LUdraXE4WVBtbVpOV2VWdGtXUG1lSEI2
R3Y+KiUhZiMyZ3c+S3V4YFV8NWRSalooVAp6aktLZztZPSZsPCFzc1plczd3K3ZnKE5eeFM9JHh8
MCZwPUxJMVlUOEh7NUdYRFV2JC02JjVgdU4zQT0qUStQNVQKek8rSTBqYlNKfmYwKE4zXnYtYHg7
UXghaERMWWY1eihAVylKPTF4dkBFZT1+eXJePnx4a0ljPTN0eDl0PWY5fSo0CnpOWUduN0w9X2JO
dWF+YT4lXzdqKXdXV3dNTW5JTCFHO31XSU1qKmw5TTl9UXdWQXZxe1RkJGBqIypDbXM9NHFTQAp6
S01QQyNmP0NSWjVGc3AtRjNObkFVQyF5ZjM8THJDNGItViN0MWpFfSgjfSNJaVdVZFp3Z3opTUcx
X3lpeSZtIVEKejQrOTZVc3JYbz1mcXIlQzFaVjwhZD84YUpmU2U1NkN5dXIhLSlJM3tySiFjKjd6
fn1eWVBWPk8rKl80Oz01WDBDCnpDfTY2aiUrQnxAPSkzaUthWFREWnt3MkA2OzVefCNPTHpXNlFg
Yks0TStMV3klbDtnSjlHVFY4Y3VCNG1AXy1MZAp6WjB0QE09NlNTREl9U2I/d2tqPzBGR1ZHYHdX
JEQ/Qi1xSHpjeVJldnNaSXZLP0ElXlpIKzl0QSM4X0V2YDtfYm8KelE8LT1APDNseE17UU9uN0gr
fFRsUHF1TDQoUD9SQzQhV2R2PFhPYT1MISV7az9tWExQLXkwfDg7cEdMXihOYiNOCnoyViUmVmJA
MyUjYj9sKn44I1ZvKD9IfHU1YyQxdG5PeTxVd0ZxMlJkdlkySzMjZjh6TV5DTlFhZ1VGMkNMYU4t
JQp6YXUldkFpblJmSHorMkRBSTFnaHRZPktnQ3twOypIYk9rNlUmZHZ8KTxlNkFsaEdVPHctZzty
c1d1XlVrR2B9WT8KekYtYHJAd3x8QmNTTkBNa2RvaXZSV1lUQFE/YGp9VCEkI0BPUWdpekteI3Ny
a1UwcSEkPE1qcW9fQ2lweHpDMWhpCno9Rk9YbC1gYD9EbklPX1hsVFNIcmc8YyNqJHtlK1JAdSFT
PihaUCpLZ0dRUH5wNGVGVkxNWWpkR2p+bV9gUmBPYAp6Uz1iVCp6ejB+YnpjIzhgWW8tblYwcHAt
bD1YbVFVUF5pWStndldZVi1HfEVGcV40UyFuZyQ2XzB1bGs5ZU41VkkKemB7N3I4IyRiUiFSOzVn
RSNiYVlZNituU1JwSTAxX1EyIzYkXlF7bndwP3VVVXs/QkV3ckx6V1g3TlVIKFZ2SWRKCnpQN3x+
XmZEI09IPyNqVX43UCpnYzV2dGJLKShzcilnPD1LKWZ8a29yRmB4dUUmKFZPbygkeyFSMSg0UkV1
aHpAKgp6S1NjO0doUiFmcjBteyMwWERMbTEwLU41YCQ8V0JvOV9aNlBKd0JJVE1Ie310UU9gI3lo
bztyPUlCaCN4XjlfTGAKeitTK0hMT3lQQ2w3UE5ZQzhvQEtwVmskejN5Izt4YzlwQnZ3fEpseDVH
MmNLb21aOW1pRGdfaXtCYjBsKj54Oz08CnohPz1ZI0Q1JWNAJj8+MUt4Zno8SHdsKzJiUCR8RUVi
NEUqU0dENlFsYVJYWmtvNjtnWkdGWWFQK3hyZ0k3MndhOAp6b0QrKSEjUngjQUpib05SQmp8fW8j
Ukc9QDRSTD59eDEzUVglNVBhT2FGUmJjS3xIYSlTS2Y1fi1MNih2JU07dGkKenBmKkx0YWFwJlVA
fkE3MEVGc19xNyZGNClMT2BQTFdecmx9MnNfeWlPaDc+fVpIYVEmK2owUHUxPTdqeWImcEFyCnpX
KFNzYzdoenZ4bEVRV0paV24xYW03eWVEZnFEdnx2YnFzXl54Q1lidj1rPHoqYmpjUEJSfVUkN3sp
SXYkPm1pJgp6P0FzYWohV015NFkjSkBte05vMkQ0NTE5eiFLenR9Ty07bTVoN0FvZXVWMjUwOSgh
V153WWl4RFlWbkVqb3F3MXcKej0+TURRLWE0ZCllP3M0d3JmVXQ/PjtwUTU/MEVgI2lDVG1sQjVW
bmF6ZCFCd1QxZzc9bHp3SFlNVUxAQT1pZ1daCnpEeT4pVDhoT0tRZDJhNitKbVRWV3VseWduNSVn
RkNPPDBPMVlnQ3NLaiUmNHltZ1J+JGxoYCk3REBqMj9mcVhyOwp6V199P1ctQTFQLS1ULTNwck1P
bzI2Yzd5bjN8cmVocjlHJntWeXhxI0g8bX1MO29HMkR0Km90fElnN1BYQFltRkAKelA5ZkM4OD4y
ZjA1fHpVNE4lME8tM2t5PTE0cyoqUk9yP0txQ1V3ZmZOWlhhU1dgVU5SNiR+UWdjIUVnK2pVJT92
CnojM2NkeHFJQT8wSXJwe2NqMlMtXzdTPD08YUM9LW48YXU7NFBxIVJFMndhfl5IMHtZX018WEMx
Sy14bztJLW88OAp6anJBYDI9PF5EWlkhN29FIXRlc3c0I1c8SntUJnllc18kQlNMN25fcWZPMiVh
X3NwWno7VHpydSlkXkZwVzhHZH4Keig9Si1hJkBqc1lTXmh8NFBKVmdEYT5GJHVePkE7dFdgQT5O
TkEoc0JHMkElang1TT5KYGRlS1dqX2lCQl9fTjVHCnozUk5oKD5xYFF0TURsfkN3WHxJRWc1OFV3
TjVlSn5JPSNNcHE3Nmp7eEd2eTkoKno2LSV7RCYqPj1LSUwqRHI9TAp6NmxOQmxZTU1HbiVyXmwr
IUc+LSVESFZgazl6UEMrTStyKzZifTUzS3B5OzQqQiM+NnkqJTU8b2hFYWdCTmw4cWMKem52T0de
MGJHYitfWCtHaXh+PkhuNipRTWxVYSZERVAhUndHRjhXWkFAVXVhP0IhRVd9SXUoQn04JExjVzt4
O3h0CnppdVQoM2VMPjNEKGxRSl9TZ0RzO1NIfSp6ZjJqXzxRUlZMVTFfam5abl59PUczVitEdHt3
RHIxZnRITiUhQ3wqVAp6WnZgcEBxRTEmKFkyQyZ2ckFjcmNKNVRGJXFaZlVlN05tbDIteE5TZShB
THU4QVVndCQxOWJPQzd6WV4pQ1EkOV4Kemh6YWAmM309N2s9PmwjQmFUUT9QWnwxUXJsM01LZ1N9
VDhYWkVaV34jVVJOKDh3VzlrRiZPNExoe0gtc04oMzsyCnppel9NK3VyYE9xX1JaSn5sPnM1U2RI
MmJ6Mk4xMWFlUDlsejA9QCk5MExxQzcrJWw7NyhlTkJrKW90QVopUD9ZWQp6ZjckNmozSUsqT1lM
cTM/QEhnUyNnRkhDRWpGRDVUZWBkY2kqdnVyNj52ZUElZGtIVnVNXmQjZS05bWI9QHtgJEoKekVH
LVczZ2tRV2t2NDlmOzEpcW45aG8rQFM2O3M5bzx2LSN4dV5WaFlFdlRpWjJsZ0RhTSQ1e0l6fk4l
KnsjOVUlCnpASDlGeG1MTmI5ZkxfcmswREIqN09GJVY0c08zPn5FNH4mbGFqO1d4bjI/cD84RDhN
R2p9YyNPcUp3PmI+S3EqJAp6TH1wRSFJKjkyemdWRjMjP0k1fWNgNW8/cXo1P0RgcVg0Mn5fZ2NY
d0JPKVMjJUdlazRrfkBuMzZKWjRAbX5oNncKejRtPDU0IVNSfXFpIytwJTVpPzB0SCFmN2ZPTT5H
JnJfR1Ixe1hROVBuUz84ckpGU2RVYH1MUEZ4KG5jMk9AS3JYCno2Y1E/eStxNjtPSj94ayFFWUwt
bT5WQnRnb2x1azk9QiZsaS04eH5vem81Q2pTemchSC1YN0pTOFR1fnRVVW4wcAp6NiF8RVkyfmI/
IVEoNmBtZDBeMU4lSURMc2ZfSF5UPzBTNmlFRztuR0txfHg3VWBOcjxqMlZlIz5XZlRVdn4rYiUK
emVTSzJeI1kxQ25FRFIhJG9gVmRqa2dLV05sJStaPHYkbEkzV0VPdmRUWGtpK011T0hPU0FffnU2
aGxgRVFBRGtUCnpiT0ptQW5eOHVXQ08rUE44Wmxab0V8ZDlgaVRCPmZDaFZrQW91Z0heWk5+Nkcp
PDkwLTYkPVJvKEtheVBPNj5zZAp6PC1oX3VXPDJhLT0pYylpelo4dyFGUW58PV4mTmYoUFZsWkBv
QmlWP3VkY1NSKCo+WERraWZIYU5GOW5SeXRKU0cKemVpQ1JiaCFuO0UjTl5xMTl6NFR5RHdHXkhl
Qnl6QFhKWnJMVEhSS1N0IS1VY3hPfHRzc0hnfVMoPnB5cnItTUJZCnp1I0xnRmcrKWsyKy1vZnNS
bT81dyZIb25+OyZjYF5JYDdianc7M1JiR0lPQ288Q2d6QjNtfE5BZSZvajR2WFNmVwp6eE5XMjxP
d0Uhc2F0JEJpdEdubG81O0VEWURgd21TM2FPWXUzLXQtKDEqUU9nVSpCMyE3Y3UxM0ZWY2ZgP3Vr
fkYKek90az4yeWd1NztwRChWYDMod2FmeHl1ODU4S3k+JilfWDBVRF5nTndtdClUK3d0YSR6RVUo
NCFMS3tEbzRUIW0qCnoxeyhxQDVpeTE9dGdJOVpVT3psMWJecmVUQnlvP0l1KWglMSQ5Yk1zPlI+
Z1IoRGAhWjYkND9XPDNRJkxvbHs3cAp6cD5uYih7PHJObXNyOV8reGU/NzVhJGBuMXRgUnV9V3hQ
TGFGd05wZjtMKmp3ZSk/TjQrSXtAPEtSaEBtOWMmRD8KejkqbGFSckg8ZU9OSDlHYjV8V3t6QXRu
U0c7dz1mektVNipkRWZWWTQmT0c5SUBNNGlTMVZmOzF1ZUZaWT0rVURtCnowODdEdVl3SnB2LShJ
d2tZREdwWjQwUml1YWdVS31iZ3w4T3BTTkh4ZlVycSVpbSRNO140bW1YaHt4fDJAPz8kQQp6bUUh
cEI9NHJVWjhGPXUoWXt8I0t7bDhIclk1ZkhJMj5OcT47ODVyPHxDO0N5Jj42YmgmcDg/SEdTVVR+
RmVXcVoKelJGVEhoUiRYfHBKNFkwSE1KY3pwUCpJJGxzS18jYlNqT01YZz9BQ2dDR2JLaHBASEd5
TUB+LW5Fd3E1aUt1e3BBCnpeI24yRHdsfmB0VUxvVGlCS1hhOW9fV2NjMjk4eTUrOSlNMSgjfF53
Tj8zQWQ/aXxieV9fbVdqLWRxSnNXdiVATgp6N1dxO3tWfWxYXnNVQkUqa3JycG53PmQlZmxRWTdT
bEleZnJwZ29QZnlefnRseWR1KSZxdTA3cTU5cXRFS35zUiMKenshZXNiWD0pQ0FLVFk7JUA4Z0c5
cTE/WSpody1rK3BzTmlQUWMtNXtQYUk/ITwhPDdPSVErcUE1KFA1cHJQLTJHCnowTS1+fDxXOT1C
TTxUOV5qOUlHNUNkUzRBdUdQbi12bWJ5aGROO1FoOXZvfm1VUjk5Wnd0dlJlSFdsb0JGRUMycgp6
MD1PZTR1P3plYlVKN3R4bkRNaHRzazx6dEkrMCVaPDwlY29KTTFUJCRsMUlXMT5xc3xTX3o3YU4w
QDFRcUNUUkEKejVIPkhMXmRSTXlwUHYtR0ttQE5yY2t2bjREcW9IQGZ0eXMha2k4dUg4U2YoYEJt
fFM+e2ZPPVRmPDhkbntibD1NCnpRVHpPMnsmKTYkeEJ0aWZpUktJb2pmdWFneiMrOEVaPm1fOHUx
UUZJZj4/MEdydn4zOz9WZih8PU5sU0QmWVkrVQp6bT9zYDVhdkNLQjFuTDMxeSoza3M/RzY2SXl0
NWNjLWpKaktJVGxkcT5NdmI4aHZpe1dndU5Yc2tMXzNNeXdBeH4Kenk2b2QrV2FOKnlAeldnI2l5
YWwtK2dHeUdRZkU+Uipab3hDOEhKdygwZWFycUdwQHpOKGVXa3RFVEQzSW48TjBoCnpyU2lhbTFy
VW1lK2NKd3FONlB1Y0hiP20wUF9AQ3Y+YmJwJCVaYSRrVjU1M15Kd3pNeW5jbDc9YCpUbiNNPS11
NAp6ZSViVnZfMDNKZW59U2FpQEx1I1RTa1NPRm9UKWpDOEVKX0xANnlsYnFpSCo9QnkhaDg7eG5A
KURCeGxLPDdiUW0KeiZQSVUzTTJPVmg4NmMmYzNoe31GcmU8Yk9gRi1ZPDVNfXpSTWYtRXJ0bjZN
WlZDRDtqWGQ1QWopSWVfLWMrUWBQCnojcGkrUilrSjdpXnViKG8xeFVnbUAtWVU+TlR5fnp4T3xz
fjBpRzFuZztqaENGTzd6VGZZekI4QlBhKWghNjJDdwp6elBOeVZ7PmhFYFpqYzJMYk5NQUZWQj1g
dGpkS1UlKUNjfkNoZDlJOFQqTGojcHM7fGoyOU5fNnR9fWxCWH5+fmwKej1LbSZWVUlwYW4wVU43
XlZRWXBtOTtKZkY1eSVmRHRJYG4ldSR7NUcjdzJ6fkkxYmtCbW9nTSRXTXwqYytXTEh8CnpSKz13
dj5mNDNYLTx3TkFLaWIrSHBjK3xpZ2tlbHA+TlZxaW1ia1VGdzhtRV44ZiNXUVErUTh2OHlXK25n
VGZVUQp6NSYzWHFJVlkkZnFXfTlhaWpmNHxUYCZvcUshRSNhK2RJditjWSU0PC0mTUM0Y2xjNUBP
T0YxUSpkQklteClwUm8KemY7cDVyT21NakshS0plTkZ4aFI5enNhKGVeYWFJdzBrVShVMC07NEB2
QHhwMEdHeGlTWlZMMyhqPyhtS1J0JFJSCnoqQElKdE4zbXZDUExGekdjbVlJI0FPUnpkJUB+WSht
PmlIJWEkdTMlVGFnM2t2PDxpU19HcGVWQmtUPXlyWWtmSgp6VHFLd3NmYTM/NTtVJTRCV2ohQ09Y
YmpuJmxGUC1Bdio3KEtFRmBxRyhuIyZHa0wla1c9PHZQRzd1Vj4oMHlHVkgKemZ+UExzVGx3X207
WXZBWk5XO0MhUV4+JG9EJD9wWHI7OylZcVpHJUdyNiVfbWtyND9PM34pXykmUGo4ZD04Myt3Cno/
NW0ySyZnX190XylhTzgzcyFjNHJEb2J5aTNMczlvdThJM0lGNnljOy1EdWsjfnVUelRpV2ZLQmBq
K2dwTWV9awp6TW49KlVWX0BEQnVzWFlLdWJHSz1vUXFZbzQzTHpOWGFuRGE+ZXYwREcpVDVBc2V0
X2pDQTdBN2gyM31TNEE/SXUKelpwKntTNjlGYzdJcmlQWD9CXllgeE9HNHVwZkxqZ2ZWX2o2KWMh
VF9rR3EyeE1gSjVlODNlWVR7VFVCQiM0OU0lCnpESEhWcEB9TyV1R0lZaD5oT1Q5ZmdlRnQoanQ2
eSQ9QEdHRip7fl50I3VDKWZqPll2VkJJPSlMMm5IeTtFRyNMeAp6UypuOVBRZiZyXmlVM0BPKSM3
KEI+KD5yTDFrYEdmO2xRMUEyXnMjeEdtPjQ8WWdNemVrVUo8MDAhbWkjQl9OY1cKeiR7Jjs/Wj5L
aipQTShFVDQ0Y247NEV6bWI0ZS1VOGYmYE1+QT1qc3Mlbyg7UjRwQkkrbTxpWW4oMyNOVW9nKzhS
Cno2MVhDNzZaTl5jWkh1dTV8SjVmWHtVblUhQk82WUNJVnJZWUAmMjFmSGlDemltVU1FZGVDXyVU
enl+U1RvKW5uQAp6SVNMeHJoPjt7OGF8UWVjbVg/fm13YnMzQDdPOSF5KU97WVg5ZSM/UWBkKXpz
cm45K08jeE1qZGJaP2RZUF9QekAKenhEI3BXXmBBY0tpPUc3NW8xRHlBUiNzTndmPytedEw4Un5+
TjBoMENyc2xVdFM3M3JWRWNPY21yb2djaG9KQCNRCnolPm5ea094cWpjRj94Smk8PVVjQT5ES1ZO
Km45Qnp0RzUwXlBYQnI7dTl7UCN7fThnVzBMdmd0UzhTa2AxU3QpMwp6UlY4KHltKG1OYGE3QlVL
QUVCZHV4cytpcnpnOH56dHpDZlJBQXFIR2FnZncxSmFMeiR3aT43cmUrX1VvYytwb1MKekJ+YGcl
eTBGPXxMbXc8YGoqb0wzWmpLJTMhcnRCPDhRVFhGPUZfSUV2PlEqaEs+QGd1NUsjcEUzfjRTeyE3
JVQ8CnpIQGY3TEIpbH4ydFVWJDR4VjFNY3I2IWJrVVYjP2dUbGlUUlRjR3RUWDF3YmdYbShKfT9L
U2M4VnM4Q1pHQTVIfAp6UnJKNXV2Y01nSTwzIXk4TVB4O0gxUWRZdV9ZdDx2YENqNH5LaW1kP3VQ
b1E4NCZWQlQyVVAtUTE3S2FvVjFVP1MKeiQtd0dUQTt5QEBFTm5hMVRXRDllRk5DZSM8cFVrWU1o
TE9QdjJ9O0Z3R3s5bEZ1dWpFMEBMXj56fkIhaFkyZHFVCnpfQWojU256Nldrd3hwO2lQNTJIUFNY
RjtuOH10UnRUcUwzZXljLU96UiRWKnY3d3JCaFIhfjN5PHxISG81dyNDUQp6NEFAd2dWP213K3VP
NjFMMH1FPVE0NWZRR29RTlN6OWlEVXM4N0YmOGFeYj5XZnJJdFo7bHwwbTRrd2R3enIlcF8KenZB
c21VTSFRNDlMdCkpV3xHZUFNPVB+Ti1WaD12R0E4ejdsaz9oYUpnIWY3Vj5FMyp6a2VaS2NzTipP
aCZ0I0w0CnoxTllmRCt9RihSTjF2VzYlN2A3bU9aTG9mLTJ3ISk5NTIjR2NDKW9eUEJEWTc/fmlQ
fTNlYzlZUDJocVlmY1d+NAp6dEtSdFB2MXdBTkV5NkQqQ3gqJms7RE9vLSgqLUVZKFEjem8hNGQ/
N2JtaHZHJnorcSMqNEVZX0BLJXFeNyM/RSQKeitXUDdhVG82b0lVYmx9elZybylicT0pYFJNUz11
Q0grIXVmK0M4clZUbipTNXgqMmpxPygtUk9rUEkwcl5UM1pGCnpLdGFEQFpLJHBkV0c/Nm9CLUpK
JXAjbG1GQn47QUk8O0MxO2lYNCo1ZGd7SU4jO28zZFpFQE9qNEpGRHlLSE0tagp6Sjhrc1JoPjUo
K2N3OXQzSTwobDBTZzgjXlIwZ1Jya1QjRl5EKU97QWRfM0xAX0M8P0JOI2B9bkFkM2BfVjY2QS0K
ejRmcyl6Uj1rfllrTU9NPy19PXtjKE1UT1ElfGVwMjJ1eUs9PzcqZlYkajd7Rm8hPEpjU3R+MSky
d1R0PlF8PTJ8CnpeJW5vKGJscG1iLSZQMzMjXlFsSHRWNmFiMj57cFh1dX0oXnlvZ3tvVkRsUURt
ejVmWCgyeE1ma1ByWkxWOU48QAp6VCtAemtLeGhTYDErdCZsSWYmXztRKDE3eiNlVE9Sc2FBQ1Jp
fjBQUTRQPFdmOX48YTs1O01jYj0zQTd6KGV2ZXsKekxHR2YqMntaWWZSaW42MS0qdiY0TEt0Rn5K
b197I3MrYEhIcnJIYjthenkmPSo/ckpNQT5JbXo4cSQqQlB5cylDCnojcVR7cWZ4TE5tKFZxcDdL
WHlMSzZtLV9aRFpmMng8P2N0WXtLb2QkIyhvMV9eSkBXPj9yPWhDa0NjUmpXVylTWQp6c2tzTEVJ
YH1YRVlKbCVlMDlGTyU9Xmh3SFRiaGE0ND1pZiZOP3AyZllJTDF7JV8yX2VCPEpvPEBQYS1hWEs3
dXEKelpCbmRxeUo9SHhlTiVJZUwkO0ttT2pHKnVuTEpgeDVTJDl7K0lrZDIlWER+UTdvNmhMOCF6
b01JRzVUJTJRdjFwCno4ISQzNj90I0FoMjhWT0dtcmRgJEc5Xk1hK21TbFVaTWMwYlQ2XyZMdHdC
aUdBNFE1OTtzV0NQOHtPWFBpRFNSewp6NDxgOVZrZXBgfXRFc0pSbDw9NSQzfHYxKkxZYkNlXldo
JWZQd3lIQk0rRV9gbXQjUSlufCpZVkkjN28+SCh+O3YKellSRjM0Z0p0SytjUjJ4MFc2cG9hR3ox
KVk/d0gmVzIlVVQpNUo0V1pvV19+eUJ+MzB6Q1B0bC1qYGImP1VRKjkzCnpFa3F5YkU8XnAzZiMh
WTM5N3omRiU/PUQzKCszM1NfZDsqKCROWVRTN0N9STtXKTJRN0t2NGlmMz9tQThEflJ+cgp6PVEx
IWIoMWs1VXFnNW5SWEVXanFDUENvWllzYzsoR0Iobno4Q3tROE4oKzE8QTxIb3tHbFBJKHhFRkE9
TWJ0Q3kKem9kRiQ5TkdLUkp2e2hUam9wcHs8aig1JVBoNGVEY08/KGolNEtWKjVwSCtXSDkyNzRR
JFhPS25JYkktd09wWXdiCnpfREVHK3IkcEdXTUlSWiVxVXdyOTs2MGImVVhlKUpjQn1VbmZkcXBQ
aVpIXlJgN0Rwd1dWYj98WFcrc15HNmJTcQp6cGs7dDYzWWpWcWsrMWRqMU8kTkNVQGd1P0RndHFW
bWojbHp3d35UMllpa09CZ3ZLUCtaNzBUT2UpSFE9SX1HRGcKeipmXiUrIWRpPiV3aEB9Z1ZsOFpK
bCVIKUlOQ2kpYz5fazBYTHA/RzZmSG5IaTskX3tMWG1EVUQlNWtzR3U9YW1LCnokKClwZyReeSZM
cmwrfSNsVzNaMHhfbyVaLW0qJSV4OTFieFZRSHgqZW47Q2BoNXw2bEBZMVQzJEdOUyEmNzdgTAp6
ZlJULUQyOVVnN3RAbWt2OHpCbmskUjZtKHIlI1c5P0UhTlFQe2d+N0NPJHNOaCs2eyFVQH4pQig+
QkAqNUJ9bWIKejtCV0RyeHBhV15zd3ZfTUd7aXV7a3RkRD9GJD9mNE1DPWYwNV9DQmMtQE9WVTFA
NEtEWVhiZ2ktWksjSzk/Q3V9CnpYKnYwS0tQY1F4WVB6WCNxe3lMOEZ4Z3FZOzBXMVNHODNaJGEo
eGR2QlI4R1dEXiQ1WHclM09zQEw8ZmlrZWItVwp6MSFUS1g7SVU5NUM9KWNxQVFeJmplSl5gdXZB
RS05bj5oJThAVVR9djlmaG9RZHtXWSokQilWMk0lbWRkeiE8KDUKejRzeX58YjBsLWs/czdIY3B6
WmRXP0YzK3Mhd2RrbDA9dWlRdW4/QHtlQCtWXlpXPER9MC0yUGgjbntHJTUmJSpwCnp4cjxveD9p
YkpKY2s7e2JPREpFJkdxcCY7eTgySERgflBOQyEoJCVBISYzZWkpQWtCY3c9Y0k2dlBFPWs8Uj9H
OAp6SnJCWWQ8T1JTREMlQWR7eT9pOVgrIyMrNXZTKTlCWj4tXk5zb18rZz9AfU0qPkM+PFQmfDwm
LTE/VHcmWHZPUlkKemxkWG1hU0wkfGg+dkg3cXBoYlokajQ9SGpPdTx3WUFBK3ohQXBtOTcyQDwj
KDhYRVRjYWc4Qz1oPnU7Tis0dFZACno1KiMpI0JmfkNEOy1pI3N6a1laQmlDemlNRldjNTFJfSRu
LSRgTFY3ZThUdHdyPXJjJFFBX09nd0FfZWUqUTwpJQp6VnElIWktTWVrb3plSzhUUVZGVU1ZPEl9
ZCQ5I2pPZmtaVDFeWl9iP201cXF+bFE2SFFBVFAzbWcmWms3ZSlqITIKemNfM3hBdEM0bXFaVV5t
UyN0PHtSN35iRkNadj1Xa0ttZWhFKkFnZ0l3NGxsSUBiZzJvMSFPNjNkWX1nMyh8fHRFCnpgcmtr
Q0VUdXRVMnNVblJGQX4xdTFkKFc9PXBFWG1RdXRiN0lhfSg3Pks7NDh7fFYwaXwyP2I0MShWISVt
amFfagp6Uj4xfDxeWTt0XmJpJnd5dzJUe2UpQ345b3NLKVNQSz9TIWV7U0x8ekclbkJ4KmNWN1oz
cHlOdEhoZEplYmRyPWAKemlyKl4jIUJIU21rMVE7fUdnQTNDXmJWO2drUTt2ZFlmPUV4Zmw9LTIz
JklVMyglXztYRGZhKEw4R3YjTzRUczlLCnpFIUJaOTFMQW0xMTwpVDx1XjZlRzU4SmYwZDtlVCM8
TCQ4amYzN1MhQSZmUklibEVmKyY5eEVZbEV3YiglaClzOAp6TTQlNz1IXkRtc1VKZ1N+dWtRPXE9
T3JmdT9uRDFJaDlRWTszPmpKa2t7KWglVG9uYGg0eCRBQjhgJDdaa29TUzgKejFfVkM5O0JiUU1B
QFcrbE85dVc4T0IzOG1fX0Q2OXlNU0xSZUR9clJYJFgoSDJmPjB6ezElQ3dSfkBxaHtyJXYmCnow
QUBoY1NzTkc7WXVoIU8qQjRLPTlUdHhze2l8RE95TlNFJmtJRHwhN3VBPGh2SjVvfFJ1TWtBYmpr
JFY7QUFzcgp6dDFeaHViPz9XY3tmT29TU144WUk/R0JnZmlmVT88KEZVX1hzXlF6QktKZGwwMGBv
dnBEdU9+biZDen4pcmVOckEKeldnVHYkSSlkSD5zYkdmamE9UzRrU3czcmJGaz1VMEliN2kmbSp0
ZkUlSEc4eU8oJDxIb3FoaktVQ1Z0bmk3eX5FCno3b3JtM3tiayZuMEw7Kllfa2tBX0l3Yjs8MU5m
eVdlUilqPT8yWWBCIyh3QWkka2h7dDZQOSV5WERkK19oJFFZaQp6KHozYFYlfkcjZXpaQk01T28q
PDFTZm5YfXBWOFpwcT8rUmU2KD5BVipsdHBVM1F8cmA9XzMrQTtVSmxxOzxZVFEKem5rO3E7P3JD
cCg5WihfNkVlVE1pNUZnRCNZV0djaDheU3UreTtsZWtGP1FTQXBlfUBvN3JhVGBhJDYqeDRXdE5V
Cnp0MzVDWSM2VyQyeng9QkBVa1BuczBtZDZaZHIoUnNaMUp2cGV5KDAoNEEwKFUqUDtKeFJCVW5J
PVB6SXR8OV4rZwp6eCpBYDA7LWxJPkk0fkokKjZaPEdKLUt1R0JgR04+dW9DY3ZwdV88WktgSSo3
N3w3V2B6NSFEbDFjSUlsQj9jUygKemV3T01nPSFkV1ZPPTE3Kjk7cWdZNnR6fjJKaWI8PHJUS1gp
Kj1AODdAZW0kPzQ3PEFPa1ghYDlDZDcleCN5VylTCnp3cEJwRDs7LUYwMys1Xm05R3NBVzk4fWRa
VW05aVZWaD9eNC1Uem5ZPHt9OXJYTUF2Z1d4VW9DRXpXcE8yckZYegp6JjdBQSMjWWoxJE8hdHAy
RjcpVDc7el5kV1RmazJTbXc0ankoU3lCPyF6N0BYNVdnUyp1OGcyeGZWcl5PNytHMVQKejBhP0sy
SzVePj0pRDM3akZqKmxTMjM5I3BHRms9KEdkbm04JXBNeHpLP19pKDBOMjhKME1pYVMxQm9eJFcm
fHBwCno/M2k3TEJVKjU+RE9uWmlzLUhoO2t0YDs4PE1US0omb0tCM0dpQERseXo4PnBAa3VZS15+
UyNAPy16a1ckez1Fagp6cCZHeWJMUz51b3JjWUpkTDFqaythTzBQRHNKQFEhZ3JLR1Q2OHhqeWde
RU9oRVNyXztpJTlrQjtPVD9xMF9qeVQKemArXjZUNXNDIz8zbWlZSHR5UDYjUWljTXcwbGN9b09k
TjtEN2xZUlR4LVohZ1hreTYwSFZWTGlnLUhoXjd0KF5ACnpJVX5tSUA4OW5rekdQYTBAQzN7bm5v
R1E2M2dTQVJyQXpRaDhRfCNhO3Q2ZHRhKl5FJj56bDVkPzA/QXhUd3lQYQp6Ymh5bFdhUTwyKEB0
cEN1MTV1MTNzKHQ0c0hAP2N5YnQ/UDwjbWslR14zWjEme3A5KCNwVndjbGlYXnRkIVh+XigKemV7
Myh0WiV1NyRjdmV5I1J0YkRtRiQzfSNWRHJKbWc9WSlQMFB8ZElTXyZ2TTFVI1ZUMlMhSXtLeXVT
eiR0fCg8CnoyVDJCdTZyZEV5cHtXPmZCT0tSJEUxLUh0aGxoSyU4OUxGPS1ybUZrRUlWQTRJKl9r
alBzWkJBTWcoWXxyPWRoagp6dzhfVFJWPVRpOz54czRCX3xxTEQzYiE8Mkd9MU9vQVNwdWA+JXU+
YkxgTkVmalJUNStRSVZVVVByKS1+M0B3JFoKelZ1TU4zPHZMWXhuPzkpbWx0bnp4b31KPGNDamZs
T0EzdUlQI3MtO2JMI1RZODQ0bHJsKWRxZXxxZ1hpRUNHWWwyCnp6WW1QQmNOYzs5Zn17a3VpSldq
TDslSVJJMVBMKWxwSCEkIVp7JmF0dFZ+I1loZFlMYysoPE5PZHAzMThKMWdhPAp6Wj9GSm1YQGdq
QER1eXh8ZVNROX5nOT96NUJLZ1I8eWRjcEUwZjV9PDZXc0hvQ3lKS3hQdnsjSD4wRGJyYDR3SGYK
elNJPFd7RmZeZklEclN8dT0rcSQqZipQdD5gXzJ0aEYkbDdrMWlWI0tCMyQ4VHR4Nk0/ZX1AP05B
THByTHg1fD8wCnoqJm14O19tR2YkRlNaUU0xYUxiK0N+VUFYRUE+PkwrMkU+eENSU0RETlN1VnAx
fm1rSXZfYkwjSWh6M29Xc3JPbAp6Zk1pZXJLfVNJd1dPWTQkLWE1VDtDZiNsU3F3SnFAQTYtaXpY
RTFUbE1PQ3VLYyE3Qn5NVXlKaFJ7fkZydW5hdXMKelUkZjhYcztBMjtpZl8obmYmP3ZaMyNze2s2
YlU0KyFqSW1kMXZhZiQ8czNHNHhJZFBxa3FmRGhXTDQ2UmI8cFo9CnpyPjdZak0kVVdkSldvRFd0
TXV7LXIwPD0wZGh+PGpMWn5MSEBAciF7Wk9oQGJYb359RSRuTSojNVlMX1UwSWRfQwp6RkNxYVZm
KFlwNWgmNCVmTERlNDg5I0xTa1pmJUpHSUR6djRgWW5HMil1cUV8RE5SMDt5PSojciU9RUxzUzt7
ayUKelJwZkk5dlVwQk1jSnh1RHcze1ZeP2VBJWVWcEclSCY+d1lIYkFFaSEje2dQfUdLUFJOakE+
RWx4I3ZgTXQ+KG9yCnpkYitHaSEzUVJtZDViMj52fFB4cW1oflg5OE9qezZJaWpCbTBiVTNzezJP
IXA0WUtuaU1CbnNuYWQ+PTwzNENMZwp6N1ZvV3o1TVp6e0p3ZWZne2taU0RQfE9QPHN+YjAzYXw+
I31nSUl4Wk5OXzhXM0BfTTY+ZSZ3ditkUlBjRkVodTgKekhrZzJtNSZ4ZV5uPE44cUNsJE42ezF7
PD84cCRgQCE3I1Z8TCVlfHhwJC19M3UxMiEhVV9wVVU9SnkkbmVaajs9CnpPbGw7ZEFnMGFDX09a
flhwT3FNPVB3b3RxOH04MT1oOT53NyFjN2xYKmJuMyZzcHVMaHE1Yis2czZhMElGc0Nacgp6dXh2
MXZJQFZ6a2JDQUpaMGFnVSFvQmlOZSRHV3AqR1lHVlpWaEdBezxHTUghYiVkPERKRSskcG8qTmYw
czMhRzQKemJwSCFteXlWPlI4PnElfXc2Xll5OzwyLTl4PDBBJSVXbmNFXy1INksmdCE3NGd4Umpy
ekkjVS1gOFpWaSs5bEA7CnpJKWI3RFZZWVBLSXYxPyYzQ0BeXikyM1Y4Y2JCRSU3YWFJe15UQjdU
VzJYaGFxRFdvXnljSDBAJihFaFU4KHtFeQp6P2Qpb1l6VVVjUXE1Tk5xamhwS15JO0I8YF8ra3li
b3EwfFE3UTFiNU5BIWVLQFQxcD9iZEN6Pm9VfHpRM3lNO3MKej1UWFBXYys/NygkTE5JJWchUGpX
T2NvQl9PKHRDaEw5b1lWZ3lGMnpfVXs8KUMyUFp9V0BiQT9iXnZESEVfTFhRCnpxfDBZUDRCbWA3
WTtkfW8mfCRzNmxGKlh8YCZKYFFyJm8xQ0BeRWp4YV50N2NfQkA9TUVWSihKPntRP05oM2I5KAp6
c15haXFfZjJ4TG5YUFRVUGVEJTNBUlcwc0gwVHZeYXBpeyhOJEZNamQzWGUqcSZndE1aNWJ1TGMx
S2xZZzd7Wn4KelZUVmhmekZZbSVLQWkzVmpfJDtYNkU3XmRWbVFwZDRzPUdval8yU2FzfXloMVFr
Ql4kVWc2fiNPVTh+Iz5zcWdsCnptYilCam47T1NEd1ptdm9lRTZgKEJAJjxGdiU2VmorKD0/dUhP
fmRGOG1PaUBabFJhT1oqTFdxTCl+Zm5ieXRtSQp6TjI8O1AxdCZ6NG9PR3Bxbm9uRC13N2I+REpt
YWVoTUtxWml4NXdkJGk4PitoWjUmIXktSF97cWAke1k7c2leMjUKem9zU2tRYkhnVW1nJiVsXm83
MXxKMSUkQTloSnhVVGRybmIrRGdUN0lhMkVkUlB8dFIqJiVyMXd6N1hUfGJtODFNCnpCR347YSgw
TW4hbGg/bDlKM0tSeW1QZjdCY0cqXlZ0WiZ7S2YrKG9GRS18JmhJe0lyb3R7TlYhI1VXV2BuQjxm
WAp6QTlnTGRpaD8/e0lfbVVPO2xpcV4pVFpndSUjaEJ8PXZ9KkdySE1NXlomQSRFPTUwKUgrKCZm
JmVhdSQhKmZ1TCkKeiY1RzxNYzVJQzVvQXFFPHpJSmdpPXcweDYwOEJRKkhFcU1zO04xIUpXP3dw
QlZgOCRCRCMqRFU5MntLdWklbFMtCnpDTGdvT0lifkdrJVUkaEArYGAoQS1+SSthajV1ekZHU1d0
Zz4zV2A2QVY2b19lO0dgUTk2cCY8RjZjWWcrOzk2Zgp6djNmSzgqeGw9b3t5UGhocDhrWXBATEgw
Jjk0YXJQNF53Ml8kQT10fTZTNW9xZiN7TSNzS0tWIXl0LWdjSnN2OEgKemlpaU5RT3NtZFVBfWlV
SWlDU2B0MTJsPjAmfnM1bnlQSGVPRGs/PkdXMEVFanBsT3dybDBjRSNqTVhNek5PMkU1CnpSbEQt
RTI5N3oqMjIkYEQhNWdHRzAlPjEzQHAlUWpXVXdHeV55eTVJKmdkbXRNRjNFc0U1Z0VrQm1eb2Fv
ViEhWAp6VX53a0RQbXUzXmxYR2N1KjsjREt2VXd1WTZTSUBJeER5cns4djZDPntjdiYkPWxmaTx2
YD4xezdERyZ6WClZRHUKenNRNl48eEotb0k8YE0odlc+aF9rdnUofDlmKWZDKld1Vjl1VnF+YlA8
IWJCPEJwVjtDJiRLTkxTSF41X1o8aj97Cno3WmI5d3YyaWBBS094VzNVflJDQFI1aWpVSlp3KHtL
OSlzcSZPXntXTE1BM0FUOyt5SzV8YVVMZ0x7NHNxPkU/Iwp6d2VnemgxdHtTKmheZ2RpN1Q4fCFB
JWJCRSUwVF9VYEt3eylaV1lNKmwoLXo8QUlhSUYkbHRZYS1eZnpBZXd9X0YKemNRUGRYS2g+dV5w
aT54M01OXmFKSUcmdWdfV0p1UCFZNlg5Y1lJOTgyaFZQQk1QPzBiMndsM1M7O0hWMDl9O2FECno5
JWd+Rno1PDdVPGlFU3N1Q3YxWk5WK1okZjI7TWA5Yz1yQXVWc3l4TWNYfSNMRjFGMCtDQEo/Si1K
fGhJanB3ewp6dWZ0KV5HUGlOSnJOSi0yLSRYNmlNVyFmNmNZYypTOSZGRH1CfjhWZk15MklqQmho
ZWhPaW5YMW81RCope3hyO2gKelB2JmgyV3l8QnBObUxNQCorQ15sOEZkbTl3S2FTRW5+ZDs4diRe
UCh5QitTe2Y0VmQ0S0BnSnNKTVRaWXJjUDNHCnpEVHAtcnNQej9BKHBYLT9KNFkpaGxXUkhTVTgo
TikrNH1sJV9zdmp3bExhNkAjSSVLfiV4MiYtTTliUEZAV1lMZQp6YT1maD1XP01kIyQlNHh8YjNJ
JFNUQDs0KyVJSDtxdCFmOXEpZnwhamRLcCpxQiQ4UiE1cEoqOHZZU2htPzR0b1gKekteUSUrcVVY
Q2tvI2VBUUFibHhmKnxuTWdQRjxWa25IP1ZOZ1o1TzA5a1ghK0Jmfld4eXtXVWdKbU9WUHprSn5U
Cnope24rO2VPSE0yQWdEV1JyPVdGMHNQbTc7ZFF8ZzhEK25ofG91bTNSbSEmPGY/O34jKCRMaEdr
LTJUJX1tN1VJJgp6Nj8/QiFlbyl5Ky1pVmFWLUczS2Jta1FhUj1VODhTSEw2WGZ4WDRFQSV1fHtW
bjVyZT4ta3YpVDkpOCl7YUBXMFkKektOKXU2bGsxV1coKkw2PyFOVEBuYmd6UmM+aCRlPW9QRjE9
UXhpJDE1Tl5gNGhRcmN0eDMkM3luWnRQXlozOV5XCnowSTVKVmtnN3ktRGItNnRhQWN+PkhFN3M1
K15TME1kTVd2UyZ8WDVEcWhGUH0oYDtRT1c9dS1FQ04rUVRkd3djKAp6T3tsb3NYQE4lezErYDJh
aCo/ZjZIUSRpU0klNHJYZUlrSEpDYDUlPEY1KDRuZXFpKktBYlMwaSVoR29uYE8tKSYKekhRWEwp
LWApaz91Y2FtT2NIakUmX088NCgzRD5SVDZCM1NtJilrMytATDBJeihzXihsTUx8RV90fHloT2s3
QigrCnowR2U4cCZYQjdDNkFXfiktSlUqdURsfjJCP09paHhQbFFfTjl4U3pmbGFPRW5aKUooM3VJ
QFZPZXN8fk4rRiRnKwp6amdGK2I9QlZOQCR6Zkore2ttOXZEY0NDfkpjNiV+U1d1bzBET1lMO0Vf
U3plJHA2ODxMQTZrT2AkTyRWVURZPzEKelJpYUJuPDxTdUR7RGN9M0xQVm9OdnNNTnVyPUx7eTAw
Z1lEUHQ/QFp4fGR3JWFoQEJWWGQ8Q3AwYFEtYj5fM3g3CnpMYEloMFk5SUIyZiVfJlkkJVl+YCok
R09oRCo1VCVoYkxpNzVyN0YlbzthUF5pKmhwUXcwV0MySjFjZCN0Pj9Gbwp6VE8zN0trR3ZJam5A
cDZDaz9wYUdQa2RkYnZVQV9CPmFKNWwqWllnQ28rQj4lOGpreG47amlDc0Urc358RmZjMH0KejU0
fiNpTylGLSNTXlooZz9lfTY4QipkPlY0RGZSWXMkOTV7d3NJU0JJZlZjb199YHVDY14yQEBvNCsz
SD8tdTxrCnp5WS1ib3AyZE0hTz87SVlsek4hZyorWHNTcktlNVkjKGVPclZRU3VpRHYzZnhGbW5M
NFdoRlR0WWhpSnNneEBESAp6NkZ8IUxjNCl+RlJBO0JuMFNsKT0lZDheWDV3UjU5TSs9N15mLU5P
cUkjb3QpIWtNaDc4X1M1TW1idyp8SXYmaHkKemAmaFMwUlpYcWpaNEllNypKPkUmcFpwR2VMREx6
ckVtel5UbiRmKmglJD85M2xvXn4oRTxoI1VYSl4pQGhUTFhLCnp6e2Y5KV9FYWBrK181WHw8TEhL
bVdeLT5IakhweF90ZD13RlU9dHdiKFhiYTVaOEtPQmhWJSlAXnFaPGErWSFedAp6cyVAO3gyaTJx
UHFPYiZgMSVxPlBgaW17NzVzaC1SPUZMPnA0WDdqNm0xVmNPTTJOdjkwPiZ2cjRLPjRYOW90YGEK
ekJPSlVtKnZ3ZEZKTXh7a2VFMmcyQ2JlTlYkK05vOWNSJlcpPDZ1M3RWPzZ+Z3R9NEVJXlZkaTFN
KH5FZV9HJWlvCnpmZHw8TncjXjhHbVlUQTFBIT99MUhUVm1IZntJJWh2b1EmXzwqaUxrSCszNjNR
Jm9IRHdTPT1Ec15tMmBJUFl0Pwp6e2BicWdGSj82VDtORFdRQFBxYylENlB0KlA8TyopVUNlQW91
diU8SnMkIUFleEFWZDFpb0BDWSNyfm9vOHJrWT4Kejg+dlYwUklZeWJednBYfDB9Jjl3RVYqOV5A
dWtZZVBwJDZsUEFTbElATD1OWGVBZzN+akF+IUpjdjBxSz9NSTwkCnpOKG9IOGk0bnBSWDJAKVR0
UUFiVXdKLWQ+QEQocUZ6ST1kVGpoeHw7bW1lcllGfmdeTUFmanpVUUlJSWdUMkR5Vgp6bG8rYCZJ
Y2FpKEJBdUsjIUdsZSh4JE8yLWM5cUVkQUlvIV48SEE9KWxrWlFTbFR7TCo1MkpuaWdhRnJ8VS0q
eVUKejNjajhfN0w4d248NklEKj96SHQheW4pK2lacGtkSEBXe2B9U3NMdGx6aXx5bWRgalE+MWFp
QCQzbT8rcUgleVJICnpPS2l7cCEmPWhjZ3NCOEcxZzt6PFJnaUR9bWE+QHtAe0pBLU1KbShUbUAz
cSo4ejc/dEolUi1AKW8mVnwoTEtNPwp6TTVrN3dwTXNwK1ZgSDxXc0xqb0pteV9mQT52bHxkazJt
WGdeWGtlV3lOSSt0T3pCbjA5b19Hbi0zWnYrXjw1bHsKej9NTDVtYGhIMGJpKUxXQkdFe2FSTjt9
cVhsbHAkZDMjOGhUSlF1UExiTiVRTVJHUChhUDhtalgjekckY2RHP0ktCnpoZ1JaXjNGV1l4dWVK
T09kfnZ4cCF4Yjw1Y0ZYPDE8STQ5byZWRjMraFA2di09dmAmJnNMZSRAQWhUYWJWRDMoJAp6diUy
UjJ8NVF3ZGI4RDVgdlZ2MkNVPi1vMjN8NDk/RHk3VWwkZ1gwKHs8SWJMPDVEdS1vVVhjfTt0cDg9
NCU2b1oKek5CU0lyPU07UDV0WUMrSXokQWJzPmUjLS08cH4tcXBnbXlkVVJPRnglMjs5UjArMHN9
NyhubyM+UnAmb3UmPUhOCnozSHxjemZhZTk2Plo0QlMhZ0VZTXZSKDBTSXlPWD5OPWA9JUcjKStt
Vj1jQ3pNe1YwfjR+XkNUSl41QGxyUU1HLQp6emRGQ0FPVEdpNTJ8cy1qI3s1ezMoYV85anVvOEdg
ckNHVDRnPVdwPCRyfGAkenV8V0BgMDhLPEx2SmlzMU9afFEKemZmTFBaQSlCV1dOR1V+Vz1BMy1n
Ujd2YzAoVVZ1PzxZJig+ZjNUaGxwMSNnN2ooe2tqbH0kUldUVSVSJV9iVT0zCnpvJHQ0RjhrIVBo
eEw2LTFnQFFsO3BhOUdZY3RqMmBmWGVrI2s/aEBhI1N+UzlBbkhRcT5ncDx5UDxoKyNfMCUhdAp6
QlgmWmlaNnBVITA+MSUrel59R0pFZShmKiZKOF4pUzNaUWVkO3NmOXVhaXNmYGw/aDk8bTNSSEgz
ND5qUW9MOFoKellVZTkjcyhmUiQrUzA7SDA5aDR2Tl9fTTcrdFglayluZ0pybG5peFAqQ1puR2Ik
Oz02eVZheyVJUUdmb2M2MFg0CnpyI0psJEJBNClXMFpSTzZkVmgkNnJTQzBgOXE9ME57RVFPOz08
ZX1OJD42aXAhSVlIYjVgTT41OVA4MEJiJktFZwp6dUdhI05KI0U+Z2FATnBTSyZGPl40Z0pxLUtS
PGl0ZHN6SXJfbkc7a2FYcTxBM3VHP3VIbTM5XjFCaWI1ZVBAbT4Kek50QHlHYVhNQUV0I2pCfSR2
OCFMdl8qd1VKPnRjekIpKVFLV1hFZntHRE9YSEVvUnVVbUdgNHpUPyRPVFF0TU4mCnoqaXBpbihC
aUhwWnUpJkZ1S30xeWR3YnJBd3xnKStXSE9HfSM9KkVwV0VCOD5QKWVfbWd2YiZ4X0Z5T1V6PU04
Mgp6QytBJXM9N2o4SFlpM1doIUVTWF9XRilKPT8wPk5ZZnwhX1RUeU81LUtHVGNxKTshan5fTnZE
bXtuTzRrTiV1V0gKemQ7X001S2FwPWNeMUY4YSZEdT1fR2dtK3dqYXIqZHclKkl7REBJTTg/Z3le
PytKUH5KT0l5ZzglanBZeXtjcHIpCnp2LXF8UytxP2plZjR2JjVLeSZyQyZEP0R6V2c1Q0NkTVR6
blNzZVNfak48ak09WjgreT89IXpNQTlPaCtVT1hgTgp6UVdzSyhaOEZqaVM2Nng7WjNyZCMre3Fs
akpoQ0AhY3lLOy1gLWNTX2ZQSVcxMVVOQkpacFJMN0tzdWFmY1B3NngKelkhUXxgPGg5RHwjenNk
aSQ2KVRrM0tUfTUmP3F7d0gmXnFqeGNDbzFDNSo3fnR5JXFEdD15ZkNibElkKHRBPCVnCnopP0Ym
SntpWFR2MyFHWWpETnBtK2M8QWNfRzdLZzMpeD0qXiVwfFpHWnBsVXUrM0ozMjZZa1M8Y15HRkpV
N0Y7WQp6RmgjXyFeKigzM25ZbCVEd01vdWVhPUQ3emVtWnUmWDYwIzBEPDgoYlR+disjRn5YWSgt
Ukc0SUo/aytAb1ZebCQKejRVdTU7M05vbTNeUSokSWM4SkYkK1NSXjZ7djl5dz51JUs+azx7TWZM
O3dTa2pUQ2t2aDNyKSY1QiFkbHgtWHlACno1MFF9VVhVVn5EKDVTKWFWQCtUQEBhbVM/IXt9SD9W
aU8zcHo7JVc2K3dVOG1GZFl9MkhLQDskK0EmQ1NzbGlHMwp6SEdHe0RAbW52Izd0UUF2dG1oYmRs
aUYzUil2Pk1aZGFvdShPPlkrTE9YI3h1Z2tHcEVlYD5nb2p4R3xBWU8jPm8KejRpUkBnNnhMMmtv
c3YybkhGUjdVbXxnQU1BTnlWQl5MdTEqQElkNW4rd0pnV1J9dU5haFRHV1pGUGVLP3tPR09sCnoj
QGZEPngmSDJoOHomTDJVLTNaOXNRM0ROYGZSeShuKTAmekd7dHQtR0YzamU8YHt0SWxfZnRQY341
P3dgdDFsMAp6dSg3O1NmR3NOS1M+NDlBd3A3LTxGZDNIZ0g7X0puI3tqJiFlOGlQR1MwbTJ+eVZs
O2BaanhzUHIoS2NQMzZxYigKeispWFRiYk5SK0FybSMjYHFrcSU9MDdnVkRxUW4rMTAoMjM5akZF
UCEpayNyezhheShPZm4zQXoxbHQpXnR0PmhfCnpfJHJJJDIrfm87dUpeU0BpMFI7UDYzfSM1YGE7
TSFMWU9YXz1Va2Ngajdvc1ZXOEtwZGZXM2FGZyh4YWJiKnM0egp6eUotRm5YMTBuRnt8U2tLKnEp
RW56VkBxeTctOEZwbmtpTn1AMiRwa0hTUjZNZF9pKT9uZyQtezNweyZzLTY2WDwKejtHNVRuYXJr
bWwofCk7ZjdFKEk8THdpM3VfOSpLUGNrQWpsb1JaclNOUFMjKnhFe2lrLX0tN2RPRVhlMkt9JFBJ
CnplM2VmUUgmUEdpdXMmRj8/Znc/WVdgTnpeKCY+U2t3UUkzXkohPD4oPjwyMyRsP09ZUj9Lcj5m
USskPWJZMldWTQp6KiFoSnJvWSpXbFVgPDxJWjhealdZeHhaOz8wdWB8eDBzVUpjTjt5fSltJlh1
OHZUQ1ZaP3BQRytvSUBpeXl1QVMKejBZeF9eWUJHIThUY1UyZUF2WmZYYylKXjReVHlEN2NYdzt0
dWxtalhjMjczIVZYNVpUYXl4ITAqSmlifl59NGtpCnotZ2QzIzMoSUd7LTBXc0VQOTQoelRNMlEy
KUtDUU15aXt7dkNgbnxXZ3IxckJQQEhpcGpqQl51PzdYR0JtVG1Jagp6VzEtNDZlUVpAZWI7WWBt
SkA+O3xKemNOUDtjWTN2M3htfS0tNypebDZZdkkoUnl0ajkoWjcyQWRNe1A2RjQjb0kKeiMlYTlH
dyZDJUtMSXRCPHBqdihUZjkkPD9KbEFkZUtXPnpqb3l3TE9yN3w8Sk5mTUQhTmNKZFhNKXBwS2tX
b3J4CnptcHd2TyRXRD5VJUhBUXAmMX1CTWBCd00rYEY9azQ9a01SfEAldnJaPEdRY01iemdkV3po
MzhnOT4/KUsjYCR+Xwp6cEdjXk14PXdTMl5XMWtiM305a1pKOF57eEY1TlFRbzlFWUlofDIzdVN0
aHRsezMlPUJHaU9SVzAze1B7PVliVyQKelgxYCZXJWdEZU53SUtgRy17VFY3N24zPX5qNkheaWMt
aWFgWnhURjwlc21Hbi0lMWFmWGdyJC0jdz5wIyZ1NHI1CnpXX088T19JQWc7I0JSJS1DY0FCZGRq
ayVIe0U4Xm9ZOFJpJiFHQzk8ZUkoeSYtV3NKbHhIYG9hV1lEb1EqZXJpRQp6RiVoa1g4ZVVNRHgt
flFIPyU/cyphY2pQOElzTDN4aD8+dmxTREI1cXJPQGtEeyFwfXtAZy13OFhBZmk3NVE5Q18KemNY
RzxBQ1FueiotPzFBbj9ZQTkmSFFxNnZfTzsjRVZ2VzNnRlRNeFllKDIlWnNaIVlIQztBKDxJMGpD
QT1nV1ZhCnpWbDIxMUZWWSFHSWA8QTJacnBSNzMramskOW9ZTmlMdHh9U2ZBd2Q3YXJELSZaSSo8
IXZGbEZsWmY4ZGlOXyFBcgp6LTwkRTc/MlchTXh3cmpVU1olYHFSZ0Y/UDh2X3FrQEkqVGklZ3c0
PSQobXJSRDRVXzVgKkc0Nz8zdng4MUA3ODIKel5hVWg2LX1IcmhISVN+aiFTJSpaUz0hbDNKY1o3
NCpQeWwxKHx1NnJXLVBSTGQqNkFUMmcoQF5GdFIpTShxcEtoCnpzK2U9NT49RT9ycHJSbSNzYWtn
M1hmdGV3IVJTSFQkbWhna0BXJig7WVZvbGhOZCVjZjYhTHFsZWV4XzZvOWIkQQp6OTJPUDJ4QkVR
V1opIUVlTG8tX0g/cHU4eVk8JE9EQnAldF5eQmdoejZoZj97RlR3WHw/eV9PbCNgZCVhPFExRUAK
emVjQ1RkRW01SUAkZUhSRDRhbzFtJWl+ZCtsNDNfPSFKMG12a1hqYEVSa2VIdGQ8TW0pKmJ8PXVB
Zi04YXRnWkU8CnpeditqbDJTOTExdDZWWlNvYlVAQSN1ZWQpKiolJTdvOHtBcWhpWnw8NX15XlBz
UTI/WiMlXzk7YU5GJX1SZjZsTQp6cE04cmxIS3htTSZvU0A5d1dGPEhXbDwtKipkMThqc00rMFlX
QXlsUGR3eStxJCFFaUskaTRHKilzR1pJMzdobGcKejJhaDlJXntsQUdoPllwRHROZGlgZEhLb0h1
e2ApaDU1eXhrZjYwMT8tZXZiKDdeJXcyQktNZW54M096Y1BiY15DCno+cjRTJFQjTUxTa0k+WFUw
O31lXkdpUjZ5WCF6Y3NyS0tmfCN3VU5CZDJfRUxvSWs7UGJFYXl1RH1NQHpARFEtUgp6THBaN20j
a2VHPmVhKk8zNjdKVXdgcGZiTTZHUiVuc2R7fGhtMzZQaHktKSs7Xl5PLUJQWHd6JGExI2Jxd1k0
RCQKenJrYGQ2ajBeVX1aMnpVeGh3MUpQTDU7VnglfkBCIT45YHdzMEkoJkp3a04pLVFFbEVnVHQ5
ZnVybm1OaSlDJWpGCnp3PENCNHpsKXdRRXYldz0yVVhUc0hMcUZDP04hNClWUTRkWj5TNEN2ITN0
cStVRWFXTVJ8PUFaSn1gYlQpVWIjcgp6WjtGY0IjU2RYNXg3SU15S1J1K2hCZSg5dEF3RTFVRn09
LWwqNlJidDtobzlxSCp1LTgqVjFFXzI1VzYkYE9pRSoKelV7RHhoVmZ7fWZDWFdAdWZrKEZETV4t
Nz90KndZUk1ZPmhSdVAjcSNXTlRfTkBCdkghQEglam1VRjFTSFdLRjtXCnpAa1hfK3UpN0hHSWpW
Z0M+T20hUEYoe1NtUj1hT3BhU2tpSSEoJHpHYCRxWFdWSXNnXmZOcEs4U0chQzVIRElDaQp6Tjxz
bSEhej52aiVUUT02ZDZFMXFXb0Y2fVdCMHVPWm5fbzBqQnZpbEQkVSp5cEN0RERXLWhJZGh4bHdh
S1AjJjsKenxGTENvaD56Ykd6ejRzPGBnPmkyI244fjY+UiZWSSM8STdZd15zOWdVYkxPNTNgNG1q
ZkowX3EwRFgodUZ2SjUlCno9SVdNaGtfWEhMN2VtUG1PQ1NTJWo7K1oyQnVJRH5Ydi1tSWVtbW0t
TWJgQFF0M1hPZjV4JGFkP0UwUEZWWXVuQAp6Rn5vREBQKk9fSSVgYHpSVGVYUlZeMGh9ZFQtKGRm
OypFVXVTQGZ2RmoybiYoK1AoOHQraVMhdW1hYzYjOFZfRnYKemw8V1A1KXtlajFOYisrKW1nZVpt
Mmd7U2YpQD9qVzVec3NCWWZgV0o7NXZVQGVOfHBSU21uS3RmWGExNGVkTWUjCnpqcnN8a19VSER7
eDZtPGs4KXExOWZzYEdwI2ZeR3h6e2FTcSpVUmtta3plMF5DY1d4K054dTJ+X21aRkFPQ0g5QAp6
KTB1PXBGQThwVExSfEA2VSYrZFhLeUtjVkNeO1g5ZmtrJXQqO3xKJlFzdnFYa0Y0cmVwOVFWcXZp
c2lXRHpJWGQKekZwK0QrUUZnYGo7fmJ3SlhzOzVUY25fdUdBRGcmOGAhdjF4MHd8TyEyMHpBTHwy
MktXSkxTTmM8eipPTTh6Njl+Cno5YGR1RW54P1E+SzhpTyUrVHJ0VmBYK3tjPldQbkFBfGJRcjhe
dHNqXm12cT5sdTJVO200WEVrcEpmc0JuNk44Mwp6SjA5UG1eM1RId14+S3g7czJqSEI9fWdwcFom
LWd4JiU8cWV5TVIpV3MhPWptJW0kM0o0fChyRTltV1cqMDVzNkwKemYjRyUoSFohLVdpVlN9OS1o
ciFENlc9dHxDTXx0X1RSIXA1ZkEoJGRWUiFXejk+dzw+Rk9OTz5mfG9TZ2FORE1mCno8OXdNVUwy
ZGNqaXMwKD1XczlBfEtCdEBuSiRmc3gmLVp4JCsrcDszJng3TitvRnJudUxZISRvKDMtaDt4bnw+
bQp6PVp4SytVOCY4eHhkTSFeTmIhUztwMj49dU9gUCpkbzxEaT1pPWhJelpUSEBuKXN6ZT5mTShi
VjsxOGA0NipuUD8KeiZxdCsxTj1RRjNaU00tYjtKVyMwIStsdlYrVGlRbWQhaFdPTzQqJXZeS3lH
VUc7SlJtdGd4WXkzaEZiI3hvZG0+CnpVaGFKRSo3fHRGYmpyZ3NWPSYzZklzRmswMlNBOT4wYkV2
WDVWNW5oaFE9RXBadWdUZFBmVkVnY2U/PE5MKWoxMQp6PnE/Ny1BU0ZpSSs+Pl9gUm9pWVJaeGEz
eHR7TU9GZ1BSQjR8TEdUc3Z2fG9JTCQoWGBvJk1uc2R0cCorVkshO1UKekNjLSs4JDlWRGw1UHRg
cXI2fXl+UDw4eHlPcWtCMD40ZnAjeEJTMyp2ZjVrMjAjfkZlNX1mMTQrdDBKN3JyS31LCnpgJGJY
cDc5PnZyKTVwTUYlfSpheVU9fnw9MGNfSDZ7ZUpDQHApYUhDRVZfVUw1K0B9d2JXPD07U0w/cSVt
c2p+ewp6RSp+c1ZkT2JrOFJ0Jm1wTmdXVXMrSkZ+Slk2dUVVM3JeQiZQTSR5SFM7aSpNYGlNO0BJ
Rlh+ODAoUChBZl8xeX0KemNEKiNEcSkoUEYqUXtJfmZjYTFHdT9RMGdMSj1nMGpBNENmP09palJo
bFZ6VC12Vzg+SG0heiFtekpTazc9anRVCnp6eH05fiVOemY0YFJwV1NaeGBlQ180IVooKnBGcGAx
M3swMCQ3d15qU0Z8ditUc3Y2aXVyX2JWbmNnREZ1b3VEfQp6O2RXSFNZamxxX3l9e1hNbH5DVnYh
KXtAQ1p6PmdNVX1aemk7WFJMSyhlRDtoXjdXZlpZeVFfNDs/K0RPZXtGbGAKenQlcC1BV24qP3xl
T0J4NEV0UztOMVppdHB5RVNqXmhMJjdwdTl3XyU2bEI+TDZqfFFRSzhMZH5aVypmPUwkU1IlCnp3
Pn5ldWQmN0hNWT9edD16fmtLLVUoYT9RMkwwflEjX05ucllve1UzP0pAQkdyPHlHWEUmZkY4TSs/
ZjB0RUV1MQp6Z3lBQEt8Nkklb3JjK0hWaUlOXlZsYGZ8dD5eIShqKUYhdDRTKVJmO2NNPjMjdHpu
SnZTQmp+PHhzUW8yYXVXNlcKemNndWdSX0hJbjlpSGBqXlkoSCNTPj5Ec180T3I9I1RLOyUhPUg3
XkFhVHZlRW4+KjRKYzFmMFB6dW00I25aIWd0CnpxTWUqelNNKFc0OylFeEF1bS1ufDsoR1I0YEQl
ODQzeUxvTztGbEJQQzBPNlFTQ0pGWFowWVZPWX40K0pPfEA+Rgp6bWJibHImdm5uZFlEemZZKiEq
O2VmO1VjPip4aFQ1SzdrMW8hLT5EUUl1RWVhdUg4SHxtUzgmbnozOF5Jeks0a14KekRiIWckZURK
Ukl4IyZ9aXF3WHh1PSlCI2t3bTNMRT8yKCZqQWhPVmJ6UHtzbHcrWDJ6O1dAZ2hkIzt1WExuQiFs
Cno3fj11SSRyS1dxMzc+S25oMnNiJHU8YjFocX5sK14hWU1pSUNPQGVeNkM4VjRJY19iVHZmNE9s
WCVKT2g2JT0tdgp6VmduTTZuK0VlN21TZFpzal5SLURyTjtaX2IraDB1OUBgUz5he2E0cE5+bkYm
RFNmMStXfGVEeTFwaWMhXkhxT0IKentHJmRlSSl3S3M0KkMpe0hoZG1jcXRqMipAQThAd15Ca3NE
XythZiFIZHMpbGg+TG0hIU5IXikqYUMtT25uMGo8Cnp5MXF1ZilocVVJQXp3VzFnOz5kOEFIblE2
bStaJkw7JCgpP3tJVipQaiY2PyU2Wn1ed0xhK1YjPHBHIUE2PmVIOwp6Z25uYn4ld3x0TTc5M3hD
R19DKTdVPioraygrVUoqfEZMQz5oYU1hfkl5Q3NjMFd7QE9jcVB2Zj0haSRuPDlBOHoKeiFWbTBv
N2lzKipvPl9nSEhNfkNkdUtAbEx2WnBIWC1uUmQ+Xllsdm9AMCZIYUp9ZX1keVBQeipBSnF1dj5i
XlVZCnpqTTRhRi1AN0ZnYnhDbG9jXmAkYm8zXj9WejkzMjlpM3N9cCh0SiVMVlhXZnxFPEM7Vk45
fDZ4JDhIMSskPERfOwp6YEVsVVNUUm0yNzVgUVNuYFJNfilmbXUkZ0U1NWUybUJQdCVCaDxBRlpW
QTxXJFVubFVXNCRtbWBsOE13QVh+WT4Kem5ET2E1OGVTfGtXTWRQRUJ1JiVMTk1edXFYRS1ebmRA
KUQ9aWJCPWRgIztHM18yVW4rUzBlY3ZWdSlGKDlFcHt3CnpJYzExKFhOUSpQfE5pKnRRK15KVXVu
QUlyNCFQaCFvYThmeUtSYWI4dXdETGs1SmhxWTFwO2IzLS1FPzVrSVo+bAp6JkVAPSsrO2ExaDhS
Qn1sYWpAJGg8dX0yMjJ8SXtEIzJUcV89Smo+cVomYjRpR3RIRj5KVVpBRjZgPWZ8JjN6TW4KemdW
ZXZmOExkcDFRXz1xS2RWdGBhKEBOTD53T3tgK1B5RStjciMmckBjX0FRWERIa1pOQWpmXjtjb2c7
MTZ8S05DCnoqell8Um58c2p1MlRtUXNOeH50emxYa0NGPXd3OHtgM1k1M0RXMVRaM1khMmV7Klo1
TCUqLV5gUnxvWXpZRntuaQp6dyRDI1UjczYtbU9qc0dNYi19eHB6RmhHbWQ1KXJYMTxhXn1jamVE
WCRhI3RALSRZLX5HfWE8MjVFcGp1Xlh1QzkKenJDWUJFe19MZUdYKjthfHghbl9nR1J3djhHNXZW
eUE1N25ELTlvUFhKXnlgWEltSjRmVXZkJn5GRT4zNDZUdm9qCnpHKVVzR3J6cSFYMmB6clJVa0wk
KlheNV4kPFphZGdoOTx3NiVYSiFtWkxkfTRnRUBUI3t8R2RHXlhAaSRte2Ulawp6KGcrPz58Tkc8
RGoxdmR3PFc9RytzYWM9QTxoWTYjTDszUjg+SE5Rejh4VFMjJihAXldQQVNoOHM2PDNMRH1YQyQK
enNteEtOYUkqbVc9d2A9UmFkaH1EJiooSCFZakFNeyRNbnE3Un5XbTZ8STQ9OHFoYiM4VFA4OERi
Xm8wT1B6c3tOCno8QyVReXR9Vn0kZD9tKWE+VC0tZkA+YnZAXz0henw2MzdOYGclRiRnTjQ3YklQ
MTB+UU8kdzl6U3AmWlJHJmBhRgp6Y2tkP3VHNFgjKTlRO2ReLSM7ZSl8QT5rSVc3aHZmP3RkY3B8
S31xMktXNj1wU15zMCF8Q3NlWkFwRDteYD0zMWYKenxMdUE5S2hnVDFYI0cjTHt7TDA5LWopOVNp
JnJza1BHVzF2QyU1RkQ+UF5YX3pDbiUpOHUtR0lZe0VLbXJtcEtJCnomMmROaT9mcS17Nzs2aW4x
YFpOWTkkJUJTX3QmMnxjP180al84ck9DZnJTaDlqT0BYTHFLbE5Tay1+YSQtMF9jagp6SDQrfEpi
alh1PWtQU0VmczsqU3g1aGN1fVhlTH0oI3dTcmRRbDZjNEx1Nn5fVU53ZStJP2Fzc3p+eHt7d3Nr
RlUKenZnOTI5enlnbk9KWnc9aV9AXnJHMzhOenkqcVVUVSszVlJ4OXdiSi1Ae2xGNGt+QFpxeil8
PHdhTykjJGVKTHBVCno2Y3tmUWs+Yi1aMmM2ZWA5UXlhT21xQDcmKGVPdVV5ZUgpTHRsY1dZcXZq
NTFSYWYwRiR1SFMqVEchRmpgKng2KQp6MllqU2tgdU87e0JkJjJWWmVmVz5fe3NlYFpJSzlwMDZ5
MU1UV09KeXBuIW9tVG48OGd8MGJuYl4qe0F6TiZhfWEKelh6fVRUU2Z2fCNeQ2JCYkl2YXhTSUJt
K3pLbE08fEdoRiVpczhGalVOKiQqI14pZjB6YTU2UThkQjBpRSQ2I3ZUCno2bHJoZmE+N1JSdklQ
fDd3K0lDWkBBcD9MOVFwSX1YZnhfPS01ajA+VGB+TilLO2UqJkdLbyhsKn4lYU5zbWZQYwp6b05u
QFVHUmtGYlZ+aUl4aT81cUJAOHUpXipoMG03QGJBWURHLSVuJWl4QjhydzdmV1YhWCYraj9Ya0h6
eVpaJikKentXfGUpaihkQDg5SGd2VlJUMWwyTDY0UV8pVDx0dHkhfGgwdTArZW1kTypXfWduZnZ4
aXFKNUk7aj9DbjNmcDwxCnpLWHYpdjRJVmckRVQlPXszZkdANVB+bEJGVUJKYiFgUysoVURmPk5U
VzkxQWN6KTEzRUVkOXtOejJNOEgoTE8keQp6JSlWY2tGRkxeYHJ4Znx2bjM5KU9FX2coOUxwWlJB
ZyE9dDJWVW9ZZ1VZT3ZrTyVwPGtlP05sc3ApWlRPVCp8TTUKemJnemhTVnhOOEpHJEUteDk9Pz1K
RXV7bFpze3BDR0VBMjA+T0RGJCtfNXtCSXVYPS1tR0JMfWAxemIhVWlQQjNfCnpFX3ZiUGh1Q0lE
V28qdHQ+c3ZUZGYpbkhkbU13eXBaOWcwZ3s2eF51e1l5Q09QYXxjQnd1U1ZtTGl4QEIyUipzdAp6
NFQ0QlVkdCFSXypZYmF0dC08VzVEY1FNRyg/NiVlOEswY2p3PHdefnhwN1Q0O20+aWF2TCt4VXd5
dmRyJFVkczEKekxtZU5XTlp1WTM1JGdVMl40ZipmKGFGRCQ+VSZXeiR7U3hJZGlAdjZNQEFha0hF
UWlZS1VhSHZOeW9BPEwmOVFgCnpSRU41b0xqZDIrO0NKd1pfQEFPUz1HbEk2SzhWLUp0VWMxNDtL
PnU/ZFFtPzFpdj1gKUtUYmBsU3h6PWNZYWg+Zwp6RkUxZkRfQ3UmclR4fEd7Qm1YKVAxRzFyIWUx
VDZGcXtjTXFsLWJOPjdNVmp3fEkzPVE4VjNoYkRpUWxmeFV3dVQKemR0U0FiUTQwfFdgVDNjSzd1
IyY8SkItMlFlZm5adHIpa1hle1k5ZGZqdzEoMnhCdmE9NkZkaF5MSVkhdChec3VFCnpKcEdWKntV
OGwpc0ZHTzN5JDYyfVl+b1dRUiQxakIqQDhlS1IpNGswOT9CMFZtNTNeUHhjQEdEZ0NwTHhzfmpl
egp6RypTWSpjLX12VkxuQEEkejJ2JSF7Y2c4MU1tfHp2KHNka01gRyVfO1pHMUFMIyYwel9VO3E3
VlZncUhONEFvJkMKelBFWChXZ2pIdXg5cnFKPk80e3xPb3t6YSFiVGxVIWNsfjRKYElaRk00JkhL
fVcwZENAQ35zOHV5dSFtYTMpbm5OCnpqfCY9NlB5VGpfejlyZ25oZmM8Xm1oKUN2OHV7TzRJfj1W
V0NmdThvUTJib1BRVTh+SGU0VH5TOW8+VHRlfiNOeQp6OXZ2U0N3KCVDb1poWG0lb0wpPitRfGph
X0Y3fjtqcyE+Q2tfQGMkVl9kJiZHKDJYaGc7ZDRAZEo5dF5eJig5PzwKemFUJmo4ZTc1djdSP3o1
QFBJTD9EZ2oqbGA8Mmo9SmMxKUV1dyhaKFlVLVU2Yk9nQGZJLXluIT15ZiV5eGBaND56CnpVaDxO
UiVIK0Ficm5UbGwxTGNsdipHYF5kKTRnXnM8QCYhKWdkLXUzKzxRdXNfZ2xlZz1HLUFNeFEhbSVM
SH1qVgp6MHxReTk8JkpYX05zVzJjZE1zUWgkQ2MjI3opPld4YEtLWUhSeitBfjxucVhyP3FMS20z
Iys9K2JzRH5mZX02aEwKempWNzNmVEVxWD0hcTgjVWxNeDAtKURMajhPLWMrZ3tYTVdBQ1R4S1Jj
PDJifnNNIUxFcSskKV94d0RWNnspRnpeCnpwSmhNWE15enVvRHd0bj15YF9MP0peMkwzdFU7dlR2
KEZjaGt4dlhkKjc5LWlqbz0/M3JNZWkhVGFSPTkhUlZGUAp6dzNOU31ySXY1TnlQJVI1dncleSZ2
aFhnKV9yTTF1MGo8TG8qbm0tV3FaTXVeNXt3QVN8MnBtekJ2Q3cocCliPkcKekJWI2pma1ZeNj1x
SjtaPl50fXwqLT1VZl5kYzRkV3J4b3xmT2E4fj18NWBRYDN6IzEmYzVKc0RZSD12OUh6Iz1SCnpT
N0xzb2YjPVVydCtjMyhFRmoxITZzM0w/JFFkUGVZaHB4WTxKQnZ8S1lxMXxIaTRnbUZAQkprcTVa
TSRMI041egp6eHt0RD5FQCFWRXtQU347XygxMlEpKm5vLXdma30hdEZqNDNQTWIkNDxeQSFDT0w+
MnF0dHxvPHIkfWB6P0FfP2oKemgyYVoyOT1RRDF8OFVeKSRNJH4/JDkrUVFJUT0wKz1YRmw3blFt
WE8hUFVQZnFMbkYpaComPEQ3e2V8Vm82TW0+CnpLIVp1OXtxPGtnb0hfe1pjKkdvRTRfP0U/KUUl
MjdTYyYwfFpYczgjcWVkcXhOXis2OCoxdH4tK08xTXRvYEV0Twp6YGQ0ZGZHNWBNYlZ+eWgoTj1u
Mmpic2xQQXVPLX5JV3ZFXlQkMUo8dmB8Ozwle3RPQUJ7M25xQTZVaEdeN0RXQ0QKejxvXlduVmBo
OWAwdXluY2NHZ3d4eVoqaGlxREhqVHY7cUdPdkA4R2lAbWI1OWFKIVAtXjxNMHZhdEl8SnpvTGRS
CnpQKVgmSygzO01eKVkkM015QnRPfSZCKDd2NVA7alFyemN4T0gxPkJFQW9uUTBCMyQ5QkExIXp7
PFk4Rmp2UHlzOQp6WU5SPEctMGBodldqJkRLMWl6cjtpKjE9aGR6YTdmRWc+TV8oNk9Hb3hONGBW
T2x1bTw0fG5DYk5mTWtVKyNXZ1EKemRDJC1DR3NaZEN0ZCEmK2kxdl9XTTtFdno7RXYzbV56UUlV
d3pBNDFhVTx1LXBCN0h0az5gJiVMOXBePkc2fmlKCno1X30jJTNpV21NcHx3bGB6b3FpZ1RaY0ZH
WmpJWiZ5O2F5dlkwOVEzQTgrfEdlKDFHWXdaNCN2JGBLQTJaOEV1UQp6cm1KfEF3Qjh1PlhPJSFl
SnpaZGxIa3dOQUMzbVFKcGxBOyhTeXFqbW9aPCNYbGEzQCp5YFYzM2NaO2A7X0hoKSEKej9QPWoh
dT5rJn5fTnlNVGVocEM/Xz1pY2tvezFCTWQkYUp6NE51PXtESnREZ3s2Sn1Uc3I2ZXZnUHFNQChu
YnZACnpuQDRISXtMQ0BHIWk/MVo1NFM5YCN6SkFIUWs+JnxOcXRtSGc9X3tpMkQkcz9UenNEWTI8
O3pBQlJAUkpwOGpAdQp6bjgxfHJlMGB9QmFUdUx0WnJLZjRabzN+JEpiano9Y3g3NCZ3cTZ3WTZW
OXUzdjtvOGYxblErPHA1IW44SG1Za0UKenR7aVNZenE4WVJQanFQYG4/JFlUJXNVZG51QzJQej5v
YDshZGpXK1JycDg2Qj9gKkc+clRaYTloPz03VzAtOSUtCno/O2cjJEIqWnZUTl90I3VnanpfRXtG
Sz1pZWY/JXs9TVBvKSluVk9JMWBAPnBTIWR3WnJud05XMFgoWnN2flU9UAp6d3FERkMxVzxrdV8t
SFJXS3R8MnBUPmZEP09EMXwmTXVYfThOcW0pIWF1ZD9rIWhFMiV2bHIhUGBgTngpbk5NZlIKeihX
RihnZCU5bjNCdS1zUnMjYjVnR154PjZva3Z5Vz9yeXwoNFJ1dHRRfV5kUD0wRTRBO0JPJjhDS01u
eW9jWFolCnpvLWdZSjdXYGs2dklIYlpvVH5ieF87ayV6aFBzd2Q7LWJ4MGFEckUqXkxFP3k8bHx5
VFVrKHBqNEEqKFY1az8jXgp6eiRPI21vZGdPUUZrSE9qb2ZOPDVra0l5SHR0fk4zOyVxajN3RT19
R1h9Rl40aUNaeX1qUDA9KCVZN15DKG4jMk8KemJWSiFqXmklbypYXlVeVEU1ME9RJVZTPFVWb0ph
OShgOHokX14+KUhGJD0tOCY1bkR3VWUmTjxma2x8e3A3JWtACnpEOHNTPS1EbU5BViYzTWgzMFZC
U3R3IyRlNjx3bHRXaEIxTDxgamZZT3E5PEpoZkl7U2NnIW5JOT4tKDBLQ1NEcgp6d1YxWlZDRTN2
eV52bHgpMWg3RjA+RmwhRi1pcTNHa0kmOUE5IXs3VjJnXmFrS19HNEoxVUdLSyUpOExGSVc+SmgK
ektnd0JsVVVlKSlxNjZyPm9yXl9kezQlK3oxTj1eS3MlM3NQMCk5emZAMHQhSEtEWmgxJjUhamIk
RD1IcyFMNipRCno3ZE5zX2NJKEx6MT0/RStYSWczOFl3emtIZHl1TTRVMCl+bTJZY2lFVWtRYEJB
QVNxVW1tY1NFbGpNfHVLQ25BfAp6U0FXRWIhU0EmPHdIWSohZmNhOEJ1dU9RdXQmSiVkZElnNWp1
bUQxZUZMU0dpJU1hMVYhdT5Ud3t8Vz5icFRQeGAKej09fmg3TnJLdDwlXmZLYnlDSUpCMjJrUHdt
TERLJkVkbntMRmktI3ZzVVFJa2YhLVApWH1IPXY7WU1DP187Snl1Cnpee1BIbUdDNjBlQnVBPWRh
aDZydmtMNUQ4P0Z1aWVlYXMkJSZFYi1OO3lNdVU1P2ZRcF5KNVd4I0Jia35FdzM+Qwp6KXdoR1FR
O2VfZE16V3t2Kz1eZWtMQE0lJD96MjRKQFhQe1lWeSRxc092SEJKPHVJbGd4Sml+SXJoKDRXNzJe
aE0KejVrTXhKIyFVaXUlYlFYb3EmfFJ2Rkgofkl2OT5oOzdZZjU3Qjk/KDEoK1Q3ZU92MkYxKl9P
ZEIwNntKfXZxVEgxCnorcXw3bF5nc2paNzhWKWdFTT9jTkp9OV42ZFUyTEwyPGZhe3luPnMkeHBp
LW80dlVNbzZebVVtRiRefEJYN1RKIQp6PH1CckhaQmJYN3dEQSpfYj18YUR6c3tgJl5TYEBlczBm
T0YrQGJEQ08rUXJNSXowbDsqTFNQQWNFSWVeMyZLNDsKemI0VkVpcnFHYHpDVDB2e2tqZmwtV01G
KjslMmkrfWp3YG44U09WRTJDdCNLQl9LLXJkaU5MND1LWFd6d291T2FsCno4VV80U2krP1Yybzgo
U3shMDgwJjg2QVluXn1zc15gcjhmciUzPClRZklkTG9oWHNyWDI+TXs/SSl1TG5ffT88Vwp6ekZy
SENrdURwd0ZGZW91YzdSRGtKNzhwPFl6NzsxWUZlbyQ1OUdXTis7MDdFeGwmUTU9fCR+eW9EVTMo
ZzlhaCQKeih1NHlWezc5biRTUXl8Z0pOWDBQaVI/Sy1qRkFLKUBVdC1JaXlqZyNiYnt7WjJTb2Y0
I2VOWWVLMVlEeDVZZGJRCnpOdHo/RHc3OTJTM29HPS0wSU8hNlZhPTdZZSY5djhmOU16enF2TE9L
X2NKLS1qbVZ3Z0hXPkVPb1phNFV5Uld1bwp6SyRgS1l6VSQqaDYoKWA+JlhDbVJjSGdMfHkyfGpt
KVFlVHZ5eTN1cSRtQTM9alJ2SjBPRGtzYkBmNE0zP3N5JGAKek9ZQXVrKEFlMHgqX2ljZE91Tnd4
PGxMP3NkY31neUxnTXU1dXlmXjJiZTlQM0coVzAxc2N9YW18SyNaYzI3bUJOCnpWISlVVCF8ZTU5
JV55QX0te2dkfDFPNXY1STQrSUNJaCZwUmZHOHdeNnozcWI+aipBRWZiMCVrUGZyZ0pBN1Z0awp6
LXhgUiVKP3h0JDcxaTBRazZtUnYkU0I5fig8YzYlUUMyKG1EfjlFZTlPKzhVYStHbF5IbFZwTSRS
WiRxPT51KVIKelN8V04+T3FRdXlTN0R5aiNJSVg1N25EUFFrPURSJV4ybV91STJwNnx4LW40WSZu
aD09Wm5gdGNmdmQqPiNVNDtyCnpMYDBkRGdMd2grbTRqU09OP2w2UT1ndWh0WjZqUX5oVH5PS1Fx
bCt0N09vP0hndEh5Sl5EZX0hZH5pVzF6bypqdAp6cXdUNj5nbTtBWWckeG8pPzg5b0R2YGF0ej9+
MkNIOVBZRDVlMiM0fHczQUttRSo8JGY2ZFpCUkVgbEpFNSliWUsKekFTITh0e0VKczwhMG11djdK
dUFAUzxeSyVaMXp4I0drMVJWRClFTSlWU2M4TGM1SE9rbDZ0azhfTU8tQ3BPU09iCnp3VD91TitQ
OHFkMk4zNmhkK0xeQ2dmfkVUOzlWMnBscWNsfmd5cFR2MzdgfFp4bV4zfVlJYzlOVC1UYnhlUWEo
fAp6PHJqbTtlP2QtfXZKTE9UfENNVyoqO31oTXBIfmc3QEgrTERLTTRGUDI+cnJzamVmVU85Y2pa
bVhVflRFZClGQkwKeitNe0opNTNIUzw7O0o4dzFjPyFfOHttXkpeRXxBNUIlT3FoemUpVjFPIT9E
LUVESjUhXmpaQVpjb1peTVhARnVFCnorI1gpN0EzaDxOdkkhcThoJVJiSkZ5JjxscSgxTXQkU3xM
czlANGRpb2R7TkhSVWpoUDVGcXZFUjNNYEFKWHNUQAp6ZW9hPTxGMTVIYi1KPVhzPnBOJktAY2s4
JlgmU0lJeT9ONkJDIWVuZ1hiNkNXM2NpNl91MiQ/S2FRKnt2TDAtVz0KelJTWSk/I0JYM2lNQygo
eytWcGdAPD1SeW1TSXBjUiVibFM3YkQ1Ymp3ND87aT4xa1BzR0lXZjxhKWtILWZ1ST5+CnpVSTI2
ZFleb15eVHJkTU47R1g5OEVGNksmb29nNylnTlErYWltSHphbF4xYU4yfW9HempeYXdNMWpjayM5
fW5vewp6VEl1e1dUPXBRTWxVKzl6SD8zbEU3fGkhZWBlbTk2YitBVG9Ha3JEY0hQe09ydWs3T2li
cjd9O3ViJlIlMmshJksKenJNNjtBTGJSbHxHWipOWExUKWhtb2ZMX29BWkduR2VtQSFTczYzWT5A
YG5qV1ctXm5lNUpAPndVUGgheHp9O3A5CnpUdjN5Zz01VWcyPX1LLT9BRkVuIUlKXklWbGZLNEVN
eF82fWpIJGNJdSRRSExiKkhJajZKeiE1UEpUfnoxbjxvbgp6Py15fDI5cUJ8WUMmMGhKaWxII2tY
WStWazM9WmV5PG04UGt4YE44eXZ3XjtBaTRxLWkjTSY+ZVdkNmJqaEx7UFUKeiEtSzI4RUVhRygz
QztuS0pHY1Fjem9ecmNpcjN2WEYqd2h3ezVqcT1ZTj8kQEt5emNPQWBTZkZka1lrTXdjeXkrCnpB
SihpTjBzPmRXejY1R1RXbT57bk4lQlctV3NQNGlpPHBGYVoxN2h3dEJJZWlPNDxQX25iRWViP01W
NnFBRXR1PAp6NFcmTVJYSjtwcXA5cExGPmYmY1Q+dilJO0ojJmxTdEA4YFolUCVFUG0jTmYjOX4h
ZG9AVGVybVB1JnQ0PjFKWSkKekAlam5VSUpvdjhmUHZNekw2PVhfPCQycSglVz52OHh3JU1OMit7
NUAmZkVEczJZeWdgPnBNSGxwbjtoZDFERUk3CnpuXzZhUHR0MT1VWHpTcyl0IzlfIUFodlNnSnE3
YD84KitfNSkrOHp6RTw3Wns3TTZ6Mj1wTzMrak5AdDEhVVI9Ugp6JWVhQTxMcXlOWGZeIUcwaSlL
WjMlT1hafEE5M25oX2tqaCNpbHVQUl4xclF0RH5qdGdZQ2R8SDE5Wjc1VDM9dTUKejx6NUA/elp5
UXAxUDN6fnZ9P2FMelg0dW9TR2VfI18yfSNvNjdQVGh3NWokO29nSVhHTFgjdFAwWjErazJ7aSRH
CnpDeUpKXjNkRlViREZMZ0IhVWtNWTB3UEs5Q2klbG9BZnRtUU48NHVLI3VBTGcpK0sqaVQ2bEU3
YzE/c0kmdlQ0SQp6ezgwQ1F0eFZeQik3OEZERGBfSU1gRnl1aVN3Xl5YN0VaRyMjJCROPU56RkRW
VD5nVzFQYH4+Nnc8ez9AZk93amcKeiRRRWMwMGZqa3c7MH0rV2RWbUxyWEFvJFRVVHN8a2UjbSoz
TmBvc3ApeT9+S1YySlFnVnlUNTRrOzhheV4kJDs3CnpsLXtIUXZ3I2IxRkI5VFFLcjxIcCt8WDlW
QEhrdl4oPVRfdDR8dUNQWTVxNmFrRkdUajUxZ3hpU2BwPn5hQzZ9fgp6dTZ6ckYqcU04OGIzRUk+
TCR6UD1gUjl2PE10NTBfbyFOZz9YQWF1LVQrOWVmODNFaWo0TFRJWU9yJSt6V3BJZTQKemVqUykz
K1g1TGcjSnVGX1NSYGQ3M0B7MVpaLXBoPlNqbSszeTFXaUghMyNLZzNqc0hQTyZaRUBDKHFZQyN4
QmtyCno9ezZ1e2o0N20rVX5SWlhLZktYPzRgfFg7eVI0fD5qUUQ4Mz9YYmZjMF96NVlRaj1WejBq
QkZKXkdqcHJuSHVxQwp6R2drVVZHTyFFMy02VXdGcSs8JHdvQ1J6amhjdWlxZnJsa0ZoaEZsPTtI
flJOcU92STEwJWhYTk5ndjJCTm14MkwKek1JU1R0akIweXd3eHt9Tjd4d188OUI9fikmTFU2JiFS
NiFUeCZUNSVTX2xgKTtHUXVNcUp6c302dCh2Uzd6KS02CnpRNUQ0KHslWkcqblZBeyk5Sj8tXiNB
ent6OExrK0lifUc0JVlLKyVlMDdEM1hxcyNSWVlYZVJJRH1QbllvZEd1Tgp6VVBMYCVPamlqQnVr
PVElK0FOOChifVpmZXNfJnB4XkE5VEZlTUI4YWc+SGgzdyowKShZYWpQZkZYN1owZyN8ZkQKem5h
OERiLSFYaTh4SUJqV2pJbFNFZF9WJmA7cnpXdjVLZzx0dCY/KitrdEhJY0FRMCF+NkJjZW4tMW5h
QWR+UylyCnpDPHdQbVZZJXRVNiRlPX5ndjBRaSpURyF9UVViV1hFQj9hV1BEJU1TSVR1OVMlPiky
PmZKbWl3WDRJVE9OQF5GaAp6YWlTM1FLSX5heypKSFJWM0h+dmQteDApMTZUTj14QjZ6ajN2VTBq
XntJfXdBKS1pJiZsZm0lX3B8O3BucHIpNyYKend9JVd8VXdIcGEhR2FYcUIxeDR6dTA2ZyEtJHN5
cVRPQX5IUzY1ZHpKSjROVlV8T0dkRFItUEMwY2t3QXRxSSUtCnp0V3FuPDZifDRPLTY+anQwfXQt
Kj04TDNYQyE1cmJxY1N4RShzMXlSX00kbVk9JnQjdFIlQ0Y4UjtaPFotdlJZJQp6aGp4QmlRZ3x0
Iy18RiZeZ1hgaDJoeEBSdXB1Nzc+R3p0PyFwI1BPIztpd199OFEqU2g/PXo3QmEqJERiZSVQaT4K
el9gak1xMFNDaFpJcys2K3ZtfkBjY0RnM0FkRH57a3VZajM/TnJDdjVWJlhKZlllM1p5PmNCbDk5
UmttIz0lZmlyCnpqMml7O0xJQml2YHRkb3IhZC13fkI4eT9lPmItVWVlZ2tkMnkobVE2dUppSSkx
KGI1SDxUWiU9MDJLcUJpa0dWSgp6dVkzREs+PEVTZlV7ekhQZiQodWd8N35yaSlhdlVCREBXanJN
c2l0NXswNntrYHxzWl9KQUlvdy1xcllOP2gmKWcKekpifkR9O0hQclQ7UXxkNmJJTWxJYTtIZyE5
SWF+I01MOU1LYE10QUstWWRQQEpOYFZkTTAyVEUhTGA2U3spNXdECnokc3RLeGhLcldQMXFFT3A1
VjNwTT9gOXs0IXk2TjwleU1mVmFrbXw9SFBBTkIlMj9+e18rNHJ6JF9lSjZabVhWdQp6QCs1QEs1
b0VGZU14Nko4TzUpQ1hGRnBqKGomRU00dzdJa1ZSbCo4fmNtIXhrVFooZGlVMyZjdnN1e3QtTjw5
Q2UKem9vUGxBbXVzNzJTSlJzQkV9Ty0wKk9Vfl8yRCg5aV55c1lEYVV8SVpFS3FRR0FeKEZYMllQ
ZzY7JVdXQzx4WlAoCnpiTUdFeXI5ZUxCKTwjfDVVKkdXfmlmPCYmQW9nVU1SKVVsQiFSZnJwVXQ+
RU1BOEJ+WG0pcz0zLWZoX2VJOU1NYwp6bHhgdUVURUltflM2e0teK0AwQ25ZdVVkckFwZDhrZHU9
VXc7TjF9ZUVSdUh0aTJRNFVffT5UXytqQmBKS2FTRDUKek9gQ2ZfPT1yQmozcmBAPmE7ZHkybDV1
Xjk0UlZJKFpxRDBRZTYmXmJ7RVh5dFJQUiFjSmhtY2lJV09FKXBaZ0grCnpxTz43bTlsUSkjKilZ
YTU0NiZvMzkyVz9uT3V+Pjc3SngyQ1ZFRngydiohKDAjb2EpVTI/U0tMPyF8PSNnPU1YIQp6WnRB
Qi16c0VqU1Q4XiNuTERSTj53ZkQrWHhzNjhkPHJpdm04bjJYWHIrektTQkd3eDZmQ2AmI29DRENm
MFU3cyQKemwyVGlHeUt+UnNPY3NORDM2VVMqQ098OWwyaTMyaTI5VkdkeDYmVkJTcDhMTDsyeW8t
YDNtRHxAa2lRc0xAOzs3CnoyWT96dzA9UXRTSG0wNTw1aVI3IXoqM3s5I2dhQ15XJWRJOUg5Uihn
Ym5JU1JKS2xvPDhzVkV2V1F6TlVVNzNlYwp6bE9xaj58MG41Vjw7bCkkeWlsQUFYJGo0aHNtI0hg
XmZIUDghQnt7SEkhdnF3S3lJe3JwQ0M1KG98QmVlaVhRYl8KenBiZ0xPRiRLKkpQJHFeSzM4O0hY
UFNQJjZCbXNpci1QTyNna31SbmdVa3VHTylzUyM+ZjNGWklFLUFTezxPZmF+CnpFWVU0ZDVjMWsr
SEt8cmVFa016SXZWVkJAOH58ITA5QnEpX2pJT3gwQ3ljKG9lK1hnI3BvNSk/YUstVnN3WT5MSAp6
U280V2QzNS0wPlMkfHdkRXw5Vj1iSUY+PntEfDNgKnpkYilwTjNQbEJkdHs2NV88MFFIeStnbk9n
S2Zucmw1S1EKejB0PiRHOHJzRXVYN0k0ITMqZFA1NGgtYnJWX2cmZUJsPz9SSSF2RzNHYnVHckQ8
N0NXSnApLVYqd2d8ampmMCUpCnpHfTBYdXdJOUpqdXd9TWpXZjBeMjFjREpONHhuQCFEQX5ZYElT
KmY0LVFDayUtRVh5dDgycVJDM2loJnt6VmthbAp6SzZmVzx2YFlZRnJTe0p3VF5MWTVNLUcpPTV4
QGN2RmQqSnoofX5aP0B+ZH1XbXpTNXtJMlpET2ErYSNCejEmXkEKej4mSC0oXjZLPXhYQTted0g+
XilYQV81XjAzfjI5Q1NIemNGZlRSZ2Y5SU8wUUBlcX59a3tCcWxBbUtOSmghOTZFCnpzRmQwNz9X
fT9Hej1ASH51ekghX3ZeP2FedEFZO2VndmJtMEFYWSNBfEsxTmFnWU4rSmQkUnIoWE08Uj95e0gt
Wgp6S0gldzNhNipNMVAjVnQ0R2N3YXswKkRBRUBaT15YNUV6QlQwKj1nMCZldzRWKyVicWwpWUtI
O2BaUFI8anh+Wn4Kem5LcyY4UGZwVDBpISpgRiRTbkh9Wk5wMSg8YDhmfV8tYCYwPS1md3ZRNkZj
KnRzVEF6UWY7SjZmP2ZkckwrcSpSCnpDPm56ZmpXNjdMMjlGMCg1PUhxZG5WTmVOSVZGKFlOTCVr
V0RfaW50Kl5iaH13ODk4SmprbzNmM3MjaWVOZXF2Swp6a31iOGhRenwteDFgcWxVWk1tbn1ieyQj
Kl50P0ZzQEdKX0VDU2ljSih3VkRvWHA/MEhFbndAM0l5PkxCPnNgQ2IKekt5TXYjO1M2QVl2bnRe
Wl5AbyUtYVQqMEp2UHA7QHRKN0kwUHQ9YzZWa0ZAZWZtaFBxWXltakBBJGM0Slo2fUd9Cnp5ezBT
Zmt8O0krPVJBMHdXRHxIPGNTIzckPnVeIzBsNXo7fSZqVEFvZ2RtN08pKGwoMUlmYnpPWExNbW1f
SjM9Iwp6bmB4SiVrYFNwZ0o3alVtUFAoLWxAenY3U0x0Mld8Z3ImRm9JIzZqMklRVzNJIXgxRUc1
czlBd2E0fDY1OD5qO1UKeklleF9AaTQlZGZNdHJaPEptSH02aUhYN2J1TkxNNHF8STFeKk1fPU15
QktUQFY4Mnk/aDdAa193YSZoO1U4MXk3Cnp7ailuWmt5c2E0NStZNyZQWXxuYko2clArN3wzWUpB
MjVuSjJHJHdYMHgjezh2eFhLPFBLUG0pa2VgRD4mUFgrYQp6WjxLaFNFUSl7MHslUDF3b2NtOGpZ
MWBEe1poUV5sbzdkfD0hP3JsQDdFfm8xS3c2fGROIXJrazBKR304YFlaZS0KempARlR3U3I4WXdH
SDV0Zm91M2NMK0JwSWE0YW5fO0xEdF4qQEVFR1FBZVEmKz59PXJJVml7UnE5MCVUNE5OWDJ7Cnpp
WXFHZyktdHJ9VUpxaz5sOF90TXVYY3d6ajszMFZvfn5+NHB6U2k7Rj9XUTtMVVA1fFlje24oazQx
bVkxSlkwcwp6SiVfTUplbVlnTll+UVYke2NxVE4/UVlmQWxwM3ErNTdyVjwtM2x+aHB8JkZfdysy
UGhtcH0pI3hpWWlLLTNfVDkKenV5VUEhKUg0ITZmJUZDQyFyfF44dzRDbytnS3ZXNjE+YzAhdnR6
RnRqRG1WcVIpcCN4UHpKMThvX0FsbCNUMWtrCnpxUF5vP1Z7NENEK2skNVVrU09VajJaez8ybE1w
S2A1Rz1SPkQrcThDYyhfaSpUZTxASylVMn1GUlRfaXxwWjh+Kgp6OG42YklvbVNZLT00Klhmamw9
OGNBSiZoZnhmKCRzTkJheTxFISk/PVN8WXV2aGo2b05oOU9+ZGMwUGpmc0B7PWsKellKczk2KDhO
UkJISDZnIVpaO0A5K2UwbDxZSX5GZElyOURGNWIqfmhETVpMRGBHTUxRWH43e2k3JG9pbF9OeFEt
CnomcnNoMUI+eTdzN1JpdmQ+a3RxcUVTO31lSzk4fj9GbWVicE98KWBFZk5CQV5mT1BARXkjcHh4
O1E7NFEyKX1AXgp6QEM2WGd5TU40SjFuQV9qSSp9bEEzV1EoJGFKJkl7ZzNrdXElPX11WCpFVGd9
Rip4I2YwSEV4RDg1aysqZjNoMz8KeitoNDBnbzdEXndRYG44N3M7WkIwaDxITiUhTDVkLXl0P05D
SDRKO3YzMFBuRjdhJkReJnRPKzJUaD4xYjYjeCkkCnpUfHxebGFQSDlDcGpVKkNMVXEkUTcqP20m
cVhYVXJRV1NfMl89cFB7JTY9JDxmUmtgYEBgeThzSC15KkpKQl9MaQp6YzAmTCZvV0tWYChiV3d5
VVB6UzNmTVpxK0tDUnxDaDl1bSo3WG4hTGZSLU9oKiNLKUhGZm5uWmRNTiFGdCswKCUKemNgeUV1
JSR4JGFXem9EIzc7OHJ4YkNsO0JMYkpPYVA0aXo5dnI8KnY1JjtQaVFaUiNJTVN+YyUhe1hRbGxk
I29OCnpyKWZzOEFrV1NoSz9fK0kkTS04WENEdUppaDhEM2Fxa1FEcFMlYU1CRXg9N1VwZmJlWTFm
b3I/JVp3T0YkWDl7dAp6ZGcrcyRjUW5SbFp3dCRPQHo4TGFqYiopLTVXSW5OeiFuNF8wMFc2UkM4
ZWQ7ZTEwUXRRI2Nwakp9bn4jdzFfb2sKelEmUjh+UHswNzQ2eDBmVVRHaV5AemBLfk1TT2FzPkxB
VD8zWn5ZekU1WXdwQHI1JjdtcHs/NGo4OzVIaT9KOFdDCnpefVgkP1lQQDRSIWM3amFiTzJAenAj
aVpsKVdkJFNkSlBxcjhOUWE0bHxsVDstbiZXVU0qJUFjS31MP3FeT3NaNwp6SUxjWmZjVXJaTHB1
X2A1M0FXKH40RUJxKV8hUXZia3pEODVuciM4VndNYTdzPFUpV2ZfQTt0QzJkXmJVYEApQFoKejBj
aCM/bzc4Q3owPzQ5M149cl5DMkNob1RNNlhCZWRjZys1YDJvejEmTmZ1Z3VWUE1MVUJEKm84JWRs
V2g7P300CnphdjlERFBQRTQhRjRXTWFZQXFfRnMoITNwbW52PiR0fmdGeWQwc1h2UmFkKE5MXk8t
dnkoOU5eZGJEM2kweEc/Qwp6dysmJW1BVVhtejFQY3UyTV4jeWZ5OWwyRWZndCNvI282cnFCflpC
ckAkbkVSYSpRT3JMRGBUeXVxbTxadHY5Oz8KeikzZyVMQkc4QzlmYkozayliV0NyczlkND5BU3Am
O1A8a3VANV9sfGVKfXMmMT0+MjFGOW1XQ2lLPykzdik4SWk3Cno0VGwzTGJPMXR1ZldDXj9HJUxJ
O1FEZVRtS09HZUZwRFhGd2J0elU3YEhJdW14JmxWK2dHKS04cFkrP0RnVGo+cwp6aH4+Z0RnYSF2
aG16QXhaOCUtbT4tNmNhKWl+dzd0YTA0dHVRVSlOU3U+ZkMrWSNZYGFUTHBwYGlVcHlsMV8hX3AK
ekQoV0VMZ245c29hdU5Ncl8maUZmITZaUUBaNVZqWEt8ZnFhQD4hWDxmSE1AcXV5YEh4e3Y1XipB
VnBzMyZDVXAlCnorMXl7KzxDfnojMThURSl1aHliKVArLTUmYjdYKH5aJTdzPEhsPHtnQU5fa2Be
OUd2Vll3XjlvV3BKTnp3d2d8VAp6RENZWGJTN0gyTXEpYDRyOFk3P3ZxVWlQSldTYy19M1M9Pz5i
T0YpMVZnVU1fPXZjMGh0XlJJckYhLTU4IVppfXEKenJeZG0oRWhnPTRCO2hjXmUqbl8kQTx0ITFs
PX1jNSUtWjU4aDBvSXpaaCUhT1RfPjtlVDxpYXNaNXs7SDU3eylUCnpoSm1gcHkmPDt+czMxRHpr
PzZnNzgjSXtiUEcwT3ZNY2lHZm96VSlyTFZgVT92QjRmISpZZnM8eXB+KWg2JVlOLQp6OEI8aykl
MT17V3crMnNvWUxXR0o+eEhKJm1PRlpQUG4+JjV0XlJpd1YxZmUjQWpnNGo5TVgjN3N3I2E5NClB
RUYKeiNRK0VjJnhtd1J5cCFPYHBie2VuVUpnaSsmWWM1V2o0cmB5WkdxPGtJLUZCVGglVWNwOVAj
YzAoM3d2MU55SH40CnpOM180RntzSCZ9YSZzdEhmMD87RVlwVCZEJjtTWl9QOVdyOTUyb3BgekY+
XnlqKWs9V3ZlWURfVCMjXnQwe0ZyWgp6KUZTNTAxNSNyWHQkMGtHaDM/Iz9lfkx7SFdkNipgVDRX
fGsjOXF1TjtsYHRoYSU5Rmw2ODlhRGF4WmdscHEoPlMKej5nc19hQSEzPXdyO3c7Y3VBN3RxMlo5
TnRzdnQtUGcpSGNDN3pfYHZOVj4tJGc0WFNCeVBjIW1kSStANmswWnVXCnpmSCFhZWZrbj0zWikr
R2lkdWFFSnYkSmR2QXMlbGVXNkh3YDJAekQlTVc8JkFEfE8/KilBPXExPnklS0tLX1V1RQp6Z316
eXlMYjNxXzFZbEhRMHdsX1NzMVc/PyUtUitwQTAqNlYjME8meChhOyR5O2BPLUVfLTkoeT84Kk5l
Mk1aJHwKekleRGJ3TF49Q3t6RHcwYmB8N0psN1RSMHF2UGNqYjVPYlUkWThRTE5ERTF6IzIlLX1M
WU18bDwtVyp0fXJoJGxXCnpeNG5gb2xzYXpiQDIlRiVLSHMqbyhrYGo/MVZaLWhVenB1OSZgSH5D
Zj02c3c5Qjx6RUQhcm8jZUtzT2lQezsmQwp6ezRWfENCIUZCMWQ2NjFmQkV8UyUkP2xKQHFhSDZZ
RHNpXylwOClxZTQhezB4PDteZ0RxX1BOLWktPURlI01ZQUMKekgrdnZSZCNVVkdrX15lQmJtP0ZO
RXdgdGMmVmxYRWhjJkxQYElBQzl2d0RyQGYtRiZUcDFhbSlEIXR1fSluRkpnCnpOc05IeSt3VXgo
QX41bzlzNXB5Z2xWaDtSOHcjaGAwdVBYRGo+Mmg2MTd9KVRTVGBgQlUhN3dRamROXz8pWnNaTAp6
aClTN1FtU3sxanB0QyszWkt4fkA+dk89QTZsQG1aM01oLWh4a05pblBvfCpeY0BBaTBMRkk2dSR9
SmtXOSphUGoKejhabnZ1anp2aXE+PVNBUVlBNkhlN1o1ZXM/WldhczhzNGZOOSFLMXVhMVFuZDdV
cm1HZUVxUiF3Qi0mT3p6d1MtCnpCJSk8fCNISmdCT0Z+aXE7XlphSHstTDJme05gSzVCfkUkRm02
Z3luaHVuaVpiZHZ+Uj0oVEVUezFIPUBFbXxsVAp6MDVuRjtMbi1pTEZmcCkhTittIXMrWF9Pd1ok
WFNgdyRUXkZkcitTUT5TJH1gc0t0NjdReCR6OCRANEtITW5+OXMKens8fD5EOT9YVmIoOGhnRC08
TGgqWUR4O1o5JXs7Ml92OUA/Rih3SWcqJFNheSNuUWpJRVdQSzFoSkZJdy01XzZqCnpoZEFrUlhL
KDkwSWRqdGxlMGlPYmBrdS14T09YQHl5QCs2UHhiYEBnMXxIMGNQdElpaHRBbytTOUp6VHgoUjx1
eQp6WWI3Jl9NQzBfQ3BMZk5QKGt3dEI8ZTU9eDU+P2F5JGFVKk1ufGAmJmEyanh6PVNuSXx1SDhh
N0tMbnYzUSpSMHUKenNnTE0ycCsqanYhUCV9QUApZEMxRFNiOTNWWHlJSk9QMU4yYlJJa2YqKUlk
MTljT1E3KGt2QXg/U3clc0N2aDZXCnpKbWYoKSloaDkzUV9XIz8hNG04YztqMWJqVFF4O3hhTyFU
VzUoSDUqfDZCKmllR0NrWldWTXotMUZ9PTNaV2dWbwp6PC1QQGR6UDtiOHI8a1RjSmhIYHM7Zmsp
dmxMPDBuY3g3NENENDc2bEchejZ9N21sbWpZOSlicktgaml0QlBgYjMKejIrJWhZc2g9aEJUeD5q
c0QkPnRDaUh7X1JJc2leNmNqcUAyekx+dSMoWTJCZEdGYW8pKC03bVVmWn14PEQpRSFoCnoxIXB8
KDB6cnVrZGJMb2RoVHp9UmdKY2VfV25UYmEzU1dSYVFCej1LJmhsRzdsdCVZJSVjaTFUWHQ5JlBr
SD9NWAp6RT16aUBQJW1yU2hWdk56akkxZSNiRmJDKCNVcDFGOFFQMF52LWN7K0h4RT95Y1Y9Y31E
RGdPZTs1fiM4NU9FV28Kek11Zkl0KnpqRztoO2pfUThXY1o0VG4kZEteWmghcD4ofDltYnE+XmJH
fW01MFE5RXlGOXUrR1NxcGVQfkxNVFAyCnowJjtnS3ZPcEVeIWQwWjgyNE42KERYVDE1elZCKEdN
d1cqbm1nSkF3YjNxbzRBYV5KcF9YIyZfZ0Q5byoqMShyegp6P0FYRm88XklJKmw3WDFyI01eO1Vm
cStsNyhCbHxXIzg+TE4ld05Ie0BPeWFrYGpOO15eWlAmJSpWRmBzWmItS1AKenVSdiQ/bUpvb1Y2
SFA0JG1qa21tJWlfRFc+SWpINi0jcH45biR7cX1nMHtlMUtAb0lQZm1pbmtKUn5BMVM1WDtCCnpz
NUl8RFVLYnU3d2k1TnJRUXpFcV5KQH5kPT4mfDhLIyloJmtkUnZlaEVUWEVgI08laXdFcXNPVHp2
V29PTE1uIQp6Jj5oemwjc1dIXkAjbmVyQXA3TExvIyZGJFFnezBiQUhEY0tzKD9kKUBLMmAkQila
RDN4TWtWQyQqI1JSS1J+PFYKelIxJHpmO3s/SjNtcihIK2ohNlBJcllEQnBAa200anhqSkNjYkFz
d0pJZzZBXj1HU0VSaiM7OD5CXypEcSUzUU5NCnpTQSYjIUwzTWhZM15YZzgmbDFOcFNBZGc7QVdk
dEVsbkI5YEVXdVF2K3B2JnJ4RHlJPmh3aVU9RDZkI1I8aXYybQp6cUJLJjVGXkE9aEFULW1tISUx
NWU5aWU1MU1rcWBWSyFLQDdEU2NDU3w4PmEhIXlUSyg3UkQyNjg8NmhwKGRUKiYKej9Bb19xNzAk
Qk1nJjVKfjV3VnNDV2QqUW1Yfit+ZXB6NUk7KGRgOWtERlReTE9AWD4wcy1kQjNiVlZwQ2hCWS1R
CnpSeSYjVShTRHY9ZyYjdnd3Z2dIJDBuaiNhVG98ZFZhSHxxR0RTN2lvT0tvSG16VX5VTnFyZkA8
ZTR8MTsxUk9FOQp6QkBVIX5pSjFKYCEwdiRhNnlsQ082emJxKTFmdldSYlhQPCNUKmMtd1Jrb29X
TUxEfmUmVDgoTGY1QCUhLSkpfVUKeit0Z3x6XnMkeH1qOEBlVVhnS2dCNCZRWDE7RHQtSFpTIVpr
Zk5TYFZBMXY/ZipkZitodiRFP19pWUUtVXpvdWp6Cno0QWpQVlU5QnBLMH12Oyo2Y3c/K3ZiVl5C
cV44WHd2RSokN3VWTSs8Nnh0PUlEUyFqVjVkJHktPjhwcj12dytoRgp6d1ZFJU9IOSNPKF9IJEpB
TElYLTAtK1NKSHV2YitiJWtDKFBCVlp2TXFgZD9sPlYqQUd1dTE1QyFaOWcjVTFVUmEKej45QVA1
WkQ+JmU/YD9NKD9pPkx8TnVNVUBeNkJkN0EkPTkoWkxWYShndmpnSHVQWCNKdkBOcmVXSj9tTHtA
ant5CnpXM2M4WU5XZjx4KTE4N0Y5Y2BwJSZZbSEhQlRPeXApYV8hNEdOJWh5I0RfOXxxezAxZ1RH
UFF1RGQtYXtTR35JYAp6KHpGbTI7VGYza3ZvblhQZm5acVJ7JX5NVVg9P05WMyQmdTJnVyUrTmYr
PzdqQn1tNytSRmNVNkZ6dWdUTGNEdVcKej1QS2VJS1YtTyQ9YSNzOWM1bXRJX1JqRjBCb0Ard2do
WXFMR0FZV2dQOzNWfkt5QEBZcTdERzlkTCgmeElIOH5oCnotNEIyakQzNWBkM0AwOWlWOTM+Z1Q1
fDlQd1B7WDdwIVY+KyllPFdtN04hZmxTYSpgWGV8TXtDTF9xJFJ6OEtaMQp6Km8jSGpoS3JlWXp7
YWh2KVFZfis/eENVO3lTb3kwVUMqSD41ZFp4N0lCRjF+N1VzTVEhISlDbCk4Nnl5XkFRblEKejYl
NWs1QCR1KHhTYTVqfD1ecDx7Wn4mTDskZzR3KlM9dDQ9VDdoM0c/JkFBJlpfM1leSn4zcGBeRSZC
ZWxmQVUhCnpBaj5rN0E3ZUg2VGAhQnNtTVkhJUJgKk97MyQtNiprKTI/PypWT2hkKFY5NE1zfk18
OCZoWGs/PzZIcTdVPiFyewp6PC0tWmZsOXJVdj8tODs2Z2AwRWpseF44X25kMzZ0RztFVFJGRj1h
JTNGTDIlRm45M3kqKXdHIWBiazgoJHM5NGgKej5ifXR8ejNiTyFXNj1gSEkkJlE8aDdSaF8hQWgr
RFhGPnZfc2xeJHVYOWtpNWJSeEVsQDxGN20oJFl5KD8yNzdJCnpTXylRSFN5VTE7Zip2IUgzP2I1
cjBiRmskOXlsJlgjMlFFYF9yfGlzSCNGZUEwJmlaaDs8JHFMNFJ6fHcoPXM4Nwp6dGtrPEpnM21I
O0hAJkZ7NWdCbm1vPGV5MVN3P2I8en5qelVoN0ZuSHpSbHl0VSh6bmMjS2VwJngmfTl6Ry08dHEK
elV9dDd3cGBvakw+RT14KW0mekJlNXw2czlDUEFXVjZoYGVWI35NT049PiE3Unh5QHxPaS08aFlF
dypwfjEqQWc5CnpOb0FtNlppWXhsQys1ZmpWO00rMjI4dSNhYWRBTz9IZTlEcWYxOylEe3tIPkxR
K2B1Z0B3P3A2PEwkTE1YWm5JbAp6QF9+R2slWFBJSndFLVc9bU0/fUZVUXNJUz54PjtibzU0cVFm
KndEZXc7e3pMcklXVWtUWT4kfnNoOCh6P25KY14KektsN0YhPk44d2x6M3FKMT96NkNKSl5aVFR6
T2R0SUJfKi1PXitCVkh1Mz9WIV56X2BQUHA0O08xaTRESUx3KWh9Cnp0NT55e3dabFhRVEg0eiFw
d0J7Yz49PUNKbWFYbCUoeW5qYzAkfn1UUk8kJnVJYk1VUnIhV25NVnY2MzQ4fVRBYAp6JSh9WHxG
O0FXZDhveGpBKEwjYHBqO19mKjMmenpuRyZIeipjQEA0MmBQVWckSSR1ZllkX34yPGQ1RGpDKjtM
JHYKejd4c2dRd2MoaHE1USExTipOeztpRjJUO1haMWZMaz97cipYcVlVLWxxJSRRdGBvPDlWVyh7
a1AyayorTGxLVig5CnpNWE9gRXpMMm1temZDWFNuVGo4NVFyaXBpeWhqZzdCfUc2cWAyNkxJZkIh
cmVlZlhFJi1qPGlMMFdHYnF4R3omdQp6ezkhKUtSUGtoZiZ0PSN1MDUpMSRUQXpEK2lEYjAzazA0
RG5pe2Z9QlFfR3ptI15icl9lanFAMCtnbHBjZH14ankKenJMUipyayRUdT1icGY7M3hvaU4+LWll
PGtvenpQWmwzakN8QXthZTxBWjMhcU5rI3B9NVQxaCRVcWR7c3lVd2tnCnojRVlVOzc8PT1uKn42
ZDh3XyR3SU1Xb2pxQyo/TU1sdjJaNnMtRGNMYD13QGdZSzl8UCV9Z0skZ3QxNWBmKnVnZwp6aC0w
fkxzbHJORjclODsybTUpPXRFRy0ybWY3R09xKjRmel4walJYSkd9PH1hQTlicW0oMTFRbksjQ147
Ny1zfFAKemplJUV7bW8xOXU7SzczK0NgX0FRSWNXUVNsbj96OFYzRDdnb2FCYz5EfEBSeGd+WkNM
IWd1PVk5ak94cCVwc0NZCnpIem0qaFNeWEQwPG9wTWY8QjF3U0hqR2d8bC1EWlJWUiVAdz5ZdCQw
UGpGP3pfd0w3Z0lBSU9lVVJfUi1CNVgkPQp6UWlVc3FIKyRENCNsK0M0YTI8dyEoY3g5KHBzdCZE
RiloKTk7WiFyd0lDLW1vQ2dJOG5YdDUpYHlsPnlNTFBKQWEKeks3REY1Nld9KiVwKEcoODByVUNS
LUt9eCQ4VkwwRXQxQjxvP0RwKWpmJDBMS3BeUnZMb3RITlNhMUQ8QSpySTZYCnp0KGRIPWxUc1RL
aHBudXYzaU5WZU9IN0xVekxPUGBKbUBibnFgclEpJDh2MyFfcF8ycCl2PGwrekRzSE05UVBFcAp6
cFIwci0ybUp9ZzVHdH5aQXZ+WDI0aWE7NkNDflhPU3tCUkJTUjI9Nyk8O2xoJlVZUkQxZ2BkVlpa
MFotO3h3ND4Kem80KUZYKnx1QUU/cl9xUTNmJWpwWl8kd21qT2ZMITlVVWo9IXw2M0soNzJQQFR7
bCZ9ZUVFYF4rSF9XUy1xP3B6CnpgOWVvZXVXV2NDcnhYLUtGeXVEUFdPSSVJUD52WFFnbytBcl9f
T2RyTyV9IUl4TjJ4PmhMMCVhTjU5S14mfURWIQp6aUYjNytwfnM+RnlvSVhSalI+VGkqWSZrbUBv
UUJPQkgma1BENVNoPEB0IXxlZno+blJpOStVI0hCPT4mI009WVkKekRlQXUqP285VFF5M2NIcm1Z
eUNKOVc1YCkkaT5OZHV4N1g7bDJ5Sy0manVkbFNteEpPMnNSZyRtNmQ2d0psYCUjCnpKIzNWZG1C
akA+LWZVYXUxaEg3fiZVWWJMUU00MDFKeEh0OChiMThjaGxkck1GJF5aMUphdmxyTEE/U1M2KHJo
bgp6eWhsOypodnZ1O3g/KDM/LWxPYjxqZ3lYNHF5KXFWQEkrcitpUDJDPHk9dG0rdD1XaihwfGtO
KGNKZCtRVnVASWYKekdlMHlYa2FNYE5LXlpRfkAle0lNeXtBUH5zcV5MYkNlLWRHWE1Kfns+QF9n
X1lHQm4xa3VPfEhRcylqRiMrKjJICno+TENQJj07ek5iSjM5Kig+VnpSVUBhMm5+eDNgbyp7KiYr
RF8yaU4lM0NTNT5ybDtTQiNCcGhQYEVgQ2k1RUhqIQp6eVYqSSM/SjRFdUAjQD9QKyUjaipYJDEy
dzAzdlkmRUZyKjloZVhFNXg1QnNANWtVYWh3JCRiaWNLRkgxaVBxQFcKend6aGghNT1WR19ifjtI
KUJGWWVqbVg/LVVue3l4YD5pY3lAc0dGKkQ/UEFCRjhKaSFtcT5hP3JeRUlhViFHQHJpCnpuMVFs
T01kJFFPVEBAVyshRTJpUmMhNGVxNE5PVmlpZ1EybndfYnFkeWVUe15HNnl7TkxQQTFsVWhQOSRU
WmtlJAp6KGYpUEVtM2JWVW9LUDhLKWMkRjRodCVfbzNAJmlOWnptcEs9SH0pJGY+SHVacV8mR3FH
ZDRZOVlKK0U5YUZxYUcKencrSzRkbmk/OCVxS3B9TmQ1PDcmVDNNWmheWDJjNGh2cn5fTSo4O2Mr
czVOZjtiRkE9eyFyUnJrWitiP3JUX3prCnp1TE1ncCRuVmp+PFh8S3AyWSs3YGBBR0pgZ2Z9KTQ1
X09VdHpMaW1XcFlYSD0tKmNMQ2hqYyNPITN7b0F6K0okWgp6diExTSorYTB8bUNCOVdRP3R4PVU4
fnc+Kjk1Ukt9cTlXPn5qXithNmRaR3ZRaWdOQ1hpVWVuI0pWZk5zVjM8b28KejkrO34tSXhTR2tn
b1JCbERkezNJTFdsLXJrbGdfNElFY1Q5aUgpVnBlbTw5LUdiYnFzKCE0K2RLaClkdzxsUEZWCno7
dj5lOGpONV43dE9BMDllUSQwYnR9fWBSX3pORTh3eWtaR1JtcXRCb0JQSTAlUUJCa15HV09XSHsh
an5teWJfQgp6YSgkJHlCKl58MCtHdGdtUVgqLTJ1NTh1NmZqYXYwPldyTjs2TWpVNHZtQTkyVlZH
e2dQbll4MXFrXnF8e1A/bGwKemxgREBydz88YW83cUBvd1VIWiUrekt0KCRoezlSMjdrX35xN0s5
M3JQOzclX0o+MjtzbUBpQ2ZQIXdCeWRPeUJNCnoreUQ4Mmc+TFJPUDwyeFNDb0MqMW9SKnBDXmh2
bWYmJE5qJndYRUt2Y3l4Sz1tV0BxWFA3ZGhXa2l0SEw2KmMrYQp6dVFPV3MrQjljJldXQi1ZXjVm
Mz8qckBUTl81Y0ArTUtwMTdZdUo3NnFjaiNZJmwmP2lrc1FfUms3KEIrT2U+WkUKemtyX08la1FH
KVBjZXlvKVc1TGJpQExoKlY/JFpqRzVpUG5WZ29jdWs5NkVIeyM+UTswIWcqcTlEa1VaYnE4IU1o
Cno/THI9KlZROG8oRk9UbWg7fG9yQERVOXl4blo7X2Y4IWp1Z1cxdHghbHJhI2xtXnZ7JUVlUCh8
SDJrcD1oa3ZVWAp6K3hoZClwe0YoR1FkdGZTWTkzeCo0elAhYVg1I3lEeSo4eVRlZ3B7dlVwdT4k
WFpEP31YTDd1WGp0VXBlUUs5NyEKenFrMG9YIVJMaUstQDk0OUBscUNnWmM/Y2woJl9LdmVxVkx7
NXBuKkUpK15+XztmbEJLKyVYNkFncnFFP09zMSEmCnpoWGE1RDx9Vig9fEk1bkNmfEVaMm1samVB
MyFgKitvMXA0U09jMWN7RFRVKDNoWXUrTFJzZChYVjFgdXJYZ1IxdQp6WHgtP2FXc0V3Ty1AMUp9
ODlvMyRjND12Ozw+Tj04WXZ5YU41XnFYTnNseWZGdGtLWldBayN5VlRTRH5hZkxRPm0Kem5TZnN6
VksxQyE9ZFhKPUY3P00lTnV7Zmg2Z1AmNmI7c2VHQGNZci0/QFJsdiFqO29xJTFDOHhMYXg7TytU
IzNgCnppflVgbi1vQVVKRDhieHBRSClAbTE2WEsqKUFTWEgmSmJxPmpgQmh8QyRwKzUwZ01AZkFf
UXkqIzRtNXQxSlp6fgp6e3BMQzZET2c9TlM2e3ctMzA3Y0IlZ0NUNkk9fm1OMHVEQVNJfnpodF5V
UGdwQCgxeCFVZzglblR1QFh1S0tDNDYKelYxMzcxfEk5SisyTFlmSk15SDlkbUwhRUBESSs8ZGNU
TFVMMX04NnsheWJ4JTtzKV9ZM2wqKmNvbXhoYjxsOUd1Cno5dWxoeDhXO04wQCMhOTR3QS19czs8
VD9PUk9zMEgrKFNePFhWZGhJYzVeSmllWE8pP144S1ZFWnNmQ1BBQ018OAp6UXRTbEthT1RPTyVF
MnBPKSE9aSVvOT1fOUNOPn1VLUpuKnBGI3hVS3pKMkByP09Pd0VRVFR8UTtYTERVTitOWWwKeiU+
YU8wTTwycHRpX1BUfWleQmlINnhKWFpudEQ7Km4hRGNfQEVDd3Vma2A5REV7eHIzPTs/Kl8leUNp
QChIPVUqCnpNUFRZKWtXUSFAQkJgKXt1ODdwJWVEWH5uJVF7V2ozR093bmwmKDxnTW5ySCUzMWBa
amttU2hjZlFVeVNRXzFRcgp6SXk7T35PenNFb1dUeX1ZJGZrNjFBQU5XcXl2MVFzMHhfNExOUm1P
PUBnZXwxQCgxLVQpM0RyNGEoKkVqb0pATk0Kems8MDFge0E1dS1ZRVN2RjV4fDYqeGo4ODgpV1Am
XnhVdSVOPj8wNSlBLT5VKWVpO34wO2lHTEJ3S3BvJUxHcyF0CnoxeTReO19YSHVOKGFWT0xrRTFC
eWg9bV87JmlyfmkkTTRJKHFXODsjc1IhaXYqeyV7UGpDfldqQUl1Wn1zX3thRAp6OEppN1dqbGE/
SFFOY35zZChBbFB7S3hQX1p+TXZaPn1+UiRARGQqYTxwb21KdWRYbjIjZU0yallFPjB1RXMtOTsK
em88YmNgUD54diVSN21ZQz9WP3VXQzMqR0xhTUBMJlkyajNMR3UhRlk7U2QtISlZV1VAJHNIO082
KGR1Z1NRcU5OCnpkaXxROzV4fSt2eXItNzdIbDUoRGQ1e287YmNoY0NJbmVUaG8mPHExa0VhdyVa
ZkA/fExFRl5wK3p5LTJLUyRvXgp6LVJINTtTNV4hTDxecTFMSWVmU2xzYFV6XzQ9PmM0NWskd0E8
fj0/dkItIzZlN2JETU5sfEpsd0I1eDEmSWheJH0KemB+eXpOYW13Um8mcWp6alA0UVdNO353KGFe
Rm5wY0R1YzcmITBrb0Q+UEtydz9MVUEyWldXVkg7V1RULUQmc1hPCnpsVExGYl5RI1ZfMD4mOWRV
eUVXb04mYU1ZcVVoR1pFfnw4U2Y2MzBGPkUlJi1RMyU5dnd2Y0tLVV8/ZDBFPkpxTAp6YDFxN1Jq
OUt5LVF+ezlkRGs/NHhIQDArX3s5XjwlUmoyY21LMGR2c29OUGlod24kc31OPks9fWxqc00yIWoq
dyQKej5uNmdMO3xmV0clNyQwPEl8d2YmQndrTnF5UlA9VHc5Zl8lNiVJNntpemd2cjBrQk4+a2ch
N2szX1N3XzsyVmc8CnpZKkUyYzlfV1ApNHc/RX5uYjUhV0VOQj0qXzxjelE7O1UyPU1kZV5TSUFf
UyEyKmt3MTZsPXtPVkJOWFhYak1XVAp6KFl5aDNGcWMkUzh8UGcjWntBY0RXanQ0IWlScClYUHBH
S3w2PV9iJDJgQCErQGpLNkkxeVFoRTBoan1EIU9ZVDwKejtTZGBNYzJnR2JYVlRRRUN6TUtlcDMt
Nzg4Nl8mRFJkYFFqTFVxMkFQdkpjIXgkKGY3XzIlYlNrR14odE5uSWhPCnpUcDZPKyQtTEE1O1ZJ
ajclbllQKz1BaUhfQnFFey0oSEwkKktzIVYmRVZkT2wpaVJ9K25SZHJldmJJbiE3ZU07Iwp6KyNK
OVhsPnx7Rl9pPXhGZCl1WUgyQEo9amxJaSY7TVJSamJaRWZ1WGMofndrb0BHI2xDOyUqT3ZASFYr
UVA0angKeiUxQ2JONiRNQHllbmxWMWhKY3J2YEk7I1JYTXBRVUxRNjBlSkZURl8kNjYrPntvfmF4
MUtWNzcpRUdtPkF8RiZpCnopSilTIStifFpZI0d4USsjems5VFF1dik4SChaK3gmfTdhdj5sQEBt
byl3JC1Pd15PNV5FPj8wUG8kcFVHQyEzTAp6Qzx2Uy1kc0ptc1IlcUY8X2o0R1RBfWl9eHdYb25x
LSF0I0I0QTZzNGw4ZFFfc2sxQ3xJXj42Wks3QFJ6M15rcGMKemY8SXRYPVlQLT4pYShRLXMqQyNQ
NzJTQXZjcEFuWEFmU1p6JXIjQ2cpMHNtfFByWFJeXjdVKG8qTTEwQHlEfTNVCnpTbEhVeGhNOWdn
KnI9MmdIVWJMZmtJTm0+KCgyOUhTbkwhbV8hI29IVForTXx7Y3tjJFZsNjVxOFdfeiQpMnJ8Ngp6
YUFkUlRkX0kkQWgoXjdQWkNhWTJOWVlXMXpwT3ZhIypmcDlrNlYzUkhtVUY9YjQxeDN1N2ZCZUpP
eU4kJm9UaCQKeno2VSp5Ynx7WWRlVnFadjZCIXJSMVVVOX1QTDdSODszKm1zSXpRaWNzQDJDN2w0
OUhEUnZgZmpKNGcmcCQ+ISk7CnpnTzhBKGh7MHE3YjQyczIyT1pPYk9EWWd1ZHFJRUt5TjBFNUBY
P15IJGtMUyt1UD8qZFhPJikyakRQOHVHclN+OAp6QU1ROShpJVpUWiVCUzl9XzIrSGtHSCRDZDZN
S3tyPW9JZ1lDYVJwYyVeV1RpNXZ6V3tNcGp4WHJReTlTRkJjSz4KelN4ejVVRE9sQntHWVVfaXR8
ak1fck5qdWg2WT9IPyRpSjxPeHVCJDxfU3ZITkRyOXhndXlXZzM/YipqfSlQUHh9Cnp5KE9NeUBT
OExjRFRkUUcwJEw0Y3E/V3VjUGVHIT42PHhTZ3s+ZWd+PUs/c1ZAYktfM2RmYHgob2dXd1ZMMkN7
bwp6SXNIU0BTeEkmJUQ/bzBCPVo2RE0xcTgtJE1xRGJ4NFhEIyZxQj5BMmN1OzBAazNBfipZTmlv
aUZ4dEFuemdjYTMKenBVdT00Q25uRmt5X2F0bmhnKkV8JDVUMGFoKVhsQG1LR0sxZ0BxZiFEIzkl
TS1BcVFrMTttZz5DQ2BYVjB3Q0FuCno0VSoheGo5RkU+YmNxISp6V1MjdHo3MDAjNHdGQkNZeS12
anxJXiVpJDgtSV5aUjJrbVN9SyU4JFM1aDE1d2VwZwp6dlZ9NDt2czF7WE1UI194JTFVS3JXcDY0
Z1dSbyhKJHxpZXJBRnR8clVINWY4P212SGp7NjNHKjl9ViQtanB1bkQKej1XIWg4ZDhWaUg1ZTRB
diRrJFE9ckt+NWYkam5pU3FZMTA2S3ElZlQ+Y2o8QGA2P203QDhxcUdzX04+ZWE4WkR7CnpgMCEy
NSU+bFpVZnQ5QmU2KTd0Tm5mc3dTe1VWa1dnSXtxajA8Q1plaGFiUF92PXpjTm8/JDFfNUlfR0Rx
QjlUaAp6IyQ2KGNOXjA9emtIelU/QilfTUEzVHRQI2VWbCRMLTw7YGBhY1Q0NFV+JD9eRmxfSlJz
MUkjQzBxK1pEZiZ8VGEKejExazVedk41R20rZ2wxVih1eVU9ZyFkKTxTaVYrcTN9cTtPJT02LXh4
eTRPK2t0ISozKUJgOHxpWXVWU2JMYHJwCnpzLXJgY1UmSTBfYTBoX3ZzIztwVUo+eD5MP18yR0BG
PmE/b0lnVSU0JFYmQTxAR25iREV0YmF4O2YpWHc2I1J+Twp6Pz04KHQtYGQmdjJ7STMkaE9YT2E3
Sk87R3o/YURRVjc5YjU4USVmdlkrOFE+MWRmbzw2dipKNm83U1R3RGY/UFgKej9XUmxKQ2Vecigo
dTN1Y017ZFg7akopJV5gcj9fYHRwYG9qcDYpUmo0TEsrZ2VAd21jYDhePzlSYEpkYyRKRHA+Cno/
K0R+aWFOZFZyJmphRyhFNndaPDklcTc/MWZIVClzU3NsZFdHSkdieX10cH4zVklRflY2UF5Pe05A
bX5UVXVMagp6KyZxQEglbCpkLVY2PmokZEY8WTtUUD5mUHYwdH0oVWgoP3U2VG5WWnB3cXtYc2JQ
YUxwRWc5MWpLSFROWjshM2gKejhKOFBiayU/fVU4JTRpKDtmO3JkUVVIJCtAZX5DJGZtaVlUbGFq
ZERQT2dHVUsycVFgYG9UN2I7WUtqaXh4cEwwCnpJTll7NWMlQSVZU1lebGt5MD87I3d3KXB+SXBG
WCZQQVZNPnQzfTBqUHRKdS1UPHBtZVZlNTE5RiV9bE5UXmxNVQp6X2FTRUMhbygjU3syNlJ0YlpP
K2U/dk5GcmtITD5aWTVjRnFUN1ZXRUEwTk07REcrc25LWn1sRVkzXzhpMkVZKyYKejVkcD4we3da
RzU+UnF6X2JubFpjV1BDfEMtRm8xXzBSI2A8JUw0S2pGVmdvY3t9UmZCLVRJbFpKKiMmYktNN1ph
CnpwOWY7Xj9BZiF0KW9yKEsqTTxwQSFOJkNyaW4md2JRO3YtcWVwfmtyRWhTUSVXQXJzWGtwMTg2
WVU2bjVzRk50cgp6UjlMT3FAYE9Rc155bFdpQjt5SHRNVDRHR0JgNGJpRDFBI1dQMmFASlBOPF87
VUhZfWlPJGV1XjQtfH1Tb3NYeG4KekV1dmZiM1h5anxNTHdOfXAoYE5WQUJ7WHVBfGgmY1l3NWwo
YmVZbzV5THRlcWAjV0FBNlAhZUNGNTJoTXBYMWchCnppIXJAOFNgQmcjbG8laWdReUBpMmtGdSsp
Mjt2R2RJcmR0VztyaiVUKnlzYlkhO0d9aSh5cUhuKXZtQ3RTSlNtYAp6dTtgJVFrJkolQExIal55
K1ZuSD9uUXkwKjJPSGNacm5qIzxJYFFqYntSWTJzQlZjal9ZI2ZndGVTd2xAX31LZUkKejk2b0Fh
RkV2VXQlPW8lI0peNSh0UHNQR1ZmI3BWanAoUjtuU0laODFmc2RRR2YkNU1WKE1weD5Gc05vfVdr
cSZJCnpTeXx9dDg9aFNRU0FfQkoyMk5GVStVOEp3QXlxVl9mcSZ1UzxNWmRkUElHSUEkSzRCKzg9
RCE5K0hkKEBIbHFYeAp6PDB8elI/RkB1Pl5GREdPQEF8cnU1aERFS09jWjR6aCFOeXQpRHZIRz9i
JT9DYCs8bTVMNEsxdnZ9V0tlc3c0SlkKelRkMjFDQkVPOWFadSlqYl98VzBRZmQ2flhlbilFR3do
PCtXNU92KkFUN2B+R1U1P014S25FejYkaUt9azFzTExQCno1bnp7VGsydEF1RWRtdF5Qd19rfUJf
KlktX3AzUlIwbTtSa1RtYV5BPnAlTWo5QHlVMjxhVFROdUhydiM7WDF3aAp6XkVySFRCcnl9NUpF
Rjlub1YqR3VCcF9AU2J0eV9HMDh6WVNZPD4pZTRLR2VZQHp7cnlFPGtfJF5SRVdHUysrLTsKejVE
TjdRb0YqaktyWC0yPzZkWmgpdEAtcG9CUHpSd2hLNkB8Y1RrPUJHWUNEdlpSTFlBM0tTTmRwZnck
NlArN2piCnokbT5XQkw+QCNIak4pSmxXLUB5OTVlUGM7O3crI24wQTJCQi1+LV5pTms+MkE8eCol
Q0soJlFWeT9LQSslJlVnZQp6cjJvMig9aUxrbD1CM2N6SUR4Rk54KHk9VEE5KElTOGExbklhQCQx
aE1oVnpOVG4hM0clX0RmPDI8KE1LMnRGPHoKej4+YEtjIWUrY1A+PEg7LUxkMV9qVitvbXI7eUs9
RD1RSzFtKD4rJlEhMnI+VElValJ6YXEte0Y/P1hWVGY0RVJuCnpsUXkrem1pfnhWJUluT2BBU19M
MEpLNURZcGB4Y31sU0YyZSgtRHdnWH5ZWmE3WUk3QSgpZm9yYH1XRXZud0ZWcAp6Mylocj88bit0
Jk8jRG1gZGMtKnNiczh+NVRuRzZ8Smt6a041IzgkXjNjQ2VHbnh5bzY1KXUrSlBTWndKTH50Ni0K
emliNnoqaSF1cGRAK1pMPSY8ZGhrdDcxQ0dQeU81VGF8ZHl9UClnJHw7dXBKakAzI0okZXkzekBX
Z0hPQl9edXs5CnpidVYtVDZ1JFZGaWtCfDJwZDZPe28/bCRJKzMtakZmWnJWY3EyYU8xTmU1bjFz
NGNvNFQ2e0I5UnFeKDM3R3JUJAp6PmNHbmpRNndsTjxTSTszPFR0I2pxejEkcHtlLSQqanI+K3FU
UD1eOTYqYytGM0AqPz9MSCh1RXZxKzB1aFJZJUYKejN+Xn1tdypkMmlPZ3dPKXtFSSQySENhMD9F
an42I0tqVDloPzlgWXU9cU02Xys2TkVgbDArRzVkR3gmKWhhfS1iCnpfSEZsbGJTejRFX3RWbmVW
P0l8MFElfnU8ZUt7OWAybH1EK1pKTW43X248LSNPQGtlamwqZTJoPmJzZFlOalY8aAp6I141eTZB
clhOMDc/fnc1SCtNY0c8PSZzUEMwelFmMk10ciUpP1l1c3BtTVhtLV55KUxyWVdtPFJgekBRZXBq
QTUKeiZ9Mnsme1pLOztMfDhWPHhSbWlWX2gqTz5xelY/Z1pJMiY0SShkdnZmVnZDSSljaEhpQXM9
bVBZb2FNWjlCak42CnpPK2toO2Fhb2BtTjFLekkrWURxTyEyc2k1VXxJfHE7RnV0KStsWH1HTl4h
ZyNYXzB8PUtrVn4jYWsrVG9QOykpQwp6cn4kQml7UDw/Z1BybUx4ci1CSipGKSRJNG9pfSszTnll
Mm90SmQ/SWUrYVg0PlN8WEFkNig1VEpNdkwlUDMlWDEKelkzWXUrLT1wPlgmPUEwRT85cD9lZihy
VkZgb0BXaCNYfm1sN2BjVXxjWUdGMj82bG12Jmg2UU1iSj9vbik5WWlNCnpYT1NCVD9CQ0k0eVpm
NT4mYy1Qej5UM2NvWT0lMEA5MGdIe19Ga2J3aHozZG1iOyltNWB6QWkjYVFIS0VpaXs1KQp6IU4x
YGFabTRPX05sa3M3TGIxVj5CO1k9TzE+IStgTntabTs2fnMpMFNnSXt8ITBCZFlYNDBLdF5qM3xP
JmBYdWoKenZjR3VvSXF6JFE5cFRkK3tManUrKyM2aFVjKmxgOUEpQ0FLRHw+RDIyZ2pBS3JnfU5F
RHwyeEImeTlUaTZoP3ZOCnp0JHBpRyptYUIxYSVxI141d2tOT01eK0wkdypneTB7Mjc1XjZYI0E4
aWRCbEpoSlczMStMYVFqVVc/dHleSWpuYgp6e3pUKF5eVXImSkgxRndkX0dLVmdRYD1rYEh6e2cy
NG1eaVAmTUV5JGdpMGY4UnwobH4wU0BDKnB5UG1heFAzWm0KeiYwOzlYcUUrc0sxQTg3OGhRY3Vo
OTUhT09AZkhOPWJIPkpPcHBPV2w0TDJGRykoN3lxMzVralA8WThjZWtSSD5ICnp5Xk9TS3ZPam52
dkRJP0QjRz1IfGs8e1N+XlRGb3oqSDNJYUIzP0F3bGJRSj1JVT19cXMjbEJUPGZjPEV6YXU2cAp6
VWUyaHk/dDAwUlVYVThtaDcjY14rY1JGPXpgPTFReWxMTHl6NkApcEwkaEtiIyNvcVpUPSt4Q3lm
cHM9OExZd34KemV7bT0waVZxKWUmWnxEN1RZZzZaaFN5TGRxciFyUWk+PCgkVnM7QFI1VGY/LU00
JVYrRS0rdDhhWml4UG1PWkArCnpxQlduI0tFaGlFZDxqKCFqSn59NTdEUHhDbVNDbksrQ18rN2hZ
fT12PmVRe3FRKyY/OTRQVktmdTRrS0FhRj9+YQp6QyRXdztUPGtSJD9gOEA2U1JUZFolYSljZVEm
UDV6VW5yQDYhMGM8Vk1qeHdhPCkqN2ZLR2hIMzxHWHZpazZtVG8KendkYShKT01nXlBGPU1SSzlw
PUBZUDlwO29YNGw4TkRjX2tneHwkSmZqRCQmdDszJENMLWxMbVJOaDkoMCFjOyQ9CnpfI0RBZGZy
bWI4Wl9vUjReVVVQWk5+aD0yPTw7TX0kcSE8RUB2UiphbSRrQyVgPn4zMj4+SnZUUyVfX2dndVpg
Ngp6aXNUTDlpcyh6WjNZTDJjTSVZX09JTTwqQXJDQnJ8MWM5N353ZXVmcVlLI1kpVmp7LXMoQGty
JWkoSFFycDZyfj8KenQzPWsmKDkqaHdlfGZGeUs8Rl9iRyhvJVdaU1E9VUp3Rm53N1U1e0RoMTBF
K18mc3t8RjYzUGA0S0A3fUUkPXFoCnpqTGYoTz81PiEocjBKJitHd2UwZjx8aDJmRVRiYHoxVDZB
PCE1eWc7U1leVV9VdG5iXnNDJFQqI1FUTXZ0Qjs7UAp6d19IIUpwU2xNfnRGbipmPXV5aGg4ZExV
Y24zKytKc2RgI2pCfGRXTm9tKWJFaXNUcmlNa3Q3MlRNKzMxXmtvfCEKekJIU1A9cTNRdWNee0ZY
X0xWb2VzK3YjWnN3bHFFRWI4VU14d3loXjh2TDhiSz5DK24hJUomSWhjYDwlOCp9fkBpCno5c1A9
MmR6K0t4aUspYEkrPVZNbjlhQ3NhIU5XQDU7UTQhPF44bXxKZnJPNlE8RVJWSm1WTzZUYTZhPzhl
Wj4wNgp6ek57PDRwTns1cWVwdFlvTzFSZitoI055VlktbjJQRH1tMmxXP0hxWFlITlJ2KCMkTkxt
b0JufVcwX2JiOT5SNnUKejE1akVXO0Q1V0sjdWE/Z3dmN3RMNUdISipOb28+YCVDKWAjQSMkN2tN
IzYhSS1rKT5BYCVwUmooTk9SdyYjP2RlCno0cS00bmVWPXhNYU5XVWBePDtMcVhMWW9QYyRqMElj
fWNvPylWYChmYkJicTw2OG84PHdMS01hSmx2KnhqWiNyagp6QCFUYE1KNDdXNTxXbCs2YXVGUlEy
PVRVcW5PdmJZdHVfVUpENHg2T3VUVDt3P1Z6NDYxa2peeDd9VXQ1eTxibEUKejtrNS1sODItWFN1
fiN7TGkxZiVfWTxgODFlTmJ4MSVLRF95IU9SUENvfn4tZGx7IX5LRih1WGxWTyZpXnFZUCpSCnpJ
ZlIkbzJMYyVaXlU9eWd7R044WndTQCgqUzxPfEVofCRrUyFLXyE1KnloMFF5NjclfXVvTGkzcnJ3
V0NxQEhYcgp6QSQ7R3tWYFRkN1hgfVlHd21QWjQ5aDRkN0lwVDlhY31vNDU/bUxDPl8+TmZUX1dD
Zns0NTdLejJ3QHMhRXJGP1QKelo+REs0dmR5fWZoYVU1JUM+fV9KM21gWitCM19kbHZ+U3N7NmFT
Si1RU3RJbTl0THF2eEo9RHpwQzJiXjc0cjdGCnpQLTM0bFl8LW85VmlfeTNaYUl3T0BrRnhiaylH
QXJvVj9OT2p4UHtgbnF3Nz5Bc2k0WDkqbn1lRDxEZFY9fEVGWQp6cUwkWnQhe3ZPOVhxVyZ9Sz1L
I3FsM05qVGhocz1aZXM1e35eeG4yXmsyJEBSeWtHU0FrPnd+R2h5ZX1xSU5YVnYKeiR3VFF9ZjNs
U1FxSmBmSDVAWTRXQGNyTTg7WFhOaUM5ZGlEck0+JjF7K2ZORmdJZW9YKiQwRzFMQG5XY3ZZZSkk
Cno8YWNqYzUxeTM7b1JITGghJXNAUDExbko8djJidXV7QUh1fD1zVUNnYXFrUDt6b2FyOElQI1cp
b1F4MlkpKXBrIQp6Qzsmfm1VIW5MNWEyK2c3NmQ0TythdmxgdGFJTD8kU30zdH05PU55cm4qNiFn
KiVPUzYleCs+a3dgSCQ9ZFZjKE8KelRnaXQ9YXE7ZD9naHc5WE84YyFMbkhMNT5DfnVLTUhaRUR9
OFlrI1AwT1lrJjNUQWlqd3FjdCZTMGd0VUZ7WWF3CnpMby07JHREPnVHe1VjMERNfDV6ITJOZlNr
JUYpTTdYc21ONVchdkBDV20rXlZpTz89U0tQcG1HblRSSTc4anFHNQp6Oy09I1hSe1M2WGFyTzxK
VVdWYClSSmVJencxYitpP2s5SzwxQyp3bSotM3hnQ3Y/SVdFMlVvY2VZbUJXbkFJRykKelZgWEtM
KG9LTkErJDttSXBPNkI4Q0syWmVOZWMxP0N7KnxfdTNoNjc0NjdhUmZjIXh+Y2RMezxwUkdLRjUz
ekUkCnpGSUdUWXl6N2ZCNngmQH12SiMyUDRkalhKNiZnUG9zOSY8dVpyYFBFZCNBbjBnTjZhejs1
WHp0aDctMzF3UktgRQp6UU5XX2tIOVU2YTdAYypTeF99eykoJnRwKV43fGNFUHJEOGI4PzE/ZGFz
NWRZNjM8UnRKN307X3Q8XyQlM1F7eTMKek9LQ21mY2J9U1dSP2FaMzMxSkc+UUJeJnVyYEw3MWV6
Png5ZGA9emdNfTI/a3NNOSl2TGw7bVM9QnM+fXhJYyR1CnpYbFNUR1ZEJENBUCNNantWQXptNnU/
Mlo1ViUkQVc/PkdBJk02ZlokLWFMZ3o8ZipWaVB+YG5iIWJmZXQzKjs/UQp6eCk/Pj9FJHViTFhh
UU1qdz9uJT1mR3lMfmxFYjMtMGB8R2dPYWFoOVREdFpkaCg/YjJ2Rmp4QEM8UmNhdkdWZ2IKekpC
I256JlkoVXlHPCs1Qz8jMG53bXJAQH1AQ3xIK3BrSERATFYlT21gKll3djxIM3o9aX4wTTE0Kzww
a2Jpb0dsCno8MzM3WkhzJT1SYCYzTSM4JXgkYSN3RnZYb0RFd0tZdiltflBLTjR4MDlgUGZtZmZX
eTU8ajZDKVFfWGs+YVooYAp6QWtKVj5xPVhQJDg2WChJZEcjcTdATmpjTzx3PGlLKjZob0J7K3U0
PikmaE0kXiV4M0hvTUI+YytBLUo1RkdoN2UKekZ9VGFXNTxjNnRJJCRVfj1IO2M1SE1qcHRUSl88
PVkjSyk3YDRUaTU9X0h2YlMqO3kxZjlXczZVfD9tI3JKTVRACnpgTTN9QW9+N2puWXIhWWFvXjgl
bHltYipgJElUNX1hfWlAO09OdVFuanMkMXxAKWlzdU5IcVhSX0B1T3hISWJ0TAp6RWhAR1FxUWIr
KzI0YHpNP2E5NzlwLURAJVo0WkEtbChNY3ZMKksrVjJhJGxpI2Vabit5PHxhWikhT3s4KW1fc2EK
ekR3IVV1WUArNDlVRz0xY1g9JWo8SWB2Nj87bSVjbFBzIzh6dENFY2BZe254YjcoSkpiVkg3cVRA
ODtlU0RgOWUwCnp4cUhAR2pCdEd1RSgjUClkbi19eGBvbDx0d1pISUk1Q1pwOEdRfXQjO2syQn1A
aX5TaylTdHFIYnxeTSQ3clc8OAp6RVRWdH5wa283bDNhYmchVG88R3h8MkUwX1p8bTtlem5fT0s7
e2tuNDNTWDNxO15jUXNQaFl5Qkh6T1BxN3BKYk8Kek83OyMoMSpRX1MjK1JvLXlkZ31MdUZVbis1
NzBDLXJzQEBoNWI2bDNWRkt0eEkpQzRjZ1doZCUwaztMfWRJLTBrCnpDRThfKURyR1NnJUVYJHEh
RnJYcjlyakllQHZVdnxAVEA5WXZLQ2NoNFVjX0VwKWVzRmNrV1pRYztnVWlGbyVtVQp6RGdsP0NL
N0ZTIz57M3EwVUl9O01IVWxxbEVqYEVHT282X0B0QHQyUyl6IyRmdyhkdTF4OG1yK3c/Szhqe0VW
VV4KemheN3NTJjRCRkk5b1lmSTleJWN2MDN+MT8hU2xrYGt0JG05OHc5T0ZWPWVGcXA8ant3Z0J4
YmJIXkp9bCRFbnR1CnpkalN5eEghanM8WXc8S1NtKEU1PE4xTnQ4TF93UnhyOztsVTlsSHVEMTlO
SjF2bUIzek8+V3ZKKHZvZF4jPiVScgp6fElIaTJpZiE/IXpBKnxOVz54diRaZjVVSTU4PCZ9VDVk
X09JaERyYmsocTRteUg0ckhgR0g4VVJUbjBZWDtzd1YKekB0YFZqOG4hV3QxaUBNJXB4QjNETz1m
NW1JYD4/XzU5MilwQCE1WldGJUdvPHtxMUQmPlArZXMoVmNkRVRwIyZDCnpKS0s2TTxQciF9eDFq
VWxLM0JzP2dxYChVZ350bzA9I0U/Tm4oT2hCTUNTUjkyXiVtckFgMmpJVCZmUEB7MWtyVAp6MzZV
YD4mS1ZJZFFEdzEtXnx2LXM4ZXZBPGE9K0lxMlRGaSZwaUJ+JVVWYWRDVT9AP34jOWE2U2FpTWw0
RH1yRkcKeiE0KlZobENSKlF5VWgzYzYyNmphe2RMNVY3TXBIM3dMR0wlQF9tUWJ7SklgQT8rTEZo
UGt9fTN7U3t7U2l8RUoxCnpBZjVgX29HQ09jeXx3S1VpQiR9UCU2NzZLLUs7TUJFVkxpTzdLZmZT
ZnlkSy17MGNIfHBwPmxWRG1fK0tGQi1mIwp6V2woVntrYUlmZDl4UlYlOWQpc0NgX2gwX3FMZmFt
akdkMmh4ZStocXYjUHFmZ0xLPVJALVAzeWpRfjA0endibzQKeiE3IXl3OXkzdTxeYTBWfkJYYkA7
SlR6bE0jI3IrdklyI3R3TV9rWClWZENZU05IcyZ2UmRKV3FxdGBhQipgO2FWCnpSaGJme2h5OWgh
UWNBN24hSUp4Wnw1N3ZWdlB1VT9DKDJ6K0Aybl5Qc349Qj89UGwqQHJKcT0yKSpnfiV7e0VXUgp6
QEwjXiNEWlB6dV5GSWJ7PVE+JlBvcXVjOUdWZSRLeng+anRgV3lENkxXMSg/d0JZTERBcjc4RkB+
MXB5PUdiZ3YKekQmJndUX3NPIypwJmN8UkF1K1JJKS03K0hocmUrZUElSFchOWk2Rm9yWWtnMj92
JFRtVmNAYCtuaXd9TWFeJntUCnp3Vl9XU1A3Ym9NLTlxPjhXNWBXN3BkWmt5TVUqSj5PYCpsTiVa
Kytiel8xYURIfCh1UjdxaX5mZD8we3lSLTMtNAp6Y2RNa01ffUEyOD1oY09OU21PSE9pWExtYj5o
Pk1NckB3SGp0YEI/Tmh2KDhNQ2g2P0RAYElzbXJke2QlSz14Sk4KekYxKlRkTnNPcEAyKDhZOT98
QEF5RzdSSUJzeG1aWEktYExeUzt4Y0dtMnB7MlNnJFJVQzt2ZlBZcUx3bFp0MSZUCnpqPSM+WmV9
TVcrPmAmKEB7N251T1IpTUR8Q3sqOW80PkhqMnUlMlpmISgkKGo3TFg8N0ZNYzZuQVcoZWd1c2s5
aQp6cHV1QVBqeU1majw9STNZU2F+V0BOT2dfPm9Hc2gxTkIzUUZQSW8oeHNpU3BVRjtpYkxmIVht
YklXLWQ8ckx4LT8KeiUmJkd5Pj55QWhGKXw1KDRgJnVkPWgkbGA9KitqU0duT1JWeXF+bmM+TFQz
UWhua3kqemRidVY7bnY+TW1SVWMhCno9emVnfVMjUHZ7SUJCUH1kKmYzeUUhamZZP2YlST9kLVM0
Nz1OWC0zJjJ0Q1VMJnN+WXRCdF42YSlfcX00TmRZdAp6SSYoWUJIczIyPWNqfSYyVExVd0xuZysp
bDB9cz1qNG1TPGteeDQ2aEM2Y3ZaMmp7ckRgRGxBOUAwY0JgSWcoPVkKenVgb0E1d1BXLUZQNzQ/
OStFWVprVDlZTW5nM28hNGs0dkBjZ3U+OSFzJH5HSGpMRXt9UG1aRWgpVC18e2k5bW8tCnpiYH00
K0k7VXh1YT9BWEFVMil1c3FvT0VITmAyTEl8QX5ldD43eDJ0T01TIX1WaiRCRm4qR3I8Qn5ze0tl
bHhuagp6ejZvSzQ1SDU2WSZhWHF6VWhaUkZHbzFoM09aZH56Q3UmWj5JfSg3QmxGWCpgQT50PTJJ
bFhBMGM4ZkRNNEx6ejsKekcxUXQhdmAtUmJeaDcwZFcmaE5+d183X1ZAIUVXIVQ1dWpvdElZbFZW
UVQ/Yk1oMmZRd15xUkBrUm1iVDZiQTVXCnpKYXBvKnolczkjdiRPIztWd2I1JHt0Pk1sazBtRT9P
ZG0xeV5PS0BiUn5kdkYqQXxKWWNIUnBgQjExSjI0JVRmNAp6NmhlTlpkV2BBZm9uM0d6VEl2enV0
fDQwY1ktZy1TMSVKMUI1TTtgMnFOKVNuQnBpMD01KG5FfElOTlRlKkZDYloKejt0OCloNkpXelJN
OEphVTt7Y2tadz5CTXVrdk01IW10aGQmKCNpSk1HVnNgKStFem1WWmtTP2x5YHN0ejMreW0yCnoz
Uk1eMk4kd1Q2eXB1dURkT3o0K0BCc1dDaXc8eHB6dHFvQ1B0VHQqKEo0QmlVc2FjZ00mYHR0bUM+
NUtyc2s9KQp6QzR0QV5MNlJaKih9X2spZDwhMW5uIyU8QCY9cWtVX3h7cT9ia2s5WkMpUjZqaXlr
QktMVCZGJk1qS1NrYCR4VykKei16V08oN2VLbXZMUHorek5WbDtRbz1BKVE3fkwxYlc2KFhFSnU8
Ukw7WllMbnNPOThrNVZkMlVASEA9dUpQa0ojCnpXSmooRz5GYVUhejFIVHV6eTs+dmIpODMyczNO
YCgoSUlxRG9GZDw8Zk17d2g3JXdpVSR5VX5NeD14SlVCNntAVAp6Qzg8RUdyd25RLXhNQiN6aEdf
dE5fQE5sMXd0NVNGbkhpNDVwS1dWc2FEKi0xdG4pMzZ3az98Wns2UDZnT3BwaiUKemJ9Z1ZXVDJX
c296YDZKYUsmT0A5cWhmOzg7SERiXyhWfnZAQWtQXkNmPWRMTSk0I3NrdX0kd1Y/UzAzS1Y9eGBJ
Cno7QmZgMyQpQTN1SUA2bCFjXjtpSkAhRExtSUFFe3diVHJWKC1OWip6R3c9ek1DSzZEWno3QTN3
IWI0Wl9VaUA3Twp6ciQoeUQld1MzPChISj58JTFBPz1Hc31KOVk4TCRYdU8hNTZxRWZvc15vcjF6
KVJPPlZIKT5MWEo9PzAlSTRNWEMKemxpSmMyQHpUYyFzVTY8OEpyTmNGZ1c1PU85bktpUTx6Ulkj
R3lsV2YrP3JfWGtaaSRRXl4kTzYmdEw+d1lFN1I1CnoyIX0tVVJ3PzAyeG9GaUY3OFpzdV9WSiNZ
ZDstbygwd2xUUFVgJUp3ekA3a3RBcHReMTB3QmxDWT08NTAoXyVTfgp6WExMJSpzX1V5bDAhVjhU
eSsqazE7RTw1UlFzTmpiRkAhbG9Db0RSO2g8Q357Q3daKVRFSSFjfkxWSkVeUGpVRT4KenFKX3hX
eGluOT5kfE4+X3djT2klV1ktSWZmfEkwNjF5OEdWUjQtcXtyWlpRUyVvNmNJby1eMkM/TWFyNy1H
UEdiCnoyZCNWYGg9YGc/TGY8fkdxVmpAeCh0UkU8R1VxKTxPUHR5cEpEYVopaWBOZ2dXdHh+cUpz
NiVzUiZSbFd3aVVedgp6NjtiKjF2UyRoTGJAYXpBZ0QmUGZCdFZCIW10MCRANTNWdiUxMzdyTXt6
aGJgVVY4VFUqc14/S2lxcV5vNyNQaF4KekoqUV9BIWNnT3VtVz4wJlZ+YzBBUVhTajNCbUtLJWZE
ajxjKkxhQUlpQV95dlN6Yz9OPVQlanNBKUtBWkZxTyVyCno3MjtXKFZTZm9qeysydF4pJXtabT0o
QjFhd3MxQ3dWO2c0KT83aihKQChMfn5sKVVHajkoekNGWUctTF8xU3A1VQp6K358IUtOdz40VSZJ
NFV2aGBiYHQzSE9Oaj1NKzUhZVNNfl50Z0ojYkdJZlB+SitDIzdKWEgmVkRHeFl+XnB3d1oKejMj
TVAjMmBTfCN1RT1YZk1Gd3FzaXgmdDNRTmIqUzFAeWJOT1h3QnhBUUZrUmROZyFvXzNgUT5aNk9Y
QXR9WlZ+CnpiLVdGPExrVjM3UCozIUdwbSFIY1YtPXtBcntacGNAY2E9MnNtLTl3TEA+cVNsMGlE
dF9vWChYRCorNWl3ZSFrewp6dHZzKURiRHpSSU0zNWpFX15JZ0x0SGk7bSM5NndMJjA9SX5ZRmM1
Z25TQWp5aCZkN2g1ZUVvfjd0T3FyUnFZN3sKeiMwJTJCRlYmPjclcmVVPHVmKmVvbWE4aWgtVmRj
ciF9c0prSHRqUEdOIW4+SW59MUIzRWNHO3hfYXpMWkZwM09+CnpnZm9ofTNNaj44Ymo9KXduQnZe
b21PYkxVR0YpPiF4Z2NHK2E+Zk5VRUNHck0xMmM+KE90Nn4rQT1ENTk3cHMmIwp6clNVTl5GaC1W
Pm44NWZYYS1GekVmcig5Mihud19QYTd1eW1hQnxLZTl2JXVxKVVmVXxpM1oyQE9JQnQoRDdidTsK
ekhuRyYxNm02SEg9SU1rTFl1PiVzRFJuVF8rfSErSG10enwqc0s4PGZPI0U7IWFNM0V7e0l0Ymdn
dmJ1N0p4fkdpCnopTmhFdkFXd3NBWWV0NmxiUnVUZSExdlRxUjFCQFkmeTRyMD1ZZDNKPCFaZVFH
ZklxZWRVeTdlKiNDSDE5Q2l9Xwp6QGRCSzJLUlE4WTJSU1B8Smx4NmUzaiZ9LWdXISooejlsai1D
Z3Nxb0xkMngpc0QoeD1tSX1KWW9UOUVuNkFMS1AKelVxd2Z3Q2A0I3RXYj1nKlBqVVUhb1VVMUZ5
S013IT90QyNEOHt3KiFXNzA4SEowYjZNPyh3TGRMMHhjVXIwPEdICno2M3ZOeStpZVIqMSlXQnxv
SUhEV0d1VHEtSWEjNjxqI2FaSTlRfjZDTHVXLURTfC05cntmYVk5RH5BbVhRWV5aSAp6SncjSUtC
Wl9gYUlKYil7REpwSjJuQEQhWXhWdTY5c2c7Ylg+TXs2U3VNcmt1cVIpJHpTfiQ0e0M3TVR8QnM/
KCYKenlWP2kybUh+cWZwciY3Mk9rRmVUJGhKdyskKkckXi05KSVkUTA9N0dhMVpEM1ZiOypzRUd3
PDNTKFhiUHU0LWVhCnpfdm4+RHZiYSNfJXpII0w+R0lxfjwrKyVRSW1iNG9tQW9CI0BLRDF+MG9V
YERmLVZ4eTg1dmw1OD1GeF83bD91cAp6YnZgWTZrTmIme1h2aTR6PSlrVVRSK2cqe0lqWkJ8TXUw
MTExeD5LeVgmc307JHlZI3JKNnUjc2NOI2p8XzFHcCsKenM0fXNAX180THUoJCRwZEE3VWZwIyRB
bzBJWCFpVjx7MTRnQ1hMS1BeeXwxNHQ7SnBDb0AqSmpefVcjJGJ9Y09ACnpZUDRvMWtLWmd+O2tC
ZVl5WmtKcEBjQjVrWShRR0N3ZWh1RCM2cUgjOUEjKlAodUA3TEFyNWdpMmQyP28wXjchKQp6MGpE
XngkWTtjP0lsVz9vd0dJNXhvNnN+SDtOK0YyQ08/NV88ZSsxd0NHLVpUbUZOeWNeXnw9aUJlNnZM
O0diQTkKekptSVhKV3d7JFY/R0khYWgxOEM/I0pLfkJUMytMKXZfPiFMPlluNEd3RipfYTA4MD9F
RjlAez0meDZrKDx8M1hFCnpIYkotTFhYMCtOU0MmUnxyYUYzN3Z6c35YUX1jJW82SyQxZzIhcyp7
X147Sig5SkdweVkmclRoK3gxJUVXNXk+WQp6T0M2IXRWJmVLUWNgO2pFUihTbGBkPX5Ac1Zeb2NP
TlBme3ROdVRKKm5ebl9TQiFrQ1lscmReKVY1IUB7UmZJdl4KenVDRHc2NXglZTRJbkc2bGA9enVP
T0lFTGZZZj9+R3I7KV9xUDBAJH1SOGxnJkI9JGN3cz5TOFkxSmt1fGw5bHc+CnppRVVwYHpNbE1z
UXp8SVVBVHt0RVFfRUJKPiNpKlA0NHJ9PHNDTkdUQntgNVY9KTU0PV5vOElaeHshSTkzYWtTUgp6
ISZmayk0Zl41MFl0d0B2amhLYT12Z3xWVDNsYDckJnBFfVhGST9EKj0rJWpkSV9RPnItTGJNKkF5
bksqcGdrZV8KemZSe2w9bUApTmRHTG1TfCFVTnZ6MSN6Unp0eEp6dng5O0QhOWtpZzUzJHNZSilw
eT1WKGQqb0k/JVhNeXM5PSF3CnpfYG1yUlNON0hQeHV1bWRxY28tWlRsa15UNzhlVVJGVSpafnAk
I2x6O0BNP15fT1duR2Zuczl7THstRURKXyF2bgp6OUNYYFcyMSM/NGQoM3JKIXFgY3lefDxpWEBN
SWtTPyFrUGt4VXIhU1luPzh9KUNaI3R0LU5RbU9RM0JSTiZKaGIKejghdW5KezMxNUMhWnw1JE4/
Qkx1cT9ne0I1PVh9eHN4MDJZeW5TMmxYZF5HJE9JJHpqKSR1SXs1TTFSbytJQ2soCnohWlFvd0hS
Xm1+WGJRTjR6TTFaOVF9ZHFZViVfSGFCVEVqdFFQRFBVeTMxQyEtak4zMy1iV3YrPzhndlRTJThI
Wgp6WkJBOX4jVD0lP2ohbDg7LTtGT2JZJnFlej5QfkQ1SzttbTIlTDBySGx3KSN2LVJ3andlVjFw
S18hQUc5RmYyaEMKelpCYXE5JFdYS3xsVWkrVXQhKFRQay1lY0MoRkBzenctPFg5dn1mQ2QoVGg0
SUgzPXZ0PmxhLXQhaH1UMl9EcVd7CnpEaiomMTU/P0BuO183U0gkdHNSazlLcXwzY3hqUHtuPUVL
b0ZwcFc/bDwhIyFWSkFQWXI8WThTUGJnI3YxYmAkdwp6ZyF+dCNUQTVOa3FBZT4mdSpuK2UheXdt
Q1Jlalh7X1JeYHFTcTA4a1E7KX5OTzheRmtHMypmT0YrdEZfR2FsQmEKemN1K3piYHVkVHNBUzw3
WURaRGZwQUFYfWhVYjBzRm9YXytnYz8lPy02ek9Qe3NNJT1hZkAwd0soRmdYMmNCdnRACnpzWUE8
QUZNO0lSMHZAc2ptYkNMMUU8Nk1MIWhxe1U9dkJje1FLPHctTUNeQCpFaXE9cXNsWE40UmFBVVdx
fDJ8cAp6S1BRfTlWMFVpP3RyP0h8YDZeYTlEdXd2LThCamlsTFRoNXNhP2s9U20+USheMXx1YURw
OWBHTD4kMWglVylGb1QKejImK2gkciMrXl5kTmlVeyZLJVYqKUYjYGFMVk4lOCZ0SmRaMDghfU9r
JmFmJWlBc3VpK15XZGdJLTMxQnhKeTs1CnpsS3QhSSFLSiNIcFE1ZCpVUUVOcFMrdkJNIV4xcDAl
SG8pP1Ryb3hYdm1nP2ptKjw+O21YeDV0b2hMKFBpQVhZcAp6VnJYUjZuTHsqbVpzaEFMbCRacnky
U2tSKE04ND1EYiRtVU1JSWczcThBOHUlYmJCJCFZZX5xbCF6TCNJdCo4a3cKeihIMUU4Z3E0akMw
djsrMkpgWUo2WH0wKDEmYWArXlUwPCgtKCpNb3QqRH1HT3BeNH56SVU9PlArJUtzR1FFUH4oCnp0
O2shNW59UXlnb31WWHZnR19Tano+NnNIYnMtQktyQX0/RjQrM2RZSWRQNyh3JGdHNUNtY24+UjV9
aD53e1BEYgp6PkFVcUE+ZCFYUnlseHIxO0s5V2RYZT0wSjBnfjQ7RD45UT9QTDYxcmZjLWZUe3RM
TjRya01Fbk9eVkh+OGZLTXoKekI1THg0bSh0ZU9IZ3pzOFY9LUpsNHsme35KMlhqdUMyTlBjTUh8
RmRMem97PVRzM0pEblU+K0FlVEFrRlh3TzhxCnpYX2pDPCs9bCo0dXBrPDNpPChFeFApO2UtREZ0
dTtASnRpaDdAJDE3NlQmT1BVNzV5VjY9JmkmVD1nJSEqM0lWZAp6XnZtMG8jMzR5OXktRG4mdG07
VGNxSFd2VTghO0hAMWNOPSFWel5UTypgPGEoVF5gRCE5aUdiZDx1YElBPH19bDwKenklNm9uVDFn
MF57TjE5aXtISH49V08+cjV7endkcjNUTkduPyhGPE5NSG1XVHBhdWJyYl8qRGV8Q2o+TlYrKno5
CnpAXmlDdStoNUxFJWR0YF4+NXkyPCV0c1VBQkVKKE87JWJGQHRtbF5WOWYjQEFIdkNGOVV7VGpy
VlV4WXRxLXpsZgp6VDhKYHNzSEomNjl2Jm8kdH5oRyVAWHJfQy1rIz98c1MhWDdPMkhUdksxajxU
amFwazxLU2hjY15zS3ZpcWNkZFoKel9mTiQxVTFCYmczSyh8MDNoZVZjclNHelhFP1l9S2M8IWti
eXI0KiMreXR7M2VxdChmIUA2fk9NX0owQW5GR19wCnpyOW1MfU1eUkMwN3FzTW4tN2ZSM1NOTGNC
SXVnZ1hlbUZDRTlxUyplYFN3bzZ2IXM4JnEmcjZLe2cwc0E9Pk1PTgp6PzdMKWFXZEgwK00oQHUy
ZkFeKVlKVTtMSzxIIUxjdndBMi1NVj4wS1FoQmtfSyoycH5SZXpBfFp2KGFUXmpWYFQKempsMiFl
bWBKaXhGR34jbVczayY9NmhmeWxLISNRbHQyVWFLM2hzKmtwJGxiRihOeWtnMjxwdEE4NGBNeDNF
JDEyCnp2VWY4N3tudk9vMDgkR2cxMX01UUQ+cWBIX0F9JnJNKUg/cGhte1VtbUpEbTBCbjFUQVhg
S3JvemNJOWpqcyN1bwp6N35NIT9LWUFQKWdsdEUwVC19KSMrJEImVHhCbmJRN2EjRDM3cytheDZK
QSEtMDF7N1p5ITBLZUZEc3FxcUJTMXgKekV7Y204c2xUO3EtQkNhMzxgNnFESzl4YClDPzMlaFAm
YG4oPko/SEZ3c0Z5ST9TaHczVUZPdH1zbzFgU3RBe0h5CnozVklnU0VhJDkySl5eOzlYbGI/ZV5E
UCFBRSlGbGYyeDNKISMmOXUpZzJuSD5FWlIhe208OXUpbnJYZEo/eHMwVQp6N0A7SDlxdUxieCVL
aWp6MSFJZnZBMUZFMGw1aF5NOHZmajI9X3shMkQxdDJxKmRHZlRvXllBTG9UU0hMVktyfmcKekMr
NTQ/S1IlJDRpIWU+YFI/fil7Ulp1Pz45M1h7ek43TnFpNlBfTWZrZTNjQkp9Kk5QO1poTkNWWVZJ
aEwlMSt1CnojKHdxbXw4WmR3X3MzVnY3cktPLT56PnF5KXp5VS1HdTRsSV9PQmkzJTMjREdCKCRW
bEs/TXZFO1JFYnpwRDxDegp6MXBfMnEmbnRRNW9ifmMjcDYpJkdgV0EtQmp0ens5JUZ4cXNwP0A2
emFqNnVENFU/ZCZHUWd2STR3QntKRHRAfmIKemlPc2FBaSFKe3l3ZUhOTlFmITlIYzM/SlJrTTAj
UjVJTXR+WkRqNE40UU1VJjxRI1RUTkUtZ2ZOR2AlKlAhZmQjCnorR1lRbiZ2aD9QLSR6UmUtUzUl
Skh8cFloQHxXRTAwdTJsbEJTZUNjZXM/OWR4P1pmN3E9fjRAVVAmc0pHciFrdAp6RlgzcTJkfUdt
ZWBuMjZfaUtMZyUleENrN0I0d3cycVJtbGxVLShERyZjO2ZQXkRpYlE7ais3I2w9WkhjT2k5Kl4K
enBaMDJwI31ET1N8R2d0QS0hUSN8cDgmfWhAKk95ZGReP1haNn51aCt1RDxsZVNCZ3EpYjA/YnhA
Vj4hT0tDcnAqCnopKzR4cEEtdkxVTCVidiFKXkg2JDE7MVp3Q01yJmJnVkJxdTlHamNfZz5LRjlG
ZD03eXhgJV9BMWk1Q2xYS2wjfgp6VTlRc3VRLVdjbUxCckAxJHNMUmhiQX1zNkRJeHF1IXYoISRP
eypxQipyRXk2diMye0hRb0JYSEAkJlRSe2B8eV8KelhaITZYcEcwaHA3JlZhVmljcyp0KH5xdHs3
aX5kcmNDRFUhTClDMCpQWDduPFVXWGhUZ0F6R0w1NiNpZUNzUjJgCnpKV2ZRcHZaZzZnMz43cilA
JVh4eTt3Y25TWjloPEY0JVRIJV9AR0VAUG1jTWQlajB1aS1SOUY7N3hXQHsjS2p7JAp6Nzl4Nj49
ZDQjMjc+OF53S3IqcCY/XylzTUNsVTJCLUlDd0ZlTXJJTj48eUBOOD9AQy0/azlETkMoUjJVNEZh
e0IKenhUamUoVThQPm14dU8tfWBgaStlKXl2cX1qWmRtJUU/I1chSCliUyskXyVpQiNnb0NROzN6
NUlmZS0wJHFgKSt1Cnp8N0dYdEc8QikhWDR0ZlR6R1E3flo0dytQQUtZZjFjcVpnO3QtdGJWcnN+
JWNsVns7QGs7V0x1eiMwJGlaNmUmRAp6bXsmIU5IenlKOU5fMyFMMWt9dnlzNGg2IUA2I1VyWlo1
Z0JtbCNiOVh0aUFGd0cwPVZoYWlaX0VaJjB8RnA2MzwKeiRFdkVTSEpSJURXcDZMUkRNLWs3QFpY
WGlGaVkwS21+SThaWFFMRX5QUXVPeT1JflBhejFgNGc5OzFie1otdW0wCnpRZ2tpdy1XJVB1YE9z
ZHptKUA/MUdMSmtsVTdHcF4jZHhJcjxZVzNJNmA5KGtTS1BhSUJ2YGx7KTtwcFlOYiQzIQp6RE5g
K2Eobk5wejNsODw+SjImRUdzUDB7c3w0d3lTUURiYT49JXVteEBmfmQ9e1FSRnIjTkIrVDteIzYj
NmxPaT0KekppR2ZuQkt3UEshTXB2dWRJRlc5NTgpengzV1c9cD5sUz0mX1hEfmhhS1cmMjU3ZDxy
MDFAbnskS153N2VpQ3dtCnp5TjNyQUJWeiExR1Bza292VWI7bTk0IVNHQG5DLTU4SEMxN3d7KXtX
bmA5UCNlajM3cDQ9emdDcEhZPDdkcU1sSAp6aFF6ZzF2P2pEVTg9cDtERCteS080ck0hV1ZzRHRC
JT9IcW5zeFVka0pacWk8VU15VXRWYzdhJEdWVllaYkJLLU4KenVxeW1hIzFKS2RFRWVgJDdEaUYp
MUFnUHgrcVhOaGFpJCFkNCFvQmVfN2stJS0kK2A5eFY8Zj5mbUh7JiFofWdSCnpJN0c1JT1MbE9i
ZFA2b3hkQ2N4TDtvRDBEeGRrYClYcTx0aXFnNCl4ZH0qT3craVJyZ0dYSzRLcFkrYz9lUn51PAp6
aVA+OXJWUm4+eTdzaXVrVU5LIThHK08+WEFsVDkqTyFoNjFJZU1OeUY2VGd6XiZgX1EyRzE3MG0o
elEtSH1+SWYKell+SUR8RkBaUEojZEtAJWR1anxrRXlHWW5Md2kzfHE1RFhOYTQoYVJ0VXxYQGJ1
YkMxT0pMKjlIaE9fZ0hhMGRXCnpVOEstNXRZeSZBLWhPM20pcXwrJnAtPDwhJjJoSzR4OV9CKm4+
WFpCKmxxI35uKmctc2Z9Zm93VVFyYyslKnYjWAp6bTZnNzVAfHkqdkcrd0BwR3wrPEgkJjFNJGg9
eWxpQ1dERVFpZlomcitPM1YtX2chd3lRamF8czRkUmBaNntQN3cKemtefDxwdmEpWDN3KFR8aXc7
M1dec2BPQVlpZXNIWT1adDA2YkE5TEQ0ZSNBQmhicUJxWjU4SCMpNG5eSDtXdVReCnokMFNkMkx9
TE5XdGFgT2ZMcnRBKXRnYVZAVEh+SS18NyNGeWA1c0d4Y1lKKUI1T0Q5X2ptS0NNaF9VaCM1KXZ7
cAp6Tk1XWjVmfVF3Vm0/O00jM3IlQ1glcDs8VXMlaTx4YXNYNE1JOU9qfDZmOEF+YTh8JnM8biVU
YEUjV21OVlJka1cKelI4JlJDWXFJJV5PSDFtYCZjWnwlTD4rTUcqcytIPFp7MGVadFZ1KUZORCVC
JVVhS2RsczFoXnxxZiVsb3VjKXs+CnoqSX11eyhxZWc+bDM1fkxSMzl7Zk1PT1J2KmBHKEU0eTtY
LUtUZEZHXjw0OGkrNk5EITlFZEwmbmIpbkJrazxuNwp6ZnwjaUdmYz9+OF5ZaCFsaWd8XlBsbUZ7
UWdhR0QkXlhBT34oNjgqRkhKclM+azlAWjZtND5fdkdvYygmI298QjkKeiVhP2ExYWt4OFdiSlEo
TlgybC07Y0F3KUtWWkN8QFp7NXtPPGNZV3FUV1BPVTU8M2JvXjJvcjxNeE1SU0ReXj5iCnpEU0JT
dVBVXkRKO3o1P1J0eXY0dzR5SHZwNkBqciZXQUQlMFhYe1dZd2tNQkB7OUcwbC1SPHRgN2lAWUAx
dXgmfQp6azVSTDszcX0+eks2Z2omKkhsKz9SbnMwYCRJUkB0JXVEdEhUSD5lZyRNeUJ+Y1FHKzMk
JFQhcTZSbWkrRVFqTDMKem47aXlURTV9I0IlfTt+ZFFHP3hRdkBgRHModSlHX0xUNT5sK2d1WUlQ
WGpvKUo2MTRJPWUxZndKZG5MPjhPPUB9Cno5dipqO1lUQlVscGZwbzRHWlFBI3RBbnNEP1ByQiFL
P29MKzNiYlhhQWNMVylhZU1sRk4tYkpWQXlOPWNzdzYxfgp6MkxiZnsqPEA8Z0hMKUZHVkk7eTEw
d2MhV2w5MypVaDIxWUpsWD5yazUrdENaTEZNK0hKMWlfTFdQfXQxV0FIc0YKelVjS05JSk4+Zz55
ZFdWd0E4KUdDWCM0VS1uXyN8SFM2QT0pYFNxSUJAamNzeXdIfT9YOTFJSyRacntHV3BPdXZ5CnpP
TktVVytWcWFVVWhFYiFhIUdnK3IyT3xDOVNvJTNLO05laEp8WGt8PlVidzVDNTMxdFdvMlV7NkxX
VTNUQ31QfQp6UmBBY3c2fjs8Q0xqPD5aKmRISV5eUCNwdTJaU00qelZJWUckP3hkR2xEPjIpU30l
SnlJKiZHRTRzaXUhQ28mUVUKelNpeV83RkxIUGM3UHVEYiFAYlU+ZWZCYntvYCpgPmhka3dzTWtY
P2BGWjZhTz9SRTF7YyVZeEFkUlVTLT9ie2l6CnokKityLXpJQEpQeGBXU3RgMCRxQS1yaDUzJlVo
Q1RoPEArdXZtZ0ZebHdpPWl5U3NAbG9WJU5IWWBkdWM+bUEhfAp6eCVLdzxzKG1RQC1lQ3pzWlZW
I34xWjZtQmQ4WFRhUnQyKlhuNTxVSkAyUipYYDYte2VVQ21SJEJmWGp2VGJtPUoKeikjaGZrYWB+
UXdVWGxTPCl3c1dGb3NpUGJyc242eHR0eGdCTVA9MXxjYSpiTDNPNmtATUBrc0BONTxqPjxJJjRF
CnpRTyFQWGBjPytyWFdrVVhTXztsQ0Y0NVc5d0JDLSEtMElkQUpOQnRFdnJ9KXp7fnRibEkwb21z
dnp5emc3YDEzNQp6Wit1Pjk4PUlyTHkxSk5RZDs+U0N3NU1teVlpYG9BQmpBZG88N3BWbUZ1c2l2
IUoyUz9jQVNuemFMMlY/eHB3VlYKelNRckNYY1ZEPUBXYVErb0tQPGcmPExNfkAzRE4yWUxPeSVT
cVlZZUlXLU4/JmRQR2piV1Y+fUZPYnh3KilMUXEoCnp0KmZnbXVSPjI1NXR6eTQyTmZERCk7WWcq
SUthYTRldD0kR2sxYE90ZWpxJVh1TE1kUm52SW99bTAjSGVpaT9XfQp6KDYyJmR4a3tQTnNpZFI/
RWBrQ0NHdXJqPDBoZE97I0ZQJl9ocmpjeFMwSXgoSnhON2h7e2l3aS1sVi1uJVlzKmIKem9GTmVk
eD1DTm1idEV2bGtDO3dUUiRmakZVX1dWU3hJYTgxQkIwdC1hcEJXS3tjbGVOWjlIe1RGJHteOEs2
Uj13CnopailEQSt9R0ZsaytyKFZvb2JHUXdFSVN0Nnx4MShzal4jWmMkNExQb0x5YiU4SFl2Vjtq
Sm5kdX5yVj5gbT81dQp6Uit+bVN3aCt9UChkaU8wTTA5UV8yPTNhbGYhTFpkSiFzNzl3UUBxQ0dT
KCg2Wn1RXmR6fmQ3WmNVMmIzPVRDcCEKekBpfXVMV01JZk9ISShDcitfZ0U8X1o2ZUZwNWBzcml0
VFM2Y2lsM1I/Qmx2K0BQS1J4cithI2AteVZ0b3FfIzg8CnotWTlGVVlDfUprUSQ4Zjt3K3UtcT9y
dVV3RD1ZYyVMWjhCXnpmVjNsYTcldmZ7JHN+PnZkUXx0IXtuTD9scGpWbwp6RWhxXk4jLTRrMjZF
c0NNNjFNRHwpNngjQT9tYHpESlllMCo2PDdmS0ZibmhAT2JKJjg4ZCVzNTl3Zn0+K316d1MKenda
NDJJUiVgYE1HZy1mbkxwQ0s2cl9Lb0sxITB3Um9mK0RJJlk4c1Y8Szx0IT9qXnp+Rns7SEZlfHk9
XlBSTnBMCnpVb0VQaFY8NkAqYiNre18hWSlMJDNiNWNkNk5Ablg1eXV6X2NeKnpnaykmRTdfV2s9
d2smJShWcj5EeWgmcnB+Nwp6Oy16cVFifHcrU2o9dXF6V3lXVWwrZ049Pkh0T3h+X3I9KUVTRmN+
TWs1aGBeVFQxa0tJX1c1QVJFO19ON0VVfUAKenFpPks1N1J0KFE+VC17KGRFSloybX0+VSZLTzMw
UFdze1hyPGwwVk9sM24mQkNyOE4wKndgTEBHdDxMdUpLKjUrCnptMD4qekJpJmR9TmwjMSVvZW8y
a0U2KFU9OShUe1Rha2IrXnU2OF58RTNDQTxwNUdaYjlJXylIU2RZKH1ia090bwp6ZH0ke2pONE5W
T2xhNis3QTc5XmYtc1IpZztDIVckSEhgcn1ITExpMiooJHdfdFpqd3V1UjEhRzFJeytLeDhLOCoK
eiU8WTQqNG9lKlNAJGtOWVEqNnZiVmF0antkZCpmdldoWWNBZjN5MkN3P1dEfUoqPlFMQlBCJmIr
dD51fCt1b1NICnpzfj9RMjkpMkQ7MkcxT1A9RWV7KXBHdFYtJEdnPzBMRjw5Iz85eW1eNzZHWTVV
eUVMPzM8TUNxSDFXTTA4OV40Sgp6IVQ5fSRBVkUpRXl+Oy1AZXU+IzBnfV5zeDF8cGhiWn5PUjJD
JD9VI3ZHPUEzKV9UPnJwTnE/MXdDIXY1MkJ1fEsKeiZgLUIpSTxpP3JNSCVxbzVVdDlnRExKV01D
WkJjTlM+LWVGbm9kdG1va0NFdD9hYU5ENilGOWJoR3doWXB6XjdHCnptdnIzSEQoaHdrRVVjRXZ2
Jig1bnBRMHEwNW9iU0NHSkUrJF5TeSt3YllifGxGZVdDTXpEKHFlT0BeU3YlJSklaQp6ZX1rbG5U
UGs2OGVrbXopQSNieE9jTWIyY2BaLU0xJEFQMWY/MFRgT2ZXTXR0ci1DY3t2ejUtME96R2Q0U1Ix
T0cKekVrMEBsUD1ZUiVkbDFIS1ZOeW01Q3RAMEt7U2xkfTxFTzNOelF1ZGl8RT56biRseHo1RWNC
MU92UjZyWlRqPU5zCnoybEFJMWhpbUIjNTtSeiRedH5CKFVRYTxgNEV8SmhjbDRWI1RSPT5BSn0o
MTtyTld+K0JRR3h2TkMmfSQ3fGJ2Pgp6NXdjbyhOVipNWE19e0tUbkdkTFlSV3ZueWZYNHxZb3sm
XlhxP05eKUpfbFFDWWs/OzlHWlpUO1p+I2ZFcyM0OHEKemV9MytFb0ljPWQqUHIrVmFnUyZeRD56
S3wlUVFZd20pbHBEeVQxdjhpMzNja2VfcVlaJCtgQUVTfW5vZm9nPWcrCnp5NDVuVDU3XzVoU3x3
OHtFe3UyIWF0aks9dH0mQmRCcWVQVmlQKDxrM3BhOCgyKEszXmhvb2U1SiQ9JXJDTVMwUwp6Qlln
YUwyOGE0WFBZKkx7Q1M2eSY0aFZUZk9LZ0VuMmQyaD41b0xmO2sjUmFESEM0e2M+PiRaLUA8JGI2
Yjs+aXkKeitCV0omWXs4bSpIcE9oZl4tUTZFRChaTXpvSD0/PXVoYHFhTT9aVnN3WUYzUElaUjlH
VXgmY0N7NGExaXs9RD5zCnpjMGZDQCNXRzlQYGJlLW13KDZ2YUg8aXBgKXg9MFQzSXkmVDlzP2Fp
TVhfaGJ6fDlaa1czRChrJHdDOTMwTEE+Uwp6cmUtVF9mSXwmdXBTTnBSY2JJSzRhN2hZSzdEcmpv
RU9lbitYKSs3KyY9YFZlNHUySDBCSmE1PGdzNEwkUG9NTlcKenZ4JCNFMEcoaUskKU8pJldNRFcj
Qzs3UlduJV53I3AjSjxhWEExezskZGJFOVVlZXgtWFJOejJWdE1PMGJrMmt7Cnoyc2AwdiQwc0ox
VnlCTFlMb3I0Pz5FemchIT1tQWJII0o8OD1aQ19udXpfQnk5cH4mI08zVzk3UE8oMF5HRD0yOwp6
Umw0P2BMWTYmOGl9fnkqdyVvWjFvbXxlLSh+fl98LVU4en1UaE8yeFZ9Ulg5JmB+ZGdxfCZVfk49
WF4+XmVOcCUKenp+MzBPMkFZXyNBSDklJVRqVEtWPiRRTStYQVRFSGUpNUN7VCQlYHUxUWl3Wkxz
ajUzdktOU2lrSlM8fm9zVXZBCnpWKDFCSzNNJGY7T2BCZjhFNVU3cGxtNnEhNTFGbGR4TD9ET3km
YS1OPm92QGdaWkNBblhxe3VpRzk0dEtRQEQqVQp6Rl5ZV3E5S08+NzdgSGxsMyFfdF9KUXEzN3ZR
eUp6IWxHV2pnQ0U+dGExOGhaNiR+S0pMY0B8VnVKQzZlV3VteVIKenVDMHluVHYtSW8kLUpBRXdo
Nm45RU1TYnFSU3Ulb0pqblZJR24xJUU8V2hCWWJ3N3JPNntAUExVVFlpezljY1JlCnpTeW9rNV4r
I3stTnVaJEB6KEZkdzJeUHBVXy1oTHMzYWwoU3NnckZUNFlqfFNYcnFTfCk0Nzd6UHJ6WTcjVENz
IQp6Z1RRRDRJMlVOIyU7P0NMay0tcFJSekRlT3FfbHg2MXtNfmEwQjAmTnkrZm9BIWhPcnI2V0tQ
cDFofVpwKXF8PzcKemMyVzZJTlpHdHt5bmlnWlpAazZDI1dCeXhBOGluKT9kfFB9YGMzNEBIfTl7
YEc/UChKd1hlTEV5ZmJ2fm01dFRLCnpLbnp0UT5KRjZFZ0Q3VUZAJEZRc3Qrfml2S3JxMnQyXnQk
bj94WTV3enhjdyFQSHhjLWBoTkctemcyfDxDPTVrQgp6dkNhdnw4I1dIc2IrUGc+WU1FPT5QRng9
Z0h+amJGPTQ5SmhUM2kyXkRZPi13Nlk9KWFIWj9jUz16azI5d2xRPmMKeiUoYDQ2b0tFP1pmI2Rn
fWgycndGa2REWHQqJnE0dHE8KFVyVkV2KDdFVEl9LXplbSlKfDJCYD0oVjZsUGxkYV8/CnokTlJw
WmRJJTw1dEF2SGExSyF0NnhGK3NCY259TmgjaH1PV0wqYmVyWigqQ1JvOGk0ekwkXkhsQio4RmxY
PWxkfgp6cWp2VWlASTRlYDFXQWFhRCtoa0hyTStEcWV+QTRob0ZARTkmcXlTeWBtLWA4SEc8e3dp
UD9RXk9LYXA1NiQ0dF4KekZpKURNQHM+QTFMQ31aT0JXTmFJPFE0PF88b29OJU5eITNzQnhsVUVl
KldDZnI0PVkwe2RQZkw5ayQ+QkBRIzltCnptT0RfR0liaVdpS0d0RytLcndUYGUjNkJZZ0g+cm5C
SEhtc0g5dEZoZTRmYU9MenY5YWM4WEF2IXsqazNWXlh+Mwp6dj5rJVNrMml3QVp8KkpodG0lVHMj
Uy1mSkx0OUlPPSppN3BKYzM9amNxZCpwVUtVOyQ5VWF4SSVGJlJ9Rj8jPUsKekhGS2p9YCk3U3s1
SndTV1FqZFMzUipvJnNgZUFpVklOZ1JWVUUpdVVJayZ1TjtZTW9obz1KT3ZafXFiNTglOFZOCnpL
bUd5VWlFKjU8dHt1JipVLS0/YTc8aTE5V1F6WjA3QEx9VGxjfW43cit0YUk/IyNAVjUldmNDYFN4
fHtmWkUkUQp6X1QmN0FjYHVgdzVrUX1XMnNYcWJTdj1DXj1FJUNKQz0mNlkhPjckSnAyRUhPWTJ5
dHt2XioxfFJ0V3pPRDhaYCgKek9IOHFke0FAPiNCJGtHXzBMZSg3SWtQRWVvczlBJnojPDQ4dU4o
VlJkPm9mUTgkfW0xP1I3RzxANkplenRAWUJECnpGcT9eZEtYNVZzPmJBPmdsJDVxXysoemc5P1ZJ
NzQpaEt8bkd3TUo0cFZobUdCIT1kcC1Aa3UqMUclRlZ6fCNlagp6ay14XlI/ZituO0dtbk8jaV9s
IykwZ0pjOV5nOU5BdnUmRDUrQlo9QTBwN25WRHFfU0gremtqQWVaKkxnaW0kUTYKelliXnljVmtV
TCYteC1yUHxNSU5kck18cGZhUDg4PCheantRdVo5UFBjd2V3QWooZ0t4TWZAMm44VT1HZTQ3Nk81
CnpePXNzUUlJe1Vue2oyQ2BHR2ZMREAoSGs4K1dgPn1EOXJHTCNsTHdZZWVUQDBWRiVDM3g3eUNh
JDMpalcyZTtjNAp6Yjg8MjVeLXFadyY3eSE1TXxhR1NnailhR3VVfGVgekRQN35CM1IjMk9TbW49
ZEx1TSs0PjhZaGV0dXF4XiR7X1QKekk1e34kUTN7TEdab05tRipmdCt3cG9gdyY7cnM5Mk4jKjl7
djlQaE5CUEomfVpFMlFkY193SD5rSiE7V0dWPHgqCnp7e1FAZ2ppckxxRyFJfEEqcUB1OWV8Nm1a
dkgoMz11Y1F3TGVgc3l9MTdCVGRfKn1gR01rUXI3aU9uO2kqVjA4Ugp6QGUpNko3LT51SGUlKlUw
U2wlNzZpPyV1STshI1ludyZsZ3R4IXZkanchZHc4KTgjc2M+KkpKdktTbiY1aUk/bWAKemp4OGZm
JTdUbE9WRmJeR3UjPCs+dGlCKDRGcSMwZzF+MDBYajZxRU9tKHRNSzFxLXJ+cGcxfWVmentGUnEh
S3JMCnpGekVYQW1tR3VEIzhxeSopJWF3UGlzbTYpKEJCY1lNbDZxODg9KmZCQ0hJeDUlY2AkckZG
fiVOWkk8KD15TWJifgp6NmM1KGdSWlo9MnNnb2pBYiVBSyg2OT5+ai17YnYyKSU0eFhjZD0ldFQ+
MEpvbGRsQEoma2NYbHheJktUdSZ3O1cKem1YKz9CU2tQcjhAQjgtXmR+S1RjQn1aa3NGYzx9VGpa
OCF4JkJ2ejZLUjRYXlJmaVlGNEA2Kk13SHN6PC1VUWkmCnpZX2VabTlQM1h2Vik0Qjt0e0xeJDFT
WEB1RD1sM0lkKVBiUmp7Qz9lI3o8eClyamZKQUxFRklIPj1TcTAxKTA5bgp6X3hYPmpDa1dQWTh7
SUp5Q0w3RmBHT3YyMGcxSDNnbXE1OXlkVX4pfVhrWn0lNmBzTzhDViZ3MlpibSleOWxYUlYKemhx
UXRMWDdQPH5kalhCV0hJey1WLVUjfUg3YDZibktaJlhFN09eKEA8bCo0JipiZWt6NE1WRzBqdndE
V0hhM1FsCno1b0sxWE1Mck5YdyEtISUyaGpVRClnVFpWZTVBWG1CWj12MS1haGJUNiMoQDFiN09r
TShJMDN7Kz47dEhHbCVWQAp6SjN4aklkeXI2bWxjYSh1PU8/KjJJWnE7OGYlZmR8PkxNem5Kfi1G
bDdFYiNySVhob1pEfmkxP2V7UF5SYGllNU0KenZaOU5ObllQPl54NkdvKWYqeVNHeCR6IWZvWmA7
VCZXMVE7PUlQT25Kc3lrR0grKzM3Wi10JXEycmIlKm1iXz5iCnp5cElDfGNUaUVDJDgyQUNNS00k
R0UtP1Z+WUY7PXM0R29kQmdFMElORHN2fDBFdWd9OWkyLSRMaGwyJjZPezJKQQp6Vnx8Rz4zdHd0
I1lUKlREX3VwaGk3YFE3VjxBN1FKPFdqSWJKNTJwaiM2bSY9T2w3ZGQ7S0YyMDErO0lsS2RBeUUK
em0zQXU8WSRkR1RiJlJQT3Z4cD1ATU1YJlZ5WX11cWleSj0lRzs2YTMmPEI5dXpEKXdXPHVxczw4
bWRSfkYpeFdCCnpaYi0xOTY4SCM8QVJeeTBEbzJWdiEtdmk1MUdVKElUYnRKaHtAPys2OD9uN0t2
R3AtOTIlSDkwRjlUTHFSeWY3UAp6IW9qPUI7dDF9ZHFkVzhke3JsSjBxM343ZSZeWD8/cGBIPitf
Pj53IVBiMmdBIURWR0w4Pm97MWFMajE1P0MqaGoKej88fEdMc2ZUXmNEMVhqR3QyfFVvMEghJk9u
YFBVVGU7UnRQMjQrYSZqZTZhOWBBbDNoQG9BQktoR3ZIcUBkIzBrCno8e2w2UEZMdzlkSiF6QzJ4
TXw8VSN0N2NNR3Y5SG0pI3MhZUNAd1dxYlRfa3AwQmlxa1h5X2djZGkoa0tzTmRjQwp6c1NDNERg
MTFkenpld2NkPFBVPmBIP1YlZHpLJlpVeENtQW5QUngoPl8yVnpoZmp6TGkmTDE9VyR3fWE5dHV3
Z30KejJAMkJFOTZhWTtRWCorJldSJSsjZj5DZylEa3xPKHtsRShCditWdEZYQ0M3VFJKNjQ+ayot
fDdFXzlLI3djeHRsCnplVENUS3dOKkU0OS10PXI4JVM0e2MoeldVblVzeTJkcHBpMUYlcmpmYi1e
NmRIMURPflEwWWU3aDN3X2Fod3UoUgp6ZUU4NzJ0S2QzTyY8WlplOWcweEN1SmQyX0Bva3szQnBL
UGUoSWVLKilfM0ZMO3VfTnNsMVhzbyhmKz8jOH5xaDIKelcpaiUmeU5GOTxCeUBmQ2oqaXhmT1Qm
RyQ0PT8zVE0jaXBfYT9IJWtYZTMkKHU7dlVZMjt9PUYqZFF9UmEwLWFvCnplSSlQeXFJJCZzTC1p
ek9IbW5od3pXIzMjPWJJPUs/KEAmcCZwZktJaz9iKkRYRW9fYHtkKWh3JjdfZ1pLb3lhdwp6dkZ2
dWdLU15UYXR4TD5adEJnQ1hGbk93d0NnXl8+NklXSzNVQVMjOVBWVDlzbWpxVEdaQXM5JGhYNi0o
TXJ8WlAKekMzcyg2ejUoenlRJDclbXhEV085SjM0YWc8UkJ7JUR7flpteEw4N0toIUlqQ0dIbXM5
V258VlB5ZnU5T1k8OWxiCnoyWXQwNVNXLSR8Yy1JWWtkeV95ZGVRMGkwNTJDY0w/YSpBPzZmLXMw
ejFQWDtaKHVnTzh6KDE1bWdiOGxQOEtMTgp6Jj13PVY5QFVJZjREJiQ7RmRNM0pJNU0lWGVwQEsq
dTNmaTUmPmg7ZldvI2MrRlNfSXllfU1FU2N0MkQpcjx8TXcKemFSSERDd3crd1RqWTJKSGtFKDc9
N2JHR1U7Pj1NQ3wxT0RtZSo1PS03eFMkJXpYJD4zQTM+bGhgMVhMRStjSH5GCnpVN1Zad207Yzs0
bVBuKkJBVU0hSHtvTSUtQzhudXoyXnRfMHE/MHcqJkckSF5BYlIxSSREKUg9ciVgJFkyTW9pZAp6
eEZiISpOPX02K1BEeWtANU9XN1VNVHFWfSY8KmVXZS1fI3FJXj1DX1pJfW9+THB0VSVYKEVQM3Ux
KkB0SmwqWWkKenheO1JULVE1b1czckpFJU15JCYjRTBfbWU4bmI4NTl5UzRpVTY1UElldCt7amdO
aHE8KT53RFplYmhhaDBlQ3hTCnowQyRmcDtSZnsqdzk9ezFmY1NWITx8aDI9K25PUDF7NDFBbiNS
dSZJV0pgaz96NGNiZjNeVWV9OHFmYj4ye3dRZwp6cGRHRkY4JWllSldGO2xtPTFTSEFBYUVIJnhZ
TiRQIWF7NkFCclhhKyg0dztiZll8YyZVKilSKnFwcmVDWkFuU1YKeiQoZmxMWXw/QU1JMFJ8TCgp
SGQqR1JrbG9wKjhzK3hmRzFoRkcwOz80bExgQTlYbD9mYDhmaD5BNikwZzZ5YkRhCnoxQylvfmxB
V35QOCE1R190dH1MMj00XnJuSEM1eVBFLTNGX0FsNyRzdmF7Yk5GZ1pCRXB6IWM+aH11TWNwIVUw
cwp6P2h0dHRTVDhafDNrUS03Y1RXVV5NNShCUGdNdTBgZz5NazVjP19hWTZURyRQNWNHZTc8WU9e
OEl+eG5veGRfOWkKekVTQTU7WV5GSH43TUFJTSl2ZDIjUEk/I0Aje3FYQEJWa01EPTYoUm1TT0o1
cWswbWFfUm07aUJkSn1WRXE9NlM+CnpxMjMwZ0F3U1EtJTBeMTIoMXJQYilVVzRRU3ojODxzNm8w
XnstXnwhZ0FFe3x6Mkd7SipUYTl7VzRSOF57P1d7eQp6XkVkRUsmUEo9S2ZUJF9MP3FtVD5gaElA
dzU7LSE1QTBqbVg9YktWKVo2JXFBYDM9Ums9aUo7eD1aMTRIQ2pTYXEKenZoRlYyaSRgJT1JJEJD
V1ZKa3M0Mk02RFFZMGBkdGQlVldzJlNEUCtHQlVDJl9QbEhEeyNkKkx3aChieVM1TDFJCno4Q2k5
YWl0Nnk7IX19a2QqLTFeXiNHKTZZYn4zVGAxNmMxZlVKNzc2KDRfakl2SnhjMGhkMUxvSUZSb3ZE
PVYkewp6Q2Eydkhjaip7bmMzYV9pWkRuSlYrXjhgMTQ8N25jXm43SWk9cH4yVURBMV8/PWcoZVBJ
UGtmPVdtdzxDSzVgNk0KejcpNkF6c09ZSWJmUzBsKVoxZGR7PXh9PDM0LTV0SCl6clVBMCtMd00+
RjJ6cE9LWmRvaT94M3MhK3tKeypCP3hNCno+c0g/OHlJPnVOSiN8PUB5OCVnKjtCPntyI0RLTG9g
cEotRTxzZSpOSnImJkEqfkNCcSRqYW5jblJ4ZlgxNmtaUgp6dl5ZPlBGd3xeSj9JTitQZnUtWEF1
T0M0NSVWYElwV2ZCRGlaczdaYFUhTjZKVCZgXkluV0VXQSVKb3s0SyY3cEUKentgPygpRFp3a0ZX
fTZtIzdYdHJBOz1XI04zMCgpX1gjSXVfP158MWdtJC1jSmBDdFVQaFpQYTtZaWxWJUE7U3BRCnpO
ekh8JHw5XyRPUX5Qe3FjOXRIe0NTQj5UVzVtNHlkSXhCQ2E7QTdLWEkpekpGWGJCXiVpalRNY0ZG
bz9ANkApZQp6aTxBKmM2Y0l9MUtgRH1QJjRjP3kkPFR8OFJgZ1NHUmFUZ31qbEBrTjUkKlRQUHkw
P0tYbmNwRzl3VF5OUyZASG8Kekooall8cntQcV50X01rKGZLQHB3dDBPPyQlP0RpT2NITGUhJEIm
PXw4K1FIZk5UaWZgYHsmR0xEeEs4IWp0K2FBCnpTZiQydGVHeVVhK3QkNHc+MmZ5a3t2NUJDXztz
blJDdVFWX190K2l8YW1yQHJ3OHwpSGtHWE0ra3lnRkZycEIzOAp6MmRkcHZjJEhwYXhMTWQwNmVE
PDwjPVAqa2xRb0IqWmF4REY0PGhNcHMzYWRDcmh6VGFjMTxeWWZKc341RnNKN08KenkzZitrRm91
IW48WTA1JjE3bUwoS2w8T2JNY0NCJUFTfH4jaTtJaGEpfXpYO0ZyVVg0YihDKj4+cERiPFo9PDZE
Cno3JVY3MFVGZiN1XkwpSn5jQz5pTSN+KHU1KWF6IWB4JURFPSp9dk45ZDFucUlEMS1JRnBzfmNS
ezRlKn16VGQyOwp6ZWMqNGV2cn5PRld5Q29EPCpMKHAxMlRzYTtYI1kxX3hJP21hSkYxdXFwaT9L
cSNGUTRCaCgwKEc0WCF2MXNFc3YKemlCJVhhT1l2SnMkU3llIzZ5KH5wUiZHbmpISl5sZDYlKEBv
dXEtfGApZmNCVkAtfVk5RTNmVSh5d1I1VTRmMUlQCnpSPiFKZHhac0M8cmBUKHw2XzhjMU1pKjJZ
YUBXSmkkT218dyMzUV9nXmA3U3E7K2ZFb3tIczM3P3BuN0dOO1g4Ygp6U2FwKlZeciFUJj1KYEhT
YXJaRnpocjVXI2xiN1BuV1lwQkM3dzUqOzhtNi1MeEVZQHVASnc2SDIqeXhoIXt6eWoKem4/MW5g
TXwlJS1KaCFxY1lheUpYWStfPUM+SkRqcDxqVT9POUEobjxAM3tHTl4xMnhfVFMhV0xpTXl3T29P
eU98CnoqSE5ZVWZsbXxDPTJkKXFBU29vcyNnQzZ3eUVhfmtaPyhqM21Ia05Pa2EzfjZtMTJZI0cx
dm5kJHY0RGJjeERHUQp6P0piNVI8cE17TXRQeU9reiYoSCY9NiZFUGlEeD9qSV9eOThvWk1edStk
LU5VX1gwQGQrOFctPlRXYl57S31HVHAKVG81b2cxYDB3bSNDN0JkeSE8K3ZIa1JUSzwKCmxpdGVy
YWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1zZWxlY3Rpb25zLXRvLWNvbnRlbnRlZGl0YWJsZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL2Ry
YWctc2VsZWN0aW9ucy10by1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ4M2U2Y2FlNGI3MWExOTNmNjZjYWVmMDI1YTA3ZGZiNGQ3YmExY2MKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctc2Vs
ZWN0aW9ucy10by1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsODEgQEAK
K0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElU
SU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiNkb2N1bWVudC1mcmFnbWVudCByZXBsYWNp
bmdET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBnaXZlbkFjdGlvbjpXZWJWaWV3
SW5zZXJ0QWN0aW9uRHJvcHBlZAorRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5n
SW5ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAorRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9u
CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5n
ZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpy
YW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93
bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmlj
YXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxk
RW5kRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDEgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKK0VESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRFbmRFZGl0aW5nOldlYlZpZXdEaWRFbmRFZGl0aW5nTm90aWZp
Y2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiNkb2N1bWVudC1mcmFn
bWVudCByZXBsYWNpbmdET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMSBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBnaXZlbkFj
dGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uRHJvcHBlZAorRURJVElORyBERUxFR0FURTogc2hvdWxk
QmVnaW5FZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMSBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAorRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5n
Tm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
OldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6
IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mIERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDEgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG9ET01SYW5nZTpyYW5nZSBmcm9tIDIgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gMTIgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZm
aW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UK
K0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRp
b24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAxIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEyIG9mICN0ZXh0ID4g
U1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJv
bSA1IG9mICN0ZXh0ID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUg
b2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6
TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0
ZWRET01SYW5nZTpyYW5nZSBmcm9tIDUgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+IFNQQU4gPiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxMiBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0
cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitsYXll
ciBhdCAoMCwwKSBzaXplIDc4NXg3MDEKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDc4NXg2
MDAKK2xheWVyIGF0ICgwLDApIHNpemUgNzg1eDcwMQorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQg
KDAsMCkgc2l6ZSA3ODV4NzAxCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDAsMCkgc2l6ZSA3
ODV4Njg1CisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDMwMng0MDIgW2Jv
cmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgICAgUmVuZGVySW1hZ2Uge0lNR30gYXQg
KDEsMSkgc2l6ZSA3NngxMDMKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg3Nyw5MCkg
c2l6ZSA0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDc3LDkwKSB3aWR0aCA0OiAiICIKKyAg
ICAgICAgUmVuZGVySW1hZ2Uge0lNR30gYXQgKDgxLDEpIHNpemUgNzZ4MTAzCisgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMTU3LDkwKSBzaXplIDR4MTgKKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMTU3LDkwKSB3aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVySW5saW5lIHtBfSBhdCAo
MCwwKSBzaXplIDMweDE4IFtjb2xvcj0jMDAwMEVFXQorICAgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMTYxLDkwKSBzaXplIDMweDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTYx
LDkwKSB3aWR0aCAzMDogIkxpbmsiCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTkx
LDkwKSBzaXplIDR4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTkxLDkwKSB3aWR0aCA0OiAi
ICIKKyAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDg1eDE4CisgICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxOTUsOTApIHNpemUgODV4MTgKKyAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICgxOTUsOTApIHdpZHRoIDg1OiAiUmFuZG9tIHRleHQuIgorICAgICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNDAyKSBzaXplIDc4NXgxMDcKKyAgICAgICAgUmVuZGVy
SW1hZ2Uge0lNR30gYXQgKDAsMCkgc2l6ZSA3NngxMDMKKyAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICg3Niw4OSkgc2l6ZSA0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDc2LDg5KSB3
aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVySW5saW5lIHtBfSBhdCAoMCwwKSBzaXplIDMweDE4
IFtjb2xvcj0jRkYwMDAwXQorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoODAsODkp
IHNpemUgMzB4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICg4MCw4OSkgd2lkdGggMzA6ICJM
aW5rIgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDExMCw4OSkgc2l6ZSA0eDE4Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDExMCw4OSkgd2lkdGggNDogIiAiCisgICAgICAgIFJlbmRl
cklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSA4NXgxOAorICAgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMTE0LDg5KSBzaXplIDg1eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MTE0LDg5KSB3aWR0aCA4NTogIlJhbmRvbSB0ZXh0LiIKKyAgICAgIFJlbmRlckJsb2NrIHtVTH0g
YXQgKDAsNTI1KSBzaXplIDc4NXgwCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsNTI1KSBz
aXplIDc4NXgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0Nzl4
MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0Nzk6ICJUaGlzIHRlc3QgY2hl
Y2tzIHNlbGVjdGlvbiBkcmFnIGVkZ2UgY2FzZXMgb24gTWFjLiBUbyBydW4gdGhlIHRlc3QgbWFu
dWFsbHk6IgorICAgICAgUmVuZGVyQmxvY2sge09MfSBhdCAoMCw1NTkpIHNpemUgNzg1eDEyNgor
ICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwwKSBzaXplIDc0NXgzNgorICAgICAg
ICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKC0yMCwwKSBzaXplIDE2eDE4OiAiMSIKKyAgICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3NDF4MzYKKyAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDc0MTogIlNlbGVjdCBldmVyeXRoaW5nIGFib3ZlLCBzdGFy
dCB0aGUgZHJhZyBvdmVyIHRoZSBpbWFnZSwgYW5kIHdpdGggbm8gZGVsYXksIGRyYWcgaXQgdG8g
dGhlIGNvbnRlbnQgZWRpdGFibGUgYXJlYS4gT25seSB0aGUiCisgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwxOCkgd2lkdGggMTYyOiAiaW1hZ2Ugc2hvdWxkIGJlIGRyYWdnZWQuIgorICAgICAg
ICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwzNikgc2l6ZSA3NDV4MzYKKyAgICAgICAgICBS
ZW5kZXJMaXN0TWFya2VyIGF0ICgtMjAsMCkgc2l6ZSAxNngxODogIjIiCisgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzM2eDM2CisgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCA3MzY6ICJTZWxlY3QgZXZlcnl0aGluZyBhYm92ZSwgc3RhcnQgdGhl
IGRyYWcgb3ZlciB0aGUgbGluaywgYW5kIHdpdGggbm8gZGVsYXksIGRyYWcgaXQgdG8gdGhlIGNv
bnRlbnQgZWRpdGFibGUgYXJlYS4gVGhlIGVudGlyZSIKKyAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDE4KSB3aWR0aCAxNzk6ICJzZWxlY3Rpb24gc2hvdWxkIGJlIGRyYWdnZWQuIgorICAgICAg
ICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCw3Mikgc2l6ZSA3NDV4MzYKKyAgICAgICAgICBS
ZW5kZXJMaXN0TWFya2VyIGF0ICgtMjAsMCkgc2l6ZSAxNngxODogIjMiCisgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzIzeDM2CisgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCA3MjM6ICJTZWxlY3QgZXZlcnl0aGluZyBhYm92ZSwgc3RhcnQgdGhl
IGRyYWcgb3ZlciB0aGUgdGV4dCwgYW5kIHdpdGggbm8gZGVsYXksIGRyYWcgaXQgdG8gdGhlIGNv
bnRlbnQgZWRpdGFibGUgYXJlYS4gTm90aGluZyIKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDE4KSB3aWR0aCA0MTM6ICJzaG91bGQgYmUgZHJhZ2dlZCwgYnV0IGEgYnVuY2ggb2YgdGV4dCBz
aG91bGQgYmUgc2VsZWN0ZWQgaW5zdGVhZC4iCisgICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0g
YXQgKDQwLDEwOCkgc2l6ZSA3NDV4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgt
MjAsMCkgc2l6ZSAxNngxODogIjQiCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsNzAxKSBz
aXplIDc4NXgwCitzZWxlY3Rpb24gc3RhcnQ6IHBvc2l0aW9uIDUgb2YgY2hpbGQgMCB7I3RleHR9
IG9mIGNoaWxkIDYge1NQQU59IG9mIGNoaWxkIDEge0RJVn0gb2YgYm9keQorc2VsZWN0aW9uIGVu
ZDogICBwb3NpdGlvbiAxMiBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgNiB7U1BBTn0gb2Yg
Y2hpbGQgMSB7RElWfSBvZiBib2R5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctc2VsZWN0aW9ucy10by1jb250ZW50ZWRpdGFibGUu
aHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1z
ZWxlY3Rpb25zLXRvLWNvbnRlbnRlZGl0YWJsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkOWMwMjgxNmRj
ZTkzZjlkOTNkZmIxZjZjZDdmM2IwMWYyZDQzNTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctc2VsZWN0aW9ucy10by1j
b250ZW50ZWRpdGFibGUuaHRtbApAQCAtMCwwICsxLDc1IEBACis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2VkaXRpbmcvZWRpdGluZy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKKzwvc2NyaXB0PgorCis8c2NyaXB0Pgor
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgdmFyIGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgibGkiKTsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2Up
OworICAgIAorICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOworICAgIGxpLmFwcGVuZENoaWxk
KHRleHQpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybjsKKworICAgIHNlbGVjdFNlbGVjdGlvbigp
OworICAgIGRyYWdFbGVtZW50VG9Db250ZW50RWRpdGFibGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImRyYWdpbWFnZSIpKTsKKyAgICAgCisgICAgc2VsZWN0U2VsZWN0aW9uKCk7CisgICAgZHJh
Z0VsZW1lbnRUb0NvbnRlbnRFZGl0YWJsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJhZ2xp
bmsiKSk7CisKKyAgICBzZWxlY3RTZWxlY3Rpb24oKTsKKyAgICBkcmFnRWxlbWVudFRvQ29udGVu
dEVkaXRhYmxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcmFndGV4dCIpKTsKKworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gc2VsZWN0U2Vs
ZWN0aW9uKCkgeworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZWxlY3RBbGxDaGlsZHJlbihk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VsZWN0aW9uIikpOworfQorCitmdW5jdGlvbiBkcmFn
RWxlbWVudFRvQ29udGVudEVkaXRhYmxlKGRyYWdTb3VyY2UpIAoreworICAgIHggPSBkcmFnU291
cmNlLm9mZnNldExlZnQgKyBkcmFnU291cmNlLm9mZnNldFdpZHRoIC8gMjsKKyAgICB5ID0gZHJh
Z1NvdXJjZS5vZmZzZXRUb3AgKyBkcmFnU291cmNlLm9mZnNldEhlaWdodCAvIDI7CisKKyAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24o
KTsgICAgCisKKyAgICB2YXIgZHJvcFRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
YXJnZXQiKTsKKyAgICB4ID0gZHJvcFRhcmdldC5vZmZzZXRMZWZ0ICsgZHJvcFRhcmdldC5vZmZz
ZXRXaWR0aCAvIDI7CisgICAgeSA9IGRyb3BUYXJnZXQub2Zmc2V0VG9wICsgZHJvcFRhcmdldC5v
ZmZzZXRIZWlnaHQgLyAyOworICAgIAorICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8
Ym9keSBzdHlsZT0icGFkZGluZzowOyBtYXJnaW46MCIgb25sb2FkPSJydW5UZXN0KCk7Ij4gIAor
Cis8ZGl2IGlkPSJ0YXJnZXQiIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsgd2lkdGg6
IDMwMHB4OyBoZWlnaHQ6IDQwMHB4OyIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj48L2Rpdj4KKzxk
aXYgaWQ9InNlbGVjdGlvbiI+Cis8aW1nIGlkPSJkcmFnaW1hZ2UiIHNyYz0iLi4vLi4vLi4vLi4v
ZWRpdGluZy9yZXNvdXJjZXMvYWJlLnBuZyI+Cis8YSBocmVmPSIjIiBpZD0iZHJhZ2xpbmsiPkxp
bms8L2E+Cis8c3BhbiBpZD0iZHJhZ3RleHQiPlJhbmRvbSB0ZXh0Ljwvc3Bhbj48L2Rpdj4KKwor
PHVsIGlkPSJjb25zb2xlIj48L3VsPgorPHA+VGhpcyB0ZXN0IGNoZWNrcyBzZWxlY3Rpb24gZHJh
ZyBlZGdlIGNhc2VzIG9uIE1hYy4gVG8gcnVuIHRoZSB0ZXN0IG1hbnVhbGx5OgorPG9sPgorPGxp
PlNlbGVjdCBldmVyeXRoaW5nIGFib3ZlLCBzdGFydCB0aGUgZHJhZyBvdmVyIHRoZSBpbWFnZSwg
YW5kIHdpdGggbm8gZGVsYXksIGRyYWcgaXQgdG8gdGhlIGNvbnRlbnQgZWRpdGFibGUgYXJlYS4g
T25seSB0aGUgaW1hZ2Ugc2hvdWxkIGJlIGRyYWdnZWQuCis8bGk+U2VsZWN0IGV2ZXJ5dGhpbmcg
YWJvdmUsIHN0YXJ0IHRoZSBkcmFnIG92ZXIgdGhlIGxpbmssIGFuZCB3aXRoIG5vIGRlbGF5LCBk
cmFnIGl0IHRvIHRoZSBjb250ZW50IGVkaXRhYmxlIGFyZWEuIFRoZSBlbnRpcmUgc2VsZWN0aW9u
IHNob3VsZCBiZSBkcmFnZ2VkLgorPGxpPlNlbGVjdCBldmVyeXRoaW5nIGFib3ZlLCBzdGFydCB0
aGUgZHJhZyBvdmVyIHRoZSB0ZXh0LCBhbmQgd2l0aCBubyBkZWxheSwgZHJhZyBpdCB0byB0aGUg
Y29udGVudCBlZGl0YWJsZSBhcmVhLiBOb3RoaW5nIHNob3VsZCBiZSBkcmFnZ2VkLCBidXQgYSBi
dW5jaCBvZiB0ZXh0IHNob3VsZCBiZSBzZWxlY3RlZCBpbnN0ZWFkLgorPGxpPgorPC9vbD48L3A+
Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTdkN2UwMjdlNmY0MDc1MzhkMDdjZWM4Y2Y0ODkwOWU2
NjdhMGY0OS4uMDQ0OTlmNGRiMmUzYTc3M2JmZjNmMmJjNjY2ZTllMThjOGM4OTA2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDExLTA1LTEyICBEYW5pZWwgQ2hlbmcgIDxkY2hlbmdA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEltcHJvdmUgZHJhZyBzdGFydCBsb2dpYworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk0MDkKKworICAgICAgICBSZXdyaXRlIGFuZCBzaW1w
bGlmeSB0aGUgZHJhZ2dpbmcgbG9naWMgdG8gYmV0dGVyIG1hdGNoIElFLCBGaXJlZm94LCBhbmQg
dGhlIGJlaGF2aW9yCisgICAgICAgIGRlZmluZWQgaW4gdGhlIHNwZWMuIEFtb25nIG90aGVyIHRo
aW5nczoKKyAgICAgICAgLSBkcmFnZ2FibGVOb2RlKCkgbm8gbG9uZ2VyIHJldHVybnMgdGV4dCBu
b2RlcyB3aGVuIGRyYWdnaW5nIGFuY2hvcnMuCisgICAgICAgIC0gV2hlbiBzdGFydGluZyBhIGRy
YWcgb3ZlciBhbiBpbWFnZSBpbiBhIHNlbGVjdGlvbiwgcHJlZmVyIHRvIGRyYWcgdGhlIHNlbGVj
dGlvbi4KKyAgICAgICAgLSBTZXZlcmFsIHJlZHVuZGFudCBoaXQgdGVzdHMgaGF2ZSBiZWVuIHJl
bW92ZWQuCisgICAgICAgIC0gTWlub3IgcmVmYWN0b3JpbmcgdG8gbWFrZSB0aGUgbG9naWMgZWFz
aWVyIHRvIGZvbGxvdy4KKworICAgICAgICBUZXN0OiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0
ZWJvYXJkL2RyYWctc2VsZWN0aW9ucy10by1jb250ZW50ZWRpdGFibGUuaHRtbAorCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdn
YWJsZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6
CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2UvRHJhZ1N0
YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpEcmFnU3RhdGU6OnNob3VsZERpc3BhdGNoRXZlbnRz
KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmV2ZW50TWF5U3RhcnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6dXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3ApOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpjYW5jZWxEcmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRBdCk6CisgICAgICAgIChXZWJDb3JlOjpFeGFjdGx5
T25lQml0U2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyk6
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKwogMjAxMS0wNS0wNiAgQnJldHQgV2ls
c29uICA8YnJldHR3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJh
cnRoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDE0ZTQyMzEzN2NmYzQ2YWI1YzgwNGMzMGM3OWQ5NGFlN2FkOWNiMWQuLjg3YmJm
NmUxODgzMWUxZTY1NDViY2RjNDU5ZmQ0NmVkOGExYTI3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2NzIsNyArMTY3Miw3
IEBACiAJCTgxQkUyMDk5MTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3JCYWNrZW5kSW50ZXJm
YWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MUJF
MjA5NDExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oICovOyB9
OwogCQk4MUJFMjBEMjExRjRCQzMyMDA5MTVERkEgLyogSlNJREJDdXJzb3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFCRTIwQTcxMUY0QjY2RjAw
OTE1REZBIC8qIEpTSURCQ3Vyc29yLmNwcCAqLzsgfTsKIAkJODFCRTIwRDMxMUY0QkMzMjAwOTE1
REZBIC8qIEpTSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MUJFMjBBODExRjRCNjZGMDA5MTVERkEgLyogSlNJREJDdXJzb3IuaCAqLzsg
fTsKLQkJODFGNjVGRjYxMzc4OEZBQTAwRkY2RjJEIC8qIERyYWdTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFGNjVGRjUxMzc4OEZBQTAwRkY2
RjJEIC8qIERyYWdTdGF0ZS5oICovOyB9OworCQk4MUY2NUZGNjEzNzg4RkFBMDBGRjZGMkQgLyog
RHJhZ1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MUY2NUZGNTEzNzg4RkFBMDBGRjZGMkQgLyogRHJhZ1N0YXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODJBQjE3NDMxMjRCOTlFQzAwQzUw
NjlEIC8qIEluc3BlY3RvckNTU0FnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgyQUIxNzQxMTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0b3JD
U1NBZ2VudC5jcHAgKi87IH07CiAJCTgyQUIxNzQ0MTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0
b3JDU1NBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODJBQjE3NDIxMjRCOTlFQzAwQzUwNjlEIC8qIEluc3BlY3RvckNTU0FnZW50LmggKi87IH07
CiAJCTgyQUIxNzczMTI1QzgyNjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyQUIxNzZGMTI1
QzgyNjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCAqLzsgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggODFjZTkyZDRmNTBkNjk5MGNiYjNmZGZh
MmUwYzVlZDcxMjRlOGQ2YS4uMjY4Nzc5ZmQxZGIzNmE1ZGM1ZjQ1NDRkMjgyZGQ3Y2FkZmMzMjA4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTU2OSw3MSArNTY5
LDQ5IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyhEcmFnRGF0YSogZHJhZ0Rh
dGEsIERyYWdPcGVyYXRpb24mIG9wZXJhdGlvbikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotTm9k
ZSogRHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZU5vZGUoY29uc3QgRnJhbWUqIHNyYywgTm9kZSog
c3RhcnROb2RlLCBib29sIGRodG1sT0ssIGJvb2wgdWFPSywgaW50IHgsIGludCB5LCBib29sJiBk
aHRtbFdpbGxEcmFnKSBjb25zdAorTm9kZSogRHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZU5vZGUo
Y29uc3QgRnJhbWUqIHNyYywgTm9kZSogc3RhcnROb2RlLCBjb25zdCBJbnRQb2ludCYgZHJhZ09y
aWdpbiwgRHJhZ1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBpZiAoIWRodG1sT0sgJiYgIXVh
T0spCi0gICAgICAgIHJldHVybiAwOworICAgIHN0YXRlLm1fZHJhZ1R5cGUgPSBEcmFnU291cmNl
QWN0aW9uTm9uZTsKKworICAgIGlmIChzcmMtPnNlbGVjdGlvbigpLT5jb250YWlucyhkcmFnT3Jp
Z2luKSkKKyAgICAgICAgc3RhdGUubV9kcmFnVHlwZSA9IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rp
b247CiAKICAgICBmb3IgKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdGFydE5vZGUt
PnJlbmRlcmVyKCk7IHJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKSkgewog
ICAgICAgICBOb2RlKiBub2RlID0gcmVuZGVyZXItPm5vZGUoKTsKLSAgICAgICAgaWYgKG5vZGUg
JiYgbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpURVhUX05PREUpIHsKLSAgICAgICAgICAgIC8v
IFNpbmNlIHRoZXJlJ3Mgbm8gd2F5IGZvciB0aGUgYXV0aG9yIHRvIGFkZHJlc3MgdGhlIC13ZWJr
aXQtdXNlci1kcmFnIHN0eWxlIGZvciBhIHRleHQgbm9kZSwKLSAgICAgICAgICAgIC8vIHdlIHVz
ZSBvdXIgb3duIGp1ZGdlbWVudC4KLSAgICAgICAgICAgIGlmICh1YU9LICYmIG1heVN0YXJ0RHJh
Z0F0RXZlbnRMb2NhdGlvbihzcmMsIEludFBvaW50KHgsIHkpLCBub2RlKSkgewotICAgICAgICAg
ICAgICAgIGRodG1sV2lsbERyYWcgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbm9k
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChub2RlLT5jYW5TdGFydFNlbGVjdGlv
bigpKQotICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBoYXZlIGEgY2xpY2sgaW4g
dGhlIHVuc2VsZWN0ZWQgcG9ydGlvbiBvZiB0ZXh0LiBJZiB0aGlzIHRleHQgaXMKLSAgICAgICAg
ICAgICAgICAvLyBzZWxlY3RhYmxlLCB3ZSB3YW50IHRvIHN0YXJ0IHRoZSBzZWxlY3Rpb24gcHJv
Y2VzcyBpbnN0ZWFkIG9mIGxvb2tpbmcgZm9yIGEgcGFyZW50Ci0gICAgICAgICAgICAgICAgLy8g
dG8gdHJ5IHRvIGRyYWcuCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0gZWxz
ZSB7CisgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgIC8vIEFub255bW91cyByZW5kZXIg
YmxvY2tzIGRvbid0IGNvcnJlc3BvbmQgdG8gYWN0dWFsIERPTSBub2Rlcywgc28gd2Ugc2tpcCBv
dmVyIHRoZW0KKyAgICAgICAgICAgIC8vIGZvciB0aGUgcHVycG9zZXMgb2YgZmluZGluZyBhIGRy
YWdnYWJsZSBub2RlLgorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghKHN0YXRl
Lm1fZHJhZ1R5cGUgJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSAmJiBub2RlLT5pc1RleHRO
b2RlKCkgJiYgbm9kZS0+Y2FuU3RhcnRTZWxlY3Rpb24oKSkKKyAgICAgICAgICAgIC8vIEluIHRo
aXMgY2FzZSB3ZSBoYXZlIGEgY2xpY2sgaW4gdGhlIHVuc2VsZWN0ZWQgcG9ydGlvbiBvZiB0ZXh0
LiBJZiB0aGlzIHRleHQgaXMKKyAgICAgICAgICAgIC8vIHNlbGVjdGFibGUsIHdlIHdhbnQgdG8g
c3RhcnQgdGhlIHNlbGVjdGlvbiBwcm9jZXNzIGluc3RlYWQgb2YgbG9va2luZyBmb3IgYSBwYXJl
bnQKKyAgICAgICAgICAgIC8vIHRvIHRyeSB0byBkcmFnLgorICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkpIHsKICAgICAgICAgICAgIEVVc2Vy
RHJhZyBkcmFnTW9kZSA9IHJlbmRlcmVyLT5zdHlsZSgpLT51c2VyRHJhZygpOwotICAgICAgICAg
ICAgaWYgKGRodG1sT0sgJiYgZHJhZ01vZGUgPT0gRFJBR19FTEVNRU5UKSB7Ci0gICAgICAgICAg
ICAgICAgZGh0bWxXaWxsRHJhZyA9IHRydWU7CisgICAgICAgICAgICBpZiAoKG1fZHJhZ1NvdXJj
ZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25ESFRNTCkgJiYgZHJhZ01vZGUgPT0gRFJBR19FTEVN
RU5UKSB7CisgICAgICAgICAgICAgICAgc3RhdGUubV9kcmFnVHlwZSA9IHN0YXRpY19jYXN0PERy
YWdTb3VyY2VBY3Rpb24+KHN0YXRlLm1fZHJhZ1R5cGUgfCBEcmFnU291cmNlQWN0aW9uREhUTUwp
OwogICAgICAgICAgICAgICAgIHJldHVybiBub2RlOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKHVhT0sgJiYgZHJhZ01vZGUgPT0gRFJBR19BVVRPICYmIG1heVN0YXJ0RHJhZ0F0RXZl
bnRMb2NhdGlvbihzcmMsIEludFBvaW50KHgsIHkpLCBub2RlKSkgewotICAgICAgICAgICAgICAg
IGRodG1sV2lsbERyYWcgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbm9kZTsKKyAg
ICAgICAgICAgIGlmIChkcmFnTW9kZSA9PSBEUkFHX0FVVE8pIHsKKyAgICAgICAgICAgICAgICBp
ZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25JbWFnZSkKKyAgICAgICAg
ICAgICAgICAgICAgJiYgbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmltZ1RhZykKKyAgICAg
ICAgICAgICAgICAgICAgJiYgc3JjLT5zZXR0aW5ncygpLT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2Fs
bHkoKSkgeworICAgICAgICAgICAgICAgICAgICBzdGF0ZS5tX2RyYWdUeXBlID0gc3RhdGljX2Nh
c3Q8RHJhZ1NvdXJjZUFjdGlvbj4oc3RhdGUubV9kcmFnVHlwZSB8IERyYWdTb3VyY2VBY3Rpb25J
bWFnZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VB
Y3Rpb25MaW5rKQorICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5oYXNUYWdOYW1lKEhUTUxO
YW1lczo6YVRhZykKKyAgICAgICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8SFRNTEFuY2hv
ckVsZW1lbnQqPihub2RlKS0+aXNMaXZlTGluaygpKSB7CisgICAgICAgICAgICAgICAgICAgIHN0
YXRlLm1fZHJhZ1R5cGUgPSBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihzdGF0ZS5tX2Ry
YWdUeXBlIHwgRHJhZ1NvdXJjZUFjdGlvbkxpbmspOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbm9kZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWJvb2wgRHJhZ0NvbnRyb2xsZXI6Om1heVN0YXJ0RHJh
Z0F0RXZlbnRMb2NhdGlvbihjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IEludFBvaW50JiBmcmFt
ZVBvcywgTm9kZSogbm9kZSkgY29uc3QKLXsKLSAgICBBU1NFUlQoZnJhbWUpOwotICAgIEFTU0VS
VChmcmFtZS0+c2V0dGluZ3MoKSk7Ci0KLSAgICBpZiAoIWZyYW1lLT52aWV3KCkgfHwgIWZyYW1l
LT5jb250ZW50UmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSGl0VGVz
dFJlc3VsdCBtb3VzZURvd25UYXJnZXQgPSBIaXRUZXN0UmVzdWx0KGZyYW1lUG9zKTsKLQotICAg
IG1vdXNlRG93blRhcmdldCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0
UG9pbnQoZnJhbWVQb3MsIHRydWUpOwotICAgIGlmIChub2RlKQotICAgICAgICBtb3VzZURvd25U
YXJnZXQuc2V0SW5uZXJOb25TaGFyZWROb2RlKG5vZGUpOwotCi0gICAgaWYgKG1vdXNlRG93blRh
cmdldC5pbWFnZSgpCi0gICAgICAgICYmICFtb3VzZURvd25UYXJnZXQuYWJzb2x1dGVJbWFnZVVS
TCgpLmlzRW1wdHkoKQotICAgICAgICAmJiBmcmFtZS0+c2V0dGluZ3MoKS0+bG9hZHNJbWFnZXNB
dXRvbWF0aWNhbGx5KCkKLSAgICAgICAgJiYgbV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJj
ZUFjdGlvbkltYWdlKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmICghbW91c2VEb3du
VGFyZ2V0LmFic29sdXRlTGlua1VSTCgpLmlzRW1wdHkoKQotICAgICAgICAmJiBtX2RyYWdTb3Vy
Y2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uTGluawotICAgICAgICAmJiBtb3VzZURvd25UYXJn
ZXQuaXNMaXZlTGluaygpCi0gICAgICAgICYmIG1vdXNlRG93blRhcmdldC5VUkxFbGVtZW50KCkt
PnJlbmRlcmVyKCkgJiYgbW91c2VEb3duVGFyZ2V0LlVSTEVsZW1lbnQoKS0+cmVuZGVyZXIoKS0+
c3R5bGUoKS0+dXNlckRyYWcoKSAhPSBEUkFHX05PTkUpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgaWYgKG1vdXNlRG93blRhcmdldC5pc1NlbGVjdGVkKCkKLSAgICAgICAgJiYgbV9kcmFn
U291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gV2UgZWl0aGVyIGhhdmUgbm90aGlu
ZyB0byBkcmFnIG9yIHdlIGhhdmUgYSBzZWxlY3Rpb24gYW5kIHdlJ3JlIG5vdCBvdmVyIGEgZHJh
Z2dhYmxlIGVsZW1lbnQuCisgICAgcmV0dXJuIChzdGF0ZS5tX2RyYWdUeXBlICYgRHJhZ1NvdXJj
ZUFjdGlvblNlbGVjdGlvbikgPyBzdGFydE5vZGUgOiAwOwogfQogCiBzdGF0aWMgQ2FjaGVkSW1h
Z2UqIGdldENhY2hlZEltYWdlKEVsZW1lbnQqIGVsZW1lbnQpCkBAIC02OTUsMTkgKzY3MywxNyBA
QCBzdGF0aWMgSW50UG9pbnQgZHJhZ0xvY0ZvclNlbGVjdGlvbkRyYWcoRnJhbWUqIHNyYykKICAg
ICByZXR1cm4gSW50UG9pbnQoeHBvcywgeXBvcyk7CiB9CiAKLWJvb2wgRHJhZ0NvbnRyb2xsZXI6
OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRHJhZ09wZXJhdGlv
biBzcmNPcCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBv
aW50JiBkcmFnT3JpZ2luLCBib29sIGlzREhUTUxEcmFnKQorYm9vbCBEcmFnQ29udHJvbGxlcjo6
c3RhcnREcmFnKEZyYW1lKiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRp
b24gc3JjT3AsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQ
b2ludCYgZHJhZ09yaWdpbikKIHsKICAgICBBU1NFUlQoc3JjKTsKLSAgICBBU1NFUlQoY2xpcGJv
YXJkKTsKIAogICAgIGlmICghc3JjLT52aWV3KCkgfHwgIXNyYy0+Y29udGVudFJlbmRlcmVyKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEhpdFRlc3RSZXN1bHQgZHJhZ1NvdXJjZSA9
IEhpdFRlc3RSZXN1bHQoZHJhZ09yaWdpbik7Ci0gICAgZHJhZ1NvdXJjZSA9IHNyYy0+ZXZlbnRI
YW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGRyYWdPcmlnaW4sIHRydWUpOwotICAgIEtV
UkwgbGlua1VSTCA9IGRyYWdTb3VyY2UuYWJzb2x1dGVMaW5rVVJMKCk7Ci0gICAgS1VSTCBpbWFn
ZVVSTCA9IGRyYWdTb3VyY2UuYWJzb2x1dGVJbWFnZVVSTCgpOwotICAgIGJvb2wgaXNTZWxlY3Rl
ZCA9IGRyYWdTb3VyY2UuaXNTZWxlY3RlZCgpOworICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJl
c3VsdCA9IHNyYy0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGRyYWdPcmln
aW4sIHRydWUpOworICAgIC8vIEZJWE1FOiBTYW5pdHkgY2hlY2sgaGVyZSB0aGF0IHdlJ3JlIHN0
aWxsIGRyYWdnaW5nIHRoZSBzYW1lIG5vZGUuCisgICAgS1VSTCBsaW5rVVJMID0gaGl0VGVzdFJl
c3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKKyAgICBLVVJMIGltYWdlVVJMID0gaGl0VGVzdFJlc3Vs
dC5hYnNvbHV0ZUltYWdlVVJMKCk7CiAKICAgICBJbnRQb2ludCBtb3VzZURyYWdnZWRQb2ludCA9
IHNyYy0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGRyYWdFdmVudC5wb3MoKSk7CiAKQEAgLTcx
OCwxNCArNjk0LDE0IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3Jj
LCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRHJhZ09wZXJhdGlvbiBzCiAgICAgSW50UG9pbnQgZHJh
Z0xvYygwLCAwKTsKICAgICBJbnRQb2ludCBkcmFnSW1hZ2VPZmZzZXQoMCwgMCk7CiAKLSAgICBp
ZiAoaXNESFRNTERyYWcpCisgICAgQ2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBzdGF0ZS5tX2RyYWdD
bGlwYm9hcmQuZ2V0KCk7CisgICAgaWYgKHN0YXRlLm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFj
dGlvbkRIVE1MKQogICAgICAgICBkcmFnSW1hZ2UgPSBjbGlwYm9hcmQtPmNyZWF0ZURyYWdJbWFn
ZShkcmFnSW1hZ2VPZmZzZXQpOwotICAgIGVsc2UgewotICAgICAgICAvLyBUaGlzIGRyYWcgb3Bl
cmF0aW9uIGlzIG5vdCBhIERIVE1MIGRyYWcgYW5kIG1heSBnbyBvdXRzaWRlIHRoZSBXZWJWaWV3
LgotICAgICAgICAvLyBXZSBwcm92aWRlIGEgZGVmYXVsdCBzZXQgb2YgYWxsb3dlZCBkcmFnIG9w
ZXJhdGlvbnMgdGhhdCBmb2xsb3dzIGZyb206CisgICAgaWYgKHN0YXRlLm1fZHJhZ1R5cGUgPT0g
RHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbiB8fCAhaW1hZ2VVUkwuaXNFbXB0eSgpIHx8ICFsaW5r
VVJMLmlzRW1wdHkoKSkKKyAgICAgICAgLy8gU2VsZWN0aW9uLCBpbWFnZSwgYW5kIGxpbmsgZHJh
Z3MgcmVjZWl2ZSBhIGRlZmF1bHQgc2V0IG9mIGFsbG93ZWQgZHJhZyBvcGVyYXRpb25zIHRoYXQK
KyAgICAgICAgLy8gZm9sbG93cyBmcm9tOgogICAgICAgICAvLyBodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2Jyb3dzZXIvdHJ1bmsvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tP3Jldj00
ODUyNiNMMzQzMAotICAgICAgICBtX3NvdXJjZURyYWdPcGVyYXRpb24gPSAoRHJhZ09wZXJhdGlv
bikoRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uQ29weSk7Ci0gICAgfQorICAg
ICAgICBtX3NvdXJjZURyYWdPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPiht
X3NvdXJjZURyYWdPcGVyYXRpb24gfCBEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRp
b25Db3B5KTsKIAogICAgIC8vIFdlIGFsbG93IERIVE1ML0pTIHRvIHNldCB0aGUgZHJhZyBpbWFn
ZSwgZXZlbiBpZiBpdHMgYSBsaW5rLCBpbWFnZSBvciB0ZXh0IHdlJ3JlIGRyYWdnaW5nLgogICAg
IC8vIFRoaXMgaXMgaW4gdGhlIHNwaXJpdCBvZiB0aGUgSUUgQVBJLCB3aGljaCBhbGxvd3Mgb3Zl
cnJpZGluZyBvZiBwYXN0ZWJvYXJkIGRhdGEgYW5kIERyYWdPcC4KQEAgLTczNiwyNiArNzEyLDQ0
IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlwYm9hcmQq
IGNsaXBib2FyZCwgRHJhZ09wZXJhdGlvbiBzCiAKICAgICBib29sIHN0YXJ0ZWREcmFnID0gdHJ1
ZTsgLy8gb3B0aW1pc20gLSB3ZSBhbG1vc3QgYWx3YXlzIG1hbmFnZSB0byBzdGFydCB0aGUgZHJh
ZwogCi0gICAgTm9kZSogbm9kZSA9IGRyYWdTb3VyY2UuaW5uZXJOb25TaGFyZWROb2RlKCk7Cisg
ICAgTm9kZSogbm9kZSA9IHN0YXRlLm1fZHJhZ1NyYy5nZXQoKTsKIAogICAgIEltYWdlKiBpbWFn
ZSA9IGdldEltYWdlKHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKSk7Ci0gICAgaWYgKCFpbWFn
ZVVSTC5pc0VtcHR5KCkgJiYgbm9kZSAmJiBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgaW1hZ2UK
LSAgICAgICAgICAgICYmIChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uSW1h
Z2UpKSB7CisgICAgaWYgKHN0YXRlLm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVj
dGlvbikgeworICAgICAgICBpZiAoIWNsaXBib2FyZC0+aGFzRGF0YSgpKSB7CisgICAgICAgICAg
ICBpZiAoaXNOb2RlSW5UZXh0Rm9ybUNvbnRyb2woc3JjLT5zZWxlY3Rpb24oKS0+c3RhcnQoKS5k
ZXByZWNhdGVkTm9kZSgpKSkKKyAgICAgICAgICAgICAgICBjbGlwYm9hcmQtPndyaXRlUGxhaW5U
ZXh0KHNyYy0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsKKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0aW9uUmFuZ2UgPSBzcmMtPnNlbGVj
dGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAgICAgICAgICAgIEFTU0VSVChzZWxl
Y3Rpb25SYW5nZSk7CisKKyAgICAgICAgICAgICAgICBjbGlwYm9hcmQtPndyaXRlUmFuZ2Uoc2Vs
ZWN0aW9uUmFuZ2UuZ2V0KCksIHNyYyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgbV9jbGllbnQtPndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9u
U2VsZWN0aW9uLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQpOworICAgICAgICBpZiAoIWRyYWdJbWFn
ZSkgeworICAgICAgICAgICAgZHJhZ0ltYWdlID0gY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9u
KHNyYyk7CisgICAgICAgICAgICBkcmFnTG9jID0gZHJhZ0xvY0ZvclNlbGVjdGlvbkRyYWcoc3Jj
KTsKKyAgICAgICAgICAgIG1fZHJhZ09mZnNldCA9IEludFBvaW50KGRyYWdPcmlnaW4ueCgpIC0g
ZHJhZ0xvYy54KCksIGRyYWdPcmlnaW4ueSgpIC0gZHJhZ0xvYy55KCkpOworICAgICAgICB9Cisg
ICAgICAgIGRvU3lzdGVtRHJhZyhkcmFnSW1hZ2UsIGRyYWdMb2MsIGRyYWdPcmlnaW4sIGNsaXBi
b2FyZCwgc3JjLCBmYWxzZSk7CisgICAgfSBlbHNlIGlmICghaW1hZ2VVUkwuaXNFbXB0eSgpICYm
IG5vZGUgJiYgbm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmIGltYWdlCisgICAgICAgICAgICAgICAm
JiAobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKSkgewogICAgICAg
ICAvLyBXZSBzaG91bGRuJ3QgYmUgc3RhcnRpbmcgYSBkcmFnIGZvciBhbiBpbWFnZSB0aGF0IGNh
bid0IHByb3ZpZGUgYW4gZXh0ZW5zaW9uLgogICAgICAgICAvLyBUaGlzIGlzIGFuIGVhcmx5IGRl
dGVjdGlvbiBmb3IgcHJvYmxlbXMgZW5jb3VudGVyZWQgbGF0ZXIgdXBvbiBkcm9wLgogICAgICAg
ICBBU1NFUlQoIWltYWdlLT5maWxlbmFtZUV4dGVuc2lvbigpLmlzRW1wdHkoKSk7CiAgICAgICAg
IEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7CiAgICAgICAg
IGlmICghY2xpcGJvYXJkLT5oYXNEYXRhKCkpIHsKICAgICAgICAgICAgIG1fZHJhZ2dpbmdJbWFn
ZVVSTCA9IGltYWdlVVJMOwotICAgICAgICAgICAgcHJlcGFyZUNsaXBib2FyZEZvckltYWdlRHJh
ZyhzcmMsIGNsaXBib2FyZCwgZWxlbWVudCwgbGlua1VSTCwgaW1hZ2VVUkwsIGRyYWdTb3VyY2Uu
YWx0RGlzcGxheVN0cmluZygpKTsKKyAgICAgICAgICAgIHByZXBhcmVDbGlwYm9hcmRGb3JJbWFn
ZURyYWcoc3JjLCBjbGlwYm9hcmQsIGVsZW1lbnQsIGxpbmtVUkwsIGltYWdlVVJMLCBoaXRUZXN0
UmVzdWx0LmFsdERpc3BsYXlTdHJpbmcoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBtX2NsaWVu
dC0+d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25JbWFnZSwgZHJh
Z09yaWdpbiwgY2xpcGJvYXJkKTsKIAogICAgICAgICBpZiAoIWRyYWdJbWFnZSkgewotICAgICAg
ICAgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBkcmFnU291cmNlLmltYWdlUmVjdCgpOworICAgICAg
ICAgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBoaXRUZXN0UmVzdWx0LmltYWdlUmVjdCgpOwogICAg
ICAgICAgICAgaW1hZ2VSZWN0LnNldExvY2F0aW9uKG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXco
KS0+d2luZG93VG9Db250ZW50cyhzcmMtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhpbWFnZVJl
Y3QubG9jYXRpb24oKSkpKTsKLSAgICAgICAgICAgIGRvSW1hZ2VEcmFnKGVsZW1lbnQsIGRyYWdP
cmlnaW4sIGRyYWdTb3VyY2UuaW1hZ2VSZWN0KCksIGNsaXBib2FyZCwgc3JjLCBtX2RyYWdPZmZz
ZXQpOworICAgICAgICAgICAgZG9JbWFnZURyYWcoZWxlbWVudCwgZHJhZ09yaWdpbiwgaGl0VGVz
dFJlc3VsdC5pbWFnZVJlY3QoKSwgY2xpcGJvYXJkLCBzcmMsIG1fZHJhZ09mZnNldCk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgLy8gREhUTUwgZGVmaW5lZCBkcmFnIGltYWdlCiAgICAg
ICAgICAgICBkb1N5c3RlbURyYWcoZHJhZ0ltYWdlLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBjbGlw
Ym9hcmQsIHNyYywgZmFsc2UpOwpAQCAtNzY0LDcgKzc1OCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRHJhZ09wZXJh
dGlvbiBzCiAgICAgICAgIGlmICghY2xpcGJvYXJkLT5oYXNEYXRhKCkpCiAgICAgICAgICAgICAv
LyBTaW1wbGlmeSB3aGl0ZXNwYWNlIHNvIHRoZSB0aXRsZSBwdXQgb24gdGhlIGNsaXBib2FyZCBy
ZXNlbWJsZXMgd2hhdCB0aGUgdXNlciBzZWVzCiAgICAgICAgICAgICAvLyBvbiB0aGUgd2ViIHBh
Z2UuIFRoaXMgaW5jbHVkZXMgcmVwbGFjaW5nIG5ld2xpbmVzIHdpdGggc3BhY2VzLgotICAgICAg
ICAgICAgY2xpcGJvYXJkLT53cml0ZVVSTChsaW5rVVJMLCBkcmFnU291cmNlLnRleHRDb250ZW50
KCkuc2ltcGxpZnlXaGl0ZVNwYWNlKCksIHNyYyk7CisgICAgICAgICAgICBjbGlwYm9hcmQtPndy
aXRlVVJMKGxpbmtVUkwsIGhpdFRlc3RSZXN1bHQudGV4dENvbnRlbnQoKS5zaW1wbGlmeVdoaXRl
U3BhY2UoKSwgc3JjKTsKIAogICAgICAgICBpZiAoc3JjLT5zZWxlY3Rpb24oKS0+aXNDYXJldCgp
ICYmIHNyYy0+c2VsZWN0aW9uKCktPmlzQ29udGVudEVkaXRhYmxlKCkpIHsKICAgICAgICAgICAg
IC8vIGEgdXNlciBjYW4gaW5pdGlhdGUgYSBkcmFnIG9uIGEgbGluayB3aXRob3V0IGhhdmluZyBh
bnkgdGV4dApAQCAtNzc4LDM3ICs3NzIsMTkgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnRE
cmFnKEZyYW1lKiBzcmMsIENsaXBib2FyZCogY2xpcGJvYXJkLCBEcmFnT3BlcmF0aW9uIHMKIAog
ICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VB
Y3Rpb25MaW5rLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQpOwogICAgICAgICBpZiAoIWRyYWdJbWFn
ZSkgewotICAgICAgICAgICAgZHJhZ0ltYWdlID0gY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhsaW5r
VVJMLCBkcmFnU291cmNlLnRleHRDb250ZW50KCksIHNyYyk7CisgICAgICAgICAgICBkcmFnSW1h
Z2UgPSBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKGxpbmtVUkwsIGhpdFRlc3RSZXN1bHQudGV4dENv
bnRlbnQoKSwgc3JjKTsKICAgICAgICAgICAgIEludFNpemUgc2l6ZSA9IGRyYWdJbWFnZVNpemUo
ZHJhZ0ltYWdlKTsKICAgICAgICAgICAgIG1fZHJhZ09mZnNldCA9IEludFBvaW50KC1zaXplLndp
ZHRoKCkgLyAyLCAtTGlua0RyYWdCb3JkZXJJbnNldCk7CiAgICAgICAgICAgICBkcmFnTG9jID0g
SW50UG9pbnQobW91c2VEcmFnZ2VkUG9pbnQueCgpICsgbV9kcmFnT2Zmc2V0LngoKSwgbW91c2VE
cmFnZ2VkUG9pbnQueSgpICsgbV9kcmFnT2Zmc2V0LnkoKSk7CiAgICAgICAgIH0KICAgICAgICAg
ZG9TeXN0ZW1EcmFnKGRyYWdJbWFnZSwgZHJhZ0xvYywgbW91c2VEcmFnZ2VkUG9pbnQsIGNsaXBi
b2FyZCwgc3JjLCB0cnVlKTsKLSAgICB9IGVsc2UgaWYgKGlzU2VsZWN0ZWQgJiYgKG1fZHJhZ1Nv
dXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pKSB7Ci0gICAgICAgIGlmICgh
Y2xpcGJvYXJkLT5oYXNEYXRhKCkpIHsKLSAgICAgICAgICAgIGlmIChpc05vZGVJblRleHRGb3Jt
Q29udHJvbChzcmMtPnNlbGVjdGlvbigpLT5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCkpKQotICAg
ICAgICAgICAgICAgIGNsaXBib2FyZC0+d3JpdGVQbGFpblRleHQoc3JjLT5lZGl0b3IoKS0+c2Vs
ZWN0ZWRUZXh0KCkpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRy
PFJhbmdlPiBzZWxlY3Rpb25SYW5nZSA9IHNyYy0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJh
bmdlKCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHNlbGVjdGlvblJhbmdlKTsKLQotICAgICAg
ICAgICAgICAgIGNsaXBib2FyZC0+d3JpdGVSYW5nZShzZWxlY3Rpb25SYW5nZS5nZXQoKSwgc3Jj
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZv
cm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24sIGRyYWdPcmlnaW4s
IGNsaXBib2FyZCk7Ci0gICAgICAgIGlmICghZHJhZ0ltYWdlKSB7Ci0gICAgICAgICAgICBkcmFn
SW1hZ2UgPSBjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24oc3JjKTsKLSAgICAgICAgICAgIGRy
YWdMb2MgPSBkcmFnTG9jRm9yU2VsZWN0aW9uRHJhZyhzcmMpOwotICAgICAgICAgICAgbV9kcmFn
T2Zmc2V0ID0gSW50UG9pbnQoKGludCkoZHJhZ09yaWdpbi54KCkgLSBkcmFnTG9jLngoKSksIChp
bnQpKGRyYWdPcmlnaW4ueSgpIC0gZHJhZ0xvYy55KCkpKTsKLSAgICAgICAgfQotICAgICAgICBk
b1N5c3RlbURyYWcoZHJhZ0ltYWdlLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQsIHNy
YywgZmFsc2UpOwotICAgIH0gZWxzZSBpZiAoaXNESFRNTERyYWcpIHsKKyAgICB9IGVsc2UgaWYg
KHN0YXRlLm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKSB7CiAgICAgICAgIEFT
U0VSVChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uREhUTUwpOwogICAgICAg
ICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25E
SFRNTCwgZHJhZ09yaWdpbiwgY2xpcGJvYXJkKTsKICAgICAgICAgZG9TeXN0ZW1EcmFnKGRyYWdJ
bWFnZSwgZHJhZ0xvYywgZHJhZ09yaWdpbiwgY2xpcGJvYXJkLCBzcmMsIGZhbHNlKTsKICAgICB9
IGVsc2UgewotICAgICAgICAvLyBPbmx5IHdheSBJIGtub3cgdG8gZ2V0IGhlcmUgaXMgaWYgdG8g
Z2V0IGhlcmUgaXMgaWYgdGhlIG9yaWdpbmFsIGVsZW1lbnQgY2xpY2tlZCBvbiBpbiB0aGUgbW91
c2Vkb3duIGlzIG5vIGxvbmdlcgotICAgICAgICAvLyB1bmRlciB0aGUgbW91c2Vkb3duIHBvaW50
LCBzbyBsaW5rVVJMLCBpbWFnZVVSTCBhbmQgaXNTZWxlY3RlZCBhcmUgYWxsIGZhbHNlL2VtcHR5
LgorICAgICAgICAvLyBkcmFnZ2FibGVOb2RlKCkgZGV0ZXJtaW5lZCBhbiBpbWFnZSBvciBsaW5r
IG5vZGUgd2FzIGRyYWdnYWJsZSwgYnV0IGl0IHR1cm5zIG91dCB0aGUKKyAgICAgICAgLy8gaW1h
Z2Ugb3IgbGluayBoYWQgbm8gVVJMLCBzbyB0aGVyZSBpcyBub3RoaW5nIHRvIGRyYWcuCiAgICAg
ICAgIHN0YXJ0ZWREcmFnID0gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmgKaW5kZXggYmU4YzgzNGFlZTYxNTY5YmRlMjFjOGI5MGZhZTljMDRmYTM1YTBiYS4u
MjYxYThkNTNmNzM2NThiMDcxZjIxMDU2YWU1OGIyNGIxYmI0NTk2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgRG9jdW1lbnQ7CiAgICAgY2xhc3MgRHJhZ0NsaWVudDsKICAgICBjbGFzcyBE
cmFnRGF0YTsKKyAgICBzdHJ1Y3QgRHJhZ1N0YXRlOwogICAgIGNsYXNzIEVsZW1lbnQ7CiAgICAg
Y2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgRnJhbWVTZWxlY3Rpb247CkBAIC03NSwxMyArNzYsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBEcmFnRGVzdGluYXRpb25BY3Rpb24gZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnRGVzdGluYXRpb25BY3Rp
b247IH0KICAgICAgICAgRHJhZ1NvdXJjZUFjdGlvbiBkZWxlZ2F0ZURyYWdTb3VyY2VBY3Rpb24o
Y29uc3QgSW50UG9pbnQmIHBhZ2VQb2ludCk7CiAgICAgICAgIAotICAgICAgICBOb2RlKiBkcmFn
Z2FibGVOb2RlKGNvbnN0IEZyYW1lKiwgTm9kZSosIGJvb2wgZGh0bWxPSywgYm9vbCB1YU9LLCBp
bnQgeCwgaW50IHksIGJvb2wmIGRodG1sV2lsbERyYWcpIGNvbnN0OwotICAgICAgICBib29sIG1h
eVN0YXJ0RHJhZ0F0RXZlbnRMb2NhdGlvbihjb25zdCBGcmFtZSosIGNvbnN0IEludFBvaW50JiBm
cmFtZVBvcywgTm9kZSopIGNvbnN0OworICAgICAgICBOb2RlKiBkcmFnZ2FibGVOb2RlKGNvbnN0
IEZyYW1lKiwgTm9kZSosIGNvbnN0IEludFBvaW50JiwgRHJhZ1N0YXRlJikgY29uc3Q7CiAgICAg
ICAgIHZvaWQgZHJhZ0VuZGVkKCk7CiAgICAgICAgIAogICAgICAgICB2b2lkIHBsYWNlRHJhZ0Nh
cmV0KGNvbnN0IEludFBvaW50Jik7CiAgICAgICAgIAotICAgICAgICBib29sIHN0YXJ0RHJhZyhG
cmFtZSogc3JjLCBDbGlwYm9hcmQqLCBEcmFnT3BlcmF0aW9uIHNyY09wLCBjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIGJvb2wg
aXNESFRNTERyYWcpOworICAgICAgICBib29sIHN0YXJ0RHJhZyhGcmFtZSogc3JjLCBjb25zdCBE
cmFnU3RhdGUmLCBEcmFnT3BlcmF0aW9uIHNyY09wLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4pOwogICAgICAgICBzdGF0aWMg
Y29uc3QgSW50U2l6ZSYgbWF4RHJhZ0ltYWdlU2l6ZSgpOwogICAgICAgICAKICAgICAgICAgc3Rh
dGljIGNvbnN0IGludCBMaW5rRHJhZ0JvcmRlckluc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ1N0YXRlLmgK
aW5kZXggNmIxZjY3NTZlM2QyMWU3N2ZiMTliMGI5ODdiMjQwMzFkNzBlZDBmYS4uNWFiZDJhMDFj
ZmYxOTYzM2I3ZWVjYmYzNWIxZjdjYTJkNjhhMjg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5o
CkBAIC0yNiwyMyArMjYsMjkgQEAKICNpZm5kZWYgRHJhZ1N0YXRlX2gKICNkZWZpbmUgRHJhZ1N0
YXRlX2gKIAorI2luY2x1ZGUgIkRyYWdBY3Rpb25zLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ2xpcGJvYXJkOworY2xhc3MgTm9kZTsK
Kwogc3RydWN0IERyYWdTdGF0ZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHJhZ1N0YXRl
KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICBlbnVtIEV2ZW50
RGlzcGF0Y2hQb2xpY3kgeworICAgICAgICBET19OT1RfRElTUEFUQ0hfRVZFTlRTLAorICAgICAg
ICBESVNQQVRDSF9FVkVOVFMsCisgICAgfTsKICAgICBEcmFnU3RhdGUoKSB7IH0KKyAgICBib29s
IHNob3VsZERpc3BhdGNoRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudERpc3BhdGNoUG9s
aWN5ID09IERJU1BBVENIX0VWRU5UUzsgfQogICAgIFJlZlB0cjxOb2RlPiBtX2RyYWdTcmM7IC8v
IGVsZW1lbnQgdGhhdCBtYXkgYmUgYSBkcmFnIHNvdXJjZSwgZm9yIHRoZSBjdXJyZW50IG1vdXNl
IGdlc3R1cmUKLSAgICBib29sIG1fZHJhZ1NyY0lzTGluazsKLSAgICBib29sIG1fZHJhZ1NyY0lz
SW1hZ2U7Ci0gICAgYm9vbCBtX2RyYWdTcmNJblNlbGVjdGlvbjsKLSAgICBib29sIG1fZHJhZ1Ny
Y01heUJlREhUTUw7Ci0gICAgYm9vbCBtX2RyYWdTcmNNYXlCZVVBOyAvLyBBcmUgREhUTUwgYW5k
L29yIHRoZSBVc2VyQWdlbnQgYWxsb3dlZCB0byBkcmFnIG91dD8KLSAgICBib29sIG1fZHJhZ1Ny
Y0lzREhUTUw7CisgICAgRXZlbnREaXNwYXRjaFBvbGljeSBtX2V2ZW50RGlzcGF0Y2hQb2xpY3k7
CisgICAgRHJhZ1NvdXJjZUFjdGlvbiBtX2RyYWdUeXBlOwogICAgIFJlZlB0cjxDbGlwYm9hcmQ+
IG1fZHJhZ0NsaXBib2FyZDsgLy8gdXNlZCBvbiBvbmx5IHRoZSBzb3VyY2Ugc2lkZSBvZiBkcmFn
Z2luZwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGQyMTU5NWFi
YzVhNWIxMjA1NWQxOTJiMjM3YzJlYjQyYzBjYWU1MjMuLmYyMTM3MWMwOWNmYzc1ZjMyYjY0OTky
OGE2Y2NiZTk4ZTM2N2E5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAg
LTc4LDYgKzc4LDcgQEAKICNpbmNsdWRlICJVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oIgog
I2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5o
IgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1l
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC01ODcsMTIgKzU4OCw2IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpldmVudE1heVN0YXJ0RHJhZyhjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIGV2ZW50KSBjb25zdAogICAgIGlmIChldmVudC5idXR0b24oKSAhPSBMZWZ0QnV0dG9u
IHx8IGV2ZW50LmNsaWNrQ291bnQoKSAhPSAxKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Ci0gICAgYm9vbCBESFRNTEZsYWc7Ci0gICAgYm9vbCBVQUZsYWc7Ci0gICAgYWxsb3dESFRNTERy
YWcoREhUTUxGbGFnLCBVQUZsYWcpOwotICAgIGlmICghREhUTUxGbGFnICYmICFVQUZsYWcpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZp
ZXcoKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYwMSwxMSAr
NTk2LDEyIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpldmVudE1heVN0YXJ0RHJhZyhjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KSBjb25zdAogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCisgICAgdXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCk7CiAgICAg
SGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOwogICAgIEhp
dFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zKCkpKTsK
ICAgICBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+bGF5ZXIoKS0+aGl0VGVzdChyZXF1ZXN0
LCByZXN1bHQpOwotICAgIGJvb2wgc3JjSXNESFRNTDsKLSAgICByZXR1cm4gcmVzdWx0LmlubmVy
Tm9kZSgpICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCktPmRyYWdnYWJsZU5vZGUobV9mcmFtZSwg
cmVzdWx0LmlubmVyTm9kZSgpLCBESFRNTEZsYWcsIFVBRmxhZywgcmVzdWx0LnBvaW50KCkueCgp
LCByZXN1bHQucG9pbnQoKS55KCksIHNyY0lzREhUTUwpOworICAgIERyYWdTdGF0ZSBzdGF0ZTsK
KyAgICByZXR1cm4gcmVzdWx0LmlubmVyTm9kZSgpICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkt
PmRyYWdnYWJsZU5vZGUobV9mcmFtZSwgcmVzdWx0LmlubmVyTm9kZSgpLCByZXN1bHQucG9pbnQo
KSwgc3RhdGUpOwogfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91
c2VEcmFnKCkKQEAgLTg5MiwyNSArODg4LDIwIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpzZXRBdXRv
c2Nyb2xsUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIH0KIAogI2lmIEVOQUJMRShE
UkFHX1NVUFBPUlQpCi12b2lkIEV2ZW50SGFuZGxlcjo6YWxsb3dESFRNTERyYWcoYm9vbCYgZmxh
Z0RIVE1MLCBib29sJiBmbGFnVUEpIGNvbnN0CitEcmFnU291cmNlQWN0aW9uIEV2ZW50SGFuZGxl
cjo6dXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCkgY29uc3QKIHsKLSAgICBmbGFnREhU
TUwgPSBmYWxzZTsKLSAgICBmbGFnVUEgPSBmYWxzZTsKLQogICAgIGlmICghbV9mcmFtZSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gRHJhZ1NvdXJjZUFjdGlvbk5vbmU7CiAKICAg
ICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gRHJhZ1NvdXJjZUFjdGlvbk5vbmU7CiAKICAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7CiAgICAgaWYgKCF2aWV3KQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiBEcmFnU291cmNlQWN0aW9uTm9uZTsKIAotICAgIHVuc2ln
bmVkIG1hc2sgPSBwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5kZWxlZ2F0ZURyYWdTb3VyY2VBY3Rp
b24odmlldy0+Y29udGVudHNUb1dpbmRvdyhtX21vdXNlRG93blBvcykpOwotICAgIGZsYWdESFRN
TCA9IChtYXNrICYgRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKSAhPSBEcmFnU291cmNlQWN0aW9uTm9u
ZTsKLSAgICBmbGFnVUEgPSAoKG1hc2sgJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpIHx8IChtYXNr
ICYgRHJhZ1NvdXJjZUFjdGlvbkxpbmspIHx8IChtYXNrICYgRHJhZ1NvdXJjZUFjdGlvblNlbGVj
dGlvbikpOworICAgIHJldHVybiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5kZWxlZ2F0ZURyYWdT
b3VyY2VBY3Rpb24odmlldy0+Y29udGVudHNUb1dpbmRvdyhtX21vdXNlRG93blBvcykpOwogfQog
I2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgCkBAIC0xODAyLDcgKzE3OTMsNyBA
QCBib29sIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkKgogICAgICAgICAvLyBNb3Jlb3ZlciwgdGhpcyBvcmRl
cmluZyBjb25mb3JtcyB0byBzZWN0aW9uIDcuOS40IG9mIHRoZSBIVE1MIDUgc3BlYy4gPGh0dHA6
Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvT3ZlcnZpZXcuaHRtbCNkcmFnLWFuZC1kcm9wLXByb2Nl
c3NpbmctbW9kZWw+LgogICAgICAgICBpZiAobmV3VGFyZ2V0ICYmIGNhbkhhbmRsZURyYWdBbmRE
cm9wRm9yVGFyZ2V0KFVwZGF0ZURyYWdBbmREcm9wLCBuZXdUYXJnZXQsIGV2ZW50LCBjbGlwYm9h
cmQsICZhY2NlcHQpKSB7CiAgICAgICAgICAgICAvLyBBcyBwZXIgc2VjdGlvbiA3LjkuNCBvZiB0
aGUgSFRNTCA1IHNwZWMuLCB3ZSBtdXN0IGFsd2F5cyBmaXJlIGEgZHJhZyBldmVudCBiZWZvcmUg
ZmlyaW5nIGEgZHJhZ2VudGVyLCBkcmFnbGVhdmUsIG9yIGRyYWdvdmVyIGV2ZW50LgotICAgICAg
ICAgICAgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyAmJiBkcmFnU3RhdGUoKS5tX2RyYWdTcmNN
YXlCZURIVE1MKSB7CisgICAgICAgICAgICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjICYmIGRy
YWdTdGF0ZSgpLnNob3VsZERpc3BhdGNoRXZlbnRzKCkpIHsKICAgICAgICAgICAgICAgICAvLyBm
b3Igbm93IHdlIGRvbid0IGNhcmUgaWYgZXZlbnQgaGFuZGxlciBjYW5jZWxzIGRlZmF1bHQgYmVo
YXZpb3IsIHNpbmNlIHRoZXJlIGlzIG5vbmUKICAgICAgICAgICAgICAgICBkaXNwYXRjaERyYWdT
cmNFdmVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVudCk7CiAgICAgICAgICAgICB9CkBA
IC0xODIwLDcgKzE4MTEsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3Ao
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkKgogICAgIH0gZWxzZSB7
CiAgICAgICAgIGlmIChuZXdUYXJnZXQgJiYgY2FuSGFuZGxlRHJhZ0FuZERyb3BGb3JUYXJnZXQo
VXBkYXRlRHJhZ0FuZERyb3AsIG5ld1RhcmdldCwgZXZlbnQsIGNsaXBib2FyZCwgJmFjY2VwdCkp
IHsKICAgICAgICAgICAgIC8vIE5vdGUsIHdoZW4gZGVhbGluZyB3aXRoIHN1Yi1mcmFtZXMsIHdl
IG1heSBuZWVkIHRvIGZpcmUgb25seSBhIGRyYWdvdmVyIGV2ZW50IGFzIGEgZHJhZyBldmVudCBt
YXkgaGF2ZSBiZWVuIGZpcmVkIGVhcmxpZXIuCi0gICAgICAgICAgICBpZiAoIW1fc2hvdWxkT25s
eUZpcmVEcmFnT3ZlckV2ZW50ICYmIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyAmJiBkcmFnU3RhdGUo
KS5tX2RyYWdTcmNNYXlCZURIVE1MKSB7CisgICAgICAgICAgICBpZiAoIW1fc2hvdWxkT25seUZp
cmVEcmFnT3ZlckV2ZW50ICYmIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyAmJiBkcmFnU3RhdGUoKS5z
aG91bGREaXNwYXRjaEV2ZW50cygpKSB7CiAgICAgICAgICAgICAgICAgLy8gZm9yIG5vdyB3ZSBk
b24ndCBjYXJlIGlmIGV2ZW50IGhhbmRsZXIgY2FuY2VscyBkZWZhdWx0IGJlaGF2aW9yLCBzaW5j
ZSB0aGVyZSBpcyBub25lCiAgICAgICAgICAgICAgICAgZGlzcGF0Y2hEcmFnU3JjRXZlbnQoZXZl
bnROYW1lcygpLmRyYWdFdmVudCwgZXZlbnQpOwogICAgICAgICAgICAgfQpAQCAtMTgzNiw3ICsx
ODI3LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQsIENsaXBib2FyZCoKIHZvaWQgRXZlbnRIYW5kbGVyOjpjYW5j
ZWxEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBDbGlwYm9hcmQq
IGNsaXBib2FyZCkKIHsKICAgICBpZiAobV9kcmFnVGFyZ2V0ICYmIGNhbkhhbmRsZURyYWdBbmRE
cm9wRm9yVGFyZ2V0KENhbmNlbERyYWdBbmREcm9wLCBtX2RyYWdUYXJnZXQuZ2V0KCksIGV2ZW50
LCBjbGlwYm9hcmQpKSB7Ci0gICAgICAgIGlmIChkcmFnU3RhdGUoKS5tX2RyYWdTcmMgJiYgZHJh
Z1N0YXRlKCkubV9kcmFnU3JjTWF5QmVESFRNTCkKKyAgICAgICAgaWYgKGRyYWdTdGF0ZSgpLm1f
ZHJhZ1NyYyAmJiBkcmFnU3RhdGUoKS5zaG91bGREaXNwYXRjaEV2ZW50cygpKQogICAgICAgICAg
ICAgZGlzcGF0Y2hEcmFnU3JjRXZlbnQoZXZlbnROYW1lcygpLmRyYWdFdmVudCwgZXZlbnQpOwog
ICAgICAgICBkaXNwYXRjaERyYWdFdmVudChldmVudE5hbWVzKCkuZHJhZ2xlYXZlRXZlbnQsIG1f
ZHJhZ1RhcmdldC5nZXQoKSwgZXZlbnQsIGNsaXBib2FyZCk7CiAgICAgfQpAQCAtMjYyOSwxMiAr
MjYyMCwyMiBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChjb25z
dCBJbnRQb2ludCYgZHJhZ1ZpZXdwb3J0TG9jYXRpb24pCiAgICAgSW50U2l6ZSBkZWx0YSA9IGRy
YWdMb2NhdGlvbiAtIG1fbW91c2VEb3duUG9zOwogICAgIAogICAgIGludCB0aHJlc2hvbGQgPSBH
ZW5lcmFsRHJhZ0h5c3RlcmVzaXM7Ci0gICAgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzSW1h
Z2UpCisgICAgc3dpdGNoIChkcmFnU3RhdGUoKS5tX2RyYWdUeXBlKSB7CisgICAgY2FzZSBEcmFn
U291cmNlQWN0aW9uU2VsZWN0aW9uOgorICAgICAgICB0aHJlc2hvbGQgPSBUZXh0RHJhZ0h5c3Rl
cmVzaXM7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbkltYWdlOgog
ICAgICAgICB0aHJlc2hvbGQgPSBJbWFnZURyYWdIeXN0ZXJlc2lzOwotICAgIGVsc2UgaWYgKGRy
YWdTdGF0ZSgpLm1fZHJhZ1NyY0lzTGluaykKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEcmFn
U291cmNlQWN0aW9uTGluazoKICAgICAgICAgdGhyZXNob2xkID0gTGlua0RyYWdIeXN0ZXJlc2lz
OwotICAgIGVsc2UgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0luU2VsZWN0aW9uKQotICAgICAg
ICB0aHJlc2hvbGQgPSBUZXh0RHJhZ0h5c3RlcmVzaXM7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRHJhZ1NvdXJjZUFjdGlvbkRIVE1MOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIERyYWdT
b3VyY2VBY3Rpb25Ob25lOgorICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbkFueToKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogICAgIAogICAgIHJldHVybiBhYnMoZGVsdGEu
d2lkdGgoKSkgPj0gdGhyZXNob2xkIHx8IGFicyhkZWx0YS5oZWlnaHQoKSkgPj0gdGhyZXNob2xk
OwogfQpAQCAtMjY0Nyw3ICsyNjQ4LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmZyZWVDbGlwYm9h
cmQoKQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCwgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCiB7Ci0gICAgaWYg
KGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyAmJiBkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1M
KSB7CisgICAgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyAmJiBkcmFnU3RhdGUoKS5zaG91bGRE
aXNwYXRjaEV2ZW50cygpKSB7CiAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ0NsaXBib2FyZC0+
c2V0RGVzdGluYXRpb25PcGVyYXRpb24ob3BlcmF0aW9uKTsKICAgICAgICAgLy8gZm9yIG5vdyB3
ZSBkb24ndCBjYXJlIGlmIGV2ZW50IGhhbmRsZXIgY2FuY2VscyBkZWZhdWx0IGJlaGF2aW9yLCBz
aW5jZSB0aGVyZSBpcyBub25lCiAgICAgICAgIGRpc3BhdGNoRHJhZ1NyY0V2ZW50KGV2ZW50TmFt
ZXMoKS5kcmFnZW5kRXZlbnQsIGV2ZW50KTsKQEAgLTI2NjUsNiArMjY2NiwxMiBAQCBib29sIEV2
ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnU3JjRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIGNvbnN0IFBsYQogICAgIHJldHVybiAhZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnRUeXBl
LCBkcmFnU3RhdGUoKS5tX2RyYWdTcmMuZ2V0KCksIGV2ZW50LCBkcmFnU3RhdGUoKS5tX2RyYWdD
bGlwYm9hcmQuZ2V0KCkpOwogfQogICAgIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0YXRpYyBi
b29sIEV4YWN0bHlPbmVCaXRTZXQoVCBuKQoreworICAgIHJldHVybiBuICYmICEobiAmIChuIC0g
MSkpOworfQorCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50
V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQuZXZlbnQoKS5idXR0
b24oKSAhPSBMZWZ0QnV0dG9uIHx8IGV2ZW50LmV2ZW50KCkuZXZlbnRUeXBlKCkgIT0gTW91c2VF
dmVudE1vdmVkKSB7CkBAIC0yNjgyLDUwICsyNjg5LDYxIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogICAg
IC8vIENhcmVmdWwgdGhhdCB0aGUgZHJhZyBzdGFydGluZyBsb2dpYyBzdGF5cyBpbiBzeW5jIHdp
dGggZXZlbnRNYXlTdGFydERyYWcoKQogICAgIAogICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0
RHJhZyAmJiAhZHJhZ1N0YXRlKCkubV9kcmFnU3JjKSB7Ci0gICAgICAgIGFsbG93REhUTUxEcmFn
KGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwsIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01h
eUJlVUEpOwotICAgICAgICBpZiAoIWRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwgJiYg
IWRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlVUEpCi0gICAgICAgICAgICBtX21vdXNlRG93bk1h
eVN0YXJ0RHJhZyA9IGZhbHNlOyAvLyBubyBlbGVtZW50IGlzIGRyYWdnYWJsZQotICAgIH0KKyAg
ICAgICAgZHJhZ1N0YXRlKCkubV9ldmVudERpc3BhdGNoUG9saWN5ID0gKHVwZGF0ZURyYWdTb3Vy
Y2VBY3Rpb25zQWxsb3dlZCgpICYgRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKSA/IERyYWdTdGF0ZTo6
RElTUEFUQ0hfRVZFTlRTIDogRHJhZ1N0YXRlOjpET19OT1RfRElTUEFUQ0hfRVZFTlRTOwogCi0g
ICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFnICYmICFkcmFnU3RhdGUoKS5tX2RyYWdTcmMp
IHsKICAgICAgICAgLy8gdHJ5IHRvIGZpbmQgYW4gZWxlbWVudCB0aGF0IHdhbnRzIHRvIGJlIGRy
YWdnZWQKICAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVh
ZE9ubHkpOworICAgICAgICAvLyBGSVhNRTogVGhlIGluY29uc2lzdGVudCB1c2Ugb2YgbV9tb3Vz
ZURvd25Qb3MgYW5kIHZpZXctPndpbmRvd1RvQ29udGVudHMoKSBpcyBvZGQuCiAgICAgICAgIEhp
dFRlc3RSZXN1bHQgcmVzdWx0KG1fbW91c2VEb3duUG9zKTsKICAgICAgICAgbV9mcmFtZS0+Y29u
dGVudFJlbmRlcmVyKCktPmxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICAg
ICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKICAgICAgICAgaWYgKG5vZGUgJiYg
bV9mcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0gbV9m
cmFtZS0+cGFnZSgpLT5kcmFnQ29udHJvbGxlcigpLT5kcmFnZ2FibGVOb2RlKG1fZnJhbWUsIG5v
ZGUsIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwsIGRyYWdTdGF0ZSgpLm1fZHJhZ1Ny
Y01heUJlVUEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9tb3VzZURvd25Qb3MueCgp
LCBtX21vdXNlRG93blBvcy55KCksIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzREhUTUwpOworICAg
ICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0gbV9mcmFtZS0+cGFnZSgpLT5kcmFnQ29u
dHJvbGxlcigpLT5kcmFnZ2FibGVOb2RlKG1fZnJhbWUsIG5vZGUsIG1fbW91c2VEb3duUG9zLCBk
cmFnU3RhdGUoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJh
Z1NyYyA9IDA7CiAgICAgICAgIAogICAgICAgICBpZiAoIWRyYWdTdGF0ZSgpLm1fZHJhZ1NyYykK
ICAgICAgICAgICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0gZmFsc2U7IC8vIG5vIGVsZW1l
bnQgaXMgZHJhZ2dhYmxlCi0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8gcmVtZW1iZXIg
c29tZSBmYWN0cyBhYm91dCB0aGlzIHNvdXJjZSwgd2hpbGUgd2UgaGF2ZSBhIEhpdFRlc3RSZXN1
bHQgaGFuZHkKLSAgICAgICAgICAgIG5vZGUgPSByZXN1bHQuVVJMRWxlbWVudCgpOwotICAgICAg
ICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjSXNMaW5rID0gbm9kZSAmJiBub2RlLT5pc0xpbmso
KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbm9kZSA9IHJlc3VsdC5pbm5lck5vblNoYXJl
ZE5vZGUoKTsKLSAgICAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzSW1hZ2UgPSBub2Rl
ICYmIG5vZGUtPnJlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdTcmNJblNlbGVjdGlvbiA9
IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5jb250YWlucyhtX21vdXNlRG93blBvcyk7Ci0gICAgICAg
IH0gICAgICAgICAgICAgICAgCiAgICAgfQogICAgIAogICAgIC8vIEZvciBkcmFncyBzdGFydGlu
ZyBpbiB0aGUgc2VsZWN0aW9uLCB0aGUgdXNlciBtdXN0IHdhaXQgYmV0d2VlbiB0aGUgbW91c2Vk
b3duIGFuZCBtb3VzZWRyYWcsCiAgICAgLy8gb3IgZWxzZSB3ZSBiYWlsIG9uIHRoZSBkcmFnZ2lu
ZyBzdHVmZiBhbmQgYWxsb3cgc2VsZWN0aW9uIHRvIG9jY3VyCi0gICAgaWYgKG1fbW91c2VEb3du
TWF5U3RhcnREcmFnICYmICFkcmFnU3RhdGUoKS5tX2RyYWdTcmNJc0ltYWdlICYmIGRyYWdTdGF0
ZSgpLm1fZHJhZ1NyY0luU2VsZWN0aW9uICYmIGV2ZW50LmV2ZW50KCkudGltZXN0YW1wKCkgLSBt
X21vdXNlRG93blRpbWVzdGFtcCA8IFRleHREcmFnRGVsYXkpIHsKLSAgICAgICAgbV9tb3VzZURv
d25NYXlTdGFydERyYWcgPSBmYWxzZTsKLSAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0g
MDsKLSAgICAgICAgLy8gLi4uYnV0IGlmIHRoaXMgd2FzIHRoZSBmaXJzdCBjbGljayBpbiB0aGUg
d2luZG93LCB3ZSBkb24ndCBldmVuIHdhbnQgdG8gc3RhcnQgc2VsZWN0aW9uCi0gICAgICAgIGlm
IChldmVudEFjdGl2YXRlZFZpZXcoZXZlbnQuZXZlbnQoKSkpCi0gICAgICAgICAgICBtX21vdXNl
RG93bk1heVN0YXJ0U2VsZWN0ID0gZmFsc2U7CisgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnRE
cmFnICYmIChkcmFnU3RhdGUoKS5tX2RyYWdUeXBlICYgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlv
bikgJiYgZXZlbnQuZXZlbnQoKS50aW1lc3RhbXAoKSAtIG1fbW91c2VEb3duVGltZXN0YW1wIDwg
VGV4dERyYWdEZWxheSkgeworICAgICAgICBBU1NFUlQoZXZlbnQuZXZlbnQoKS5ldmVudFR5cGUo
KSA9PSBNb3VzZUV2ZW50TW92ZWQpOworICAgICAgICBpZiAoKGRyYWdTdGF0ZSgpLm1fZHJhZ1R5
cGUgJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpKSB7CisgICAgICAgICAgICAvLyAuLi4gdW5sZXNz
IHRoZSBtb3VzZSBpcyBvdmVyIGFuIGltYWdlLCB0aGVuIHdlIHN0YXJ0IGRyYWdnaW5nIGp1c3Qg
dGhlIGltYWdlCisgICAgICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdUeXBlID0gRHJhZ1NvdXJj
ZUFjdGlvbkltYWdlOworICAgICAgICB9IGVsc2UgaWYgKCEoZHJhZ1N0YXRlKCkubV9kcmFnVHlw
ZSAmIChEcmFnU291cmNlQWN0aW9uREhUTUwgfCBEcmFnU291cmNlQWN0aW9uTGluaykpKSB7Cisg
ICAgICAgICAgICAvLyAuLi4gYnV0IG9ubHkgYmFpbCBpZiB3ZSdyZSBub3Qgb3ZlciBhbiB1bnNl
bGVjdGFibGUgZWxlbWVudC4KKyAgICAgICAgICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0g
ZmFsc2U7CisgICAgICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdTcmMgPSAwOworICAgICAgICAg
ICAgLy8gLi4uIGJ1dCBpZiB0aGlzIHdhcyB0aGUgZmlyc3QgY2xpY2sgaW4gdGhlIHdpbmRvdywg
d2UgZG9uJ3QgZXZlbiB3YW50IHRvIHN0YXJ0IHNlbGVjdGlvbgorICAgICAgICAgICAgaWYgKGV2
ZW50QWN0aXZhdGVkVmlldyhldmVudC5ldmVudCgpKSkKKyAgICAgICAgICAgICAgICBtX21vdXNl
RG93bk1heVN0YXJ0U2VsZWN0ID0gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAvLyBGdWRnZSB0aGUgdGltZXN0YW1wIHRvIHByZXZlbnQgdGhlIGZvbGxvd2luZyBjYXNlIGZy
b20gb2NjdXJpbmc6CisgICAgICAgICAgICAvLyAxLiBVc2VyIHN0YXJ0cyBhIGRyYWcgaW1tZWRp
YXRlbHkgYWZ0ZXIgbW91c2UgZG93biBvdmVyIGFuIHVuc2VsZWN0YWJsZSBlbGVtZW50LgorICAg
ICAgICAgICAgLy8gMi4gV2UgZW50ZXIgdGhpcyBibG9jayBhbmQgZGVjaWRlZCB0aGF0IHNpbmNl
IHdlJ3JlIG92ZXIgYW4gdW5zZWxlY3RhYmxlIGVsZW1lbnQsCisgICAgICAgICAgICAvLyAgICBk
b24ndCBjYW5jZWwgdGhlIGRyYWcuCisgICAgICAgICAgICAvLyAzLiBUaGUgZHJhZyBnZXRzIHJl
c29sdmVkIGFzIGEgcG90ZW50aWFsIHNlbGVjdGlvbiBkcmFnIGJlbG93IC9idXQvIHdlIGhhdmVu
J3QKKyAgICAgICAgICAgIC8vICAgIGV4Y2VlZGVkIHRoZSBkcmFnIGh5c3RlcmVzaXMgeWV0Lgor
ICAgICAgICAgICAgLy8gNC4gV2UgZW50ZXIgdGhpcyBibG9jayBhZ2FpbiwgYW5kIHNpbmNlIGl0
J3Mgbm93IG1hcmtlZCBhcyBhIHNlbGVjdGlvbiBkcmFnLCB3ZQorICAgICAgICAgICAgLy8gICAg
Y2FuY2VsIHRoZSBkcmFnLgorICAgICAgICAgICAgbV9tb3VzZURvd25UaW1lc3RhbXAgPSBldmVu
dC5ldmVudCgpLnRpbWVzdGFtcCgpIC0gMiAqIFRleHREcmFnRGVsYXk7CisgICAgICAgIH0KICAg
ICB9CiAgICAgCiAgICAgaWYgKCFtX21vdXNlRG93bk1heVN0YXJ0RHJhZykKICAgICAgICAgcmV0
dXJuICFtb3VzZURvd25NYXlTdGFydFNlbGVjdCgpICYmICFtX21vdXNlRG93bk1heVN0YXJ0QXV0
b3Njcm9sbDsKICAgICAKKyAgICBpZiAoIUV4YWN0bHlPbmVCaXRTZXQoZHJhZ1N0YXRlKCkubV9k
cmFnVHlwZSkpIHsKKyAgICAgICAgQVNTRVJUKChkcmFnU3RhdGUoKS5tX2RyYWdUeXBlICYgRHJh
Z1NvdXJjZUFjdGlvblNlbGVjdGlvbikpOworICAgICAgICBBU1NFUlQoKGRyYWdTdGF0ZSgpLm1f
ZHJhZ1R5cGUgJiB+RHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgPT0gRHJhZ1NvdXJjZUFjdGlv
bkRIVE1MCisgICAgICAgICAgICAgICAgfHwgKGRyYWdTdGF0ZSgpLm1fZHJhZ1R5cGUgJiB+RHJh
Z1NvdXJjZUFjdGlvblNlbGVjdGlvbikgPT0gRHJhZ1NvdXJjZUFjdGlvbkltYWdlCisgICAgICAg
ICAgICAgICAgfHwgKGRyYWdTdGF0ZSgpLm1fZHJhZ1R5cGUgJiB+RHJhZ1NvdXJjZUFjdGlvblNl
bGVjdGlvbikgPT0gRHJhZ1NvdXJjZUFjdGlvbkxpbmspOworICAgICAgICBkcmFnU3RhdGUoKS5t
X2RyYWdUeXBlID0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbjsKKyAgICB9CisKICAgICAvLyBX
ZSBhcmUgc3RhcnRpbmcgYSB0ZXh0L2ltYWdlL3VybCBkcmFnLCBzbyB0aGUgY3Vyc29yIHNob3Vs
ZCBiZSBhbiBhcnJvdwogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkp
IHsKICAgICAgICAgLy8gRklYTUUgPHJkYXI6Ly83NTc3NTk1PjogQ3VzdG9tIGN1cnNvcnMgYXJl
bid0IHN1cHBvcnRlZCBkdXJpbmcgZHJhZyBhbmQgZHJvcCAoZGVmYXVsdCB0byBwb2ludGVyKS4K
QEAgLTI3NDQsMTAgKzI3NjIsMTAgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29u
c3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiAgICAgICAgICAgICAgICAg
ICAgICAvLyB0byBtYWtlIHN1cmUgaXQgZ2V0cyBudW1iaWZpZWQKICAgICBkcmFnU3RhdGUoKS5t
X2RyYWdDbGlwYm9hcmQgPSBjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCgpOyAgCiAgICAgCi0gICAg
aWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwpIHsKKyAgICBpZiAoZHJhZ1N0YXRl
KCkuc2hvdWxkRGlzcGF0Y2hFdmVudHMoKSkgewogICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYg
dGhlIGlzIGEgRE9NIGJhc2VkIGRyYWcsIGlmIGl0IGlzIGdldCB0aGUgRE9NIHNwZWNpZmllZCBk
cmFnIAogICAgICAgICAvLyBpbWFnZSBhbmQgb2Zmc2V0Ci0gICAgICAgIGlmIChkcmFnU3RhdGUo
KS5tX2RyYWdTcmNJc0RIVE1MKSB7CisgICAgICAgIGlmIChkcmFnU3RhdGUoKS5tX2RyYWdUeXBl
ID09IERyYWdTb3VyY2VBY3Rpb25ESFRNTCkgewogICAgICAgICAgICAgaWYgKFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBkcmFnU3RhdGUoKS5tX2RyYWdTcmMtPnJlbmRlcmVyKCkpIHsKICAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IHdvcmsgY29ycmVjdGx5IHdpdGggdHJh
bnNmb3Jtcy4KICAgICAgICAgICAgICAgICBGbG9hdFBvaW50IGFic1BvcyA9IHJlbmRlcmVyLT5s
b2NhbFRvQWJzb2x1dGUoKTsKQEAgLTI3ODMsOCArMjgwMSw4IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQog
ICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0RHJhZykgewogICAgICAgICBQYWdlKiBwYWdlID0g
bV9mcmFtZS0+cGFnZSgpOwogICAgICAgICBEcmFnQ29udHJvbGxlciogZHJhZ0NvbnRyb2xsZXIg
PSBwYWdlID8gcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKSA6IDA7Ci0gICAgICAgIGJvb2wgc3RhcnRl
ZERyYWcgPSBkcmFnQ29udHJvbGxlciAmJiBkcmFnQ29udHJvbGxlci0+c3RhcnREcmFnKG1fZnJh
bWUsIGRyYWdTdGF0ZSgpLm1fZHJhZ0NsaXBib2FyZC5nZXQoKSwgc3JjT3AsIGV2ZW50LmV2ZW50
KCksIG1fbW91c2VEb3duUG9zLCBkcmFnU3RhdGUoKS5tX2RyYWdTcmNJc0RIVE1MKTsKLSAgICAg
ICAgaWYgKCFzdGFydGVkRHJhZyAmJiBkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MKSB7
CisgICAgICAgIGJvb2wgc3RhcnRlZERyYWcgPSBkcmFnQ29udHJvbGxlciAmJiBkcmFnQ29udHJv
bGxlci0+c3RhcnREcmFnKG1fZnJhbWUsIGRyYWdTdGF0ZSgpLCBzcmNPcCwgZXZlbnQuZXZlbnQo
KSwgbV9tb3VzZURvd25Qb3MpOworICAgICAgICBpZiAoIXN0YXJ0ZWREcmFnICYmIGRyYWdTdGF0
ZSgpLnNob3VsZERpc3BhdGNoRXZlbnRzKCkpIHsKICAgICAgICAgICAgIC8vIERyYWcgd2FzIGNh
bm5lZCBhdCB0aGUgbGFzdCBtaW51dGUgLSB3ZSBvd2UgbV9kcmFnU3JjIGEgRFJBR0VORCBldmVu
dAogICAgICAgICAgICAgZGlzcGF0Y2hEcmFnU3JjRXZlbnQoZXZlbnROYW1lcygpLmRyYWdlbmRF
dmVudCwgZXZlbnQuZXZlbnQoKSk7CiAgICAgICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJh
ZyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggYWE0NDRiMzQ2NjNi
NTljMzc4YTQxN2M3MmVkZGVjOWNlYWJkOTJhMS4uZTRlNzJlM2Y5NjQ3ZmRhNTFmYzY2NDNmNTRj
MmU1MWMyZjYxZTJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAjZGVmaW5lIEV2ZW50SGFuZGxlcl9oCiAKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5o
IgorI2luY2x1ZGUgIkRyYWdTdGF0ZS5oIgogI2luY2x1ZGUgIkZvY3VzRGlyZWN0aW9uLmgiCiAj
aW5jbHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQu
aCIKQEAgLTQ5LDcgKzUwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDbGlwYm9h
cmQ7CiBjbGFzcyBDdXJzb3I7Ci1zdHJ1Y3QgRHJhZ1N0YXRlOwogY2xhc3MgRXZlbnQ7CiBjbGFz
cyBFdmVudFRhcmdldDsKIGNsYXNzIEZsb2F0UG9pbnQ7CkBAIC0zMjIsNyArMzIyLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRlZmF1bHRBcnJvd0V2ZW50SGFuZGxlcihGb2N1c0RpcmVjdGlvbiwg
S2V5Ym9hcmRFdmVudCopOwogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICB2b2lkIGFs
bG93REhUTUxEcmFnKGJvb2wmIGZsYWdESFRNTCwgYm9vbCYgZmxhZ1VBKSBjb25zdDsKKyAgICBE
cmFnU291cmNlQWN0aW9uIHVwZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZCgpIGNvbnN0Owog
I2VuZGlmCiAKICAgICAvLyBUaGUgZm9sbG93aW5nIGFyZSBjYWxsZWQgYXQgdGhlIGJlZ2lubmlu
ZyBvZiBoYW5kbGVNb3VzZVVwIGFuZCBoYW5kbGVEcmFnLiAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93391</attachid>
            <date>2011-05-12 19:40:29 -0700</date>
            <delta_ts>2011-05-13 15:18:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59409-20110512194028.patch</filename>
            <type>text/plain</type>
            <size>122353</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYxNjQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiYTQzNTYzOWJmMjE1MWNjYTk4MmJj
YjYzNDZhZmZjNDczMWYxZTkxLi44MGVhZGUxODNjMDUyZjE0Y2FjMDk3ZDVkMGVlMTE3MWZkODgw
ZTg4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDUtMTIgIERhbmllbCBDaGVuZyAgPGRj
aGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wcm92ZSBkcmFnIHN0YXJ0IGxvZ2ljCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTQwOQorCisgICAgICAgIEFkZCBhIG5ldyB0
ZXN0IHRvIHRlc3QgZHJhZyBzdGFydCBlZGdlIGNhc2VzIG9uIE1hYyAoYmVjYXVzZSBvZiBhIG5v
bi16ZXJvIHRleHQgZHJhZyBkZWxheSkKKyAgICAgICAgYXMgd2VsbCBhcyByZWJhc2UgYW4gZXhp
c3RpbmcgdGVzdC4KKworICAgICAgICAqIGZhc3QvY3NzL3VzZXItZHJhZy1ub25lLmh0bWw6IFRl
eHQgbm9kZXMgYXJlIG5vIGxvbmdlciBkcmFnZ2FibGUuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGlvbnMtdG8tY29udGVudGVkaXRhYmxlLWV4
cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVi
b2FyZC9kcmFnLXNlbGVjdGlvbnMtdG8tY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVj
dGlvbnMtdG8tY29udGVudGVkaXRhYmxlLmh0bWw6IEFkZGVkLgorCiAyMDExLTA1LTEwICBBYmhp
c2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXNlci1kcmFn
LW5vbmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3VzZXItZHJhZy1ub25lLmh0bWwKaW5k
ZXggYzg4Y2FhZjZlZTU2YzM4NmI4ZTNiNmY0NDVkNGMxYTc3M2UxYTA4Yy4uZjkzMzUxMzVjNWQ5
YzFhNWY5MTdlN2UwYzViZTg0YTU4ZTlhODE0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvdXNlci1kcmFnLW5vbmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy91c2Vy
LWRyYWctbm9uZS5odG1sCkBAIC0xOSwxMSArMTksMTEgQEAKICAgICAgICAgPGltZyBjbGFzcz0i
ZHJhZy1ub25lIiBzcmM9InJlc291cmNlcy9ncmVlbmJveC5wbmciPgogICAgIDwvZGl2PgogCi0g
ICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9IklNRyB0ZXh0IHRleHQgQSBuaWwiPgorICAgIDxk
aXYgY2xhc3M9ImJveCIgZXhwZWN0PSJJTUcgQSBBIEEgbmlsIj4KICAgICAgICAgPGEgaHJlZj0i
IyI+PGltZyBzcmM9InJlc291cmNlcy9ncmVlbmJveC5wbmciPng8YnI+PHNwYW4+eTwvc3Bhbj48
L2E+CiAgICAgPC9kaXY+CiAKLSAgICA8ZGl2IGNsYXNzPSJib3giIGV4cGVjdD0iSU1HIHRleHQg
dGV4dCBBIG5pbCI+CisgICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9IklNRyBBIEEgQSBuaWwi
PgogICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iZHJhZy1lbGVtZW50Ij48aW1nIHNyYz0icmVz
b3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4K
IApAQCAtMzEsMTEgKzMxLDExIEBACiAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcmFnLW5v
bmUiPjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW5ib3gucG5nIj54PGJyPjxzcGFuPnk8L3NwYW4+
PC9hPgogICAgIDwvZGl2PgogCi0gICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9IkEgdGV4dCB0
ZXh0IEEgbmlsIj4KKyAgICA8ZGl2IGNsYXNzPSJib3giIGV4cGVjdD0iQSBBIEEgQSBuaWwiPgog
ICAgICAgICA8YSBocmVmPSIjIj48aW1nIGNsYXNzPSJkcmFnLW5vbmUiIHNyYz0icmVzb3VyY2Vz
L2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIAotICAg
IDxkaXYgY2xhc3M9ImJveCIgZXhwZWN0PSJBIHRleHQgdGV4dCBBIG5pbCI+CisgICAgPGRpdiBj
bGFzcz0iYm94IiBleHBlY3Q9IkEgQSBBIEEgbmlsIj4KICAgICAgICAgPGEgaHJlZj0iIyIgY2xh
c3M9ImRyYWctZWxlbWVudCI+PGltZyBjbGFzcz0iZHJhZy1ub25lIiBzcmM9InJlc291cmNlcy9n
cmVlbmJveC5wbmciPng8YnI+PHNwYW4+eTwvc3Bhbj48L2E+CiAgICAgPC9kaXY+CiAKQEAgLTQz
LDExICs0MywxMSBAQAogICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iZHJhZy1ub25lIj48aW1n
IHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAg
ICA8L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0iQSB0
ZXh0IHRleHQgQSBESVYiPgorICAgIDxkaXYgY2xhc3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVj
dD0iQSBBIEEgQSBESVYiPgogICAgICAgICA8YSBocmVmPSIjIj48aW1nIGNsYXNzPSJkcmFnLW5v
bmUiIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4K
ICAgICA8L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4cGVjdD0i
QSB0ZXh0IHRleHQgQSBESVYiPgorICAgIDxkaXYgY2xhc3M9ImJveCBkcmFnLWVsZW1lbnQiIGV4
cGVjdD0iQSBBIEEgQSBESVYiPgogICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iZHJhZy1lbGVt
ZW50Ij48aW1nIGNsYXNzPSJkcmFnLW5vbmUiIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+
eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIDwvZGl2PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGlv
bnMtdG8tY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1zZWxlY3Rpb25zLXRvLWNvbnRlbnRlZGl0YWJs
ZS1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzcwYmM2NTRjZjRlNjE1MzcwMjA0MmEzMjI5ZTJl
YmMzYjA4YzkwMgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNzAzMDEKemNtWl5MMlJ6bUx8Mzhy
dEF0YyRBSDAqfHp0JiopfVp6MUVAZHlsZCpEdjhWX2dza2p3akVHOEIkbGpSOyQyeU1mCnp8Tjdr
ZmB+QU40ZDtJP1FhbGlMX0ZYQSZePEdKMyMpSyVxPUE3ZVUzS3RPT0A7bSp4XzFPIUFKMU8hTDQk
VmxLTAp6MzlmPG1AUEMoX1opckszSn5sSjhjNSo9eGh6Z3JMR0ImJHpDTSttdVZ0KTBDaGBFNU1z
bjlodWYkUF5ydWJQV0kKengqR0YqYkI9KDNnRnhZPyVtZXFOTVlMdGFxZ2p1IS01YmApZ0stOH5l
Y0dPN0RObkR5enNSazNfQT0pIXJFOUU9CnpwV1lHI3puWWUjO1J1LVV1MUt8fDhSajZ7YCRqQDM7
KHo+Nno7QkxZTSQrYWkzaCZLWS19OGpeZ2J2dj1zOFdZPwp6eDZQdzZAeWp9RHkjdmMzM0hhb044
RmtlakxQdXUmSGVxQit7JkoyT2p3YktgPnkmYzFGNj5WJUwtVH5GTnVLKy0KenhufDw5MG17KXZw
c31sZ3ZXNFg4VkhVcDw0U2U+JXVkJFdDUE1MPUkhUjM9V2M/PmMlTXZOcFd2bENUKFFCJmhwCnpg
M0wxQCtCZmdzJTxjVjU7PVdZY3c7fj5gJW9UKGg7IzgxajQyRi10PGF+N0h2fnFYVEg1Sk42Zl9l
ZVVlSiVRMQp6QjJucHZKPWF0fDRlO0Voemd5Nl4+Y2lncE5xe25sZ04hV0RVbkVNOWxCaUsmJlJJ
KyhPNzExK1I7P09pdS01Q1IKem1JK01gJThiRms5WXRBTSh0NTI8MWZOTm5lVzk4cXM2eUJKc2dP
cz51LXRQPUIjSiFILT9jZ3RIQl4xPHQ+aVB5CnpnYzJSemVMSX1hZnw5LXlPQUF+Tk9HfWNkbFg7
KD9mMWpiQnt6N141NCo4K0FII1I3IWA+TU9jO01Va2QhaClZJQp6QU9+Mz4kNmpoPDhIKCR8MXlS
U31XU04jZj1iYjxGVlhoXnJ6K0pmTC1eK2RfYFEhdTlvJUY2YkhmZnVvPTQmYmgKekZGRFZJcFhF
JjxXTjhffGBSeXBZb0V5dVk8IS1Sald8KChvPlJBN3ZrIXhkVGNifHRMPj5aaV5nVWZJeSpPLW42
CnphQDFjX2ZwMngtIV9+Y0hhe0tOUlc1KWg2bUVyK1R2TGo7MlJJa2xtYmorQGJNe19FYFc4aFE+
Ry1sTCNvJDw4Nwp6R2cyZjk9WEZfemEqPWw2KiFqOEdjI1d+JUd9KkFaa2JUblVKTnMpbUkoUyNg
SHgpejluR3Z1NHVoV2k7aTtMPDcKemVHVi0wODBuJDEoeD8paVRyWXlWQ1BuMitkMkVgV0AyNEdQ
bWRDSVk2VFVXXkBKTH1PbCVXfi1VfjdxRFAxbmZuCnp2Sm9QMHIwS3E8QGJhYyUzOHQhUS1JZygh
MGtoPClkI0luTC1rSSEkNllxVmYrMUtOUlVhMHlrel5PcEhwTVpBYgp6PSNpMX1kMktLO3lqJDVq
d2F+ZERLKik8NUdUaV83bEFaKVRPJGVYdzRlKztwb0dZaHJJcmVBQmk7TGxSR1ZZQksKemgwP2E9
PFF8X311NEhQUC0+KXw0dlB8SExSZVg5b28kemdvcj5tPiRpVnU3RHdRdGpvNzVQZlYxTWo7WSgq
I2ZDCnokMnxBc0tkKDA+KChJenxWfEIwR3dnPm1yXyliPiRuT0hANVlUMTM1UkNufktEdz1pKXk+
Vj1FKVliPmZjbyFTbQp6IV9UeilkfXBiXl9uLUdtX1BOMmRwZ0ZKQz5PdDs5bzF0SFdUR3krKk81
WXd8cT5hZVk5Wl9Ob1BJVyhybE1PYTUKekVHdWpOYGp6YUJhJldhOV9SNVZMYTAjNG90Iz5jZFlp
Vm56Pkc0ZkBxJThNai1NY2c/bDQoJDJuIXVHWllkbG84CnpvUmVFa05SWEA9YXhxKiQ8JGh7ZWtC
Z2pVMnsrO0I/d01ZNCVLcXlJLTl5dEArYFd6UG5Oan1ocWIyMzskRmohYAp6N0FgPXwhUVUpQW8p
PmZubXhRPnZ4cUdheD1pVHEha2BqKyt4SG9yI3J9ZE1vJEJFNHBFemp5bkZGKEZtTU5XbSEKejhB
QD9tR3MxUD40RUs4dFV2UUVLMXFEXil4NlhIR2lUZG5aWWwmdj5Hazwqa04kKmgtOEdeI3J4IzhX
MzleOGkpCnpYOT5wZW1nUGd4azBXU0psayMld2Y/RHBQVlFWdFlrP3FsQ152KCRYJkpYbVJ7WV8x
JmY2OW4+IVlGT1NwbkFtSQp6KSVBNjI5RGl8RCklVlIhQSlGXmAkTkMld1ZgXm07Wm56ejVYI0R1
YDlXe354ZjEjX0BgTWN6ZUR+JUNmPmhtaVAKek9wM215OT9ZayUkQF5geypRfmVTY3ZQJT9gfVhh
fXI4KnghZXpjISRYU0UldmBtKFdjdCtCRE9CTENUfTJQR3c/CnpmUVUjYWNLMmdKS0AyQjNkPkg7
ZlMkWC11O05hT1AoXz5FcVlvOSY7X0sxO0BAb2luNXExJFpsaFpqNWZaMSpSJQp6TW95fXklNz5a
WjslVWR3YG4lfDJvNFB5Rk5gS3ZmUCtsIzUpTjhMN2dJJTNiaTVady0jSSMlNyR1UnpFVX4xJSgK
ekBgQm9NY0JVOys5NiMpJnRmblI8Oz1mZn1VPkNPJHR8VSMtWCVPXkRtVjYwYntNdDtTbyNSeVZA
JGZIYXApen1XCnpBOXt+djYlPGduSUI0blhwUW5fdzlqakdBOChiaGVsOWAhVjtsNnRJKnxUU1Fi
LXRgKWN1fEsqOyUpQn5ZTkBeRgp6bTZmOENCSWZTeUB5PXFBbjV5XlBtaGRkJVEmTUw3aSVlZkJw
MSZMJCZkfWppeX1aRXByMFNRIW5VNHB7IzttJnIKem8xUUcyWGFEUz1UUTUxYDtqTjYrKXFLbTw8
UX1HSzdKTnB2RWdOcHEoNkNCaz17MmkwU2ZqWUw+UDF7bzZLSSpoCnpCSSYmcUtyVFRrMmprai0x
I15PfXd7bj92e3E4eFRXMzhXSDkoZjxgajx1fGRHZXdmKlgqYG9udE1CUWRwTFJTdwp6aEpPPHVa
dl5pWlVTNH1VUmRJM2drTT8jKStgPmFEYzFkTmk8bU9MMmBURXQoZ00mO3JacnQjKz8qOUR3TlAy
cEAKelVXSStZUjcqNkplO21LeiVzemZCPnQ2UEY2KDQrdHtAQnI8XlZpXkNENTxHMjlUVTVmaysq
fXFCQDIjVWQ4MiVyCnp4enJkPmFgQWpnRWF8KHghPDlsXylxOGRPeT11dHRCOTsreHVXPlU9c2pK
WiNjbDlEcD8+Snx1ZTMhM14taWhqSQp6aTR2RkQ8YzFIRy0/eGVPP2ByT3R5eiZuWkU+bndocGgq
QCthVVpTZDx2b2JsV357WXpibHojP29AZnpGUitUNHgKejRudmhPbV9eRHJza0hQdTB8VWR3U1Zk
KTNSbVk5RnlJZnBjQTl9NVpFMWcyJWpseVROMz1SOHlnT1R9KVUwZnt1CnpeaHVVND9wJjFWJTxR
YlRxMll4blF9Sz8qUGR2UCVOKlN+az9NVntAN09CKGdzZlhoOCZJeig8Wj5kUlI2Pm17WQp6c0Fp
Pk93SDhsKU0rWkFUSmFfJEYmJEF2b3p5Rk02bTxWcFJxVFg2ZEVwejNVPSZNTWhQMS1aPXR6M0ww
YXBldHQKemltQX45JCZNTGFIQEoyYU9HYF5QRHpaaFlwWkFZdz1qa2paP2ByT1A2YU09M1l2VCoh
WlEoYiVFXy1nU3UzT19sCnopTCRRNmZpPnpFKkUlaVl5KE02M1lGZEBjLVhhSnlkaEMpdj1+LVZW
cnhAJExkPFgyUDFXJjdwd1k4R2x3aWxqcQp6c0h8O3JAP0d0WDYpNVI3LTghNlpsOSlAbFlqc3to
a3h0JkUkN3BfSSg3UWg4eWdsbExzT0J0ST5HIV5NLXY2MjMKeipqPkg0c2g4Z34tUGZFTkh7d2Ar
RXAqTj9MTTh1diF9QnlyTmk0RDlofWN5MFByV1V5ampnUkRXNWRHIVY0Xks2CnphbG9lVmhPTytD
MjswbzIhTkcpc1dUdjZKclYyN05pOzcxeSZ3NmAjQzFVeXRvR2B6NSoqdCFxVjJUVzBGNDQ/PQp6
JG91WW9IYSRVYGN9ISZGYVVvJTA3bVotYzFvJTBWQkVOMzAqYSNfIUM3WXZBa3BselRQYHRENCR4
fVZxX2pqMF8KekRwfkgqIXwtPkpIc3RxR25PY1luNndfUDB3TlBIU0w7bWwpQ3coUm9yTDklRUot
b2d6P3Z4KkRuUDc5Qm1hbU9PCnpyMGkqJjxGYGp3QTMyVzQpM0V3UEJxeHE+a3AtJWVvTEUrdypT
UCV+ZVc7T3MzcCErfCteKlpJbHFgXi0mIXJTQQp6Nkdee2F0NSZNaE9YI1VjcFdFYGxEOWtkVVlQ
fj5nY0VQNy08Y1FmVDRSJEAzbF5lLWF5O2lZczJqTzRkWkVecn4KekZ0QFB5Mmp5JmhlWGU2c1Uw
UndeSyp8PHpZemR2NENSdDZ9e3JBKmBYJnhFWElOdkNHPDxje09LO2BkRUxVSn1rCno0RyNKPyU9
YSRZPnQ4JnNzYTJneUBvdl81KF5sQTFEPU50SUR5fHMyWWxBYHczSmMzSzJKN2Y/N3YmSVZWUnIj
NAp6e1dyakpwPjwxQkgqI2B2PkxiMTlNKS07I2RQPEFKV3t6WXgrdCVBfEM1ODVERXRZNW1TQXB8
UCZkY0tecGtmdWYKem5jbnF3I0oybkt3VChlTjdmbCZmJTF4Iyh0U3d6MzVvKHo2S2dhOE1DbzRZ
c24rMTt6KGJAVj40SkRNeT1OaGd3CnpUJm9WRHpId0I4ZDQjMTtWSmBMYzFPYXVFT0ZAQE5scXQr
MldAaEZlOVVaMk9CKFBKSngjVkRPaE0obld7ayQkdAp6TFEwQmJKPEAmYzY4JGteOFJfYmdPcjUt
WUpQZjdmNEZaJUJqYFlMPHNzfGJ2bl49RHJlYS0wMHI5LUhaZENke08KenhucEJgZEBVb0BaazRW
fU9tY0VeP2tRUkZzUlkzeEE9dyhhbztIZiliRTYlKHF3P2c3e35JMjBTWEV7bEtZd210CnpIeGd5
NiEkPVo7OD9WTWZkSVQ+Y1hUVURLJCkkenFUUk1HZDtiZjtgI1ZAUHQ0NXY7M3NGWTJVMkhiTl8z
YTs4Jgp6RVUkV04kKDRCd0A2dENTSyZqVzRwXj59OUd5clMweGByT2p0PX4lKVpKRlJLI2BeQiFQ
bUdhRGNoa0IhT0dfNykKeiRiU0NrYEdjK0shfXdeYWdMcnYxazA8bDxtZnhxWkJxazxhVn5XKHpI
UjwoZ1hjWDN2cCFeZEpOV1VYe2BRJjFoCnpwYTRmT1g4Pm5abX16SkxYWWdGRHpTaX0wOU8yRWpJ
bFN3fi1WVXBXKjE1ZXUmanx4JnBuckE/UjtCfD5oKUt+TQp6U2xjY3h2NEEkR0w7d1h0QUd4X3FP
KkgpYWE1MD4kayozOUFCUkU1dUU4VTBraV4rP3lGIUJgTjlaVDQ1KiQ9e0YKelZeOE1tUmV0e1FC
WjV1aDZWRWRhdkpKKTsqailmJGxCcz5vMyRWcnhfVWpKdSVGNDxzMXFaISNsUTJHRSR9PmVhCno9
allldDFrd0pzQF92bGY4OENTN3lQS1BlMDIocU5OQW4jZiVwYFkqKGNMRiprXyp6OShpK25lOGsy
PCROV0BFUAp6YXhkI040aGBNSEY2a3NARCYlUSZiM2FoJmV5XyZ8eTtrOXwmSUwlTCNsYVAyWnpZ
cm40YTk1aXdhI0pXY0tmSX0KeiYxIytvZ0AxUFRDRXFEdy09SV41LVk7cnZCXkBoUyUyMlNlOGU3
PT9laGted3dRKDJKQVBAO0tTZS1uU25GMX5KCnpmJil1MjhsNnxKZW1ifmVaJT0kfHlXTmVFaVJv
O3pZRH1CQ1RpRTFpJDhoNCg+YSlPJktRQ1YoRVMtXz1hU09TXgp6NW8yUFJlJC0zKHVweDtqSCNf
R21ETkd1Sks4QipMQU42V1F7KTZiQDBteyhLVUMoRnQqKklaV3ZsYHI5R0taI2sKelRnTDU/bDcl
TD5EeiZLfGBHdVhZJTRmVHBeV2RgaCFQYj1jP3FWXnJKUCFfaGxVZFZoTmNaPm1CTylUfkh5NT01
CnpOUWlpQ0B7QW9HLX5yN04wNzhJU216JGRseFVJUlIxJlZ0fCFuJX1jWTxDcERIUH4wJUpVOyRi
JGVRfj1oO0Nicwp6ZiomYGVgOUM5RCE2ZDxtc1kzY092antgfj5qMlk0NXQ0cVlfajtqZCh2Qmor
a3l9e1M3eFBPR0BVRVlGWilia18KemE/NXdDa3NVIWZARX5QcTleZF9fRT1tdSg8ZUFOUjRIKEM4
Wjl4NmxkXllaOFdAU357UGFGWSZIbUVrPyE4WSUjCno2TjFVY2U+RT9MJiFfa3VjPHx7fSlXNWxF
O1hXTyF4d1JWWXJ3cEJ9ZXZ4MVZyOFlEKTFkIzV0SyMlV0pENi1kYQp6YWk+cTg/Jj5RT1pxVzRe
TUlZSFFtZXUpbFQrPFdUNUtUVD1wNVo+JVArQmlvTy1lJnJOTmV4NE4jaz8mYihPSFgKejh1PlE/
TmA8VSQmKSkjTU1tPVUoNGdCXzljeGAkWWVuQztVeFYrXlN4cDNqYXJDM0YxMiNMIU5jbyt+R0gj
SWQ/Cnp2by1td3h+WTBmcWB4Y0AyQndgfGNWRDBVS2xHRlU5c2E4ZjFySystPCMzRExYPzV+ZT9m
I1A4YGEqOE9ye2R6RQp6U3I0R0dAY0lyeUprZTJAcyopa3BzUTA9YGR4fUlnX2l3Q21gYn5lS2hn
Zys4VSZjUSVqMGpee21AIWtsUCR5eEYKek9DYndJPiQwU0khYm1tOC1QczFHNjRJTH0kM1JrNnBY
KThgd0AjRnl5NjJ0a1M+UmlAUHEpVHQ+KilNNkFUMGdmCno+IUpfUzBwTnZXckx2KFJgPyspSEh0
X2hYKlJJYF5PbEAofEtsYiFVMm88WXx6NVZtMEJAYGVON2skKTY0WGlkXwp6OThPMmFFVyh1fiNK
cEdtQTxlaHdaK1h2TE8tO0woWk5JWiZpOURvSC0oOGdWKnpESUE9V0p8aklecChiZVlmQzIKelBH
bXsjWFYoKEZVQjB+R2QyKEUpeXc8STAhVDhBa2RMeHZ5JThtOGNsekMpJVhxOVBnVEkqZnZ1VCZX
eFZ8TUxXCnohbj5+WVYpZ29acio2UTJnZHFYVDQhODRnJlVKWnJYR2c/aWpneVghNHZQNDt5IT5m
KV83KEAwRHttKyheYGJ4fAp6eipHJjZ5YH04JVhYc2RST31yVFhrOCtVaSNRJjFCPiRBP3RVRz1g
bzska19tPGU0dzAzP0YlVkNMSGRpOSRxYSMKelohJHFDUlNsKUtuT2swQ1lJNkFUe3JmUkhHPiMh
QUNneFNed0VrejBnMWI1JXFXPTJsP299PHt0TW1DRVEyQ2FUCno8aEFqMEJqWkZvSFNfQipSRHU9
KnFkIVc8Tld3aV9DQHEoTWRHekQ0KHpkVmI7eUp4SjJZNyhFRnFtT35MWVg/fgp6JDA9cmYtZD47
ZVNqZihia0J7I1pXcUB0fnpCMmRUJk1kU0hsXyhOckRVfHNCLVgpO3ptbX0yMyYyZFFfV0Y7TmEK
eld8e3o2Y3Z8MCQqaUx6ezRjS1ZSPmIrXzsrdTdYPm5+TEF3X0U3SGJWZkJMKkI3ZzhibUspRm08
QGt1JEArU1d0CnppdStOPEFIITJYQSVlTDNpZVAjXlkxNVRAJlczQldIalZXVFJjdDQrdlBlOyVn
VzQtO15UZkREJTVXOGBkfnhhTwp6N3dyTTtmakNsNzVOJWJlMnB7UXNZPiFtKE1oNUB0VHpXTEQo
e0hvdTVtOFlLJVlGcys4bk8+aWtNRXNrMnNaQVYKemNMckp9d2t7aHNheHVLKll4S0wmK3Z6Zn1R
YWJLcHRTRnV5JCsjQj1xYykwN0xoJlVoXmItSyQ/WHxlTmtKU2gzCno+Kzlab3QxV3RIJnNiPmFn
dHA5REEtSkw3cj1IWDxLR2J3d2U+VEowYyY9Yz0qR0RyZ2pmTlA/JSM0T2VVVXk1Xwp6RmZ3ZVlQ
R0VAY1ZCP2pzTnhtO1I7Yy1hfSN3Y2JtdmFtZEljNzckQj04dmdMbEpyU3tmdTF4bVZRZSNHNG90
SmEKenw2dkxkTkVyYi1rdy0zZCllNmgjam9lYnRUcEcwPVFoTGMqa3gkYEZTS3JHVDBLMWpYcHlx
M3VUdTh8dyRTayE3Cnp4UHRvXj19V00oVlY+dWtyYks/ZFZUMSheLXo3YGRYWTRQTyZQNl9RVHVV
THpuZmgjNWZUe0xLcT9RNmNEaXF9dwp6SWRfYiVeUnM9eW9yZVlfPUxMPjgpfn0wMDMmSVEoPm83
NGYzNTRlWkMwJmIhaXc3QTM8UWc7VyFRJHROODcySE8KekJQVDkwSmdiKTcrNj4yIXpUazJuRlB9
UigwMkZNNEhUMFooKUprUUNQWlY1aEFqa016UzJ7NU02ej9eSzYhJUdUCnpnZEhYKV9nYXBwJXYk
PSUwYG4/RUV2NUctVEdnS1Y2Q05uRFBgcVRNckY8dUhoU0shJmQje1VPXks5eSRYIyFKdAp6d1df
SCZzND1mI3dCT0h1I1NqREszZU9mTWdsfnZRbG5ZWmk2VDRPVVEwbXIjdnpYXm1sd0Y5U25VP3NF
e15RbGgKeiRJeUxvb2FFNCVmRXV2N2pLS340e2Z5bistN3Q2bnVVKS0qd0ZsIyhua3cxJEUjfF4k
Q1o8V0MlYGlnZGVuYzkpCnpfKmdAK1B+fERDa05jQ1o1LUdraXE4WVBtbVpOV2VWdGtXUG1lSEI2
R3Y+KiUhZiMyZ3c+S3V4YFV8NWRSalooVAp6aktLZztZPSZsPCFzc1plczd3K3ZnKE5eeFM9JHh8
MCZwPUxJMVlUOEh7NUdYRFV2JC02JjVgdU4zQT0qUStQNVQKek8rSTBqYlNKfmYwKE4zXnYtYHg7
UXghaERMWWY1eihAVylKPTF4dkBFZT1+eXJePnx4a0ljPTN0eDl0PWY5fSo0CnpOWUduN0w9X2JO
dWF+YT4lXzdqKXdXV3dNTW5JTCFHO31XSU1qKmw5TTl9UXdWQXZxe1RkJGBqIypDbXM9NHFTQAp6
S01QQyNmP0NSWjVGc3AtRjNObkFVQyF5ZjM8THJDNGItViN0MWpFfSgjfSNJaVdVZFp3Z3opTUcx
X3lpeSZtIVEKejQrOTZVc3JYbz1mcXIlQzFaVjwhZD84YUpmU2U1NkN5dXIhLSlJM3tySiFjKjd6
fn1eWVBWPk8rKl80Oz01WDBDCnpDfTY2aiUrQnxAPSkzaUthWFREWnt3MkA2OzVefCNPTHpXNlFg
Yks0TStMV3klbDtnSjlHVFY4Y3VCNG1AXy1MZAp6WjB0QE09NlNTREl9U2I/d2tqPzBGR1ZHYHdX
JEQ/Qi1xSHpjeVJldnNaSXZLP0ElXlpIKzl0QSM4X0V2YDtfYm8KelE8LT1APDNseE17UU9uN0gr
fFRsUHF1TDQoUD9SQzQhV2R2PFhPYT1MISV7az9tWExQLXkwfDg7cEdMXihOYiNOCnoyViUmVmJA
MyUjYj9sKn44I1ZvKD9IfHU1YyQxdG5PeTxVd0ZxMlJkdlkySzMjZjh6TV5DTlFhZ1VGMkNMYU4t
JQp6YXUldkFpblJmSHorMkRBSTFnaHRZPktnQ3twOypIYk9rNlUmZHZ8KTxlNkFsaEdVPHctZzty
c1d1XlVrR2B9WT8KekYtYHJAd3x8QmNTTkBNa2RvaXZSV1lUQFE/YGp9VCEkI0BPUWdpekteI3Ny
a1UwcSEkPE1qcW9fQ2lweHpDMWhpCno9Rk9YbC1gYD9EbklPX1hsVFNIcmc8YyNqJHtlK1JAdSFT
PihaUCpLZ0dRUH5wNGVGVkxNWWpkR2p+bV9gUmBPYAp6Uz1iVCp6ejB+YnpjIzhgWW8tblYwcHAt
bD1YbVFVUF5pWStndldZVi1HfEVGcV40UyFuZyQ2XzB1bGs5ZU41VkkKemB7N3I4IyRiUiFSOzVn
RSNiYVlZNituU1JwSTAxX1EyIzYkXlF7bndwP3VVVXs/QkV3ckx6V1g3TlVIKFZ2SWRKCnpQN3x+
XmZEI09IPyNqVX43UCpnYzV2dGJLKShzcilnPD1LKWZ8a29yRmB4dUUmKFZPbygkeyFSMSg0UkV1
aHpAKgp6S1NjO0doUiFmcjBteyMwWERMbTEwLU41YCQ8V0JvOV9aNlBKd0JJVE1Ie310UU9gI3lo
bztyPUlCaCN4XjlfTGAKeitTK0hMT3lQQ2w3UE5ZQzhvQEtwVmskejN5Izt4YzlwQnZ3fEpseDVH
MmNLb21aOW1pRGdfaXtCYjBsKj54Oz08CnohPz1ZI0Q1JWNAJj8+MUt4Zno8SHdsKzJiUCR8RUVi
NEUqU0dENlFsYVJYWmtvNjtnWkdGWWFQK3hyZ0k3MndhOAp6b0QrKSEjUngjQUpib05SQmp8fW8j
Ukc9QDRSTD59eDEzUVglNVBhT2FGUmJjS3xIYSlTS2Y1fi1MNih2JU07dGkKenBmKkx0YWFwJlVA
fkE3MEVGc19xNyZGNClMT2BQTFdecmx9MnNfeWlPaDc+fVpIYVEmK2owUHUxPTdqeWImcEFyCnpX
KFNzYzdoenZ4bEVRV0paV24xYW03eWVEZnFEdnx2YnFzXl54Q1lidj1rPHoqYmpjUEJSfVUkN3sp
SXYkPm1pJgp6P0FzYWohV015NFkjSkBte05vMkQ0NTE5eiFLenR9Ty07bTVoN0FvZXVWMjUwOSgh
V153WWl4RFlWbkVqb3F3MXcKej0+TURRLWE0ZCllP3M0d3JmVXQ/PjtwUTU/MEVgI2lDVG1sQjVW
bmF6ZCFCd1QxZzc9bHp3SFlNVUxAQT1pZ1daCnpEeT4pVDhoT0tRZDJhNitKbVRWV3VseWduNSVn
RkNPPDBPMVlnQ3NLaiUmNHltZ1J+JGxoYCk3REBqMj9mcVhyOwp6V199P1ctQTFQLS1ULTNwck1P
bzI2Yzd5bjN8cmVocjlHJntWeXhxI0g8bX1MO29HMkR0Km90fElnN1BYQFltRkAKelA5ZkM4OD4y
ZjA1fHpVNE4lME8tM2t5PTE0cyoqUk9yP0txQ1V3ZmZOWlhhU1dgVU5SNiR+UWdjIUVnK2pVJT92
CnojM2NkeHFJQT8wSXJwe2NqMlMtXzdTPD08YUM9LW48YXU7NFBxIVJFMndhfl5IMHtZX018WEMx
Sy14bztJLW88OAp6anJBYDI9PF5EWlkhN29FIXRlc3c0I1c8SntUJnllc18kQlNMN25fcWZPMiVh
X3NwWno7VHpydSlkXkZwVzhHZH4Keig9Si1hJkBqc1lTXmh8NFBKVmdEYT5GJHVePkE7dFdgQT5O
TkEoc0JHMkElang1TT5KYGRlS1dqX2lCQl9fTjVHCnozUk5oKD5xYFF0TURsfkN3WHxJRWc1OFV3
TjVlSn5JPSNNcHE3Nmp7eEd2eTkoKno2LSV7RCYqPj1LSUwqRHI9TAp6NmxOQmxZTU1HbiVyXmwr
IUc+LSVESFZgazl6UEMrTStyKzZifTUzS3B5OzQqQiM+NnkqJTU8b2hFYWdCTmw4cWMKem52T0de
MGJHYitfWCtHaXh+PkhuNipRTWxVYSZERVAhUndHRjhXWkFAVXVhP0IhRVd9SXUoQn04JExjVzt4
O3h0CnppdVQoM2VMPjNEKGxRSl9TZ0RzO1NIfSp6ZjJqXzxRUlZMVTFfam5abl59PUczVitEdHt3
RHIxZnRITiUhQ3wqVAp6WnZgcEBxRTEmKFkyQyZ2ckFjcmNKNVRGJXFaZlVlN05tbDIteE5TZShB
THU4QVVndCQxOWJPQzd6WV4pQ1EkOV4Kemh6YWAmM309N2s9PmwjQmFUUT9QWnwxUXJsM01LZ1N9
VDhYWkVaV34jVVJOKDh3VzlrRiZPNExoe0gtc04oMzsyCnppel9NK3VyYE9xX1JaSn5sPnM1U2RI
MmJ6Mk4xMWFlUDlsejA9QCk5MExxQzcrJWw7NyhlTkJrKW90QVopUD9ZWQp6ZjckNmozSUsqT1lM
cTM/QEhnUyNnRkhDRWpGRDVUZWBkY2kqdnVyNj52ZUElZGtIVnVNXmQjZS05bWI9QHtgJEoKekVH
LVczZ2tRV2t2NDlmOzEpcW45aG8rQFM2O3M5bzx2LSN4dV5WaFlFdlRpWjJsZ0RhTSQ1e0l6fk4l
KnsjOVUlCnpASDlGeG1MTmI5ZkxfcmswREIqN09GJVY0c08zPn5FNH4mbGFqO1d4bjI/cD84RDhN
R2p9YyNPcUp3PmI+S3EqJAp6TH1wRSFJKjkyemdWRjMjP0k1fWNgNW8/cXo1P0RgcVg0Mn5fZ2NY
d0JPKVMjJUdlazRrfkBuMzZKWjRAbX5oNncKejRtPDU0IVNSfXFpIytwJTVpPzB0SCFmN2ZPTT5H
JnJfR1Ixe1hROVBuUz84ckpGU2RVYH1MUEZ4KG5jMk9AS3JYCno2Y1E/eStxNjtPSj94ayFFWUwt
bT5WQnRnb2x1azk9QiZsaS04eH5vem81Q2pTemchSC1YN0pTOFR1fnRVVW4wcAp6NiF8RVkyfmI/
IVEoNmBtZDBeMU4lSURMc2ZfSF5UPzBTNmlFRztuR0txfHg3VWBOcjxqMlZlIz5XZlRVdn4rYiUK
emVTSzJeI1kxQ25FRFIhJG9gVmRqa2dLV05sJStaPHYkbEkzV0VPdmRUWGtpK011T0hPU0FffnU2
aGxgRVFBRGtUCnpiT0ptQW5eOHVXQ08rUE44Wmxab0V8ZDlgaVRCPmZDaFZrQW91Z0heWk5+Nkcp
PDkwLTYkPVJvKEtheVBPNj5zZAp6PC1oX3VXPDJhLT0pYylpelo4dyFGUW58PV4mTmYoUFZsWkBv
QmlWP3VkY1NSKCo+WERraWZIYU5GOW5SeXRKU0cKemVpQ1JiaCFuO0UjTl5xMTl6NFR5RHdHXkhl
Qnl6QFhKWnJMVEhSS1N0IS1VY3hPfHRzc0hnfVMoPnB5cnItTUJZCnp1I0xnRmcrKWsyKy1vZnNS
bT81dyZIb25+OyZjYF5JYDdianc7M1JiR0lPQ288Q2d6QjNtfE5BZSZvajR2WFNmVwp6eE5XMjxP
d0Uhc2F0JEJpdEdubG81O0VEWURgd21TM2FPWXUzLXQtKDEqUU9nVSpCMyE3Y3UxM0ZWY2ZgP3Vr
fkYKek90az4yeWd1NztwRChWYDMod2FmeHl1ODU4S3k+JilfWDBVRF5nTndtdClUK3d0YSR6RVUo
NCFMS3tEbzRUIW0qCnoxeyhxQDVpeTE9dGdJOVpVT3psMWJecmVUQnlvP0l1KWglMSQ5Yk1zPlI+
Z1IoRGAhWjYkND9XPDNRJkxvbHs3cAp6cD5uYih7PHJObXNyOV8reGU/NzVhJGBuMXRgUnV9V3hQ
TGFGd05wZjtMKmp3ZSk/TjQrSXtAPEtSaEBtOWMmRD8KejkqbGFSckg8ZU9OSDlHYjV8V3t6QXRu
U0c7dz1mektVNipkRWZWWTQmT0c5SUBNNGlTMVZmOzF1ZUZaWT0rVURtCnowODdEdVl3SnB2LShJ
d2tZREdwWjQwUml1YWdVS31iZ3w4T3BTTkh4ZlVycSVpbSRNO140bW1YaHt4fDJAPz8kQQp6bUUh
cEI9NHJVWjhGPXUoWXt8I0t7bDhIclk1ZkhJMj5OcT47ODVyPHxDO0N5Jj42YmgmcDg/SEdTVVR+
RmVXcVoKelJGVEhoUiRYfHBKNFkwSE1KY3pwUCpJJGxzS18jYlNqT01YZz9BQ2dDR2JLaHBASEd5
TUB+LW5Fd3E1aUt1e3BBCnpeI24yRHdsfmB0VUxvVGlCS1hhOW9fV2NjMjk4eTUrOSlNMSgjfF53
Tj8zQWQ/aXxieV9fbVdqLWRxSnNXdiVATgp6N1dxO3tWfWxYXnNVQkUqa3JycG53PmQlZmxRWTdT
bEleZnJwZ29QZnlefnRseWR1KSZxdTA3cTU5cXRFS35zUiMKenshZXNiWD0pQ0FLVFk7JUA4Z0c5
cTE/WSpody1rK3BzTmlQUWMtNXtQYUk/ITwhPDdPSVErcUE1KFA1cHJQLTJHCnowTS1+fDxXOT1C
TTxUOV5qOUlHNUNkUzRBdUdQbi12bWJ5aGROO1FoOXZvfm1VUjk5Wnd0dlJlSFdsb0JGRUMycgp6
MD1PZTR1P3plYlVKN3R4bkRNaHRzazx6dEkrMCVaPDwlY29KTTFUJCRsMUlXMT5xc3xTX3o3YU4w
QDFRcUNUUkEKejVIPkhMXmRSTXlwUHYtR0ttQE5yY2t2bjREcW9IQGZ0eXMha2k4dUg4U2YoYEJt
fFM+e2ZPPVRmPDhkbntibD1NCnpRVHpPMnsmKTYkeEJ0aWZpUktJb2pmdWFneiMrOEVaPm1fOHUx
UUZJZj4/MEdydn4zOz9WZih8PU5sU0QmWVkrVQp6bT9zYDVhdkNLQjFuTDMxeSoza3M/RzY2SXl0
NWNjLWpKaktJVGxkcT5NdmI4aHZpe1dndU5Yc2tMXzNNeXdBeH4Kenk2b2QrV2FOKnlAeldnI2l5
YWwtK2dHeUdRZkU+Uipab3hDOEhKdygwZWFycUdwQHpOKGVXa3RFVEQzSW48TjBoCnpyU2lhbTFy
VW1lK2NKd3FONlB1Y0hiP20wUF9AQ3Y+YmJwJCVaYSRrVjU1M15Kd3pNeW5jbDc9YCpUbiNNPS11
NAp6ZSViVnZfMDNKZW59U2FpQEx1I1RTa1NPRm9UKWpDOEVKX0xANnlsYnFpSCo9QnkhaDg7eG5A
KURCeGxLPDdiUW0KeiZQSVUzTTJPVmg4NmMmYzNoe31GcmU8Yk9gRi1ZPDVNfXpSTWYtRXJ0bjZN
WlZDRDtqWGQ1QWopSWVfLWMrUWBQCnojcGkrUilrSjdpXnViKG8xeFVnbUAtWVU+TlR5fnp4T3xz
fjBpRzFuZztqaENGTzd6VGZZekI4QlBhKWghNjJDdwp6elBOeVZ7PmhFYFpqYzJMYk5NQUZWQj1g
dGpkS1UlKUNjfkNoZDlJOFQqTGojcHM7fGoyOU5fNnR9fWxCWH5+fmwKej1LbSZWVUlwYW4wVU43
XlZRWXBtOTtKZkY1eSVmRHRJYG4ldSR7NUcjdzJ6fkkxYmtCbW9nTSRXTXwqYytXTEh8CnpSKz13
dj5mNDNYLTx3TkFLaWIrSHBjK3xpZ2tlbHA+TlZxaW1ia1VGdzhtRV44ZiNXUVErUTh2OHlXK25n
VGZVUQp6NSYzWHFJVlkkZnFXfTlhaWpmNHxUYCZvcUshRSNhK2RJditjWSU0PC0mTUM0Y2xjNUBP
T0YxUSpkQklteClwUm8KemY7cDVyT21NakshS0plTkZ4aFI5enNhKGVeYWFJdzBrVShVMC07NEB2
QHhwMEdHeGlTWlZMMyhqPyhtS1J0JFJSCnoqQElKdE4zbXZDUExGekdjbVlJI0FPUnpkJUB+WSht
PmlIJWEkdTMlVGFnM2t2PDxpU19HcGVWQmtUPXlyWWtmSgp6VHFLd3NmYTM/NTtVJTRCV2ohQ09Y
YmpuJmxGUC1Bdio3KEtFRmBxRyhuIyZHa0wla1c9PHZQRzd1Vj4oMHlHVkgKemZ+UExzVGx3X207
WXZBWk5XO0MhUV4+JG9EJD9wWHI7OylZcVpHJUdyNiVfbWtyND9PM34pXykmUGo4ZD04Myt3Cno/
NW0ySyZnX190XylhTzgzcyFjNHJEb2J5aTNMczlvdThJM0lGNnljOy1EdWsjfnVUelRpV2ZLQmBq
K2dwTWV9awp6TW49KlVWX0BEQnVzWFlLdWJHSz1vUXFZbzQzTHpOWGFuRGE+ZXYwREcpVDVBc2V0
X2pDQTdBN2gyM31TNEE/SXUKelpwKntTNjlGYzdJcmlQWD9CXllgeE9HNHVwZkxqZ2ZWX2o2KWMh
VF9rR3EyeE1gSjVlODNlWVR7VFVCQiM0OU0lCnpESEhWcEB9TyV1R0lZaD5oT1Q5ZmdlRnQoanQ2
eSQ9QEdHRip7fl50I3VDKWZqPll2VkJJPSlMMm5IeTtFRyNMeAp6UypuOVBRZiZyXmlVM0BPKSM3
KEI+KD5yTDFrYEdmO2xRMUEyXnMjeEdtPjQ8WWdNemVrVUo8MDAhbWkjQl9OY1cKeiR7Jjs/Wj5L
aipQTShFVDQ0Y247NEV6bWI0ZS1VOGYmYE1+QT1qc3Mlbyg7UjRwQkkrbTxpWW4oMyNOVW9nKzhS
Cno2MVhDNzZaTl5jWkh1dTV8SjVmWHtVblUhQk82WUNJVnJZWUAmMjFmSGlDemltVU1FZGVDXyVU
enl+U1RvKW5uQAp6SVNMeHJoPjt7OGF8UWVjbVg/fm13YnMzQDdPOSF5KU97WVg5ZSM/UWBkKXpz
cm45K08jeE1qZGJaP2RZUF9QekAKenhEI3BXXmBBY0tpPUc3NW8xRHlBUiNzTndmPytedEw4Un5+
TjBoMENyc2xVdFM3M3JWRWNPY21yb2djaG9KQCNRCnolPm5ea094cWpjRj94Smk8PVVjQT5ES1ZO
Km45Qnp0RzUwXlBYQnI7dTl7UCN7fThnVzBMdmd0UzhTa2AxU3QpMwp6UlY4KHltKG1OYGE3QlVL
QUVCZHV4cytpcnpnOH56dHpDZlJBQXFIR2FnZncxSmFMeiR3aT43cmUrX1VvYytwb1MKekJ+YGcl
eTBGPXxMbXc8YGoqb0wzWmpLJTMhcnRCPDhRVFhGPUZfSUV2PlEqaEs+QGd1NUsjcEUzfjRTeyE3
JVQ8CnpIQGY3TEIpbH4ydFVWJDR4VjFNY3I2IWJrVVYjP2dUbGlUUlRjR3RUWDF3YmdYbShKfT9L
U2M4VnM4Q1pHQTVIfAp6UnJKNXV2Y01nSTwzIXk4TVB4O0gxUWRZdV9ZdDx2YENqNH5LaW1kP3VQ
b1E4NCZWQlQyVVAtUTE3S2FvVjFVP1MKeiQtd0dUQTt5QEBFTm5hMVRXRDllRk5DZSM8cFVrWU1o
TE9QdjJ9O0Z3R3s5bEZ1dWpFMEBMXj56fkIhaFkyZHFVCnpfQWojU256Nldrd3hwO2lQNTJIUFNY
RjtuOH10UnRUcUwzZXljLU96UiRWKnY3d3JCaFIhfjN5PHxISG81dyNDUQp6NEFAd2dWP213K3VP
NjFMMH1FPVE0NWZRR29RTlN6OWlEVXM4N0YmOGFeYj5XZnJJdFo7bHwwbTRrd2R3enIlcF8KenZB
c21VTSFRNDlMdCkpV3xHZUFNPVB+Ti1WaD12R0E4ejdsaz9oYUpnIWY3Vj5FMyp6a2VaS2NzTipP
aCZ0I0w0CnoxTllmRCt9RihSTjF2VzYlN2A3bU9aTG9mLTJ3ISk5NTIjR2NDKW9eUEJEWTc/fmlQ
fTNlYzlZUDJocVlmY1d+NAp6dEtSdFB2MXdBTkV5NkQqQ3gqJms7RE9vLSgqLUVZKFEjem8hNGQ/
N2JtaHZHJnorcSMqNEVZX0BLJXFeNyM/RSQKeitXUDdhVG82b0lVYmx9elZybylicT0pYFJNUz11
Q0grIXVmK0M4clZUbipTNXgqMmpxPygtUk9rUEkwcl5UM1pGCnpLdGFEQFpLJHBkV0c/Nm9CLUpK
JXAjbG1GQn47QUk8O0MxO2lYNCo1ZGd7SU4jO28zZFpFQE9qNEpGRHlLSE0tagp6Sjhrc1JoPjUo
K2N3OXQzSTwobDBTZzgjXlIwZ1Jya1QjRl5EKU97QWRfM0xAX0M8P0JOI2B9bkFkM2BfVjY2QS0K
ejRmcyl6Uj1rfllrTU9NPy19PXtjKE1UT1ElfGVwMjJ1eUs9PzcqZlYkajd7Rm8hPEpjU3R+MSky
d1R0PlF8PTJ8CnpeJW5vKGJscG1iLSZQMzMjXlFsSHRWNmFiMj57cFh1dX0oXnlvZ3tvVkRsUURt
ejVmWCgyeE1ma1ByWkxWOU48QAp6VCtAemtLeGhTYDErdCZsSWYmXztRKDE3eiNlVE9Sc2FBQ1Jp
fjBQUTRQPFdmOX48YTs1O01jYj0zQTd6KGV2ZXsKekxHR2YqMntaWWZSaW42MS0qdiY0TEt0Rn5K
b197I3MrYEhIcnJIYjthenkmPSo/ckpNQT5JbXo4cSQqQlB5cylDCnojcVR7cWZ4TE5tKFZxcDdL
WHlMSzZtLV9aRFpmMng8P2N0WXtLb2QkIyhvMV9eSkBXPj9yPWhDa0NjUmpXVylTWQp6c2tzTEVJ
YH1YRVlKbCVlMDlGTyU9Xmh3SFRiaGE0ND1pZiZOP3AyZllJTDF7JV8yX2VCPEpvPEBQYS1hWEs3
dXEKelpCbmRxeUo9SHhlTiVJZUwkO0ttT2pHKnVuTEpgeDVTJDl7K0lrZDIlWER+UTdvNmhMOCF6
b01JRzVUJTJRdjFwCno4ISQzNj90I0FoMjhWT0dtcmRgJEc5Xk1hK21TbFVaTWMwYlQ2XyZMdHdC
aUdBNFE1OTtzV0NQOHtPWFBpRFNSewp6NDxgOVZrZXBgfXRFc0pSbDw9NSQzfHYxKkxZYkNlXldo
JWZQd3lIQk0rRV9gbXQjUSlufCpZVkkjN28+SCh+O3YKellSRjM0Z0p0SytjUjJ4MFc2cG9hR3ox
KVk/d0gmVzIlVVQpNUo0V1pvV19+eUJ+MzB6Q1B0bC1qYGImP1VRKjkzCnpFa3F5YkU8XnAzZiMh
WTM5N3omRiU/PUQzKCszM1NfZDsqKCROWVRTN0N9STtXKTJRN0t2NGlmMz9tQThEflJ+cgp6PVEx
IWIoMWs1VXFnNW5SWEVXanFDUENvWllzYzsoR0Iobno4Q3tROE4oKzE8QTxIb3tHbFBJKHhFRkE9
TWJ0Q3kKem9kRiQ5TkdLUkp2e2hUam9wcHs8aig1JVBoNGVEY08/KGolNEtWKjVwSCtXSDkyNzRR
JFhPS25JYkktd09wWXdiCnpfREVHK3IkcEdXTUlSWiVxVXdyOTs2MGImVVhlKUpjQn1VbmZkcXBQ
aVpIXlJgN0Rwd1dWYj98WFcrc15HNmJTcQp6cGs7dDYzWWpWcWsrMWRqMU8kTkNVQGd1P0RndHFW
bWojbHp3d35UMllpa09CZ3ZLUCtaNzBUT2UpSFE9SX1HRGcKeipmXiUrIWRpPiV3aEB9Z1ZsOFpK
bCVIKUlOQ2kpYz5fazBYTHA/RzZmSG5IaTskX3tMWG1EVUQlNWtzR3U9YW1LCnokKClwZyReeSZM
cmwrfSNsVzNaMHhfbyVaLW0qJSV4OTFieFZRSHgqZW47Q2BoNXw2bEBZMVQzJEdOUyEmNzdgTAp6
ZlJULUQyOVVnN3RAbWt2OHpCbmskUjZtKHIlI1c5P0UhTlFQe2d+N0NPJHNOaCs2eyFVQH4pQig+
QkAqNUJ9bWIKejtCV0RyeHBhV15zd3ZfTUd7aXV7a3RkRD9GJD9mNE1DPWYwNV9DQmMtQE9WVTFA
NEtEWVhiZ2ktWksjSzk/Q3V9CnpYKnYwS0tQY1F4WVB6WCNxe3lMOEZ4Z3FZOzBXMVNHODNaJGEo
eGR2QlI4R1dEXiQ1WHclM09zQEw8ZmlrZWItVwp6MSFUS1g7SVU5NUM9KWNxQVFeJmplSl5gdXZB
RS05bj5oJThAVVR9djlmaG9RZHtXWSokQilWMk0lbWRkeiE8KDUKejRzeX58YjBsLWs/czdIY3B6
WmRXP0YzK3Mhd2RrbDA9dWlRdW4/QHtlQCtWXlpXPER9MC0yUGgjbntHJTUmJSpwCnp4cjxveD9p
YkpKY2s7e2JPREpFJkdxcCY7eTgySERgflBOQyEoJCVBISYzZWkpQWtCY3c9Y0k2dlBFPWs8Uj9H
OAp6SnJCWWQ8T1JTREMlQWR7eT9pOVgrIyMrNXZTKTlCWj4tXk5zb18rZz9AfU0qPkM+PFQmfDwm
LTE/VHcmWHZPUlkKemxkWG1hU0wkfGg+dkg3cXBoYlokajQ9SGpPdTx3WUFBK3ohQXBtOTcyQDwj
KDhYRVRjYWc4Qz1oPnU7Tis0dFZACno1KiMpI0JmfkNEOy1pI3N6a1laQmlDemlNRldjNTFJfSRu
LSRgTFY3ZThUdHdyPXJjJFFBX09nd0FfZWUqUTwpJQp6VnElIWktTWVrb3plSzhUUVZGVU1ZPEl9
ZCQ5I2pPZmtaVDFeWl9iP201cXF+bFE2SFFBVFAzbWcmWms3ZSlqITIKemNfM3hBdEM0bXFaVV5t
UyN0PHtSN35iRkNadj1Xa0ttZWhFKkFnZ0l3NGxsSUBiZzJvMSFPNjNkWX1nMyh8fHRFCnpgcmtr
Q0VUdXRVMnNVblJGQX4xdTFkKFc9PXBFWG1RdXRiN0lhfSg3Pks7NDh7fFYwaXwyP2I0MShWISVt
amFfagp6Uj4xfDxeWTt0XmJpJnd5dzJUe2UpQ345b3NLKVNQSz9TIWV7U0x8ekclbkJ4KmNWN1oz
cHlOdEhoZEplYmRyPWAKemlyKl4jIUJIU21rMVE7fUdnQTNDXmJWO2drUTt2ZFlmPUV4Zmw9LTIz
JklVMyglXztYRGZhKEw4R3YjTzRUczlLCnpFIUJaOTFMQW0xMTwpVDx1XjZlRzU4SmYwZDtlVCM8
TCQ4amYzN1MhQSZmUklibEVmKyY5eEVZbEV3YiglaClzOAp6TTQlNz1IXkRtc1VKZ1N+dWtRPXE9
T3JmdT9uRDFJaDlRWTszPmpKa2t7KWglVG9uYGg0eCRBQjhgJDdaa29TUzgKejFfVkM5O0JiUU1B
QFcrbE85dVc4T0IzOG1fX0Q2OXlNU0xSZUR9clJYJFgoSDJmPjB6ezElQ3dSfkBxaHtyJXYmCnow
QUBoY1NzTkc7WXVoIU8qQjRLPTlUdHhze2l8RE95TlNFJmtJRHwhN3VBPGh2SjVvfFJ1TWtBYmpr
JFY7QUFzcgp6dDFeaHViPz9XY3tmT29TU144WUk/R0JnZmlmVT88KEZVX1hzXlF6QktKZGwwMGBv
dnBEdU9+biZDen4pcmVOckEKeldnVHYkSSlkSD5zYkdmamE9UzRrU3czcmJGaz1VMEliN2kmbSp0
ZkUlSEc4eU8oJDxIb3FoaktVQ1Z0bmk3eX5FCno3b3JtM3tiayZuMEw7Kllfa2tBX0l3Yjs8MU5m
eVdlUilqPT8yWWBCIyh3QWkka2h7dDZQOSV5WERkK19oJFFZaQp6KHozYFYlfkcjZXpaQk01T28q
PDFTZm5YfXBWOFpwcT8rUmU2KD5BVipsdHBVM1F8cmA9XzMrQTtVSmxxOzxZVFEKem5rO3E7P3JD
cCg5WihfNkVlVE1pNUZnRCNZV0djaDheU3UreTtsZWtGP1FTQXBlfUBvN3JhVGBhJDYqeDRXdE5V
Cnp0MzVDWSM2VyQyeng9QkBVa1BuczBtZDZaZHIoUnNaMUp2cGV5KDAoNEEwKFUqUDtKeFJCVW5J
PVB6SXR8OV4rZwp6eCpBYDA7LWxJPkk0fkokKjZaPEdKLUt1R0JgR04+dW9DY3ZwdV88WktgSSo3
N3w3V2B6NSFEbDFjSUlsQj9jUygKemV3T01nPSFkV1ZPPTE3Kjk7cWdZNnR6fjJKaWI8PHJUS1gp
Kj1AODdAZW0kPzQ3PEFPa1ghYDlDZDcleCN5VylTCnp3cEJwRDs7LUYwMys1Xm05R3NBVzk4fWRa
VW05aVZWaD9eNC1Uem5ZPHt9OXJYTUF2Z1d4VW9DRXpXcE8yckZYegp6JjdBQSMjWWoxJE8hdHAy
RjcpVDc7el5kV1RmazJTbXc0ankoU3lCPyF6N0BYNVdnUyp1OGcyeGZWcl5PNytHMVQKejBhP0sy
SzVePj0pRDM3akZqKmxTMjM5I3BHRms9KEdkbm04JXBNeHpLP19pKDBOMjhKME1pYVMxQm9eJFcm
fHBwCno/M2k3TEJVKjU+RE9uWmlzLUhoO2t0YDs4PE1US0omb0tCM0dpQERseXo4PnBAa3VZS15+
UyNAPy16a1ckez1Fagp6cCZHeWJMUz51b3JjWUpkTDFqaythTzBQRHNKQFEhZ3JLR1Q2OHhqeWde
RU9oRVNyXztpJTlrQjtPVD9xMF9qeVQKemArXjZUNXNDIz8zbWlZSHR5UDYjUWljTXcwbGN9b09k
TjtEN2xZUlR4LVohZ1hreTYwSFZWTGlnLUhoXjd0KF5ACnpJVX5tSUA4OW5rekdQYTBAQzN7bm5v
R1E2M2dTQVJyQXpRaDhRfCNhO3Q2ZHRhKl5FJj56bDVkPzA/QXhUd3lQYQp6Ymh5bFdhUTwyKEB0
cEN1MTV1MTNzKHQ0c0hAP2N5YnQ/UDwjbWslR14zWjEme3A5KCNwVndjbGlYXnRkIVh+XigKemV7
Myh0WiV1NyRjdmV5I1J0YkRtRiQzfSNWRHJKbWc9WSlQMFB8ZElTXyZ2TTFVI1ZUMlMhSXtLeXVT
eiR0fCg8CnoyVDJCdTZyZEV5cHtXPmZCT0tSJEUxLUh0aGxoSyU4OUxGPS1ybUZrRUlWQTRJKl9r
alBzWkJBTWcoWXxyPWRoagp6dzhfVFJWPVRpOz54czRCX3xxTEQzYiE8Mkd9MU9vQVNwdWA+JXU+
YkxgTkVmalJUNStRSVZVVVByKS1+M0B3JFoKelZ1TU4zPHZMWXhuPzkpbWx0bnp4b31KPGNDamZs
T0EzdUlQI3MtO2JMI1RZODQ0bHJsKWRxZXxxZ1hpRUNHWWwyCnp6WW1QQmNOYzs5Zn17a3VpSldq
TDslSVJJMVBMKWxwSCEkIVp7JmF0dFZ+I1loZFlMYysoPE5PZHAzMThKMWdhPAp6Wj9GSm1YQGdq
QER1eXh8ZVNROX5nOT96NUJLZ1I8eWRjcEUwZjV9PDZXc0hvQ3lKS3hQdnsjSD4wRGJyYDR3SGYK
elNJPFd7RmZeZklEclN8dT0rcSQqZipQdD5gXzJ0aEYkbDdrMWlWI0tCMyQ4VHR4Nk0/ZX1AP05B
THByTHg1fD8wCnoqJm14O19tR2YkRlNaUU0xYUxiK0N+VUFYRUE+PkwrMkU+eENSU0RETlN1VnAx
fm1rSXZfYkwjSWh6M29Xc3JPbAp6Zk1pZXJLfVNJd1dPWTQkLWE1VDtDZiNsU3F3SnFAQTYtaXpY
RTFUbE1PQ3VLYyE3Qn5NVXlKaFJ7fkZydW5hdXMKelUkZjhYcztBMjtpZl8obmYmP3ZaMyNze2s2
YlU0KyFqSW1kMXZhZiQ8czNHNHhJZFBxa3FmRGhXTDQ2UmI8cFo9CnpyPjdZak0kVVdkSldvRFd0
TXV7LXIwPD0wZGh+PGpMWn5MSEBAciF7Wk9oQGJYb359RSRuTSojNVlMX1UwSWRfQwp6RkNxYVZm
KFlwNWgmNCVmTERlNDg5I0xTa1pmJUpHSUR6djRgWW5HMil1cUV8RE5SMDt5PSojciU9RUxzUzt7
ayUKelJwZkk5dlVwQk1jSnh1RHcze1ZeP2VBJWVWcEclSCY+d1lIYkFFaSEje2dQfUdLUFJOakE+
RWx4I3ZgTXQ+KG9yCnpkYitHaSEzUVJtZDViMj52fFB4cW1oflg5OE9qezZJaWpCbTBiVTNzezJP
IXA0WUtuaU1CbnNuYWQ+PTwzNENMZwp6N1ZvV3o1TVp6e0p3ZWZne2taU0RQfE9QPHN+YjAzYXw+
I31nSUl4Wk5OXzhXM0BfTTY+ZSZ3ditkUlBjRkVodTgKekhrZzJtNSZ4ZV5uPE44cUNsJE42ezF7
PD84cCRgQCE3I1Z8TCVlfHhwJC19M3UxMiEhVV9wVVU9SnkkbmVaajs9CnpPbGw7ZEFnMGFDX09a
flhwT3FNPVB3b3RxOH04MT1oOT53NyFjN2xYKmJuMyZzcHVMaHE1Yis2czZhMElGc0Nacgp6dXh2
MXZJQFZ6a2JDQUpaMGFnVSFvQmlOZSRHV3AqR1lHVlpWaEdBezxHTUghYiVkPERKRSskcG8qTmYw
czMhRzQKemJwSCFteXlWPlI4PnElfXc2Xll5OzwyLTl4PDBBJSVXbmNFXy1INksmdCE3NGd4Umpy
ekkjVS1gOFpWaSs5bEA7CnpJKWI3RFZZWVBLSXYxPyYzQ0BeXikyM1Y4Y2JCRSU3YWFJe15UQjdU
VzJYaGFxRFdvXnljSDBAJihFaFU4KHtFeQp6P2Qpb1l6VVVjUXE1Tk5xamhwS15JO0I8YF8ra3li
b3EwfFE3UTFiNU5BIWVLQFQxcD9iZEN6Pm9VfHpRM3lNO3MKej1UWFBXYys/NygkTE5JJWchUGpX
T2NvQl9PKHRDaEw5b1lWZ3lGMnpfVXs8KUMyUFp9V0BiQT9iXnZESEVfTFhRCnpxfDBZUDRCbWA3
WTtkfW8mfCRzNmxGKlh8YCZKYFFyJm8xQ0BeRWp4YV50N2NfQkA9TUVWSihKPntRP05oM2I5KAp6
c15haXFfZjJ4TG5YUFRVUGVEJTNBUlcwc0gwVHZeYXBpeyhOJEZNamQzWGUqcSZndE1aNWJ1TGMx
S2xZZzd7Wn4KelZUVmhmekZZbSVLQWkzVmpfJDtYNkU3XmRWbVFwZDRzPUdval8yU2FzfXloMVFr
Ql4kVWc2fiNPVTh+Iz5zcWdsCnptYilCam47T1NEd1ptdm9lRTZgKEJAJjxGdiU2VmorKD0/dUhP
fmRGOG1PaUBabFJhT1oqTFdxTCl+Zm5ieXRtSQp6TjI8O1AxdCZ6NG9PR3Bxbm9uRC13N2I+REpt
YWVoTUtxWml4NXdkJGk4PitoWjUmIXktSF97cWAke1k7c2leMjUKem9zU2tRYkhnVW1nJiVsXm83
MXxKMSUkQTloSnhVVGRybmIrRGdUN0lhMkVkUlB8dFIqJiVyMXd6N1hUfGJtODFNCnpCR347YSgw
TW4hbGg/bDlKM0tSeW1QZjdCY0cqXlZ0WiZ7S2YrKG9GRS18JmhJe0lyb3R7TlYhI1VXV2BuQjxm
WAp6QTlnTGRpaD8/e0lfbVVPO2xpcV4pVFpndSUjaEJ8PXZ9KkdySE1NXlomQSRFPTUwKUgrKCZm
JmVhdSQhKmZ1TCkKeiY1RzxNYzVJQzVvQXFFPHpJSmdpPXcweDYwOEJRKkhFcU1zO04xIUpXP3dw
QlZgOCRCRCMqRFU5MntLdWklbFMtCnpDTGdvT0lifkdrJVUkaEArYGAoQS1+SSthajV1ekZHU1d0
Zz4zV2A2QVY2b19lO0dgUTk2cCY8RjZjWWcrOzk2Zgp6djNmSzgqeGw9b3t5UGhocDhrWXBATEgw
Jjk0YXJQNF53Ml8kQT10fTZTNW9xZiN7TSNzS0tWIXl0LWdjSnN2OEgKemlpaU5RT3NtZFVBfWlV
SWlDU2B0MTJsPjAmfnM1bnlQSGVPRGs/PkdXMEVFanBsT3dybDBjRSNqTVhNek5PMkU1CnpSbEQt
RTI5N3oqMjIkYEQhNWdHRzAlPjEzQHAlUWpXVXdHeV55eTVJKmdkbXRNRjNFc0U1Z0VrQm1eb2Fv
ViEhWAp6VX53a0RQbXUzXmxYR2N1KjsjREt2VXd1WTZTSUBJeER5cns4djZDPntjdiYkPWxmaTx2
YD4xezdERyZ6WClZRHUKenNRNl48eEotb0k8YE0odlc+aF9rdnUofDlmKWZDKld1Vjl1VnF+YlA8
IWJCPEJwVjtDJiRLTkxTSF41X1o8aj97Cno3WmI5d3YyaWBBS094VzNVflJDQFI1aWpVSlp3KHtL
OSlzcSZPXntXTE1BM0FUOyt5SzV8YVVMZ0x7NHNxPkU/Iwp6d2VnemgxdHtTKmheZ2RpN1Q4fCFB
JWJCRSUwVF9VYEt3eylaV1lNKmwoLXo8QUlhSUYkbHRZYS1eZnpBZXd9X0YKemNRUGRYS2g+dV5w
aT54M01OXmFKSUcmdWdfV0p1UCFZNlg5Y1lJOTgyaFZQQk1QPzBiMndsM1M7O0hWMDl9O2FECno5
JWd+Rno1PDdVPGlFU3N1Q3YxWk5WK1okZjI7TWA5Yz1yQXVWc3l4TWNYfSNMRjFGMCtDQEo/Si1K
fGhJanB3ewp6dWZ0KV5HUGlOSnJOSi0yLSRYNmlNVyFmNmNZYypTOSZGRH1CfjhWZk15MklqQmho
ZWhPaW5YMW81RCope3hyO2gKelB2JmgyV3l8QnBObUxNQCorQ15sOEZkbTl3S2FTRW5+ZDs4diRe
UCh5QitTe2Y0VmQ0S0BnSnNKTVRaWXJjUDNHCnpEVHAtcnNQej9BKHBYLT9KNFkpaGxXUkhTVTgo
TikrNH1sJV9zdmp3bExhNkAjSSVLfiV4MiYtTTliUEZAV1lMZQp6YT1maD1XP01kIyQlNHh8YjNJ
JFNUQDs0KyVJSDtxdCFmOXEpZnwhamRLcCpxQiQ4UiE1cEoqOHZZU2htPzR0b1gKekteUSUrcVVY
Q2tvI2VBUUFibHhmKnxuTWdQRjxWa25IP1ZOZ1o1TzA5a1ghK0Jmfld4eXtXVWdKbU9WUHprSn5U
Cnope24rO2VPSE0yQWdEV1JyPVdGMHNQbTc7ZFF8ZzhEK25ofG91bTNSbSEmPGY/O34jKCRMaEdr
LTJUJX1tN1VJJgp6Nj8/QiFlbyl5Ky1pVmFWLUczS2Jta1FhUj1VODhTSEw2WGZ4WDRFQSV1fHtW
bjVyZT4ta3YpVDkpOCl7YUBXMFkKektOKXU2bGsxV1coKkw2PyFOVEBuYmd6UmM+aCRlPW9QRjE9
UXhpJDE1Tl5gNGhRcmN0eDMkM3luWnRQXlozOV5XCnowSTVKVmtnN3ktRGItNnRhQWN+PkhFN3M1
K15TME1kTVd2UyZ8WDVEcWhGUH0oYDtRT1c9dS1FQ04rUVRkd3djKAp6T3tsb3NYQE4lezErYDJh
aCo/ZjZIUSRpU0klNHJYZUlrSEpDYDUlPEY1KDRuZXFpKktBYlMwaSVoR29uYE8tKSYKekhRWEwp
LWApaz91Y2FtT2NIakUmX088NCgzRD5SVDZCM1NtJilrMytATDBJeihzXihsTUx8RV90fHloT2s3
QigrCnowR2U4cCZYQjdDNkFXfiktSlUqdURsfjJCP09paHhQbFFfTjl4U3pmbGFPRW5aKUooM3VJ
QFZPZXN8fk4rRiRnKwp6amdGK2I9QlZOQCR6Zkore2ttOXZEY0NDfkpjNiV+U1d1bzBET1lMO0Vf
U3plJHA2ODxMQTZrT2AkTyRWVURZPzEKelJpYUJuPDxTdUR7RGN9M0xQVm9OdnNNTnVyPUx7eTAw
Z1lEUHQ/QFp4fGR3JWFoQEJWWGQ8Q3AwYFEtYj5fM3g3CnpMYEloMFk5SUIyZiVfJlkkJVl+YCok
R09oRCo1VCVoYkxpNzVyN0YlbzthUF5pKmhwUXcwV0MySjFjZCN0Pj9Gbwp6VE8zN0trR3ZJam5A
cDZDaz9wYUdQa2RkYnZVQV9CPmFKNWwqWllnQ28rQj4lOGpreG47amlDc0Urc358RmZjMH0KejU0
fiNpTylGLSNTXlooZz9lfTY4QipkPlY0RGZSWXMkOTV7d3NJU0JJZlZjb199YHVDY14yQEBvNCsz
SD8tdTxrCnp5WS1ib3AyZE0hTz87SVlsek4hZyorWHNTcktlNVkjKGVPclZRU3VpRHYzZnhGbW5M
NFdoRlR0WWhpSnNneEBESAp6NkZ8IUxjNCl+RlJBO0JuMFNsKT0lZDheWDV3UjU5TSs9N15mLU5P
cUkjb3QpIWtNaDc4X1M1TW1idyp8SXYmaHkKemAmaFMwUlpYcWpaNEllNypKPkUmcFpwR2VMREx6
ckVtel5UbiRmKmglJD85M2xvXn4oRTxoI1VYSl4pQGhUTFhLCnp6e2Y5KV9FYWBrK181WHw8TEhL
bVdeLT5IakhweF90ZD13RlU9dHdiKFhiYTVaOEtPQmhWJSlAXnFaPGErWSFedAp6cyVAO3gyaTJx
UHFPYiZgMSVxPlBgaW17NzVzaC1SPUZMPnA0WDdqNm0xVmNPTTJOdjkwPiZ2cjRLPjRYOW90YGEK
ekJPSlVtKnZ3ZEZKTXh7a2VFMmcyQ2JlTlYkK05vOWNSJlcpPDZ1M3RWPzZ+Z3R9NEVJXlZkaTFN
KH5FZV9HJWlvCnpmZHw8TncjXjhHbVlUQTFBIT99MUhUVm1IZntJJWh2b1EmXzwqaUxrSCszNjNR
Jm9IRHdTPT1Ec15tMmBJUFl0Pwp6e2BicWdGSj82VDtORFdRQFBxYylENlB0KlA8TyopVUNlQW91
diU8SnMkIUFleEFWZDFpb0BDWSNyfm9vOHJrWT4Kejg+dlYwUklZeWJednBYfDB9Jjl3RVYqOV5A
dWtZZVBwJDZsUEFTbElATD1OWGVBZzN+akF+IUpjdjBxSz9NSTwkCnpOKG9IOGk0bnBSWDJAKVR0
UUFiVXdKLWQ+QEQocUZ6ST1kVGpoeHw7bW1lcllGfmdeTUFmanpVUUlJSWdUMkR5Vgp6bG8rYCZJ
Y2FpKEJBdUsjIUdsZSh4JE8yLWM5cUVkQUlvIV48SEE9KWxrWlFTbFR7TCo1MkpuaWdhRnJ8VS0q
eVUKejNjajhfN0w4d248NklEKj96SHQheW4pK2lacGtkSEBXe2B9U3NMdGx6aXx5bWRgalE+MWFp
QCQzbT8rcUgleVJICnpPS2l7cCEmPWhjZ3NCOEcxZzt6PFJnaUR9bWE+QHtAe0pBLU1KbShUbUAz
cSo4ejc/dEolUi1AKW8mVnwoTEtNPwp6TTVrN3dwTXNwK1ZgSDxXc0xqb0pteV9mQT52bHxkazJt
WGdeWGtlV3lOSSt0T3pCbjA5b19Hbi0zWnYrXjw1bHsKej9NTDVtYGhIMGJpKUxXQkdFe2FSTjt9
cVhsbHAkZDMjOGhUSlF1UExiTiVRTVJHUChhUDhtalgjekckY2RHP0ktCnpoZ1JaXjNGV1l4dWVK
T09kfnZ4cCF4Yjw1Y0ZYPDE8STQ5byZWRjMraFA2di09dmAmJnNMZSRAQWhUYWJWRDMoJAp6diUy
UjJ8NVF3ZGI4RDVgdlZ2MkNVPi1vMjN8NDk/RHk3VWwkZ1gwKHs8SWJMPDVEdS1vVVhjfTt0cDg9
NCU2b1oKek5CU0lyPU07UDV0WUMrSXokQWJzPmUjLS08cH4tcXBnbXlkVVJPRnglMjs5UjArMHN9
NyhubyM+UnAmb3UmPUhOCnozSHxjemZhZTk2Plo0QlMhZ0VZTXZSKDBTSXlPWD5OPWA9JUcjKStt
Vj1jQ3pNe1YwfjR+XkNUSl41QGxyUU1HLQp6emRGQ0FPVEdpNTJ8cy1qI3s1ezMoYV85anVvOEdg
ckNHVDRnPVdwPCRyfGAkenV8V0BgMDhLPEx2SmlzMU9afFEKemZmTFBaQSlCV1dOR1V+Vz1BMy1n
Ujd2YzAoVVZ1PzxZJig+ZjNUaGxwMSNnN2ooe2tqbH0kUldUVSVSJV9iVT0zCnpvJHQ0RjhrIVBo
eEw2LTFnQFFsO3BhOUdZY3RqMmBmWGVrI2s/aEBhI1N+UzlBbkhRcT5ncDx5UDxoKyNfMCUhdAp6
QlgmWmlaNnBVITA+MSUrel59R0pFZShmKiZKOF4pUzNaUWVkO3NmOXVhaXNmYGw/aDk8bTNSSEgz
ND5qUW9MOFoKellVZTkjcyhmUiQrUzA7SDA5aDR2Tl9fTTcrdFglayluZ0pybG5peFAqQ1puR2Ik
Oz02eVZheyVJUUdmb2M2MFg0CnpyI0psJEJBNClXMFpSTzZkVmgkNnJTQzBgOXE9ME57RVFPOz08
ZX1OJD42aXAhSVlIYjVgTT41OVA4MEJiJktFZwp6dUdhI05KI0U+Z2FATnBTSyZGPl40Z0pxLUtS
PGl0ZHN6SXJfbkc7a2FYcTxBM3VHP3VIbTM5XjFCaWI1ZVBAbT4Kek50QHlHYVhNQUV0I2pCfSR2
OCFMdl8qd1VKPnRjekIpKVFLV1hFZntHRE9YSEVvUnVVbUdgNHpUPyRPVFF0TU4mCnoqaXBpbihC
aUhwWnUpJkZ1S30xeWR3YnJBd3xnKStXSE9HfSM9KkVwV0VCOD5QKWVfbWd2YiZ4X0Z5T1V6PU04
Mgp6QytBJXM9N2o4SFlpM1doIUVTWF9XRilKPT8wPk5ZZnwhX1RUeU81LUtHVGNxKTshan5fTnZE
bXtuTzRrTiV1V0gKemQ7X001S2FwPWNeMUY4YSZEdT1fR2dtK3dqYXIqZHclKkl7REBJTTg/Z3le
PytKUH5KT0l5ZzglanBZeXtjcHIpCnp2LXF8UytxP2plZjR2JjVLeSZyQyZEP0R6V2c1Q0NkTVR6
blNzZVNfak48ak09WjgreT89IXpNQTlPaCtVT1hgTgp6UVdzSyhaOEZqaVM2Nng7WjNyZCMre3Fs
akpoQ0AhY3lLOy1gLWNTX2ZQSVcxMVVOQkpacFJMN0tzdWFmY1B3NngKelkhUXxgPGg5RHwjenNk
aSQ2KVRrM0tUfTUmP3F7d0gmXnFqeGNDbzFDNSo3fnR5JXFEdD15ZkNibElkKHRBPCVnCnopP0Ym
SntpWFR2MyFHWWpETnBtK2M8QWNfRzdLZzMpeD0qXiVwfFpHWnBsVXUrM0ozMjZZa1M8Y15HRkpV
N0Y7WQp6RmgjXyFeKigzM25ZbCVEd01vdWVhPUQ3emVtWnUmWDYwIzBEPDgoYlR+disjRn5YWSgt
Ukc0SUo/aytAb1ZebCQKejRVdTU7M05vbTNeUSokSWM4SkYkK1NSXjZ7djl5dz51JUs+azx7TWZM
O3dTa2pUQ2t2aDNyKSY1QiFkbHgtWHlACno1MFF9VVhVVn5EKDVTKWFWQCtUQEBhbVM/IXt9SD9W
aU8zcHo7JVc2K3dVOG1GZFl9MkhLQDskK0EmQ1NzbGlHMwp6SEdHe0RAbW52Izd0UUF2dG1oYmRs
aUYzUil2Pk1aZGFvdShPPlkrTE9YI3h1Z2tHcEVlYD5nb2p4R3xBWU8jPm8KejRpUkBnNnhMMmtv
c3YybkhGUjdVbXxnQU1BTnlWQl5MdTEqQElkNW4rd0pnV1J9dU5haFRHV1pGUGVLP3tPR09sCnoj
QGZEPngmSDJoOHomTDJVLTNaOXNRM0ROYGZSeShuKTAmekd7dHQtR0YzamU8YHt0SWxfZnRQY341
P3dgdDFsMAp6dSg3O1NmR3NOS1M+NDlBd3A3LTxGZDNIZ0g7X0puI3tqJiFlOGlQR1MwbTJ+eVZs
O2BaanhzUHIoS2NQMzZxYigKeispWFRiYk5SK0FybSMjYHFrcSU9MDdnVkRxUW4rMTAoMjM5akZF
UCEpayNyezhheShPZm4zQXoxbHQpXnR0PmhfCnpfJHJJJDIrfm87dUpeU0BpMFI7UDYzfSM1YGE7
TSFMWU9YXz1Va2Ngajdvc1ZXOEtwZGZXM2FGZyh4YWJiKnM0egp6eUotRm5YMTBuRnt8U2tLKnEp
RW56VkBxeTctOEZwbmtpTn1AMiRwa0hTUjZNZF9pKT9uZyQtezNweyZzLTY2WDwKejtHNVRuYXJr
bWwofCk7ZjdFKEk8THdpM3VfOSpLUGNrQWpsb1JaclNOUFMjKnhFe2lrLX0tN2RPRVhlMkt9JFBJ
CnplM2VmUUgmUEdpdXMmRj8/Znc/WVdgTnpeKCY+U2t3UUkzXkohPD4oPjwyMyRsP09ZUj9Lcj5m
USskPWJZMldWTQp6KiFoSnJvWSpXbFVgPDxJWjhealdZeHhaOz8wdWB8eDBzVUpjTjt5fSltJlh1
OHZUQ1ZaP3BQRytvSUBpeXl1QVMKejBZeF9eWUJHIThUY1UyZUF2WmZYYylKXjReVHlEN2NYdzt0
dWxtalhjMjczIVZYNVpUYXl4ITAqSmlifl59NGtpCnotZ2QzIzMoSUd7LTBXc0VQOTQoelRNMlEy
KUtDUU15aXt7dkNgbnxXZ3IxckJQQEhpcGpqQl51PzdYR0JtVG1Jagp6VzEtNDZlUVpAZWI7WWBt
SkA+O3xKemNOUDtjWTN2M3htfS0tNypebDZZdkkoUnl0ajkoWjcyQWRNe1A2RjQjb0kKeiMlYTlH
dyZDJUtMSXRCPHBqdihUZjkkPD9KbEFkZUtXPnpqb3l3TE9yN3w8Sk5mTUQhTmNKZFhNKXBwS2tX
b3J4CnptcHd2TyRXRD5VJUhBUXAmMX1CTWBCd00rYEY9azQ9a01SfEAldnJaPEdRY01iemdkV3po
MzhnOT4/KUsjYCR+Xwp6cEdjXk14PXdTMl5XMWtiM305a1pKOF57eEY1TlFRbzlFWUlofDIzdVN0
aHRsezMlPUJHaU9SVzAze1B7PVliVyQKelgxYCZXJWdEZU53SUtgRy17VFY3N24zPX5qNkheaWMt
aWFgWnhURjwlc21Hbi0lMWFmWGdyJC0jdz5wIyZ1NHI1CnpXX088T19JQWc7I0JSJS1DY0FCZGRq
ayVIe0U4Xm9ZOFJpJiFHQzk8ZUkoeSYtV3NKbHhIYG9hV1lEb1EqZXJpRQp6RiVoa1g4ZVVNRHgt
flFIPyU/cyphY2pQOElzTDN4aD8+dmxTREI1cXJPQGtEeyFwfXtAZy13OFhBZmk3NVE5Q18KemNY
RzxBQ1FueiotPzFBbj9ZQTkmSFFxNnZfTzsjRVZ2VzNnRlRNeFllKDIlWnNaIVlIQztBKDxJMGpD
QT1nV1ZhCnpWbDIxMUZWWSFHSWA8QTJacnBSNzMramskOW9ZTmlMdHh9U2ZBd2Q3YXJELSZaSSo8
IXZGbEZsWmY4ZGlOXyFBcgp6LTwkRTc/MlchTXh3cmpVU1olYHFSZ0Y/UDh2X3FrQEkqVGklZ3c0
PSQobXJSRDRVXzVgKkc0Nz8zdng4MUA3ODIKel5hVWg2LX1IcmhISVN+aiFTJSpaUz0hbDNKY1o3
NCpQeWwxKHx1NnJXLVBSTGQqNkFUMmcoQF5GdFIpTShxcEtoCnpzK2U9NT49RT9ycHJSbSNzYWtn
M1hmdGV3IVJTSFQkbWhna0BXJig7WVZvbGhOZCVjZjYhTHFsZWV4XzZvOWIkQQp6OTJPUDJ4QkVR
V1opIUVlTG8tX0g/cHU4eVk8JE9EQnAldF5eQmdoejZoZj97RlR3WHw/eV9PbCNgZCVhPFExRUAK
emVjQ1RkRW01SUAkZUhSRDRhbzFtJWl+ZCtsNDNfPSFKMG12a1hqYEVSa2VIdGQ8TW0pKmJ8PXVB
Zi04YXRnWkU8CnpeditqbDJTOTExdDZWWlNvYlVAQSN1ZWQpKiolJTdvOHtBcWhpWnw8NX15XlBz
UTI/WiMlXzk7YU5GJX1SZjZsTQp6cE04cmxIS3htTSZvU0A5d1dGPEhXbDwtKipkMThqc00rMFlX
QXlsUGR3eStxJCFFaUskaTRHKilzR1pJMzdobGcKejJhaDlJXntsQUdoPllwRHROZGlgZEhLb0h1
e2ApaDU1eXhrZjYwMT8tZXZiKDdeJXcyQktNZW54M096Y1BiY15DCno+cjRTJFQjTUxTa0k+WFUw
O31lXkdpUjZ5WCF6Y3NyS0tmfCN3VU5CZDJfRUxvSWs7UGJFYXl1RH1NQHpARFEtUgp6THBaN20j
a2VHPmVhKk8zNjdKVXdgcGZiTTZHUiVuc2R7fGhtMzZQaHktKSs7Xl5PLUJQWHd6JGExI2Jxd1k0
RCQKenJrYGQ2ajBeVX1aMnpVeGh3MUpQTDU7VnglfkBCIT45YHdzMEkoJkp3a04pLVFFbEVnVHQ5
ZnVybm1OaSlDJWpGCnp3PENCNHpsKXdRRXYldz0yVVhUc0hMcUZDP04hNClWUTRkWj5TNEN2ITN0
cStVRWFXTVJ8PUFaSn1gYlQpVWIjcgp6WjtGY0IjU2RYNXg3SU15S1J1K2hCZSg5dEF3RTFVRn09
LWwqNlJidDtobzlxSCp1LTgqVjFFXzI1VzYkYE9pRSoKelV7RHhoVmZ7fWZDWFdAdWZrKEZETV4t
Nz90KndZUk1ZPmhSdVAjcSNXTlRfTkBCdkghQEglam1VRjFTSFdLRjtXCnpAa1hfK3UpN0hHSWpW
Z0M+T20hUEYoe1NtUj1hT3BhU2tpSSEoJHpHYCRxWFdWSXNnXmZOcEs4U0chQzVIRElDaQp6Tjxz
bSEhej52aiVUUT02ZDZFMXFXb0Y2fVdCMHVPWm5fbzBqQnZpbEQkVSp5cEN0RERXLWhJZGh4bHdh
S1AjJjsKenxGTENvaD56Ykd6ejRzPGBnPmkyI244fjY+UiZWSSM8STdZd15zOWdVYkxPNTNgNG1q
ZkowX3EwRFgodUZ2SjUlCno9SVdNaGtfWEhMN2VtUG1PQ1NTJWo7K1oyQnVJRH5Ydi1tSWVtbW0t
TWJgQFF0M1hPZjV4JGFkP0UwUEZWWXVuQAp6Rn5vREBQKk9fSSVgYHpSVGVYUlZeMGh9ZFQtKGRm
OypFVXVTQGZ2RmoybiYoK1AoOHQraVMhdW1hYzYjOFZfRnYKemw8V1A1KXtlajFOYisrKW1nZVpt
Mmd7U2YpQD9qVzVec3NCWWZgV0o7NXZVQGVOfHBSU21uS3RmWGExNGVkTWUjCnpqcnN8a19VSER7
eDZtPGs4KXExOWZzYEdwI2ZeR3h6e2FTcSpVUmtta3plMF5DY1d4K054dTJ+X21aRkFPQ0g5QAp6
KTB1PXBGQThwVExSfEA2VSYrZFhLeUtjVkNeO1g5ZmtrJXQqO3xKJlFzdnFYa0Y0cmVwOVFWcXZp
c2lXRHpJWGQKekZwK0QrUUZnYGo7fmJ3SlhzOzVUY25fdUdBRGcmOGAhdjF4MHd8TyEyMHpBTHwy
MktXSkxTTmM8eipPTTh6Njl+Cno5YGR1RW54P1E+SzhpTyUrVHJ0VmBYK3tjPldQbkFBfGJRcjhe
dHNqXm12cT5sdTJVO200WEVrcEpmc0JuNk44Mwp6SjA5UG1eM1RId14+S3g7czJqSEI9fWdwcFom
LWd4JiU8cWV5TVIpV3MhPWptJW0kM0o0fChyRTltV1cqMDVzNkwKemYjRyUoSFohLVdpVlN9OS1o
ciFENlc9dHxDTXx0X1RSIXA1ZkEoJGRWUiFXejk+dzw+Rk9OTz5mfG9TZ2FORE1mCno8OXdNVUwy
ZGNqaXMwKD1XczlBfEtCdEBuSiRmc3gmLVp4JCsrcDszJng3TitvRnJudUxZISRvKDMtaDt4bnw+
bQp6PVp4SytVOCY4eHhkTSFeTmIhUztwMj49dU9gUCpkbzxEaT1pPWhJelpUSEBuKXN6ZT5mTShi
VjsxOGA0NipuUD8KeiZxdCsxTj1RRjNaU00tYjtKVyMwIStsdlYrVGlRbWQhaFdPTzQqJXZeS3lH
VUc7SlJtdGd4WXkzaEZiI3hvZG0+CnpVaGFKRSo3fHRGYmpyZ3NWPSYzZklzRmswMlNBOT4wYkV2
WDVWNW5oaFE9RXBadWdUZFBmVkVnY2U/PE5MKWoxMQp6PnE/Ny1BU0ZpSSs+Pl9gUm9pWVJaeGEz
eHR7TU9GZ1BSQjR8TEdUc3Z2fG9JTCQoWGBvJk1uc2R0cCorVkshO1UKekNjLSs4JDlWRGw1UHRg
cXI2fXl+UDw4eHlPcWtCMD40ZnAjeEJTMyp2ZjVrMjAjfkZlNX1mMTQrdDBKN3JyS31LCnpgJGJY
cDc5PnZyKTVwTUYlfSpheVU9fnw9MGNfSDZ7ZUpDQHApYUhDRVZfVUw1K0B9d2JXPD07U0w/cSVt
c2p+ewp6RSp+c1ZkT2JrOFJ0Jm1wTmdXVXMrSkZ+Slk2dUVVM3JeQiZQTSR5SFM7aSpNYGlNO0BJ
Rlh+ODAoUChBZl8xeX0KemNEKiNEcSkoUEYqUXtJfmZjYTFHdT9RMGdMSj1nMGpBNENmP09palJo
bFZ6VC12Vzg+SG0heiFtekpTazc9anRVCnp6eH05fiVOemY0YFJwV1NaeGBlQ180IVooKnBGcGAx
M3swMCQ3d15qU0Z8ditUc3Y2aXVyX2JWbmNnREZ1b3VEfQp6O2RXSFNZamxxX3l9e1hNbH5DVnYh
KXtAQ1p6PmdNVX1aemk7WFJMSyhlRDtoXjdXZlpZeVFfNDs/K0RPZXtGbGAKenQlcC1BV24qP3xl
T0J4NEV0UztOMVppdHB5RVNqXmhMJjdwdTl3XyU2bEI+TDZqfFFRSzhMZH5aVypmPUwkU1IlCnp3
Pn5ldWQmN0hNWT9edD16fmtLLVUoYT9RMkwwflEjX05ucllve1UzP0pAQkdyPHlHWEUmZkY4TSs/
ZjB0RUV1MQp6Z3lBQEt8Nkklb3JjK0hWaUlOXlZsYGZ8dD5eIShqKUYhdDRTKVJmO2NNPjMjdHpu
SnZTQmp+PHhzUW8yYXVXNlcKemNndWdSX0hJbjlpSGBqXlkoSCNTPj5Ec180T3I9I1RLOyUhPUg3
XkFhVHZlRW4+KjRKYzFmMFB6dW00I25aIWd0CnpxTWUqelNNKFc0OylFeEF1bS1ufDsoR1I0YEQl
ODQzeUxvTztGbEJQQzBPNlFTQ0pGWFowWVZPWX40K0pPfEA+Rgp6bWJibHImdm5uZFlEemZZKiEq
O2VmO1VjPip4aFQ1SzdrMW8hLT5EUUl1RWVhdUg4SHxtUzgmbnozOF5Jeks0a14KekRiIWckZURK
Ukl4IyZ9aXF3WHh1PSlCI2t3bTNMRT8yKCZqQWhPVmJ6UHtzbHcrWDJ6O1dAZ2hkIzt1WExuQiFs
Cno3fj11SSRyS1dxMzc+S25oMnNiJHU8YjFocX5sK14hWU1pSUNPQGVeNkM4VjRJY19iVHZmNE9s
WCVKT2g2JT0tdgp6VmduTTZuK0VlN21TZFpzal5SLURyTjtaX2IraDB1OUBgUz5he2E0cE5+bkYm
RFNmMStXfGVEeTFwaWMhXkhxT0IKentHJmRlSSl3S3M0KkMpe0hoZG1jcXRqMipAQThAd15Ca3NE
XythZiFIZHMpbGg+TG0hIU5IXikqYUMtT25uMGo8Cnp5MXF1ZilocVVJQXp3VzFnOz5kOEFIblE2
bStaJkw7JCgpP3tJVipQaiY2PyU2Wn1ed0xhK1YjPHBHIUE2PmVIOwp6Z25uYn4ld3x0TTc5M3hD
R19DKTdVPioraygrVUoqfEZMQz5oYU1hfkl5Q3NjMFd7QE9jcVB2Zj0haSRuPDlBOHoKeiFWbTBv
N2lzKipvPl9nSEhNfkNkdUtAbEx2WnBIWC1uUmQ+Xllsdm9AMCZIYUp9ZX1keVBQeipBSnF1dj5i
XlVZCnpqTTRhRi1AN0ZnYnhDbG9jXmAkYm8zXj9WejkzMjlpM3N9cCh0SiVMVlhXZnxFPEM7Vk45
fDZ4JDhIMSskPERfOwp6YEVsVVNUUm0yNzVgUVNuYFJNfilmbXUkZ0U1NWUybUJQdCVCaDxBRlpW
QTxXJFVubFVXNCRtbWBsOE13QVh+WT4Kem5ET2E1OGVTfGtXTWRQRUJ1JiVMTk1edXFYRS1ebmRA
KUQ9aWJCPWRgIztHM18yVW4rUzBlY3ZWdSlGKDlFcHt3CnpJYzExKFhOUSpQfE5pKnRRK15KVXVu
QUlyNCFQaCFvYThmeUtSYWI4dXdETGs1SmhxWTFwO2IzLS1FPzVrSVo+bAp6JkVAPSsrO2ExaDhS
Qn1sYWpAJGg8dX0yMjJ8SXtEIzJUcV89Smo+cVomYjRpR3RIRj5KVVpBRjZgPWZ8JjN6TW4KemdW
ZXZmOExkcDFRXz1xS2RWdGBhKEBOTD53T3tgK1B5RStjciMmckBjX0FRWERIa1pOQWpmXjtjb2c7
MTZ8S05DCnoqell8Um58c2p1MlRtUXNOeH50emxYa0NGPXd3OHtgM1k1M0RXMVRaM1khMmV7Klo1
TCUqLV5gUnxvWXpZRntuaQp6dyRDI1UjczYtbU9qc0dNYi19eHB6RmhHbWQ1KXJYMTxhXn1jamVE
WCRhI3RALSRZLX5HfWE8MjVFcGp1Xlh1QzkKenJDWUJFe19MZUdYKjthfHghbl9nR1J3djhHNXZW
eUE1N25ELTlvUFhKXnlgWEltSjRmVXZkJn5GRT4zNDZUdm9qCnpHKVVzR3J6cSFYMmB6clJVa0wk
KlheNV4kPFphZGdoOTx3NiVYSiFtWkxkfTRnRUBUI3t8R2RHXlhAaSRte2Ulawp6KGcrPz58Tkc8
RGoxdmR3PFc9RytzYWM9QTxoWTYjTDszUjg+SE5Rejh4VFMjJihAXldQQVNoOHM2PDNMRH1YQyQK
enNteEtOYUkqbVc9d2A9UmFkaH1EJiooSCFZakFNeyRNbnE3Un5XbTZ8STQ9OHFoYiM4VFA4OERi
Xm8wT1B6c3tOCno8QyVReXR9Vn0kZD9tKWE+VC0tZkA+YnZAXz0henw2MzdOYGclRiRnTjQ3YklQ
MTB+UU8kdzl6U3AmWlJHJmBhRgp6Y2tkP3VHNFgjKTlRO2ReLSM7ZSl8QT5rSVc3aHZmP3RkY3B8
S31xMktXNj1wU15zMCF8Q3NlWkFwRDteYD0zMWYKenxMdUE5S2hnVDFYI0cjTHt7TDA5LWopOVNp
JnJza1BHVzF2QyU1RkQ+UF5YX3pDbiUpOHUtR0lZe0VLbXJtcEtJCnomMmROaT9mcS17Nzs2aW4x
YFpOWTkkJUJTX3QmMnxjP180al84ck9DZnJTaDlqT0BYTHFLbE5Tay1+YSQtMF9jagp6SDQrfEpi
alh1PWtQU0VmczsqU3g1aGN1fVhlTH0oI3dTcmRRbDZjNEx1Nn5fVU53ZStJP2Fzc3p+eHt7d3Nr
RlUKenZnOTI5enlnbk9KWnc9aV9AXnJHMzhOenkqcVVUVSszVlJ4OXdiSi1Ae2xGNGt+QFpxeil8
PHdhTykjJGVKTHBVCno2Y3tmUWs+Yi1aMmM2ZWA5UXlhT21xQDcmKGVPdVV5ZUgpTHRsY1dZcXZq
NTFSYWYwRiR1SFMqVEchRmpgKng2KQp6MllqU2tgdU87e0JkJjJWWmVmVz5fe3NlYFpJSzlwMDZ5
MU1UV09KeXBuIW9tVG48OGd8MGJuYl4qe0F6TiZhfWEKelh6fVRUU2Z2fCNeQ2JCYkl2YXhTSUJt
K3pLbE08fEdoRiVpczhGalVOKiQqI14pZjB6YTU2UThkQjBpRSQ2I3ZUCno2bHJoZmE+N1JSdklQ
fDd3K0lDWkBBcD9MOVFwSX1YZnhfPS01ajA+VGB+TilLO2UqJkdLbyhsKn4lYU5zbWZQYwp6b05u
QFVHUmtGYlZ+aUl4aT81cUJAOHUpXipoMG03QGJBWURHLSVuJWl4QjhydzdmV1YhWCYraj9Ya0h6
eVpaJikKentXfGUpaihkQDg5SGd2VlJUMWwyTDY0UV8pVDx0dHkhfGgwdTArZW1kTypXfWduZnZ4
aXFKNUk7aj9DbjNmcDwxCnpLWHYpdjRJVmckRVQlPXszZkdANVB+bEJGVUJKYiFgUysoVURmPk5U
VzkxQWN6KTEzRUVkOXtOejJNOEgoTE8keQp6JSlWY2tGRkxeYHJ4Znx2bjM5KU9FX2coOUxwWlJB
ZyE9dDJWVW9ZZ1VZT3ZrTyVwPGtlP05sc3ApWlRPVCp8TTUKemJnemhTVnhOOEpHJEUteDk9Pz1K
RXV7bFpze3BDR0VBMjA+T0RGJCtfNXtCSXVYPS1tR0JMfWAxemIhVWlQQjNfCnpFX3ZiUGh1Q0lE
V28qdHQ+c3ZUZGYpbkhkbU13eXBaOWcwZ3s2eF51e1l5Q09QYXxjQnd1U1ZtTGl4QEIyUipzdAp6
NFQ0QlVkdCFSXypZYmF0dC08VzVEY1FNRyg/NiVlOEswY2p3PHdefnhwN1Q0O20+aWF2TCt4VXd5
dmRyJFVkczEKekxtZU5XTlp1WTM1JGdVMl40ZipmKGFGRCQ+VSZXeiR7U3hJZGlAdjZNQEFha0hF
UWlZS1VhSHZOeW9BPEwmOVFgCnpSRU41b0xqZDIrO0NKd1pfQEFPUz1HbEk2SzhWLUp0VWMxNDtL
PnU/ZFFtPzFpdj1gKUtUYmBsU3h6PWNZYWg+Zwp6RkUxZkRfQ3UmclR4fEd7Qm1YKVAxRzFyIWUx
VDZGcXtjTXFsLWJOPjdNVmp3fEkzPVE4VjNoYkRpUWxmeFV3dVQKemR0U0FiUTQwfFdgVDNjSzd1
IyY8SkItMlFlZm5adHIpa1hle1k5ZGZqdzEoMnhCdmE9NkZkaF5MSVkhdChec3VFCnpKcEdWKntV
OGwpc0ZHTzN5JDYyfVl+b1dRUiQxakIqQDhlS1IpNGswOT9CMFZtNTNeUHhjQEdEZ0NwTHhzfmpl
egp6RypTWSpjLX12VkxuQEEkejJ2JSF7Y2c4MU1tfHp2KHNka01gRyVfO1pHMUFMIyYwel9VO3E3
VlZncUhONEFvJkMKelBFWChXZ2pIdXg5cnFKPk80e3xPb3t6YSFiVGxVIWNsfjRKYElaRk00JkhL
fVcwZENAQ35zOHV5dSFtYTMpbm5OCnpqfCY9NlB5VGpfejlyZ25oZmM8Xm1oKUN2OHV7TzRJfj1W
V0NmdThvUTJib1BRVTh+SGU0VH5TOW8+VHRlfiNOeQp6OXZ2U0N3KCVDb1poWG0lb0wpPitRfGph
X0Y3fjtqcyE+Q2tfQGMkVl9kJiZHKDJYaGc7ZDRAZEo5dF5eJig5PzwKemFUJmo4ZTc1djdSP3o1
QFBJTD9EZ2oqbGA8Mmo9SmMxKUV1dyhaKFlVLVU2Yk9nQGZJLXluIT15ZiV5eGBaND56CnpVaDxO
UiVIK0Ficm5UbGwxTGNsdipHYF5kKTRnXnM8QCYhKWdkLXUzKzxRdXNfZ2xlZz1HLUFNeFEhbSVM
SH1qVgp6MHxReTk8JkpYX05zVzJjZE1zUWgkQ2MjI3opPld4YEtLWUhSeitBfjxucVhyP3FMS20z
Iys9K2JzRH5mZX02aEwKempWNzNmVEVxWD0hcTgjVWxNeDAtKURMajhPLWMrZ3tYTVdBQ1R4S1Jj
PDJifnNNIUxFcSskKV94d0RWNnspRnpeCnpwSmhNWE15enVvRHd0bj15YF9MP0peMkwzdFU7dlR2
KEZjaGt4dlhkKjc5LWlqbz0/M3JNZWkhVGFSPTkhUlZGUAp6dzNOU31ySXY1TnlQJVI1dncleSZ2
aFhnKV9yTTF1MGo8TG8qbm0tV3FaTXVeNXt3QVN8MnBtekJ2Q3cocCliPkcKekJWI2pma1ZeNj1x
SjtaPl50fXwqLT1VZl5kYzRkV3J4b3xmT2E4fj18NWBRYDN6IzEmYzVKc0RZSD12OUh6Iz1SCnpT
N0xzb2YjPVVydCtjMyhFRmoxITZzM0w/JFFkUGVZaHB4WTxKQnZ8S1lxMXxIaTRnbUZAQkprcTVa
TSRMI041egp6eHt0RD5FQCFWRXtQU347XygxMlEpKm5vLXdma30hdEZqNDNQTWIkNDxeQSFDT0w+
MnF0dHxvPHIkfWB6P0FfP2oKemgyYVoyOT1RRDF8OFVeKSRNJH4/JDkrUVFJUT0wKz1YRmw3blFt
WE8hUFVQZnFMbkYpaComPEQ3e2V8Vm82TW0+CnpLIVp1OXtxPGtnb0hfe1pjKkdvRTRfP0U/KUUl
MjdTYyYwfFpYczgjcWVkcXhOXis2OCoxdH4tK08xTXRvYEV0Twp6YGQ0ZGZHNWBNYlZ+eWgoTj1u
Mmpic2xQQXVPLX5JV3ZFXlQkMUo8dmB8Ozwle3RPQUJ7M25xQTZVaEdeN0RXQ0QKejxvXlduVmBo
OWAwdXluY2NHZ3d4eVoqaGlxREhqVHY7cUdPdkA4R2lAbWI1OWFKIVAtXjxNMHZhdEl8SnpvTGRS
CnpQKVgmSygzO01eKVkkM015QnRPfSZCKDd2NVA7alFyemN4T0gxPkJFQW9uUTBCMyQ5QkExIXp7
PFk4Rmp2UHlzOQp6WU5SPEctMGBodldqJkRLMWl6cjtpKjE9aGR6YTdmRWc+TV8oNk9Hb3hONGBW
T2x1bTw0fG5DYk5mTWtVKyNXZ1EKemRDJC1DR3NaZEN0ZCEmK2kxdl9XTTtFdno7RXYzbV56UUlV
d3pBNDFhVTx1LXBCN0h0az5gJiVMOXBePkc2fmlKCno1X30jJTNpV21NcHx3bGB6b3FpZ1RaY0ZH
WmpJWiZ5O2F5dlkwOVEzQTgrfEdlKDFHWXdaNCN2JGBLQTJaOEV1UQp6cm1KfEF3Qjh1PlhPJSFl
SnpaZGxIa3dOQUMzbVFKcGxBOyhTeXFqbW9aPCNYbGEzQCp5YFYzM2NaO2A7X0hoKSEKej9QPWoh
dT5rJn5fTnlNVGVocEM/Xz1pY2tvezFCTWQkYUp6NE51PXtESnREZ3s2Sn1Uc3I2ZXZnUHFNQChu
YnZACnpuQDRISXtMQ0BHIWk/MVo1NFM5YCN6SkFIUWs+JnxOcXRtSGc9X3tpMkQkcz9UenNEWTI8
O3pBQlJAUkpwOGpAdQp6bjgxfHJlMGB9QmFUdUx0WnJLZjRabzN+JEpiano9Y3g3NCZ3cTZ3WTZW
OXUzdjtvOGYxblErPHA1IW44SG1Za0UKenR7aVNZenE4WVJQanFQYG4/JFlUJXNVZG51QzJQej5v
YDshZGpXK1JycDg2Qj9gKkc+clRaYTloPz03VzAtOSUtCno/O2cjJEIqWnZUTl90I3VnanpfRXtG
Sz1pZWY/JXs9TVBvKSluVk9JMWBAPnBTIWR3WnJud05XMFgoWnN2flU9UAp6d3FERkMxVzxrdV8t
SFJXS3R8MnBUPmZEP09EMXwmTXVYfThOcW0pIWF1ZD9rIWhFMiV2bHIhUGBgTngpbk5NZlIKeihX
RihnZCU5bjNCdS1zUnMjYjVnR154PjZva3Z5Vz9yeXwoNFJ1dHRRfV5kUD0wRTRBO0JPJjhDS01u
eW9jWFolCnpvLWdZSjdXYGs2dklIYlpvVH5ieF87ayV6aFBzd2Q7LWJ4MGFEckUqXkxFP3k8bHx5
VFVrKHBqNEEqKFY1az8jXgp6eiRPI21vZGdPUUZrSE9qb2ZOPDVra0l5SHR0fk4zOyVxajN3RT19
R1h9Rl40aUNaeX1qUDA9KCVZN15DKG4jMk8KemJWSiFqXmklbypYXlVeVEU1ME9RJVZTPFVWb0ph
OShgOHokX14+KUhGJD0tOCY1bkR3VWUmTjxma2x8e3A3JWtACnpEOHNTPS1EbU5BViYzTWgzMFZC
U3R3IyRlNjx3bHRXaEIxTDxgamZZT3E5PEpoZkl7U2NnIW5JOT4tKDBLQ1NEcgp6d1YxWlZDRTN2
eV52bHgpMWg3RjA+RmwhRi1pcTNHa0kmOUE5IXs3VjJnXmFrS19HNEoxVUdLSyUpOExGSVc+SmgK
ektnd0JsVVVlKSlxNjZyPm9yXl9kezQlK3oxTj1eS3MlM3NQMCk5emZAMHQhSEtEWmgxJjUhamIk
RD1IcyFMNipRCno3ZE5zX2NJKEx6MT0/RStYSWczOFl3emtIZHl1TTRVMCl+bTJZY2lFVWtRYEJB
QVNxVW1tY1NFbGpNfHVLQ25BfAp6U0FXRWIhU0EmPHdIWSohZmNhOEJ1dU9RdXQmSiVkZElnNWp1
bUQxZUZMU0dpJU1hMVYhdT5Ud3t8Vz5icFRQeGAKej09fmg3TnJLdDwlXmZLYnlDSUpCMjJrUHdt
TERLJkVkbntMRmktI3ZzVVFJa2YhLVApWH1IPXY7WU1DP187Snl1Cnpee1BIbUdDNjBlQnVBPWRh
aDZydmtMNUQ4P0Z1aWVlYXMkJSZFYi1OO3lNdVU1P2ZRcF5KNVd4I0Jia35FdzM+Qwp6KXdoR1FR
O2VfZE16V3t2Kz1eZWtMQE0lJD96MjRKQFhQe1lWeSRxc092SEJKPHVJbGd4Sml+SXJoKDRXNzJe
aE0KejVrTXhKIyFVaXUlYlFYb3EmfFJ2Rkgofkl2OT5oOzdZZjU3Qjk/KDEoK1Q3ZU92MkYxKl9P
ZEIwNntKfXZxVEgxCnorcXw3bF5nc2paNzhWKWdFTT9jTkp9OV42ZFUyTEwyPGZhe3luPnMkeHBp
LW80dlVNbzZebVVtRiRefEJYN1RKIQp6PH1CckhaQmJYN3dEQSpfYj18YUR6c3tgJl5TYEBlczBm
T0YrQGJEQ08rUXJNSXowbDsqTFNQQWNFSWVeMyZLNDsKemI0VkVpcnFHYHpDVDB2e2tqZmwtV01G
KjslMmkrfWp3YG44U09WRTJDdCNLQl9LLXJkaU5MND1LWFd6d291T2FsCno4VV80U2krP1Yybzgo
U3shMDgwJjg2QVluXn1zc15gcjhmciUzPClRZklkTG9oWHNyWDI+TXs/SSl1TG5ffT88Vwp6ekZy
SENrdURwd0ZGZW91YzdSRGtKNzhwPFl6NzsxWUZlbyQ1OUdXTis7MDdFeGwmUTU9fCR+eW9EVTMo
ZzlhaCQKeih1NHlWezc5biRTUXl8Z0pOWDBQaVI/Sy1qRkFLKUBVdC1JaXlqZyNiYnt7WjJTb2Y0
I2VOWWVLMVlEeDVZZGJRCnpOdHo/RHc3OTJTM29HPS0wSU8hNlZhPTdZZSY5djhmOU16enF2TE9L
X2NKLS1qbVZ3Z0hXPkVPb1phNFV5Uld1bwp6SyRgS1l6VSQqaDYoKWA+JlhDbVJjSGdMfHkyfGpt
KVFlVHZ5eTN1cSRtQTM9alJ2SjBPRGtzYkBmNE0zP3N5JGAKek9ZQXVrKEFlMHgqX2ljZE91Tnd4
PGxMP3NkY31neUxnTXU1dXlmXjJiZTlQM0coVzAxc2N9YW18SyNaYzI3bUJOCnpWISlVVCF8ZTU5
JV55QX0te2dkfDFPNXY1STQrSUNJaCZwUmZHOHdeNnozcWI+aipBRWZiMCVrUGZyZ0pBN1Z0awp6
LXhgUiVKP3h0JDcxaTBRazZtUnYkU0I5fig8YzYlUUMyKG1EfjlFZTlPKzhVYStHbF5IbFZwTSRS
WiRxPT51KVIKelN8V04+T3FRdXlTN0R5aiNJSVg1N25EUFFrPURSJV4ybV91STJwNnx4LW40WSZu
aD09Wm5gdGNmdmQqPiNVNDtyCnpMYDBkRGdMd2grbTRqU09OP2w2UT1ndWh0WjZqUX5oVH5PS1Fx
bCt0N09vP0hndEh5Sl5EZX0hZH5pVzF6bypqdAp6cXdUNj5nbTtBWWckeG8pPzg5b0R2YGF0ej9+
MkNIOVBZRDVlMiM0fHczQUttRSo8JGY2ZFpCUkVgbEpFNSliWUsKekFTITh0e0VKczwhMG11djdK
dUFAUzxeSyVaMXp4I0drMVJWRClFTSlWU2M4TGM1SE9rbDZ0azhfTU8tQ3BPU09iCnp3VD91TitQ
OHFkMk4zNmhkK0xeQ2dmfkVUOzlWMnBscWNsfmd5cFR2MzdgfFp4bV4zfVlJYzlOVC1UYnhlUWEo
fAp6PHJqbTtlP2QtfXZKTE9UfENNVyoqO31oTXBIfmc3QEgrTERLTTRGUDI+cnJzamVmVU85Y2pa
bVhVflRFZClGQkwKeitNe0opNTNIUzw7O0o4dzFjPyFfOHttXkpeRXxBNUIlT3FoemUpVjFPIT9E
LUVESjUhXmpaQVpjb1peTVhARnVFCnorI1gpN0EzaDxOdkkhcThoJVJiSkZ5JjxscSgxTXQkU3xM
czlANGRpb2R7TkhSVWpoUDVGcXZFUjNNYEFKWHNUQAp6ZW9hPTxGMTVIYi1KPVhzPnBOJktAY2s4
JlgmU0lJeT9ONkJDIWVuZ1hiNkNXM2NpNl91MiQ/S2FRKnt2TDAtVz0KelJTWSk/I0JYM2lNQygo
eytWcGdAPD1SeW1TSXBjUiVibFM3YkQ1Ymp3ND87aT4xa1BzR0lXZjxhKWtILWZ1ST5+CnpVSTI2
ZFleb15eVHJkTU47R1g5OEVGNksmb29nNylnTlErYWltSHphbF4xYU4yfW9HempeYXdNMWpjayM5
fW5vewp6VEl1e1dUPXBRTWxVKzl6SD8zbEU3fGkhZWBlbTk2YitBVG9Ha3JEY0hQe09ydWs3T2li
cjd9O3ViJlIlMmshJksKenJNNjtBTGJSbHxHWipOWExUKWhtb2ZMX29BWkduR2VtQSFTczYzWT5A
YG5qV1ctXm5lNUpAPndVUGgheHp9O3A5CnpUdjN5Zz01VWcyPX1LLT9BRkVuIUlKXklWbGZLNEVN
eF82fWpIJGNJdSRRSExiKkhJajZKeiE1UEpUfnoxbjxvbgp6Py15fDI5cUJ8WUMmMGhKaWxII2tY
WStWazM9WmV5PG04UGt4YE44eXZ3XjtBaTRxLWkjTSY+ZVdkNmJqaEx7UFUKeiEtSzI4RUVhRygz
QztuS0pHY1Fjem9ecmNpcjN2WEYqd2h3ezVqcT1ZTj8kQEt5emNPQWBTZkZka1lrTXdjeXkrCnpB
SihpTjBzPmRXejY1R1RXbT57bk4lQlctV3NQNGlpPHBGYVoxN2h3dEJJZWlPNDxQX25iRWViP01W
NnFBRXR1PAp6NFcmTVJYSjtwcXA5cExGPmYmY1Q+dilJO0ojJmxTdEA4YFolUCVFUG0jTmYjOX4h
ZG9AVGVybVB1JnQ0PjFKWSkKekAlam5VSUpvdjhmUHZNekw2PVhfPCQycSglVz52OHh3JU1OMit7
NUAmZkVEczJZeWdgPnBNSGxwbjtoZDFERUk3CnpuXzZhUHR0MT1VWHpTcyl0IzlfIUFodlNnSnE3
YD84KitfNSkrOHp6RTw3Wns3TTZ6Mj1wTzMrak5AdDEhVVI9Ugp6JWVhQTxMcXlOWGZeIUcwaSlL
WjMlT1hafEE5M25oX2tqaCNpbHVQUl4xclF0RH5qdGdZQ2R8SDE5Wjc1VDM9dTUKejx6NUA/elp5
UXAxUDN6fnZ9P2FMelg0dW9TR2VfI18yfSNvNjdQVGh3NWokO29nSVhHTFgjdFAwWjErazJ7aSRH
CnpDeUpKXjNkRlViREZMZ0IhVWtNWTB3UEs5Q2klbG9BZnRtUU48NHVLI3VBTGcpK0sqaVQ2bEU3
YzE/c0kmdlQ0SQp6ezgwQ1F0eFZeQik3OEZERGBfSU1gRnl1aVN3Xl5YN0VaRyMjJCROPU56RkRW
VD5nVzFQYH4+Nnc8ez9AZk93amcKeiRRRWMwMGZqa3c7MH0rV2RWbUxyWEFvJFRVVHN8a2UjbSoz
TmBvc3ApeT9+S1YySlFnVnlUNTRrOzhheV4kJDs3CnpsLXtIUXZ3I2IxRkI5VFFLcjxIcCt8WDlW
QEhrdl4oPVRfdDR8dUNQWTVxNmFrRkdUajUxZ3hpU2BwPn5hQzZ9fgp6dTZ6ckYqcU04OGIzRUk+
TCR6UD1gUjl2PE10NTBfbyFOZz9YQWF1LVQrOWVmODNFaWo0TFRJWU9yJSt6V3BJZTQKemVqUykz
K1g1TGcjSnVGX1NSYGQ3M0B7MVpaLXBoPlNqbSszeTFXaUghMyNLZzNqc0hQTyZaRUBDKHFZQyN4
QmtyCno9ezZ1e2o0N20rVX5SWlhLZktYPzRgfFg7eVI0fD5qUUQ4Mz9YYmZjMF96NVlRaj1WejBq
QkZKXkdqcHJuSHVxQwp6R2drVVZHTyFFMy02VXdGcSs8JHdvQ1J6amhjdWlxZnJsa0ZoaEZsPTtI
flJOcU92STEwJWhYTk5ndjJCTm14MkwKek1JU1R0akIweXd3eHt9Tjd4d188OUI9fikmTFU2JiFS
NiFUeCZUNSVTX2xgKTtHUXVNcUp6c302dCh2Uzd6KS02CnpRNUQ0KHslWkcqblZBeyk5Sj8tXiNB
ent6OExrK0lifUc0JVlLKyVlMDdEM1hxcyNSWVlYZVJJRH1QbllvZEd1Tgp6VVBMYCVPamlqQnVr
PVElK0FOOChifVpmZXNfJnB4XkE5VEZlTUI4YWc+SGgzdyowKShZYWpQZkZYN1owZyN8ZkQKem5h
OERiLSFYaTh4SUJqV2pJbFNFZF9WJmA7cnpXdjVLZzx0dCY/KitrdEhJY0FRMCF+NkJjZW4tMW5h
QWR+UylyCnpDPHdQbVZZJXRVNiRlPX5ndjBRaSpURyF9UVViV1hFQj9hV1BEJU1TSVR1OVMlPiky
PmZKbWl3WDRJVE9OQF5GaAp6YWlTM1FLSX5heypKSFJWM0h+dmQteDApMTZUTj14QjZ6ajN2VTBq
XntJfXdBKS1pJiZsZm0lX3B8O3BucHIpNyYKend9JVd8VXdIcGEhR2FYcUIxeDR6dTA2ZyEtJHN5
cVRPQX5IUzY1ZHpKSjROVlV8T0dkRFItUEMwY2t3QXRxSSUtCnp0V3FuPDZifDRPLTY+anQwfXQt
Kj04TDNYQyE1cmJxY1N4RShzMXlSX00kbVk9JnQjdFIlQ0Y4UjtaPFotdlJZJQp6aGp4QmlRZ3x0
Iy18RiZeZ1hgaDJoeEBSdXB1Nzc+R3p0PyFwI1BPIztpd199OFEqU2g/PXo3QmEqJERiZSVQaT4K
el9gak1xMFNDaFpJcys2K3ZtfkBjY0RnM0FkRH57a3VZajM/TnJDdjVWJlhKZlllM1p5PmNCbDk5
UmttIz0lZmlyCnpqMml7O0xJQml2YHRkb3IhZC13fkI4eT9lPmItVWVlZ2tkMnkobVE2dUppSSkx
KGI1SDxUWiU9MDJLcUJpa0dWSgp6dVkzREs+PEVTZlV7ekhQZiQodWd8N35yaSlhdlVCREBXanJN
c2l0NXswNntrYHxzWl9KQUlvdy1xcllOP2gmKWcKekpifkR9O0hQclQ7UXxkNmJJTWxJYTtIZyE5
SWF+I01MOU1LYE10QUstWWRQQEpOYFZkTTAyVEUhTGA2U3spNXdECnokc3RLeGhLcldQMXFFT3A1
VjNwTT9gOXs0IXk2TjwleU1mVmFrbXw9SFBBTkIlMj9+e18rNHJ6JF9lSjZabVhWdQp6QCs1QEs1
b0VGZU14Nko4TzUpQ1hGRnBqKGomRU00dzdJa1ZSbCo4fmNtIXhrVFooZGlVMyZjdnN1e3QtTjw5
Q2UKem9vUGxBbXVzNzJTSlJzQkV9Ty0wKk9Vfl8yRCg5aV55c1lEYVV8SVpFS3FRR0FeKEZYMllQ
ZzY7JVdXQzx4WlAoCnpiTUdFeXI5ZUxCKTwjfDVVKkdXfmlmPCYmQW9nVU1SKVVsQiFSZnJwVXQ+
RU1BOEJ+WG0pcz0zLWZoX2VJOU1NYwp6bHhgdUVURUltflM2e0teK0AwQ25ZdVVkckFwZDhrZHU9
VXc7TjF9ZUVSdUh0aTJRNFVffT5UXytqQmBKS2FTRDUKek9gQ2ZfPT1yQmozcmBAPmE7ZHkybDV1
Xjk0UlZJKFpxRDBRZTYmXmJ7RVh5dFJQUiFjSmhtY2lJV09FKXBaZ0grCnpxTz43bTlsUSkjKilZ
YTU0NiZvMzkyVz9uT3V+Pjc3SngyQ1ZFRngydiohKDAjb2EpVTI/U0tMPyF8PSNnPU1YIQp6WnRB
Qi16c0VqU1Q4XiNuTERSTj53ZkQrWHhzNjhkPHJpdm04bjJYWHIrektTQkd3eDZmQ2AmI29DRENm
MFU3cyQKemwyVGlHeUt+UnNPY3NORDM2VVMqQ098OWwyaTMyaTI5VkdkeDYmVkJTcDhMTDsyeW8t
YDNtRHxAa2lRc0xAOzs3CnoyWT96dzA9UXRTSG0wNTw1aVI3IXoqM3s5I2dhQ15XJWRJOUg5Uihn
Ym5JU1JKS2xvPDhzVkV2V1F6TlVVNzNlYwp6bE9xaj58MG41Vjw7bCkkeWlsQUFYJGo0aHNtI0hg
XmZIUDghQnt7SEkhdnF3S3lJe3JwQ0M1KG98QmVlaVhRYl8KenBiZ0xPRiRLKkpQJHFeSzM4O0hY
UFNQJjZCbXNpci1QTyNna31SbmdVa3VHTylzUyM+ZjNGWklFLUFTezxPZmF+CnpFWVU0ZDVjMWsr
SEt8cmVFa016SXZWVkJAOH58ITA5QnEpX2pJT3gwQ3ljKG9lK1hnI3BvNSk/YUstVnN3WT5MSAp6
U280V2QzNS0wPlMkfHdkRXw5Vj1iSUY+PntEfDNgKnpkYilwTjNQbEJkdHs2NV88MFFIeStnbk9n
S2Zucmw1S1EKejB0PiRHOHJzRXVYN0k0ITMqZFA1NGgtYnJWX2cmZUJsPz9SSSF2RzNHYnVHckQ8
N0NXSnApLVYqd2d8ampmMCUpCnpHfTBYdXdJOUpqdXd9TWpXZjBeMjFjREpONHhuQCFEQX5ZYElT
KmY0LVFDayUtRVh5dDgycVJDM2loJnt6VmthbAp6SzZmVzx2YFlZRnJTe0p3VF5MWTVNLUcpPTV4
QGN2RmQqSnoofX5aP0B+ZH1XbXpTNXtJMlpET2ErYSNCejEmXkEKej4mSC0oXjZLPXhYQTted0g+
XilYQV81XjAzfjI5Q1NIemNGZlRSZ2Y5SU8wUUBlcX59a3tCcWxBbUtOSmghOTZFCnpzRmQwNz9X
fT9Hej1ASH51ekghX3ZeP2FedEFZO2VndmJtMEFYWSNBfEsxTmFnWU4rSmQkUnIoWE08Uj95e0gt
Wgp6S0gldzNhNipNMVAjVnQ0R2N3YXswKkRBRUBaT15YNUV6QlQwKj1nMCZldzRWKyVicWwpWUtI
O2BaUFI8anh+Wn4Kem5LcyY4UGZwVDBpISpgRiRTbkh9Wk5wMSg8YDhmfV8tYCYwPS1md3ZRNkZj
KnRzVEF6UWY7SjZmP2ZkckwrcSpSCnpDPm56ZmpXNjdMMjlGMCg1PUhxZG5WTmVOSVZGKFlOTCVr
V0RfaW50Kl5iaH13ODk4SmprbzNmM3MjaWVOZXF2Swp6a31iOGhRenwteDFgcWxVWk1tbn1ieyQj
Kl50P0ZzQEdKX0VDU2ljSih3VkRvWHA/MEhFbndAM0l5PkxCPnNgQ2IKekt5TXYjO1M2QVl2bnRe
Wl5AbyUtYVQqMEp2UHA7QHRKN0kwUHQ9YzZWa0ZAZWZtaFBxWXltakBBJGM0Slo2fUd9Cnp5ezBT
Zmt8O0krPVJBMHdXRHxIPGNTIzckPnVeIzBsNXo7fSZqVEFvZ2RtN08pKGwoMUlmYnpPWExNbW1f
SjM9Iwp6bmB4SiVrYFNwZ0o3alVtUFAoLWxAenY3U0x0Mld8Z3ImRm9JIzZqMklRVzNJIXgxRUc1
czlBd2E0fDY1OD5qO1UKeklleF9AaTQlZGZNdHJaPEptSH02aUhYN2J1TkxNNHF8STFeKk1fPU15
QktUQFY4Mnk/aDdAa193YSZoO1U4MXk3Cnp7ailuWmt5c2E0NStZNyZQWXxuYko2clArN3wzWUpB
MjVuSjJHJHdYMHgjezh2eFhLPFBLUG0pa2VgRD4mUFgrYQp6WjxLaFNFUSl7MHslUDF3b2NtOGpZ
MWBEe1poUV5sbzdkfD0hP3JsQDdFfm8xS3c2fGROIXJrazBKR304YFlaZS0KempARlR3U3I4WXdH
SDV0Zm91M2NMK0JwSWE0YW5fO0xEdF4qQEVFR1FBZVEmKz59PXJJVml7UnE5MCVUNE5OWDJ7Cnpp
WXFHZyktdHJ9VUpxaz5sOF90TXVYY3d6ajszMFZvfn5+NHB6U2k7Rj9XUTtMVVA1fFlje24oazQx
bVkxSlkwcwp6SiVfTUplbVlnTll+UVYke2NxVE4/UVlmQWxwM3ErNTdyVjwtM2x+aHB8JkZfdysy
UGhtcH0pI3hpWWlLLTNfVDkKenV5VUEhKUg0ITZmJUZDQyFyfF44dzRDbytnS3ZXNjE+YzAhdnR6
RnRqRG1WcVIpcCN4UHpKMThvX0FsbCNUMWtrCnpxUF5vP1Z7NENEK2skNVVrU09VajJaez8ybE1w
S2A1Rz1SPkQrcThDYyhfaSpUZTxASylVMn1GUlRfaXxwWjh+Kgp6OG42YklvbVNZLT00Klhmamw9
OGNBSiZoZnhmKCRzTkJheTxFISk/PVN8WXV2aGo2b05oOU9+ZGMwUGpmc0B7PWsKellKczk2KDhO
UkJISDZnIVpaO0A5K2UwbDxZSX5GZElyOURGNWIqfmhETVpMRGBHTUxRWH43e2k3JG9pbF9OeFEt
CnomcnNoMUI+eTdzN1JpdmQ+a3RxcUVTO31lSzk4fj9GbWVicE98KWBFZk5CQV5mT1BARXkjcHh4
O1E7NFEyKX1AXgp6QEM2WGd5TU40SjFuQV9qSSp9bEEzV1EoJGFKJkl7ZzNrdXElPX11WCpFVGd9
Rip4I2YwSEV4RDg1aysqZjNoMz8KeitoNDBnbzdEXndRYG44N3M7WkIwaDxITiUhTDVkLXl0P05D
SDRKO3YzMFBuRjdhJkReJnRPKzJUaD4xYjYjeCkkCnpUfHxebGFQSDlDcGpVKkNMVXEkUTcqP20m
cVhYVXJRV1NfMl89cFB7JTY9JDxmUmtgYEBgeThzSC15KkpKQl9MaQp6YzAmTCZvV0tWYChiV3d5
VVB6UzNmTVpxK0tDUnxDaDl1bSo3WG4hTGZSLU9oKiNLKUhGZm5uWmRNTiFGdCswKCUKemNgeUV1
JSR4JGFXem9EIzc7OHJ4YkNsO0JMYkpPYVA0aXo5dnI8KnY1JjtQaVFaUiNJTVN+YyUhe1hRbGxk
I29OCnpyKWZzOEFrV1NoSz9fK0kkTS04WENEdUppaDhEM2Fxa1FEcFMlYU1CRXg9N1VwZmJlWTFm
b3I/JVp3T0YkWDl7dAp6ZGcrcyRjUW5SbFp3dCRPQHo4TGFqYiopLTVXSW5OeiFuNF8wMFc2UkM4
ZWQ7ZTEwUXRRI2Nwakp9bn4jdzFfb2sKelEmUjh+UHswNzQ2eDBmVVRHaV5AemBLfk1TT2FzPkxB
VD8zWn5ZekU1WXdwQHI1JjdtcHs/NGo4OzVIaT9KOFdDCnpefVgkP1lQQDRSIWM3amFiTzJAenAj
aVpsKVdkJFNkSlBxcjhOUWE0bHxsVDstbiZXVU0qJUFjS31MP3FeT3NaNwp6SUxjWmZjVXJaTHB1
X2A1M0FXKH40RUJxKV8hUXZia3pEODVuciM4VndNYTdzPFUpV2ZfQTt0QzJkXmJVYEApQFoKejBj
aCM/bzc4Q3owPzQ5M149cl5DMkNob1RNNlhCZWRjZys1YDJvejEmTmZ1Z3VWUE1MVUJEKm84JWRs
V2g7P300CnphdjlERFBQRTQhRjRXTWFZQXFfRnMoITNwbW52PiR0fmdGeWQwc1h2UmFkKE5MXk8t
dnkoOU5eZGJEM2kweEc/Qwp6dysmJW1BVVhtejFQY3UyTV4jeWZ5OWwyRWZndCNvI282cnFCflpC
ckAkbkVSYSpRT3JMRGBUeXVxbTxadHY5Oz8KeikzZyVMQkc4QzlmYkozayliV0NyczlkND5BU3Am
O1A8a3VANV9sfGVKfXMmMT0+MjFGOW1XQ2lLPykzdik4SWk3Cno0VGwzTGJPMXR1ZldDXj9HJUxJ
O1FEZVRtS09HZUZwRFhGd2J0elU3YEhJdW14JmxWK2dHKS04cFkrP0RnVGo+cwp6aH4+Z0RnYSF2
aG16QXhaOCUtbT4tNmNhKWl+dzd0YTA0dHVRVSlOU3U+ZkMrWSNZYGFUTHBwYGlVcHlsMV8hX3AK
ekQoV0VMZ245c29hdU5Ncl8maUZmITZaUUBaNVZqWEt8ZnFhQD4hWDxmSE1AcXV5YEh4e3Y1XipB
VnBzMyZDVXAlCnorMXl7KzxDfnojMThURSl1aHliKVArLTUmYjdYKH5aJTdzPEhsPHtnQU5fa2Be
OUd2Vll3XjlvV3BKTnp3d2d8VAp6RENZWGJTN0gyTXEpYDRyOFk3P3ZxVWlQSldTYy19M1M9Pz5i
T0YpMVZnVU1fPXZjMGh0XlJJckYhLTU4IVppfXEKenJeZG0oRWhnPTRCO2hjXmUqbl8kQTx0ITFs
PX1jNSUtWjU4aDBvSXpaaCUhT1RfPjtlVDxpYXNaNXs7SDU3eylUCnpoSm1gcHkmPDt+czMxRHpr
PzZnNzgjSXtiUEcwT3ZNY2lHZm96VSlyTFZgVT92QjRmISpZZnM8eXB+KWg2JVlOLQp6OEI8aykl
MT17V3crMnNvWUxXR0o+eEhKJm1PRlpQUG4+JjV0XlJpd1YxZmUjQWpnNGo5TVgjN3N3I2E5NClB
RUYKeiNRK0VjJnhtd1J5cCFPYHBie2VuVUpnaSsmWWM1V2o0cmB5WkdxPGtJLUZCVGglVWNwOVAj
YzAoM3d2MU55SH40CnpOM180RntzSCZ9YSZzdEhmMD87RVlwVCZEJjtTWl9QOVdyOTUyb3BgekY+
XnlqKWs9V3ZlWURfVCMjXnQwe0ZyWgp6KUZTNTAxNSNyWHQkMGtHaDM/Iz9lfkx7SFdkNipgVDRX
fGsjOXF1TjtsYHRoYSU5Rmw2ODlhRGF4WmdscHEoPlMKej5nc19hQSEzPXdyO3c7Y3VBN3RxMlo5
TnRzdnQtUGcpSGNDN3pfYHZOVj4tJGc0WFNCeVBjIW1kSStANmswWnVXCnpmSCFhZWZrbj0zWikr
R2lkdWFFSnYkSmR2QXMlbGVXNkh3YDJAekQlTVc8JkFEfE8/KilBPXExPnklS0tLX1V1RQp6Z316
eXlMYjNxXzFZbEhRMHdsX1NzMVc/PyUtUitwQTAqNlYjME8meChhOyR5O2BPLUVfLTkoeT84Kk5l
Mk1aJHwKekleRGJ3TF49Q3t6RHcwYmB8N0psN1RSMHF2UGNqYjVPYlUkWThRTE5ERTF6IzIlLX1M
WU18bDwtVyp0fXJoJGxXCnpeNG5gb2xzYXpiQDIlRiVLSHMqbyhrYGo/MVZaLWhVenB1OSZgSH5D
Zj02c3c5Qjx6RUQhcm8jZUtzT2lQezsmQwp6ezRWfENCIUZCMWQ2NjFmQkV8UyUkP2xKQHFhSDZZ
RHNpXylwOClxZTQhezB4PDteZ0RxX1BOLWktPURlI01ZQUMKekgrdnZSZCNVVkdrX15lQmJtP0ZO
RXdgdGMmVmxYRWhjJkxQYElBQzl2d0RyQGYtRiZUcDFhbSlEIXR1fSluRkpnCnpOc05IeSt3VXgo
QX41bzlzNXB5Z2xWaDtSOHcjaGAwdVBYRGo+Mmg2MTd9KVRTVGBgQlUhN3dRamROXz8pWnNaTAp6
aClTN1FtU3sxanB0QyszWkt4fkA+dk89QTZsQG1aM01oLWh4a05pblBvfCpeY0BBaTBMRkk2dSR9
SmtXOSphUGoKejhabnZ1anp2aXE+PVNBUVlBNkhlN1o1ZXM/WldhczhzNGZOOSFLMXVhMVFuZDdV
cm1HZUVxUiF3Qi0mT3p6d1MtCnpCJSk8fCNISmdCT0Z+aXE7XlphSHstTDJme05gSzVCfkUkRm02
Z3luaHVuaVpiZHZ+Uj0oVEVUezFIPUBFbXxsVAp6MDVuRjtMbi1pTEZmcCkhTittIXMrWF9Pd1ok
WFNgdyRUXkZkcitTUT5TJH1gc0t0NjdReCR6OCRANEtITW5+OXMKens8fD5EOT9YVmIoOGhnRC08
TGgqWUR4O1o5JXs7Ml92OUA/Rih3SWcqJFNheSNuUWpJRVdQSzFoSkZJdy01XzZqCnpoZEFrUlhL
KDkwSWRqdGxlMGlPYmBrdS14T09YQHl5QCs2UHhiYEBnMXxIMGNQdElpaHRBbytTOUp6VHgoUjx1
eQp6WWI3Jl9NQzBfQ3BMZk5QKGt3dEI8ZTU9eDU+P2F5JGFVKk1ufGAmJmEyanh6PVNuSXx1SDhh
N0tMbnYzUSpSMHUKenNnTE0ycCsqanYhUCV9QUApZEMxRFNiOTNWWHlJSk9QMU4yYlJJa2YqKUlk
MTljT1E3KGt2QXg/U3clc0N2aDZXCnpKbWYoKSloaDkzUV9XIz8hNG04YztqMWJqVFF4O3hhTyFU
VzUoSDUqfDZCKmllR0NrWldWTXotMUZ9PTNaV2dWbwp6PC1QQGR6UDtiOHI8a1RjSmhIYHM7Zmsp
dmxMPDBuY3g3NENENDc2bEchejZ9N21sbWpZOSlicktgaml0QlBgYjMKejIrJWhZc2g9aEJUeD5q
c0QkPnRDaUh7X1JJc2leNmNqcUAyekx+dSMoWTJCZEdGYW8pKC03bVVmWn14PEQpRSFoCnoxIXB8
KDB6cnVrZGJMb2RoVHp9UmdKY2VfV25UYmEzU1dSYVFCej1LJmhsRzdsdCVZJSVjaTFUWHQ5JlBr
SD9NWAp6RT16aUBQJW1yU2hWdk56akkxZSNiRmJDKCNVcDFGOFFQMF52LWN7K0h4RT95Y1Y9Y31E
RGdPZTs1fiM4NU9FV28Kek11Zkl0KnpqRztoO2pfUThXY1o0VG4kZEteWmghcD4ofDltYnE+XmJH
fW01MFE5RXlGOXUrR1NxcGVQfkxNVFAyCnowJjtnS3ZPcEVeIWQwWjgyNE42KERYVDE1elZCKEdN
d1cqbm1nSkF3YjNxbzRBYV5KcF9YIyZfZ0Q5byoqMShyegp6P0FYRm88XklJKmw3WDFyI01eO1Vm
cStsNyhCbHxXIzg+TE4ld05Ie0BPeWFrYGpOO15eWlAmJSpWRmBzWmItS1AKenVSdiQ/bUpvb1Y2
SFA0JG1qa21tJWlfRFc+SWpINi0jcH45biR7cX1nMHtlMUtAb0lQZm1pbmtKUn5BMVM1WDtCCnpz
NUl8RFVLYnU3d2k1TnJRUXpFcV5KQH5kPT4mfDhLIyloJmtkUnZlaEVUWEVgI08laXdFcXNPVHp2
V29PTE1uIQp6Jj5oemwjc1dIXkAjbmVyQXA3TExvIyZGJFFnezBiQUhEY0tzKD9kKUBLMmAkQila
RDN4TWtWQyQqI1JSS1J+PFYKelIxJHpmO3s/SjNtcihIK2ohNlBJcllEQnBAa200anhqSkNjYkFz
d0pJZzZBXj1HU0VSaiM7OD5CXypEcSUzUU5NCnpTQSYjIUwzTWhZM15YZzgmbDFOcFNBZGc7QVdk
dEVsbkI5YEVXdVF2K3B2JnJ4RHlJPmh3aVU9RDZkI1I8aXYybQp6cUJLJjVGXkE9aEFULW1tISUx
NWU5aWU1MU1rcWBWSyFLQDdEU2NDU3w4PmEhIXlUSyg3UkQyNjg8NmhwKGRUKiYKej9Bb19xNzAk
Qk1nJjVKfjV3VnNDV2QqUW1Yfit+ZXB6NUk7KGRgOWtERlReTE9AWD4wcy1kQjNiVlZwQ2hCWS1R
CnpSeSYjVShTRHY9ZyYjdnd3Z2dIJDBuaiNhVG98ZFZhSHxxR0RTN2lvT0tvSG16VX5VTnFyZkA8
ZTR8MTsxUk9FOQp6QkBVIX5pSjFKYCEwdiRhNnlsQ082emJxKTFmdldSYlhQPCNUKmMtd1Jrb29X
TUxEfmUmVDgoTGY1QCUhLSkpfVUKeit0Z3x6XnMkeH1qOEBlVVhnS2dCNCZRWDE7RHQtSFpTIVpr
Zk5TYFZBMXY/ZipkZitodiRFP19pWUUtVXpvdWp6Cno0QWpQVlU5QnBLMH12Oyo2Y3c/K3ZiVl5C
cV44WHd2RSokN3VWTSs8Nnh0PUlEUyFqVjVkJHktPjhwcj12dytoRgp6d1ZFJU9IOSNPKF9IJEpB
TElYLTAtK1NKSHV2YitiJWtDKFBCVlp2TXFgZD9sPlYqQUd1dTE1QyFaOWcjVTFVUmEKej45QVA1
WkQ+JmU/YD9NKD9pPkx8TnVNVUBeNkJkN0EkPTkoWkxWYShndmpnSHVQWCNKdkBOcmVXSj9tTHtA
ant5CnpXM2M4WU5XZjx4KTE4N0Y5Y2BwJSZZbSEhQlRPeXApYV8hNEdOJWh5I0RfOXxxezAxZ1RH
UFF1RGQtYXtTR35JYAp6KHpGbTI7VGYza3ZvblhQZm5acVJ7JX5NVVg9P05WMyQmdTJnVyUrTmYr
PzdqQn1tNytSRmNVNkZ6dWdUTGNEdVcKej1QS2VJS1YtTyQ9YSNzOWM1bXRJX1JqRjBCb0Ard2do
WXFMR0FZV2dQOzNWfkt5QEBZcTdERzlkTCgmeElIOH5oCnotNEIyakQzNWBkM0AwOWlWOTM+Z1Q1
fDlQd1B7WDdwIVY+KyllPFdtN04hZmxTYSpgWGV8TXtDTF9xJFJ6OEtaMQp6Km8jSGpoS3JlWXp7
YWh2KVFZfis/eENVO3lTb3kwVUMqSD41ZFp4N0lCRjF+N1VzTVEhISlDbCk4Nnl5XkFRblEKejYl
NWs1QCR1KHhTYTVqfD1ecDx7Wn4mTDskZzR3KlM9dDQ9VDdoM0c/JkFBJlpfM1leSn4zcGBeRSZC
ZWxmQVUhCnpBaj5rN0E3ZUg2VGAhQnNtTVkhJUJgKk97MyQtNiprKTI/PypWT2hkKFY5NE1zfk18
OCZoWGs/PzZIcTdVPiFyewp6PC0tWmZsOXJVdj8tODs2Z2AwRWpseF44X25kMzZ0RztFVFJGRj1h
JTNGTDIlRm45M3kqKXdHIWBiazgoJHM5NGgKej5ifXR8ejNiTyFXNj1gSEkkJlE8aDdSaF8hQWgr
RFhGPnZfc2xeJHVYOWtpNWJSeEVsQDxGN20oJFl5KD8yNzdJCnpTXylRSFN5VTE7Zip2IUgzP2I1
cjBiRmskOXlsJlgjMlFFYF9yfGlzSCNGZUEwJmlaaDs8JHFMNFJ6fHcoPXM4Nwp6dGtrPEpnM21I
O0hAJkZ7NWdCbm1vPGV5MVN3P2I8en5qelVoN0ZuSHpSbHl0VSh6bmMjS2VwJngmfTl6Ry08dHEK
elV9dDd3cGBvakw+RT14KW0mekJlNXw2czlDUEFXVjZoYGVWI35NT049PiE3Unh5QHxPaS08aFlF
dypwfjEqQWc5CnpOb0FtNlppWXhsQys1ZmpWO00rMjI4dSNhYWRBTz9IZTlEcWYxOylEe3tIPkxR
K2B1Z0B3P3A2PEwkTE1YWm5JbAp6QF9+R2slWFBJSndFLVc9bU0/fUZVUXNJUz54PjtibzU0cVFm
KndEZXc7e3pMcklXVWtUWT4kfnNoOCh6P25KY14KektsN0YhPk44d2x6M3FKMT96NkNKSl5aVFR6
T2R0SUJfKi1PXitCVkh1Mz9WIV56X2BQUHA0O08xaTRESUx3KWh9Cnp0NT55e3dabFhRVEg0eiFw
d0J7Yz49PUNKbWFYbCUoeW5qYzAkfn1UUk8kJnVJYk1VUnIhV25NVnY2MzQ4fVRBYAp6JSh9WHxG
O0FXZDhveGpBKEwjYHBqO19mKjMmenpuRyZIeipjQEA0MmBQVWckSSR1ZllkX34yPGQ1RGpDKjtM
JHYKejd4c2dRd2MoaHE1USExTipOeztpRjJUO1haMWZMaz97cipYcVlVLWxxJSRRdGBvPDlWVyh7
a1AyayorTGxLVig5CnpNWE9gRXpMMm1temZDWFNuVGo4NVFyaXBpeWhqZzdCfUc2cWAyNkxJZkIh
cmVlZlhFJi1qPGlMMFdHYnF4R3omdQp6ezkhKUtSUGtoZiZ0PSN1MDUpMSRUQXpEK2lEYjAzazA0
RG5pe2Z9QlFfR3ptI15icl9lanFAMCtnbHBjZH14ankKenJMUipyayRUdT1icGY7M3hvaU4+LWll
PGtvenpQWmwzakN8QXthZTxBWjMhcU5rI3B9NVQxaCRVcWR7c3lVd2tnCnojRVlVOzc8PT1uKn42
ZDh3XyR3SU1Xb2pxQyo/TU1sdjJaNnMtRGNMYD13QGdZSzl8UCV9Z0skZ3QxNWBmKnVnZwp6aC0w
fkxzbHJORjclODsybTUpPXRFRy0ybWY3R09xKjRmel4walJYSkd9PH1hQTlicW0oMTFRbksjQ147
Ny1zfFAKemplJUV7bW8xOXU7SzczK0NgX0FRSWNXUVNsbj96OFYzRDdnb2FCYz5EfEBSeGd+WkNM
IWd1PVk5ak94cCVwc0NZCnpIem0qaFNeWEQwPG9wTWY8QjF3U0hqR2d8bC1EWlJWUiVAdz5ZdCQw
UGpGP3pfd0w3Z0lBSU9lVVJfUi1CNVgkPQp6UWlVc3FIKyRENCNsK0M0YTI8dyEoY3g5KHBzdCZE
RiloKTk7WiFyd0lDLW1vQ2dJOG5YdDUpYHlsPnlNTFBKQWEKeks3REY1Nld9KiVwKEcoODByVUNS
LUt9eCQ4VkwwRXQxQjxvP0RwKWpmJDBMS3BeUnZMb3RITlNhMUQ8QSpySTZYCnp0KGRIPWxUc1RL
aHBudXYzaU5WZU9IN0xVekxPUGBKbUBibnFgclEpJDh2MyFfcF8ycCl2PGwrekRzSE05UVBFcAp6
cFIwci0ybUp9ZzVHdH5aQXZ+WDI0aWE7NkNDflhPU3tCUkJTUjI9Nyk8O2xoJlVZUkQxZ2BkVlpa
MFotO3h3ND4Kem80KUZYKnx1QUU/cl9xUTNmJWpwWl8kd21qT2ZMITlVVWo9IXw2M0soNzJQQFR7
bCZ9ZUVFYF4rSF9XUy1xP3B6CnpgOWVvZXVXV2NDcnhYLUtGeXVEUFdPSSVJUD52WFFnbytBcl9f
T2RyTyV9IUl4TjJ4PmhMMCVhTjU5S14mfURWIQp6aUYjNytwfnM+RnlvSVhSalI+VGkqWSZrbUBv
UUJPQkgma1BENVNoPEB0IXxlZno+blJpOStVI0hCPT4mI009WVkKekRlQXUqP285VFF5M2NIcm1Z
eUNKOVc1YCkkaT5OZHV4N1g7bDJ5Sy0manVkbFNteEpPMnNSZyRtNmQ2d0psYCUjCnpKIzNWZG1C
akA+LWZVYXUxaEg3fiZVWWJMUU00MDFKeEh0OChiMThjaGxkck1GJF5aMUphdmxyTEE/U1M2KHJo
bgp6eWhsOypodnZ1O3g/KDM/LWxPYjxqZ3lYNHF5KXFWQEkrcitpUDJDPHk9dG0rdD1XaihwfGtO
KGNKZCtRVnVASWYKekdlMHlYa2FNYE5LXlpRfkAle0lNeXtBUH5zcV5MYkNlLWRHWE1Kfns+QF9n
X1lHQm4xa3VPfEhRcylqRiMrKjJICno+TENQJj07ek5iSjM5Kig+VnpSVUBhMm5+eDNgbyp7KiYr
RF8yaU4lM0NTNT5ybDtTQiNCcGhQYEVgQ2k1RUhqIQp6eVYqSSM/SjRFdUAjQD9QKyUjaipYJDEy
dzAzdlkmRUZyKjloZVhFNXg1QnNANWtVYWh3JCRiaWNLRkgxaVBxQFcKend6aGghNT1WR19ifjtI
KUJGWWVqbVg/LVVue3l4YD5pY3lAc0dGKkQ/UEFCRjhKaSFtcT5hP3JeRUlhViFHQHJpCnpuMVFs
T01kJFFPVEBAVyshRTJpUmMhNGVxNE5PVmlpZ1EybndfYnFkeWVUe15HNnl7TkxQQTFsVWhQOSRU
WmtlJAp6KGYpUEVtM2JWVW9LUDhLKWMkRjRodCVfbzNAJmlOWnptcEs9SH0pJGY+SHVacV8mR3FH
ZDRZOVlKK0U5YUZxYUcKencrSzRkbmk/OCVxS3B9TmQ1PDcmVDNNWmheWDJjNGh2cn5fTSo4O2Mr
czVOZjtiRkE9eyFyUnJrWitiP3JUX3prCnp1TE1ncCRuVmp+PFh8S3AyWSs3YGBBR0pgZ2Z9KTQ1
X09VdHpMaW1XcFlYSD0tKmNMQ2hqYyNPITN7b0F6K0okWgp6diExTSorYTB8bUNCOVdRP3R4PVU4
fnc+Kjk1Ukt9cTlXPn5qXithNmRaR3ZRaWdOQ1hpVWVuI0pWZk5zVjM8b28KejkrO34tSXhTR2tn
b1JCbERkezNJTFdsLXJrbGdfNElFY1Q5aUgpVnBlbTw5LUdiYnFzKCE0K2RLaClkdzxsUEZWCno7
dj5lOGpONV43dE9BMDllUSQwYnR9fWBSX3pORTh3eWtaR1JtcXRCb0JQSTAlUUJCa15HV09XSHsh
an5teWJfQgp6YSgkJHlCKl58MCtHdGdtUVgqLTJ1NTh1NmZqYXYwPldyTjs2TWpVNHZtQTkyVlZH
e2dQbll4MXFrXnF8e1A/bGwKemxgREBydz88YW83cUBvd1VIWiUrekt0KCRoezlSMjdrX35xN0s5
M3JQOzclX0o+MjtzbUBpQ2ZQIXdCeWRPeUJNCnoreUQ4Mmc+TFJPUDwyeFNDb0MqMW9SKnBDXmh2
bWYmJE5qJndYRUt2Y3l4Sz1tV0BxWFA3ZGhXa2l0SEw2KmMrYQp6dVFPV3MrQjljJldXQi1ZXjVm
Mz8qckBUTl81Y0ArTUtwMTdZdUo3NnFjaiNZJmwmP2lrc1FfUms3KEIrT2U+WkUKemtyX08la1FH
KVBjZXlvKVc1TGJpQExoKlY/JFpqRzVpUG5WZ29jdWs5NkVIeyM+UTswIWcqcTlEa1VaYnE4IU1o
Cno/THI9KlZROG8oRk9UbWg7fG9yQERVOXl4blo7X2Y4IWp1Z1cxdHghbHJhI2xtXnZ7JUVlUCh8
SDJrcD1oa3ZVWAp6K3hoZClwe0YoR1FkdGZTWTkzeCo0elAhYVg1I3lEeSo4eVRlZ3B7dlVwdT4k
WFpEP31YTDd1WGp0VXBlUUs5NyEKenFrMG9YIVJMaUstQDk0OUBscUNnWmM/Y2woJl9LdmVxVkx7
NXBuKkUpK15+XztmbEJLKyVYNkFncnFFP09zMSEmCnpoWGE1RDx9Vig9fEk1bkNmfEVaMm1samVB
MyFgKitvMXA0U09jMWN7RFRVKDNoWXUrTFJzZChYVjFgdXJYZ1IxdQp6WHgtP2FXc0V3Ty1AMUp9
ODlvMyRjND12Ozw+Tj04WXZ5YU41XnFYTnNseWZGdGtLWldBayN5VlRTRH5hZkxRPm0Kem5TZnN6
VksxQyE9ZFhKPUY3P00lTnV7Zmg2Z1AmNmI7c2VHQGNZci0/QFJsdiFqO29xJTFDOHhMYXg7TytU
IzNgCnppflVgbi1vQVVKRDhieHBRSClAbTE2WEsqKUFTWEgmSmJxPmpgQmh8QyRwKzUwZ01AZkFf
UXkqIzRtNXQxSlp6fgp6e3BMQzZET2c9TlM2e3ctMzA3Y0IlZ0NUNkk9fm1OMHVEQVNJfnpodF5V
UGdwQCgxeCFVZzglblR1QFh1S0tDNDYKelYxMzcxfEk5SisyTFlmSk15SDlkbUwhRUBESSs8ZGNU
TFVMMX04NnsheWJ4JTtzKV9ZM2wqKmNvbXhoYjxsOUd1Cno5dWxoeDhXO04wQCMhOTR3QS19czs8
VD9PUk9zMEgrKFNePFhWZGhJYzVeSmllWE8pP144S1ZFWnNmQ1BBQ018OAp6UXRTbEthT1RPTyVF
MnBPKSE9aSVvOT1fOUNOPn1VLUpuKnBGI3hVS3pKMkByP09Pd0VRVFR8UTtYTERVTitOWWwKeiU+
YU8wTTwycHRpX1BUfWleQmlINnhKWFpudEQ7Km4hRGNfQEVDd3Vma2A5REV7eHIzPTs/Kl8leUNp
QChIPVUqCnpNUFRZKWtXUSFAQkJgKXt1ODdwJWVEWH5uJVF7V2ozR093bmwmKDxnTW5ySCUzMWBa
amttU2hjZlFVeVNRXzFRcgp6SXk7T35PenNFb1dUeX1ZJGZrNjFBQU5XcXl2MVFzMHhfNExOUm1P
PUBnZXwxQCgxLVQpM0RyNGEoKkVqb0pATk0Kems8MDFge0E1dS1ZRVN2RjV4fDYqeGo4ODgpV1Am
XnhVdSVOPj8wNSlBLT5VKWVpO34wO2lHTEJ3S3BvJUxHcyF0CnoxeTReO19YSHVOKGFWT0xrRTFC
eWg9bV87JmlyfmkkTTRJKHFXODsjc1IhaXYqeyV7UGpDfldqQUl1Wn1zX3thRAp6OEppN1dqbGE/
SFFOY35zZChBbFB7S3hQX1p+TXZaPn1+UiRARGQqYTxwb21KdWRYbjIjZU0yallFPjB1RXMtOTsK
em88YmNgUD54diVSN21ZQz9WP3VXQzMqR0xhTUBMJlkyajNMR3UhRlk7U2QtISlZV1VAJHNIO082
KGR1Z1NRcU5OCnpkaXxROzV4fSt2eXItNzdIbDUoRGQ1e287YmNoY0NJbmVUaG8mPHExa0VhdyVa
ZkA/fExFRl5wK3p5LTJLUyRvXgp6LVJINTtTNV4hTDxecTFMSWVmU2xzYFV6XzQ9PmM0NWskd0E8
fj0/dkItIzZlN2JETU5sfEpsd0I1eDEmSWheJH0KemB+eXpOYW13Um8mcWp6alA0UVdNO353KGFe
Rm5wY0R1YzcmITBrb0Q+UEtydz9MVUEyWldXVkg7V1RULUQmc1hPCnpsVExGYl5RI1ZfMD4mOWRV
eUVXb04mYU1ZcVVoR1pFfnw4U2Y2MzBGPkUlJi1RMyU5dnd2Y0tLVV8/ZDBFPkpxTAp6YDFxN1Jq
OUt5LVF+ezlkRGs/NHhIQDArX3s5XjwlUmoyY21LMGR2c29OUGlod24kc31OPks9fWxqc00yIWoq
dyQKej5uNmdMO3xmV0clNyQwPEl8d2YmQndrTnF5UlA9VHc5Zl8lNiVJNntpemd2cjBrQk4+a2ch
N2szX1N3XzsyVmc8CnpZKkUyYzlfV1ApNHc/RX5uYjUhV0VOQj0qXzxjelE7O1UyPU1kZV5TSUFf
UyEyKmt3MTZsPXtPVkJOWFhYak1XVAp6KFl5aDNGcWMkUzh8UGcjWntBY0RXanQ0IWlScClYUHBH
S3w2PV9iJDJgQCErQGpLNkkxeVFoRTBoan1EIU9ZVDwKejtTZGBNYzJnR2JYVlRRRUN6TUtlcDMt
Nzg4Nl8mRFJkYFFqTFVxMkFQdkpjIXgkKGY3XzIlYlNrR14odE5uSWhPCnpUcDZPKyQtTEE1O1ZJ
ajclbllQKz1BaUhfQnFFey0oSEwkKktzIVYmRVZkT2wpaVJ9K25SZHJldmJJbiE3ZU07Iwp6KyNK
OVhsPnx7Rl9pPXhGZCl1WUgyQEo9amxJaSY7TVJSamJaRWZ1WGMofndrb0BHI2xDOyUqT3ZASFYr
UVA0angKeiUxQ2JONiRNQHllbmxWMWhKY3J2YEk7I1JYTXBRVUxRNjBlSkZURl8kNjYrPntvfmF4
MUtWNzcpRUdtPkF8RiZpCnopSilTIStifFpZI0d4USsjems5VFF1dik4SChaK3gmfTdhdj5sQEBt
byl3JC1Pd15PNV5FPj8wUG8kcFVHQyEzTAp6Qzx2Uy1kc0ptc1IlcUY8X2o0R1RBfWl9eHdYb25x
LSF0I0I0QTZzNGw4ZFFfc2sxQ3xJXj42Wks3QFJ6M15rcGMKemY8SXRYPVlQLT4pYShRLXMqQyNQ
NzJTQXZjcEFuWEFmU1p6JXIjQ2cpMHNtfFByWFJeXjdVKG8qTTEwQHlEfTNVCnpTbEhVeGhNOWdn
KnI9MmdIVWJMZmtJTm0+KCgyOUhTbkwhbV8hI29IVForTXx7Y3tjJFZsNjVxOFdfeiQpMnJ8Ngp6
YUFkUlRkX0kkQWgoXjdQWkNhWTJOWVlXMXpwT3ZhIypmcDlrNlYzUkhtVUY9YjQxeDN1N2ZCZUpP
eU4kJm9UaCQKeno2VSp5Ynx7WWRlVnFadjZCIXJSMVVVOX1QTDdSODszKm1zSXpRaWNzQDJDN2w0
OUhEUnZgZmpKNGcmcCQ+ISk7CnpnTzhBKGh7MHE3YjQyczIyT1pPYk9EWWd1ZHFJRUt5TjBFNUBY
P15IJGtMUyt1UD8qZFhPJikyakRQOHVHclN+OAp6QU1ROShpJVpUWiVCUzl9XzIrSGtHSCRDZDZN
S3tyPW9JZ1lDYVJwYyVeV1RpNXZ6V3tNcGp4WHJReTlTRkJjSz4KelN4ejVVRE9sQntHWVVfaXR8
ak1fck5qdWg2WT9IPyRpSjxPeHVCJDxfU3ZITkRyOXhndXlXZzM/YipqfSlQUHh9Cnp5KE9NeUBT
OExjRFRkUUcwJEw0Y3E/V3VjUGVHIT42PHhTZ3s+ZWd+PUs/c1ZAYktfM2RmYHgob2dXd1ZMMkN7
bwp6SXNIU0BTeEkmJUQ/bzBCPVo2RE0xcTgtJE1xRGJ4NFhEIyZxQj5BMmN1OzBAazNBfipZTmlv
aUZ4dEFuemdjYTMKenBVdT00Q25uRmt5X2F0bmhnKkV8JDVUMGFoKVhsQG1LR0sxZ0BxZiFEIzkl
TS1BcVFrMTttZz5DQ2BYVjB3Q0FuCno0VSoheGo5RkU+YmNxISp6V1MjdHo3MDAjNHdGQkNZeS12
anxJXiVpJDgtSV5aUjJrbVN9SyU4JFM1aDE1d2VwZwp6dlZ9NDt2czF7WE1UI194JTFVS3JXcDY0
Z1dSbyhKJHxpZXJBRnR8clVINWY4P212SGp7NjNHKjl9ViQtanB1bkQKej1XIWg4ZDhWaUg1ZTRB
diRrJFE9ckt+NWYkam5pU3FZMTA2S3ElZlQ+Y2o8QGA2P203QDhxcUdzX04+ZWE4WkR7CnpgMCEy
NSU+bFpVZnQ5QmU2KTd0Tm5mc3dTe1VWa1dnSXtxajA8Q1plaGFiUF92PXpjTm8/JDFfNUlfR0Rx
QjlUaAp6IyQ2KGNOXjA9emtIelU/QilfTUEzVHRQI2VWbCRMLTw7YGBhY1Q0NFV+JD9eRmxfSlJz
MUkjQzBxK1pEZiZ8VGEKejExazVedk41R20rZ2wxVih1eVU9ZyFkKTxTaVYrcTN9cTtPJT02LXh4
eTRPK2t0ISozKUJgOHxpWXVWU2JMYHJwCnpzLXJgY1UmSTBfYTBoX3ZzIztwVUo+eD5MP18yR0BG
PmE/b0lnVSU0JFYmQTxAR25iREV0YmF4O2YpWHc2I1J+Twp6Pz04KHQtYGQmdjJ7STMkaE9YT2E3
Sk87R3o/YURRVjc5YjU4USVmdlkrOFE+MWRmbzw2dipKNm83U1R3RGY/UFgKej9XUmxKQ2Vecigo
dTN1Y017ZFg7akopJV5gcj9fYHRwYG9qcDYpUmo0TEsrZ2VAd21jYDhePzlSYEpkYyRKRHA+Cno/
K0R+aWFOZFZyJmphRyhFNndaPDklcTc/MWZIVClzU3NsZFdHSkdieX10cH4zVklRflY2UF5Pe05A
bX5UVXVMagp6KyZxQEglbCpkLVY2PmokZEY8WTtUUD5mUHYwdH0oVWgoP3U2VG5WWnB3cXtYc2JQ
YUxwRWc5MWpLSFROWjshM2gKejhKOFBiayU/fVU4JTRpKDtmO3JkUVVIJCtAZX5DJGZtaVlUbGFq
ZERQT2dHVUsycVFgYG9UN2I7WUtqaXh4cEwwCnpJTll7NWMlQSVZU1lebGt5MD87I3d3KXB+SXBG
WCZQQVZNPnQzfTBqUHRKdS1UPHBtZVZlNTE5RiV9bE5UXmxNVQp6X2FTRUMhbygjU3syNlJ0YlpP
K2U/dk5GcmtITD5aWTVjRnFUN1ZXRUEwTk07REcrc25LWn1sRVkzXzhpMkVZKyYKejVkcD4we3da
RzU+UnF6X2JubFpjV1BDfEMtRm8xXzBSI2A8JUw0S2pGVmdvY3t9UmZCLVRJbFpKKiMmYktNN1ph
CnpwOWY7Xj9BZiF0KW9yKEsqTTxwQSFOJkNyaW4md2JRO3YtcWVwfmtyRWhTUSVXQXJzWGtwMTg2
WVU2bjVzRk50cgp6UjlMT3FAYE9Rc155bFdpQjt5SHRNVDRHR0JgNGJpRDFBI1dQMmFASlBOPF87
VUhZfWlPJGV1XjQtfH1Tb3NYeG4KekV1dmZiM1h5anxNTHdOfXAoYE5WQUJ7WHVBfGgmY1l3NWwo
YmVZbzV5THRlcWAjV0FBNlAhZUNGNTJoTXBYMWchCnppIXJAOFNgQmcjbG8laWdReUBpMmtGdSsp
Mjt2R2RJcmR0VztyaiVUKnlzYlkhO0d9aSh5cUhuKXZtQ3RTSlNtYAp6dTtgJVFrJkolQExIal55
K1ZuSD9uUXkwKjJPSGNacm5qIzxJYFFqYntSWTJzQlZjal9ZI2ZndGVTd2xAX31LZUkKejk2b0Fh
RkV2VXQlPW8lI0peNSh0UHNQR1ZmI3BWanAoUjtuU0laODFmc2RRR2YkNU1WKE1weD5Gc05vfVdr
cSZJCnpTeXx9dDg9aFNRU0FfQkoyMk5GVStVOEp3QXlxVl9mcSZ1UzxNWmRkUElHSUEkSzRCKzg9
RCE5K0hkKEBIbHFYeAp6PDB8elI/RkB1Pl5GREdPQEF8cnU1aERFS09jWjR6aCFOeXQpRHZIRz9i
JT9DYCs8bTVMNEsxdnZ9V0tlc3c0SlkKelRkMjFDQkVPOWFadSlqYl98VzBRZmQ2flhlbilFR3do
PCtXNU92KkFUN2B+R1U1P014S25FejYkaUt9azFzTExQCno1bnp7VGsydEF1RWRtdF5Qd19rfUJf
KlktX3AzUlIwbTtSa1RtYV5BPnAlTWo5QHlVMjxhVFROdUhydiM7WDF3aAp6XkVySFRCcnl9NUpF
Rjlub1YqR3VCcF9AU2J0eV9HMDh6WVNZPD4pZTRLR2VZQHp7cnlFPGtfJF5SRVdHUysrLTsKejVE
TjdRb0YqaktyWC0yPzZkWmgpdEAtcG9CUHpSd2hLNkB8Y1RrPUJHWUNEdlpSTFlBM0tTTmRwZnck
NlArN2piCnokbT5XQkw+QCNIak4pSmxXLUB5OTVlUGM7O3crI24wQTJCQi1+LV5pTms+MkE8eCol
Q0soJlFWeT9LQSslJlVnZQp6cjJvMig9aUxrbD1CM2N6SUR4Rk54KHk9VEE5KElTOGExbklhQCQx
aE1oVnpOVG4hM0clX0RmPDI8KE1LMnRGPHoKej4+YEtjIWUrY1A+PEg7LUxkMV9qVitvbXI7eUs9
RD1RSzFtKD4rJlEhMnI+VElValJ6YXEte0Y/P1hWVGY0RVJuCnpsUXkrem1pfnhWJUluT2BBU19M
MEpLNURZcGB4Y31sU0YyZSgtRHdnWH5ZWmE3WUk3QSgpZm9yYH1XRXZud0ZWcAp6Mylocj88bit0
Jk8jRG1gZGMtKnNiczh+NVRuRzZ8Smt6a041IzgkXjNjQ2VHbnh5bzY1KXUrSlBTWndKTH50Ni0K
emliNnoqaSF1cGRAK1pMPSY8ZGhrdDcxQ0dQeU81VGF8ZHl9UClnJHw7dXBKakAzI0okZXkzekBX
Z0hPQl9edXs5CnpidVYtVDZ1JFZGaWtCfDJwZDZPe28/bCRJKzMtakZmWnJWY3EyYU8xTmU1bjFz
NGNvNFQ2e0I5UnFeKDM3R3JUJAp6PmNHbmpRNndsTjxTSTszPFR0I2pxejEkcHtlLSQqanI+K3FU
UD1eOTYqYytGM0AqPz9MSCh1RXZxKzB1aFJZJUYKejN+Xn1tdypkMmlPZ3dPKXtFSSQySENhMD9F
an42I0tqVDloPzlgWXU9cU02Xys2TkVgbDArRzVkR3gmKWhhfS1iCnpfSEZsbGJTejRFX3RWbmVW
P0l8MFElfnU8ZUt7OWAybH1EK1pKTW43X248LSNPQGtlamwqZTJoPmJzZFlOalY8aAp6I141eTZB
clhOMDc/fnc1SCtNY0c8PSZzUEMwelFmMk10ciUpP1l1c3BtTVhtLV55KUxyWVdtPFJgekBRZXBq
QTUKeiZ9Mnsme1pLOztMfDhWPHhSbWlWX2gqTz5xelY/Z1pJMiY0SShkdnZmVnZDSSljaEhpQXM9
bVBZb2FNWjlCak42CnpPK2toO2Fhb2BtTjFLekkrWURxTyEyc2k1VXxJfHE7RnV0KStsWH1HTl4h
ZyNYXzB8PUtrVn4jYWsrVG9QOykpQwp6cn4kQml7UDw/Z1BybUx4ci1CSipGKSRJNG9pfSszTnll
Mm90SmQ/SWUrYVg0PlN8WEFkNig1VEpNdkwlUDMlWDEKelkzWXUrLT1wPlgmPUEwRT85cD9lZihy
VkZgb0BXaCNYfm1sN2BjVXxjWUdGMj82bG12Jmg2UU1iSj9vbik5WWlNCnpYT1NCVD9CQ0k0eVpm
NT4mYy1Qej5UM2NvWT0lMEA5MGdIe19Ga2J3aHozZG1iOyltNWB6QWkjYVFIS0VpaXs1KQp6IU4x
YGFabTRPX05sa3M3TGIxVj5CO1k9TzE+IStgTntabTs2fnMpMFNnSXt8ITBCZFlYNDBLdF5qM3xP
JmBYdWoKenZjR3VvSXF6JFE5cFRkK3tManUrKyM2aFVjKmxgOUEpQ0FLRHw+RDIyZ2pBS3JnfU5F
RHwyeEImeTlUaTZoP3ZOCnp0JHBpRyptYUIxYSVxI141d2tOT01eK0wkdypneTB7Mjc1XjZYI0E4
aWRCbEpoSlczMStMYVFqVVc/dHleSWpuYgp6e3pUKF5eVXImSkgxRndkX0dLVmdRYD1rYEh6e2cy
NG1eaVAmTUV5JGdpMGY4UnwobH4wU0BDKnB5UG1heFAzWm0KeiYwOzlYcUUrc0sxQTg3OGhRY3Vo
OTUhT09AZkhOPWJIPkpPcHBPV2w0TDJGRykoN3lxMzVralA8WThjZWtSSD5ICnp5Xk9TS3ZPam52
dkRJP0QjRz1IfGs8e1N+XlRGb3oqSDNJYUIzP0F3bGJRSj1JVT19cXMjbEJUPGZjPEV6YXU2cAp6
VWUyaHk/dDAwUlVYVThtaDcjY14rY1JGPXpgPTFReWxMTHl6NkApcEwkaEtiIyNvcVpUPSt4Q3lm
cHM9OExZd34KemV7bT0waVZxKWUmWnxEN1RZZzZaaFN5TGRxciFyUWk+PCgkVnM7QFI1VGY/LU00
JVYrRS0rdDhhWml4UG1PWkArCnpxQlduI0tFaGlFZDxqKCFqSn59NTdEUHhDbVNDbksrQ18rN2hZ
fT12PmVRe3FRKyY/OTRQVktmdTRrS0FhRj9+YQp6QyRXdztUPGtSJD9gOEA2U1JUZFolYSljZVEm
UDV6VW5yQDYhMGM8Vk1qeHdhPCkqN2ZLR2hIMzxHWHZpazZtVG8KendkYShKT01nXlBGPU1SSzlw
PUBZUDlwO29YNGw4TkRjX2tneHwkSmZqRCQmdDszJENMLWxMbVJOaDkoMCFjOyQ9CnpfI0RBZGZy
bWI4Wl9vUjReVVVQWk5+aD0yPTw7TX0kcSE8RUB2UiphbSRrQyVgPn4zMj4+SnZUUyVfX2dndVpg
Ngp6aXNUTDlpcyh6WjNZTDJjTSVZX09JTTwqQXJDQnJ8MWM5N353ZXVmcVlLI1kpVmp7LXMoQGty
JWkoSFFycDZyfj8KenQzPWsmKDkqaHdlfGZGeUs8Rl9iRyhvJVdaU1E9VUp3Rm53N1U1e0RoMTBF
K18mc3t8RjYzUGA0S0A3fUUkPXFoCnpqTGYoTz81PiEocjBKJitHd2UwZjx8aDJmRVRiYHoxVDZB
PCE1eWc7U1leVV9VdG5iXnNDJFQqI1FUTXZ0Qjs7UAp6d19IIUpwU2xNfnRGbipmPXV5aGg4ZExV
Y24zKytKc2RgI2pCfGRXTm9tKWJFaXNUcmlNa3Q3MlRNKzMxXmtvfCEKekJIU1A9cTNRdWNee0ZY
X0xWb2VzK3YjWnN3bHFFRWI4VU14d3loXjh2TDhiSz5DK24hJUomSWhjYDwlOCp9fkBpCno5c1A9
MmR6K0t4aUspYEkrPVZNbjlhQ3NhIU5XQDU7UTQhPF44bXxKZnJPNlE8RVJWSm1WTzZUYTZhPzhl
Wj4wNgp6ek57PDRwTns1cWVwdFlvTzFSZitoI055VlktbjJQRH1tMmxXP0hxWFlITlJ2KCMkTkxt
b0JufVcwX2JiOT5SNnUKejE1akVXO0Q1V0sjdWE/Z3dmN3RMNUdISipOb28+YCVDKWAjQSMkN2tN
IzYhSS1rKT5BYCVwUmooTk9SdyYjP2RlCno0cS00bmVWPXhNYU5XVWBePDtMcVhMWW9QYyRqMElj
fWNvPylWYChmYkJicTw2OG84PHdMS01hSmx2KnhqWiNyagp6QCFUYE1KNDdXNTxXbCs2YXVGUlEy
PVRVcW5PdmJZdHVfVUpENHg2T3VUVDt3P1Z6NDYxa2peeDd9VXQ1eTxibEUKejtrNS1sODItWFN1
fiN7TGkxZiVfWTxgODFlTmJ4MSVLRF95IU9SUENvfn4tZGx7IX5LRih1WGxWTyZpXnFZUCpSCnpJ
ZlIkbzJMYyVaXlU9eWd7R044WndTQCgqUzxPfEVofCRrUyFLXyE1KnloMFF5NjclfXVvTGkzcnJ3
V0NxQEhYcgp6QSQ7R3tWYFRkN1hgfVlHd21QWjQ5aDRkN0lwVDlhY31vNDU/bUxDPl8+TmZUX1dD
Zns0NTdLejJ3QHMhRXJGP1QKelo+REs0dmR5fWZoYVU1JUM+fV9KM21gWitCM19kbHZ+U3N7NmFT
Si1RU3RJbTl0THF2eEo9RHpwQzJiXjc0cjdGCnpQLTM0bFl8LW85VmlfeTNaYUl3T0BrRnhiaylH
QXJvVj9OT2p4UHtgbnF3Nz5Bc2k0WDkqbn1lRDxEZFY9fEVGWQp6cUwkWnQhe3ZPOVhxVyZ9Sz1L
I3FsM05qVGhocz1aZXM1e35eeG4yXmsyJEBSeWtHU0FrPnd+R2h5ZX1xSU5YVnYKeiR3VFF9ZjNs
U1FxSmBmSDVAWTRXQGNyTTg7WFhOaUM5ZGlEck0+JjF7K2ZORmdJZW9YKiQwRzFMQG5XY3ZZZSkk
Cno8YWNqYzUxeTM7b1JITGghJXNAUDExbko8djJidXV7QUh1fD1zVUNnYXFrUDt6b2FyOElQI1cp
b1F4MlkpKXBrIQp6Qzsmfm1VIW5MNWEyK2c3NmQ0TythdmxgdGFJTD8kU30zdH05PU55cm4qNiFn
KiVPUzYleCs+a3dgSCQ9ZFZjKE8KelRnaXQ9YXE7ZD9naHc5WE84YyFMbkhMNT5DfnVLTUhaRUR9
OFlrI1AwT1lrJjNUQWlqd3FjdCZTMGd0VUZ7WWF3CnpMby07JHREPnVHe1VjMERNfDV6ITJOZlNr
JUYpTTdYc21ONVchdkBDV20rXlZpTz89U0tQcG1HblRSSTc4anFHNQp6Oy09I1hSe1M2WGFyTzxK
VVdWYClSSmVJencxYitpP2s5SzwxQyp3bSotM3hnQ3Y/SVdFMlVvY2VZbUJXbkFJRykKelZgWEtM
KG9LTkErJDttSXBPNkI4Q0syWmVOZWMxP0N7KnxfdTNoNjc0NjdhUmZjIXh+Y2RMezxwUkdLRjUz
ekUkCnpGSUdUWXl6N2ZCNngmQH12SiMyUDRkalhKNiZnUG9zOSY8dVpyYFBFZCNBbjBnTjZhejs1
WHp0aDctMzF3UktgRQp6UU5XX2tIOVU2YTdAYypTeF99eykoJnRwKV43fGNFUHJEOGI4PzE/ZGFz
NWRZNjM8UnRKN307X3Q8XyQlM1F7eTMKek9LQ21mY2J9U1dSP2FaMzMxSkc+UUJeJnVyYEw3MWV6
Png5ZGA9emdNfTI/a3NNOSl2TGw7bVM9QnM+fXhJYyR1CnpYbFNUR1ZEJENBUCNNantWQXptNnU/
Mlo1ViUkQVc/PkdBJk02ZlokLWFMZ3o8ZipWaVB+YG5iIWJmZXQzKjs/UQp6eCk/Pj9FJHViTFhh
UU1qdz9uJT1mR3lMfmxFYjMtMGB8R2dPYWFoOVREdFpkaCg/YjJ2Rmp4QEM8UmNhdkdWZ2IKekpC
I256JlkoVXlHPCs1Qz8jMG53bXJAQH1AQ3xIK3BrSERATFYlT21gKll3djxIM3o9aX4wTTE0Kzww
a2Jpb0dsCno8MzM3WkhzJT1SYCYzTSM4JXgkYSN3RnZYb0RFd0tZdiltflBLTjR4MDlgUGZtZmZX
eTU8ajZDKVFfWGs+YVooYAp6QWtKVj5xPVhQJDg2WChJZEcjcTdATmpjTzx3PGlLKjZob0J7K3U0
PikmaE0kXiV4M0hvTUI+YytBLUo1RkdoN2UKekZ9VGFXNTxjNnRJJCRVfj1IO2M1SE1qcHRUSl88
PVkjSyk3YDRUaTU9X0h2YlMqO3kxZjlXczZVfD9tI3JKTVRACnpgTTN9QW9+N2puWXIhWWFvXjgl
bHltYipgJElUNX1hfWlAO09OdVFuanMkMXxAKWlzdU5IcVhSX0B1T3hISWJ0TAp6RWhAR1FxUWIr
KzI0YHpNP2E5NzlwLURAJVo0WkEtbChNY3ZMKksrVjJhJGxpI2Vabit5PHxhWikhT3s4KW1fc2EK
ekR3IVV1WUArNDlVRz0xY1g9JWo8SWB2Nj87bSVjbFBzIzh6dENFY2BZe254YjcoSkpiVkg3cVRA
ODtlU0RgOWUwCnp4cUhAR2pCdEd1RSgjUClkbi19eGBvbDx0d1pISUk1Q1pwOEdRfXQjO2syQn1A
aX5TaylTdHFIYnxeTSQ3clc8OAp6RVRWdH5wa283bDNhYmchVG88R3h8MkUwX1p8bTtlem5fT0s7
e2tuNDNTWDNxO15jUXNQaFl5Qkh6T1BxN3BKYk8Kek83OyMoMSpRX1MjK1JvLXlkZ31MdUZVbis1
NzBDLXJzQEBoNWI2bDNWRkt0eEkpQzRjZ1doZCUwaztMfWRJLTBrCnpDRThfKURyR1NnJUVYJHEh
RnJYcjlyakllQHZVdnxAVEA5WXZLQ2NoNFVjX0VwKWVzRmNrV1pRYztnVWlGbyVtVQp6RGdsP0NL
N0ZTIz57M3EwVUl9O01IVWxxbEVqYEVHT282X0B0QHQyUyl6IyRmdyhkdTF4OG1yK3c/Szhqe0VW
VV4KemheN3NTJjRCRkk5b1lmSTleJWN2MDN+MT8hU2xrYGt0JG05OHc5T0ZWPWVGcXA8ant3Z0J4
YmJIXkp9bCRFbnR1CnpkalN5eEghanM8WXc8S1NtKEU1PE4xTnQ4TF93UnhyOztsVTlsSHVEMTlO
SjF2bUIzek8+V3ZKKHZvZF4jPiVScgp6fElIaTJpZiE/IXpBKnxOVz54diRaZjVVSTU4PCZ9VDVk
X09JaERyYmsocTRteUg0ckhgR0g4VVJUbjBZWDtzd1YKekB0YFZqOG4hV3QxaUBNJXB4QjNETz1m
NW1JYD4/XzU5MilwQCE1WldGJUdvPHtxMUQmPlArZXMoVmNkRVRwIyZDCnpKS0s2TTxQciF9eDFq
VWxLM0JzP2dxYChVZ350bzA9I0U/Tm4oT2hCTUNTUjkyXiVtckFgMmpJVCZmUEB7MWtyVAp6MzZV
YD4mS1ZJZFFEdzEtXnx2LXM4ZXZBPGE9K0lxMlRGaSZwaUJ+JVVWYWRDVT9AP34jOWE2U2FpTWw0
RH1yRkcKeiE0KlZobENSKlF5VWgzYzYyNmphe2RMNVY3TXBIM3dMR0wlQF9tUWJ7SklgQT8rTEZo
UGt9fTN7U3t7U2l8RUoxCnpBZjVgX29HQ09jeXx3S1VpQiR9UCU2NzZLLUs7TUJFVkxpTzdLZmZT
ZnlkSy17MGNIfHBwPmxWRG1fK0tGQi1mIwp6V2woVntrYUlmZDl4UlYlOWQpc0NgX2gwX3FMZmFt
akdkMmh4ZStocXYjUHFmZ0xLPVJALVAzeWpRfjA0endibzQKeiE3IXl3OXkzdTxeYTBWfkJYYkA7
SlR6bE0jI3IrdklyI3R3TV9rWClWZENZU05IcyZ2UmRKV3FxdGBhQipgO2FWCnpSaGJme2h5OWgh
UWNBN24hSUp4Wnw1N3ZWdlB1VT9DKDJ6K0Aybl5Qc349Qj89UGwqQHJKcT0yKSpnfiV7e0VXUgp6
QEwjXiNEWlB6dV5GSWJ7PVE+JlBvcXVjOUdWZSRLeng+anRgV3lENkxXMSg/d0JZTERBcjc4RkB+
MXB5PUdiZ3YKekQmJndUX3NPIypwJmN8UkF1K1JJKS03K0hocmUrZUElSFchOWk2Rm9yWWtnMj92
JFRtVmNAYCtuaXd9TWFeJntUCnp3Vl9XU1A3Ym9NLTlxPjhXNWBXN3BkWmt5TVUqSj5PYCpsTiVa
Kytiel8xYURIfCh1UjdxaX5mZD8we3lSLTMtNAp6Y2RNa01ffUEyOD1oY09OU21PSE9pWExtYj5o
Pk1NckB3SGp0YEI/Tmh2KDhNQ2g2P0RAYElzbXJke2QlSz14Sk4KekYxKlRkTnNPcEAyKDhZOT98
QEF5RzdSSUJzeG1aWEktYExeUzt4Y0dtMnB7MlNnJFJVQzt2ZlBZcUx3bFp0MSZUCnpqPSM+WmV9
TVcrPmAmKEB7N251T1IpTUR8Q3sqOW80PkhqMnUlMlpmISgkKGo3TFg8N0ZNYzZuQVcoZWd1c2s5
aQp6cHV1QVBqeU1majw9STNZU2F+V0BOT2dfPm9Hc2gxTkIzUUZQSW8oeHNpU3BVRjtpYkxmIVht
YklXLWQ8ckx4LT8KeiUmJkd5Pj55QWhGKXw1KDRgJnVkPWgkbGA9KitqU0duT1JWeXF+bmM+TFQz
UWhua3kqemRidVY7bnY+TW1SVWMhCno9emVnfVMjUHZ7SUJCUH1kKmYzeUUhamZZP2YlST9kLVM0
Nz1OWC0zJjJ0Q1VMJnN+WXRCdF42YSlfcX00TmRZdAp6SSYoWUJIczIyPWNqfSYyVExVd0xuZysp
bDB9cz1qNG1TPGteeDQ2aEM2Y3ZaMmp7ckRgRGxBOUAwY0JgSWcoPVkKenVgb0E1d1BXLUZQNzQ/
OStFWVprVDlZTW5nM28hNGs0dkBjZ3U+OSFzJH5HSGpMRXt9UG1aRWgpVC18e2k5bW8tCnpiYH00
K0k7VXh1YT9BWEFVMil1c3FvT0VITmAyTEl8QX5ldD43eDJ0T01TIX1WaiRCRm4qR3I8Qn5ze0tl
bHhuagp6ejZvSzQ1SDU2WSZhWHF6VWhaUkZHbzFoM09aZH56Q3UmWj5JfSg3QmxGWCpgQT50PTJJ
bFhBMGM4ZkRNNEx6ejsKekcxUXQhdmAtUmJeaDcwZFcmaE5+d183X1ZAIUVXIVQ1dWpvdElZbFZW
UVQ/Yk1oMmZRd15xUkBrUm1iVDZiQTVXCnpKYXBvKnolczkjdiRPIztWd2I1JHt0Pk1sazBtRT9P
ZG0xeV5PS0BiUn5kdkYqQXxKWWNIUnBgQjExSjI0JVRmNAp6NmhlTlpkV2BBZm9uM0d6VEl2enV0
fDQwY1ktZy1TMSVKMUI1TTtgMnFOKVNuQnBpMD01KG5FfElOTlRlKkZDYloKejt0OCloNkpXelJN
OEphVTt7Y2tadz5CTXVrdk01IW10aGQmKCNpSk1HVnNgKStFem1WWmtTP2x5YHN0ejMreW0yCnoz
Uk1eMk4kd1Q2eXB1dURkT3o0K0BCc1dDaXc8eHB6dHFvQ1B0VHQqKEo0QmlVc2FjZ00mYHR0bUM+
NUtyc2s9KQp6QzR0QV5MNlJaKih9X2spZDwhMW5uIyU8QCY9cWtVX3h7cT9ia2s5WkMpUjZqaXlr
QktMVCZGJk1qS1NrYCR4VykKei16V08oN2VLbXZMUHorek5WbDtRbz1BKVE3fkwxYlc2KFhFSnU8
Ukw7WllMbnNPOThrNVZkMlVASEA9dUpQa0ojCnpXSmooRz5GYVUhejFIVHV6eTs+dmIpODMyczNO
YCgoSUlxRG9GZDw8Zk17d2g3JXdpVSR5VX5NeD14SlVCNntAVAp6Qzg8RUdyd25RLXhNQiN6aEdf
dE5fQE5sMXd0NVNGbkhpNDVwS1dWc2FEKi0xdG4pMzZ3az98Wns2UDZnT3BwaiUKemJ9Z1ZXVDJX
c296YDZKYUsmT0A5cWhmOzg7SERiXyhWfnZAQWtQXkNmPWRMTSk0I3NrdX0kd1Y/UzAzS1Y9eGBJ
Cno7QmZgMyQpQTN1SUA2bCFjXjtpSkAhRExtSUFFe3diVHJWKC1OWip6R3c9ek1DSzZEWno3QTN3
IWI0Wl9VaUA3Twp6ciQoeUQld1MzPChISj58JTFBPz1Hc31KOVk4TCRYdU8hNTZxRWZvc15vcjF6
KVJPPlZIKT5MWEo9PzAlSTRNWEMKemxpSmMyQHpUYyFzVTY8OEpyTmNGZ1c1PU85bktpUTx6Ulkj
R3lsV2YrP3JfWGtaaSRRXl4kTzYmdEw+d1lFN1I1CnoyIX0tVVJ3PzAyeG9GaUY3OFpzdV9WSiNZ
ZDstbygwd2xUUFVgJUp3ekA3a3RBcHReMTB3QmxDWT08NTAoXyVTfgp6WExMJSpzX1V5bDAhVjhU
eSsqazE7RTw1UlFzTmpiRkAhbG9Db0RSO2g8Q357Q3daKVRFSSFjfkxWSkVeUGpVRT4KenFKX3hX
eGluOT5kfE4+X3djT2klV1ktSWZmfEkwNjF5OEdWUjQtcXtyWlpRUyVvNmNJby1eMkM/TWFyNy1H
UEdiCnoyZCNWYGg9YGc/TGY8fkdxVmpAeCh0UkU8R1VxKTxPUHR5cEpEYVopaWBOZ2dXdHh+cUpz
NiVzUiZSbFd3aVVedgp6NjtiKjF2UyRoTGJAYXpBZ0QmUGZCdFZCIW10MCRANTNWdiUxMzdyTXt6
aGJgVVY4VFUqc14/S2lxcV5vNyNQaF4KekoqUV9BIWNnT3VtVz4wJlZ+YzBBUVhTajNCbUtLJWZE
ajxjKkxhQUlpQV95dlN6Yz9OPVQlanNBKUtBWkZxTyVyCno3MjtXKFZTZm9qeysydF4pJXtabT0o
QjFhd3MxQ3dWO2c0KT83aihKQChMfn5sKVVHajkoekNGWUctTF8xU3A1VQp6K358IUtOdz40VSZJ
NFV2aGBiYHQzSE9Oaj1NKzUhZVNNfl50Z0ojYkdJZlB+SitDIzdKWEgmVkRHeFl+XnB3d1oKejMj
TVAjMmBTfCN1RT1YZk1Gd3FzaXgmdDNRTmIqUzFAeWJOT1h3QnhBUUZrUmROZyFvXzNgUT5aNk9Y
QXR9WlZ+CnpiLVdGPExrVjM3UCozIUdwbSFIY1YtPXtBcntacGNAY2E9MnNtLTl3TEA+cVNsMGlE
dF9vWChYRCorNWl3ZSFrewp6dHZzKURiRHpSSU0zNWpFX15JZ0x0SGk7bSM5NndMJjA9SX5ZRmM1
Z25TQWp5aCZkN2g1ZUVvfjd0T3FyUnFZN3sKeiMwJTJCRlYmPjclcmVVPHVmKmVvbWE4aWgtVmRj
ciF9c0prSHRqUEdOIW4+SW59MUIzRWNHO3hfYXpMWkZwM09+CnpnZm9ofTNNaj44Ymo9KXduQnZe
b21PYkxVR0YpPiF4Z2NHK2E+Zk5VRUNHck0xMmM+KE90Nn4rQT1ENTk3cHMmIwp6clNVTl5GaC1W
Pm44NWZYYS1GekVmcig5Mihud19QYTd1eW1hQnxLZTl2JXVxKVVmVXxpM1oyQE9JQnQoRDdidTsK
ekhuRyYxNm02SEg9SU1rTFl1PiVzRFJuVF8rfSErSG10enwqc0s4PGZPI0U7IWFNM0V7e0l0Ymdn
dmJ1N0p4fkdpCnopTmhFdkFXd3NBWWV0NmxiUnVUZSExdlRxUjFCQFkmeTRyMD1ZZDNKPCFaZVFH
ZklxZWRVeTdlKiNDSDE5Q2l9Xwp6QGRCSzJLUlE4WTJSU1B8Smx4NmUzaiZ9LWdXISooejlsai1D
Z3Nxb0xkMngpc0QoeD1tSX1KWW9UOUVuNkFMS1AKelVxd2Z3Q2A0I3RXYj1nKlBqVVUhb1VVMUZ5
S013IT90QyNEOHt3KiFXNzA4SEowYjZNPyh3TGRMMHhjVXIwPEdICno2M3ZOeStpZVIqMSlXQnxv
SUhEV0d1VHEtSWEjNjxqI2FaSTlRfjZDTHVXLURTfC05cntmYVk5RH5BbVhRWV5aSAp6SncjSUtC
Wl9gYUlKYil7REpwSjJuQEQhWXhWdTY5c2c7Ylg+TXs2U3VNcmt1cVIpJHpTfiQ0e0M3TVR8QnM/
KCYKenlWP2kybUh+cWZwciY3Mk9rRmVUJGhKdyskKkckXi05KSVkUTA9N0dhMVpEM1ZiOypzRUd3
PDNTKFhiUHU0LWVhCnpfdm4+RHZiYSNfJXpII0w+R0lxfjwrKyVRSW1iNG9tQW9CI0BLRDF+MG9V
YERmLVZ4eTg1dmw1OD1GeF83bD91cAp6YnZgWTZrTmIme1h2aTR6PSlrVVRSK2cqe0lqWkJ8TXUw
MTExeD5LeVgmc307JHlZI3JKNnUjc2NOI2p8XzFHcCsKenM0fXNAX180THUoJCRwZEE3VWZwIyRB
bzBJWCFpVjx7MTRnQ1hMS1BeeXwxNHQ7SnBDb0AqSmpefVcjJGJ9Y09ACnpZUDRvMWtLWmd+O2tC
ZVl5WmtKcEBjQjVrWShRR0N3ZWh1RCM2cUgjOUEjKlAodUA3TEFyNWdpMmQyP28wXjchKQp6MGpE
XngkWTtjP0lsVz9vd0dJNXhvNnN+SDtOK0YyQ08/NV88ZSsxd0NHLVpUbUZOeWNeXnw9aUJlNnZM
O0diQTkKekptSVhKV3d7JFY/R0khYWgxOEM/I0pLfkJUMytMKXZfPiFMPlluNEd3RipfYTA4MD9F
RjlAez0meDZrKDx8M1hFCnpIYkotTFhYMCtOU0MmUnxyYUYzN3Z6c35YUX1jJW82SyQxZzIhcyp7
X147Sig5SkdweVkmclRoK3gxJUVXNXk+WQp6T0M2IXRWJmVLUWNgO2pFUihTbGBkPX5Ac1Zeb2NP
TlBme3ROdVRKKm5ebl9TQiFrQ1lscmReKVY1IUB7UmZJdl4KenVDRHc2NXglZTRJbkc2bGA9enVP
T0lFTGZZZj9+R3I7KV9xUDBAJH1SOGxnJkI9JGN3cz5TOFkxSmt1fGw5bHc+CnppRVVwYHpNbE1z
UXp8SVVBVHt0RVFfRUJKPiNpKlA0NHJ9PHNDTkdUQntgNVY9KTU0PV5vOElaeHshSTkzYWtTUgp6
ISZmayk0Zl41MFl0d0B2amhLYT12Z3xWVDNsYDckJnBFfVhGST9EKj0rJWpkSV9RPnItTGJNKkF5
bksqcGdrZV8KemZSe2w9bUApTmRHTG1TfCFVTnZ6MSN6Unp0eEp6dng5O0QhOWtpZzUzJHNZSilw
eT1WKGQqb0k/JVhNeXM5PSF3CnpfYG1yUlNON0hQeHV1bWRxY28tWlRsa15UNzhlVVJGVSpafnAk
I2x6O0BNP15fT1duR2Zuczl7THstRURKXyF2bgp6OUNYYFcyMSM/NGQoM3JKIXFgY3lefDxpWEBN
SWtTPyFrUGt4VXIhU1luPzh9KUNaI3R0LU5RbU9RM0JSTiZKaGIKejghdW5KezMxNUMhWnw1JE4/
Qkx1cT9ne0I1PVh9eHN4MDJZeW5TMmxYZF5HJE9JJHpqKSR1SXs1TTFSbytJQ2soCnohWlFvd0hS
Xm1+WGJRTjR6TTFaOVF9ZHFZViVfSGFCVEVqdFFQRFBVeTMxQyEtak4zMy1iV3YrPzhndlRTJThI
Wgp6WkJBOX4jVD0lP2ohbDg7LTtGT2JZJnFlej5QfkQ1SzttbTIlTDBySGx3KSN2LVJ3andlVjFw
S18hQUc5RmYyaEMKelpCYXE5JFdYS3xsVWkrVXQhKFRQay1lY0MoRkBzenctPFg5dn1mQ2QoVGg0
SUgzPXZ0PmxhLXQhaH1UMl9EcVd7CnpEaiomMTU/P0BuO183U0gkdHNSazlLcXwzY3hqUHtuPUVL
b0ZwcFc/bDwhIyFWSkFQWXI8WThTUGJnI3YxYmAkdwp6ZyF+dCNUQTVOa3FBZT4mdSpuK2UheXdt
Q1Jlalh7X1JeYHFTcTA4a1E7KX5OTzheRmtHMypmT0YrdEZfR2FsQmEKemN1K3piYHVkVHNBUzw3
WURaRGZwQUFYfWhVYjBzRm9YXytnYz8lPy02ek9Qe3NNJT1hZkAwd0soRmdYMmNCdnRACnpzWUE8
QUZNO0lSMHZAc2ptYkNMMUU8Nk1MIWhxe1U9dkJje1FLPHctTUNeQCpFaXE9cXNsWE40UmFBVVdx
fDJ8cAp6S1BRfTlWMFVpP3RyP0h8YDZeYTlEdXd2LThCamlsTFRoNXNhP2s9U20+USheMXx1YURw
OWBHTD4kMWglVylGb1QKejImK2gkciMrXl5kTmlVeyZLJVYqKUYjYGFMVk4lOCZ0SmRaMDghfU9r
JmFmJWlBc3VpK15XZGdJLTMxQnhKeTs1CnpsS3QhSSFLSiNIcFE1ZCpVUUVOcFMrdkJNIV4xcDAl
SG8pP1Ryb3hYdm1nP2ptKjw+O21YeDV0b2hMKFBpQVhZcAp6VnJYUjZuTHsqbVpzaEFMbCRacnky
U2tSKE04ND1EYiRtVU1JSWczcThBOHUlYmJCJCFZZX5xbCF6TCNJdCo4a3cKeihIMUU4Z3E0akMw
djsrMkpgWUo2WH0wKDEmYWArXlUwPCgtKCpNb3QqRH1HT3BeNH56SVU9PlArJUtzR1FFUH4oCnp0
O2shNW59UXlnb31WWHZnR19Tano+NnNIYnMtQktyQX0/RjQrM2RZSWRQNyh3JGdHNUNtY24+UjV9
aD53e1BEYgp6PkFVcUE+ZCFYUnlseHIxO0s5V2RYZT0wSjBnfjQ7RD45UT9QTDYxcmZjLWZUe3RM
TjRya01Fbk9eVkh+OGZLTXoKekI1THg0bSh0ZU9IZ3pzOFY9LUpsNHsme35KMlhqdUMyTlBjTUh8
RmRMem97PVRzM0pEblU+K0FlVEFrRlh3TzhxCnpYX2pDPCs9bCo0dXBrPDNpPChFeFApO2UtREZ0
dTtASnRpaDdAJDE3NlQmT1BVNzV5VjY9JmkmVD1nJSEqM0lWZAp6XnZtMG8jMzR5OXktRG4mdG07
VGNxSFd2VTghO0hAMWNOPSFWel5UTypgPGEoVF5gRCE5aUdiZDx1YElBPH19bDwKenklNm9uVDFn
MF57TjE5aXtISH49V08+cjV7endkcjNUTkduPyhGPE5NSG1XVHBhdWJyYl8qRGV8Q2o+TlYrKno5
CnpAXmlDdStoNUxFJWR0YF4+NXkyPCV0c1VBQkVKKE87JWJGQHRtbF5WOWYjQEFIdkNGOVV7VGpy
VlV4WXRxLXpsZgp6VDhKYHNzSEomNjl2Jm8kdH5oRyVAWHJfQy1rIz98c1MhWDdPMkhUdksxajxU
amFwazxLU2hjY15zS3ZpcWNkZFoKel9mTiQxVTFCYmczSyh8MDNoZVZjclNHelhFP1l9S2M8IWti
eXI0KiMreXR7M2VxdChmIUA2fk9NX0owQW5GR19wCnpyOW1MfU1eUkMwN3FzTW4tN2ZSM1NOTGNC
SXVnZ1hlbUZDRTlxUyplYFN3bzZ2IXM4JnEmcjZLe2cwc0E9Pk1PTgp6PzdMKWFXZEgwK00oQHUy
ZkFeKVlKVTtMSzxIIUxjdndBMi1NVj4wS1FoQmtfSyoycH5SZXpBfFp2KGFUXmpWYFQKempsMiFl
bWBKaXhGR34jbVczayY9NmhmeWxLISNRbHQyVWFLM2hzKmtwJGxiRihOeWtnMjxwdEE4NGBNeDNF
JDEyCnp2VWY4N3tudk9vMDgkR2cxMX01UUQ+cWBIX0F9JnJNKUg/cGhte1VtbUpEbTBCbjFUQVhg
S3JvemNJOWpqcyN1bwp6N35NIT9LWUFQKWdsdEUwVC19KSMrJEImVHhCbmJRN2EjRDM3cytheDZK
QSEtMDF7N1p5ITBLZUZEc3FxcUJTMXgKekV7Y204c2xUO3EtQkNhMzxgNnFESzl4YClDPzMlaFAm
YG4oPko/SEZ3c0Z5ST9TaHczVUZPdH1zbzFgU3RBe0h5CnozVklnU0VhJDkySl5eOzlYbGI/ZV5E
UCFBRSlGbGYyeDNKISMmOXUpZzJuSD5FWlIhe208OXUpbnJYZEo/eHMwVQp6N0A7SDlxdUxieCVL
aWp6MSFJZnZBMUZFMGw1aF5NOHZmajI9X3shMkQxdDJxKmRHZlRvXllBTG9UU0hMVktyfmcKekMr
NTQ/S1IlJDRpIWU+YFI/fil7Ulp1Pz45M1h7ek43TnFpNlBfTWZrZTNjQkp9Kk5QO1poTkNWWVZJ
aEwlMSt1CnojKHdxbXw4WmR3X3MzVnY3cktPLT56PnF5KXp5VS1HdTRsSV9PQmkzJTMjREdCKCRW
bEs/TXZFO1JFYnpwRDxDegp6MXBfMnEmbnRRNW9ifmMjcDYpJkdgV0EtQmp0ens5JUZ4cXNwP0A2
emFqNnVENFU/ZCZHUWd2STR3QntKRHRAfmIKemlPc2FBaSFKe3l3ZUhOTlFmITlIYzM/SlJrTTAj
UjVJTXR+WkRqNE40UU1VJjxRI1RUTkUtZ2ZOR2AlKlAhZmQjCnorR1lRbiZ2aD9QLSR6UmUtUzUl
Skh8cFloQHxXRTAwdTJsbEJTZUNjZXM/OWR4P1pmN3E9fjRAVVAmc0pHciFrdAp6RlgzcTJkfUdt
ZWBuMjZfaUtMZyUleENrN0I0d3cycVJtbGxVLShERyZjO2ZQXkRpYlE7ais3I2w9WkhjT2k5Kl4K
enBaMDJwI31ET1N8R2d0QS0hUSN8cDgmfWhAKk95ZGReP1haNn51aCt1RDxsZVNCZ3EpYjA/YnhA
Vj4hT0tDcnAqCnopKzR4cEEtdkxVTCVidiFKXkg2JDE7MVp3Q01yJmJnVkJxdTlHamNfZz5LRjlG
ZD03eXhgJV9BMWk1Q2xYS2wjfgp6VTlRc3VRLVdjbUxCckAxJHNMUmhiQX1zNkRJeHF1IXYoISRP
eypxQipyRXk2diMye0hRb0JYSEAkJlRSe2B8eV8KelhaITZYcEcwaHA3JlZhVmljcyp0KH5xdHs3
aX5kcmNDRFUhTClDMCpQWDduPFVXWGhUZ0F6R0w1NiNpZUNzUjJgCnpKV2ZRcHZaZzZnMz43cilA
JVh4eTt3Y25TWjloPEY0JVRIJV9AR0VAUG1jTWQlajB1aS1SOUY7N3hXQHsjS2p7JAp6Nzl4Nj49
ZDQjMjc+OF53S3IqcCY/XylzTUNsVTJCLUlDd0ZlTXJJTj48eUBOOD9AQy0/azlETkMoUjJVNEZh
e0IKenhUamUoVThQPm14dU8tfWBgaStlKXl2cX1qWmRtJUU/I1chSCliUyskXyVpQiNnb0NROzN6
NUlmZS0wJHFgKSt1Cnp8N0dYdEc8QikhWDR0ZlR6R1E3flo0dytQQUtZZjFjcVpnO3QtdGJWcnN+
JWNsVns7QGs7V0x1eiMwJGlaNmUmRAp6bXsmIU5IenlKOU5fMyFMMWt9dnlzNGg2IUA2I1VyWlo1
Z0JtbCNiOVh0aUFGd0cwPVZoYWlaX0VaJjB8RnA2MzwKeiRFdkVTSEpSJURXcDZMUkRNLWs3QFpY
WGlGaVkwS21+SThaWFFMRX5QUXVPeT1JflBhejFgNGc5OzFie1otdW0wCnpRZ2tpdy1XJVB1YE9z
ZHptKUA/MUdMSmtsVTdHcF4jZHhJcjxZVzNJNmA5KGtTS1BhSUJ2YGx7KTtwcFlOYiQzIQp6RE5g
K2Eobk5wejNsODw+SjImRUdzUDB7c3w0d3lTUURiYT49JXVteEBmfmQ9e1FSRnIjTkIrVDteIzYj
NmxPaT0KekppR2ZuQkt3UEshTXB2dWRJRlc5NTgpengzV1c9cD5sUz0mX1hEfmhhS1cmMjU3ZDxy
MDFAbnskS153N2VpQ3dtCnp5TjNyQUJWeiExR1Bza292VWI7bTk0IVNHQG5DLTU4SEMxN3d7KXtX
bmA5UCNlajM3cDQ9emdDcEhZPDdkcU1sSAp6aFF6ZzF2P2pEVTg9cDtERCteS080ck0hV1ZzRHRC
JT9IcW5zeFVka0pacWk8VU15VXRWYzdhJEdWVllaYkJLLU4KenVxeW1hIzFKS2RFRWVgJDdEaUYp
MUFnUHgrcVhOaGFpJCFkNCFvQmVfN2stJS0kK2A5eFY8Zj5mbUh7JiFofWdSCnpJN0c1JT1MbE9i
ZFA2b3hkQ2N4TDtvRDBEeGRrYClYcTx0aXFnNCl4ZH0qT3craVJyZ0dYSzRLcFkrYz9lUn51PAp6
aVA+OXJWUm4+eTdzaXVrVU5LIThHK08+WEFsVDkqTyFoNjFJZU1OeUY2VGd6XiZgX1EyRzE3MG0o
elEtSH1+SWYKell+SUR8RkBaUEojZEtAJWR1anxrRXlHWW5Md2kzfHE1RFhOYTQoYVJ0VXxYQGJ1
YkMxT0pMKjlIaE9fZ0hhMGRXCnpVOEstNXRZeSZBLWhPM20pcXwrJnAtPDwhJjJoSzR4OV9CKm4+
WFpCKmxxI35uKmctc2Z9Zm93VVFyYyslKnYjWAp6bTZnNzVAfHkqdkcrd0BwR3wrPEgkJjFNJGg9
eWxpQ1dERVFpZlomcitPM1YtX2chd3lRamF8czRkUmBaNntQN3cKemtefDxwdmEpWDN3KFR8aXc7
M1dec2BPQVlpZXNIWT1adDA2YkE5TEQ0ZSNBQmhicUJxWjU4SCMpNG5eSDtXdVReCnokMFNkMkx9
TE5XdGFgT2ZMcnRBKXRnYVZAVEh+SS18NyNGeWA1c0d4Y1lKKUI1T0Q5X2ptS0NNaF9VaCM1KXZ7
cAp6Tk1XWjVmfVF3Vm0/O00jM3IlQ1glcDs8VXMlaTx4YXNYNE1JOU9qfDZmOEF+YTh8JnM8biVU
YEUjV21OVlJka1cKelI4JlJDWXFJJV5PSDFtYCZjWnwlTD4rTUcqcytIPFp7MGVadFZ1KUZORCVC
JVVhS2RsczFoXnxxZiVsb3VjKXs+CnoqSX11eyhxZWc+bDM1fkxSMzl7Zk1PT1J2KmBHKEU0eTtY
LUtUZEZHXjw0OGkrNk5EITlFZEwmbmIpbkJrazxuNwp6ZnwjaUdmYz9+OF5ZaCFsaWd8XlBsbUZ7
UWdhR0QkXlhBT34oNjgqRkhKclM+azlAWjZtND5fdkdvYygmI298QjkKeiVhP2ExYWt4OFdiSlEo
TlgybC07Y0F3KUtWWkN8QFp7NXtPPGNZV3FUV1BPVTU8M2JvXjJvcjxNeE1SU0ReXj5iCnpEU0JT
dVBVXkRKO3o1P1J0eXY0dzR5SHZwNkBqciZXQUQlMFhYe1dZd2tNQkB7OUcwbC1SPHRgN2lAWUAx
dXgmfQp6azVSTDszcX0+eks2Z2omKkhsKz9SbnMwYCRJUkB0JXVEdEhUSD5lZyRNeUJ+Y1FHKzMk
JFQhcTZSbWkrRVFqTDMKem47aXlURTV9I0IlfTt+ZFFHP3hRdkBgRHModSlHX0xUNT5sK2d1WUlQ
WGpvKUo2MTRJPWUxZndKZG5MPjhPPUB9Cno5dipqO1lUQlVscGZwbzRHWlFBI3RBbnNEP1ByQiFL
P29MKzNiYlhhQWNMVylhZU1sRk4tYkpWQXlOPWNzdzYxfgp6MkxiZnsqPEA8Z0hMKUZHVkk7eTEw
d2MhV2w5MypVaDIxWUpsWD5yazUrdENaTEZNK0hKMWlfTFdQfXQxV0FIc0YKelVjS05JSk4+Zz55
ZFdWd0E4KUdDWCM0VS1uXyN8SFM2QT0pYFNxSUJAamNzeXdIfT9YOTFJSyRacntHV3BPdXZ5CnpP
TktVVytWcWFVVWhFYiFhIUdnK3IyT3xDOVNvJTNLO05laEp8WGt8PlVidzVDNTMxdFdvMlV7NkxX
VTNUQ31QfQp6UmBBY3c2fjs8Q0xqPD5aKmRISV5eUCNwdTJaU00qelZJWUckP3hkR2xEPjIpU30l
SnlJKiZHRTRzaXUhQ28mUVUKelNpeV83RkxIUGM3UHVEYiFAYlU+ZWZCYntvYCpgPmhka3dzTWtY
P2BGWjZhTz9SRTF7YyVZeEFkUlVTLT9ie2l6CnokKityLXpJQEpQeGBXU3RgMCRxQS1yaDUzJlVo
Q1RoPEArdXZtZ0ZebHdpPWl5U3NAbG9WJU5IWWBkdWM+bUEhfAp6eCVLdzxzKG1RQC1lQ3pzWlZW
I34xWjZtQmQ4WFRhUnQyKlhuNTxVSkAyUipYYDYte2VVQ21SJEJmWGp2VGJtPUoKeikjaGZrYWB+
UXdVWGxTPCl3c1dGb3NpUGJyc242eHR0eGdCTVA9MXxjYSpiTDNPNmtATUBrc0BONTxqPjxJJjRF
CnpRTyFQWGBjPytyWFdrVVhTXztsQ0Y0NVc5d0JDLSEtMElkQUpOQnRFdnJ9KXp7fnRibEkwb21z
dnp5emc3YDEzNQp6Wit1Pjk4PUlyTHkxSk5RZDs+U0N3NU1teVlpYG9BQmpBZG88N3BWbUZ1c2l2
IUoyUz9jQVNuemFMMlY/eHB3VlYKelNRckNYY1ZEPUBXYVErb0tQPGcmPExNfkAzRE4yWUxPeSVT
cVlZZUlXLU4/JmRQR2piV1Y+fUZPYnh3KilMUXEoCnp0KmZnbXVSPjI1NXR6eTQyTmZERCk7WWcq
SUthYTRldD0kR2sxYE90ZWpxJVh1TE1kUm52SW99bTAjSGVpaT9XfQp6KDYyJmR4a3tQTnNpZFI/
RWBrQ0NHdXJqPDBoZE97I0ZQJl9ocmpjeFMwSXgoSnhON2h7e2l3aS1sVi1uJVlzKmIKem9GTmVk
eD1DTm1idEV2bGtDO3dUUiRmakZVX1dWU3hJYTgxQkIwdC1hcEJXS3tjbGVOWjlIe1RGJHteOEs2
Uj13CnopailEQSt9R0ZsaytyKFZvb2JHUXdFSVN0Nnx4MShzal4jWmMkNExQb0x5YiU4SFl2Vjtq
Sm5kdX5yVj5gbT81dQp6Uit+bVN3aCt9UChkaU8wTTA5UV8yPTNhbGYhTFpkSiFzNzl3UUBxQ0dT
KCg2Wn1RXmR6fmQ3WmNVMmIzPVRDcCEKekBpfXVMV01JZk9ISShDcitfZ0U8X1o2ZUZwNWBzcml0
VFM2Y2lsM1I/Qmx2K0BQS1J4cithI2AteVZ0b3FfIzg8CnotWTlGVVlDfUprUSQ4Zjt3K3UtcT9y
dVV3RD1ZYyVMWjhCXnpmVjNsYTcldmZ7JHN+PnZkUXx0IXtuTD9scGpWbwp6RWhxXk4jLTRrMjZF
c0NNNjFNRHwpNngjQT9tYHpESlllMCo2PDdmS0ZibmhAT2JKJjg4ZCVzNTl3Zn0+K316d1MKenda
NDJJUiVgYE1HZy1mbkxwQ0s2cl9Lb0sxITB3Um9mK0RJJlk4c1Y8Szx0IT9qXnp+Rns7SEZlfHk9
XlBSTnBMCnpVb0VQaFY8NkAqYiNre18hWSlMJDNiNWNkNk5Ablg1eXV6X2NeKnpnaykmRTdfV2s9
d2smJShWcj5EeWgmcnB+Nwp6Oy16cVFifHcrU2o9dXF6V3lXVWwrZ049Pkh0T3h+X3I9KUVTRmN+
TWs1aGBeVFQxa0tJX1c1QVJFO19ON0VVfUAKenFpPks1N1J0KFE+VC17KGRFSloybX0+VSZLTzMw
UFdze1hyPGwwVk9sM24mQkNyOE4wKndgTEBHdDxMdUpLKjUrCnptMD4qekJpJmR9TmwjMSVvZW8y
a0U2KFU9OShUe1Rha2IrXnU2OF58RTNDQTxwNUdaYjlJXylIU2RZKH1ia090bwp6ZH0ke2pONE5W
T2xhNis3QTc5XmYtc1IpZztDIVckSEhgcn1ITExpMiooJHdfdFpqd3V1UjEhRzFJeytLeDhLOCoK
eiU8WTQqNG9lKlNAJGtOWVEqNnZiVmF0antkZCpmdldoWWNBZjN5MkN3P1dEfUoqPlFMQlBCJmIr
dD51fCt1b1NICnpzfj9RMjkpMkQ7MkcxT1A9RWV7KXBHdFYtJEdnPzBMRjw5Iz85eW1eNzZHWTVV
eUVMPzM8TUNxSDFXTTA4OV40Sgp6IVQ5fSRBVkUpRXl+Oy1AZXU+IzBnfV5zeDF8cGhiWn5PUjJD
JD9VI3ZHPUEzKV9UPnJwTnE/MXdDIXY1MkJ1fEsKeiZgLUIpSTxpP3JNSCVxbzVVdDlnRExKV01D
WkJjTlM+LWVGbm9kdG1va0NFdD9hYU5ENilGOWJoR3doWXB6XjdHCnptdnIzSEQoaHdrRVVjRXZ2
Jig1bnBRMHEwNW9iU0NHSkUrJF5TeSt3YllifGxGZVdDTXpEKHFlT0BeU3YlJSklaQp6ZX1rbG5U
UGs2OGVrbXopQSNieE9jTWIyY2BaLU0xJEFQMWY/MFRgT2ZXTXR0ci1DY3t2ejUtME96R2Q0U1Ix
T0cKekVrMEBsUD1ZUiVkbDFIS1ZOeW01Q3RAMEt7U2xkfTxFTzNOelF1ZGl8RT56biRseHo1RWNC
MU92UjZyWlRqPU5zCnoybEFJMWhpbUIjNTtSeiRedH5CKFVRYTxgNEV8SmhjbDRWI1RSPT5BSn0o
MTtyTld+K0JRR3h2TkMmfSQ3fGJ2Pgp6NXdjbyhOVipNWE19e0tUbkdkTFlSV3ZueWZYNHxZb3sm
XlhxP05eKUpfbFFDWWs/OzlHWlpUO1p+I2ZFcyM0OHEKemV9MytFb0ljPWQqUHIrVmFnUyZeRD56
S3wlUVFZd20pbHBEeVQxdjhpMzNja2VfcVlaJCtgQUVTfW5vZm9nPWcrCnp5NDVuVDU3XzVoU3x3
OHtFe3UyIWF0aks9dH0mQmRCcWVQVmlQKDxrM3BhOCgyKEszXmhvb2U1SiQ9JXJDTVMwUwp6Qlln
YUwyOGE0WFBZKkx7Q1M2eSY0aFZUZk9LZ0VuMmQyaD41b0xmO2sjUmFESEM0e2M+PiRaLUA8JGI2
Yjs+aXkKeitCV0omWXs4bSpIcE9oZl4tUTZFRChaTXpvSD0/PXVoYHFhTT9aVnN3WUYzUElaUjlH
VXgmY0N7NGExaXs9RD5zCnpjMGZDQCNXRzlQYGJlLW13KDZ2YUg8aXBgKXg9MFQzSXkmVDlzP2Fp
TVhfaGJ6fDlaa1czRChrJHdDOTMwTEE+Uwp6cmUtVF9mSXwmdXBTTnBSY2JJSzRhN2hZSzdEcmpv
RU9lbitYKSs3KyY9YFZlNHUySDBCSmE1PGdzNEwkUG9NTlcKenZ4JCNFMEcoaUskKU8pJldNRFcj
Qzs3UlduJV53I3AjSjxhWEExezskZGJFOVVlZXgtWFJOejJWdE1PMGJrMmt7Cnoyc2AwdiQwc0ox
VnlCTFlMb3I0Pz5FemchIT1tQWJII0o8OD1aQ19udXpfQnk5cH4mI08zVzk3UE8oMF5HRD0yOwp6
Umw0P2BMWTYmOGl9fnkqdyVvWjFvbXxlLSh+fl98LVU4en1UaE8yeFZ9Ulg5JmB+ZGdxfCZVfk49
WF4+XmVOcCUKenp+MzBPMkFZXyNBSDklJVRqVEtWPiRRTStYQVRFSGUpNUN7VCQlYHUxUWl3Wkxz
ajUzdktOU2lrSlM8fm9zVXZBCnpWKDFCSzNNJGY7T2BCZjhFNVU3cGxtNnEhNTFGbGR4TD9ET3km
YS1OPm92QGdaWkNBblhxe3VpRzk0dEtRQEQqVQp6Rl5ZV3E5S08+NzdgSGxsMyFfdF9KUXEzN3ZR
eUp6IWxHV2pnQ0U+dGExOGhaNiR+S0pMY0B8VnVKQzZlV3VteVIKenVDMHluVHYtSW8kLUpBRXdo
Nm45RU1TYnFSU3Ulb0pqblZJR24xJUU8V2hCWWJ3N3JPNntAUExVVFlpezljY1JlCnpTeW9rNV4r
I3stTnVaJEB6KEZkdzJeUHBVXy1oTHMzYWwoU3NnckZUNFlqfFNYcnFTfCk0Nzd6UHJ6WTcjVENz
IQp6Z1RRRDRJMlVOIyU7P0NMay0tcFJSekRlT3FfbHg2MXtNfmEwQjAmTnkrZm9BIWhPcnI2V0tQ
cDFofVpwKXF8PzcKemMyVzZJTlpHdHt5bmlnWlpAazZDI1dCeXhBOGluKT9kfFB9YGMzNEBIfTl7
YEc/UChKd1hlTEV5ZmJ2fm01dFRLCnpLbnp0UT5KRjZFZ0Q3VUZAJEZRc3Qrfml2S3JxMnQyXnQk
bj94WTV3enhjdyFQSHhjLWBoTkctemcyfDxDPTVrQgp6dkNhdnw4I1dIc2IrUGc+WU1FPT5QRng9
Z0h+amJGPTQ5SmhUM2kyXkRZPi13Nlk9KWFIWj9jUz16azI5d2xRPmMKeiUoYDQ2b0tFP1pmI2Rn
fWgycndGa2REWHQqJnE0dHE8KFVyVkV2KDdFVEl9LXplbSlKfDJCYD0oVjZsUGxkYV8/CnokTlJw
WmRJJTw1dEF2SGExSyF0NnhGK3NCY259TmgjaH1PV0wqYmVyWigqQ1JvOGk0ekwkXkhsQio4RmxY
PWxkfgp6cWp2VWlASTRlYDFXQWFhRCtoa0hyTStEcWV+QTRob0ZARTkmcXlTeWBtLWA4SEc8e3dp
UD9RXk9LYXA1NiQ0dF4KekZpKURNQHM+QTFMQ31aT0JXTmFJPFE0PF88b29OJU5eITNzQnhsVUVl
KldDZnI0PVkwe2RQZkw5ayQ+QkBRIzltCnptT0RfR0liaVdpS0d0RytLcndUYGUjNkJZZ0g+cm5C
SEhtc0g5dEZoZTRmYU9MenY5YWM4WEF2IXsqazNWXlh+Mwp6dj5rJVNrMml3QVp8KkpodG0lVHMj
Uy1mSkx0OUlPPSppN3BKYzM9amNxZCpwVUtVOyQ5VWF4SSVGJlJ9Rj8jPUsKekhGS2p9YCk3U3s1
SndTV1FqZFMzUipvJnNgZUFpVklOZ1JWVUUpdVVJayZ1TjtZTW9obz1KT3ZafXFiNTglOFZOCnpL
bUd5VWlFKjU8dHt1JipVLS0/YTc8aTE5V1F6WjA3QEx9VGxjfW43cit0YUk/IyNAVjUldmNDYFN4
fHtmWkUkUQp6X1QmN0FjYHVgdzVrUX1XMnNYcWJTdj1DXj1FJUNKQz0mNlkhPjckSnAyRUhPWTJ5
dHt2XioxfFJ0V3pPRDhaYCgKek9IOHFke0FAPiNCJGtHXzBMZSg3SWtQRWVvczlBJnojPDQ4dU4o
VlJkPm9mUTgkfW0xP1I3RzxANkplenRAWUJECnpGcT9eZEtYNVZzPmJBPmdsJDVxXysoemc5P1ZJ
NzQpaEt8bkd3TUo0cFZobUdCIT1kcC1Aa3UqMUclRlZ6fCNlagp6ay14XlI/ZituO0dtbk8jaV9s
IykwZ0pjOV5nOU5BdnUmRDUrQlo9QTBwN25WRHFfU0gremtqQWVaKkxnaW0kUTYKelliXnljVmtV
TCYteC1yUHxNSU5kck18cGZhUDg4PCheantRdVo5UFBjd2V3QWooZ0t4TWZAMm44VT1HZTQ3Nk81
CnpePXNzUUlJe1Vue2oyQ2BHR2ZMREAoSGs4K1dgPn1EOXJHTCNsTHdZZWVUQDBWRiVDM3g3eUNh
JDMpalcyZTtjNAp6Yjg8MjVeLXFadyY3eSE1TXxhR1NnailhR3VVfGVgekRQN35CM1IjMk9TbW49
ZEx1TSs0PjhZaGV0dXF4XiR7X1QKekk1e34kUTN7TEdab05tRipmdCt3cG9gdyY7cnM5Mk4jKjl7
djlQaE5CUEomfVpFMlFkY193SD5rSiE7V0dWPHgqCnp7e1FAZ2ppckxxRyFJfEEqcUB1OWV8Nm1a
dkgoMz11Y1F3TGVgc3l9MTdCVGRfKn1gR01rUXI3aU9uO2kqVjA4Ugp6QGUpNko3LT51SGUlKlUw
U2wlNzZpPyV1STshI1ludyZsZ3R4IXZkanchZHc4KTgjc2M+KkpKdktTbiY1aUk/bWAKemp4OGZm
JTdUbE9WRmJeR3UjPCs+dGlCKDRGcSMwZzF+MDBYajZxRU9tKHRNSzFxLXJ+cGcxfWVmentGUnEh
S3JMCnpGekVYQW1tR3VEIzhxeSopJWF3UGlzbTYpKEJCY1lNbDZxODg9KmZCQ0hJeDUlY2AkckZG
fiVOWkk8KD15TWJifgp6NmM1KGdSWlo9MnNnb2pBYiVBSyg2OT5+ai17YnYyKSU0eFhjZD0ldFQ+
MEpvbGRsQEoma2NYbHheJktUdSZ3O1cKem1YKz9CU2tQcjhAQjgtXmR+S1RjQn1aa3NGYzx9VGpa
OCF4JkJ2ejZLUjRYXlJmaVlGNEA2Kk13SHN6PC1VUWkmCnpZX2VabTlQM1h2Vik0Qjt0e0xeJDFT
WEB1RD1sM0lkKVBiUmp7Qz9lI3o8eClyamZKQUxFRklIPj1TcTAxKTA5bgp6X3hYPmpDa1dQWTh7
SUp5Q0w3RmBHT3YyMGcxSDNnbXE1OXlkVX4pfVhrWn0lNmBzTzhDViZ3MlpibSleOWxYUlYKemhx
UXRMWDdQPH5kalhCV0hJey1WLVUjfUg3YDZibktaJlhFN09eKEA8bCo0JipiZWt6NE1WRzBqdndE
V0hhM1FsCno1b0sxWE1Mck5YdyEtISUyaGpVRClnVFpWZTVBWG1CWj12MS1haGJUNiMoQDFiN09r
TShJMDN7Kz47dEhHbCVWQAp6SjN4aklkeXI2bWxjYSh1PU8/KjJJWnE7OGYlZmR8PkxNem5Kfi1G
bDdFYiNySVhob1pEfmkxP2V7UF5SYGllNU0KenZaOU5ObllQPl54NkdvKWYqeVNHeCR6IWZvWmA7
VCZXMVE7PUlQT25Kc3lrR0grKzM3Wi10JXEycmIlKm1iXz5iCnp5cElDfGNUaUVDJDgyQUNNS00k
R0UtP1Z+WUY7PXM0R29kQmdFMElORHN2fDBFdWd9OWkyLSRMaGwyJjZPezJKQQp6Vnx8Rz4zdHd0
I1lUKlREX3VwaGk3YFE3VjxBN1FKPFdqSWJKNTJwaiM2bSY9T2w3ZGQ7S0YyMDErO0lsS2RBeUUK
em0zQXU8WSRkR1RiJlJQT3Z4cD1ATU1YJlZ5WX11cWleSj0lRzs2YTMmPEI5dXpEKXdXPHVxczw4
bWRSfkYpeFdCCnpaYi0xOTY4SCM8QVJeeTBEbzJWdiEtdmk1MUdVKElUYnRKaHtAPys2OD9uN0t2
R3AtOTIlSDkwRjlUTHFSeWY3UAp6IW9qPUI7dDF9ZHFkVzhke3JsSjBxM343ZSZeWD8/cGBIPitf
Pj53IVBiMmdBIURWR0w4Pm97MWFMajE1P0MqaGoKej88fEdMc2ZUXmNEMVhqR3QyfFVvMEghJk9u
YFBVVGU7UnRQMjQrYSZqZTZhOWBBbDNoQG9BQktoR3ZIcUBkIzBrCno8e2w2UEZMdzlkSiF6QzJ4
TXw8VSN0N2NNR3Y5SG0pI3MhZUNAd1dxYlRfa3AwQmlxa1h5X2djZGkoa0tzTmRjQwp6c1NDNERg
MTFkenpld2NkPFBVPmBIP1YlZHpLJlpVeENtQW5QUngoPl8yVnpoZmp6TGkmTDE9VyR3fWE5dHV3
Z30KejJAMkJFOTZhWTtRWCorJldSJSsjZj5DZylEa3xPKHtsRShCditWdEZYQ0M3VFJKNjQ+ayot
fDdFXzlLI3djeHRsCnplVENUS3dOKkU0OS10PXI4JVM0e2MoeldVblVzeTJkcHBpMUYlcmpmYi1e
NmRIMURPflEwWWU3aDN3X2Fod3UoUgp6ZUU4NzJ0S2QzTyY8WlplOWcweEN1SmQyX0Bva3szQnBL
UGUoSWVLKilfM0ZMO3VfTnNsMVhzbyhmKz8jOH5xaDIKelcpaiUmeU5GOTxCeUBmQ2oqaXhmT1Qm
RyQ0PT8zVE0jaXBfYT9IJWtYZTMkKHU7dlVZMjt9PUYqZFF9UmEwLWFvCnplSSlQeXFJJCZzTC1p
ek9IbW5od3pXIzMjPWJJPUs/KEAmcCZwZktJaz9iKkRYRW9fYHtkKWh3JjdfZ1pLb3lhdwp6dkZ2
dWdLU15UYXR4TD5adEJnQ1hGbk93d0NnXl8+NklXSzNVQVMjOVBWVDlzbWpxVEdaQXM5JGhYNi0o
TXJ8WlAKekMzcyg2ejUoenlRJDclbXhEV085SjM0YWc8UkJ7JUR7flpteEw4N0toIUlqQ0dIbXM5
V258VlB5ZnU5T1k8OWxiCnoyWXQwNVNXLSR8Yy1JWWtkeV95ZGVRMGkwNTJDY0w/YSpBPzZmLXMw
ejFQWDtaKHVnTzh6KDE1bWdiOGxQOEtMTgp6Jj13PVY5QFVJZjREJiQ7RmRNM0pJNU0lWGVwQEsq
dTNmaTUmPmg7ZldvI2MrRlNfSXllfU1FU2N0MkQpcjx8TXcKemFSSERDd3crd1RqWTJKSGtFKDc9
N2JHR1U7Pj1NQ3wxT0RtZSo1PS03eFMkJXpYJD4zQTM+bGhgMVhMRStjSH5GCnpVN1Zad207Yzs0
bVBuKkJBVU0hSHtvTSUtQzhudXoyXnRfMHE/MHcqJkckSF5BYlIxSSREKUg9ciVgJFkyTW9pZAp6
eEZiISpOPX02K1BEeWtANU9XN1VNVHFWfSY8KmVXZS1fI3FJXj1DX1pJfW9+THB0VSVYKEVQM3Ux
KkB0SmwqWWkKenheO1JULVE1b1czckpFJU15JCYjRTBfbWU4bmI4NTl5UzRpVTY1UElldCt7amdO
aHE8KT53RFplYmhhaDBlQ3hTCnowQyRmcDtSZnsqdzk9ezFmY1NWITx8aDI9K25PUDF7NDFBbiNS
dSZJV0pgaz96NGNiZjNeVWV9OHFmYj4ye3dRZwp6cGRHRkY4JWllSldGO2xtPTFTSEFBYUVIJnhZ
TiRQIWF7NkFCclhhKyg0dztiZll8YyZVKilSKnFwcmVDWkFuU1YKeiQoZmxMWXw/QU1JMFJ8TCgp
SGQqR1JrbG9wKjhzK3hmRzFoRkcwOz80bExgQTlYbD9mYDhmaD5BNikwZzZ5YkRhCnoxQylvfmxB
V35QOCE1R190dH1MMj00XnJuSEM1eVBFLTNGX0FsNyRzdmF7Yk5GZ1pCRXB6IWM+aH11TWNwIVUw
cwp6P2h0dHRTVDhafDNrUS03Y1RXVV5NNShCUGdNdTBgZz5NazVjP19hWTZURyRQNWNHZTc8WU9e
OEl+eG5veGRfOWkKekVTQTU7WV5GSH43TUFJTSl2ZDIjUEk/I0Aje3FYQEJWa01EPTYoUm1TT0o1
cWswbWFfUm07aUJkSn1WRXE9NlM+CnpxMjMwZ0F3U1EtJTBeMTIoMXJQYilVVzRRU3ojODxzNm8w
XnstXnwhZ0FFe3x6Mkd7SipUYTl7VzRSOF57P1d7eQp6XkVkRUsmUEo9S2ZUJF9MP3FtVD5gaElA
dzU7LSE1QTBqbVg9YktWKVo2JXFBYDM9Ums9aUo7eD1aMTRIQ2pTYXEKenZoRlYyaSRgJT1JJEJD
V1ZKa3M0Mk02RFFZMGBkdGQlVldzJlNEUCtHQlVDJl9QbEhEeyNkKkx3aChieVM1TDFJCno4Q2k5
YWl0Nnk7IX19a2QqLTFeXiNHKTZZYn4zVGAxNmMxZlVKNzc2KDRfakl2SnhjMGhkMUxvSUZSb3ZE
PVYkewp6Q2Eydkhjaip7bmMzYV9pWkRuSlYrXjhgMTQ8N25jXm43SWk9cH4yVURBMV8/PWcoZVBJ
UGtmPVdtdzxDSzVgNk0KejcpNkF6c09ZSWJmUzBsKVoxZGR7PXh9PDM0LTV0SCl6clVBMCtMd00+
RjJ6cE9LWmRvaT94M3MhK3tKeypCP3hNCno+c0g/OHlJPnVOSiN8PUB5OCVnKjtCPntyI0RLTG9g
cEotRTxzZSpOSnImJkEqfkNCcSRqYW5jblJ4ZlgxNmtaUgp6dl5ZPlBGd3xeSj9JTitQZnUtWEF1
T0M0NSVWYElwV2ZCRGlaczdaYFUhTjZKVCZgXkluV0VXQSVKb3s0SyY3cEUKentgPygpRFp3a0ZX
fTZtIzdYdHJBOz1XI04zMCgpX1gjSXVfP158MWdtJC1jSmBDdFVQaFpQYTtZaWxWJUE7U3BRCnpO
ekh8JHw5XyRPUX5Qe3FjOXRIe0NTQj5UVzVtNHlkSXhCQ2E7QTdLWEkpekpGWGJCXiVpalRNY0ZG
bz9ANkApZQp6aTxBKmM2Y0l9MUtgRH1QJjRjP3kkPFR8OFJgZ1NHUmFUZ31qbEBrTjUkKlRQUHkw
P0tYbmNwRzl3VF5OUyZASG8Kekooall8cntQcV50X01rKGZLQHB3dDBPPyQlP0RpT2NITGUhJEIm
PXw4K1FIZk5UaWZgYHsmR0xEeEs4IWp0K2FBCnpTZiQydGVHeVVhK3QkNHc+MmZ5a3t2NUJDXztz
blJDdVFWX190K2l8YW1yQHJ3OHwpSGtHWE0ra3lnRkZycEIzOAp6MmRkcHZjJEhwYXhMTWQwNmVE
PDwjPVAqa2xRb0IqWmF4REY0PGhNcHMzYWRDcmh6VGFjMTxeWWZKc341RnNKN08KenkzZitrRm91
IW48WTA1JjE3bUwoS2w8T2JNY0NCJUFTfH4jaTtJaGEpfXpYO0ZyVVg0YihDKj4+cERiPFo9PDZE
Cno3JVY3MFVGZiN1XkwpSn5jQz5pTSN+KHU1KWF6IWB4JURFPSp9dk45ZDFucUlEMS1JRnBzfmNS
ezRlKn16VGQyOwp6ZWMqNGV2cn5PRld5Q29EPCpMKHAxMlRzYTtYI1kxX3hJP21hSkYxdXFwaT9L
cSNGUTRCaCgwKEc0WCF2MXNFc3YKemlCJVhhT1l2SnMkU3llIzZ5KH5wUiZHbmpISl5sZDYlKEBv
dXEtfGApZmNCVkAtfVk5RTNmVSh5d1I1VTRmMUlQCnpSPiFKZHhac0M8cmBUKHw2XzhjMU1pKjJZ
YUBXSmkkT218dyMzUV9nXmA3U3E7K2ZFb3tIczM3P3BuN0dOO1g4Ygp6U2FwKlZeciFUJj1KYEhT
YXJaRnpocjVXI2xiN1BuV1lwQkM3dzUqOzhtNi1MeEVZQHVASnc2SDIqeXhoIXt6eWoKem4/MW5g
TXwlJS1KaCFxY1lheUpYWStfPUM+SkRqcDxqVT9POUEobjxAM3tHTl4xMnhfVFMhV0xpTXl3T29P
eU98CnoqSE5ZVWZsbXxDPTJkKXFBU29vcyNnQzZ3eUVhfmtaPyhqM21Ia05Pa2EzfjZtMTJZI0cx
dm5kJHY0RGJjeERHUQp6P0piNVI8cE17TXRQeU9reiYoSCY9NiZFUGlEeD9qSV9eOThvWk1edStk
LU5VX1gwQGQrOFctPlRXYl57S31HVHAKVG81b2cxYDB3bSNDN0JkeSE8K3ZIa1JUSzwKCmxpdGVy
YWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1zZWxlY3Rpb25zLXRvLWNvbnRlbnRlZGl0YWJsZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL2Ry
YWctc2VsZWN0aW9ucy10by1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ4M2U2Y2FlNGI3MWExOTNmNjZjYWVmMDI1YTA3ZGZiNGQ3YmExY2MKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctc2Vs
ZWN0aW9ucy10by1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsODEgQEAK
K0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElU
SU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiNkb2N1bWVudC1mcmFnbWVudCByZXBsYWNp
bmdET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBnaXZlbkFjdGlvbjpXZWJWaWV3
SW5zZXJ0QWN0aW9uRHJvcHBlZAorRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5n
SW5ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAorRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9u
CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5n
ZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpy
YW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93
bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmlj
YXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxk
RW5kRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDEgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKK0VESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRFbmRFZGl0aW5nOldlYlZpZXdEaWRFbmRFZGl0aW5nTm90aWZp
Y2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiNkb2N1bWVudC1mcmFn
bWVudCByZXBsYWNpbmdET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMSBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBnaXZlbkFj
dGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uRHJvcHBlZAorRURJVElORyBERUxFR0FURTogc2hvdWxk
QmVnaW5FZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMSBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAorRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5n
Tm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
OldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6
IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mIERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDEgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG9ET01SYW5nZTpyYW5nZSBmcm9tIDIgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gMTIgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZm
aW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UK
K0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRp
b24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAxIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEyIG9mICN0ZXh0ID4g
U1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJv
bSA1IG9mICN0ZXh0ID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUg
b2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6
TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0
ZWRET01SYW5nZTpyYW5nZSBmcm9tIDUgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+IFNQQU4gPiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxMiBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0
cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitsYXll
ciBhdCAoMCwwKSBzaXplIDc4NXg3MDEKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDc4NXg2
MDAKK2xheWVyIGF0ICgwLDApIHNpemUgNzg1eDcwMQorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQg
KDAsMCkgc2l6ZSA3ODV4NzAxCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDAsMCkgc2l6ZSA3
ODV4Njg1CisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDMwMng0MDIgW2Jv
cmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgICAgUmVuZGVySW1hZ2Uge0lNR30gYXQg
KDEsMSkgc2l6ZSA3NngxMDMKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg3Nyw5MCkg
c2l6ZSA0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDc3LDkwKSB3aWR0aCA0OiAiICIKKyAg
ICAgICAgUmVuZGVySW1hZ2Uge0lNR30gYXQgKDgxLDEpIHNpemUgNzZ4MTAzCisgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMTU3LDkwKSBzaXplIDR4MTgKKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMTU3LDkwKSB3aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVySW5saW5lIHtBfSBhdCAo
MCwwKSBzaXplIDMweDE4IFtjb2xvcj0jMDAwMEVFXQorICAgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMTYxLDkwKSBzaXplIDMweDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTYx
LDkwKSB3aWR0aCAzMDogIkxpbmsiCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTkx
LDkwKSBzaXplIDR4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTkxLDkwKSB3aWR0aCA0OiAi
ICIKKyAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDg1eDE4CisgICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxOTUsOTApIHNpemUgODV4MTgKKyAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICgxOTUsOTApIHdpZHRoIDg1OiAiUmFuZG9tIHRleHQuIgorICAgICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNDAyKSBzaXplIDc4NXgxMDcKKyAgICAgICAgUmVuZGVy
SW1hZ2Uge0lNR30gYXQgKDAsMCkgc2l6ZSA3NngxMDMKKyAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICg3Niw4OSkgc2l6ZSA0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDc2LDg5KSB3
aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVySW5saW5lIHtBfSBhdCAoMCwwKSBzaXplIDMweDE4
IFtjb2xvcj0jRkYwMDAwXQorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoODAsODkp
IHNpemUgMzB4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICg4MCw4OSkgd2lkdGggMzA6ICJM
aW5rIgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDExMCw4OSkgc2l6ZSA0eDE4Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDExMCw4OSkgd2lkdGggNDogIiAiCisgICAgICAgIFJlbmRl
cklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSA4NXgxOAorICAgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMTE0LDg5KSBzaXplIDg1eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MTE0LDg5KSB3aWR0aCA4NTogIlJhbmRvbSB0ZXh0LiIKKyAgICAgIFJlbmRlckJsb2NrIHtVTH0g
YXQgKDAsNTI1KSBzaXplIDc4NXgwCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsNTI1KSBz
aXplIDc4NXgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0Nzl4
MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0Nzk6ICJUaGlzIHRlc3QgY2hl
Y2tzIHNlbGVjdGlvbiBkcmFnIGVkZ2UgY2FzZXMgb24gTWFjLiBUbyBydW4gdGhlIHRlc3QgbWFu
dWFsbHk6IgorICAgICAgUmVuZGVyQmxvY2sge09MfSBhdCAoMCw1NTkpIHNpemUgNzg1eDEyNgor
ICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwwKSBzaXplIDc0NXgzNgorICAgICAg
ICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKC0yMCwwKSBzaXplIDE2eDE4OiAiMSIKKyAgICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3NDF4MzYKKyAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDc0MTogIlNlbGVjdCBldmVyeXRoaW5nIGFib3ZlLCBzdGFy
dCB0aGUgZHJhZyBvdmVyIHRoZSBpbWFnZSwgYW5kIHdpdGggbm8gZGVsYXksIGRyYWcgaXQgdG8g
dGhlIGNvbnRlbnQgZWRpdGFibGUgYXJlYS4gT25seSB0aGUiCisgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwxOCkgd2lkdGggMTYyOiAiaW1hZ2Ugc2hvdWxkIGJlIGRyYWdnZWQuIgorICAgICAg
ICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwzNikgc2l6ZSA3NDV4MzYKKyAgICAgICAgICBS
ZW5kZXJMaXN0TWFya2VyIGF0ICgtMjAsMCkgc2l6ZSAxNngxODogIjIiCisgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzM2eDM2CisgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCA3MzY6ICJTZWxlY3QgZXZlcnl0aGluZyBhYm92ZSwgc3RhcnQgdGhl
IGRyYWcgb3ZlciB0aGUgbGluaywgYW5kIHdpdGggbm8gZGVsYXksIGRyYWcgaXQgdG8gdGhlIGNv
bnRlbnQgZWRpdGFibGUgYXJlYS4gVGhlIGVudGlyZSIKKyAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDE4KSB3aWR0aCAxNzk6ICJzZWxlY3Rpb24gc2hvdWxkIGJlIGRyYWdnZWQuIgorICAgICAg
ICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCw3Mikgc2l6ZSA3NDV4MzYKKyAgICAgICAgICBS
ZW5kZXJMaXN0TWFya2VyIGF0ICgtMjAsMCkgc2l6ZSAxNngxODogIjMiCisgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzIzeDM2CisgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCA3MjM6ICJTZWxlY3QgZXZlcnl0aGluZyBhYm92ZSwgc3RhcnQgdGhl
IGRyYWcgb3ZlciB0aGUgdGV4dCwgYW5kIHdpdGggbm8gZGVsYXksIGRyYWcgaXQgdG8gdGhlIGNv
bnRlbnQgZWRpdGFibGUgYXJlYS4gTm90aGluZyIKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDE4KSB3aWR0aCA0MTM6ICJzaG91bGQgYmUgZHJhZ2dlZCwgYnV0IGEgYnVuY2ggb2YgdGV4dCBz
aG91bGQgYmUgc2VsZWN0ZWQgaW5zdGVhZC4iCisgICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0g
YXQgKDQwLDEwOCkgc2l6ZSA3NDV4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgt
MjAsMCkgc2l6ZSAxNngxODogIjQiCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsNzAxKSBz
aXplIDc4NXgwCitzZWxlY3Rpb24gc3RhcnQ6IHBvc2l0aW9uIDUgb2YgY2hpbGQgMCB7I3RleHR9
IG9mIGNoaWxkIDYge1NQQU59IG9mIGNoaWxkIDEge0RJVn0gb2YgYm9keQorc2VsZWN0aW9uIGVu
ZDogICBwb3NpdGlvbiAxMiBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgNiB7U1BBTn0gb2Yg
Y2hpbGQgMSB7RElWfSBvZiBib2R5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctc2VsZWN0aW9ucy10by1jb250ZW50ZWRpdGFibGUu
aHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1z
ZWxlY3Rpb25zLXRvLWNvbnRlbnRlZGl0YWJsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkOWMwMjgxNmRj
ZTkzZjlkOTNkZmIxZjZjZDdmM2IwMWYyZDQzNTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctc2VsZWN0aW9ucy10by1j
b250ZW50ZWRpdGFibGUuaHRtbApAQCAtMCwwICsxLDc1IEBACis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2VkaXRpbmcvZWRpdGluZy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKKzwvc2NyaXB0PgorCis8c2NyaXB0Pgor
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgdmFyIGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgibGkiKTsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2Up
OworICAgIAorICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOworICAgIGxpLmFwcGVuZENoaWxk
KHRleHQpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybjsKKworICAgIHNlbGVjdFNlbGVjdGlvbigp
OworICAgIGRyYWdFbGVtZW50VG9Db250ZW50RWRpdGFibGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImRyYWdpbWFnZSIpKTsKKyAgICAgCisgICAgc2VsZWN0U2VsZWN0aW9uKCk7CisgICAgZHJh
Z0VsZW1lbnRUb0NvbnRlbnRFZGl0YWJsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJhZ2xp
bmsiKSk7CisKKyAgICBzZWxlY3RTZWxlY3Rpb24oKTsKKyAgICBkcmFnRWxlbWVudFRvQ29udGVu
dEVkaXRhYmxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcmFndGV4dCIpKTsKKworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gc2VsZWN0U2Vs
ZWN0aW9uKCkgeworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZWxlY3RBbGxDaGlsZHJlbihk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VsZWN0aW9uIikpOworfQorCitmdW5jdGlvbiBkcmFn
RWxlbWVudFRvQ29udGVudEVkaXRhYmxlKGRyYWdTb3VyY2UpIAoreworICAgIHggPSBkcmFnU291
cmNlLm9mZnNldExlZnQgKyBkcmFnU291cmNlLm9mZnNldFdpZHRoIC8gMjsKKyAgICB5ID0gZHJh
Z1NvdXJjZS5vZmZzZXRUb3AgKyBkcmFnU291cmNlLm9mZnNldEhlaWdodCAvIDI7CisKKyAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24o
KTsgICAgCisKKyAgICB2YXIgZHJvcFRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
YXJnZXQiKTsKKyAgICB4ID0gZHJvcFRhcmdldC5vZmZzZXRMZWZ0ICsgZHJvcFRhcmdldC5vZmZz
ZXRXaWR0aCAvIDI7CisgICAgeSA9IGRyb3BUYXJnZXQub2Zmc2V0VG9wICsgZHJvcFRhcmdldC5v
ZmZzZXRIZWlnaHQgLyAyOworICAgIAorICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8
Ym9keSBzdHlsZT0icGFkZGluZzowOyBtYXJnaW46MCIgb25sb2FkPSJydW5UZXN0KCk7Ij4gIAor
Cis8ZGl2IGlkPSJ0YXJnZXQiIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsgd2lkdGg6
IDMwMHB4OyBoZWlnaHQ6IDQwMHB4OyIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj48L2Rpdj4KKzxk
aXYgaWQ9InNlbGVjdGlvbiI+Cis8aW1nIGlkPSJkcmFnaW1hZ2UiIHNyYz0iLi4vLi4vLi4vLi4v
ZWRpdGluZy9yZXNvdXJjZXMvYWJlLnBuZyI+Cis8YSBocmVmPSIjIiBpZD0iZHJhZ2xpbmsiPkxp
bms8L2E+Cis8c3BhbiBpZD0iZHJhZ3RleHQiPlJhbmRvbSB0ZXh0Ljwvc3Bhbj48L2Rpdj4KKwor
PHVsIGlkPSJjb25zb2xlIj48L3VsPgorPHA+VGhpcyB0ZXN0IGNoZWNrcyBzZWxlY3Rpb24gZHJh
ZyBlZGdlIGNhc2VzIG9uIE1hYy4gVG8gcnVuIHRoZSB0ZXN0IG1hbnVhbGx5OgorPG9sPgorPGxp
PlNlbGVjdCBldmVyeXRoaW5nIGFib3ZlLCBzdGFydCB0aGUgZHJhZyBvdmVyIHRoZSBpbWFnZSwg
YW5kIHdpdGggbm8gZGVsYXksIGRyYWcgaXQgdG8gdGhlIGNvbnRlbnQgZWRpdGFibGUgYXJlYS4g
T25seSB0aGUgaW1hZ2Ugc2hvdWxkIGJlIGRyYWdnZWQuCis8bGk+U2VsZWN0IGV2ZXJ5dGhpbmcg
YWJvdmUsIHN0YXJ0IHRoZSBkcmFnIG92ZXIgdGhlIGxpbmssIGFuZCB3aXRoIG5vIGRlbGF5LCBk
cmFnIGl0IHRvIHRoZSBjb250ZW50IGVkaXRhYmxlIGFyZWEuIFRoZSBlbnRpcmUgc2VsZWN0aW9u
IHNob3VsZCBiZSBkcmFnZ2VkLgorPGxpPlNlbGVjdCBldmVyeXRoaW5nIGFib3ZlLCBzdGFydCB0
aGUgZHJhZyBvdmVyIHRoZSB0ZXh0LCBhbmQgd2l0aCBubyBkZWxheSwgZHJhZyBpdCB0byB0aGUg
Y29udGVudCBlZGl0YWJsZSBhcmVhLiBOb3RoaW5nIHNob3VsZCBiZSBkcmFnZ2VkLCBidXQgYSBi
dW5jaCBvZiB0ZXh0IHNob3VsZCBiZSBzZWxlY3RlZCBpbnN0ZWFkLgorPGxpPgorPC9vbD48L3A+
Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTdkN2UwMjdlNmY0MDc1MzhkMDdjZWM4Y2Y0ODkwOWU2
NjdhMGY0OS4uMDQ0OTlmNGRiMmUzYTc3M2JmZjNmMmJjNjY2ZTllMThjOGM4OTA2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDExLTA1LTEyICBEYW5pZWwgQ2hlbmcgIDxkY2hlbmdA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEltcHJvdmUgZHJhZyBzdGFydCBsb2dpYworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk0MDkKKworICAgICAgICBSZXdyaXRlIGFuZCBzaW1w
bGlmeSB0aGUgZHJhZ2dpbmcgbG9naWMgdG8gYmV0dGVyIG1hdGNoIElFLCBGaXJlZm94LCBhbmQg
dGhlIGJlaGF2aW9yCisgICAgICAgIGRlZmluZWQgaW4gdGhlIHNwZWMuIEFtb25nIG90aGVyIHRo
aW5nczoKKyAgICAgICAgLSBkcmFnZ2FibGVOb2RlKCkgbm8gbG9uZ2VyIHJldHVybnMgdGV4dCBu
b2RlcyB3aGVuIGRyYWdnaW5nIGFuY2hvcnMuCisgICAgICAgIC0gV2hlbiBzdGFydGluZyBhIGRy
YWcgb3ZlciBhbiBpbWFnZSBpbiBhIHNlbGVjdGlvbiwgcHJlZmVyIHRvIGRyYWcgdGhlIHNlbGVj
dGlvbi4KKyAgICAgICAgLSBTZXZlcmFsIHJlZHVuZGFudCBoaXQgdGVzdHMgaGF2ZSBiZWVuIHJl
bW92ZWQuCisgICAgICAgIC0gTWlub3IgcmVmYWN0b3JpbmcgdG8gbWFrZSB0aGUgbG9naWMgZWFz
aWVyIHRvIGZvbGxvdy4KKworICAgICAgICBUZXN0OiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0
ZWJvYXJkL2RyYWctc2VsZWN0aW9ucy10by1jb250ZW50ZWRpdGFibGUuaHRtbAorCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdn
YWJsZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6
CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2UvRHJhZ1N0
YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpEcmFnU3RhdGU6OnNob3VsZERpc3BhdGNoRXZlbnRz
KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmV2ZW50TWF5U3RhcnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6dXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3ApOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpjYW5jZWxEcmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRBdCk6CisgICAgICAgIChXZWJDb3JlOjpFeGFjdGx5
T25lQml0U2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyk6
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKwogMjAxMS0wNS0wNiAgQnJldHQgV2ls
c29uICA8YnJldHR3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJh
cnRoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDE0ZTQyMzEzN2NmYzQ2YWI1YzgwNGMzMGM3OWQ5NGFlN2FkOWNiMWQuLjg3YmJm
NmUxODgzMWUxZTY1NDViY2RjNDU5ZmQ0NmVkOGExYTI3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2NzIsNyArMTY3Miw3
IEBACiAJCTgxQkUyMDk5MTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3JCYWNrZW5kSW50ZXJm
YWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MUJF
MjA5NDExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oICovOyB9
OwogCQk4MUJFMjBEMjExRjRCQzMyMDA5MTVERkEgLyogSlNJREJDdXJzb3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFCRTIwQTcxMUY0QjY2RjAw
OTE1REZBIC8qIEpTSURCQ3Vyc29yLmNwcCAqLzsgfTsKIAkJODFCRTIwRDMxMUY0QkMzMjAwOTE1
REZBIC8qIEpTSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MUJFMjBBODExRjRCNjZGMDA5MTVERkEgLyogSlNJREJDdXJzb3IuaCAqLzsg
fTsKLQkJODFGNjVGRjYxMzc4OEZBQTAwRkY2RjJEIC8qIERyYWdTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFGNjVGRjUxMzc4OEZBQTAwRkY2
RjJEIC8qIERyYWdTdGF0ZS5oICovOyB9OworCQk4MUY2NUZGNjEzNzg4RkFBMDBGRjZGMkQgLyog
RHJhZ1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MUY2NUZGNTEzNzg4RkFBMDBGRjZGMkQgLyogRHJhZ1N0YXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODJBQjE3NDMxMjRCOTlFQzAwQzUw
NjlEIC8qIEluc3BlY3RvckNTU0FnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgyQUIxNzQxMTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0b3JD
U1NBZ2VudC5jcHAgKi87IH07CiAJCTgyQUIxNzQ0MTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0
b3JDU1NBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODJBQjE3NDIxMjRCOTlFQzAwQzUwNjlEIC8qIEluc3BlY3RvckNTU0FnZW50LmggKi87IH07
CiAJCTgyQUIxNzczMTI1QzgyNjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyQUIxNzZGMTI1
QzgyNjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCAqLzsgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggODFjZTkyZDRmNTBkNjk5MGNiYjNmZGZh
MmUwYzVlZDcxMjRlOGQ2YS4uN2IyOGI4ZTFhMDBlMDNhYTk2YjlkNDYxYWRlOGY4YzRhZjdiMjc1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTU2OSw3MSArNTY5
LDQ5IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyhEcmFnRGF0YSogZHJhZ0Rh
dGEsIERyYWdPcGVyYXRpb24mIG9wZXJhdGlvbikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotTm9k
ZSogRHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZU5vZGUoY29uc3QgRnJhbWUqIHNyYywgTm9kZSog
c3RhcnROb2RlLCBib29sIGRodG1sT0ssIGJvb2wgdWFPSywgaW50IHgsIGludCB5LCBib29sJiBk
aHRtbFdpbGxEcmFnKSBjb25zdAorTm9kZSogRHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZU5vZGUo
Y29uc3QgRnJhbWUqIHNyYywgTm9kZSogc3RhcnROb2RlLCBjb25zdCBJbnRQb2ludCYgZHJhZ09y
aWdpbiwgRHJhZ1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBpZiAoIWRodG1sT0sgJiYgIXVh
T0spCi0gICAgICAgIHJldHVybiAwOworICAgIHN0YXRlLm1fZHJhZ1R5cGUgPSBEcmFnU291cmNl
QWN0aW9uTm9uZTsKKworICAgIGlmIChzcmMtPnNlbGVjdGlvbigpLT5jb250YWlucyhkcmFnT3Jp
Z2luKSkKKyAgICAgICAgc3RhdGUubV9kcmFnVHlwZSA9IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rp
b247CiAKICAgICBmb3IgKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdGFydE5vZGUt
PnJlbmRlcmVyKCk7IHJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKSkgewog
ICAgICAgICBOb2RlKiBub2RlID0gcmVuZGVyZXItPm5vZGUoKTsKLSAgICAgICAgaWYgKG5vZGUg
JiYgbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpURVhUX05PREUpIHsKLSAgICAgICAgICAgIC8v
IFNpbmNlIHRoZXJlJ3Mgbm8gd2F5IGZvciB0aGUgYXV0aG9yIHRvIGFkZHJlc3MgdGhlIC13ZWJr
aXQtdXNlci1kcmFnIHN0eWxlIGZvciBhIHRleHQgbm9kZSwKLSAgICAgICAgICAgIC8vIHdlIHVz
ZSBvdXIgb3duIGp1ZGdlbWVudC4KLSAgICAgICAgICAgIGlmICh1YU9LICYmIG1heVN0YXJ0RHJh
Z0F0RXZlbnRMb2NhdGlvbihzcmMsIEludFBvaW50KHgsIHkpLCBub2RlKSkgewotICAgICAgICAg
ICAgICAgIGRodG1sV2lsbERyYWcgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbm9k
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChub2RlLT5jYW5TdGFydFNlbGVjdGlv
bigpKQotICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBoYXZlIGEgY2xpY2sgaW4g
dGhlIHVuc2VsZWN0ZWQgcG9ydGlvbiBvZiB0ZXh0LiBJZiB0aGlzIHRleHQgaXMKLSAgICAgICAg
ICAgICAgICAvLyBzZWxlY3RhYmxlLCB3ZSB3YW50IHRvIHN0YXJ0IHRoZSBzZWxlY3Rpb24gcHJv
Y2VzcyBpbnN0ZWFkIG9mIGxvb2tpbmcgZm9yIGEgcGFyZW50Ci0gICAgICAgICAgICAgICAgLy8g
dG8gdHJ5IHRvIGRyYWcuCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0gZWxz
ZSB7CisgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgIC8vIEFub255bW91cyByZW5kZXIg
YmxvY2tzIGRvbid0IGNvcnJlc3BvbmQgdG8gYWN0dWFsIERPTSBub2Rlcywgc28gd2Ugc2tpcCBv
dmVyIHRoZW0KKyAgICAgICAgICAgIC8vIGZvciB0aGUgcHVycG9zZXMgb2YgZmluZGluZyBhIGRy
YWdnYWJsZSBub2RlLgorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghKHN0YXRl
Lm1fZHJhZ1R5cGUgJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSAmJiBub2RlLT5pc1RleHRO
b2RlKCkgJiYgbm9kZS0+Y2FuU3RhcnRTZWxlY3Rpb24oKSkKKyAgICAgICAgICAgIC8vIEluIHRo
aXMgY2FzZSB3ZSBoYXZlIGEgY2xpY2sgaW4gdGhlIHVuc2VsZWN0ZWQgcG9ydGlvbiBvZiB0ZXh0
LiBJZiB0aGlzIHRleHQgaXMKKyAgICAgICAgICAgIC8vIHNlbGVjdGFibGUsIHdlIHdhbnQgdG8g
c3RhcnQgdGhlIHNlbGVjdGlvbiBwcm9jZXNzIGluc3RlYWQgb2YgbG9va2luZyBmb3IgYSBwYXJl
bnQKKyAgICAgICAgICAgIC8vIHRvIHRyeSB0byBkcmFnLgorICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkpIHsKICAgICAgICAgICAgIEVVc2Vy
RHJhZyBkcmFnTW9kZSA9IHJlbmRlcmVyLT5zdHlsZSgpLT51c2VyRHJhZygpOwotICAgICAgICAg
ICAgaWYgKGRodG1sT0sgJiYgZHJhZ01vZGUgPT0gRFJBR19FTEVNRU5UKSB7Ci0gICAgICAgICAg
ICAgICAgZGh0bWxXaWxsRHJhZyA9IHRydWU7CisgICAgICAgICAgICBpZiAoKG1fZHJhZ1NvdXJj
ZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25ESFRNTCkgJiYgZHJhZ01vZGUgPT0gRFJBR19FTEVN
RU5UKSB7CisgICAgICAgICAgICAgICAgc3RhdGUubV9kcmFnVHlwZSA9IHN0YXRpY19jYXN0PERy
YWdTb3VyY2VBY3Rpb24+KHN0YXRlLm1fZHJhZ1R5cGUgfCBEcmFnU291cmNlQWN0aW9uREhUTUwp
OwogICAgICAgICAgICAgICAgIHJldHVybiBub2RlOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKHVhT0sgJiYgZHJhZ01vZGUgPT0gRFJBR19BVVRPICYmIG1heVN0YXJ0RHJhZ0F0RXZl
bnRMb2NhdGlvbihzcmMsIEludFBvaW50KHgsIHkpLCBub2RlKSkgewotICAgICAgICAgICAgICAg
IGRodG1sV2lsbERyYWcgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbm9kZTsKKyAg
ICAgICAgICAgIGlmIChkcmFnTW9kZSA9PSBEUkFHX0FVVE8pIHsKKyAgICAgICAgICAgICAgICBp
ZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25JbWFnZSkKKyAgICAgICAg
ICAgICAgICAgICAgJiYgbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmltZ1RhZykKKyAgICAg
ICAgICAgICAgICAgICAgJiYgc3JjLT5zZXR0aW5ncygpLT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2Fs
bHkoKSkgeworICAgICAgICAgICAgICAgICAgICBzdGF0ZS5tX2RyYWdUeXBlID0gc3RhdGljX2Nh
c3Q8RHJhZ1NvdXJjZUFjdGlvbj4oc3RhdGUubV9kcmFnVHlwZSB8IERyYWdTb3VyY2VBY3Rpb25J
bWFnZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VB
Y3Rpb25MaW5rKQorICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5oYXNUYWdOYW1lKEhUTUxO
YW1lczo6YVRhZykKKyAgICAgICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8SFRNTEFuY2hv
ckVsZW1lbnQqPihub2RlKS0+aXNMaXZlTGluaygpKSB7CisgICAgICAgICAgICAgICAgICAgIHN0
YXRlLm1fZHJhZ1R5cGUgPSBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihzdGF0ZS5tX2Ry
YWdUeXBlIHwgRHJhZ1NvdXJjZUFjdGlvbkxpbmspOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbm9kZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWJvb2wgRHJhZ0NvbnRyb2xsZXI6Om1heVN0YXJ0RHJh
Z0F0RXZlbnRMb2NhdGlvbihjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IEludFBvaW50JiBmcmFt
ZVBvcywgTm9kZSogbm9kZSkgY29uc3QKLXsKLSAgICBBU1NFUlQoZnJhbWUpOwotICAgIEFTU0VS
VChmcmFtZS0+c2V0dGluZ3MoKSk7Ci0KLSAgICBpZiAoIWZyYW1lLT52aWV3KCkgfHwgIWZyYW1l
LT5jb250ZW50UmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgSGl0VGVz
dFJlc3VsdCBtb3VzZURvd25UYXJnZXQgPSBIaXRUZXN0UmVzdWx0KGZyYW1lUG9zKTsKIAotICAg
IG1vdXNlRG93blRhcmdldCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0
UG9pbnQoZnJhbWVQb3MsIHRydWUpOwotICAgIGlmIChub2RlKQotICAgICAgICBtb3VzZURvd25U
YXJnZXQuc2V0SW5uZXJOb25TaGFyZWROb2RlKG5vZGUpOwotCi0gICAgaWYgKG1vdXNlRG93blRh
cmdldC5pbWFnZSgpCi0gICAgICAgICYmICFtb3VzZURvd25UYXJnZXQuYWJzb2x1dGVJbWFnZVVS
TCgpLmlzRW1wdHkoKQotICAgICAgICAmJiBmcmFtZS0+c2V0dGluZ3MoKS0+bG9hZHNJbWFnZXNB
dXRvbWF0aWNhbGx5KCkKLSAgICAgICAgJiYgbV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJj
ZUFjdGlvbkltYWdlKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmICghbW91c2VEb3du
VGFyZ2V0LmFic29sdXRlTGlua1VSTCgpLmlzRW1wdHkoKQotICAgICAgICAmJiBtX2RyYWdTb3Vy
Y2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uTGluawotICAgICAgICAmJiBtb3VzZURvd25UYXJn
ZXQuaXNMaXZlTGluaygpCi0gICAgICAgICYmIG1vdXNlRG93blRhcmdldC5VUkxFbGVtZW50KCkt
PnJlbmRlcmVyKCkgJiYgbW91c2VEb3duVGFyZ2V0LlVSTEVsZW1lbnQoKS0+cmVuZGVyZXIoKS0+
c3R5bGUoKS0+dXNlckRyYWcoKSAhPSBEUkFHX05PTkUpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgaWYgKG1vdXNlRG93blRhcmdldC5pc1NlbGVjdGVkKCkKLSAgICAgICAgJiYgbV9kcmFn
U291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gV2UgZWl0aGVyIGhhdmUgbm90aGlu
ZyB0byBkcmFnIG9yIHdlIGhhdmUgYSBzZWxlY3Rpb24gYW5kIHdlJ3JlIG5vdCBvdmVyIGEgZHJh
Z2dhYmxlIGVsZW1lbnQuCisgICAgcmV0dXJuIChzdGF0ZS5tX2RyYWdUeXBlICYgRHJhZ1NvdXJj
ZUFjdGlvblNlbGVjdGlvbikgPyBzdGFydE5vZGUgOiAwOwogfQogCiBzdGF0aWMgQ2FjaGVkSW1h
Z2UqIGdldENhY2hlZEltYWdlKEVsZW1lbnQqIGVsZW1lbnQpCkBAIC02OTUsMTkgKzY3MywxOSBA
QCBzdGF0aWMgSW50UG9pbnQgZHJhZ0xvY0ZvclNlbGVjdGlvbkRyYWcoRnJhbWUqIHNyYykKICAg
ICByZXR1cm4gSW50UG9pbnQoeHBvcywgeXBvcyk7CiB9CiAKLWJvb2wgRHJhZ0NvbnRyb2xsZXI6
OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRHJhZ09wZXJhdGlv
biBzcmNPcCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBv
aW50JiBkcmFnT3JpZ2luLCBib29sIGlzREhUTUxEcmFnKQorYm9vbCBEcmFnQ29udHJvbGxlcjo6
c3RhcnREcmFnKEZyYW1lKiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRp
b24gc3JjT3AsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQ
b2ludCYgZHJhZ09yaWdpbikKIHsKICAgICBBU1NFUlQoc3JjKTsKLSAgICBBU1NFUlQoY2xpcGJv
YXJkKTsKIAogICAgIGlmICghc3JjLT52aWV3KCkgfHwgIXNyYy0+Y29udGVudFJlbmRlcmVyKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEhpdFRlc3RSZXN1bHQgZHJhZ1NvdXJjZSA9
IEhpdFRlc3RSZXN1bHQoZHJhZ09yaWdpbik7Ci0gICAgZHJhZ1NvdXJjZSA9IHNyYy0+ZXZlbnRI
YW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGRyYWdPcmlnaW4sIHRydWUpOwotICAgIEtV
UkwgbGlua1VSTCA9IGRyYWdTb3VyY2UuYWJzb2x1dGVMaW5rVVJMKCk7Ci0gICAgS1VSTCBpbWFn
ZVVSTCA9IGRyYWdTb3VyY2UuYWJzb2x1dGVJbWFnZVVSTCgpOwotICAgIGJvb2wgaXNTZWxlY3Rl
ZCA9IGRyYWdTb3VyY2UuaXNTZWxlY3RlZCgpOworICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJl
c3VsdCA9IHNyYy0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGRyYWdPcmln
aW4sIHRydWUpOworICAgIGlmICghc3RhdGUubV9kcmFnU3JjLT5jb250YWlucyhoaXRUZXN0UmVz
dWx0LmlubmVyTm9kZSgpKSkKKyAgICAgICAgLy8gVGhlIG9yaWdpbmFsIG5vZGUgYmVpbmcgZHJh
Z2dlZCBpc24ndCB1bmRlciB0aGUgbW91c2UgZm9yIHNvbWUgcmVhc29uLi4uIGJhaWwgb3V0Lgor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgS1VSTCBsaW5rVVJMID0gaGl0VGVzdFJlc3VsdC5h
YnNvbHV0ZUxpbmtVUkwoKTsKKyAgICBLVVJMIGltYWdlVVJMID0gaGl0VGVzdFJlc3VsdC5hYnNv
bHV0ZUltYWdlVVJMKCk7CiAKICAgICBJbnRQb2ludCBtb3VzZURyYWdnZWRQb2ludCA9IHNyYy0+
dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGRyYWdFdmVudC5wb3MoKSk7CiAKQEAgLTcxOCwxNCAr
Njk2LDE0IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlw
Ym9hcmQqIGNsaXBib2FyZCwgRHJhZ09wZXJhdGlvbiBzCiAgICAgSW50UG9pbnQgZHJhZ0xvYygw
LCAwKTsKICAgICBJbnRQb2ludCBkcmFnSW1hZ2VPZmZzZXQoMCwgMCk7CiAKLSAgICBpZiAoaXNE
SFRNTERyYWcpCisgICAgQ2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBzdGF0ZS5tX2RyYWdDbGlwYm9h
cmQuZ2V0KCk7CisgICAgaWYgKHN0YXRlLm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvbkRI
VE1MKQogICAgICAgICBkcmFnSW1hZ2UgPSBjbGlwYm9hcmQtPmNyZWF0ZURyYWdJbWFnZShkcmFn
SW1hZ2VPZmZzZXQpOwotICAgIGVsc2UgewotICAgICAgICAvLyBUaGlzIGRyYWcgb3BlcmF0aW9u
IGlzIG5vdCBhIERIVE1MIGRyYWcgYW5kIG1heSBnbyBvdXRzaWRlIHRoZSBXZWJWaWV3LgotICAg
ICAgICAvLyBXZSBwcm92aWRlIGEgZGVmYXVsdCBzZXQgb2YgYWxsb3dlZCBkcmFnIG9wZXJhdGlv
bnMgdGhhdCBmb2xsb3dzIGZyb206CisgICAgaWYgKHN0YXRlLm1fZHJhZ1R5cGUgPT0gRHJhZ1Nv
dXJjZUFjdGlvblNlbGVjdGlvbiB8fCAhaW1hZ2VVUkwuaXNFbXB0eSgpIHx8ICFsaW5rVVJMLmlz
RW1wdHkoKSkKKyAgICAgICAgLy8gU2VsZWN0aW9uLCBpbWFnZSwgYW5kIGxpbmsgZHJhZ3MgcmVj
ZWl2ZSBhIGRlZmF1bHQgc2V0IG9mIGFsbG93ZWQgZHJhZyBvcGVyYXRpb25zIHRoYXQKKyAgICAg
ICAgLy8gZm9sbG93cyBmcm9tOgogICAgICAgICAvLyBodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jy
b3dzZXIvdHJ1bmsvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tP3Jldj00ODUyNiNM
MzQzMAotICAgICAgICBtX3NvdXJjZURyYWdPcGVyYXRpb24gPSAoRHJhZ09wZXJhdGlvbikoRHJh
Z09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uQ29weSk7Ci0gICAgfQorICAgICAgICBt
X3NvdXJjZURyYWdPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihtX3NvdXJj
ZURyYWdPcGVyYXRpb24gfCBEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Db3B5
KTsKIAogICAgIC8vIFdlIGFsbG93IERIVE1ML0pTIHRvIHNldCB0aGUgZHJhZyBpbWFnZSwgZXZl
biBpZiBpdHMgYSBsaW5rLCBpbWFnZSBvciB0ZXh0IHdlJ3JlIGRyYWdnaW5nLgogICAgIC8vIFRo
aXMgaXMgaW4gdGhlIHNwaXJpdCBvZiB0aGUgSUUgQVBJLCB3aGljaCBhbGxvd3Mgb3ZlcnJpZGlu
ZyBvZiBwYXN0ZWJvYXJkIGRhdGEgYW5kIERyYWdPcC4KQEAgLTczNiwyNiArNzE0LDQ0IEBAIGJv
b2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlwYm9hcmQqIGNsaXBi
b2FyZCwgRHJhZ09wZXJhdGlvbiBzCiAKICAgICBib29sIHN0YXJ0ZWREcmFnID0gdHJ1ZTsgLy8g
b3B0aW1pc20gLSB3ZSBhbG1vc3QgYWx3YXlzIG1hbmFnZSB0byBzdGFydCB0aGUgZHJhZwogCi0g
ICAgTm9kZSogbm9kZSA9IGRyYWdTb3VyY2UuaW5uZXJOb25TaGFyZWROb2RlKCk7CisgICAgTm9k
ZSogbm9kZSA9IHN0YXRlLm1fZHJhZ1NyYy5nZXQoKTsKIAogICAgIEltYWdlKiBpbWFnZSA9IGdl
dEltYWdlKHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKSk7Ci0gICAgaWYgKCFpbWFnZVVSTC5p
c0VtcHR5KCkgJiYgbm9kZSAmJiBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgaW1hZ2UKLSAgICAg
ICAgICAgICYmIChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpKSB7
CisgICAgaWYgKHN0YXRlLm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikg
eworICAgICAgICBpZiAoIWNsaXBib2FyZC0+aGFzRGF0YSgpKSB7CisgICAgICAgICAgICBpZiAo
aXNOb2RlSW5UZXh0Rm9ybUNvbnRyb2woc3JjLT5zZWxlY3Rpb24oKS0+c3RhcnQoKS5kZXByZWNh
dGVkTm9kZSgpKSkKKyAgICAgICAgICAgICAgICBjbGlwYm9hcmQtPndyaXRlUGxhaW5UZXh0KHNy
Yy0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0aW9uUmFuZ2UgPSBzcmMtPnNlbGVjdGlvbigp
LT50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAgICAgICAgICAgIEFTU0VSVChzZWxlY3Rpb25S
YW5nZSk7CisKKyAgICAgICAgICAgICAgICBjbGlwYm9hcmQtPndyaXRlUmFuZ2Uoc2VsZWN0aW9u
UmFuZ2UuZ2V0KCksIHNyYyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbV9j
bGllbnQtPndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uU2VsZWN0
aW9uLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQpOworICAgICAgICBpZiAoIWRyYWdJbWFnZSkgewor
ICAgICAgICAgICAgZHJhZ0ltYWdlID0gY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKHNyYyk7
CisgICAgICAgICAgICBkcmFnTG9jID0gZHJhZ0xvY0ZvclNlbGVjdGlvbkRyYWcoc3JjKTsKKyAg
ICAgICAgICAgIG1fZHJhZ09mZnNldCA9IEludFBvaW50KGRyYWdPcmlnaW4ueCgpIC0gZHJhZ0xv
Yy54KCksIGRyYWdPcmlnaW4ueSgpIC0gZHJhZ0xvYy55KCkpOworICAgICAgICB9CisgICAgICAg
IGRvU3lzdGVtRHJhZyhkcmFnSW1hZ2UsIGRyYWdMb2MsIGRyYWdPcmlnaW4sIGNsaXBib2FyZCwg
c3JjLCBmYWxzZSk7CisgICAgfSBlbHNlIGlmICghaW1hZ2VVUkwuaXNFbXB0eSgpICYmIG5vZGUg
JiYgbm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmIGltYWdlCisgICAgICAgICAgICAgICAmJiAobV9k
cmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKSkgewogICAgICAgICAvLyBX
ZSBzaG91bGRuJ3QgYmUgc3RhcnRpbmcgYSBkcmFnIGZvciBhbiBpbWFnZSB0aGF0IGNhbid0IHBy
b3ZpZGUgYW4gZXh0ZW5zaW9uLgogICAgICAgICAvLyBUaGlzIGlzIGFuIGVhcmx5IGRldGVjdGlv
biBmb3IgcHJvYmxlbXMgZW5jb3VudGVyZWQgbGF0ZXIgdXBvbiBkcm9wLgogICAgICAgICBBU1NF
UlQoIWltYWdlLT5maWxlbmFtZUV4dGVuc2lvbigpLmlzRW1wdHkoKSk7CiAgICAgICAgIEVsZW1l
bnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7CiAgICAgICAgIGlmICgh
Y2xpcGJvYXJkLT5oYXNEYXRhKCkpIHsKICAgICAgICAgICAgIG1fZHJhZ2dpbmdJbWFnZVVSTCA9
IGltYWdlVVJMOwotICAgICAgICAgICAgcHJlcGFyZUNsaXBib2FyZEZvckltYWdlRHJhZyhzcmMs
IGNsaXBib2FyZCwgZWxlbWVudCwgbGlua1VSTCwgaW1hZ2VVUkwsIGRyYWdTb3VyY2UuYWx0RGlz
cGxheVN0cmluZygpKTsKKyAgICAgICAgICAgIHByZXBhcmVDbGlwYm9hcmRGb3JJbWFnZURyYWco
c3JjLCBjbGlwYm9hcmQsIGVsZW1lbnQsIGxpbmtVUkwsIGltYWdlVVJMLCBoaXRUZXN0UmVzdWx0
LmFsdERpc3BsYXlTdHJpbmcoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBtX2NsaWVudC0+d2ls
bFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25JbWFnZSwgZHJhZ09yaWdp
biwgY2xpcGJvYXJkKTsKIAogICAgICAgICBpZiAoIWRyYWdJbWFnZSkgewotICAgICAgICAgICAg
SW50UmVjdCBpbWFnZVJlY3QgPSBkcmFnU291cmNlLmltYWdlUmVjdCgpOworICAgICAgICAgICAg
SW50UmVjdCBpbWFnZVJlY3QgPSBoaXRUZXN0UmVzdWx0LmltYWdlUmVjdCgpOwogICAgICAgICAg
ICAgaW1hZ2VSZWN0LnNldExvY2F0aW9uKG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+d2lu
ZG93VG9Db250ZW50cyhzcmMtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhpbWFnZVJlY3QubG9j
YXRpb24oKSkpKTsKLSAgICAgICAgICAgIGRvSW1hZ2VEcmFnKGVsZW1lbnQsIGRyYWdPcmlnaW4s
IGRyYWdTb3VyY2UuaW1hZ2VSZWN0KCksIGNsaXBib2FyZCwgc3JjLCBtX2RyYWdPZmZzZXQpOwor
ICAgICAgICAgICAgZG9JbWFnZURyYWcoZWxlbWVudCwgZHJhZ09yaWdpbiwgaGl0VGVzdFJlc3Vs
dC5pbWFnZVJlY3QoKSwgY2xpcGJvYXJkLCBzcmMsIG1fZHJhZ09mZnNldCk7CiAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgLy8gREhUTUwgZGVmaW5lZCBkcmFnIGltYWdlCiAgICAgICAgICAg
ICBkb1N5c3RlbURyYWcoZHJhZ0ltYWdlLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQs
IHNyYywgZmFsc2UpOwpAQCAtNzY0LDcgKzc2MCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0
YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRHJhZ09wZXJhdGlvbiBz
CiAgICAgICAgIGlmICghY2xpcGJvYXJkLT5oYXNEYXRhKCkpCiAgICAgICAgICAgICAvLyBTaW1w
bGlmeSB3aGl0ZXNwYWNlIHNvIHRoZSB0aXRsZSBwdXQgb24gdGhlIGNsaXBib2FyZCByZXNlbWJs
ZXMgd2hhdCB0aGUgdXNlciBzZWVzCiAgICAgICAgICAgICAvLyBvbiB0aGUgd2ViIHBhZ2UuIFRo
aXMgaW5jbHVkZXMgcmVwbGFjaW5nIG5ld2xpbmVzIHdpdGggc3BhY2VzLgotICAgICAgICAgICAg
Y2xpcGJvYXJkLT53cml0ZVVSTChsaW5rVVJMLCBkcmFnU291cmNlLnRleHRDb250ZW50KCkuc2lt
cGxpZnlXaGl0ZVNwYWNlKCksIHNyYyk7CisgICAgICAgICAgICBjbGlwYm9hcmQtPndyaXRlVVJM
KGxpbmtVUkwsIGhpdFRlc3RSZXN1bHQudGV4dENvbnRlbnQoKS5zaW1wbGlmeVdoaXRlU3BhY2Uo
KSwgc3JjKTsKIAogICAgICAgICBpZiAoc3JjLT5zZWxlY3Rpb24oKS0+aXNDYXJldCgpICYmIHNy
Yy0+c2VsZWN0aW9uKCktPmlzQ29udGVudEVkaXRhYmxlKCkpIHsKICAgICAgICAgICAgIC8vIGEg
dXNlciBjYW4gaW5pdGlhdGUgYSBkcmFnIG9uIGEgbGluayB3aXRob3V0IGhhdmluZyBhbnkgdGV4
dApAQCAtNzc4LDM3ICs3NzQsMTkgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZy
YW1lKiBzcmMsIENsaXBib2FyZCogY2xpcGJvYXJkLCBEcmFnT3BlcmF0aW9uIHMKIAogICAgICAg
ICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25M
aW5rLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQpOwogICAgICAgICBpZiAoIWRyYWdJbWFnZSkgewot
ICAgICAgICAgICAgZHJhZ0ltYWdlID0gY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhsaW5rVVJMLCBk
cmFnU291cmNlLnRleHRDb250ZW50KCksIHNyYyk7CisgICAgICAgICAgICBkcmFnSW1hZ2UgPSBj
cmVhdGVEcmFnSW1hZ2VGb3JMaW5rKGxpbmtVUkwsIGhpdFRlc3RSZXN1bHQudGV4dENvbnRlbnQo
KSwgc3JjKTsKICAgICAgICAgICAgIEludFNpemUgc2l6ZSA9IGRyYWdJbWFnZVNpemUoZHJhZ0lt
YWdlKTsKICAgICAgICAgICAgIG1fZHJhZ09mZnNldCA9IEludFBvaW50KC1zaXplLndpZHRoKCkg
LyAyLCAtTGlua0RyYWdCb3JkZXJJbnNldCk7CiAgICAgICAgICAgICBkcmFnTG9jID0gSW50UG9p
bnQobW91c2VEcmFnZ2VkUG9pbnQueCgpICsgbV9kcmFnT2Zmc2V0LngoKSwgbW91c2VEcmFnZ2Vk
UG9pbnQueSgpICsgbV9kcmFnT2Zmc2V0LnkoKSk7CiAgICAgICAgIH0KICAgICAgICAgZG9TeXN0
ZW1EcmFnKGRyYWdJbWFnZSwgZHJhZ0xvYywgbW91c2VEcmFnZ2VkUG9pbnQsIGNsaXBib2FyZCwg
c3JjLCB0cnVlKTsKLSAgICB9IGVsc2UgaWYgKGlzU2VsZWN0ZWQgJiYgKG1fZHJhZ1NvdXJjZUFj
dGlvbiAmIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pKSB7Ci0gICAgICAgIGlmICghY2xpcGJv
YXJkLT5oYXNEYXRhKCkpIHsKLSAgICAgICAgICAgIGlmIChpc05vZGVJblRleHRGb3JtQ29udHJv
bChzcmMtPnNlbGVjdGlvbigpLT5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCkpKQotICAgICAgICAg
ICAgICAgIGNsaXBib2FyZC0+d3JpdGVQbGFpblRleHQoc3JjLT5lZGl0b3IoKS0+c2VsZWN0ZWRU
ZXh0KCkpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdl
PiBzZWxlY3Rpb25SYW5nZSA9IHNyYy0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCk7
Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHNlbGVjdGlvblJhbmdlKTsKLQotICAgICAgICAgICAg
ICAgIGNsaXBib2FyZC0+d3JpdGVSYW5nZShzZWxlY3Rpb25SYW5nZS5nZXQoKSwgc3JjKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFn
U291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24sIGRyYWdPcmlnaW4sIGNsaXBi
b2FyZCk7Ci0gICAgICAgIGlmICghZHJhZ0ltYWdlKSB7Ci0gICAgICAgICAgICBkcmFnSW1hZ2Ug
PSBjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24oc3JjKTsKLSAgICAgICAgICAgIGRyYWdMb2Mg
PSBkcmFnTG9jRm9yU2VsZWN0aW9uRHJhZyhzcmMpOwotICAgICAgICAgICAgbV9kcmFnT2Zmc2V0
ID0gSW50UG9pbnQoKGludCkoZHJhZ09yaWdpbi54KCkgLSBkcmFnTG9jLngoKSksIChpbnQpKGRy
YWdPcmlnaW4ueSgpIC0gZHJhZ0xvYy55KCkpKTsKLSAgICAgICAgfQotICAgICAgICBkb1N5c3Rl
bURyYWcoZHJhZ0ltYWdlLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQsIHNyYywgZmFs
c2UpOwotICAgIH0gZWxzZSBpZiAoaXNESFRNTERyYWcpIHsKKyAgICB9IGVsc2UgaWYgKHN0YXRl
Lm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKSB7CiAgICAgICAgIEFTU0VSVCht
X2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uREhUTUwpOwogICAgICAgICBtX2Ns
aWVudC0+d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25ESFRNTCwg
ZHJhZ09yaWdpbiwgY2xpcGJvYXJkKTsKICAgICAgICAgZG9TeXN0ZW1EcmFnKGRyYWdJbWFnZSwg
ZHJhZ0xvYywgZHJhZ09yaWdpbiwgY2xpcGJvYXJkLCBzcmMsIGZhbHNlKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICAvLyBPbmx5IHdheSBJIGtub3cgdG8gZ2V0IGhlcmUgaXMgaWYgdG8gZ2V0IGhl
cmUgaXMgaWYgdGhlIG9yaWdpbmFsIGVsZW1lbnQgY2xpY2tlZCBvbiBpbiB0aGUgbW91c2Vkb3du
IGlzIG5vIGxvbmdlcgotICAgICAgICAvLyB1bmRlciB0aGUgbW91c2Vkb3duIHBvaW50LCBzbyBs
aW5rVVJMLCBpbWFnZVVSTCBhbmQgaXNTZWxlY3RlZCBhcmUgYWxsIGZhbHNlL2VtcHR5LgorICAg
ICAgICAvLyBkcmFnZ2FibGVOb2RlKCkgZGV0ZXJtaW5lZCBhbiBpbWFnZSBvciBsaW5rIG5vZGUg
d2FzIGRyYWdnYWJsZSwgYnV0IGl0IHR1cm5zIG91dCB0aGUKKyAgICAgICAgLy8gaW1hZ2Ugb3Ig
bGluayBoYWQgbm8gVVJMLCBzbyB0aGVyZSBpcyBub3RoaW5nIHRvIGRyYWcuCiAgICAgICAgIHN0
YXJ0ZWREcmFnID0gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmgKaW5kZXggYmU4YzgzNGFlZTYxNTY5YmRlMjFjOGI5MGZhZTljMDRmYTM1YTBiYS4uMjYxYThk
NTNmNzM2NThiMDcxZjIxMDU2YWU1OGIyNGIxYmI0NTk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgRG9jdW1lbnQ7CiAgICAgY2xhc3MgRHJhZ0NsaWVudDsKICAgICBjbGFzcyBEcmFnRGF0
YTsKKyAgICBzdHJ1Y3QgRHJhZ1N0YXRlOwogICAgIGNsYXNzIEVsZW1lbnQ7CiAgICAgY2xhc3Mg
RnJhbWU7CiAgICAgY2xhc3MgRnJhbWVTZWxlY3Rpb247CkBAIC03NSwxMyArNzYsMTIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBEcmFnRGVzdGluYXRpb25BY3Rpb24gZHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnRGVzdGluYXRpb25BY3Rpb247IH0K
ICAgICAgICAgRHJhZ1NvdXJjZUFjdGlvbiBkZWxlZ2F0ZURyYWdTb3VyY2VBY3Rpb24oY29uc3Qg
SW50UG9pbnQmIHBhZ2VQb2ludCk7CiAgICAgICAgIAotICAgICAgICBOb2RlKiBkcmFnZ2FibGVO
b2RlKGNvbnN0IEZyYW1lKiwgTm9kZSosIGJvb2wgZGh0bWxPSywgYm9vbCB1YU9LLCBpbnQgeCwg
aW50IHksIGJvb2wmIGRodG1sV2lsbERyYWcpIGNvbnN0OwotICAgICAgICBib29sIG1heVN0YXJ0
RHJhZ0F0RXZlbnRMb2NhdGlvbihjb25zdCBGcmFtZSosIGNvbnN0IEludFBvaW50JiBmcmFtZVBv
cywgTm9kZSopIGNvbnN0OworICAgICAgICBOb2RlKiBkcmFnZ2FibGVOb2RlKGNvbnN0IEZyYW1l
KiwgTm9kZSosIGNvbnN0IEludFBvaW50JiwgRHJhZ1N0YXRlJikgY29uc3Q7CiAgICAgICAgIHZv
aWQgZHJhZ0VuZGVkKCk7CiAgICAgICAgIAogICAgICAgICB2b2lkIHBsYWNlRHJhZ0NhcmV0KGNv
bnN0IEludFBvaW50Jik7CiAgICAgICAgIAotICAgICAgICBib29sIHN0YXJ0RHJhZyhGcmFtZSog
c3JjLCBDbGlwYm9hcmQqLCBEcmFnT3BlcmF0aW9uIHNyY09wLCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIGJvb2wgaXNESFRN
TERyYWcpOworICAgICAgICBib29sIHN0YXJ0RHJhZyhGcmFtZSogc3JjLCBjb25zdCBEcmFnU3Rh
dGUmLCBEcmFnT3BlcmF0aW9uIHNyY09wLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdF
dmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4pOwogICAgICAgICBzdGF0aWMgY29uc3Qg
SW50U2l6ZSYgbWF4RHJhZ0ltYWdlU2l6ZSgpOwogICAgICAgICAKICAgICAgICAgc3RhdGljIGNv
bnN0IGludCBMaW5rRHJhZ0JvcmRlckluc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ1N0YXRlLmgKaW5kZXgg
NmIxZjY3NTZlM2QyMWU3N2ZiMTliMGI5ODdiMjQwMzFkNzBlZDBmYS4uNWFiZDJhMDFjZmYxOTYz
M2I3ZWVjYmYzNWIxZjdjYTJkNjhhMjg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5oCkBAIC0y
NiwyMyArMjYsMjkgQEAKICNpZm5kZWYgRHJhZ1N0YXRlX2gKICNkZWZpbmUgRHJhZ1N0YXRlX2gK
IAorI2luY2x1ZGUgIkRyYWdBY3Rpb25zLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ2xpcGJvYXJkOworY2xhc3MgTm9kZTsKKwogc3Ry
dWN0IERyYWdTdGF0ZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHJhZ1N0YXRlKTsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICBlbnVtIEV2ZW50RGlzcGF0
Y2hQb2xpY3kgeworICAgICAgICBET19OT1RfRElTUEFUQ0hfRVZFTlRTLAorICAgICAgICBESVNQ
QVRDSF9FVkVOVFMsCisgICAgfTsKICAgICBEcmFnU3RhdGUoKSB7IH0KKyAgICBib29sIHNob3Vs
ZERpc3BhdGNoRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudERpc3BhdGNoUG9saWN5ID09
IERJU1BBVENIX0VWRU5UUzsgfQogICAgIFJlZlB0cjxOb2RlPiBtX2RyYWdTcmM7IC8vIGVsZW1l
bnQgdGhhdCBtYXkgYmUgYSBkcmFnIHNvdXJjZSwgZm9yIHRoZSBjdXJyZW50IG1vdXNlIGdlc3R1
cmUKLSAgICBib29sIG1fZHJhZ1NyY0lzTGluazsKLSAgICBib29sIG1fZHJhZ1NyY0lzSW1hZ2U7
Ci0gICAgYm9vbCBtX2RyYWdTcmNJblNlbGVjdGlvbjsKLSAgICBib29sIG1fZHJhZ1NyY01heUJl
REhUTUw7Ci0gICAgYm9vbCBtX2RyYWdTcmNNYXlCZVVBOyAvLyBBcmUgREhUTUwgYW5kL29yIHRo
ZSBVc2VyQWdlbnQgYWxsb3dlZCB0byBkcmFnIG91dD8KLSAgICBib29sIG1fZHJhZ1NyY0lzREhU
TUw7CisgICAgRXZlbnREaXNwYXRjaFBvbGljeSBtX2V2ZW50RGlzcGF0Y2hQb2xpY3k7CisgICAg
RHJhZ1NvdXJjZUFjdGlvbiBtX2RyYWdUeXBlOwogICAgIFJlZlB0cjxDbGlwYm9hcmQ+IG1fZHJh
Z0NsaXBib2FyZDsgLy8gdXNlZCBvbiBvbmx5IHRoZSBzb3VyY2Ugc2lkZSBvZiBkcmFnZ2luZwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGQyMTU5NWFiYzVhNWIx
MjA1NWQxOTJiMjM3YzJlYjQyYzBjYWU1MjMuLmYyMTM3MWMwOWNmYzc1ZjMyYjY0OTkyOGE2Y2Ni
ZTk4ZTM2N2E5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTc4LDYg
Kzc4LDcgQEAKICNpbmNsdWRlICJVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1
ZGUgIldoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIgorI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC01ODcsMTIgKzU4OCw2IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpldmVudE1heVN0YXJ0RHJhZyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2ZW50KSBjb25zdAogICAgIGlmIChldmVudC5idXR0b24oKSAhPSBMZWZ0QnV0dG9uIHx8IGV2
ZW50LmNsaWNrQ291bnQoKSAhPSAxKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAg
Ym9vbCBESFRNTEZsYWc7Ci0gICAgYm9vbCBVQUZsYWc7Ci0gICAgYWxsb3dESFRNTERyYWcoREhU
TUxGbGFnLCBVQUZsYWcpOwotICAgIGlmICghREhUTUxGbGFnICYmICFVQUZsYWcpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQogICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsK
ICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYwMSwxMSArNTk2LDEy
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpldmVudE1heVN0YXJ0RHJhZyhjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIGV2ZW50KSBjb25zdAogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCisgICAgdXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCk7CiAgICAgSGl0VGVz
dFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOwogICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zKCkpKTsKICAgICBt
X2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+bGF5ZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1
bHQpOwotICAgIGJvb2wgc3JjSXNESFRNTDsKLSAgICByZXR1cm4gcmVzdWx0LmlubmVyTm9kZSgp
ICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCktPmRyYWdnYWJsZU5vZGUobV9mcmFtZSwgcmVzdWx0
LmlubmVyTm9kZSgpLCBESFRNTEZsYWcsIFVBRmxhZywgcmVzdWx0LnBvaW50KCkueCgpLCByZXN1
bHQucG9pbnQoKS55KCksIHNyY0lzREhUTUwpOworICAgIERyYWdTdGF0ZSBzdGF0ZTsKKyAgICBy
ZXR1cm4gcmVzdWx0LmlubmVyTm9kZSgpICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCktPmRyYWdn
YWJsZU5vZGUobV9mcmFtZSwgcmVzdWx0LmlubmVyTm9kZSgpLCByZXN1bHQucG9pbnQoKSwgc3Rh
dGUpOwogfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFn
KCkKQEAgLTg5MiwyNSArODg4LDIwIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpzZXRBdXRvc2Nyb2xs
UmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCi12b2lkIEV2ZW50SGFuZGxlcjo6YWxsb3dESFRNTERyYWcoYm9vbCYgZmxhZ0RIVE1M
LCBib29sJiBmbGFnVUEpIGNvbnN0CitEcmFnU291cmNlQWN0aW9uIEV2ZW50SGFuZGxlcjo6dXBk
YXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCkgY29uc3QKIHsKLSAgICBmbGFnREhUTUwgPSBm
YWxzZTsKLSAgICBmbGFnVUEgPSBmYWxzZTsKLQogICAgIGlmICghbV9mcmFtZSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gRHJhZ1NvdXJjZUFjdGlvbk5vbmU7CiAKICAgICBQYWdl
KiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gRHJhZ1NvdXJjZUFjdGlvbk5vbmU7CiAKICAgICBGcmFtZVZpZXcq
IHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7CiAgICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiBEcmFnU291cmNlQWN0aW9uTm9uZTsKIAotICAgIHVuc2lnbmVkIG1h
c2sgPSBwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5kZWxlZ2F0ZURyYWdTb3VyY2VBY3Rpb24odmll
dy0+Y29udGVudHNUb1dpbmRvdyhtX21vdXNlRG93blBvcykpOwotICAgIGZsYWdESFRNTCA9ICht
YXNrICYgRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKSAhPSBEcmFnU291cmNlQWN0aW9uTm9uZTsKLSAg
ICBmbGFnVUEgPSAoKG1hc2sgJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpIHx8IChtYXNrICYgRHJh
Z1NvdXJjZUFjdGlvbkxpbmspIHx8IChtYXNrICYgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikp
OworICAgIHJldHVybiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5kZWxlZ2F0ZURyYWdTb3VyY2VB
Y3Rpb24odmlldy0+Y29udGVudHNUb1dpbmRvdyhtX21vdXNlRG93blBvcykpOwogfQogI2VuZGlm
IC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgCkBAIC0xODAyLDcgKzE3OTMsNyBAQCBib29s
IEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldmVudCwgQ2xpcGJvYXJkKgogICAgICAgICAvLyBNb3Jlb3ZlciwgdGhpcyBvcmRlcmluZyBj
b25mb3JtcyB0byBzZWN0aW9uIDcuOS40IG9mIHRoZSBIVE1MIDUgc3BlYy4gPGh0dHA6Ly9kZXYu
dzMub3JnL2h0bWw1L3NwZWMvT3ZlcnZpZXcuaHRtbCNkcmFnLWFuZC1kcm9wLXByb2Nlc3Npbmct
bW9kZWw+LgogICAgICAgICBpZiAobmV3VGFyZ2V0ICYmIGNhbkhhbmRsZURyYWdBbmREcm9wRm9y
VGFyZ2V0KFVwZGF0ZURyYWdBbmREcm9wLCBuZXdUYXJnZXQsIGV2ZW50LCBjbGlwYm9hcmQsICZh
Y2NlcHQpKSB7CiAgICAgICAgICAgICAvLyBBcyBwZXIgc2VjdGlvbiA3LjkuNCBvZiB0aGUgSFRN
TCA1IHNwZWMuLCB3ZSBtdXN0IGFsd2F5cyBmaXJlIGEgZHJhZyBldmVudCBiZWZvcmUgZmlyaW5n
IGEgZHJhZ2VudGVyLCBkcmFnbGVhdmUsIG9yIGRyYWdvdmVyIGV2ZW50LgotICAgICAgICAgICAg
aWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyAmJiBkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURI
VE1MKSB7CisgICAgICAgICAgICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjICYmIGRyYWdTdGF0
ZSgpLnNob3VsZERpc3BhdGNoRXZlbnRzKCkpIHsKICAgICAgICAgICAgICAgICAvLyBmb3Igbm93
IHdlIGRvbid0IGNhcmUgaWYgZXZlbnQgaGFuZGxlciBjYW5jZWxzIGRlZmF1bHQgYmVoYXZpb3Is
IHNpbmNlIHRoZXJlIGlzIG5vbmUKICAgICAgICAgICAgICAgICBkaXNwYXRjaERyYWdTcmNFdmVu
dChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVudCk7CiAgICAgICAgICAgICB9CkBAIC0xODIw
LDcgKzE4MTEsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkKgogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGlmIChuZXdUYXJnZXQgJiYgY2FuSGFuZGxlRHJhZ0FuZERyb3BGb3JUYXJnZXQoVXBkYXRl
RHJhZ0FuZERyb3AsIG5ld1RhcmdldCwgZXZlbnQsIGNsaXBib2FyZCwgJmFjY2VwdCkpIHsKICAg
ICAgICAgICAgIC8vIE5vdGUsIHdoZW4gZGVhbGluZyB3aXRoIHN1Yi1mcmFtZXMsIHdlIG1heSBu
ZWVkIHRvIGZpcmUgb25seSBhIGRyYWdvdmVyIGV2ZW50IGFzIGEgZHJhZyBldmVudCBtYXkgaGF2
ZSBiZWVuIGZpcmVkIGVhcmxpZXIuCi0gICAgICAgICAgICBpZiAoIW1fc2hvdWxkT25seUZpcmVE
cmFnT3ZlckV2ZW50ICYmIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyAmJiBkcmFnU3RhdGUoKS5tX2Ry
YWdTcmNNYXlCZURIVE1MKSB7CisgICAgICAgICAgICBpZiAoIW1fc2hvdWxkT25seUZpcmVEcmFn
T3ZlckV2ZW50ICYmIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyAmJiBkcmFnU3RhdGUoKS5zaG91bGRE
aXNwYXRjaEV2ZW50cygpKSB7CiAgICAgICAgICAgICAgICAgLy8gZm9yIG5vdyB3ZSBkb24ndCBj
YXJlIGlmIGV2ZW50IGhhbmRsZXIgY2FuY2VscyBkZWZhdWx0IGJlaGF2aW9yLCBzaW5jZSB0aGVy
ZSBpcyBub25lCiAgICAgICAgICAgICAgICAgZGlzcGF0Y2hEcmFnU3JjRXZlbnQoZXZlbnROYW1l
cygpLmRyYWdFdmVudCwgZXZlbnQpOwogICAgICAgICAgICAgfQpAQCAtMTgzNiw3ICsxODI3LDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZXZlbnQsIENsaXBib2FyZCoKIHZvaWQgRXZlbnRIYW5kbGVyOjpjYW5jZWxEcmFn
QW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBDbGlwYm9hcmQqIGNsaXBi
b2FyZCkKIHsKICAgICBpZiAobV9kcmFnVGFyZ2V0ICYmIGNhbkhhbmRsZURyYWdBbmREcm9wRm9y
VGFyZ2V0KENhbmNlbERyYWdBbmREcm9wLCBtX2RyYWdUYXJnZXQuZ2V0KCksIGV2ZW50LCBjbGlw
Ym9hcmQpKSB7Ci0gICAgICAgIGlmIChkcmFnU3RhdGUoKS5tX2RyYWdTcmMgJiYgZHJhZ1N0YXRl
KCkubV9kcmFnU3JjTWF5QmVESFRNTCkKKyAgICAgICAgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1Ny
YyAmJiBkcmFnU3RhdGUoKS5zaG91bGREaXNwYXRjaEV2ZW50cygpKQogICAgICAgICAgICAgZGlz
cGF0Y2hEcmFnU3JjRXZlbnQoZXZlbnROYW1lcygpLmRyYWdFdmVudCwgZXZlbnQpOwogICAgICAg
ICBkaXNwYXRjaERyYWdFdmVudChldmVudE5hbWVzKCkuZHJhZ2xlYXZlRXZlbnQsIG1fZHJhZ1Rh
cmdldC5nZXQoKSwgZXZlbnQsIGNsaXBib2FyZCk7CiAgICAgfQpAQCAtMjYyOSwxMiArMjYyMCwy
MiBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChjb25zdCBJbnRQ
b2ludCYgZHJhZ1ZpZXdwb3J0TG9jYXRpb24pCiAgICAgSW50U2l6ZSBkZWx0YSA9IGRyYWdMb2Nh
dGlvbiAtIG1fbW91c2VEb3duUG9zOwogICAgIAogICAgIGludCB0aHJlc2hvbGQgPSBHZW5lcmFs
RHJhZ0h5c3RlcmVzaXM7Ci0gICAgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzSW1hZ2UpCisg
ICAgc3dpdGNoIChkcmFnU3RhdGUoKS5tX2RyYWdUeXBlKSB7CisgICAgY2FzZSBEcmFnU291cmNl
QWN0aW9uU2VsZWN0aW9uOgorICAgICAgICB0aHJlc2hvbGQgPSBUZXh0RHJhZ0h5c3RlcmVzaXM7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbkltYWdlOgogICAgICAg
ICB0aHJlc2hvbGQgPSBJbWFnZURyYWdIeXN0ZXJlc2lzOwotICAgIGVsc2UgaWYgKGRyYWdTdGF0
ZSgpLm1fZHJhZ1NyY0lzTGluaykKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEcmFnU291cmNl
QWN0aW9uTGluazoKICAgICAgICAgdGhyZXNob2xkID0gTGlua0RyYWdIeXN0ZXJlc2lzOwotICAg
IGVsc2UgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0luU2VsZWN0aW9uKQotICAgICAgICB0aHJl
c2hvbGQgPSBUZXh0RHJhZ0h5c3RlcmVzaXM7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRHJh
Z1NvdXJjZUFjdGlvbkRIVE1MOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIERyYWdTb3VyY2VB
Y3Rpb25Ob25lOgorICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbkFueToKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgfQogICAgIAogICAgIHJldHVybiBhYnMoZGVsdGEud2lkdGgo
KSkgPj0gdGhyZXNob2xkIHx8IGFicyhkZWx0YS5oZWlnaHQoKSkgPj0gdGhyZXNob2xkOwogfQpA
QCAtMjY0Nyw3ICsyNjQ4LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmZyZWVDbGlwYm9hcmQoKQog
CiB2b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCwgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCiB7Ci0gICAgaWYgKGRyYWdT
dGF0ZSgpLm1fZHJhZ1NyYyAmJiBkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MKSB7Cisg
ICAgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyAmJiBkcmFnU3RhdGUoKS5zaG91bGREaXNwYXRj
aEV2ZW50cygpKSB7CiAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ0NsaXBib2FyZC0+c2V0RGVz
dGluYXRpb25PcGVyYXRpb24ob3BlcmF0aW9uKTsKICAgICAgICAgLy8gZm9yIG5vdyB3ZSBkb24n
dCBjYXJlIGlmIGV2ZW50IGhhbmRsZXIgY2FuY2VscyBkZWZhdWx0IGJlaGF2aW9yLCBzaW5jZSB0
aGVyZSBpcyBub25lCiAgICAgICAgIGRpc3BhdGNoRHJhZ1NyY0V2ZW50KGV2ZW50TmFtZXMoKS5k
cmFnZW5kRXZlbnQsIGV2ZW50KTsKQEAgLTI2NjUsNiArMjY2NiwxMiBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6ZGlzcGF0Y2hEcmFnU3JjRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IGNvbnN0IFBsYQogICAgIHJldHVybiAhZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnRUeXBlLCBkcmFn
U3RhdGUoKS5tX2RyYWdTcmMuZ2V0KCksIGV2ZW50LCBkcmFnU3RhdGUoKS5tX2RyYWdDbGlwYm9h
cmQuZ2V0KCkpOwogfQogICAgIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0YXRpYyBib29sIEV4
YWN0bHlPbmVCaXRTZXQoVCBuKQoreworICAgIHJldHVybiBuICYmICEobiAmIChuIC0gMSkpOwor
fQorCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhp
dFRlc3RSZXN1bHRzJiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQuZXZlbnQoKS5idXR0b24oKSAh
PSBMZWZ0QnV0dG9uIHx8IGV2ZW50LmV2ZW50KCkuZXZlbnRUeXBlKCkgIT0gTW91c2VFdmVudE1v
dmVkKSB7CkBAIC0yNjgyLDUwICsyNjg5LDYxIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVE
cmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogICAgIC8vIENh
cmVmdWwgdGhhdCB0aGUgZHJhZyBzdGFydGluZyBsb2dpYyBzdGF5cyBpbiBzeW5jIHdpdGggZXZl
bnRNYXlTdGFydERyYWcoKQogICAgIAogICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0RHJhZyAm
JiAhZHJhZ1N0YXRlKCkubV9kcmFnU3JjKSB7Ci0gICAgICAgIGFsbG93REhUTUxEcmFnKGRyYWdT
dGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwsIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlVUEp
OwotICAgICAgICBpZiAoIWRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwgJiYgIWRyYWdT
dGF0ZSgpLm1fZHJhZ1NyY01heUJlVUEpCi0gICAgICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0
RHJhZyA9IGZhbHNlOyAvLyBubyBlbGVtZW50IGlzIGRyYWdnYWJsZQotICAgIH0KKyAgICAgICAg
ZHJhZ1N0YXRlKCkubV9ldmVudERpc3BhdGNoUG9saWN5ID0gKHVwZGF0ZURyYWdTb3VyY2VBY3Rp
b25zQWxsb3dlZCgpICYgRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKSA/IERyYWdTdGF0ZTo6RElTUEFU
Q0hfRVZFTlRTIDogRHJhZ1N0YXRlOjpET19OT1RfRElTUEFUQ0hfRVZFTlRTOwogCi0gICAgaWYg
KG1fbW91c2VEb3duTWF5U3RhcnREcmFnICYmICFkcmFnU3RhdGUoKS5tX2RyYWdTcmMpIHsKICAg
ICAgICAgLy8gdHJ5IHRvIGZpbmQgYW4gZWxlbWVudCB0aGF0IHdhbnRzIHRvIGJlIGRyYWdnZWQK
ICAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkp
OworICAgICAgICAvLyBGSVhNRTogVGhlIGluY29uc2lzdGVudCB1c2Ugb2YgbV9tb3VzZURvd25Q
b3MgYW5kIHZpZXctPndpbmRvd1RvQ29udGVudHMoKSBpcyBvZGQuCiAgICAgICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0KG1fbW91c2VEb3duUG9zKTsKICAgICAgICAgbV9mcmFtZS0+Y29udGVudFJl
bmRlcmVyKCktPmxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICAgICAgTm9k
ZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKICAgICAgICAgaWYgKG5vZGUgJiYgbV9mcmFt
ZS0+cGFnZSgpKQotICAgICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0gbV9mcmFtZS0+
cGFnZSgpLT5kcmFnQ29udHJvbGxlcigpLT5kcmFnZ2FibGVOb2RlKG1fZnJhbWUsIG5vZGUsIGRy
YWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwsIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJl
VUEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9tb3VzZURvd25Qb3MueCgpLCBtX21v
dXNlRG93blBvcy55KCksIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzREhUTUwpOworICAgICAgICAg
ICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0gbV9mcmFtZS0+cGFnZSgpLT5kcmFnQ29udHJvbGxl
cigpLT5kcmFnZ2FibGVOb2RlKG1fZnJhbWUsIG5vZGUsIG1fbW91c2VEb3duUG9zLCBkcmFnU3Rh
dGUoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyA9
IDA7CiAgICAgICAgIAogICAgICAgICBpZiAoIWRyYWdTdGF0ZSgpLm1fZHJhZ1NyYykKICAgICAg
ICAgICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0gZmFsc2U7IC8vIG5vIGVsZW1lbnQgaXMg
ZHJhZ2dhYmxlCi0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8gcmVtZW1iZXIgc29tZSBm
YWN0cyBhYm91dCB0aGlzIHNvdXJjZSwgd2hpbGUgd2UgaGF2ZSBhIEhpdFRlc3RSZXN1bHQgaGFu
ZHkKLSAgICAgICAgICAgIG5vZGUgPSByZXN1bHQuVVJMRWxlbWVudCgpOwotICAgICAgICAgICAg
ZHJhZ1N0YXRlKCkubV9kcmFnU3JjSXNMaW5rID0gbm9kZSAmJiBub2RlLT5pc0xpbmsoKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgbm9kZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUo
KTsKLSAgICAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzSW1hZ2UgPSBub2RlICYmIG5v
ZGUtPnJlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdTcmNJblNlbGVjdGlvbiA9IG1fZnJh
bWUtPnNlbGVjdGlvbigpLT5jb250YWlucyhtX21vdXNlRG93blBvcyk7Ci0gICAgICAgIH0gICAg
ICAgICAgICAgICAgCiAgICAgfQogICAgIAogICAgIC8vIEZvciBkcmFncyBzdGFydGluZyBpbiB0
aGUgc2VsZWN0aW9uLCB0aGUgdXNlciBtdXN0IHdhaXQgYmV0d2VlbiB0aGUgbW91c2Vkb3duIGFu
ZCBtb3VzZWRyYWcsCiAgICAgLy8gb3IgZWxzZSB3ZSBiYWlsIG9uIHRoZSBkcmFnZ2luZyBzdHVm
ZiBhbmQgYWxsb3cgc2VsZWN0aW9uIHRvIG9jY3VyCi0gICAgaWYgKG1fbW91c2VEb3duTWF5U3Rh
cnREcmFnICYmICFkcmFnU3RhdGUoKS5tX2RyYWdTcmNJc0ltYWdlICYmIGRyYWdTdGF0ZSgpLm1f
ZHJhZ1NyY0luU2VsZWN0aW9uICYmIGV2ZW50LmV2ZW50KCkudGltZXN0YW1wKCkgLSBtX21vdXNl
RG93blRpbWVzdGFtcCA8IFRleHREcmFnRGVsYXkpIHsKLSAgICAgICAgbV9tb3VzZURvd25NYXlT
dGFydERyYWcgPSBmYWxzZTsKLSAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0gMDsKLSAg
ICAgICAgLy8gLi4uYnV0IGlmIHRoaXMgd2FzIHRoZSBmaXJzdCBjbGljayBpbiB0aGUgd2luZG93
LCB3ZSBkb24ndCBldmVuIHdhbnQgdG8gc3RhcnQgc2VsZWN0aW9uCi0gICAgICAgIGlmIChldmVu
dEFjdGl2YXRlZFZpZXcoZXZlbnQuZXZlbnQoKSkpCi0gICAgICAgICAgICBtX21vdXNlRG93bk1h
eVN0YXJ0U2VsZWN0ID0gZmFsc2U7CisgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFnICYm
IChkcmFnU3RhdGUoKS5tX2RyYWdUeXBlICYgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgJiYg
ZXZlbnQuZXZlbnQoKS50aW1lc3RhbXAoKSAtIG1fbW91c2VEb3duVGltZXN0YW1wIDwgVGV4dERy
YWdEZWxheSkgeworICAgICAgICBBU1NFUlQoZXZlbnQuZXZlbnQoKS5ldmVudFR5cGUoKSA9PSBN
b3VzZUV2ZW50TW92ZWQpOworICAgICAgICBpZiAoKGRyYWdTdGF0ZSgpLm1fZHJhZ1R5cGUgJiBE
cmFnU291cmNlQWN0aW9uSW1hZ2UpKSB7CisgICAgICAgICAgICAvLyAuLi4gdW5sZXNzIHRoZSBt
b3VzZSBpcyBvdmVyIGFuIGltYWdlLCB0aGVuIHdlIHN0YXJ0IGRyYWdnaW5nIGp1c3QgdGhlIGlt
YWdlCisgICAgICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdUeXBlID0gRHJhZ1NvdXJjZUFjdGlv
bkltYWdlOworICAgICAgICB9IGVsc2UgaWYgKCEoZHJhZ1N0YXRlKCkubV9kcmFnVHlwZSAmIChE
cmFnU291cmNlQWN0aW9uREhUTUwgfCBEcmFnU291cmNlQWN0aW9uTGluaykpKSB7CisgICAgICAg
ICAgICAvLyAuLi4gYnV0IG9ubHkgYmFpbCBpZiB3ZSdyZSBub3Qgb3ZlciBhbiB1bnNlbGVjdGFi
bGUgZWxlbWVudC4KKyAgICAgICAgICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0gZmFsc2U7
CisgICAgICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdTcmMgPSAwOworICAgICAgICAgICAgLy8g
Li4uIGJ1dCBpZiB0aGlzIHdhcyB0aGUgZmlyc3QgY2xpY2sgaW4gdGhlIHdpbmRvdywgd2UgZG9u
J3QgZXZlbiB3YW50IHRvIHN0YXJ0IHNlbGVjdGlvbgorICAgICAgICAgICAgaWYgKGV2ZW50QWN0
aXZhdGVkVmlldyhldmVudC5ldmVudCgpKSkKKyAgICAgICAgICAgICAgICBtX21vdXNlRG93bk1h
eVN0YXJ0U2VsZWN0ID0gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBG
dWRnZSB0aGUgdGltZXN0YW1wIHRvIHByZXZlbnQgdGhlIGZvbGxvd2luZyBjYXNlIGZyb20gb2Nj
dXJpbmc6CisgICAgICAgICAgICAvLyAxLiBVc2VyIHN0YXJ0cyBhIGRyYWcgaW1tZWRpYXRlbHkg
YWZ0ZXIgbW91c2UgZG93biBvdmVyIGFuIHVuc2VsZWN0YWJsZSBlbGVtZW50LgorICAgICAgICAg
ICAgLy8gMi4gV2UgZW50ZXIgdGhpcyBibG9jayBhbmQgZGVjaWRlZCB0aGF0IHNpbmNlIHdlJ3Jl
IG92ZXIgYW4gdW5zZWxlY3RhYmxlIGVsZW1lbnQsCisgICAgICAgICAgICAvLyAgICBkb24ndCBj
YW5jZWwgdGhlIGRyYWcuCisgICAgICAgICAgICAvLyAzLiBUaGUgZHJhZyBnZXRzIHJlc29sdmVk
IGFzIGEgcG90ZW50aWFsIHNlbGVjdGlvbiBkcmFnIGJlbG93IC9idXQvIHdlIGhhdmVuJ3QKKyAg
ICAgICAgICAgIC8vICAgIGV4Y2VlZGVkIHRoZSBkcmFnIGh5c3RlcmVzaXMgeWV0LgorICAgICAg
ICAgICAgLy8gNC4gV2UgZW50ZXIgdGhpcyBibG9jayBhZ2FpbiwgYW5kIHNpbmNlIGl0J3Mgbm93
IG1hcmtlZCBhcyBhIHNlbGVjdGlvbiBkcmFnLCB3ZQorICAgICAgICAgICAgLy8gICAgY2FuY2Vs
IHRoZSBkcmFnLgorICAgICAgICAgICAgbV9tb3VzZURvd25UaW1lc3RhbXAgPSBldmVudC5ldmVu
dCgpLnRpbWVzdGFtcCgpIC0gMiAqIFRleHREcmFnRGVsYXk7CisgICAgICAgIH0KICAgICB9CiAg
ICAgCiAgICAgaWYgKCFtX21vdXNlRG93bk1heVN0YXJ0RHJhZykKICAgICAgICAgcmV0dXJuICFt
b3VzZURvd25NYXlTdGFydFNlbGVjdCgpICYmICFtX21vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9s
bDsKICAgICAKKyAgICBpZiAoIUV4YWN0bHlPbmVCaXRTZXQoZHJhZ1N0YXRlKCkubV9kcmFnVHlw
ZSkpIHsKKyAgICAgICAgQVNTRVJUKChkcmFnU3RhdGUoKS5tX2RyYWdUeXBlICYgRHJhZ1NvdXJj
ZUFjdGlvblNlbGVjdGlvbikpOworICAgICAgICBBU1NFUlQoKGRyYWdTdGF0ZSgpLm1fZHJhZ1R5
cGUgJiB+RHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgPT0gRHJhZ1NvdXJjZUFjdGlvbkRIVE1M
CisgICAgICAgICAgICAgICAgfHwgKGRyYWdTdGF0ZSgpLm1fZHJhZ1R5cGUgJiB+RHJhZ1NvdXJj
ZUFjdGlvblNlbGVjdGlvbikgPT0gRHJhZ1NvdXJjZUFjdGlvbkltYWdlCisgICAgICAgICAgICAg
ICAgfHwgKGRyYWdTdGF0ZSgpLm1fZHJhZ1R5cGUgJiB+RHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlv
bikgPT0gRHJhZ1NvdXJjZUFjdGlvbkxpbmspOworICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdU
eXBlID0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbjsKKyAgICB9CisKICAgICAvLyBXZSBhcmUg
c3RhcnRpbmcgYSB0ZXh0L2ltYWdlL3VybCBkcmFnLCBzbyB0aGUgY3Vyc29yIHNob3VsZCBiZSBh
biBhcnJvdwogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpIHsKICAg
ICAgICAgLy8gRklYTUUgPHJkYXI6Ly83NTc3NTk1PjogQ3VzdG9tIGN1cnNvcnMgYXJlbid0IHN1
cHBvcnRlZCBkdXJpbmcgZHJhZyBhbmQgZHJvcCAoZGVmYXVsdCB0byBwb2ludGVyKS4KQEAgLTI3
NDQsMTAgKzI3NjIsMTAgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiAgICAgICAgICAgICAgICAgICAgICAv
LyB0byBtYWtlIHN1cmUgaXQgZ2V0cyBudW1iaWZpZWQKICAgICBkcmFnU3RhdGUoKS5tX2RyYWdD
bGlwYm9hcmQgPSBjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCgpOyAgCiAgICAgCi0gICAgaWYgKGRy
YWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwpIHsKKyAgICBpZiAoZHJhZ1N0YXRlKCkuc2hv
dWxkRGlzcGF0Y2hFdmVudHMoKSkgewogICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGlz
IGEgRE9NIGJhc2VkIGRyYWcsIGlmIGl0IGlzIGdldCB0aGUgRE9NIHNwZWNpZmllZCBkcmFnIAog
ICAgICAgICAvLyBpbWFnZSBhbmQgb2Zmc2V0Ci0gICAgICAgIGlmIChkcmFnU3RhdGUoKS5tX2Ry
YWdTcmNJc0RIVE1MKSB7CisgICAgICAgIGlmIChkcmFnU3RhdGUoKS5tX2RyYWdUeXBlID09IERy
YWdTb3VyY2VBY3Rpb25ESFRNTCkgewogICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBkcmFnU3RhdGUoKS5tX2RyYWdTcmMtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IHdvcmsgY29ycmVjdGx5IHdpdGggdHJhbnNmb3Jt
cy4KICAgICAgICAgICAgICAgICBGbG9hdFBvaW50IGFic1BvcyA9IHJlbmRlcmVyLT5sb2NhbFRv
QWJzb2x1dGUoKTsKQEAgLTI3ODMsOCArMjgwMSw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogICAgIGlm
IChtX21vdXNlRG93bk1heVN0YXJ0RHJhZykgewogICAgICAgICBQYWdlKiBwYWdlID0gbV9mcmFt
ZS0+cGFnZSgpOwogICAgICAgICBEcmFnQ29udHJvbGxlciogZHJhZ0NvbnRyb2xsZXIgPSBwYWdl
ID8gcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKSA6IDA7Ci0gICAgICAgIGJvb2wgc3RhcnRlZERyYWcg
PSBkcmFnQ29udHJvbGxlciAmJiBkcmFnQ29udHJvbGxlci0+c3RhcnREcmFnKG1fZnJhbWUsIGRy
YWdTdGF0ZSgpLm1fZHJhZ0NsaXBib2FyZC5nZXQoKSwgc3JjT3AsIGV2ZW50LmV2ZW50KCksIG1f
bW91c2VEb3duUG9zLCBkcmFnU3RhdGUoKS5tX2RyYWdTcmNJc0RIVE1MKTsKLSAgICAgICAgaWYg
KCFzdGFydGVkRHJhZyAmJiBkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MKSB7CisgICAg
ICAgIGJvb2wgc3RhcnRlZERyYWcgPSBkcmFnQ29udHJvbGxlciAmJiBkcmFnQ29udHJvbGxlci0+
c3RhcnREcmFnKG1fZnJhbWUsIGRyYWdTdGF0ZSgpLCBzcmNPcCwgZXZlbnQuZXZlbnQoKSwgbV9t
b3VzZURvd25Qb3MpOworICAgICAgICBpZiAoIXN0YXJ0ZWREcmFnICYmIGRyYWdTdGF0ZSgpLnNo
b3VsZERpc3BhdGNoRXZlbnRzKCkpIHsKICAgICAgICAgICAgIC8vIERyYWcgd2FzIGNhbm5lZCBh
dCB0aGUgbGFzdCBtaW51dGUgLSB3ZSBvd2UgbV9kcmFnU3JjIGEgRFJBR0VORCBldmVudAogICAg
ICAgICAgICAgZGlzcGF0Y2hEcmFnU3JjRXZlbnQoZXZlbnROYW1lcygpLmRyYWdlbmRFdmVudCwg
ZXZlbnQuZXZlbnQoKSk7CiAgICAgICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggYWE0NDRiMzQ2NjNiNTljMzc4
YTQxN2M3MmVkZGVjOWNlYWJkOTJhMS4uZTRlNzJlM2Y5NjQ3ZmRhNTFmYzY2NDNmNTRjMmU1MWMy
ZjYxZTJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0yNyw2ICsyNyw3IEBA
CiAjZGVmaW5lIEV2ZW50SGFuZGxlcl9oCiAKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgorI2lu
Y2x1ZGUgIkRyYWdTdGF0ZS5oIgogI2luY2x1ZGUgIkZvY3VzRGlyZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKQEAg
LTQ5LDcgKzUwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDbGlwYm9hcmQ7CiBj
bGFzcyBDdXJzb3I7Ci1zdHJ1Y3QgRHJhZ1N0YXRlOwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBFdmVu
dFRhcmdldDsKIGNsYXNzIEZsb2F0UG9pbnQ7CkBAIC0zMjIsNyArMzIyLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRlZmF1bHRBcnJvd0V2ZW50SGFuZGxlcihGb2N1c0RpcmVjdGlvbiwgS2V5Ym9h
cmRFdmVudCopOwogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICB2b2lkIGFsbG93REhU
TUxEcmFnKGJvb2wmIGZsYWdESFRNTCwgYm9vbCYgZmxhZ1VBKSBjb25zdDsKKyAgICBEcmFnU291
cmNlQWN0aW9uIHVwZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZCgpIGNvbnN0OwogI2VuZGlm
CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIGFyZSBjYWxsZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBo
YW5kbGVNb3VzZVVwIGFuZCBoYW5kbGVEcmFnLiAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93521</attachid>
            <date>2011-05-13 15:18:06 -0700</date>
            <delta_ts>2011-05-13 16:59:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59409-20110513151805.patch</filename>
            <type>text/plain</type>
            <size>42560</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYxNjQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiYTQzNTYzOWJmMjE1MWNjYTk4MmJj
YjYzNDZhZmZjNDczMWYxZTkxLi43NzlkNTIxMTU5YTA0NDY0ZGNhMjk2YmU5MTZlZTk3NWY5ZWJh
NjZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDUtMTIgIERhbmllbCBDaGVuZyAgPGRj
aGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wcm92ZSBkcmFnIHN0YXJ0IGxvZ2ljCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTQwOQorCisgICAgICAgIEFkZCBhIG5ldyB0
ZXN0IHRvIHRlc3QgZHJhZyBzdGFydCBlZGdlIGNhc2VzIG9uIE1hYyAoYmVjYXVzZSBvZiBhIG5v
bi16ZXJvIHRleHQgZHJhZyBkZWxheSkKKyAgICAgICAgYXMgd2VsbCBhcyByZWJhc2UgYW4gZXhp
c3RpbmcgdGVzdC4KKworICAgICAgICAqIGZhc3QvY3NzL3VzZXItZHJhZy1ub25lLmh0bWw6IFRl
eHQgbm9kZXMgYXJlIG5vIGxvbmdlciBkcmFnZ2FibGUuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGlvbnMtdG8tY29udGVudGVkaXRhYmxlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVi
b2FyZC9kcmFnLXNlbGVjdGlvbnMtdG8tY29udGVudGVkaXRhYmxlLmh0bWw6IEFkZGVkLgorCiAy
MDExLTA1LTEwICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvdXNlci1kcmFnLW5vbmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3VzZXItZHJh
Zy1ub25lLmh0bWwKaW5kZXggYzg4Y2FhZjZlZTU2YzM4NmI4ZTNiNmY0NDVkNGMxYTc3M2UxYTA4
Yy4uZjkzMzUxMzVjNWQ5YzFhNWY5MTdlN2UwYzViZTg0YTU4ZTlhODE0YSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvdXNlci1kcmFnLW5vbmUuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy91c2VyLWRyYWctbm9uZS5odG1sCkBAIC0xOSwxMSArMTksMTEgQEAKICAgICAg
ICAgPGltZyBjbGFzcz0iZHJhZy1ub25lIiBzcmM9InJlc291cmNlcy9ncmVlbmJveC5wbmciPgog
ICAgIDwvZGl2PgogCi0gICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9IklNRyB0ZXh0IHRleHQg
QSBuaWwiPgorICAgIDxkaXYgY2xhc3M9ImJveCIgZXhwZWN0PSJJTUcgQSBBIEEgbmlsIj4KICAg
ICAgICAgPGEgaHJlZj0iIyI+PGltZyBzcmM9InJlc291cmNlcy9ncmVlbmJveC5wbmciPng8YnI+
PHNwYW4+eTwvc3Bhbj48L2E+CiAgICAgPC9kaXY+CiAKLSAgICA8ZGl2IGNsYXNzPSJib3giIGV4
cGVjdD0iSU1HIHRleHQgdGV4dCBBIG5pbCI+CisgICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9
IklNRyBBIEEgQSBuaWwiPgogICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iZHJhZy1lbGVtZW50
Ij48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwv
YT4KICAgICA8L2Rpdj4KIApAQCAtMzEsMTEgKzMxLDExIEBACiAgICAgICAgIDxhIGhyZWY9IiMi
IGNsYXNzPSJkcmFnLW5vbmUiPjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW5ib3gucG5nIj54PGJy
PjxzcGFuPnk8L3NwYW4+PC9hPgogICAgIDwvZGl2PgogCi0gICAgPGRpdiBjbGFzcz0iYm94IiBl
eHBlY3Q9IkEgdGV4dCB0ZXh0IEEgbmlsIj4KKyAgICA8ZGl2IGNsYXNzPSJib3giIGV4cGVjdD0i
QSBBIEEgQSBuaWwiPgogICAgICAgICA8YSBocmVmPSIjIj48aW1nIGNsYXNzPSJkcmFnLW5vbmUi
IHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAg
ICA8L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9ImJveCIgZXhwZWN0PSJBIHRleHQgdGV4dCBBIG5p
bCI+CisgICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9IkEgQSBBIEEgbmlsIj4KICAgICAgICAg
PGEgaHJlZj0iIyIgY2xhc3M9ImRyYWctZWxlbWVudCI+PGltZyBjbGFzcz0iZHJhZy1ub25lIiBz
cmM9InJlc291cmNlcy9ncmVlbmJveC5wbmciPng8YnI+PHNwYW4+eTwvc3Bhbj48L2E+CiAgICAg
PC9kaXY+CiAKQEAgLTQzLDExICs0MywxMSBAQAogICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0i
ZHJhZy1ub25lIj48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55
PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9ImJveCBkcmFnLWVsZW1l
bnQiIGV4cGVjdD0iQSB0ZXh0IHRleHQgQSBESVYiPgorICAgIDxkaXYgY2xhc3M9ImJveCBkcmFn
LWVsZW1lbnQiIGV4cGVjdD0iQSBBIEEgQSBESVYiPgogICAgICAgICA8YSBocmVmPSIjIj48aW1n
IGNsYXNzPSJkcmFnLW5vbmUiIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bh
bj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9ImJveCBkcmFnLWVs
ZW1lbnQiIGV4cGVjdD0iQSB0ZXh0IHRleHQgQSBESVYiPgorICAgIDxkaXYgY2xhc3M9ImJveCBk
cmFnLWVsZW1lbnQiIGV4cGVjdD0iQSBBIEEgQSBESVYiPgogICAgICAgICA8YSBocmVmPSIjIiBj
bGFzcz0iZHJhZy1lbGVtZW50Ij48aW1nIGNsYXNzPSJkcmFnLW5vbmUiIHNyYz0icmVzb3VyY2Vz
L2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIDwvZGl2
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2Fy
ZC9kcmFnLXNlbGVjdGlvbnMtdG8tY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1zZWxlY3Rpb25zLXRv
LWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDUzZjBlMjdkYmRiYzBh
ZTMxOWU4YmRkNDg2OTI3ZDI2OWExNWNjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1zZWxlY3Rpb25zLXRvLWNvbnRl
bnRlZGl0YWJsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorw4Igw4IgTGlua8OCIFJh
bmRvbSB0ZXh0LgorIExpbmsgUmFuZG9tIHRleHQuCitUaGlzIHRlc3QgY2hlY2tzIHNlbGVjdGlv
biBkcmFnIGVkZ2UgY2FzZXMgb24gTWFjLiBUbyBydW4gdGhlIHRlc3QgbWFudWFsbHk6CisKK1Nl
bGVjdCBldmVyeXRoaW5nIGFib3ZlLCBzdGFydCB0aGUgZHJhZyBvdmVyIHRoZSBpbWFnZSwgYW5k
IHdpdGggbm8gZGVsYXksIGRyYWcgaXQgdG8gdGhlIGNvbnRlbnQgZWRpdGFibGUgYXJlYS4gT25s
eSB0aGUgaW1hZ2Ugc2hvdWxkIGJlIGRyYWdnZWQuCitTZWxlY3QgZXZlcnl0aGluZyBhYm92ZSwg
c3RhcnQgdGhlIGRyYWcgb3ZlciB0aGUgbGluaywgYW5kIHdpdGggbm8gZGVsYXksIGRyYWcgaXQg
dG8gdGhlIGNvbnRlbnQgZWRpdGFibGUgYXJlYS4gVGhlIGVudGlyZSBzZWxlY3Rpb24gc2hvdWxk
IGJlIGRyYWdnZWQuCitTZWxlY3QgZXZlcnl0aGluZyBhYm92ZSwgc3RhcnQgdGhlIGRyYWcgb3Zl
ciB0aGUgdGV4dCwgYW5kIHdpdGggbm8gZGVsYXksIGRyYWcgaXQgdG8gdGhlIGNvbnRlbnQgZWRp
dGFibGUgYXJlYS4gTm90aGluZyBzaG91bGQgYmUgZHJhZ2dlZCwgYnV0IGEgYnVuY2ggb2YgdGV4
dCBzaG91bGQgYmUgc2VsZWN0ZWQgaW5zdGVhZC4KK0NvbnRlbnRzIG9mIHRoZSBjb250ZW50ZWRp
dGFibGUgZGl2OgorSU1HCitJTUcKK0EKK1NQQU4KK051bWJlciBvZiBzZWxlY3RlZCByYW5nZXM6
IDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9h
cmQvZHJhZy1zZWxlY3Rpb25zLXRvLWNvbnRlbnRlZGl0YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGlvbnMtdG8tY29udGVu
dGVkaXRhYmxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjlkOWQ0MjhhOWE5MTU2MGRjMjdjNGFkNmUxMThk
N2IwZThiZjU2NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1zZWxlY3Rpb25zLXRvLWNvbnRlbnRlZGl0YWJsZS5odG1s
CkBAIC0wLDAgKzEsNzggQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9n
KG1lc3NhZ2UpIHsKKyAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b25zb2xlIik7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSk7CisgICAgCisg
ICAgY29uc29sZS5hcHBlbmRDaGlsZChkaXYpOworICAgIGRpdi5hcHBlbmRDaGlsZCh0ZXh0KTsK
K30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0gZWxzZQor
ICAgICAgICByZXR1cm47CisKKyAgICBzZWxlY3RTZWxlY3Rpb24oKTsKKyAgICBkcmFnRWxlbWVu
dFRvQ29udGVudEVkaXRhYmxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcmFnaW1hZ2UiKSk7
CisgICAgIAorICAgIHNlbGVjdFNlbGVjdGlvbigpOworICAgIGRyYWdFbGVtZW50VG9Db250ZW50
RWRpdGFibGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyYWdsaW5rIikpOworCisgICAgc2Vs
ZWN0U2VsZWN0aW9uKCk7CisgICAgZHJhZ0VsZW1lbnRUb0NvbnRlbnRFZGl0YWJsZShkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZHJhZ3RleHQiKSk7CisKKyAgICBsb2coIkNvbnRlbnRzIG9mIHRo
ZSBjb250ZW50ZWRpdGFibGUgZGl2OiIpOworICAgIGxvZyhkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndGFyZ2V0JykuY2hpbGRyZW5bMF0udGFnTmFtZSk7CisgICAgbG9nKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0YXJnZXQnKS5jaGlsZHJlblsxXS50YWdOYW1lKTsKKyAgICBsb2coZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcpLmNoaWxkcmVuWzJdLnRhZ05hbWUpOworICAgIGxv
Zyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0JykuY2hpbGRyZW5bM10udGFnTmFtZSk7
CisKKyAgICBsb2coIk51bWJlciBvZiBzZWxlY3RlZCByYW5nZXM6ICIgKyB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkucmFuZ2VDb3VudCk7CisKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Cit9CisKK2Z1bmN0aW9uIHNlbGVjdFNlbGVjdGlvbigpIHsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuc2VsZWN0QWxsQ2hpbGRyZW4oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNl
bGVjdGlvbiIpKTsKK30KKworZnVuY3Rpb24gZHJhZ0VsZW1lbnRUb0NvbnRlbnRFZGl0YWJsZShk
cmFnU291cmNlKSAKK3sKKyAgICB4ID0gZHJhZ1NvdXJjZS5vZmZzZXRMZWZ0ICsgZHJhZ1NvdXJj
ZS5vZmZzZXRXaWR0aCAvIDI7CisgICAgeSA9IGRyYWdTb3VyY2Uub2Zmc2V0VG9wICsgZHJhZ1Nv
dXJjZS5vZmZzZXRIZWlnaHQgLyAyOworCisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwg
eSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7ICAgIAorCisgICAgdmFyIGRyb3BUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CisgICAgeCA9IGRyb3BUYXJn
ZXQub2Zmc2V0TGVmdCArIGRyb3BUYXJnZXQub2Zmc2V0V2lkdGggLyAyOworICAgIHkgPSBkcm9w
VGFyZ2V0Lm9mZnNldFRvcCArIGRyb3BUYXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAKKyAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVw
KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgc3R5bGU9InBhZGRpbmc6MDsgbWFy
Z2luOjAiIG9ubG9hZD0icnVuVGVzdCgpOyI+ICAKKworPGRpdiBpZD0idGFyZ2V0IiBzdHlsZT0i
Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7IHdpZHRoOiAzMDBweDsgaGVpZ2h0OiAyMDBweDsiIGNv
bnRlbnRlZGl0YWJsZT0idHJ1ZSI+PC9kaXY+Cis8ZGl2IGlkPSJzZWxlY3Rpb24iPgorPGltZyBp
ZD0iZHJhZ2ltYWdlIiBzcmM9Ii4uLy4uLy4uLy4uL2VkaXRpbmcvcmVzb3VyY2VzL2FiZS5wbmci
PgorPGEgaHJlZj0iIyIgaWQ9ImRyYWdsaW5rIj5MaW5rPC9hPgorPHNwYW4gaWQ9ImRyYWd0ZXh0
Ij5SYW5kb20gdGV4dC48L3NwYW4+PC9kaXY+CisKKzxwPlRoaXMgdGVzdCBjaGVja3Mgc2VsZWN0
aW9uIGRyYWcgZWRnZSBjYXNlcyBvbiBNYWMuIFRvIHJ1biB0aGUgdGVzdCBtYW51YWxseToKKzxv
bD4KKzxsaT5TZWxlY3QgZXZlcnl0aGluZyBhYm92ZSwgc3RhcnQgdGhlIGRyYWcgb3ZlciB0aGUg
aW1hZ2UsIGFuZCB3aXRoIG5vIGRlbGF5LCBkcmFnIGl0IHRvIHRoZSBjb250ZW50IGVkaXRhYmxl
IGFyZWEuIE9ubHkgdGhlIGltYWdlIHNob3VsZCBiZSBkcmFnZ2VkLgorPGxpPlNlbGVjdCBldmVy
eXRoaW5nIGFib3ZlLCBzdGFydCB0aGUgZHJhZyBvdmVyIHRoZSBsaW5rLCBhbmQgd2l0aCBubyBk
ZWxheSwgZHJhZyBpdCB0byB0aGUgY29udGVudCBlZGl0YWJsZSBhcmVhLiBUaGUgZW50aXJlIHNl
bGVjdGlvbiBzaG91bGQgYmUgZHJhZ2dlZC4KKzxsaT5TZWxlY3QgZXZlcnl0aGluZyBhYm92ZSwg
c3RhcnQgdGhlIGRyYWcgb3ZlciB0aGUgdGV4dCwgYW5kIHdpdGggbm8gZGVsYXksIGRyYWcgaXQg
dG8gdGhlIGNvbnRlbnQgZWRpdGFibGUgYXJlYS4gTm90aGluZyBzaG91bGQgYmUgZHJhZ2dlZCwg
YnV0IGEgYnVuY2ggb2YgdGV4dCBzaG91bGQgYmUgc2VsZWN0ZWQgaW5zdGVhZC4KKzwvb2w+Cis8
L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L3VsPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE3ZDdl
MDI3ZTZmNDA3NTM4ZDA3Y2VjOGNmNDg5MDllNjY3YTBmNDkuLjA0NDk5ZjRkYjJlM2E3NzNiZmYz
ZjJiYzY2NmU5ZTE4YzhjODkwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMS0w
NS0xMiAgRGFuaWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXByb3ZlIGRyYWcgc3RhcnQgbG9n
aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NDA5
CisKKyAgICAgICAgUmV3cml0ZSBhbmQgc2ltcGxpZnkgdGhlIGRyYWdnaW5nIGxvZ2ljIHRvIGJl
dHRlciBtYXRjaCBJRSwgRmlyZWZveCwgYW5kIHRoZSBiZWhhdmlvcgorICAgICAgICBkZWZpbmVk
IGluIHRoZSBzcGVjLiBBbW9uZyBvdGhlciB0aGluZ3M6CisgICAgICAgIC0gZHJhZ2dhYmxlTm9k
ZSgpIG5vIGxvbmdlciByZXR1cm5zIHRleHQgbm9kZXMgd2hlbiBkcmFnZ2luZyBhbmNob3JzLgor
ICAgICAgICAtIFdoZW4gc3RhcnRpbmcgYSBkcmFnIG92ZXIgYW4gaW1hZ2UgaW4gYSBzZWxlY3Rp
b24sIHByZWZlciB0byBkcmFnIHRoZSBzZWxlY3Rpb24uCisgICAgICAgIC0gU2V2ZXJhbCByZWR1
bmRhbnQgaGl0IHRlc3RzIGhhdmUgYmVlbiByZW1vdmVkLgorICAgICAgICAtIE1pbm9yIHJlZmFj
dG9yaW5nIHRvIG1ha2UgdGhlIGxvZ2ljIGVhc2llciB0byBmb2xsb3cuCisKKyAgICAgICAgVGVz
dDogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGlvbnMtdG8tY29u
dGVudGVkaXRhYmxlLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdDb250cm9sbGVyOjpzdGFydERyYWcpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBwYWdlL0RyYWdTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z1N0YXRlOjpzaG91bGREaXNwYXRjaEV2ZW50cyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpldmVudE1heVN0YXJ0RHJh
Zyk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdTb3VyY2VBY3Rp
b25zQWxsb3dlZCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdB
bmREcm9wKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Y2FuY2VsRHJhZ0FuZERy
b3ApOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2Vl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQp
OgorICAgICAgICAoV2ViQ29yZTo6RXhhY3RseU9uZUJpdFNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
Lmg6CisKIDIwMTEtMDUtMDYgIEJyZXR0IFdpbHNvbiAgPGJyZXR0d0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNGU0MjMxMzdjZmM0NmFiNWM4
MDRjMzBjNzlkOTRhZTdhZDljYjFkLi44N2JiZjZlMTg4MzFlMWU2NTQ1YmNkYzQ1OWZkNDZlZDhh
MWEyNzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xNjcyLDcgKzE2NzIsNyBAQAogCQk4MUJFMjA5OTExRjRBQjhEMDA5MTVE
RkEgLyogSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFCRTIwOTQxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2UuaCAqLzsgfTsKIAkJODFCRTIwRDIxMUY0QkMzMjAwOTE1REZB
IC8qIEpTSURCQ3Vyc29yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgxQkUyMEE3MTFGNEI2NkYwMDkxNURGQSAvKiBKU0lEQkN1cnNvci5jcHAgKi87
IH07CiAJCTgxQkUyMEQzMTFGNEJDMzIwMDkxNURGQSAvKiBKU0lEQkN1cnNvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFCRTIwQTgxMUY0QjY2RjAw
OTE1REZBIC8qIEpTSURCQ3Vyc29yLmggKi87IH07Ci0JCTgxRjY1RkY2MTM3ODhGQUEwMEZGNkYy
RCAvKiBEcmFnU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgxRjY1RkY1MTM3ODhGQUEwMEZGNkYyRCAvKiBEcmFnU3RhdGUuaCAqLzsgfTsKKwkJ
ODFGNjVGRjYxMzc4OEZBQTAwRkY2RjJEIC8qIERyYWdTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFGNjVGRjUxMzc4OEZBQTAwRkY2RjJEIC8q
IERyYWdTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTgyQUIxNzQzMTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0b3JDU1NBZ2VudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MkFCMTc0MTEy
NEI5OUVDMDBDNTA2OUQgLyogSW5zcGVjdG9yQ1NTQWdlbnQuY3BwICovOyB9OwogCQk4MkFCMTc0
NDEyNEI5OUVDMDBDNTA2OUQgLyogSW5zcGVjdG9yQ1NTQWdlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyQUIxNzQyMTI0Qjk5RUMwMEM1MDY5RCAv
KiBJbnNwZWN0b3JDU1NBZ2VudC5oICovOyB9OwogCQk4MkFCMTc3MzEyNUM4MjY3MDBDNTA2OUQg
LyogSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MkFCMTc2RjEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHAgKi87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmlu
ZGV4IDgxY2U5MmQ0ZjUwZDY5OTBjYmIzZmRmYTJlMGM1ZWQ3MTI0ZThkNmEuLmU1NTViOTAzM2Ez
ZTAzNzA4NmE2NmEyNDVhYmUxNmUyMmZiMzlmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCkBAIC01NjksNzEgKzU2OSw0NiBAQCBib29sIERyYWdDb250cm9sbGVyOjp0
cnlESFRNTERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhLCBEcmFnT3BlcmF0aW9uJiBvcGVyYXRpb24p
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLU5vZGUqIERyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVO
b2RlKGNvbnN0IEZyYW1lKiBzcmMsIE5vZGUqIHN0YXJ0Tm9kZSwgYm9vbCBkaHRtbE9LLCBib29s
IHVhT0ssIGludCB4LCBpbnQgeSwgYm9vbCYgZGh0bWxXaWxsRHJhZykgY29uc3QKK05vZGUqIERy
YWdDb250cm9sbGVyOjpkcmFnZ2FibGVOb2RlKGNvbnN0IEZyYW1lKiBzcmMsIE5vZGUqIHN0YXJ0
Tm9kZSwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIERyYWdTdGF0ZSYgc3RhdGUpIGNvbnN0
CiB7Ci0gICAgaWYgKCFkaHRtbE9LICYmICF1YU9LKQotICAgICAgICByZXR1cm4gMDsKKyAgICBz
dGF0ZS5tX2RyYWdUeXBlID0gKHNyYy0+c2VsZWN0aW9uKCktPmNvbnRhaW5zKGRyYWdPcmlnaW4p
KSA/IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24gOiBEcmFnU291cmNlQWN0aW9uTm9uZTsKIAog
ICAgIGZvciAoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHN0YXJ0Tm9kZS0+cmVuZGVy
ZXIoKTsgcmVuZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpKSB7CiAgICAgICAg
IE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9kZSgpOwotICAgICAgICBpZiAobm9kZSAmJiBub2Rl
LT5ub2RlVHlwZSgpID09IE5vZGU6OlRFWFRfTk9ERSkgewotICAgICAgICAgICAgLy8gU2luY2Ug
dGhlcmUncyBubyB3YXkgZm9yIHRoZSBhdXRob3IgdG8gYWRkcmVzcyB0aGUgLXdlYmtpdC11c2Vy
LWRyYWcgc3R5bGUgZm9yIGEgdGV4dCBub2RlLAotICAgICAgICAgICAgLy8gd2UgdXNlIG91ciBv
d24ganVkZ2VtZW50LgotICAgICAgICAgICAgaWYgKHVhT0sgJiYgbWF5U3RhcnREcmFnQXRFdmVu
dExvY2F0aW9uKHNyYywgSW50UG9pbnQoeCwgeSksIG5vZGUpKSB7Ci0gICAgICAgICAgICAgICAg
ZGh0bWxXaWxsRHJhZyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHJldHVybiBub2RlOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG5vZGUtPmNhblN0YXJ0U2VsZWN0aW9uKCkpCi0g
ICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIGhhdmUgYSBjbGljayBpbiB0aGUgdW5z
ZWxlY3RlZCBwb3J0aW9uIG9mIHRleHQuIElmIHRoaXMgdGV4dCBpcwotICAgICAgICAgICAgICAg
IC8vIHNlbGVjdGFibGUsIHdlIHdhbnQgdG8gc3RhcnQgdGhlIHNlbGVjdGlvbiBwcm9jZXNzIGlu
c3RlYWQgb2YgbG9va2luZyBmb3IgYSBwYXJlbnQKLSAgICAgICAgICAgICAgICAvLyB0byB0cnkg
dG8gZHJhZy4KLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgLy8gQW5vbnltb3VzIHJlbmRlciBibG9ja3Mg
ZG9uJ3QgY29ycmVzcG9uZCB0byBhY3R1YWwgRE9NIG5vZGVzLCBzbyB3ZSBza2lwIG92ZXIgdGhl
bQorICAgICAgICAgICAgLy8gZm9yIHRoZSBwdXJwb3NlcyBvZiBmaW5kaW5nIGEgZHJhZ2dhYmxl
IG5vZGUuCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCEoc3RhdGUubV9kcmFn
VHlwZSAmIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pICYmIG5vZGUtPmlzVGV4dE5vZGUoKSAm
JiBub2RlLT5jYW5TdGFydFNlbGVjdGlvbigpKQorICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNl
IHdlIGhhdmUgYSBjbGljayBpbiB0aGUgdW5zZWxlY3RlZCBwb3J0aW9uIG9mIHRleHQuIElmIHRo
aXMgdGV4dCBpcworICAgICAgICAgICAgLy8gc2VsZWN0YWJsZSwgd2Ugd2FudCB0byBzdGFydCB0
aGUgc2VsZWN0aW9uIHByb2Nlc3MgaW5zdGVhZCBvZiBsb29raW5nIGZvciBhIHBhcmVudAorICAg
ICAgICAgICAgLy8gdG8gdHJ5IHRvIGRyYWcuCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSkgewogICAgICAgICAgICAgRVVzZXJEcmFnIGRy
YWdNb2RlID0gcmVuZGVyZXItPnN0eWxlKCktPnVzZXJEcmFnKCk7Ci0gICAgICAgICAgICBpZiAo
ZGh0bWxPSyAmJiBkcmFnTW9kZSA9PSBEUkFHX0VMRU1FTlQpIHsKLSAgICAgICAgICAgICAgICBk
aHRtbFdpbGxEcmFnID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICgobV9kcmFnU291cmNlQWN0aW9u
ICYgRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKSAmJiBkcmFnTW9kZSA9PSBEUkFHX0VMRU1FTlQpIHsK
KyAgICAgICAgICAgICAgICBzdGF0ZS5tX2RyYWdUeXBlID0gc3RhdGljX2Nhc3Q8RHJhZ1NvdXJj
ZUFjdGlvbj4oc3RhdGUubV9kcmFnVHlwZSB8IERyYWdTb3VyY2VBY3Rpb25ESFRNTCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAo
dWFPSyAmJiBkcmFnTW9kZSA9PSBEUkFHX0FVVE8gJiYgbWF5U3RhcnREcmFnQXRFdmVudExvY2F0
aW9uKHNyYywgSW50UG9pbnQoeCwgeSksIG5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgZGh0bWxX
aWxsRHJhZyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHJldHVybiBub2RlOworICAgICAgICAg
ICAgaWYgKGRyYWdNb2RlID09IERSQUdfQVVUTykgeworICAgICAgICAgICAgICAgIGlmICgobV9k
cmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKQorICAgICAgICAgICAgICAg
ICAgICAmJiBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW1nVGFnKQorICAgICAgICAgICAg
ICAgICAgICAmJiBzcmMtPnNldHRpbmdzKCktPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpKSB7
CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLm1fZHJhZ1R5cGUgPSBzdGF0aWNfY2FzdDxEcmFn
U291cmNlQWN0aW9uPihzdGF0ZS5tX2RyYWdUeXBlIHwgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGlmICgobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkxp
bmspCisgICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjph
VGFnKQorICAgICAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxIVE1MQW5jaG9yRWxlbWVu
dCo+KG5vZGUpLT5pc0xpdmVMaW5rKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUubV9k
cmFnVHlwZSA9IHN0YXRpY19jYXN0PERyYWdTb3VyY2VBY3Rpb24+KHN0YXRlLm1fZHJhZ1R5cGUg
fCBEcmFnU291cmNlQWN0aW9uTGluayk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBub2Rl
OworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAg
ICByZXR1cm4gMDsKLX0KLQotYm9vbCBEcmFnQ29udHJvbGxlcjo6bWF5U3RhcnREcmFnQXRFdmVu
dExvY2F0aW9uKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgSW50UG9pbnQmIGZyYW1lUG9zLCBO
b2RlKiBub2RlKSBjb25zdAotewotICAgIEFTU0VSVChmcmFtZSk7Ci0gICAgQVNTRVJUKGZyYW1l
LT5zZXR0aW5ncygpKTsKLQotICAgIGlmICghZnJhbWUtPnZpZXcoKSB8fCAhZnJhbWUtPmNvbnRl
bnRSZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBIaXRUZXN0UmVzdWx0
IG1vdXNlRG93blRhcmdldCA9IEhpdFRlc3RSZXN1bHQoZnJhbWVQb3MpOwogCi0gICAgbW91c2VE
b3duVGFyZ2V0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChm
cmFtZVBvcywgdHJ1ZSk7Ci0gICAgaWYgKG5vZGUpCi0gICAgICAgIG1vdXNlRG93blRhcmdldC5z
ZXRJbm5lck5vblNoYXJlZE5vZGUobm9kZSk7Ci0KLSAgICBpZiAobW91c2VEb3duVGFyZ2V0Lmlt
YWdlKCkKLSAgICAgICAgJiYgIW1vdXNlRG93blRhcmdldC5hYnNvbHV0ZUltYWdlVVJMKCkuaXNF
bXB0eSgpCi0gICAgICAgICYmIGZyYW1lLT5zZXR0aW5ncygpLT5sb2Fkc0ltYWdlc0F1dG9tYXRp
Y2FsbHkoKQotICAgICAgICAmJiBtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9u
SW1hZ2UpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKCFtb3VzZURvd25UYXJnZXQu
YWJzb2x1dGVMaW5rVVJMKCkuaXNFbXB0eSgpCi0gICAgICAgICYmIG1fZHJhZ1NvdXJjZUFjdGlv
biAmIERyYWdTb3VyY2VBY3Rpb25MaW5rCi0gICAgICAgICYmIG1vdXNlRG93blRhcmdldC5pc0xp
dmVMaW5rKCkKLSAgICAgICAgJiYgbW91c2VEb3duVGFyZ2V0LlVSTEVsZW1lbnQoKS0+cmVuZGVy
ZXIoKSAmJiBtb3VzZURvd25UYXJnZXQuVVJMRWxlbWVudCgpLT5yZW5kZXJlcigpLT5zdHlsZSgp
LT51c2VyRHJhZygpICE9IERSQUdfTk9ORSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBp
ZiAobW91c2VEb3duVGFyZ2V0LmlzU2VsZWN0ZWQoKQotICAgICAgICAmJiBtX2RyYWdTb3VyY2VB
Y3Rpb24gJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBXZSBlaXRoZXIgaGF2ZSBub3RoaW5nIHRvIGRy
YWcgb3Igd2UgaGF2ZSBhIHNlbGVjdGlvbiBhbmQgd2UncmUgbm90IG92ZXIgYSBkcmFnZ2FibGUg
ZWxlbWVudC4KKyAgICByZXR1cm4gKHN0YXRlLm1fZHJhZ1R5cGUgJiBEcmFnU291cmNlQWN0aW9u
U2VsZWN0aW9uKSA/IHN0YXJ0Tm9kZSA6IDA7CiB9CiAKIHN0YXRpYyBDYWNoZWRJbWFnZSogZ2V0
Q2FjaGVkSW1hZ2UoRWxlbWVudCogZWxlbWVudCkKQEAgLTY5NSwxOSArNjcwLDIxIEBAIHN0YXRp
YyBJbnRQb2ludCBkcmFnTG9jRm9yU2VsZWN0aW9uRHJhZyhGcmFtZSogc3JjKQogICAgIHJldHVy
biBJbnRQb2ludCh4cG9zLCB5cG9zKTsKIH0KIAotYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnRE
cmFnKEZyYW1lKiBzcmMsIENsaXBib2FyZCogY2xpcGJvYXJkLCBEcmFnT3BlcmF0aW9uIHNyY09w
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRy
YWdPcmlnaW4sIGJvb2wgaXNESFRNTERyYWcpCitib29sIERyYWdDb250cm9sbGVyOjpzdGFydERy
YWcoRnJhbWUqIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbiBzcmNP
cCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBk
cmFnT3JpZ2luKQogewogICAgIEFTU0VSVChzcmMpOwotICAgIEFTU0VSVChjbGlwYm9hcmQpOwog
CiAgICAgaWYgKCFzcmMtPnZpZXcoKSB8fCAhc3JjLT5jb250ZW50UmVuZGVyZXIoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSGl0VGVzdFJlc3VsdCBkcmFnU291cmNlID0gSGl0VGVz
dFJlc3VsdChkcmFnT3JpZ2luKTsKLSAgICBkcmFnU291cmNlID0gc3JjLT5ldmVudEhhbmRsZXIo
KS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZHJhZ09yaWdpbiwgdHJ1ZSk7Ci0gICAgS1VSTCBsaW5r
VVJMID0gZHJhZ1NvdXJjZS5hYnNvbHV0ZUxpbmtVUkwoKTsKLSAgICBLVVJMIGltYWdlVVJMID0g
ZHJhZ1NvdXJjZS5hYnNvbHV0ZUltYWdlVVJMKCk7Ci0gICAgYm9vbCBpc1NlbGVjdGVkID0gZHJh
Z1NvdXJjZS5pc1NlbGVjdGVkKCk7CisgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0g
c3JjLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZHJhZ09yaWdpbiwgdHJ1
ZSk7CisgICAgaWYgKCFzdGF0ZS5tX2RyYWdTcmMtPmNvbnRhaW5zKGhpdFRlc3RSZXN1bHQuaW5u
ZXJOb2RlKCkpKQorICAgICAgICAvLyBUaGUgb3JpZ2luYWwgbm9kZSBiZWluZyBkcmFnZ2VkIGlz
bid0IHVuZGVyIHRoZSBkcmFnIG9yaWdpbiBhbnltb3JlLi4uIG1heWJlIGl0IHdhcworICAgICAg
ICAvLyBoaWRkZW4gb3IgbW92ZWQgb3V0IGZyb20gdW5kZXIgdGhlIGN1cnNvci4gUmVnYXJkbGVz
cywgd2UgZG9uJ3Qgd2FudCB0byBzdGFydCBhIGRyYWcgb24KKyAgICAgICAgLy8gc29tZXRoaW5n
IHRoYXQncyBub3QgYWN0dWFsbHkgdW5kZXIgdGhlIGRyYWcgb3JpZ2luLgorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgS1VSTCBsaW5rVVJMID0gaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtV
UkwoKTsKKyAgICBLVVJMIGltYWdlVVJMID0gaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUltYWdlVVJM
KCk7CiAKICAgICBJbnRQb2ludCBtb3VzZURyYWdnZWRQb2ludCA9IHNyYy0+dmlldygpLT53aW5k
b3dUb0NvbnRlbnRzKGRyYWdFdmVudC5wb3MoKSk7CiAKQEAgLTcxOCwxNCArNjk1LDE0IEBAIGJv
b2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlwYm9hcmQqIGNsaXBi
b2FyZCwgRHJhZ09wZXJhdGlvbiBzCiAgICAgSW50UG9pbnQgZHJhZ0xvYygwLCAwKTsKICAgICBJ
bnRQb2ludCBkcmFnSW1hZ2VPZmZzZXQoMCwgMCk7CiAKLSAgICBpZiAoaXNESFRNTERyYWcpCisg
ICAgQ2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBzdGF0ZS5tX2RyYWdDbGlwYm9hcmQuZ2V0KCk7Cisg
ICAgaWYgKHN0YXRlLm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKQogICAgICAg
ICBkcmFnSW1hZ2UgPSBjbGlwYm9hcmQtPmNyZWF0ZURyYWdJbWFnZShkcmFnSW1hZ2VPZmZzZXQp
OwotICAgIGVsc2UgewotICAgICAgICAvLyBUaGlzIGRyYWcgb3BlcmF0aW9uIGlzIG5vdCBhIERI
VE1MIGRyYWcgYW5kIG1heSBnbyBvdXRzaWRlIHRoZSBXZWJWaWV3LgotICAgICAgICAvLyBXZSBw
cm92aWRlIGEgZGVmYXVsdCBzZXQgb2YgYWxsb3dlZCBkcmFnIG9wZXJhdGlvbnMgdGhhdCBmb2xs
b3dzIGZyb206CisgICAgaWYgKHN0YXRlLm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvblNl
bGVjdGlvbiB8fCAhaW1hZ2VVUkwuaXNFbXB0eSgpIHx8ICFsaW5rVVJMLmlzRW1wdHkoKSkKKyAg
ICAgICAgLy8gU2VsZWN0aW9uLCBpbWFnZSwgYW5kIGxpbmsgZHJhZ3MgcmVjZWl2ZSBhIGRlZmF1
bHQgc2V0IG9mIGFsbG93ZWQgZHJhZyBvcGVyYXRpb25zIHRoYXQKKyAgICAgICAgLy8gZm9sbG93
cyBmcm9tOgogICAgICAgICAvLyBodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tP3Jldj00ODUyNiNMMzQzMAotICAgICAg
ICBtX3NvdXJjZURyYWdPcGVyYXRpb24gPSAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkdl
bmVyaWMgfCBEcmFnT3BlcmF0aW9uQ29weSk7Ci0gICAgfQorICAgICAgICBtX3NvdXJjZURyYWdP
cGVyYXRpb24gPSBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihtX3NvdXJjZURyYWdPcGVyYXRp
b24gfCBEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Db3B5KTsKIAogICAgIC8v
IFdlIGFsbG93IERIVE1ML0pTIHRvIHNldCB0aGUgZHJhZyBpbWFnZSwgZXZlbiBpZiBpdHMgYSBs
aW5rLCBpbWFnZSBvciB0ZXh0IHdlJ3JlIGRyYWdnaW5nLgogICAgIC8vIFRoaXMgaXMgaW4gdGhl
IHNwaXJpdCBvZiB0aGUgSUUgQVBJLCB3aGljaCBhbGxvd3Mgb3ZlcnJpZGluZyBvZiBwYXN0ZWJv
YXJkIGRhdGEgYW5kIERyYWdPcC4KQEAgLTczNiwyNiArNzEzLDQ0IEBAIGJvb2wgRHJhZ0NvbnRy
b2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRHJhZ09w
ZXJhdGlvbiBzCiAKICAgICBib29sIHN0YXJ0ZWREcmFnID0gdHJ1ZTsgLy8gb3B0aW1pc20gLSB3
ZSBhbG1vc3QgYWx3YXlzIG1hbmFnZSB0byBzdGFydCB0aGUgZHJhZwogCi0gICAgTm9kZSogbm9k
ZSA9IGRyYWdTb3VyY2UuaW5uZXJOb25TaGFyZWROb2RlKCk7CisgICAgTm9kZSogbm9kZSA9IHN0
YXRlLm1fZHJhZ1NyYy5nZXQoKTsKIAogICAgIEltYWdlKiBpbWFnZSA9IGdldEltYWdlKHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihub2RlKSk7Ci0gICAgaWYgKCFpbWFnZVVSTC5pc0VtcHR5KCkgJiYg
bm9kZSAmJiBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgaW1hZ2UKLSAgICAgICAgICAgICYmICht
X2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpKSB7CisgICAgaWYgKHN0
YXRlLm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgeworICAgICAgICBp
ZiAoIWNsaXBib2FyZC0+aGFzRGF0YSgpKSB7CisgICAgICAgICAgICBpZiAoaXNOb2RlSW5UZXh0
Rm9ybUNvbnRyb2woc3JjLT5zZWxlY3Rpb24oKS0+c3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpKSkK
KyAgICAgICAgICAgICAgICBjbGlwYm9hcmQtPndyaXRlUGxhaW5UZXh0KHNyYy0+ZWRpdG9yKCkt
PnNlbGVjdGVkVGV4dCgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFJl
ZlB0cjxSYW5nZT4gc2VsZWN0aW9uUmFuZ2UgPSBzcmMtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6
ZWRSYW5nZSgpOworICAgICAgICAgICAgICAgIEFTU0VSVChzZWxlY3Rpb25SYW5nZSk7CisKKyAg
ICAgICAgICAgICAgICBjbGlwYm9hcmQtPndyaXRlUmFuZ2Uoc2VsZWN0aW9uUmFuZ2UuZ2V0KCks
IHNyYyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbV9jbGllbnQtPndpbGxQ
ZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uLCBkcmFnT3Jp
Z2luLCBjbGlwYm9hcmQpOworICAgICAgICBpZiAoIWRyYWdJbWFnZSkgeworICAgICAgICAgICAg
ZHJhZ0ltYWdlID0gY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKHNyYyk7CisgICAgICAgICAg
ICBkcmFnTG9jID0gZHJhZ0xvY0ZvclNlbGVjdGlvbkRyYWcoc3JjKTsKKyAgICAgICAgICAgIG1f
ZHJhZ09mZnNldCA9IEludFBvaW50KGRyYWdPcmlnaW4ueCgpIC0gZHJhZ0xvYy54KCksIGRyYWdP
cmlnaW4ueSgpIC0gZHJhZ0xvYy55KCkpOworICAgICAgICB9CisgICAgICAgIGRvU3lzdGVtRHJh
ZyhkcmFnSW1hZ2UsIGRyYWdMb2MsIGRyYWdPcmlnaW4sIGNsaXBib2FyZCwgc3JjLCBmYWxzZSk7
CisgICAgfSBlbHNlIGlmICghaW1hZ2VVUkwuaXNFbXB0eSgpICYmIG5vZGUgJiYgbm9kZS0+aXNF
bGVtZW50Tm9kZSgpICYmIGltYWdlCisgICAgICAgICAgICAgICAmJiAobV9kcmFnU291cmNlQWN0
aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKSkgewogICAgICAgICAvLyBXZSBzaG91bGRuJ3Qg
YmUgc3RhcnRpbmcgYSBkcmFnIGZvciBhbiBpbWFnZSB0aGF0IGNhbid0IHByb3ZpZGUgYW4gZXh0
ZW5zaW9uLgogICAgICAgICAvLyBUaGlzIGlzIGFuIGVhcmx5IGRldGVjdGlvbiBmb3IgcHJvYmxl
bXMgZW5jb3VudGVyZWQgbGF0ZXIgdXBvbiBkcm9wLgogICAgICAgICBBU1NFUlQoIWltYWdlLT5m
aWxlbmFtZUV4dGVuc2lvbigpLmlzRW1wdHkoKSk7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQg
PSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7CiAgICAgICAgIGlmICghY2xpcGJvYXJkLT5o
YXNEYXRhKCkpIHsKICAgICAgICAgICAgIG1fZHJhZ2dpbmdJbWFnZVVSTCA9IGltYWdlVVJMOwot
ICAgICAgICAgICAgcHJlcGFyZUNsaXBib2FyZEZvckltYWdlRHJhZyhzcmMsIGNsaXBib2FyZCwg
ZWxlbWVudCwgbGlua1VSTCwgaW1hZ2VVUkwsIGRyYWdTb3VyY2UuYWx0RGlzcGxheVN0cmluZygp
KTsKKyAgICAgICAgICAgIHByZXBhcmVDbGlwYm9hcmRGb3JJbWFnZURyYWcoc3JjLCBjbGlwYm9h
cmQsIGVsZW1lbnQsIGxpbmtVUkwsIGltYWdlVVJMLCBoaXRUZXN0UmVzdWx0LmFsdERpc3BsYXlT
dHJpbmcoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFn
U291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25JbWFnZSwgZHJhZ09yaWdpbiwgY2xpcGJvYXJk
KTsKIAogICAgICAgICBpZiAoIWRyYWdJbWFnZSkgewotICAgICAgICAgICAgSW50UmVjdCBpbWFn
ZVJlY3QgPSBkcmFnU291cmNlLmltYWdlUmVjdCgpOworICAgICAgICAgICAgSW50UmVjdCBpbWFn
ZVJlY3QgPSBoaXRUZXN0UmVzdWx0LmltYWdlUmVjdCgpOwogICAgICAgICAgICAgaW1hZ2VSZWN0
LnNldExvY2F0aW9uKG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50
cyhzcmMtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhpbWFnZVJlY3QubG9jYXRpb24oKSkpKTsK
LSAgICAgICAgICAgIGRvSW1hZ2VEcmFnKGVsZW1lbnQsIGRyYWdPcmlnaW4sIGRyYWdTb3VyY2Uu
aW1hZ2VSZWN0KCksIGNsaXBib2FyZCwgc3JjLCBtX2RyYWdPZmZzZXQpOworICAgICAgICAgICAg
ZG9JbWFnZURyYWcoZWxlbWVudCwgZHJhZ09yaWdpbiwgaGl0VGVzdFJlc3VsdC5pbWFnZVJlY3Qo
KSwgY2xpcGJvYXJkLCBzcmMsIG1fZHJhZ09mZnNldCk7CiAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgLy8gREhUTUwgZGVmaW5lZCBkcmFnIGltYWdlCiAgICAgICAgICAgICBkb1N5c3RlbURy
YWcoZHJhZ0ltYWdlLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQsIHNyYywgZmFsc2Up
OwpAQCAtNzY0LDcgKzc1OSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFt
ZSogc3JjLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRHJhZ09wZXJhdGlvbiBzCiAgICAgICAgIGlm
ICghY2xpcGJvYXJkLT5oYXNEYXRhKCkpCiAgICAgICAgICAgICAvLyBTaW1wbGlmeSB3aGl0ZXNw
YWNlIHNvIHRoZSB0aXRsZSBwdXQgb24gdGhlIGNsaXBib2FyZCByZXNlbWJsZXMgd2hhdCB0aGUg
dXNlciBzZWVzCiAgICAgICAgICAgICAvLyBvbiB0aGUgd2ViIHBhZ2UuIFRoaXMgaW5jbHVkZXMg
cmVwbGFjaW5nIG5ld2xpbmVzIHdpdGggc3BhY2VzLgotICAgICAgICAgICAgY2xpcGJvYXJkLT53
cml0ZVVSTChsaW5rVVJMLCBkcmFnU291cmNlLnRleHRDb250ZW50KCkuc2ltcGxpZnlXaGl0ZVNw
YWNlKCksIHNyYyk7CisgICAgICAgICAgICBjbGlwYm9hcmQtPndyaXRlVVJMKGxpbmtVUkwsIGhp
dFRlc3RSZXN1bHQudGV4dENvbnRlbnQoKS5zaW1wbGlmeVdoaXRlU3BhY2UoKSwgc3JjKTsKIAog
ICAgICAgICBpZiAoc3JjLT5zZWxlY3Rpb24oKS0+aXNDYXJldCgpICYmIHNyYy0+c2VsZWN0aW9u
KCktPmlzQ29udGVudEVkaXRhYmxlKCkpIHsKICAgICAgICAgICAgIC8vIGEgdXNlciBjYW4gaW5p
dGlhdGUgYSBkcmFnIG9uIGEgbGluayB3aXRob3V0IGhhdmluZyBhbnkgdGV4dApAQCAtNzc4LDM3
ICs3NzMsMTkgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lKiBzcmMsIENs
aXBib2FyZCogY2xpcGJvYXJkLCBEcmFnT3BlcmF0aW9uIHMKIAogICAgICAgICBtX2NsaWVudC0+
d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25MaW5rLCBkcmFnT3Jp
Z2luLCBjbGlwYm9hcmQpOwogICAgICAgICBpZiAoIWRyYWdJbWFnZSkgewotICAgICAgICAgICAg
ZHJhZ0ltYWdlID0gY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhsaW5rVVJMLCBkcmFnU291cmNlLnRl
eHRDb250ZW50KCksIHNyYyk7CisgICAgICAgICAgICBkcmFnSW1hZ2UgPSBjcmVhdGVEcmFnSW1h
Z2VGb3JMaW5rKGxpbmtVUkwsIGhpdFRlc3RSZXN1bHQudGV4dENvbnRlbnQoKSwgc3JjKTsKICAg
ICAgICAgICAgIEludFNpemUgc2l6ZSA9IGRyYWdJbWFnZVNpemUoZHJhZ0ltYWdlKTsKICAgICAg
ICAgICAgIG1fZHJhZ09mZnNldCA9IEludFBvaW50KC1zaXplLndpZHRoKCkgLyAyLCAtTGlua0Ry
YWdCb3JkZXJJbnNldCk7CiAgICAgICAgICAgICBkcmFnTG9jID0gSW50UG9pbnQobW91c2VEcmFn
Z2VkUG9pbnQueCgpICsgbV9kcmFnT2Zmc2V0LngoKSwgbW91c2VEcmFnZ2VkUG9pbnQueSgpICsg
bV9kcmFnT2Zmc2V0LnkoKSk7CiAgICAgICAgIH0KICAgICAgICAgZG9TeXN0ZW1EcmFnKGRyYWdJ
bWFnZSwgZHJhZ0xvYywgbW91c2VEcmFnZ2VkUG9pbnQsIGNsaXBib2FyZCwgc3JjLCB0cnVlKTsK
LSAgICB9IGVsc2UgaWYgKGlzU2VsZWN0ZWQgJiYgKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdT
b3VyY2VBY3Rpb25TZWxlY3Rpb24pKSB7Ci0gICAgICAgIGlmICghY2xpcGJvYXJkLT5oYXNEYXRh
KCkpIHsKLSAgICAgICAgICAgIGlmIChpc05vZGVJblRleHRGb3JtQ29udHJvbChzcmMtPnNlbGVj
dGlvbigpLT5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCkpKQotICAgICAgICAgICAgICAgIGNsaXBi
b2FyZC0+d3JpdGVQbGFpblRleHQoc3JjLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpOwotICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb25S
YW5nZSA9IHNyYy0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKHNlbGVjdGlvblJhbmdlKTsKLQotICAgICAgICAgICAgICAgIGNsaXBib2Fy
ZC0+d3JpdGVSYW5nZShzZWxlY3Rpb25SYW5nZS5nZXQoKSwgc3JjKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9u
KERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24sIGRyYWdPcmlnaW4sIGNsaXBib2FyZCk7Ci0gICAg
ICAgIGlmICghZHJhZ0ltYWdlKSB7Ci0gICAgICAgICAgICBkcmFnSW1hZ2UgPSBjcmVhdGVEcmFn
SW1hZ2VGb3JTZWxlY3Rpb24oc3JjKTsKLSAgICAgICAgICAgIGRyYWdMb2MgPSBkcmFnTG9jRm9y
U2VsZWN0aW9uRHJhZyhzcmMpOwotICAgICAgICAgICAgbV9kcmFnT2Zmc2V0ID0gSW50UG9pbnQo
KGludCkoZHJhZ09yaWdpbi54KCkgLSBkcmFnTG9jLngoKSksIChpbnQpKGRyYWdPcmlnaW4ueSgp
IC0gZHJhZ0xvYy55KCkpKTsKLSAgICAgICAgfQotICAgICAgICBkb1N5c3RlbURyYWcoZHJhZ0lt
YWdlLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQsIHNyYywgZmFsc2UpOwotICAgIH0g
ZWxzZSBpZiAoaXNESFRNTERyYWcpIHsKKyAgICB9IGVsc2UgaWYgKHN0YXRlLm1fZHJhZ1R5cGUg
PT0gRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKSB7CiAgICAgICAgIEFTU0VSVChtX2RyYWdTb3VyY2VB
Y3Rpb24gJiBEcmFnU291cmNlQWN0aW9uREhUTUwpOwogICAgICAgICBtX2NsaWVudC0+d2lsbFBl
cmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25ESFRNTCwgZHJhZ09yaWdpbiwg
Y2xpcGJvYXJkKTsKICAgICAgICAgZG9TeXN0ZW1EcmFnKGRyYWdJbWFnZSwgZHJhZ0xvYywgZHJh
Z09yaWdpbiwgY2xpcGJvYXJkLCBzcmMsIGZhbHNlKTsKICAgICB9IGVsc2UgewotICAgICAgICAv
LyBPbmx5IHdheSBJIGtub3cgdG8gZ2V0IGhlcmUgaXMgaWYgdG8gZ2V0IGhlcmUgaXMgaWYgdGhl
IG9yaWdpbmFsIGVsZW1lbnQgY2xpY2tlZCBvbiBpbiB0aGUgbW91c2Vkb3duIGlzIG5vIGxvbmdl
cgotICAgICAgICAvLyB1bmRlciB0aGUgbW91c2Vkb3duIHBvaW50LCBzbyBsaW5rVVJMLCBpbWFn
ZVVSTCBhbmQgaXNTZWxlY3RlZCBhcmUgYWxsIGZhbHNlL2VtcHR5LgorICAgICAgICAvLyBkcmFn
Z2FibGVOb2RlKCkgZGV0ZXJtaW5lZCBhbiBpbWFnZSBvciBsaW5rIG5vZGUgd2FzIGRyYWdnYWJs
ZSwgYnV0IGl0IHR1cm5zIG91dCB0aGUKKyAgICAgICAgLy8gaW1hZ2Ugb3IgbGluayBoYWQgbm8g
VVJMLCBzbyB0aGVyZSBpcyBub3RoaW5nIHRvIGRyYWcuCiAgICAgICAgIHN0YXJ0ZWREcmFnID0g
ZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKaW5kZXggYmU4
YzgzNGFlZTYxNTY5YmRlMjFjOGI5MGZhZTljMDRmYTM1YTBiYS4uMjYxYThkNTNmNzM2NThiMDcx
ZjIxMDU2YWU1OGIyNGIxYmI0NTk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
aApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRG9jdW1l
bnQ7CiAgICAgY2xhc3MgRHJhZ0NsaWVudDsKICAgICBjbGFzcyBEcmFnRGF0YTsKKyAgICBzdHJ1
Y3QgRHJhZ1N0YXRlOwogICAgIGNsYXNzIEVsZW1lbnQ7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAg
Y2xhc3MgRnJhbWVTZWxlY3Rpb247CkBAIC03NSwxMyArNzYsMTIgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBEcmFnRGVzdGluYXRpb25BY3Rpb24gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9kcmFnRGVzdGluYXRpb25BY3Rpb247IH0KICAgICAgICAgRHJh
Z1NvdXJjZUFjdGlvbiBkZWxlZ2F0ZURyYWdTb3VyY2VBY3Rpb24oY29uc3QgSW50UG9pbnQmIHBh
Z2VQb2ludCk7CiAgICAgICAgIAotICAgICAgICBOb2RlKiBkcmFnZ2FibGVOb2RlKGNvbnN0IEZy
YW1lKiwgTm9kZSosIGJvb2wgZGh0bWxPSywgYm9vbCB1YU9LLCBpbnQgeCwgaW50IHksIGJvb2wm
IGRodG1sV2lsbERyYWcpIGNvbnN0OwotICAgICAgICBib29sIG1heVN0YXJ0RHJhZ0F0RXZlbnRM
b2NhdGlvbihjb25zdCBGcmFtZSosIGNvbnN0IEludFBvaW50JiBmcmFtZVBvcywgTm9kZSopIGNv
bnN0OworICAgICAgICBOb2RlKiBkcmFnZ2FibGVOb2RlKGNvbnN0IEZyYW1lKiwgTm9kZSosIGNv
bnN0IEludFBvaW50JiwgRHJhZ1N0YXRlJikgY29uc3Q7CiAgICAgICAgIHZvaWQgZHJhZ0VuZGVk
KCk7CiAgICAgICAgIAogICAgICAgICB2b2lkIHBsYWNlRHJhZ0NhcmV0KGNvbnN0IEludFBvaW50
Jik7CiAgICAgICAgIAotICAgICAgICBib29sIHN0YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlwYm9h
cmQqLCBEcmFnT3BlcmF0aW9uIHNyY09wLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdF
dmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIGJvb2wgaXNESFRNTERyYWcpOworICAg
ICAgICBib29sIHN0YXJ0RHJhZyhGcmFtZSogc3JjLCBjb25zdCBEcmFnU3RhdGUmLCBEcmFnT3Bl
cmF0aW9uIHNyY09wLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3Qg
SW50UG9pbnQmIGRyYWdPcmlnaW4pOwogICAgICAgICBzdGF0aWMgY29uc3QgSW50U2l6ZSYgbWF4
RHJhZ0ltYWdlU2l6ZSgpOwogICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBMaW5r
RHJhZ0JvcmRlckluc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3Rh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ1N0YXRlLmgKaW5kZXggNmIxZjY3NTZlM2Qy
MWU3N2ZiMTliMGI5ODdiMjQwMzFkNzBlZDBmYS4uOGY1ZmI1NzYxMDc4Y2U5MjVjYTc2NjdmZGE2
NTdjMmQzYThlZTAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5oCkBAIC0yNiwyMyArMjYsMjkg
QEAKICNpZm5kZWYgRHJhZ1N0YXRlX2gKICNkZWZpbmUgRHJhZ1N0YXRlX2gKIAorI2luY2x1ZGUg
IkRyYWdBY3Rpb25zLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQ2xpcGJvYXJkOworY2xhc3MgTm9kZTsKKwogc3RydWN0IERyYWdTdGF0
ZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHJhZ1N0YXRlKTsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICBlbnVtIEV2ZW50RGlzcGF0Y2hQb2xpY3kgewor
ICAgICAgICBEb05vdERpc3BhdGNoRXZlbnRzLAorICAgICAgICBEaXNwYXRjaEV2ZW50cywKKyAg
ICB9OwogICAgIERyYWdTdGF0ZSgpIHsgfQorICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hFdmVudHMo
KSBjb25zdCB7IHJldHVybiBtX2V2ZW50RGlzcGF0Y2hQb2xpY3kgPT0gRGlzcGF0Y2hFdmVudHM7
IH0KICAgICBSZWZQdHI8Tm9kZT4gbV9kcmFnU3JjOyAvLyBlbGVtZW50IHRoYXQgbWF5IGJlIGEg
ZHJhZyBzb3VyY2UsIGZvciB0aGUgY3VycmVudCBtb3VzZSBnZXN0dXJlCi0gICAgYm9vbCBtX2Ry
YWdTcmNJc0xpbms7Ci0gICAgYm9vbCBtX2RyYWdTcmNJc0ltYWdlOwotICAgIGJvb2wgbV9kcmFn
U3JjSW5TZWxlY3Rpb247Ci0gICAgYm9vbCBtX2RyYWdTcmNNYXlCZURIVE1MOwotICAgIGJvb2wg
bV9kcmFnU3JjTWF5QmVVQTsgLy8gQXJlIERIVE1MIGFuZC9vciB0aGUgVXNlckFnZW50IGFsbG93
ZWQgdG8gZHJhZyBvdXQ/Ci0gICAgYm9vbCBtX2RyYWdTcmNJc0RIVE1MOworICAgIEV2ZW50RGlz
cGF0Y2hQb2xpY3kgbV9ldmVudERpc3BhdGNoUG9saWN5OworICAgIERyYWdTb3VyY2VBY3Rpb24g
bV9kcmFnVHlwZTsKICAgICBSZWZQdHI8Q2xpcGJvYXJkPiBtX2RyYWdDbGlwYm9hcmQ7IC8vIHVz
ZWQgb24gb25seSB0aGUgc291cmNlIHNpZGUgb2YgZHJhZ2dpbmcKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBkMjE1OTVhYmM1YTViMTIwNTVkMTkyYjIzN2MyZWI0
MmMwY2FlNTIzLi4zOTA5ZjU0NGJhZWI4YmYwZDg1MWYxODk4ZGVlZmI1ZWJjZmJjMGZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC03OCw2ICs3OCw3IEBACiAjaW5jbHVk
ZSAiVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50Lmgi
CiAjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KIApAQCAtNTg3LDEyICs1ODgsNiBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZXZl
bnRNYXlTdGFydERyYWcoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkgY29uc3QKICAg
ICBpZiAoZXZlbnQuYnV0dG9uKCkgIT0gTGVmdEJ1dHRvbiB8fCBldmVudC5jbGlja0NvdW50KCkg
IT0gMSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIGJvb2wgREhUTUxGbGFnOwot
ICAgIGJvb2wgVUFGbGFnOwotICAgIGFsbG93REhUTUxEcmFnKERIVE1MRmxhZywgVUFGbGFnKTsK
LSAgICBpZiAoIURIVE1MRmxhZyAmJiAhVUFGbGFnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
ICAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7CiAgICAgaWYgKCF2aWV3KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MDEsMTEgKzU5NiwxMiBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6ZXZlbnRNYXlTdGFydERyYWcoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkg
Y29uc3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIHVwZGF0
ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZCgpOwogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3Qo
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5KTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3
LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvcygpKSk7CiAgICAgbV9mcmFtZS0+Y29udGVudFJl
bmRlcmVyKCktPmxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKLSAgICBib29sIHNy
Y0lzREhUTUw7Ci0gICAgcmV0dXJuIHJlc3VsdC5pbm5lck5vZGUoKSAmJiBwYWdlLT5kcmFnQ29u
dHJvbGxlcigpLT5kcmFnZ2FibGVOb2RlKG1fZnJhbWUsIHJlc3VsdC5pbm5lck5vZGUoKSwgREhU
TUxGbGFnLCBVQUZsYWcsIHJlc3VsdC5wb2ludCgpLngoKSwgcmVzdWx0LnBvaW50KCkueSgpLCBz
cmNJc0RIVE1MKTsKKyAgICBEcmFnU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIHJlc3VsdC5pbm5l
ck5vZGUoKSAmJiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5kcmFnZ2FibGVOb2RlKG1fZnJhbWUs
IHJlc3VsdC5pbm5lck5vZGUoKSwgcmVzdWx0LnBvaW50KCksIHN0YXRlKTsKIH0KIAogdm9pZCBF
dmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZygpCkBAIC04OTIsMjUgKzg4
OCwyMCBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c2V0QXV0b3Njcm9sbFJlbmRlcmVyKFJlbmRlck9i
amVjdCogcmVuZGVyZXIpCiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotdm9pZCBFdmVu
dEhhbmRsZXI6OmFsbG93REhUTUxEcmFnKGJvb2wmIGZsYWdESFRNTCwgYm9vbCYgZmxhZ1VBKSBj
b25zdAorRHJhZ1NvdXJjZUFjdGlvbiBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdTb3VyY2VBY3Rp
b25zQWxsb3dlZCgpIGNvbnN0CiB7Ci0gICAgZmxhZ0RIVE1MID0gZmFsc2U7Ci0gICAgZmxhZ1VB
ID0gZmFsc2U7Ci0KICAgICBpZiAoIW1fZnJhbWUpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIERyYWdTb3VyY2VBY3Rpb25Ob25lOwogCiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUt
PnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IERyYWdTb3VyY2VBY3Rpb25Ob25lOwogCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+
dmlldygpOwogICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
RHJhZ1NvdXJjZUFjdGlvbk5vbmU7CiAKLSAgICB1bnNpZ25lZCBtYXNrID0gcGFnZS0+ZHJhZ0Nv
bnRyb2xsZXIoKS0+ZGVsZWdhdGVEcmFnU291cmNlQWN0aW9uKHZpZXctPmNvbnRlbnRzVG9XaW5k
b3cobV9tb3VzZURvd25Qb3MpKTsKLSAgICBmbGFnREhUTUwgPSAobWFzayAmIERyYWdTb3VyY2VB
Y3Rpb25ESFRNTCkgIT0gRHJhZ1NvdXJjZUFjdGlvbk5vbmU7Ci0gICAgZmxhZ1VBID0gKChtYXNr
ICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKSB8fCAobWFzayAmIERyYWdTb3VyY2VBY3Rpb25MaW5r
KSB8fCAobWFzayAmIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pKTsKKyAgICByZXR1cm4gcGFn
ZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZGVsZWdhdGVEcmFnU291cmNlQWN0aW9uKHZpZXctPmNvbnRl
bnRzVG9XaW5kb3cobV9tb3VzZURvd25Qb3MpKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoRFJBR19T
VVBQT1JUKQogICAgIApAQCAtMTgwMiw3ICsxNzkzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnVw
ZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIENsaXBib2Fy
ZCoKICAgICAgICAgLy8gTW9yZW92ZXIsIHRoaXMgb3JkZXJpbmcgY29uZm9ybXMgdG8gc2VjdGlv
biA3LjkuNCBvZiB0aGUgSFRNTCA1IHNwZWMuIDxodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVj
L092ZXJ2aWV3Lmh0bWwjZHJhZy1hbmQtZHJvcC1wcm9jZXNzaW5nLW1vZGVsPi4KICAgICAgICAg
aWYgKG5ld1RhcmdldCAmJiBjYW5IYW5kbGVEcmFnQW5kRHJvcEZvclRhcmdldChVcGRhdGVEcmFn
QW5kRHJvcCwgbmV3VGFyZ2V0LCBldmVudCwgY2xpcGJvYXJkLCAmYWNjZXB0KSkgewogICAgICAg
ICAgICAgLy8gQXMgcGVyIHNlY3Rpb24gNy45LjQgb2YgdGhlIEhUTUwgNSBzcGVjLiwgd2UgbXVz
dCBhbHdheXMgZmlyZSBhIGRyYWcgZXZlbnQgYmVmb3JlIGZpcmluZyBhIGRyYWdlbnRlciwgZHJh
Z2xlYXZlLCBvciBkcmFnb3ZlciBldmVudC4KLSAgICAgICAgICAgIGlmIChkcmFnU3RhdGUoKS5t
X2RyYWdTcmMgJiYgZHJhZ1N0YXRlKCkubV9kcmFnU3JjTWF5QmVESFRNTCkgeworICAgICAgICAg
ICAgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyAmJiBkcmFnU3RhdGUoKS5zaG91bGREaXNwYXRj
aEV2ZW50cygpKSB7CiAgICAgICAgICAgICAgICAgLy8gZm9yIG5vdyB3ZSBkb24ndCBjYXJlIGlm
IGV2ZW50IGhhbmRsZXIgY2FuY2VscyBkZWZhdWx0IGJlaGF2aW9yLCBzaW5jZSB0aGVyZSBpcyBu
b25lCiAgICAgICAgICAgICAgICAgZGlzcGF0Y2hEcmFnU3JjRXZlbnQoZXZlbnROYW1lcygpLmRy
YWdFdmVudCwgZXZlbnQpOwogICAgICAgICAgICAgfQpAQCAtMTgyMCw3ICsxODExLDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZXZlbnQsIENsaXBib2FyZCoKICAgICB9IGVsc2UgewogICAgICAgICBpZiAobmV3VGFyZ2V0
ICYmIGNhbkhhbmRsZURyYWdBbmREcm9wRm9yVGFyZ2V0KFVwZGF0ZURyYWdBbmREcm9wLCBuZXdU
YXJnZXQsIGV2ZW50LCBjbGlwYm9hcmQsICZhY2NlcHQpKSB7CiAgICAgICAgICAgICAvLyBOb3Rl
LCB3aGVuIGRlYWxpbmcgd2l0aCBzdWItZnJhbWVzLCB3ZSBtYXkgbmVlZCB0byBmaXJlIG9ubHkg
YSBkcmFnb3ZlciBldmVudCBhcyBhIGRyYWcgZXZlbnQgbWF5IGhhdmUgYmVlbiBmaXJlZCBlYXJs
aWVyLgotICAgICAgICAgICAgaWYgKCFtX3Nob3VsZE9ubHlGaXJlRHJhZ092ZXJFdmVudCAmJiBk
cmFnU3RhdGUoKS5tX2RyYWdTcmMgJiYgZHJhZ1N0YXRlKCkubV9kcmFnU3JjTWF5QmVESFRNTCkg
eworICAgICAgICAgICAgaWYgKCFtX3Nob3VsZE9ubHlGaXJlRHJhZ092ZXJFdmVudCAmJiBkcmFn
U3RhdGUoKS5tX2RyYWdTcmMgJiYgZHJhZ1N0YXRlKCkuc2hvdWxkRGlzcGF0Y2hFdmVudHMoKSkg
ewogICAgICAgICAgICAgICAgIC8vIGZvciBub3cgd2UgZG9uJ3QgY2FyZSBpZiBldmVudCBoYW5k
bGVyIGNhbmNlbHMgZGVmYXVsdCBiZWhhdmlvciwgc2luY2UgdGhlcmUgaXMgbm9uZQogICAgICAg
ICAgICAgICAgIGRpc3BhdGNoRHJhZ1NyY0V2ZW50KGV2ZW50TmFtZXMoKS5kcmFnRXZlbnQsIGV2
ZW50KTsKICAgICAgICAgICAgIH0KQEAgLTE4MzYsNyArMTgyNyw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBD
bGlwYm9hcmQqCiB2b2lkIEV2ZW50SGFuZGxlcjo6Y2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkKiBjbGlwYm9hcmQpCiB7CiAgICAgaWYg
KG1fZHJhZ1RhcmdldCAmJiBjYW5IYW5kbGVEcmFnQW5kRHJvcEZvclRhcmdldChDYW5jZWxEcmFn
QW5kRHJvcCwgbV9kcmFnVGFyZ2V0LmdldCgpLCBldmVudCwgY2xpcGJvYXJkKSkgewotICAgICAg
ICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjICYmIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJl
REhUTUwpCisgICAgICAgIGlmIChkcmFnU3RhdGUoKS5tX2RyYWdTcmMgJiYgZHJhZ1N0YXRlKCku
c2hvdWxkRGlzcGF0Y2hFdmVudHMoKSkKICAgICAgICAgICAgIGRpc3BhdGNoRHJhZ1NyY0V2ZW50
KGV2ZW50TmFtZXMoKS5kcmFnRXZlbnQsIGV2ZW50KTsKICAgICAgICAgZGlzcGF0Y2hEcmFnRXZl
bnQoZXZlbnROYW1lcygpLmRyYWdsZWF2ZUV2ZW50LCBtX2RyYWdUYXJnZXQuZ2V0KCksIGV2ZW50
LCBjbGlwYm9hcmQpOwogICAgIH0KQEAgLTI2MjksMTIgKzI2MjAsMjIgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQoY29uc3QgSW50UG9pbnQmIGRyYWdWaWV3cG9y
dExvY2F0aW9uKQogICAgIEludFNpemUgZGVsdGEgPSBkcmFnTG9jYXRpb24gLSBtX21vdXNlRG93
blBvczsKICAgICAKICAgICBpbnQgdGhyZXNob2xkID0gR2VuZXJhbERyYWdIeXN0ZXJlc2lzOwot
ICAgIGlmIChkcmFnU3RhdGUoKS5tX2RyYWdTcmNJc0ltYWdlKQorICAgIHN3aXRjaCAoZHJhZ1N0
YXRlKCkubV9kcmFnVHlwZSkgeworICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbjoK
KyAgICAgICAgdGhyZXNob2xkID0gVGV4dERyYWdIeXN0ZXJlc2lzOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25JbWFnZToKICAgICAgICAgdGhyZXNob2xkID0gSW1h
Z2VEcmFnSHlzdGVyZXNpczsKLSAgICBlbHNlIGlmIChkcmFnU3RhdGUoKS5tX2RyYWdTcmNJc0xp
bmspCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbkxpbms6CiAgICAg
ICAgIHRocmVzaG9sZCA9IExpbmtEcmFnSHlzdGVyZXNpczsKLSAgICBlbHNlIGlmIChkcmFnU3Rh
dGUoKS5tX2RyYWdTcmNJblNlbGVjdGlvbikKLSAgICAgICAgdGhyZXNob2xkID0gVGV4dERyYWdI
eXN0ZXJlc2lzOworICAgICAgICBicmVhazsKKyAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25ESFRN
TDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEcmFnU291cmNlQWN0aW9uTm9uZToKKyAgICBj
YXNlIERyYWdTb3VyY2VBY3Rpb25Bbnk6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KICAgICAKICAgICByZXR1cm4gYWJzKGRlbHRhLndpZHRoKCkpID49IHRocmVzaG9sZCB8
fCBhYnMoZGVsdGEuaGVpZ2h0KCkpID49IHRocmVzaG9sZDsKIH0KQEAgLTI2NDcsNyArMjY0OCw3
IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpmcmVlQ2xpcGJvYXJkKCkKIAogdm9pZCBFdmVudEhhbmRs
ZXI6OmRyYWdTb3VyY2VFbmRlZEF0KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIERy
YWdPcGVyYXRpb24gb3BlcmF0aW9uKQogewotICAgIGlmIChkcmFnU3RhdGUoKS5tX2RyYWdTcmMg
JiYgZHJhZ1N0YXRlKCkubV9kcmFnU3JjTWF5QmVESFRNTCkgeworICAgIGlmIChkcmFnU3RhdGUo
KS5tX2RyYWdTcmMgJiYgZHJhZ1N0YXRlKCkuc2hvdWxkRGlzcGF0Y2hFdmVudHMoKSkgewogICAg
ICAgICBkcmFnU3RhdGUoKS5tX2RyYWdDbGlwYm9hcmQtPnNldERlc3RpbmF0aW9uT3BlcmF0aW9u
KG9wZXJhdGlvbik7CiAgICAgICAgIC8vIGZvciBub3cgd2UgZG9uJ3QgY2FyZSBpZiBldmVudCBo
YW5kbGVyIGNhbmNlbHMgZGVmYXVsdCBiZWhhdmlvciwgc2luY2UgdGhlcmUgaXMgbm9uZQogICAg
ICAgICBkaXNwYXRjaERyYWdTcmNFdmVudChldmVudE5hbWVzKCkuZHJhZ2VuZEV2ZW50LCBldmVu
dCk7CkBAIC0yNjY1LDYgKzI2NjYsMTIgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoRHJh
Z1NyY0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBQbGEKICAgICBy
ZXR1cm4gIWRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50VHlwZSwgZHJhZ1N0YXRlKCkubV9kcmFnU3Jj
LmdldCgpLCBldmVudCwgZHJhZ1N0YXRlKCkubV9kcmFnQ2xpcGJvYXJkLmdldCgpKTsKIH0KICAg
ICAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdGF0aWMgYm9vbCBFeGFjdGx5T25lQml0U2V0KFQg
bikKK3sKKyAgICByZXR1cm4gbiAmJiAhKG4gJiAobiAtIDEpKTsKK30KKwogYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZl
bnQpCiB7CiAgICAgaWYgKGV2ZW50LmV2ZW50KCkuYnV0dG9uKCkgIT0gTGVmdEJ1dHRvbiB8fCBl
dmVudC5ldmVudCgpLmV2ZW50VHlwZSgpICE9IE1vdXNlRXZlbnRNb3ZlZCkgewpAQCAtMjY4Miw1
MCArMjY4OSw2MiBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKICAgICAvLyBDYXJlZnVsIHRoYXQgdGhlIGRy
YWcgc3RhcnRpbmcgbG9naWMgc3RheXMgaW4gc3luYyB3aXRoIGV2ZW50TWF5U3RhcnREcmFnKCkK
ICAgICAKICAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcgJiYgIWRyYWdTdGF0ZSgpLm1f
ZHJhZ1NyYykgewotICAgICAgICBhbGxvd0RIVE1MRHJhZyhkcmFnU3RhdGUoKS5tX2RyYWdTcmNN
YXlCZURIVE1MLCBkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZVVBKTsKLSAgICAgICAgaWYgKCFk
cmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MICYmICFkcmFnU3RhdGUoKS5tX2RyYWdTcmNN
YXlCZVVBKQotICAgICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsgLy8g
bm8gZWxlbWVudCBpcyBkcmFnZ2FibGUKLSAgICB9CisgICAgICAgIGRyYWdTdGF0ZSgpLm1fZXZl
bnREaXNwYXRjaFBvbGljeSA9ICh1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKSAmIERy
YWdTb3VyY2VBY3Rpb25ESFRNTCkgPyBEcmFnU3RhdGU6OkRpc3BhdGNoRXZlbnRzOiBEcmFnU3Rh
dGU6OkRvTm90RGlzcGF0Y2hFdmVudHM7CiAKLSAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERy
YWcgJiYgIWRyYWdTdGF0ZSgpLm1fZHJhZ1NyYykgewogICAgICAgICAvLyB0cnkgdG8gZmluZCBh
biBlbGVtZW50IHRoYXQgd2FudHMgdG8gYmUgZHJhZ2dlZAogICAgICAgICBIaXRUZXN0UmVxdWVz
dCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSk7CiAgICAgICAgIEhpdFRlc3RSZXN1
bHQgcmVzdWx0KG1fbW91c2VEb3duUG9zKTsKICAgICAgICAgbV9mcmFtZS0+Y29udGVudFJlbmRl
cmVyKCktPmxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICAgICAgTm9kZSog
bm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKICAgICAgICAgaWYgKG5vZGUgJiYgbV9mcmFtZS0+
cGFnZSgpKQotICAgICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0gbV9mcmFtZS0+cGFn
ZSgpLT5kcmFnQ29udHJvbGxlcigpLT5kcmFnZ2FibGVOb2RlKG1fZnJhbWUsIG5vZGUsIGRyYWdT
dGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwsIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlVUEs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9tb3VzZURvd25Qb3MueCgpLCBtX21vdXNl
RG93blBvcy55KCksIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzREhUTUwpOworICAgICAgICAgICAg
ZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0gbV9mcmFtZS0+cGFnZSgpLT5kcmFnQ29udHJvbGxlcigp
LT5kcmFnZ2FibGVOb2RlKG1fZnJhbWUsIG5vZGUsIG1fbW91c2VEb3duUG9zLCBkcmFnU3RhdGUo
KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyA9IDA7
CiAgICAgICAgIAogICAgICAgICBpZiAoIWRyYWdTdGF0ZSgpLm1fZHJhZ1NyYykKICAgICAgICAg
ICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0gZmFsc2U7IC8vIG5vIGVsZW1lbnQgaXMgZHJh
Z2dhYmxlCi0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8gcmVtZW1iZXIgc29tZSBmYWN0
cyBhYm91dCB0aGlzIHNvdXJjZSwgd2hpbGUgd2UgaGF2ZSBhIEhpdFRlc3RSZXN1bHQgaGFuZHkK
LSAgICAgICAgICAgIG5vZGUgPSByZXN1bHQuVVJMRWxlbWVudCgpOwotICAgICAgICAgICAgZHJh
Z1N0YXRlKCkubV9kcmFnU3JjSXNMaW5rID0gbm9kZSAmJiBub2RlLT5pc0xpbmsoKTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgbm9kZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKTsK
LSAgICAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzSW1hZ2UgPSBub2RlICYmIG5vZGUt
PnJlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdTcmNJblNlbGVjdGlvbiA9IG1fZnJhbWUt
PnNlbGVjdGlvbigpLT5jb250YWlucyhtX21vdXNlRG93blBvcyk7Ci0gICAgICAgIH0gICAgICAg
ICAgICAgICAgCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZHJhZ01heVN0YXJ0U2VsZWN0
aW9uSW5zdGVhZCA9IChkcmFnU3RhdGUoKS5tX2RyYWdUeXBlICYgRHJhZ1NvdXJjZUFjdGlvblNl
bGVjdGlvbik7CiAgICAgfQogICAgIAogICAgIC8vIEZvciBkcmFncyBzdGFydGluZyBpbiB0aGUg
c2VsZWN0aW9uLCB0aGUgdXNlciBtdXN0IHdhaXQgYmV0d2VlbiB0aGUgbW91c2Vkb3duIGFuZCBt
b3VzZWRyYWcsCiAgICAgLy8gb3IgZWxzZSB3ZSBiYWlsIG9uIHRoZSBkcmFnZ2luZyBzdHVmZiBh
bmQgYWxsb3cgc2VsZWN0aW9uIHRvIG9jY3VyCi0gICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnRE
cmFnICYmICFkcmFnU3RhdGUoKS5tX2RyYWdTcmNJc0ltYWdlICYmIGRyYWdTdGF0ZSgpLm1fZHJh
Z1NyY0luU2VsZWN0aW9uICYmIGV2ZW50LmV2ZW50KCkudGltZXN0YW1wKCkgLSBtX21vdXNlRG93
blRpbWVzdGFtcCA8IFRleHREcmFnRGVsYXkpIHsKLSAgICAgICAgbV9tb3VzZURvd25NYXlTdGFy
dERyYWcgPSBmYWxzZTsKLSAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0gMDsKLSAgICAg
ICAgLy8gLi4uYnV0IGlmIHRoaXMgd2FzIHRoZSBmaXJzdCBjbGljayBpbiB0aGUgd2luZG93LCB3
ZSBkb24ndCBldmVuIHdhbnQgdG8gc3RhcnQgc2VsZWN0aW9uCi0gICAgICAgIGlmIChldmVudEFj
dGl2YXRlZFZpZXcoZXZlbnQuZXZlbnQoKSkpCi0gICAgICAgICAgICBtX21vdXNlRG93bk1heVN0
YXJ0U2VsZWN0ID0gZmFsc2U7CisgICAgaWYgKG1fZHJhZ01heVN0YXJ0U2VsZWN0aW9uSW5zdGVh
ZCAmJiBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyAmJiAoZHJhZ1N0YXRlKCkubV9kcmFnVHlwZSAm
IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pICYmIGV2ZW50LmV2ZW50KCkudGltZXN0YW1wKCkg
LSBtX21vdXNlRG93blRpbWVzdGFtcCA8IFRleHREcmFnRGVsYXkpIHsKKyAgICAgICAgQVNTRVJU
KGV2ZW50LmV2ZW50KCkuZXZlbnRUeXBlKCkgPT0gTW91c2VFdmVudE1vdmVkKTsKKyAgICAgICAg
aWYgKChkcmFnU3RhdGUoKS5tX2RyYWdUeXBlICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKSkgewor
ICAgICAgICAgICAgLy8gLi4uIHVubGVzcyB0aGUgbW91c2UgaXMgb3ZlciBhbiBpbWFnZSwgdGhl
biB3ZSBzdGFydCBkcmFnZ2luZyBqdXN0IHRoZSBpbWFnZQorICAgICAgICAgICAgZHJhZ1N0YXRl
KCkubV9kcmFnVHlwZSA9IERyYWdTb3VyY2VBY3Rpb25JbWFnZTsKKyAgICAgICAgfSBlbHNlIGlm
ICghKGRyYWdTdGF0ZSgpLm1fZHJhZ1R5cGUgJiAoRHJhZ1NvdXJjZUFjdGlvbkRIVE1MIHwgRHJh
Z1NvdXJjZUFjdGlvbkxpbmspKSkgeworICAgICAgICAgICAgLy8gLi4uIGJ1dCBvbmx5IGJhaWwg
aWYgd2UncmUgbm90IG92ZXIgYW4gdW5zZWxlY3RhYmxlIGVsZW1lbnQuCisgICAgICAgICAgICBt
X21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOworICAgICAgICAgICAgZHJhZ1N0YXRlKCku
bV9kcmFnU3JjID0gMDsKKyAgICAgICAgICAgIC8vIC4uLiBidXQgaWYgdGhpcyB3YXMgdGhlIGZp
cnN0IGNsaWNrIGluIHRoZSB3aW5kb3csIHdlIGRvbid0IGV2ZW4gd2FudCB0byBzdGFydCBzZWxl
Y3Rpb24KKyAgICAgICAgICAgIGlmIChldmVudEFjdGl2YXRlZFZpZXcoZXZlbnQuZXZlbnQoKSkp
CisgICAgICAgICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydFNlbGVjdCA9IGZhbHNlOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gUHJldmVudCB0aGUgZm9sbG93aW5nIGNhc2Ug
ZnJvbSBvY2N1cmluZzoKKyAgICAgICAgICAgIC8vIDEuIFVzZXIgc3RhcnRzIGEgZHJhZyBpbW1l
ZGlhdGVseSBhZnRlciBtb3VzZSBkb3duIG92ZXIgYW4gdW5zZWxlY3RhYmxlIGVsZW1lbnQuCisg
ICAgICAgICAgICAvLyAyLiBXZSBlbnRlciB0aGlzIGJsb2NrIGFuZCBkZWNpZGVkIHRoYXQgc2lu
Y2Ugd2UncmUgb3ZlciBhbiB1bnNlbGVjdGFibGUgZWxlbWVudCwKKyAgICAgICAgICAgIC8vICAg
IGRvbid0IGNhbmNlbCB0aGUgZHJhZy4KKyAgICAgICAgICAgIC8vIDMuIFRoZSBkcmFnIGdldHMg
cmVzb2x2ZWQgYXMgYSBwb3RlbnRpYWwgc2VsZWN0aW9uIGRyYWcgYmVsb3cgL2J1dC8gd2UgaGF2
ZW4ndAorICAgICAgICAgICAgLy8gICAgZXhjZWVkZWQgdGhlIGRyYWcgaHlzdGVyZXNpcyB5ZXQu
CisgICAgICAgICAgICAvLyA0LiBXZSBlbnRlciB0aGlzIGJsb2NrIGFnYWluLCBhbmQgc2luY2Ug
aXQncyBub3cgbWFya2VkIGFzIGEgc2VsZWN0aW9uIGRyYWcsIHdlCisgICAgICAgICAgICAvLyAg
ICBjYW5jZWwgdGhlIGRyYWcuCisgICAgICAgICAgICBtX2RyYWdNYXlTdGFydFNlbGVjdGlvbklu
c3RlYWQgPSBmYWxzZTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICBpZiAoIW1fbW91c2VE
b3duTWF5U3RhcnREcmFnKQogICAgICAgICByZXR1cm4gIW1vdXNlRG93bk1heVN0YXJ0U2VsZWN0
KCkgJiYgIW1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsOwogICAgIAorICAgIGlmICghRXhh
Y3RseU9uZUJpdFNldChkcmFnU3RhdGUoKS5tX2RyYWdUeXBlKSkgeworICAgICAgICBBU1NFUlQo
KGRyYWdTdGF0ZSgpLm1fZHJhZ1R5cGUgJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSk7Cisg
ICAgICAgIEFTU0VSVCgoZHJhZ1N0YXRlKCkubV9kcmFnVHlwZSAmIH5EcmFnU291cmNlQWN0aW9u
U2VsZWN0aW9uKSA9PSBEcmFnU291cmNlQWN0aW9uREhUTUwKKyAgICAgICAgICAgICAgICB8fCAo
ZHJhZ1N0YXRlKCkubV9kcmFnVHlwZSAmIH5EcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSA9PSBE
cmFnU291cmNlQWN0aW9uSW1hZ2UKKyAgICAgICAgICAgICAgICB8fCAoZHJhZ1N0YXRlKCkubV9k
cmFnVHlwZSAmIH5EcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSA9PSBEcmFnU291cmNlQWN0aW9u
TGluayk7CisgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1R5cGUgPSBEcmFnU291cmNlQWN0aW9u
U2VsZWN0aW9uOworICAgIH0KKwogICAgIC8vIFdlIGFyZSBzdGFydGluZyBhIHRleHQvaW1hZ2Uv
dXJsIGRyYWcsIHNvIHRoZSBjdXJzb3Igc2hvdWxkIGJlIGFuIGFycm93CiAgICAgaWYgKEZyYW1l
VmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkgewogICAgICAgICAvLyBGSVhNRSA8cmRhcjov
Lzc1Nzc1OTU+OiBDdXN0b20gY3Vyc29ycyBhcmVuJ3Qgc3VwcG9ydGVkIGR1cmluZyBkcmFnIGFu
ZCBkcm9wIChkZWZhdWx0IHRvIHBvaW50ZXIpLgpAQCAtMjc0NCwxMCArMjc2MywxMCBAQCBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJiBldmVudCkKICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIG1ha2Ugc3VyZSBpdCBnZXRz
IG51bWJpZmllZAogICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ0NsaXBib2FyZCA9IGNyZWF0ZURyYWdn
aW5nQ2xpcGJvYXJkKCk7ICAKICAgICAKLSAgICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjTWF5
QmVESFRNTCkgeworICAgIGlmIChkcmFnU3RhdGUoKS5zaG91bGREaXNwYXRjaEV2ZW50cygpKSB7
CiAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgaXMgYSBET00gYmFzZWQgZHJhZywgaWYg
aXQgaXMgZ2V0IHRoZSBET00gc3BlY2lmaWVkIGRyYWcgCiAgICAgICAgIC8vIGltYWdlIGFuZCBv
ZmZzZXQKLSAgICAgICAgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzREhUTUwpIHsKKyAgICAg
ICAgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKSB7
CiAgICAgICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGRyYWdTdGF0ZSgpLm1f
ZHJhZ1NyYy0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRv
ZXNuJ3Qgd29yayBjb3JyZWN0bHkgd2l0aCB0cmFuc2Zvcm1zLgogICAgICAgICAgICAgICAgIEZs
b2F0UG9pbnQgYWJzUG9zID0gcmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZSgpOwpAQCAtMjc4Myw4
ICsyODAyLDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnRE
cmFnKSB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgICAgIERy
YWdDb250cm9sbGVyKiBkcmFnQ29udHJvbGxlciA9IHBhZ2UgPyBwYWdlLT5kcmFnQ29udHJvbGxl
cigpIDogMDsKLSAgICAgICAgYm9vbCBzdGFydGVkRHJhZyA9IGRyYWdDb250cm9sbGVyICYmIGRy
YWdDb250cm9sbGVyLT5zdGFydERyYWcobV9mcmFtZSwgZHJhZ1N0YXRlKCkubV9kcmFnQ2xpcGJv
YXJkLmdldCgpLCBzcmNPcCwgZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25Qb3MsIGRyYWdTdGF0
ZSgpLm1fZHJhZ1NyY0lzREhUTUwpOwotICAgICAgICBpZiAoIXN0YXJ0ZWREcmFnICYmIGRyYWdT
dGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwpIHsKKyAgICAgICAgYm9vbCBzdGFydGVkRHJhZyA9
IGRyYWdDb250cm9sbGVyICYmIGRyYWdDb250cm9sbGVyLT5zdGFydERyYWcobV9mcmFtZSwgZHJh
Z1N0YXRlKCksIHNyY09wLCBldmVudC5ldmVudCgpLCBtX21vdXNlRG93blBvcyk7CisgICAgICAg
IGlmICghc3RhcnRlZERyYWcgJiYgZHJhZ1N0YXRlKCkuc2hvdWxkRGlzcGF0Y2hFdmVudHMoKSkg
ewogICAgICAgICAgICAgLy8gRHJhZyB3YXMgY2FubmVkIGF0IHRoZSBsYXN0IG1pbnV0ZSAtIHdl
IG93ZSBtX2RyYWdTcmMgYSBEUkFHRU5EIGV2ZW50CiAgICAgICAgICAgICBkaXNwYXRjaERyYWdT
cmNFdmVudChldmVudE5hbWVzKCkuZHJhZ2VuZEV2ZW50LCBldmVudC5ldmVudCgpKTsKICAgICAg
ICAgICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaAppbmRleCBhYTQ0NGIzNDY2M2I1OWMzNzhhNDE3YzcyZWRkZWM5Y2VhYmQ5MmEx
Li41MzRhYTc5YmYzOTAzMTZlMDIyN2FlNWU4YzM1NjdlNGFiMzUwYjZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgRXZlbnRIYW5kbGVy
X2gKIAogI2luY2x1ZGUgIkRyYWdBY3Rpb25zLmgiCisjaW5jbHVkZSAiRHJhZ1N0YXRlLmgiCiAj
aW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNpbmNsdWRlICJIaXRUZXN0UmVxdWVzdC5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgpAQCAtNDksNyArNTAsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENsaXBib2FyZDsKIGNsYXNzIEN1cnNvcjsKLXN0cnVjdCBE
cmFnU3RhdGU7CiBjbGFzcyBFdmVudDsKIGNsYXNzIEV2ZW50VGFyZ2V0OwogY2xhc3MgRmxvYXRQ
b2ludDsKQEAgLTMyMiw3ICszMjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVmYXVsdEFycm93
RXZlbnRIYW5kbGVyKEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50Kik7CiAKICNpZiBFTkFC
TEUoRFJBR19TVVBQT1JUKQotICAgIHZvaWQgYWxsb3dESFRNTERyYWcoYm9vbCYgZmxhZ0RIVE1M
LCBib29sJiBmbGFnVUEpIGNvbnN0OworICAgIERyYWdTb3VyY2VBY3Rpb24gdXBkYXRlRHJhZ1Nv
dXJjZUFjdGlvbnNBbGxvd2VkKCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIC8vIFRoZSBmb2xsb3dp
bmcgYXJlIGNhbGxlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGhhbmRsZU1vdXNlVXAgYW5kIGhhbmRs
ZURyYWcuICAKQEAgLTM1OSw2ICszNTksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9tb3VzZURv
d25NYXlTdGFydFNlbGVjdDsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIGJvb2wgbV9t
b3VzZURvd25NYXlTdGFydERyYWc7CisgICAgYm9vbCBtX2RyYWdNYXlTdGFydFNlbGVjdGlvbklu
c3RlYWQ7CiAjZW5kaWYKICAgICBib29sIG1fbW91c2VEb3duV2FzU2luZ2xlQ2xpY2tJblNlbGVj
dGlvbjsKICAgICBib29sIG1fYmVnYW5TZWxlY3RpbmdUZXh0Owo=
</data>
<flag name="commit-queue"
          id="86706"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93525</attachid>
            <date>2011-05-13 16:06:26 -0700</date>
            <delta_ts>2011-05-13 17:30:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59409-20110513160625.patch</filename>
            <type>text/plain</type>
            <size>42905</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYxNjQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiYTQzNTYzOWJmMjE1MWNjYTk4MmJj
YjYzNDZhZmZjNDczMWYxZTkxLi43NzlkNTIxMTU5YTA0NDY0ZGNhMjk2YmU5MTZlZTk3NWY5ZWJh
NjZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDUtMTIgIERhbmllbCBDaGVuZyAgPGRj
aGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wcm92ZSBkcmFnIHN0YXJ0IGxvZ2ljCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTQwOQorCisgICAgICAgIEFkZCBhIG5ldyB0
ZXN0IHRvIHRlc3QgZHJhZyBzdGFydCBlZGdlIGNhc2VzIG9uIE1hYyAoYmVjYXVzZSBvZiBhIG5v
bi16ZXJvIHRleHQgZHJhZyBkZWxheSkKKyAgICAgICAgYXMgd2VsbCBhcyByZWJhc2UgYW4gZXhp
c3RpbmcgdGVzdC4KKworICAgICAgICAqIGZhc3QvY3NzL3VzZXItZHJhZy1ub25lLmh0bWw6IFRl
eHQgbm9kZXMgYXJlIG5vIGxvbmdlciBkcmFnZ2FibGUuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGlvbnMtdG8tY29udGVudGVkaXRhYmxlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVi
b2FyZC9kcmFnLXNlbGVjdGlvbnMtdG8tY29udGVudGVkaXRhYmxlLmh0bWw6IEFkZGVkLgorCiAy
MDExLTA1LTEwICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvdXNlci1kcmFnLW5vbmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3VzZXItZHJh
Zy1ub25lLmh0bWwKaW5kZXggYzg4Y2FhZjZlZTU2YzM4NmI4ZTNiNmY0NDVkNGMxYTc3M2UxYTA4
Yy4uZjkzMzUxMzVjNWQ5YzFhNWY5MTdlN2UwYzViZTg0YTU4ZTlhODE0YSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvdXNlci1kcmFnLW5vbmUuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy91c2VyLWRyYWctbm9uZS5odG1sCkBAIC0xOSwxMSArMTksMTEgQEAKICAgICAg
ICAgPGltZyBjbGFzcz0iZHJhZy1ub25lIiBzcmM9InJlc291cmNlcy9ncmVlbmJveC5wbmciPgog
ICAgIDwvZGl2PgogCi0gICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9IklNRyB0ZXh0IHRleHQg
QSBuaWwiPgorICAgIDxkaXYgY2xhc3M9ImJveCIgZXhwZWN0PSJJTUcgQSBBIEEgbmlsIj4KICAg
ICAgICAgPGEgaHJlZj0iIyI+PGltZyBzcmM9InJlc291cmNlcy9ncmVlbmJveC5wbmciPng8YnI+
PHNwYW4+eTwvc3Bhbj48L2E+CiAgICAgPC9kaXY+CiAKLSAgICA8ZGl2IGNsYXNzPSJib3giIGV4
cGVjdD0iSU1HIHRleHQgdGV4dCBBIG5pbCI+CisgICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9
IklNRyBBIEEgQSBuaWwiPgogICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iZHJhZy1lbGVtZW50
Ij48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwv
YT4KICAgICA8L2Rpdj4KIApAQCAtMzEsMTEgKzMxLDExIEBACiAgICAgICAgIDxhIGhyZWY9IiMi
IGNsYXNzPSJkcmFnLW5vbmUiPjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW5ib3gucG5nIj54PGJy
PjxzcGFuPnk8L3NwYW4+PC9hPgogICAgIDwvZGl2PgogCi0gICAgPGRpdiBjbGFzcz0iYm94IiBl
eHBlY3Q9IkEgdGV4dCB0ZXh0IEEgbmlsIj4KKyAgICA8ZGl2IGNsYXNzPSJib3giIGV4cGVjdD0i
QSBBIEEgQSBuaWwiPgogICAgICAgICA8YSBocmVmPSIjIj48aW1nIGNsYXNzPSJkcmFnLW5vbmUi
IHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAg
ICA8L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9ImJveCIgZXhwZWN0PSJBIHRleHQgdGV4dCBBIG5p
bCI+CisgICAgPGRpdiBjbGFzcz0iYm94IiBleHBlY3Q9IkEgQSBBIEEgbmlsIj4KICAgICAgICAg
PGEgaHJlZj0iIyIgY2xhc3M9ImRyYWctZWxlbWVudCI+PGltZyBjbGFzcz0iZHJhZy1ub25lIiBz
cmM9InJlc291cmNlcy9ncmVlbmJveC5wbmciPng8YnI+PHNwYW4+eTwvc3Bhbj48L2E+CiAgICAg
PC9kaXY+CiAKQEAgLTQzLDExICs0MywxMSBAQAogICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0i
ZHJhZy1ub25lIj48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55
PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9ImJveCBkcmFnLWVsZW1l
bnQiIGV4cGVjdD0iQSB0ZXh0IHRleHQgQSBESVYiPgorICAgIDxkaXYgY2xhc3M9ImJveCBkcmFn
LWVsZW1lbnQiIGV4cGVjdD0iQSBBIEEgQSBESVYiPgogICAgICAgICA8YSBocmVmPSIjIj48aW1n
IGNsYXNzPSJkcmFnLW5vbmUiIHNyYz0icmVzb3VyY2VzL2dyZWVuYm94LnBuZyI+eDxicj48c3Bh
bj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIAotICAgIDxkaXYgY2xhc3M9ImJveCBkcmFnLWVs
ZW1lbnQiIGV4cGVjdD0iQSB0ZXh0IHRleHQgQSBESVYiPgorICAgIDxkaXYgY2xhc3M9ImJveCBk
cmFnLWVsZW1lbnQiIGV4cGVjdD0iQSBBIEEgQSBESVYiPgogICAgICAgICA8YSBocmVmPSIjIiBj
bGFzcz0iZHJhZy1lbGVtZW50Ij48aW1nIGNsYXNzPSJkcmFnLW5vbmUiIHNyYz0icmVzb3VyY2Vz
L2dyZWVuYm94LnBuZyI+eDxicj48c3Bhbj55PC9zcGFuPjwvYT4KICAgICA8L2Rpdj4KIDwvZGl2
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2Fy
ZC9kcmFnLXNlbGVjdGlvbnMtdG8tY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1zZWxlY3Rpb25zLXRv
LWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDUzZjBlMjdkYmRiYzBh
ZTMxOWU4YmRkNDg2OTI3ZDI2OWExNWNjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1zZWxlY3Rpb25zLXRvLWNvbnRl
bnRlZGl0YWJsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorw4Igw4IgTGlua8OCIFJh
bmRvbSB0ZXh0LgorIExpbmsgUmFuZG9tIHRleHQuCitUaGlzIHRlc3QgY2hlY2tzIHNlbGVjdGlv
biBkcmFnIGVkZ2UgY2FzZXMgb24gTWFjLiBUbyBydW4gdGhlIHRlc3QgbWFudWFsbHk6CisKK1Nl
bGVjdCBldmVyeXRoaW5nIGFib3ZlLCBzdGFydCB0aGUgZHJhZyBvdmVyIHRoZSBpbWFnZSwgYW5k
IHdpdGggbm8gZGVsYXksIGRyYWcgaXQgdG8gdGhlIGNvbnRlbnQgZWRpdGFibGUgYXJlYS4gT25s
eSB0aGUgaW1hZ2Ugc2hvdWxkIGJlIGRyYWdnZWQuCitTZWxlY3QgZXZlcnl0aGluZyBhYm92ZSwg
c3RhcnQgdGhlIGRyYWcgb3ZlciB0aGUgbGluaywgYW5kIHdpdGggbm8gZGVsYXksIGRyYWcgaXQg
dG8gdGhlIGNvbnRlbnQgZWRpdGFibGUgYXJlYS4gVGhlIGVudGlyZSBzZWxlY3Rpb24gc2hvdWxk
IGJlIGRyYWdnZWQuCitTZWxlY3QgZXZlcnl0aGluZyBhYm92ZSwgc3RhcnQgdGhlIGRyYWcgb3Zl
ciB0aGUgdGV4dCwgYW5kIHdpdGggbm8gZGVsYXksIGRyYWcgaXQgdG8gdGhlIGNvbnRlbnQgZWRp
dGFibGUgYXJlYS4gTm90aGluZyBzaG91bGQgYmUgZHJhZ2dlZCwgYnV0IGEgYnVuY2ggb2YgdGV4
dCBzaG91bGQgYmUgc2VsZWN0ZWQgaW5zdGVhZC4KK0NvbnRlbnRzIG9mIHRoZSBjb250ZW50ZWRp
dGFibGUgZGl2OgorSU1HCitJTUcKK0EKK1NQQU4KK051bWJlciBvZiBzZWxlY3RlZCByYW5nZXM6
IDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9h
cmQvZHJhZy1zZWxlY3Rpb25zLXRvLWNvbnRlbnRlZGl0YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGlvbnMtdG8tY29udGVu
dGVkaXRhYmxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjlkOWQ0MjhhOWE5MTU2MGRjMjdjNGFkNmUxMThk
N2IwZThiZjU2NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1zZWxlY3Rpb25zLXRvLWNvbnRlbnRlZGl0YWJsZS5odG1s
CkBAIC0wLDAgKzEsNzggQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9n
KG1lc3NhZ2UpIHsKKyAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b25zb2xlIik7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSk7CisgICAgCisg
ICAgY29uc29sZS5hcHBlbmRDaGlsZChkaXYpOworICAgIGRpdi5hcHBlbmRDaGlsZCh0ZXh0KTsK
K30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0gZWxzZQor
ICAgICAgICByZXR1cm47CisKKyAgICBzZWxlY3RTZWxlY3Rpb24oKTsKKyAgICBkcmFnRWxlbWVu
dFRvQ29udGVudEVkaXRhYmxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcmFnaW1hZ2UiKSk7
CisgICAgIAorICAgIHNlbGVjdFNlbGVjdGlvbigpOworICAgIGRyYWdFbGVtZW50VG9Db250ZW50
RWRpdGFibGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyYWdsaW5rIikpOworCisgICAgc2Vs
ZWN0U2VsZWN0aW9uKCk7CisgICAgZHJhZ0VsZW1lbnRUb0NvbnRlbnRFZGl0YWJsZShkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZHJhZ3RleHQiKSk7CisKKyAgICBsb2coIkNvbnRlbnRzIG9mIHRo
ZSBjb250ZW50ZWRpdGFibGUgZGl2OiIpOworICAgIGxvZyhkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndGFyZ2V0JykuY2hpbGRyZW5bMF0udGFnTmFtZSk7CisgICAgbG9nKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0YXJnZXQnKS5jaGlsZHJlblsxXS50YWdOYW1lKTsKKyAgICBsb2coZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcpLmNoaWxkcmVuWzJdLnRhZ05hbWUpOworICAgIGxv
Zyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0JykuY2hpbGRyZW5bM10udGFnTmFtZSk7
CisKKyAgICBsb2coIk51bWJlciBvZiBzZWxlY3RlZCByYW5nZXM6ICIgKyB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkucmFuZ2VDb3VudCk7CisKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Cit9CisKK2Z1bmN0aW9uIHNlbGVjdFNlbGVjdGlvbigpIHsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuc2VsZWN0QWxsQ2hpbGRyZW4oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNl
bGVjdGlvbiIpKTsKK30KKworZnVuY3Rpb24gZHJhZ0VsZW1lbnRUb0NvbnRlbnRFZGl0YWJsZShk
cmFnU291cmNlKSAKK3sKKyAgICB4ID0gZHJhZ1NvdXJjZS5vZmZzZXRMZWZ0ICsgZHJhZ1NvdXJj
ZS5vZmZzZXRXaWR0aCAvIDI7CisgICAgeSA9IGRyYWdTb3VyY2Uub2Zmc2V0VG9wICsgZHJhZ1Nv
dXJjZS5vZmZzZXRIZWlnaHQgLyAyOworCisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwg
eSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7ICAgIAorCisgICAgdmFyIGRyb3BUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CisgICAgeCA9IGRyb3BUYXJn
ZXQub2Zmc2V0TGVmdCArIGRyb3BUYXJnZXQub2Zmc2V0V2lkdGggLyAyOworICAgIHkgPSBkcm9w
VGFyZ2V0Lm9mZnNldFRvcCArIGRyb3BUYXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAKKyAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVw
KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgc3R5bGU9InBhZGRpbmc6MDsgbWFy
Z2luOjAiIG9ubG9hZD0icnVuVGVzdCgpOyI+ICAKKworPGRpdiBpZD0idGFyZ2V0IiBzdHlsZT0i
Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7IHdpZHRoOiAzMDBweDsgaGVpZ2h0OiAyMDBweDsiIGNv
bnRlbnRlZGl0YWJsZT0idHJ1ZSI+PC9kaXY+Cis8ZGl2IGlkPSJzZWxlY3Rpb24iPgorPGltZyBp
ZD0iZHJhZ2ltYWdlIiBzcmM9Ii4uLy4uLy4uLy4uL2VkaXRpbmcvcmVzb3VyY2VzL2FiZS5wbmci
PgorPGEgaHJlZj0iIyIgaWQ9ImRyYWdsaW5rIj5MaW5rPC9hPgorPHNwYW4gaWQ9ImRyYWd0ZXh0
Ij5SYW5kb20gdGV4dC48L3NwYW4+PC9kaXY+CisKKzxwPlRoaXMgdGVzdCBjaGVja3Mgc2VsZWN0
aW9uIGRyYWcgZWRnZSBjYXNlcyBvbiBNYWMuIFRvIHJ1biB0aGUgdGVzdCBtYW51YWxseToKKzxv
bD4KKzxsaT5TZWxlY3QgZXZlcnl0aGluZyBhYm92ZSwgc3RhcnQgdGhlIGRyYWcgb3ZlciB0aGUg
aW1hZ2UsIGFuZCB3aXRoIG5vIGRlbGF5LCBkcmFnIGl0IHRvIHRoZSBjb250ZW50IGVkaXRhYmxl
IGFyZWEuIE9ubHkgdGhlIGltYWdlIHNob3VsZCBiZSBkcmFnZ2VkLgorPGxpPlNlbGVjdCBldmVy
eXRoaW5nIGFib3ZlLCBzdGFydCB0aGUgZHJhZyBvdmVyIHRoZSBsaW5rLCBhbmQgd2l0aCBubyBk
ZWxheSwgZHJhZyBpdCB0byB0aGUgY29udGVudCBlZGl0YWJsZSBhcmVhLiBUaGUgZW50aXJlIHNl
bGVjdGlvbiBzaG91bGQgYmUgZHJhZ2dlZC4KKzxsaT5TZWxlY3QgZXZlcnl0aGluZyBhYm92ZSwg
c3RhcnQgdGhlIGRyYWcgb3ZlciB0aGUgdGV4dCwgYW5kIHdpdGggbm8gZGVsYXksIGRyYWcgaXQg
dG8gdGhlIGNvbnRlbnQgZWRpdGFibGUgYXJlYS4gTm90aGluZyBzaG91bGQgYmUgZHJhZ2dlZCwg
YnV0IGEgYnVuY2ggb2YgdGV4dCBzaG91bGQgYmUgc2VsZWN0ZWQgaW5zdGVhZC4KKzwvb2w+Cis8
L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L3VsPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE3ZDdl
MDI3ZTZmNDA3NTM4ZDA3Y2VjOGNmNDg5MDllNjY3YTBmNDkuLmU4MDJlOWZmMGJiYmMwZjI1ZDM3
MTI5NzE0YWYxOTM3NmFjMzdiOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMS0w
NS0xMiAgRGFuaWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXByb3ZlIGRyYWcgc3RhcnQgbG9n
aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NDA5
CisKKyAgICAgICAgUmV3cml0ZSBhbmQgc2ltcGxpZnkgdGhlIGRyYWdnaW5nIGxvZ2ljIHRvIGJl
dHRlciBtYXRjaCBJRSwgRmlyZWZveCwgYW5kIHRoZSBiZWhhdmlvcgorICAgICAgICBkZWZpbmVk
IGluIHRoZSBzcGVjLiBBbW9uZyBvdGhlciB0aGluZ3M6CisgICAgICAgIC0gZHJhZ2dhYmxlTm9k
ZSgpIG5vIGxvbmdlciByZXR1cm5zIHRleHQgbm9kZXMgd2hlbiBkcmFnZ2luZyBhbmNob3JzLgor
ICAgICAgICAtIFdoZW4gc3RhcnRpbmcgYSBkcmFnIG92ZXIgYW4gaW1hZ2UgaW4gYSBzZWxlY3Rp
b24sIHByZWZlciB0byBkcmFnIHRoZSBzZWxlY3Rpb24uCisgICAgICAgIC0gU2V2ZXJhbCByZWR1
bmRhbnQgaGl0IHRlc3RzIGhhdmUgYmVlbiByZW1vdmVkLgorICAgICAgICAtIE1pbm9yIHJlZmFj
dG9yaW5nIHRvIG1ha2UgdGhlIGxvZ2ljIGVhc2llciB0byBmb2xsb3cuCisKKyAgICAgICAgVGVz
dDogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGlvbnMtdG8tY29u
dGVudGVkaXRhYmxlLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdDb250cm9sbGVyOjpzdGFydERyYWcpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBwYWdlL0RyYWdTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z1N0YXRlOjpzaG91bGREaXNwYXRjaEV2ZW50cyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpldmVudE1heVN0YXJ0RHJhZyk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKToK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Y2FuY2VsRHJhZ0FuZERyb3ApOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQpOgorICAgICAg
ICAoV2ViQ29yZTo6RXhhY3RseU9uZUJpdFNldCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZURyYWcpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisKIDIw
MTEtMDUtMDYgIEJyZXR0IFdpbHNvbiAgPGJyZXR0d0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNGU0MjMxMzdjZmM0NmFiNWM4MDRjMzBjNzlk
OTRhZTdhZDljYjFkLi44N2JiZjZlMTg4MzFlMWU2NTQ1YmNkYzQ1OWZkNDZlZDhhMWEyNzAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xNjcyLDcgKzE2NzIsNyBAQAogCQk4MUJFMjA5OTExRjRBQjhEMDA5MTVERkEgLyogSURC
Q3Vyc29yQmFja2VuZEludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODFCRTIwOTQxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvckJhY2tl
bmRJbnRlcmZhY2UuaCAqLzsgfTsKIAkJODFCRTIwRDIxMUY0QkMzMjAwOTE1REZBIC8qIEpTSURC
Q3Vyc29yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgxQkUyMEE3MTFGNEI2NkYwMDkxNURGQSAvKiBKU0lEQkN1cnNvci5jcHAgKi87IH07CiAJCTgx
QkUyMEQzMTFGNEJDMzIwMDkxNURGQSAvKiBKU0lEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFCRTIwQTgxMUY0QjY2RjAwOTE1REZBIC8q
IEpTSURCQ3Vyc29yLmggKi87IH07Ci0JCTgxRjY1RkY2MTM3ODhGQUEwMEZGNkYyRCAvKiBEcmFn
U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgx
RjY1RkY1MTM3ODhGQUEwMEZGNkYyRCAvKiBEcmFnU3RhdGUuaCAqLzsgfTsKKwkJODFGNjVGRjYx
Mzc4OEZBQTAwRkY2RjJEIC8qIERyYWdTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODFGNjVGRjUxMzc4OEZBQTAwRkY2RjJEIC8qIERyYWdTdGF0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgy
QUIxNzQzMTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0b3JDU1NBZ2VudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MkFCMTc0MTEyNEI5OUVDMDBD
NTA2OUQgLyogSW5zcGVjdG9yQ1NTQWdlbnQuY3BwICovOyB9OwogCQk4MkFCMTc0NDEyNEI5OUVD
MDBDNTA2OUQgLyogSW5zcGVjdG9yQ1NTQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyQUIxNzQyMTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0
b3JDU1NBZ2VudC5oICovOyB9OwogCQk4MkFCMTc3MzEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVj
dG9yU3R5bGVTaGVldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MkFCMTc2RjEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAgKi87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDgxY2U5
MmQ0ZjUwZDY5OTBjYmIzZmRmYTJlMGM1ZWQ3MTI0ZThkNmEuLmU1NTViOTAzM2EzZTAzNzA4NmE2
NmEyNDVhYmUxNmUyMmZiMzlmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwCkBAIC01NjksNzEgKzU2OSw0NiBAQCBib29sIERyYWdDb250cm9sbGVyOjp0cnlESFRNTERy
YWcoRHJhZ0RhdGEqIGRyYWdEYXRhLCBEcmFnT3BlcmF0aW9uJiBvcGVyYXRpb24pCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLU5vZGUqIERyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVOb2RlKGNvbnN0
IEZyYW1lKiBzcmMsIE5vZGUqIHN0YXJ0Tm9kZSwgYm9vbCBkaHRtbE9LLCBib29sIHVhT0ssIGlu
dCB4LCBpbnQgeSwgYm9vbCYgZGh0bWxXaWxsRHJhZykgY29uc3QKK05vZGUqIERyYWdDb250cm9s
bGVyOjpkcmFnZ2FibGVOb2RlKGNvbnN0IEZyYW1lKiBzcmMsIE5vZGUqIHN0YXJ0Tm9kZSwgY29u
c3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIERyYWdTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAg
aWYgKCFkaHRtbE9LICYmICF1YU9LKQotICAgICAgICByZXR1cm4gMDsKKyAgICBzdGF0ZS5tX2Ry
YWdUeXBlID0gKHNyYy0+c2VsZWN0aW9uKCktPmNvbnRhaW5zKGRyYWdPcmlnaW4pKSA/IERyYWdT
b3VyY2VBY3Rpb25TZWxlY3Rpb24gOiBEcmFnU291cmNlQWN0aW9uTm9uZTsKIAogICAgIGZvciAo
Y29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKTsgcmVu
ZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpKSB7CiAgICAgICAgIE5vZGUqIG5v
ZGUgPSByZW5kZXJlci0+bm9kZSgpOwotICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5ub2RlVHlw
ZSgpID09IE5vZGU6OlRFWFRfTk9ERSkgewotICAgICAgICAgICAgLy8gU2luY2UgdGhlcmUncyBu
byB3YXkgZm9yIHRoZSBhdXRob3IgdG8gYWRkcmVzcyB0aGUgLXdlYmtpdC11c2VyLWRyYWcgc3R5
bGUgZm9yIGEgdGV4dCBub2RlLAotICAgICAgICAgICAgLy8gd2UgdXNlIG91ciBvd24ganVkZ2Vt
ZW50LgotICAgICAgICAgICAgaWYgKHVhT0sgJiYgbWF5U3RhcnREcmFnQXRFdmVudExvY2F0aW9u
KHNyYywgSW50UG9pbnQoeCwgeSksIG5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgZGh0bWxXaWxs
RHJhZyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHJldHVybiBub2RlOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKG5vZGUtPmNhblN0YXJ0U2VsZWN0aW9uKCkpCi0gICAgICAgICAg
ICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIGhhdmUgYSBjbGljayBpbiB0aGUgdW5zZWxlY3RlZCBw
b3J0aW9uIG9mIHRleHQuIElmIHRoaXMgdGV4dCBpcwotICAgICAgICAgICAgICAgIC8vIHNlbGVj
dGFibGUsIHdlIHdhbnQgdG8gc3RhcnQgdGhlIHNlbGVjdGlvbiBwcm9jZXNzIGluc3RlYWQgb2Yg
bG9va2luZyBmb3IgYSBwYXJlbnQKLSAgICAgICAgICAgICAgICAvLyB0byB0cnkgdG8gZHJhZy4K
LSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYg
KCFub2RlKQorICAgICAgICAgICAgLy8gQW5vbnltb3VzIHJlbmRlciBibG9ja3MgZG9uJ3QgY29y
cmVzcG9uZCB0byBhY3R1YWwgRE9NIG5vZGVzLCBzbyB3ZSBza2lwIG92ZXIgdGhlbQorICAgICAg
ICAgICAgLy8gZm9yIHRoZSBwdXJwb3NlcyBvZiBmaW5kaW5nIGEgZHJhZ2dhYmxlIG5vZGUuCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCEoc3RhdGUubV9kcmFnVHlwZSAmIERy
YWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pICYmIG5vZGUtPmlzVGV4dE5vZGUoKSAmJiBub2RlLT5j
YW5TdGFydFNlbGVjdGlvbigpKQorICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIGhhdmUg
YSBjbGljayBpbiB0aGUgdW5zZWxlY3RlZCBwb3J0aW9uIG9mIHRleHQuIElmIHRoaXMgdGV4dCBp
cworICAgICAgICAgICAgLy8gc2VsZWN0YWJsZSwgd2Ugd2FudCB0byBzdGFydCB0aGUgc2VsZWN0
aW9uIHByb2Nlc3MgaW5zdGVhZCBvZiBsb29raW5nIGZvciBhIHBhcmVudAorICAgICAgICAgICAg
Ly8gdG8gdHJ5IHRvIGRyYWcuCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKG5v
ZGUtPmlzRWxlbWVudE5vZGUoKSkgewogICAgICAgICAgICAgRVVzZXJEcmFnIGRyYWdNb2RlID0g
cmVuZGVyZXItPnN0eWxlKCktPnVzZXJEcmFnKCk7Ci0gICAgICAgICAgICBpZiAoZGh0bWxPSyAm
JiBkcmFnTW9kZSA9PSBEUkFHX0VMRU1FTlQpIHsKLSAgICAgICAgICAgICAgICBkaHRtbFdpbGxE
cmFnID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICgobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1Nv
dXJjZUFjdGlvbkRIVE1MKSAmJiBkcmFnTW9kZSA9PSBEUkFHX0VMRU1FTlQpIHsKKyAgICAgICAg
ICAgICAgICBzdGF0ZS5tX2RyYWdUeXBlID0gc3RhdGljX2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4o
c3RhdGUubV9kcmFnVHlwZSB8IERyYWdTb3VyY2VBY3Rpb25ESFRNTCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5vZGU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodWFPSyAmJiBk
cmFnTW9kZSA9PSBEUkFHX0FVVE8gJiYgbWF5U3RhcnREcmFnQXRFdmVudExvY2F0aW9uKHNyYywg
SW50UG9pbnQoeCwgeSksIG5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgZGh0bWxXaWxsRHJhZyA9
IGZhbHNlOwotICAgICAgICAgICAgICAgIHJldHVybiBub2RlOworICAgICAgICAgICAgaWYgKGRy
YWdNb2RlID09IERSQUdfQVVUTykgeworICAgICAgICAgICAgICAgIGlmICgobV9kcmFnU291cmNl
QWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKQorICAgICAgICAgICAgICAgICAgICAmJiBu
b2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW1nVGFnKQorICAgICAgICAgICAgICAgICAgICAm
JiBzcmMtPnNldHRpbmdzKCktPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIHN0YXRlLm1fZHJhZ1R5cGUgPSBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0
aW9uPihzdGF0ZS5tX2RyYWdUeXBlIHwgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGlmICgobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkxpbmspCisgICAg
ICAgICAgICAgICAgICAgICYmIG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjphVGFnKQorICAg
ICAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxIVE1MQW5jaG9yRWxlbWVudCo+KG5vZGUp
LT5pc0xpdmVMaW5rKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUubV9kcmFnVHlwZSA9
IHN0YXRpY19jYXN0PERyYWdTb3VyY2VBY3Rpb24+KHN0YXRlLm1fZHJhZ1R5cGUgfCBEcmFnU291
cmNlQWN0aW9uTGluayk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlOworICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4g
MDsKLX0KLQotYm9vbCBEcmFnQ29udHJvbGxlcjo6bWF5U3RhcnREcmFnQXRFdmVudExvY2F0aW9u
KGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgSW50UG9pbnQmIGZyYW1lUG9zLCBOb2RlKiBub2Rl
KSBjb25zdAotewotICAgIEFTU0VSVChmcmFtZSk7Ci0gICAgQVNTRVJUKGZyYW1lLT5zZXR0aW5n
cygpKTsKLQotICAgIGlmICghZnJhbWUtPnZpZXcoKSB8fCAhZnJhbWUtPmNvbnRlbnRSZW5kZXJl
cigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBIaXRUZXN0UmVzdWx0IG1vdXNlRG93
blRhcmdldCA9IEhpdFRlc3RSZXN1bHQoZnJhbWVQb3MpOwogCi0gICAgbW91c2VEb3duVGFyZ2V0
ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZVBvcywg
dHJ1ZSk7Ci0gICAgaWYgKG5vZGUpCi0gICAgICAgIG1vdXNlRG93blRhcmdldC5zZXRJbm5lck5v
blNoYXJlZE5vZGUobm9kZSk7Ci0KLSAgICBpZiAobW91c2VEb3duVGFyZ2V0LmltYWdlKCkKLSAg
ICAgICAgJiYgIW1vdXNlRG93blRhcmdldC5hYnNvbHV0ZUltYWdlVVJMKCkuaXNFbXB0eSgpCi0g
ICAgICAgICYmIGZyYW1lLT5zZXR0aW5ncygpLT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKQot
ICAgICAgICAmJiBtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKCFtb3VzZURvd25UYXJnZXQuYWJzb2x1dGVM
aW5rVVJMKCkuaXNFbXB0eSgpCi0gICAgICAgICYmIG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdT
b3VyY2VBY3Rpb25MaW5rCi0gICAgICAgICYmIG1vdXNlRG93blRhcmdldC5pc0xpdmVMaW5rKCkK
LSAgICAgICAgJiYgbW91c2VEb3duVGFyZ2V0LlVSTEVsZW1lbnQoKS0+cmVuZGVyZXIoKSAmJiBt
b3VzZURvd25UYXJnZXQuVVJMRWxlbWVudCgpLT5yZW5kZXJlcigpLT5zdHlsZSgpLT51c2VyRHJh
ZygpICE9IERSQUdfTk9ORSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAobW91c2VE
b3duVGFyZ2V0LmlzU2VsZWN0ZWQoKQotICAgICAgICAmJiBtX2RyYWdTb3VyY2VBY3Rpb24gJiBE
cmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJl
dHVybiBmYWxzZTsKKyAgICAvLyBXZSBlaXRoZXIgaGF2ZSBub3RoaW5nIHRvIGRyYWcgb3Igd2Ug
aGF2ZSBhIHNlbGVjdGlvbiBhbmQgd2UncmUgbm90IG92ZXIgYSBkcmFnZ2FibGUgZWxlbWVudC4K
KyAgICByZXR1cm4gKHN0YXRlLm1fZHJhZ1R5cGUgJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9u
KSA/IHN0YXJ0Tm9kZSA6IDA7CiB9CiAKIHN0YXRpYyBDYWNoZWRJbWFnZSogZ2V0Q2FjaGVkSW1h
Z2UoRWxlbWVudCogZWxlbWVudCkKQEAgLTY5NSwxOSArNjcwLDIxIEBAIHN0YXRpYyBJbnRQb2lu
dCBkcmFnTG9jRm9yU2VsZWN0aW9uRHJhZyhGcmFtZSogc3JjKQogICAgIHJldHVybiBJbnRQb2lu
dCh4cG9zLCB5cG9zKTsKIH0KIAotYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1l
KiBzcmMsIENsaXBib2FyZCogY2xpcGJvYXJkLCBEcmFnT3BlcmF0aW9uIHNyY09wLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4s
IGJvb2wgaXNESFRNTERyYWcpCitib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUq
IHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbiBzcmNPcCwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2lu
KQogewogICAgIEFTU0VSVChzcmMpOwotICAgIEFTU0VSVChjbGlwYm9hcmQpOwogCiAgICAgaWYg
KCFzcmMtPnZpZXcoKSB8fCAhc3JjLT5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgSGl0VGVzdFJlc3VsdCBkcmFnU291cmNlID0gSGl0VGVzdFJlc3VsdChk
cmFnT3JpZ2luKTsKLSAgICBkcmFnU291cmNlID0gc3JjLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVz
dFJlc3VsdEF0UG9pbnQoZHJhZ09yaWdpbiwgdHJ1ZSk7Ci0gICAgS1VSTCBsaW5rVVJMID0gZHJh
Z1NvdXJjZS5hYnNvbHV0ZUxpbmtVUkwoKTsKLSAgICBLVVJMIGltYWdlVVJMID0gZHJhZ1NvdXJj
ZS5hYnNvbHV0ZUltYWdlVVJMKCk7Ci0gICAgYm9vbCBpc1NlbGVjdGVkID0gZHJhZ1NvdXJjZS5p
c1NlbGVjdGVkKCk7CisgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0gc3JjLT5ldmVu
dEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZHJhZ09yaWdpbiwgdHJ1ZSk7CisgICAg
aWYgKCFzdGF0ZS5tX2RyYWdTcmMtPmNvbnRhaW5zKGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCkp
KQorICAgICAgICAvLyBUaGUgb3JpZ2luYWwgbm9kZSBiZWluZyBkcmFnZ2VkIGlzbid0IHVuZGVy
IHRoZSBkcmFnIG9yaWdpbiBhbnltb3JlLi4uIG1heWJlIGl0IHdhcworICAgICAgICAvLyBoaWRk
ZW4gb3IgbW92ZWQgb3V0IGZyb20gdW5kZXIgdGhlIGN1cnNvci4gUmVnYXJkbGVzcywgd2UgZG9u
J3Qgd2FudCB0byBzdGFydCBhIGRyYWcgb24KKyAgICAgICAgLy8gc29tZXRoaW5nIHRoYXQncyBu
b3QgYWN0dWFsbHkgdW5kZXIgdGhlIGRyYWcgb3JpZ2luLgorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgS1VSTCBsaW5rVVJMID0gaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKKyAg
ICBLVVJMIGltYWdlVVJMID0gaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMKCk7CiAKICAg
ICBJbnRQb2ludCBtb3VzZURyYWdnZWRQb2ludCA9IHNyYy0+dmlldygpLT53aW5kb3dUb0NvbnRl
bnRzKGRyYWdFdmVudC5wb3MoKSk7CiAKQEAgLTcxOCwxNCArNjk1LDE0IEBAIGJvb2wgRHJhZ0Nv
bnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRHJh
Z09wZXJhdGlvbiBzCiAgICAgSW50UG9pbnQgZHJhZ0xvYygwLCAwKTsKICAgICBJbnRQb2ludCBk
cmFnSW1hZ2VPZmZzZXQoMCwgMCk7CiAKLSAgICBpZiAoaXNESFRNTERyYWcpCisgICAgQ2xpcGJv
YXJkKiBjbGlwYm9hcmQgPSBzdGF0ZS5tX2RyYWdDbGlwYm9hcmQuZ2V0KCk7CisgICAgaWYgKHN0
YXRlLm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKQogICAgICAgICBkcmFnSW1h
Z2UgPSBjbGlwYm9hcmQtPmNyZWF0ZURyYWdJbWFnZShkcmFnSW1hZ2VPZmZzZXQpOwotICAgIGVs
c2UgewotICAgICAgICAvLyBUaGlzIGRyYWcgb3BlcmF0aW9uIGlzIG5vdCBhIERIVE1MIGRyYWcg
YW5kIG1heSBnbyBvdXRzaWRlIHRoZSBXZWJWaWV3LgotICAgICAgICAvLyBXZSBwcm92aWRlIGEg
ZGVmYXVsdCBzZXQgb2YgYWxsb3dlZCBkcmFnIG9wZXJhdGlvbnMgdGhhdCBmb2xsb3dzIGZyb206
CisgICAgaWYgKHN0YXRlLm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbiB8
fCAhaW1hZ2VVUkwuaXNFbXB0eSgpIHx8ICFsaW5rVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgLy8g
U2VsZWN0aW9uLCBpbWFnZSwgYW5kIGxpbmsgZHJhZ3MgcmVjZWl2ZSBhIGRlZmF1bHQgc2V0IG9m
IGFsbG93ZWQgZHJhZyBvcGVyYXRpb25zIHRoYXQKKyAgICAgICAgLy8gZm9sbG93cyBmcm9tOgog
ICAgICAgICAvLyBodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tP3Jldj00ODUyNiNMMzQzMAotICAgICAgICBtX3NvdXJj
ZURyYWdPcGVyYXRpb24gPSAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBE
cmFnT3BlcmF0aW9uQ29weSk7Ci0gICAgfQorICAgICAgICBtX3NvdXJjZURyYWdPcGVyYXRpb24g
PSBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihtX3NvdXJjZURyYWdPcGVyYXRpb24gfCBEcmFn
T3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Db3B5KTsKIAogICAgIC8vIFdlIGFsbG93
IERIVE1ML0pTIHRvIHNldCB0aGUgZHJhZyBpbWFnZSwgZXZlbiBpZiBpdHMgYSBsaW5rLCBpbWFn
ZSBvciB0ZXh0IHdlJ3JlIGRyYWdnaW5nLgogICAgIC8vIFRoaXMgaXMgaW4gdGhlIHNwaXJpdCBv
ZiB0aGUgSUUgQVBJLCB3aGljaCBhbGxvd3Mgb3ZlcnJpZGluZyBvZiBwYXN0ZWJvYXJkIGRhdGEg
YW5kIERyYWdPcC4KQEAgLTczNiwyNiArNzEzLDQ0IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0
YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRHJhZ09wZXJhdGlvbiBz
CiAKICAgICBib29sIHN0YXJ0ZWREcmFnID0gdHJ1ZTsgLy8gb3B0aW1pc20gLSB3ZSBhbG1vc3Qg
YWx3YXlzIG1hbmFnZSB0byBzdGFydCB0aGUgZHJhZwogCi0gICAgTm9kZSogbm9kZSA9IGRyYWdT
b3VyY2UuaW5uZXJOb25TaGFyZWROb2RlKCk7CisgICAgTm9kZSogbm9kZSA9IHN0YXRlLm1fZHJh
Z1NyYy5nZXQoKTsKIAogICAgIEltYWdlKiBpbWFnZSA9IGdldEltYWdlKHN0YXRpY19jYXN0PEVs
ZW1lbnQqPihub2RlKSk7Ci0gICAgaWYgKCFpbWFnZVVSTC5pc0VtcHR5KCkgJiYgbm9kZSAmJiBu
b2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgaW1hZ2UKLSAgICAgICAgICAgICYmIChtX2RyYWdTb3Vy
Y2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpKSB7CisgICAgaWYgKHN0YXRlLm1fZHJh
Z1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgeworICAgICAgICBpZiAoIWNsaXBi
b2FyZC0+aGFzRGF0YSgpKSB7CisgICAgICAgICAgICBpZiAoaXNOb2RlSW5UZXh0Rm9ybUNvbnRy
b2woc3JjLT5zZWxlY3Rpb24oKS0+c3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpKSkKKyAgICAgICAg
ICAgICAgICBjbGlwYm9hcmQtPndyaXRlUGxhaW5UZXh0KHNyYy0+ZWRpdG9yKCktPnNlbGVjdGVk
VGV4dCgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5n
ZT4gc2VsZWN0aW9uUmFuZ2UgPSBzcmMtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgp
OworICAgICAgICAgICAgICAgIEFTU0VSVChzZWxlY3Rpb25SYW5nZSk7CisKKyAgICAgICAgICAg
ICAgICBjbGlwYm9hcmQtPndyaXRlUmFuZ2Uoc2VsZWN0aW9uUmFuZ2UuZ2V0KCksIHNyYyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbV9jbGllbnQtPndpbGxQZXJmb3JtRHJh
Z1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uLCBkcmFnT3JpZ2luLCBjbGlw
Ym9hcmQpOworICAgICAgICBpZiAoIWRyYWdJbWFnZSkgeworICAgICAgICAgICAgZHJhZ0ltYWdl
ID0gY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKHNyYyk7CisgICAgICAgICAgICBkcmFnTG9j
ID0gZHJhZ0xvY0ZvclNlbGVjdGlvbkRyYWcoc3JjKTsKKyAgICAgICAgICAgIG1fZHJhZ09mZnNl
dCA9IEludFBvaW50KGRyYWdPcmlnaW4ueCgpIC0gZHJhZ0xvYy54KCksIGRyYWdPcmlnaW4ueSgp
IC0gZHJhZ0xvYy55KCkpOworICAgICAgICB9CisgICAgICAgIGRvU3lzdGVtRHJhZyhkcmFnSW1h
Z2UsIGRyYWdMb2MsIGRyYWdPcmlnaW4sIGNsaXBib2FyZCwgc3JjLCBmYWxzZSk7CisgICAgfSBl
bHNlIGlmICghaW1hZ2VVUkwuaXNFbXB0eSgpICYmIG5vZGUgJiYgbm9kZS0+aXNFbGVtZW50Tm9k
ZSgpICYmIGltYWdlCisgICAgICAgICAgICAgICAmJiAobV9kcmFnU291cmNlQWN0aW9uICYgRHJh
Z1NvdXJjZUFjdGlvbkltYWdlKSkgewogICAgICAgICAvLyBXZSBzaG91bGRuJ3QgYmUgc3RhcnRp
bmcgYSBkcmFnIGZvciBhbiBpbWFnZSB0aGF0IGNhbid0IHByb3ZpZGUgYW4gZXh0ZW5zaW9uLgog
ICAgICAgICAvLyBUaGlzIGlzIGFuIGVhcmx5IGRldGVjdGlvbiBmb3IgcHJvYmxlbXMgZW5jb3Vu
dGVyZWQgbGF0ZXIgdXBvbiBkcm9wLgogICAgICAgICBBU1NFUlQoIWltYWdlLT5maWxlbmFtZUV4
dGVuc2lvbigpLmlzRW1wdHkoKSk7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4obm9kZSk7CiAgICAgICAgIGlmICghY2xpcGJvYXJkLT5oYXNEYXRhKCkp
IHsKICAgICAgICAgICAgIG1fZHJhZ2dpbmdJbWFnZVVSTCA9IGltYWdlVVJMOwotICAgICAgICAg
ICAgcHJlcGFyZUNsaXBib2FyZEZvckltYWdlRHJhZyhzcmMsIGNsaXBib2FyZCwgZWxlbWVudCwg
bGlua1VSTCwgaW1hZ2VVUkwsIGRyYWdTb3VyY2UuYWx0RGlzcGxheVN0cmluZygpKTsKKyAgICAg
ICAgICAgIHByZXBhcmVDbGlwYm9hcmRGb3JJbWFnZURyYWcoc3JjLCBjbGlwYm9hcmQsIGVsZW1l
bnQsIGxpbmtVUkwsIGltYWdlVVJMLCBoaXRUZXN0UmVzdWx0LmFsdERpc3BsYXlTdHJpbmcoKSk7
CiAgICAgICAgIH0KIAogICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0
aW9uKERyYWdTb3VyY2VBY3Rpb25JbWFnZSwgZHJhZ09yaWdpbiwgY2xpcGJvYXJkKTsKIAogICAg
ICAgICBpZiAoIWRyYWdJbWFnZSkgewotICAgICAgICAgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBk
cmFnU291cmNlLmltYWdlUmVjdCgpOworICAgICAgICAgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBo
aXRUZXN0UmVzdWx0LmltYWdlUmVjdCgpOwogICAgICAgICAgICAgaW1hZ2VSZWN0LnNldExvY2F0
aW9uKG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhzcmMtPnZp
ZXcoKS0+Y29udGVudHNUb1dpbmRvdyhpbWFnZVJlY3QubG9jYXRpb24oKSkpKTsKLSAgICAgICAg
ICAgIGRvSW1hZ2VEcmFnKGVsZW1lbnQsIGRyYWdPcmlnaW4sIGRyYWdTb3VyY2UuaW1hZ2VSZWN0
KCksIGNsaXBib2FyZCwgc3JjLCBtX2RyYWdPZmZzZXQpOworICAgICAgICAgICAgZG9JbWFnZURy
YWcoZWxlbWVudCwgZHJhZ09yaWdpbiwgaGl0VGVzdFJlc3VsdC5pbWFnZVJlY3QoKSwgY2xpcGJv
YXJkLCBzcmMsIG1fZHJhZ09mZnNldCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgLy8g
REhUTUwgZGVmaW5lZCBkcmFnIGltYWdlCiAgICAgICAgICAgICBkb1N5c3RlbURyYWcoZHJhZ0lt
YWdlLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQsIHNyYywgZmFsc2UpOwpAQCAtNzY0
LDcgKzc1OSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBD
bGlwYm9hcmQqIGNsaXBib2FyZCwgRHJhZ09wZXJhdGlvbiBzCiAgICAgICAgIGlmICghY2xpcGJv
YXJkLT5oYXNEYXRhKCkpCiAgICAgICAgICAgICAvLyBTaW1wbGlmeSB3aGl0ZXNwYWNlIHNvIHRo
ZSB0aXRsZSBwdXQgb24gdGhlIGNsaXBib2FyZCByZXNlbWJsZXMgd2hhdCB0aGUgdXNlciBzZWVz
CiAgICAgICAgICAgICAvLyBvbiB0aGUgd2ViIHBhZ2UuIFRoaXMgaW5jbHVkZXMgcmVwbGFjaW5n
IG5ld2xpbmVzIHdpdGggc3BhY2VzLgotICAgICAgICAgICAgY2xpcGJvYXJkLT53cml0ZVVSTChs
aW5rVVJMLCBkcmFnU291cmNlLnRleHRDb250ZW50KCkuc2ltcGxpZnlXaGl0ZVNwYWNlKCksIHNy
Yyk7CisgICAgICAgICAgICBjbGlwYm9hcmQtPndyaXRlVVJMKGxpbmtVUkwsIGhpdFRlc3RSZXN1
bHQudGV4dENvbnRlbnQoKS5zaW1wbGlmeVdoaXRlU3BhY2UoKSwgc3JjKTsKIAogICAgICAgICBp
ZiAoc3JjLT5zZWxlY3Rpb24oKS0+aXNDYXJldCgpICYmIHNyYy0+c2VsZWN0aW9uKCktPmlzQ29u
dGVudEVkaXRhYmxlKCkpIHsKICAgICAgICAgICAgIC8vIGEgdXNlciBjYW4gaW5pdGlhdGUgYSBk
cmFnIG9uIGEgbGluayB3aXRob3V0IGhhdmluZyBhbnkgdGV4dApAQCAtNzc4LDM3ICs3NzMsMTkg
QEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lKiBzcmMsIENsaXBib2FyZCog
Y2xpcGJvYXJkLCBEcmFnT3BlcmF0aW9uIHMKIAogICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZv
cm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25MaW5rLCBkcmFnT3JpZ2luLCBjbGlw
Ym9hcmQpOwogICAgICAgICBpZiAoIWRyYWdJbWFnZSkgewotICAgICAgICAgICAgZHJhZ0ltYWdl
ID0gY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhsaW5rVVJMLCBkcmFnU291cmNlLnRleHRDb250ZW50
KCksIHNyYyk7CisgICAgICAgICAgICBkcmFnSW1hZ2UgPSBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5r
KGxpbmtVUkwsIGhpdFRlc3RSZXN1bHQudGV4dENvbnRlbnQoKSwgc3JjKTsKICAgICAgICAgICAg
IEludFNpemUgc2l6ZSA9IGRyYWdJbWFnZVNpemUoZHJhZ0ltYWdlKTsKICAgICAgICAgICAgIG1f
ZHJhZ09mZnNldCA9IEludFBvaW50KC1zaXplLndpZHRoKCkgLyAyLCAtTGlua0RyYWdCb3JkZXJJ
bnNldCk7CiAgICAgICAgICAgICBkcmFnTG9jID0gSW50UG9pbnQobW91c2VEcmFnZ2VkUG9pbnQu
eCgpICsgbV9kcmFnT2Zmc2V0LngoKSwgbW91c2VEcmFnZ2VkUG9pbnQueSgpICsgbV9kcmFnT2Zm
c2V0LnkoKSk7CiAgICAgICAgIH0KICAgICAgICAgZG9TeXN0ZW1EcmFnKGRyYWdJbWFnZSwgZHJh
Z0xvYywgbW91c2VEcmFnZ2VkUG9pbnQsIGNsaXBib2FyZCwgc3JjLCB0cnVlKTsKLSAgICB9IGVs
c2UgaWYgKGlzU2VsZWN0ZWQgJiYgKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rp
b25TZWxlY3Rpb24pKSB7Ci0gICAgICAgIGlmICghY2xpcGJvYXJkLT5oYXNEYXRhKCkpIHsKLSAg
ICAgICAgICAgIGlmIChpc05vZGVJblRleHRGb3JtQ29udHJvbChzcmMtPnNlbGVjdGlvbigpLT5z
dGFydCgpLmRlcHJlY2F0ZWROb2RlKCkpKQotICAgICAgICAgICAgICAgIGNsaXBib2FyZC0+d3Jp
dGVQbGFpblRleHQoc3JjLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpOwotICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb25SYW5nZSA9IHNy
Yy0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgICAgICAgICAgICAgQVNT
RVJUKHNlbGVjdGlvblJhbmdlKTsKLQotICAgICAgICAgICAgICAgIGNsaXBib2FyZC0+d3JpdGVS
YW5nZShzZWxlY3Rpb25SYW5nZS5nZXQoKSwgc3JjKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3Vy
Y2VBY3Rpb25TZWxlY3Rpb24sIGRyYWdPcmlnaW4sIGNsaXBib2FyZCk7Ci0gICAgICAgIGlmICgh
ZHJhZ0ltYWdlKSB7Ci0gICAgICAgICAgICBkcmFnSW1hZ2UgPSBjcmVhdGVEcmFnSW1hZ2VGb3JT
ZWxlY3Rpb24oc3JjKTsKLSAgICAgICAgICAgIGRyYWdMb2MgPSBkcmFnTG9jRm9yU2VsZWN0aW9u
RHJhZyhzcmMpOwotICAgICAgICAgICAgbV9kcmFnT2Zmc2V0ID0gSW50UG9pbnQoKGludCkoZHJh
Z09yaWdpbi54KCkgLSBkcmFnTG9jLngoKSksIChpbnQpKGRyYWdPcmlnaW4ueSgpIC0gZHJhZ0xv
Yy55KCkpKTsKLSAgICAgICAgfQotICAgICAgICBkb1N5c3RlbURyYWcoZHJhZ0ltYWdlLCBkcmFn
TG9jLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQsIHNyYywgZmFsc2UpOwotICAgIH0gZWxzZSBpZiAo
aXNESFRNTERyYWcpIHsKKyAgICB9IGVsc2UgaWYgKHN0YXRlLm1fZHJhZ1R5cGUgPT0gRHJhZ1Nv
dXJjZUFjdGlvbkRIVE1MKSB7CiAgICAgICAgIEFTU0VSVChtX2RyYWdTb3VyY2VBY3Rpb24gJiBE
cmFnU291cmNlQWN0aW9uREhUTUwpOwogICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFn
U291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25ESFRNTCwgZHJhZ09yaWdpbiwgY2xpcGJvYXJk
KTsKICAgICAgICAgZG9TeXN0ZW1EcmFnKGRyYWdJbWFnZSwgZHJhZ0xvYywgZHJhZ09yaWdpbiwg
Y2xpcGJvYXJkLCBzcmMsIGZhbHNlKTsKICAgICB9IGVsc2UgewotICAgICAgICAvLyBPbmx5IHdh
eSBJIGtub3cgdG8gZ2V0IGhlcmUgaXMgaWYgdG8gZ2V0IGhlcmUgaXMgaWYgdGhlIG9yaWdpbmFs
IGVsZW1lbnQgY2xpY2tlZCBvbiBpbiB0aGUgbW91c2Vkb3duIGlzIG5vIGxvbmdlcgotICAgICAg
ICAvLyB1bmRlciB0aGUgbW91c2Vkb3duIHBvaW50LCBzbyBsaW5rVVJMLCBpbWFnZVVSTCBhbmQg
aXNTZWxlY3RlZCBhcmUgYWxsIGZhbHNlL2VtcHR5LgorICAgICAgICAvLyBkcmFnZ2FibGVOb2Rl
KCkgZGV0ZXJtaW5lZCBhbiBpbWFnZSBvciBsaW5rIG5vZGUgd2FzIGRyYWdnYWJsZSwgYnV0IGl0
IHR1cm5zIG91dCB0aGUKKyAgICAgICAgLy8gaW1hZ2Ugb3IgbGluayBoYWQgbm8gVVJMLCBzbyB0
aGVyZSBpcyBub3RoaW5nIHRvIGRyYWcuCiAgICAgICAgIHN0YXJ0ZWREcmFnID0gZmFsc2U7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKaW5kZXggYmU4YzgzNGFlZTYx
NTY5YmRlMjFjOGI5MGZhZTljMDRmYTM1YTBiYS4uMjYxYThkNTNmNzM2NThiMDcxZjIxMDU2YWU1
OGIyNGIxYmI0NTk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaApAQCAtMzcs
NiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRG9jdW1lbnQ7CiAgICAg
Y2xhc3MgRHJhZ0NsaWVudDsKICAgICBjbGFzcyBEcmFnRGF0YTsKKyAgICBzdHJ1Y3QgRHJhZ1N0
YXRlOwogICAgIGNsYXNzIEVsZW1lbnQ7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgRnJh
bWVTZWxlY3Rpb247CkBAIC03NSwxMyArNzYsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBEcmFnRGVzdGluYXRpb25BY3Rpb24gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9kcmFnRGVzdGluYXRpb25BY3Rpb247IH0KICAgICAgICAgRHJhZ1NvdXJjZUFj
dGlvbiBkZWxlZ2F0ZURyYWdTb3VyY2VBY3Rpb24oY29uc3QgSW50UG9pbnQmIHBhZ2VQb2ludCk7
CiAgICAgICAgIAotICAgICAgICBOb2RlKiBkcmFnZ2FibGVOb2RlKGNvbnN0IEZyYW1lKiwgTm9k
ZSosIGJvb2wgZGh0bWxPSywgYm9vbCB1YU9LLCBpbnQgeCwgaW50IHksIGJvb2wmIGRodG1sV2ls
bERyYWcpIGNvbnN0OwotICAgICAgICBib29sIG1heVN0YXJ0RHJhZ0F0RXZlbnRMb2NhdGlvbihj
b25zdCBGcmFtZSosIGNvbnN0IEludFBvaW50JiBmcmFtZVBvcywgTm9kZSopIGNvbnN0OworICAg
ICAgICBOb2RlKiBkcmFnZ2FibGVOb2RlKGNvbnN0IEZyYW1lKiwgTm9kZSosIGNvbnN0IEludFBv
aW50JiwgRHJhZ1N0YXRlJikgY29uc3Q7CiAgICAgICAgIHZvaWQgZHJhZ0VuZGVkKCk7CiAgICAg
ICAgIAogICAgICAgICB2b2lkIHBsYWNlRHJhZ0NhcmV0KGNvbnN0IEludFBvaW50Jik7CiAgICAg
ICAgIAotICAgICAgICBib29sIHN0YXJ0RHJhZyhGcmFtZSogc3JjLCBDbGlwYm9hcmQqLCBEcmFn
T3BlcmF0aW9uIHNyY09wLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29u
c3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIGJvb2wgaXNESFRNTERyYWcpOworICAgICAgICBib29s
IHN0YXJ0RHJhZyhGcmFtZSogc3JjLCBjb25zdCBEcmFnU3RhdGUmLCBEcmFnT3BlcmF0aW9uIHNy
Y09wLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQm
IGRyYWdPcmlnaW4pOwogICAgICAgICBzdGF0aWMgY29uc3QgSW50U2l6ZSYgbWF4RHJhZ0ltYWdl
U2l6ZSgpOwogICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBMaW5rRHJhZ0JvcmRl
ckluc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ1N0YXRlLmgKaW5kZXggNmIxZjY3NTZlM2QyMWU3N2ZiMTli
MGI5ODdiMjQwMzFkNzBlZDBmYS4uOGY1ZmI1NzYxMDc4Y2U5MjVjYTc2NjdmZGE2NTdjMmQzYThl
ZTAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5oCkBAIC0yNiwyMyArMjYsMjkgQEAKICNpZm5k
ZWYgRHJhZ1N0YXRlX2gKICNkZWZpbmUgRHJhZ1N0YXRlX2gKIAorI2luY2x1ZGUgIkRyYWdBY3Rp
b25zLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgQ2xpcGJvYXJkOworY2xhc3MgTm9kZTsKKwogc3RydWN0IERyYWdTdGF0ZSB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoRHJhZ1N0YXRlKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKKyAgICBlbnVtIEV2ZW50RGlzcGF0Y2hQb2xpY3kgeworICAgICAgICBE
b05vdERpc3BhdGNoRXZlbnRzLAorICAgICAgICBEaXNwYXRjaEV2ZW50cywKKyAgICB9OwogICAg
IERyYWdTdGF0ZSgpIHsgfQorICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hFdmVudHMoKSBjb25zdCB7
IHJldHVybiBtX2V2ZW50RGlzcGF0Y2hQb2xpY3kgPT0gRGlzcGF0Y2hFdmVudHM7IH0KICAgICBS
ZWZQdHI8Tm9kZT4gbV9kcmFnU3JjOyAvLyBlbGVtZW50IHRoYXQgbWF5IGJlIGEgZHJhZyBzb3Vy
Y2UsIGZvciB0aGUgY3VycmVudCBtb3VzZSBnZXN0dXJlCi0gICAgYm9vbCBtX2RyYWdTcmNJc0xp
bms7Ci0gICAgYm9vbCBtX2RyYWdTcmNJc0ltYWdlOwotICAgIGJvb2wgbV9kcmFnU3JjSW5TZWxl
Y3Rpb247Ci0gICAgYm9vbCBtX2RyYWdTcmNNYXlCZURIVE1MOwotICAgIGJvb2wgbV9kcmFnU3Jj
TWF5QmVVQTsgLy8gQXJlIERIVE1MIGFuZC9vciB0aGUgVXNlckFnZW50IGFsbG93ZWQgdG8gZHJh
ZyBvdXQ/Ci0gICAgYm9vbCBtX2RyYWdTcmNJc0RIVE1MOworICAgIEV2ZW50RGlzcGF0Y2hQb2xp
Y3kgbV9ldmVudERpc3BhdGNoUG9saWN5OworICAgIERyYWdTb3VyY2VBY3Rpb24gbV9kcmFnVHlw
ZTsKICAgICBSZWZQdHI8Q2xpcGJvYXJkPiBtX2RyYWdDbGlwYm9hcmQ7IC8vIHVzZWQgb24gb25s
eSB0aGUgc291cmNlIHNpZGUgb2YgZHJhZ2dpbmcKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAppbmRleCBkMjE1OTVhYmM1YTViMTIwNTVkMTkyYjIzN2MyZWI0MmMwY2FlNTIz
Li44YTkxMDkwY2QyZGJiNTAwMzRhYzcxNmE3Y2M5YjZjODRhNWE2ZGZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC03OCw2ICs3OCw3IEBACiAjaW5jbHVkZSAiVXNlclR5
cGluZ0dlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50LmgiCiAjaW5jbHVk
ZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgog
I2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KIApAQCAtMTc3LDYgKzE3OCw3IEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1l
KiBmcmFtZSkKICAgICAsIG1fbW91c2VEb3duTWF5U3RhcnRTZWxlY3QoZmFsc2UpCiAjaWYgRU5B
QkxFKERSQUdfU1VQUE9SVCkKICAgICAsIG1fbW91c2VEb3duTWF5U3RhcnREcmFnKGZhbHNlKQor
ICAgICwgbV9kcmFnTWF5U3RhcnRTZWxlY3Rpb25JbnN0ZWFkKGZhbHNlKQogI2VuZGlmCiAgICAg
LCBtX21vdXNlRG93bldhc1NpbmdsZUNsaWNrSW5TZWxlY3Rpb24oZmFsc2UpCiAgICAgLCBtX2Jl
Z2FuU2VsZWN0aW5nVGV4dChmYWxzZSkKQEAgLTU4NywxMiArNTg5LDYgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmV2ZW50TWF5U3RhcnREcmFnKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQp
IGNvbnN0CiAgICAgaWYgKGV2ZW50LmJ1dHRvbigpICE9IExlZnRCdXR0b24gfHwgZXZlbnQuY2xp
Y2tDb3VudCgpICE9IDEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBib29sIERI
VE1MRmxhZzsKLSAgICBib29sIFVBRmxhZzsKLSAgICBhbGxvd0RIVE1MRHJhZyhESFRNTEZsYWcs
IFVBRmxhZyk7Ci0gICAgaWYgKCFESFRNTEZsYWcgJiYgIVVBRmxhZykKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpOwogICAgIGlm
ICghdmlldykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjAxLDExICs1OTcsMTIgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmV2ZW50TWF5U3RhcnREcmFnKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZXZlbnQpIGNvbnN0CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
KyAgICB1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKTsKICAgICBIaXRUZXN0UmVxdWVz
dCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSk7CiAgICAgSGl0VGVzdFJlc3VsdCBy
ZXN1bHQodmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3MoKSkpOwogICAgIG1fZnJhbWUt
PmNvbnRlbnRSZW5kZXJlcigpLT5sYXllcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7Ci0g
ICAgYm9vbCBzcmNJc0RIVE1MOwotICAgIHJldHVybiByZXN1bHQuaW5uZXJOb2RlKCkgJiYgcGFn
ZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZHJhZ2dhYmxlTm9kZShtX2ZyYW1lLCByZXN1bHQuaW5uZXJO
b2RlKCksIERIVE1MRmxhZywgVUFGbGFnLCByZXN1bHQucG9pbnQoKS54KCksIHJlc3VsdC5wb2lu
dCgpLnkoKSwgc3JjSXNESFRNTCk7CisgICAgRHJhZ1N0YXRlIHN0YXRlOworICAgIHJldHVybiBy
ZXN1bHQuaW5uZXJOb2RlKCkgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZHJhZ2dhYmxlTm9k
ZShtX2ZyYW1lLCByZXN1bHQuaW5uZXJOb2RlKCksIHJlc3VsdC5wb2ludCgpLCBzdGF0ZSk7CiB9
CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcoKQpAQCAt
ODkyLDI1ICs4ODksMjAgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnNldEF1dG9zY3JvbGxSZW5kZXJl
cihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
LXZvaWQgRXZlbnRIYW5kbGVyOjphbGxvd0RIVE1MRHJhZyhib29sJiBmbGFnREhUTUwsIGJvb2wm
IGZsYWdVQSkgY29uc3QKK0RyYWdTb3VyY2VBY3Rpb24gRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFn
U291cmNlQWN0aW9uc0FsbG93ZWQoKSBjb25zdAogewotICAgIGZsYWdESFRNTCA9IGZhbHNlOwot
ICAgIGZsYWdVQSA9IGZhbHNlOwotCiAgICAgaWYgKCFtX2ZyYW1lKQotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiBEcmFnU291cmNlQWN0aW9uTm9uZTsKIAogICAgIFBhZ2UqIHBhZ2Ug
PSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBEcmFnU291cmNlQWN0aW9uTm9uZTsKIAogICAgIEZyYW1lVmlldyogdmlldyA9
IG1fZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIERyYWdTb3VyY2VBY3Rpb25Ob25lOwogCi0gICAgdW5zaWduZWQgbWFzayA9IHBh
Z2UtPmRyYWdDb250cm9sbGVyKCktPmRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbih2aWV3LT5jb250
ZW50c1RvV2luZG93KG1fbW91c2VEb3duUG9zKSk7Ci0gICAgZmxhZ0RIVE1MID0gKG1hc2sgJiBE
cmFnU291cmNlQWN0aW9uREhUTUwpICE9IERyYWdTb3VyY2VBY3Rpb25Ob25lOwotICAgIGZsYWdV
QSA9ICgobWFzayAmIERyYWdTb3VyY2VBY3Rpb25JbWFnZSkgfHwgKG1hc2sgJiBEcmFnU291cmNl
QWN0aW9uTGluaykgfHwgKG1hc2sgJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSk7CisgICAg
cmV0dXJuIHBhZ2UtPmRyYWdDb250cm9sbGVyKCktPmRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbih2
aWV3LT5jb250ZW50c1RvV2luZG93KG1fbW91c2VEb3duUG9zKSk7CiB9CiAjZW5kaWYgLy8gRU5B
QkxFKERSQUdfU1VQUE9SVCkKICAgICAKQEAgLTE4MDIsNyArMTc5NCw3IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50
LCBDbGlwYm9hcmQqCiAgICAgICAgIC8vIE1vcmVvdmVyLCB0aGlzIG9yZGVyaW5nIGNvbmZvcm1z
IHRvIHNlY3Rpb24gNy45LjQgb2YgdGhlIEhUTUwgNSBzcGVjLiA8aHR0cDovL2Rldi53My5vcmcv
aHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2RyYWctYW5kLWRyb3AtcHJvY2Vzc2luZy1tb2RlbD4u
CiAgICAgICAgIGlmIChuZXdUYXJnZXQgJiYgY2FuSGFuZGxlRHJhZ0FuZERyb3BGb3JUYXJnZXQo
VXBkYXRlRHJhZ0FuZERyb3AsIG5ld1RhcmdldCwgZXZlbnQsIGNsaXBib2FyZCwgJmFjY2VwdCkp
IHsKICAgICAgICAgICAgIC8vIEFzIHBlciBzZWN0aW9uIDcuOS40IG9mIHRoZSBIVE1MIDUgc3Bl
Yy4sIHdlIG11c3QgYWx3YXlzIGZpcmUgYSBkcmFnIGV2ZW50IGJlZm9yZSBmaXJpbmcgYSBkcmFn
ZW50ZXIsIGRyYWdsZWF2ZSwgb3IgZHJhZ292ZXIgZXZlbnQuCi0gICAgICAgICAgICBpZiAoZHJh
Z1N0YXRlKCkubV9kcmFnU3JjICYmIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwpIHsK
KyAgICAgICAgICAgIGlmIChkcmFnU3RhdGUoKS5tX2RyYWdTcmMgJiYgZHJhZ1N0YXRlKCkuc2hv
dWxkRGlzcGF0Y2hFdmVudHMoKSkgewogICAgICAgICAgICAgICAgIC8vIGZvciBub3cgd2UgZG9u
J3QgY2FyZSBpZiBldmVudCBoYW5kbGVyIGNhbmNlbHMgZGVmYXVsdCBiZWhhdmlvciwgc2luY2Ug
dGhlcmUgaXMgbm9uZQogICAgICAgICAgICAgICAgIGRpc3BhdGNoRHJhZ1NyY0V2ZW50KGV2ZW50
TmFtZXMoKS5kcmFnRXZlbnQsIGV2ZW50KTsKICAgICAgICAgICAgIH0KQEAgLTE4MjAsNyArMTgx
Miw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmIGV2ZW50LCBDbGlwYm9hcmQqCiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYg
KG5ld1RhcmdldCAmJiBjYW5IYW5kbGVEcmFnQW5kRHJvcEZvclRhcmdldChVcGRhdGVEcmFnQW5k
RHJvcCwgbmV3VGFyZ2V0LCBldmVudCwgY2xpcGJvYXJkLCAmYWNjZXB0KSkgewogICAgICAgICAg
ICAgLy8gTm90ZSwgd2hlbiBkZWFsaW5nIHdpdGggc3ViLWZyYW1lcywgd2UgbWF5IG5lZWQgdG8g
ZmlyZSBvbmx5IGEgZHJhZ292ZXIgZXZlbnQgYXMgYSBkcmFnIGV2ZW50IG1heSBoYXZlIGJlZW4g
ZmlyZWQgZWFybGllci4KLSAgICAgICAgICAgIGlmICghbV9zaG91bGRPbmx5RmlyZURyYWdPdmVy
RXZlbnQgJiYgZHJhZ1N0YXRlKCkubV9kcmFnU3JjICYmIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01h
eUJlREhUTUwpIHsKKyAgICAgICAgICAgIGlmICghbV9zaG91bGRPbmx5RmlyZURyYWdPdmVyRXZl
bnQgJiYgZHJhZ1N0YXRlKCkubV9kcmFnU3JjICYmIGRyYWdTdGF0ZSgpLnNob3VsZERpc3BhdGNo
RXZlbnRzKCkpIHsKICAgICAgICAgICAgICAgICAvLyBmb3Igbm93IHdlIGRvbid0IGNhcmUgaWYg
ZXZlbnQgaGFuZGxlciBjYW5jZWxzIGRlZmF1bHQgYmVoYXZpb3IsIHNpbmNlIHRoZXJlIGlzIG5v
bmUKICAgICAgICAgICAgICAgICBkaXNwYXRjaERyYWdTcmNFdmVudChldmVudE5hbWVzKCkuZHJh
Z0V2ZW50LCBldmVudCk7CiAgICAgICAgICAgICB9CkBAIC0xODM2LDcgKzE4MjgsNyBAQCBib29s
IEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldmVudCwgQ2xpcGJvYXJkKgogdm9pZCBFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9w
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIENsaXBib2FyZCogY2xpcGJvYXJkKQog
ewogICAgIGlmIChtX2RyYWdUYXJnZXQgJiYgY2FuSGFuZGxlRHJhZ0FuZERyb3BGb3JUYXJnZXQo
Q2FuY2VsRHJhZ0FuZERyb3AsIG1fZHJhZ1RhcmdldC5nZXQoKSwgZXZlbnQsIGNsaXBib2FyZCkp
IHsKLSAgICAgICAgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyAmJiBkcmFnU3RhdGUoKS5tX2Ry
YWdTcmNNYXlCZURIVE1MKQorICAgICAgICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjICYmIGRy
YWdTdGF0ZSgpLnNob3VsZERpc3BhdGNoRXZlbnRzKCkpCiAgICAgICAgICAgICBkaXNwYXRjaERy
YWdTcmNFdmVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVudCk7CiAgICAgICAgIGRpc3Bh
dGNoRHJhZ0V2ZW50KGV2ZW50TmFtZXMoKS5kcmFnbGVhdmVFdmVudCwgbV9kcmFnVGFyZ2V0Lmdl
dCgpLCBldmVudCwgY2xpcGJvYXJkKTsKICAgICB9CkBAIC0yNjI5LDEyICsyNjIxLDIyIEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGNvbnN0IEludFBvaW50JiBk
cmFnVmlld3BvcnRMb2NhdGlvbikKICAgICBJbnRTaXplIGRlbHRhID0gZHJhZ0xvY2F0aW9uIC0g
bV9tb3VzZURvd25Qb3M7CiAgICAgCiAgICAgaW50IHRocmVzaG9sZCA9IEdlbmVyYWxEcmFnSHlz
dGVyZXNpczsKLSAgICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjSXNJbWFnZSkKKyAgICBzd2l0
Y2ggKGRyYWdTdGF0ZSgpLm1fZHJhZ1R5cGUpIHsKKyAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25T
ZWxlY3Rpb246CisgICAgICAgIHRocmVzaG9sZCA9IFRleHREcmFnSHlzdGVyZXNpczsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBEcmFnU291cmNlQWN0aW9uSW1hZ2U6CiAgICAgICAgIHRocmVz
aG9sZCA9IEltYWdlRHJhZ0h5c3RlcmVzaXM7Ci0gICAgZWxzZSBpZiAoZHJhZ1N0YXRlKCkubV9k
cmFnU3JjSXNMaW5rKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25M
aW5rOgogICAgICAgICB0aHJlc2hvbGQgPSBMaW5rRHJhZ0h5c3RlcmVzaXM7Ci0gICAgZWxzZSBp
ZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjSW5TZWxlY3Rpb24pCi0gICAgICAgIHRocmVzaG9sZCA9
IFRleHREcmFnSHlzdGVyZXNpczsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEcmFnU291cmNl
QWN0aW9uREhUTUw6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbk5v
bmU6CisgICAgY2FzZSBEcmFnU291cmNlQWN0aW9uQW55OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIGFicyhkZWx0YS53aWR0aCgpKSA+PSB0
aHJlc2hvbGQgfHwgYWJzKGRlbHRhLmhlaWdodCgpKSA+PSB0aHJlc2hvbGQ7CiB9CkBAIC0yNjQ3
LDcgKzI2NDksNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZnJlZUNsaXBib2FyZCgpCiAKIHZvaWQg
RXZlbnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2ZW50LCBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKIHsKLSAgICBpZiAoZHJhZ1N0YXRlKCku
bV9kcmFnU3JjICYmIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwpIHsKKyAgICBpZiAo
ZHJhZ1N0YXRlKCkubV9kcmFnU3JjICYmIGRyYWdTdGF0ZSgpLnNob3VsZERpc3BhdGNoRXZlbnRz
KCkpIHsKICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnQ2xpcGJvYXJkLT5zZXREZXN0aW5hdGlv
bk9wZXJhdGlvbihvcGVyYXRpb24pOwogICAgICAgICAvLyBmb3Igbm93IHdlIGRvbid0IGNhcmUg
aWYgZXZlbnQgaGFuZGxlciBjYW5jZWxzIGRlZmF1bHQgYmVoYXZpb3IsIHNpbmNlIHRoZXJlIGlz
IG5vbmUKICAgICAgICAgZGlzcGF0Y2hEcmFnU3JjRXZlbnQoZXZlbnROYW1lcygpLmRyYWdlbmRF
dmVudCwgZXZlbnQpOwpAQCAtMjY2NSw2ICsyNjY3LDExIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpk
aXNwYXRjaERyYWdTcmNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3Qg
UGxhCiAgICAgcmV0dXJuICFkaXNwYXRjaERyYWdFdmVudChldmVudFR5cGUsIGRyYWdTdGF0ZSgp
Lm1fZHJhZ1NyYy5nZXQoKSwgZXZlbnQsIGRyYWdTdGF0ZSgpLm1fZHJhZ0NsaXBib2FyZC5nZXQo
KSk7CiB9CiAgICAgCitzdGF0aWMgYm9vbCBFeGFjdGx5T25lQml0U2V0KERyYWdTb3VyY2VBY3Rp
b24gbikKK3sKKyAgICByZXR1cm4gbiAmJiAhKG4gJiAobiAtIDEpKTsKK30KKwogYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYg
ZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LmV2ZW50KCkuYnV0dG9uKCkgIT0gTGVmdEJ1dHRvbiB8
fCBldmVudC5ldmVudCgpLmV2ZW50VHlwZSgpICE9IE1vdXNlRXZlbnRNb3ZlZCkgewpAQCAtMjY4
Miw1MCArMjY4OSw2MiBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3Vz
ZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKICAgICAvLyBDYXJlZnVsIHRoYXQgdGhl
IGRyYWcgc3RhcnRpbmcgbG9naWMgc3RheXMgaW4gc3luYyB3aXRoIGV2ZW50TWF5U3RhcnREcmFn
KCkKICAgICAKICAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcgJiYgIWRyYWdTdGF0ZSgp
Lm1fZHJhZ1NyYykgewotICAgICAgICBhbGxvd0RIVE1MRHJhZyhkcmFnU3RhdGUoKS5tX2RyYWdT
cmNNYXlCZURIVE1MLCBkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZVVBKTsKLSAgICAgICAgaWYg
KCFkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MICYmICFkcmFnU3RhdGUoKS5tX2RyYWdT
cmNNYXlCZVVBKQotICAgICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsg
Ly8gbm8gZWxlbWVudCBpcyBkcmFnZ2FibGUKLSAgICB9CisgICAgICAgIGRyYWdTdGF0ZSgpLm1f
ZXZlbnREaXNwYXRjaFBvbGljeSA9ICh1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKSAm
IERyYWdTb3VyY2VBY3Rpb25ESFRNTCkgPyBEcmFnU3RhdGU6OkRpc3BhdGNoRXZlbnRzOiBEcmFn
U3RhdGU6OkRvTm90RGlzcGF0Y2hFdmVudHM7CiAKLSAgICBpZiAobV9tb3VzZURvd25NYXlTdGFy
dERyYWcgJiYgIWRyYWdTdGF0ZSgpLm1fZHJhZ1NyYykgewogICAgICAgICAvLyB0cnkgdG8gZmlu
ZCBhbiBlbGVtZW50IHRoYXQgd2FudHMgdG8gYmUgZHJhZ2dlZAogICAgICAgICBIaXRUZXN0UmVx
dWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSk7CiAgICAgICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0KG1fbW91c2VEb3duUG9zKTsKICAgICAgICAgbV9mcmFtZS0+Y29udGVudFJl
bmRlcmVyKCktPmxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICAgICAgTm9k
ZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKICAgICAgICAgaWYgKG5vZGUgJiYgbV9mcmFt
ZS0+cGFnZSgpKQotICAgICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0gbV9mcmFtZS0+
cGFnZSgpLT5kcmFnQ29udHJvbGxlcigpLT5kcmFnZ2FibGVOb2RlKG1fZnJhbWUsIG5vZGUsIGRy
YWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwsIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJl
VUEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9tb3VzZURvd25Qb3MueCgpLCBtX21v
dXNlRG93blBvcy55KCksIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzREhUTUwpOworICAgICAgICAg
ICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0gbV9mcmFtZS0+cGFnZSgpLT5kcmFnQ29udHJvbGxl
cigpLT5kcmFnZ2FibGVOb2RlKG1fZnJhbWUsIG5vZGUsIG1fbW91c2VEb3duUG9zLCBkcmFnU3Rh
dGUoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyA9
IDA7CiAgICAgICAgIAogICAgICAgICBpZiAoIWRyYWdTdGF0ZSgpLm1fZHJhZ1NyYykKICAgICAg
ICAgICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0gZmFsc2U7IC8vIG5vIGVsZW1lbnQgaXMg
ZHJhZ2dhYmxlCi0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8gcmVtZW1iZXIgc29tZSBm
YWN0cyBhYm91dCB0aGlzIHNvdXJjZSwgd2hpbGUgd2UgaGF2ZSBhIEhpdFRlc3RSZXN1bHQgaGFu
ZHkKLSAgICAgICAgICAgIG5vZGUgPSByZXN1bHQuVVJMRWxlbWVudCgpOwotICAgICAgICAgICAg
ZHJhZ1N0YXRlKCkubV9kcmFnU3JjSXNMaW5rID0gbm9kZSAmJiBub2RlLT5pc0xpbmsoKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgbm9kZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUo
KTsKLSAgICAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzSW1hZ2UgPSBub2RlICYmIG5v
ZGUtPnJlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdTcmNJblNlbGVjdGlvbiA9IG1fZnJh
bWUtPnNlbGVjdGlvbigpLT5jb250YWlucyhtX21vdXNlRG93blBvcyk7Ci0gICAgICAgIH0gICAg
ICAgICAgICAgICAgCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZHJhZ01heVN0YXJ0U2Vs
ZWN0aW9uSW5zdGVhZCA9IChkcmFnU3RhdGUoKS5tX2RyYWdUeXBlICYgRHJhZ1NvdXJjZUFjdGlv
blNlbGVjdGlvbik7CiAgICAgfQogICAgIAogICAgIC8vIEZvciBkcmFncyBzdGFydGluZyBpbiB0
aGUgc2VsZWN0aW9uLCB0aGUgdXNlciBtdXN0IHdhaXQgYmV0d2VlbiB0aGUgbW91c2Vkb3duIGFu
ZCBtb3VzZWRyYWcsCiAgICAgLy8gb3IgZWxzZSB3ZSBiYWlsIG9uIHRoZSBkcmFnZ2luZyBzdHVm
ZiBhbmQgYWxsb3cgc2VsZWN0aW9uIHRvIG9jY3VyCi0gICAgaWYgKG1fbW91c2VEb3duTWF5U3Rh
cnREcmFnICYmICFkcmFnU3RhdGUoKS5tX2RyYWdTcmNJc0ltYWdlICYmIGRyYWdTdGF0ZSgpLm1f
ZHJhZ1NyY0luU2VsZWN0aW9uICYmIGV2ZW50LmV2ZW50KCkudGltZXN0YW1wKCkgLSBtX21vdXNl
RG93blRpbWVzdGFtcCA8IFRleHREcmFnRGVsYXkpIHsKLSAgICAgICAgbV9tb3VzZURvd25NYXlT
dGFydERyYWcgPSBmYWxzZTsKLSAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0gMDsKLSAg
ICAgICAgLy8gLi4uYnV0IGlmIHRoaXMgd2FzIHRoZSBmaXJzdCBjbGljayBpbiB0aGUgd2luZG93
LCB3ZSBkb24ndCBldmVuIHdhbnQgdG8gc3RhcnQgc2VsZWN0aW9uCi0gICAgICAgIGlmIChldmVu
dEFjdGl2YXRlZFZpZXcoZXZlbnQuZXZlbnQoKSkpCi0gICAgICAgICAgICBtX21vdXNlRG93bk1h
eVN0YXJ0U2VsZWN0ID0gZmFsc2U7CisgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFnICYm
IG1fZHJhZ01heVN0YXJ0U2VsZWN0aW9uSW5zdGVhZCAmJiAoZHJhZ1N0YXRlKCkubV9kcmFnVHlw
ZSAmIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pICYmIGV2ZW50LmV2ZW50KCkudGltZXN0YW1w
KCkgLSBtX21vdXNlRG93blRpbWVzdGFtcCA8IFRleHREcmFnRGVsYXkpIHsKKyAgICAgICAgQVNT
RVJUKGV2ZW50LmV2ZW50KCkuZXZlbnRUeXBlKCkgPT0gTW91c2VFdmVudE1vdmVkKTsKKyAgICAg
ICAgaWYgKChkcmFnU3RhdGUoKS5tX2RyYWdUeXBlICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKSkg
eworICAgICAgICAgICAgLy8gLi4uIHVubGVzcyB0aGUgbW91c2UgaXMgb3ZlciBhbiBpbWFnZSwg
dGhlbiB3ZSBzdGFydCBkcmFnZ2luZyBqdXN0IHRoZSBpbWFnZQorICAgICAgICAgICAgZHJhZ1N0
YXRlKCkubV9kcmFnVHlwZSA9IERyYWdTb3VyY2VBY3Rpb25JbWFnZTsKKyAgICAgICAgfSBlbHNl
IGlmICghKGRyYWdTdGF0ZSgpLm1fZHJhZ1R5cGUgJiAoRHJhZ1NvdXJjZUFjdGlvbkRIVE1MIHwg
RHJhZ1NvdXJjZUFjdGlvbkxpbmspKSkgeworICAgICAgICAgICAgLy8gLi4uIGJ1dCBvbmx5IGJh
aWwgaWYgd2UncmUgbm90IG92ZXIgYW4gdW5zZWxlY3RhYmxlIGVsZW1lbnQuCisgICAgICAgICAg
ICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOworICAgICAgICAgICAgZHJhZ1N0YXRl
KCkubV9kcmFnU3JjID0gMDsKKyAgICAgICAgICAgIC8vIC4uLiBidXQgaWYgdGhpcyB3YXMgdGhl
IGZpcnN0IGNsaWNrIGluIHRoZSB3aW5kb3csIHdlIGRvbid0IGV2ZW4gd2FudCB0byBzdGFydCBz
ZWxlY3Rpb24KKyAgICAgICAgICAgIGlmIChldmVudEFjdGl2YXRlZFZpZXcoZXZlbnQuZXZlbnQo
KSkpCisgICAgICAgICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydFNlbGVjdCA9IGZhbHNlOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gUHJldmVudCB0aGUgZm9sbG93aW5nIGNh
c2UgZnJvbSBvY2N1cmluZzoKKyAgICAgICAgICAgIC8vIDEuIFVzZXIgc3RhcnRzIGEgZHJhZyBp
bW1lZGlhdGVseSBhZnRlciBtb3VzZSBkb3duIG92ZXIgYW4gdW5zZWxlY3RhYmxlIGVsZW1lbnQu
CisgICAgICAgICAgICAvLyAyLiBXZSBlbnRlciB0aGlzIGJsb2NrIGFuZCBkZWNpZGVkIHRoYXQg
c2luY2Ugd2UncmUgb3ZlciBhbiB1bnNlbGVjdGFibGUgZWxlbWVudCwKKyAgICAgICAgICAgIC8v
ICAgIGRvbid0IGNhbmNlbCB0aGUgZHJhZy4KKyAgICAgICAgICAgIC8vIDMuIFRoZSBkcmFnIGdl
dHMgcmVzb2x2ZWQgYXMgYSBwb3RlbnRpYWwgc2VsZWN0aW9uIGRyYWcgYmVsb3cgL2J1dC8gd2Ug
aGF2ZW4ndAorICAgICAgICAgICAgLy8gICAgZXhjZWVkZWQgdGhlIGRyYWcgaHlzdGVyZXNpcyB5
ZXQuCisgICAgICAgICAgICAvLyA0LiBXZSBlbnRlciB0aGlzIGJsb2NrIGFnYWluLCBhbmQgc2lu
Y2UgaXQncyBub3cgbWFya2VkIGFzIGEgc2VsZWN0aW9uIGRyYWcsIHdlCisgICAgICAgICAgICAv
LyAgICBjYW5jZWwgdGhlIGRyYWcuCisgICAgICAgICAgICBtX2RyYWdNYXlTdGFydFNlbGVjdGlv
bkluc3RlYWQgPSBmYWxzZTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICBpZiAoIW1fbW91
c2VEb3duTWF5U3RhcnREcmFnKQogICAgICAgICByZXR1cm4gIW1vdXNlRG93bk1heVN0YXJ0U2Vs
ZWN0KCkgJiYgIW1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsOwogICAgIAorICAgIGlmICgh
RXhhY3RseU9uZUJpdFNldChkcmFnU3RhdGUoKS5tX2RyYWdUeXBlKSkgeworICAgICAgICBBU1NF
UlQoKGRyYWdTdGF0ZSgpLm1fZHJhZ1R5cGUgJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSk7
CisgICAgICAgIEFTU0VSVCgoZHJhZ1N0YXRlKCkubV9kcmFnVHlwZSAmIH5EcmFnU291cmNlQWN0
aW9uU2VsZWN0aW9uKSA9PSBEcmFnU291cmNlQWN0aW9uREhUTUwKKyAgICAgICAgICAgICAgICB8
fCAoZHJhZ1N0YXRlKCkubV9kcmFnVHlwZSAmIH5EcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSA9
PSBEcmFnU291cmNlQWN0aW9uSW1hZ2UKKyAgICAgICAgICAgICAgICB8fCAoZHJhZ1N0YXRlKCku
bV9kcmFnVHlwZSAmIH5EcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSA9PSBEcmFnU291cmNlQWN0
aW9uTGluayk7CisgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1R5cGUgPSBEcmFnU291cmNlQWN0
aW9uU2VsZWN0aW9uOworICAgIH0KKwogICAgIC8vIFdlIGFyZSBzdGFydGluZyBhIHRleHQvaW1h
Z2UvdXJsIGRyYWcsIHNvIHRoZSBjdXJzb3Igc2hvdWxkIGJlIGFuIGFycm93CiAgICAgaWYgKEZy
YW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkgewogICAgICAgICAvLyBGSVhNRSA8cmRh
cjovLzc1Nzc1OTU+OiBDdXN0b20gY3Vyc29ycyBhcmVuJ3Qgc3VwcG9ydGVkIGR1cmluZyBkcmFn
IGFuZCBkcm9wIChkZWZhdWx0IHRvIHBvaW50ZXIpLgpAQCAtMjc0NCwxMCArMjc2MywxMCBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzJiBldmVudCkKICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIG1ha2Ugc3VyZSBpdCBn
ZXRzIG51bWJpZmllZAogICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ0NsaXBib2FyZCA9IGNyZWF0ZURy
YWdnaW5nQ2xpcGJvYXJkKCk7ICAKICAgICAKLSAgICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3Jj
TWF5QmVESFRNTCkgeworICAgIGlmIChkcmFnU3RhdGUoKS5zaG91bGREaXNwYXRjaEV2ZW50cygp
KSB7CiAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgaXMgYSBET00gYmFzZWQgZHJhZywg
aWYgaXQgaXMgZ2V0IHRoZSBET00gc3BlY2lmaWVkIGRyYWcgCiAgICAgICAgIC8vIGltYWdlIGFu
ZCBvZmZzZXQKLSAgICAgICAgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzREhUTUwpIHsKKyAg
ICAgICAgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvbkRIVE1M
KSB7CiAgICAgICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGRyYWdTdGF0ZSgp
Lm1fZHJhZ1NyYy0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlz
IGRvZXNuJ3Qgd29yayBjb3JyZWN0bHkgd2l0aCB0cmFuc2Zvcm1zLgogICAgICAgICAgICAgICAg
IEZsb2F0UG9pbnQgYWJzUG9zID0gcmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZSgpOwpAQCAtMjc4
Myw4ICsyODAyLDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3Rh
cnREcmFnKSB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgICAg
IERyYWdDb250cm9sbGVyKiBkcmFnQ29udHJvbGxlciA9IHBhZ2UgPyBwYWdlLT5kcmFnQ29udHJv
bGxlcigpIDogMDsKLSAgICAgICAgYm9vbCBzdGFydGVkRHJhZyA9IGRyYWdDb250cm9sbGVyICYm
IGRyYWdDb250cm9sbGVyLT5zdGFydERyYWcobV9mcmFtZSwgZHJhZ1N0YXRlKCkubV9kcmFnQ2xp
cGJvYXJkLmdldCgpLCBzcmNPcCwgZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25Qb3MsIGRyYWdT
dGF0ZSgpLm1fZHJhZ1NyY0lzREhUTUwpOwotICAgICAgICBpZiAoIXN0YXJ0ZWREcmFnICYmIGRy
YWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwpIHsKKyAgICAgICAgYm9vbCBzdGFydGVkRHJh
ZyA9IGRyYWdDb250cm9sbGVyICYmIGRyYWdDb250cm9sbGVyLT5zdGFydERyYWcobV9mcmFtZSwg
ZHJhZ1N0YXRlKCksIHNyY09wLCBldmVudC5ldmVudCgpLCBtX21vdXNlRG93blBvcyk7CisgICAg
ICAgIGlmICghc3RhcnRlZERyYWcgJiYgZHJhZ1N0YXRlKCkuc2hvdWxkRGlzcGF0Y2hFdmVudHMo
KSkgewogICAgICAgICAgICAgLy8gRHJhZyB3YXMgY2FubmVkIGF0IHRoZSBsYXN0IG1pbnV0ZSAt
IHdlIG93ZSBtX2RyYWdTcmMgYSBEUkFHRU5EIGV2ZW50CiAgICAgICAgICAgICBkaXNwYXRjaERy
YWdTcmNFdmVudChldmVudE5hbWVzKCkuZHJhZ2VuZEV2ZW50LCBldmVudC5ldmVudCgpKTsKICAg
ICAgICAgICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaAppbmRleCBhYTQ0NGIzNDY2M2I1OWMzNzhhNDE3YzcyZWRkZWM5Y2VhYmQ5
MmExLi41MzRhYTc5YmYzOTAzMTZlMDIyN2FlNWU4YzM1NjdlNGFiMzUwYjZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgRXZlbnRIYW5k
bGVyX2gKIAogI2luY2x1ZGUgIkRyYWdBY3Rpb25zLmgiCisjaW5jbHVkZSAiRHJhZ1N0YXRlLmgi
CiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNpbmNsdWRlICJIaXRUZXN0UmVxdWVzdC5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgpAQCAtNDksNyArNTAsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENsaXBib2FyZDsKIGNsYXNzIEN1cnNvcjsKLXN0cnVj
dCBEcmFnU3RhdGU7CiBjbGFzcyBFdmVudDsKIGNsYXNzIEV2ZW50VGFyZ2V0OwogY2xhc3MgRmxv
YXRQb2ludDsKQEAgLTMyMiw3ICszMjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVmYXVsdEFy
cm93RXZlbnRIYW5kbGVyKEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50Kik7CiAKICNpZiBF
TkFCTEUoRFJBR19TVVBQT1JUKQotICAgIHZvaWQgYWxsb3dESFRNTERyYWcoYm9vbCYgZmxhZ0RI
VE1MLCBib29sJiBmbGFnVUEpIGNvbnN0OworICAgIERyYWdTb3VyY2VBY3Rpb24gdXBkYXRlRHJh
Z1NvdXJjZUFjdGlvbnNBbGxvd2VkKCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIC8vIFRoZSBmb2xs
b3dpbmcgYXJlIGNhbGxlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGhhbmRsZU1vdXNlVXAgYW5kIGhh
bmRsZURyYWcuICAKQEAgLTM1OSw2ICszNTksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9tb3Vz
ZURvd25NYXlTdGFydFNlbGVjdDsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIGJvb2wg
bV9tb3VzZURvd25NYXlTdGFydERyYWc7CisgICAgYm9vbCBtX2RyYWdNYXlTdGFydFNlbGVjdGlv
bkluc3RlYWQ7CiAjZW5kaWYKICAgICBib29sIG1fbW91c2VEb3duV2FzU2luZ2xlQ2xpY2tJblNl
bGVjdGlvbjsKICAgICBib29sIG1fYmVnYW5TZWxlY3RpbmdUZXh0Owo=
</data>
<flag name="review"
          id="86696"
          type_id="1"
          status="+"
          setter="tony"
    />
    <flag name="commit-queue"
          id="86713"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>