<?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>46015</bug_id>
          
          <creation_ts>2010-09-17 17:13:28 -0700</creation_ts>
          <short_desc>Implement shadow DOM-aware event targeting and introduce EventContext to track the context of each event dispatch.</short_desc>
          <delta_ts>2011-02-08 09:45:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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>
          <dependson>49569</dependson>
    
    <dependson>49868</dependson>
    
    <dependson>49977</dependson>
    
    <dependson>49986</dependson>
    
    <dependson>50163</dependson>
    
    <dependson>50477</dependson>
    
    <dependson>52065</dependson>
    
    <dependson>52195</dependson>
          <blocked>44907</blocked>
    
    <blocked>48648</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>arv</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>281004</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-09-17 17:13:28 -0700</bug_when>
    <thetext>Implement shadow DOM-aware event targeting and introduce EventContext to track the context of each event dispatch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281005</commentid>
    <comment_count>1</comment_count>
      <attachid>67976</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-09-17 17:14:17 -0700</bug_when>
    <thetext>Created attachment 67976
End of week checkpoint</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281610</commentid>
    <comment_count>2</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-09-20 09:43:08 -0700</bug_when>
    <thetext>Notes to self:

- use templates to combine EventContext and WindowEventContext
- study SVG event firing and simplify
- add project changes for all platforms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288563</commentid>
    <comment_count>3</comment_count>
      <attachid>69537</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-10-01 16:23:36 -0700</bug_when>
    <thetext>Created attachment 69537
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288565</commentid>
    <comment_count>4</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-10-01 16:25:21 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Notes to self:
&gt; 
&gt; - use templates to combine EventContext and WindowEventContext

This seemed like a good idea, but turned cumbersome very quickly.

&gt; - study SVG event firing and simplify

I chickened out here and did only a very limited part, leaving out a FIXME. SVG is very, very hairy.

&gt; - add project changes for all platforms

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288655</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-01 23:00:16 -0700</bug_when>
    <thetext>Attachment 69537 did not build on chromium:
Build output: http://queues.webkit.org/results/4230038</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288681</commentid>
    <comment_count>6</comment_count>
      <attachid>69537</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-10-02 06:37:54 -0700</bug_when>
    <thetext>Comment on attachment 69537
Patch

Will check on Chromium borkage...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288962</commentid>
    <comment_count>7</comment_count>
      <attachid>69640</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-10-04 09:06:04 -0700</bug_when>
    <thetext>Created attachment 69640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289063</commentid>
    <comment_count>8</comment_count>
      <attachid>69665</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-10-04 12:18:02 -0700</bug_when>
    <thetext>Created attachment 69665
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293844</commentid>
    <comment_count>9</comment_count>
      <attachid>69665</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-13 17:29:08 -0700</bug_when>
    <thetext>Comment on attachment 69665
Patch

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

Design looks good. Are you sure you have enough test coverage?

&gt; WebCore/dom/EventContext.cpp:52
&gt; +Node* EventContext::node() const
&gt; +{
&gt; +    return m_node.get();
&gt; +}
&gt; +
&gt; +EventTarget* EventContext::target() const
&gt; +{
&gt; +    return m_target.get();
&gt; +}

I’d like to see these inlined.

&gt; WebCore/dom/EventContext.cpp:61
&gt; +WindowEventContext::WindowEventContext(Event* event, Node* node, const Vector&lt;EventContext&gt;&amp; ancestors)

This class should go into a separate source file.

It’s a little strange to pass in a vector simply so we can extract the last element of it.

&gt; WebCore/dom/EventContext.cpp:89
&gt; +DOMWindow* WindowEventContext::window() const
&gt; +{
&gt; +    return m_window.get();
&gt; +}
&gt; +
&gt; +EventTarget* WindowEventContext::target() const
&gt; +{
&gt; +    return m_target.get();
&gt; +}

I’d like to see these inlined.

&gt; WebCore/dom/EventContext.h:35
&gt; +class ContainerNode;

Not used in this header.

&gt; WebCore/dom/Node.cpp:2553
&gt; +    bool skip = false;
&gt; +    do {

I think that shouldSkipNextXXX (whatever XXX is) is a better boolean local variable name than “skip”. Since skip is a verb it’s hard to know what it means.

do while (true) is not the usual idiom for an infinite loop. I’d prefer that you use while (true), which is the more usual one in this project at least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301871</commentid>
    <comment_count>10</comment_count>
      <attachid>69665</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-10-29 10:48:36 -0700</bug_when>
    <thetext>Comment on attachment 69665
Patch

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

&gt;&gt; WebCore/dom/EventContext.cpp:52
&gt;&gt; +}
&gt; 
&gt; I’d like to see these inlined.

Done.

&gt;&gt; WebCore/dom/EventContext.cpp:61
&gt;&gt; +WindowEventContext::WindowEventContext(Event* event, Node* node, const Vector&lt;EventContext&gt;&amp; ancestors)
&gt; 
&gt; This class should go into a separate source file.
&gt; 
&gt; It’s a little strange to pass in a vector simply so we can extract the last element of it.

Agreed. Split up the file and moved resolving of top ancestor back into Node.cpp

&gt;&gt; WebCore/dom/EventContext.cpp:89
&gt;&gt; +}
&gt; 
&gt; I’d like to see these inlined.

Done.

&gt;&gt; WebCore/dom/EventContext.h:35
&gt;&gt; +class ContainerNode;
&gt; 
&gt; Not used in this header.

Removed.

&gt;&gt; WebCore/dom/Node.cpp:2553
&gt;&gt; +    do {
&gt; 
&gt; I think that shouldSkipNextXXX (whatever XXX is) is a better boolean local variable name than “skip”. Since skip is a verb it’s hard to know what it means.
&gt; 
&gt; do while (true) is not the usual idiom for an infinite loop. I’d prefer that you use while (true), which is the more usual one in this project at least.

Done. Sorry, &quot;do while&quot; stuff was due to me mucking with trying to not make it infinite at first :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301877</commentid>
    <comment_count>11</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-10-29 10:54:39 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 69665 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69665&amp;action=review
&gt; 
&gt; Design looks good. Are you sure you have enough test coverage?

There&apos;s pretty good coverage for events fired from shadow DOM already, but it wouldn&apos;t hurt to write more tests specifically around target/currentTarget and how they change when going in/out of shadow DOM. I will tackle this next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301891</commentid>
    <comment_count>12</comment_count>
      <attachid>72351</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-10-29 11:12:15 -0700</bug_when>
    <thetext>Created attachment 72351
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301913</commentid>
    <comment_count>13</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-29 11:41:33 -0700</bug_when>
    <thetext>Attachment 72351 did not build on qt:
Build output: http://queues.webkit.org/results/4787068</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301926</commentid>
    <comment_count>14</comment_count>
      <attachid>72360</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-10-29 11:59:42 -0700</bug_when>
    <thetext>Created attachment 72360
Patch for landing for realz.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301967</commentid>
    <comment_count>15</comment_count>
      <attachid>72360</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-29 12:31:47 -0700</bug_when>
    <thetext>Comment on attachment 72360
Patch for landing for realz.

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

&gt; LayoutTests/ChangeLog:8
&gt; +        Tuned the test to better reflect its point: the even should indeed fire (it used to be swallowed),

even -&gt; event

&gt; LayoutTests/ChangeLog:9
&gt; +        but it&apos;s target should be a non-shadow node.

it&apos;s -&gt; its

&gt; LayoutTests/fast/events/shadow-boundary-crossing.html:9
&gt; +            success = event.target.parentNode;

If the aim here is to check that this is a non-shadow node, maybe we should check for the specific correct node, instead of allowing any node with a parent.

&gt; WebCore/dom/EventContext.h:40
&gt; +    EventContext(Node*, EventTarget* currentTarget, EventTarget* target);

Our usual style is to use PassRefPtr for arguments when the object will take a ref to them, even if the object is not the “sole owner”. I think you should follow that here.

Can the node be a ContainerNode* instead of Node*? Do we construct these with arbitrary nodes?

&gt; WebCore/dom/Node.cpp:1445
&gt; +ContainerNode* Node::parentOrHostNode()

Candidate for inlining?

&gt; WebCore/dom/Node.cpp:2516
&gt; -void Node::eventAncestors(Vector&lt;RefPtr&lt;ContainerNode&gt; &gt; &amp;ancestors)
&gt; +void Node::eventAncestors(Vector&lt;EventContext&gt; &amp;ancestors, EventTarget* originalTarget)

Misplaced &quot;&amp;&quot; here. It&apos;s supposed to be next to the type, not the argument name.

Functions like this one, that use an out argument, should typically have “get” in their name. Not sure why this didn’t have that already.

&gt; WebCore/dom/Node.cpp:2544
&gt; +    };

Stray semicolon here. It should be removed.

&gt; WebCore/dom/Node.cpp:2575
&gt; +    RefPtr&lt;EventTarget&gt; originalTarget(event-&gt;target());

I prefer the &quot;=&quot; style syntax to the constructor style in cases like this. What do you think?

&gt; WebCore/dom/Node.cpp:2618
&gt; +            goto doneDispatching;

This could just be a “break” and probably should be. The reason we use goto above is that it’s nested inside two loops.

&gt; WebCore/dom/Node.h:216
&gt;      // FIXME: Should be named getEventAncestors.
&gt; -    void eventAncestors(Vector&lt;RefPtr&lt;ContainerNode&gt; &gt; &amp;ancestors);
&gt; +    void eventAncestors(Vector&lt;EventContext&gt; &amp;ancestors, EventTarget*);

As I mentioned above, misplaced &amp; here, and the name should be changed as the FIXME says.

&gt; WebCore/dom/WindowEventContext.cpp:50
&gt; +        topLevelContainer = topEventContext-&gt;node();
&gt; +        targetForWindowEvents = topEventContext-&gt;target();
&gt; +    }

This might read better like this:

    EventTarget* targetForWindowEvents = topEventContext ? topEventContext-&gt;node() : node;
    Node* topLevelContainer = topEventContext ? topEventContext-&gt;target() : node;

Not sure. I suppose it depends on whether you are comfortable with ?: or not.

&gt; WebCore/dom/WindowEventContext.h:43
&gt; +    WindowEventContext(Event*, Node*, const EventContext*);

Same comment as above about PassRefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302008</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-29 13:31:34 -0700</bug_when>
    <thetext>Attachment 72351 did not build on mac:
Build output: http://queues.webkit.org/results/4795092</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302157</commentid>
    <comment_count>17</comment_count>
      <attachid>72360</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-10-29 15:54:56 -0700</bug_when>
    <thetext>Comment on attachment 72360
Patch for landing for realz.

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

&gt;&gt; LayoutTests/ChangeLog:8
&gt;&gt; +        Tuned the test to better reflect its point: the even should indeed fire (it used to be swallowed),
&gt; 
&gt; even -&gt; event

DOH.

&gt;&gt; LayoutTests/ChangeLog:9
&gt;&gt; +        but it&apos;s target should be a non-shadow node.
&gt; 
&gt; it&apos;s -&gt; its

Ouch. I apologize.

&gt;&gt; LayoutTests/fast/events/shadow-boundary-crossing.html:9
&gt;&gt; +            success = event.target.parentNode;
&gt; 
&gt; If the aim here is to check that this is a non-shadow node, maybe we should check for the specific correct node, instead of allowing any node with a parent.

Sure! Fixed.

&gt;&gt; WebCore/dom/EventContext.h:40
&gt;&gt; +    EventContext(Node*, EventTarget* currentTarget, EventTarget* target);
&gt; 
&gt; Our usual style is to use PassRefPtr for arguments when the object will take a ref to them, even if the object is not the “sole owner”. I think you should follow that here.
&gt; 
&gt; Can the node be a ContainerNode* instead of Node*? Do we construct these with arbitrary nodes?

Sure, changed to PassRefPtr.

The reason I ended up using Node* was not a good one: the loop in getEventAncestors starts with &quot;ancestor = this&quot; (where &quot;this&quot; is a Node). I tried to rework the loop on the spot just now, but it was getting inelegant. I added a FIXME instead.

&gt;&gt; WebCore/dom/Node.cpp:1445
&gt;&gt; +ContainerNode* Node::parentOrHostNode()
&gt; 
&gt; Candidate for inlining?

Sure. Done.

&gt;&gt; WebCore/dom/Node.cpp:2516
&gt;&gt; +void Node::eventAncestors(Vector&lt;EventContext&gt; &amp;ancestors, EventTarget* originalTarget)
&gt; 
&gt; Misplaced &quot;&amp;&quot; here. It&apos;s supposed to be next to the type, not the argument name.
&gt; 
&gt; Functions like this one, that use an out argument, should typically have “get” in their name. Not sure why this didn’t have that already.

Done.

&gt;&gt; WebCore/dom/Node.cpp:2544
&gt;&gt; +    };
&gt; 
&gt; Stray semicolon here. It should be removed.

Sorry -- removed.

&gt;&gt; WebCore/dom/Node.cpp:2575
&gt;&gt; +    RefPtr&lt;EventTarget&gt; originalTarget(event-&gt;target());
&gt; 
&gt; I prefer the &quot;=&quot; style syntax to the constructor style in cases like this. What do you think?

Sure. Fixed.

&gt;&gt; WebCore/dom/Node.cpp:2618
&gt;&gt; +            goto doneDispatching;
&gt; 
&gt; This could just be a “break” and probably should be. The reason we use goto above is that it’s nested inside two loops.

Fixed.

&gt;&gt; WebCore/dom/Node.h:216
&gt;&gt; +    void eventAncestors(Vector&lt;EventContext&gt; &amp;ancestors, EventTarget*);
&gt; 
&gt; As I mentioned above, misplaced &amp; here, and the name should be changed as the FIXME says.

Done.

&gt;&gt; WebCore/dom/WindowEventContext.cpp:50
&gt;&gt; +    }
&gt; 
&gt; This might read better like this:
&gt; 
&gt;     EventTarget* targetForWindowEvents = topEventContext ? topEventContext-&gt;node() : node;
&gt;     Node* topLevelContainer = topEventContext ? topEventContext-&gt;target() : node;
&gt; 
&gt; Not sure. I suppose it depends on whether you are comfortable with ?: or not.

I like it. Changed.

&gt;&gt; WebCore/dom/WindowEventContext.h:43
&gt;&gt; +    WindowEventContext(Event*, Node*, const EventContext*);
&gt; 
&gt; Same comment as above about PassRefPtr.

Sure, done. It didn&apos;t come out looking pretty, since node may or may not be ref&apos;d up -- but the constructor signature does indicate intent more clearly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302158</commentid>
    <comment_count>18</comment_count>
      <attachid>72410</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-10-29 15:56:30 -0700</bug_when>
    <thetext>Created attachment 72410
Patch for landing 2.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302327</commentid>
    <comment_count>19</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-10-30 10:32:56 -0700</bug_when>
    <thetext>Committed r70984: &lt;http://trac.webkit.org/changeset/70984&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302332</commentid>
    <comment_count>20</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-10-30 11:48:47 -0700</bug_when>
    <thetext>Reverted r70984 for reason:

Made media/audio-delete-while-slider-thumb-clicked.html crash.

Committed r70985: &lt;http://trac.webkit.org/changeset/70985&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302353</commentid>
    <comment_count>21</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-10-30 17:09:58 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; Reverted r70984 for reason:
&gt; 
&gt; Made media/audio-delete-while-slider-thumb-clicked.html crash.
&gt; 
&gt; Committed r70985: &lt;http://trac.webkit.org/changeset/70985&gt;

I can&apos;t repro on platform/mac. Sounds like a port-specific misuse of something, argh...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302986</commentid>
    <comment_count>22</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-01 15:26:28 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; Reverted r70984 for reason:
&gt; &gt; 
&gt; &gt; Made media/audio-delete-while-slider-thumb-clicked.html crash.
&gt; &gt; 
&gt; &gt; Committed r70985: &lt;http://trac.webkit.org/changeset/70985&gt;
&gt; 
&gt; I can&apos;t repro on platform/mac. Sounds like a port-specific misuse of something, argh...

Ah, turns out it&apos;s a difference in garbage collector. New patch/fix coming up...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303015</commentid>
    <comment_count>23</comment_count>
      <attachid>72582</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-01 16:01:49 -0700</bug_when>
    <thetext>Created attachment 72582
With a stale ptr fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303031</commentid>
    <comment_count>24</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-01 16:11:45 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Created an attachment (id=72582) [details]
&gt; With a stale ptr fix

Thanks for your patience. I found a stale pointer that&apos;s only visible with the new patch and over-active garbage collector. It&apos;s pretty obvious by inspection, but I am going to work on a layout test to make sure we capture the regression. Apparently, I am doomed to write large patches :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303876</commentid>
    <comment_count>25</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-02 20:54:14 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; Created an attachment (id=72582) [details] [details]
&gt; &gt; With a stale ptr fix
&gt; 
&gt; Thanks for your patience. I found a stale pointer that&apos;s only visible with the new patch and over-active garbage collector. It&apos;s pretty obvious by inspection, but I am going to work on a layout test to make sure we capture the regression. Apparently, I am doomed to write large patches :)

Turns out this was 2 pixels short of actually reaching a thumb on platform/mac:

http://trac.webkit.org/browser/trunk/LayoutTests/media/audio-delete-while-slider-thumb-clicked.html#L57

So this test didn&apos;t actually test what it had intended. In Chromium, the scrubber thumb is more rectangular in shape and it was triggering the crash. I&apos;ll improve the test and submit with this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303879</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-02 20:59:41 -0700</bug_when>
    <thetext>Attachment 72360 did not build on win:
Build output: http://queues.webkit.org/results/4942020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303880</commentid>
    <comment_count>27</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-02 21:03:05 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Attachment 72360 [details] did not build on win:
&gt; Build output: http://queues.webkit.org/results/4942020

Yeah, I realized that today too :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304078</commentid>
    <comment_count>28</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-03 10:02:58 -0700</bug_when>
    <thetext>Committed r71244: &lt;http://trac.webkit.org/changeset/71244&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304279</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-03 14:09:54 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/71244 might have broken Leopard Intel Release (Tests), Leopard Intel Debug (Tests), SnowLeopard Intel Release (Tests), GTK Linux 32-bit Release, GTK Linux 32-bit Debug, and GTK Linux 64-bit Debug
The following tests are not passing:
editing/spelling/context-menu-suggestions.html
media/controls-right-click-on-timebar.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304283</commentid>
    <comment_count>30</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-03 14:13:49 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; http://trac.webkit.org/changeset/71244 might have broken Leopard Intel Release (Tests), Leopard Intel Debug (Tests), SnowLeopard Intel Release (Tests), GTK Linux 32-bit Release, GTK Linux 32-bit Debug, and GTK Linux 64-bit Debug
&gt; The following tests are not passing:
&gt; editing/spelling/context-menu-suggestions.html
&gt; media/controls-right-click-on-timebar.html

http://build.webkit.org/results/Leopard%20Intel%20Release%20(Tests)/r71244%20(23660)/results.html
context-menu-suggestions.html indeed seems to be failing consistently.  Could you look into this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304340</commentid>
    <comment_count>31</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-03 16:07:28 -0700</bug_when>
    <thetext>Sorry, rolled out again in http://trac.webkit.org/changeset/71278. Turns out Darin was right: there&apos;s not enough test coverage. I realized that with this change, I also need to adjust event handling in existing shadow DOM elements, because right now they expect their events to be handled by their hosts, which breaks context menu, for instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304769</commentid>
    <comment_count>32</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-04 11:22:49 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; Sorry, rolled out again in http://trac.webkit.org/changeset/71278. Turns out Darin was right: there&apos;s not enough test coverage. I realized that with this change, I also need to adjust event handling in existing shadow DOM elements, because right now they expect their events to be handled by their hosts, which breaks context menu, for instance.

Found the problem. http://trac.webkit.org/changeset/60418 erroneously flipped a condition:

Before http://trac.webkit.org/browser/trunk/WebCore/rendering/TextControlInnerElements.cpp?rev=58914#L123
After http://trac.webkit.org/browser/trunk/WebCore/rendering/TextControlInnerElements.cpp?rev=60418#L141

Prior to event retargeting, it would just fall back to HTMLInputElement::defaultEventHandler, so this problem wasn&apos;t visible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305063</commentid>
    <comment_count>33</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-04 18:05:39 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; http://trac.webkit.org/changeset/60418 erroneously flipped a condition:

Oops, sorry!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305079</commentid>
    <comment_count>34</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-04 18:22:15 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; (In reply to comment #32)
&gt; &gt; http://trac.webkit.org/changeset/60418 erroneously flipped a condition:
&gt; 
&gt; Oops, sorry!

No worries, it&apos;s all good. With the help of Erik Arvidsson, I made good progress on layout test coverage of the edge cases around event shadow boundary crossing and will include the first set of tests with the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305598</commentid>
    <comment_count>35</comment_count>
      <attachid>73131</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-05 15:54:13 -0700</bug_when>
    <thetext>Created attachment 73131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305601</commentid>
    <comment_count>36</comment_count>
      <attachid>73131</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-05 16:00:03 -0700</bug_when>
    <thetext>Comment on attachment 73131
Patch

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

&gt; LayoutTests/ChangeLog:11
&gt; +        * media/audio-delete-while-slider-thumb-clicked.html:

No comment about why this test had to change?

&gt; WebCore/rendering/ShadowElement.h:52
&gt; -    HTMLElement* m_shadowParent;
&gt; +    RefPtr&lt;HTMLElement&gt; m_shadowParent;

Are you sure this change is safe? Can’t this lead to a reference cycle?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305618</commentid>
    <comment_count>37</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-05 16:12:04 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; (From update of attachment 73131 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=73131&amp;action=review
&gt; 
&gt; &gt; LayoutTests/ChangeLog:11
&gt; &gt; +        * media/audio-delete-while-slider-thumb-clicked.html:
&gt; 
&gt; No comment about why this test had to change?

The explanation is at the top, but I should probably move it down to individual test. Will re-upload in a sec.

&gt; &gt; WebCore/rendering/ShadowElement.h:52
&gt; &gt; -    HTMLElement* m_shadowParent;
&gt; &gt; +    RefPtr&lt;HTMLElement&gt; m_shadowParent;
&gt; 
&gt; Are you sure this change is safe? Can’t this lead to a reference cycle?

Hmm. That&apos;s a good point. Because ShadowElement&apos;s owner (like RenderSlider) is not ref-counted, I don&apos;t believe so:

HTMLInputElement-raw-&gt;RenderSlider-RefPtr-&gt;ShadowElement-&gt;RefPtr-&gt;HTMLInputElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305621</commentid>
    <comment_count>38</comment_count>
      <attachid>73137</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-05 16:17:01 -0700</bug_when>
    <thetext>Created attachment 73137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308146</commentid>
    <comment_count>39</comment_count>
      <attachid>73137</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-11 14:19:53 -0800</bug_when>
    <thetext>Comment on attachment 73137
Patch

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

&gt; WebCore/dom/Node.cpp:2535
&gt;  #if ENABLE(SVG)
&gt; -            // Skip &lt;use&gt; shadow tree elements.
&gt; -            if (ancestor-&gt;isSVGElement() &amp;&amp; ancestor-&gt;isShadowNode())
&gt; -                continue;
&gt; +        // Skip SVGShadowTreeRootElement.
&gt; +        shouldSkipNextAncestor = ancestor-&gt;isSVGElement() &amp;&amp; ancestor-&gt;isShadowNode();
&gt; +        if (shouldSkipNextAncestor)
&gt; +            continue;
&gt;  #endif

Idea probably for next iteration: If we put the isSVGElement &amp;&amp; isShadowNode check into an inline function we could get the #if out of this function, much as you did with the eventTargetRespectingSVGTargetRules function.

&gt; WebCore/dom/Node.cpp:2555
&gt; +    return ancestors.isEmpty() ? 0 : &amp;(ancestors.last());

You don’t need those parentheses. To me they make the code harder to read, although others may not feel the same way.

&gt; WebCore/dom/Node.h:214
&gt; +    // Node&apos;s parent or shadow tree host.
&gt; +    ContainerNode* parentOrHostNode();

I’m not sure this function needs “Node” in its name.

&gt; WebCore/dom/WindowEventContext.cpp:41
&gt; +    // We don&apos;t dispatch load events to the window. That quirk was originally
&gt; +    // added because Mozilla doesn&apos;t propagate load events to the window object.

Should we say “This quirk” rather than “That quirk”?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308674</commentid>
    <comment_count>40</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-12 11:44:48 -0800</bug_when>
    <thetext>(In reply to comment #39)
&gt; (From update of attachment 73137 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=73137&amp;action=review
&gt; 
&gt; &gt; WebCore/dom/Node.cpp:2535
&gt; &gt;  #if ENABLE(SVG)
&gt; &gt; -            // Skip &lt;use&gt; shadow tree elements.
&gt; &gt; -            if (ancestor-&gt;isSVGElement() &amp;&amp; ancestor-&gt;isShadowNode())
&gt; &gt; -                continue;
&gt; &gt; +        // Skip SVGShadowTreeRootElement.
&gt; &gt; +        shouldSkipNextAncestor = ancestor-&gt;isSVGElement() &amp;&amp; ancestor-&gt;isShadowNode();
&gt; &gt; +        if (shouldSkipNextAncestor)
&gt; &gt; +            continue;
&gt; &gt;  #endif
&gt; 
&gt; Idea probably for next iteration: If we put the isSVGElement &amp;&amp; isShadowNode check into an inline function we could get the #if out of this function, much as you did with the eventTargetRespectingSVGTargetRules function.

Yeah, I really need to take another shot at this mess.

&gt; 
&gt; &gt; WebCore/dom/Node.cpp:2555
&gt; &gt; +    return ancestors.isEmpty() ? 0 : &amp;(ancestors.last());
&gt; 
&gt; You don’t need those parentheses. To me they make the code harder to read, although others may not feel the same way.

Removed.

&gt; 
&gt; &gt; WebCore/dom/Node.h:214
&gt; &gt; +    // Node&apos;s parent or shadow tree host.
&gt; &gt; +    ContainerNode* parentOrHostNode();
&gt; 
&gt; I’m not sure this function needs “Node” in its name.

It&apos;s mimicking parentNode(). I&apos;ll leave it as-is for now. I am not entirely happy with the term &quot;host&quot; either, but I&apos;ll paint that shed in a better color when we get closer to actual XBL2 implementation.

&gt; &gt; WebCore/dom/WindowEventContext.cpp:41
&gt; &gt; +    // We don&apos;t dispatch load events to the window. That quirk was originally
&gt; &gt; +    // added because Mozilla doesn&apos;t propagate load events to the window object.
&gt; 
&gt; Should we say “This quirk” rather than “That quirk”?

Yep!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308675</commentid>
    <comment_count>41</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-12 11:49:52 -0800</bug_when>
    <thetext>Committed r71934: &lt;http://trac.webkit.org/changeset/71934&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308724</commentid>
    <comment_count>42</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-12 13:07:55 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/71934 might have broken GTK Linux 64-bit Debug
The following tests are not passing:
media/controls-right-click-on-timebar.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308730</commentid>
    <comment_count>43</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-12 13:24:14 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; http://trac.webkit.org/changeset/71934 might have broken GTK Linux 64-bit Debug
&gt; The following tests are not passing:
&gt; media/controls-right-click-on-timebar.html

Looking into the breakage ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308749</commentid>
    <comment_count>44</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-12 13:41:18 -0800</bug_when>
    <thetext>(In reply to comment #43)
&gt; (In reply to comment #42)
&gt; &gt; http://trac.webkit.org/changeset/71934 might have broken GTK Linux 64-bit Debug
&gt; &gt; The following tests are not passing:
&gt; &gt; media/controls-right-click-on-timebar.html
&gt; 
&gt; Looking into the breakage ...

It&apos;s due to https://bugs.webkit.org/show_bug.cgi?id=40601.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67976</attachid>
            <date>2010-09-17 17:14:17 -0700</date>
            <delta_ts>2010-10-01 16:23:33 -0700</delta_ts>
            <desc>End of week checkpoint</desc>
            <filename>bug-46015-20100917171415.patch</filename>
            <type>text/plain</type>
            <size>32244</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ZGVkYjNmOGRmNWNhZTI0NDBjZjQzMmIzOWY3Mzg3NDgxZDhkZGFhLi5kOWQwYzAy
MGJiY2VhMjcxZjU5Yzk0ZDc5MjM2Nzc5YWE1ZmVmYmI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMDktMTcgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
c2hhZG93IERPTS1hd2FyZSBldmVudCB0YXJnZXRpbmcgYW5kIGludHJvZHVjZSBFdmVudENvbnRl
eHQgdG8gdHJhY2sgdGhlIGNvbnRleHQgb2YgZWFjaCBldmVudCBkaXNwYXRjaC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MDE1CisKKyAgICAgICAg
KiBmYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRtbDoKKwogMjAxMC0wOS0x
NyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgTGFuZCBuZXcgV2lu
ZG93cyByZXN1bHRzIGZvciBmYXN0L2Zvcm1zL2ZpbGUtaW5wdXQtZGlzYWJsZWQuaHRtbApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2hhZG93LWJvdW5kYXJ5LWNyb3NzaW5n
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3Npbmcu
aHRtbAppbmRleCA2MjNlMDY3M2VjMWNmMzYyNTZmNWVjMTM2N2Q3Y2EzOWJhYmI0MTUzLi4wZTg3
ZmQ3NDU1N2M1NWZhZWIxMTM1NDM3YjY1MWU1Y2U1YzBjNDIxIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRtbApAQCAtMiwx
MSArMiwxMSBAQAogPGhlYWQ+CiAgICAgPHRpdGxlPjwvdGl0bGU+CiAgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICB2YXIgZmlyZWQgPSBmYWxzZTsKKyAgICAgICAg
dmFyIHN1Y2Nlc3M7CiAKICAgICAgICAgZnVuY3Rpb24gc2VsZWN0U3RhcnQoZXZlbnQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGZpcmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBl
dmVudC50YXJnZXQucGFyZW50Tm9kZTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIHRl
c3QoKQpAQCAtMjMsNyArMjMsNyBAQAogICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3du
KCk7CiAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CiAKLSAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lclRleHQgPSBmaXJlZCA/ICJGQUlM
IiA6ICJQQVNTIjsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQi
KS5pbm5lclRleHQgPSAhc3VjY2VzcyA/ICJGQUlMIiA6ICJQQVNTIjsKICAgICAgICAgfQogCiAg
ICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdHN0YXJ0Iiwgc2VsZWN0U3RhcnQsIHRydWUp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBkYTUxZTYwZTJhZTM4MDg5YWQxMDY1NzI0NmYyZTA0YWZmMjFmY2NhLi4wN2Q0MTgyNmNmYTc2
ZDMzY2EzNTg1YzJjNWJlMjg4ZDhlYzAzYmUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEwLTA5LTE3ICBE
aW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHNoYWRvdyBET00tYXdh
cmUgZXZlbnQgdGFyZ2V0aW5nIGFuZCBpbnRyb2R1Y2UgRXZlbnRDb250ZXh0IHRvIHRyYWNrIHRo
ZSBjb250ZXh0IG9mIGVhY2ggZXZlbnQgZGlzcGF0Y2guCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjAxNQorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om5vdGlmeUNoaWxkSW5zZXJ0ZWQpOgorICAgICAgICAqIGRvbS9F
dmVudENvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50Q29udGV4dDo6
RXZlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50Q29udGV4dDo6YW5jZXN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRDb250ZXh0Ojp0YXJnZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6ZXZlbnRUYXJnZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0UnVsZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRDb250ZXh0OjpoYW5kbGVMb2NhbEV2ZW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpXaW5kb3dFdmVudENvbnRleHQ6OldpbmRvd0V2ZW50Q29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpXaW5kb3dFdmVudENvbnRleHQ6OndpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpXaW5k
b3dFdmVudENvbnRleHQ6OnRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dFdmVudENv
bnRleHQ6OmhhbmRsZUxvY2FsRXZlbnRzKToKKyAgICAgICAgKiBkb20vRXZlbnRDb250ZXh0Lmg6
IEFkZGVkLgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV2ZW50
VGFyZ2V0UmVzcGVjdGluZ1NWR1RhcmdldFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
Om1hcmtBbmNlc3RvcnNXaXRoQ2hpbGROZWVkc1N0eWxlUmVjYWxjKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6cGFyZW50T3JIb3N0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjplbmNsb3NpbmdM
aW5rRXZlbnRQYXJlbnRPclNlbGYpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZXZlbnRBbmNl
c3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6ZXZlbnRIYXNMaXN0ZW5lcnMpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hHZW5lcmljRXZlbnQpOgorICAgICAgICAqIGRvbS9Ob2Rl
Lmg6CisgICAgICAgICogZG9tL1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6Y3Jl
YXRlUmVuZGVyZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnNG
b3JOb2RlKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZU1vdXNlRXZlbnRUYXJnZXROb2RlKToKKyAgICAgICAg
KiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKwogMjAx
MC0wOS0xNyAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDFkOTFlZDdjNjQwMDQ1NDdiODNlOGFlZmE3MGY2NzNhZTRlMjc1YTEu
LmQxNGNhYjhjMWZlZTY0ZjI1ZWIxMTEyODkwYmY5NWFiZjIzYWJiMzggMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MzEsNiArODMxLDggQEAKIAkJNDEx
MDQ2NDEwRkEyMjJBNjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTA0NjNGMEZBMjIyQTYwMEJB
NDM2QSAvKiBTY3JpcHRFdmVudExpc3RlbmVyLmggKi87IH07CiAJCTQxMTA0NjQyMEZBMjIyQTYw
MEJBNDM2QSAvKiBTY3JpcHRFdmVudExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTA0NjQwMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3Jp
cHRFdmVudExpc3RlbmVyLmNwcCAqLzsgfTsKIAkJNDEyN0Q1MzcwRjhBQUIxRDAwRTQyNEY1IC8q
IFNjcmlwdFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxMjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0ZS5jcHAgKi87IH07
CisJCTQxMzhEMzM1MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzhEMzMzMTI0NDA1NDgwMDMy
M0QzMyAvKiBFdmVudENvbnRleHQuaCAqLzsgfTsKKwkJNDEzOEQzMzYxMjQ0MDU0ODAwMzIzRDMz
IC8qIEV2ZW50Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTM4RDMzNDEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmNwcCAq
LzsgfTsKIAkJNDE2MkE0NTAxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRl
eHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2
MkE0NEQxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwICovOyB9
OwogCQk0MTYyQTQ1MTEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MkE0NEUx
MDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuaCAqLzsgfTsKIAkJNDE2
MkE0NTQxMDExNDVFMzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ1
MzEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCAq
LzsgfTsKQEAgLTY3MTYsNiArNjcxOCw4IEBACiAJCTQxMTA0NjNGMEZBMjIyQTYwMEJBNDM2QSAv
KiBTY3JpcHRFdmVudExpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNjcmlwdEV2ZW50TGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEx
MDQ2NDAwRkEyMjJBNjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50TGlzdGVuZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBT
Y3JpcHRTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3Jp
cHRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMzhEMzMzMTI0NDA1
NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRXZlbnRDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMzhE
MzM0MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRXZlbnRDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE2MkE0NEQxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNv
bnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGVkaWNhdGVk
V29ya2VyQ29udGV4dC5jcHA7IHBhdGggPSB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTYyQTQ0RTEwMTE0NUFFMDBERkYz
RUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmg7IHBhdGggPSB3b3JrZXJzL0RlZGljYXRl
ZFdvcmtlckNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2MkE0NEYx
MDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgbmFtZSA9IERlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsOyBwYXRoID0gd29ya2Vycy9E
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE3NTk1LDYgKzE3NTk5LDggQEAKIAkJCQk4NTAzMUIyQjBBNDRFRkM3MDBGOTkyRTAgLyogRXZl
bnQuY3BwICovLAogCQkJCTg1MDMxQjJDMEE0NEVGQzcwMEY5OTJFMCAvKiBFdmVudC5oICovLAog
CQkJCTE0RTgzNkQyMDlGODUxMjAwMEI4NUFFNCAvKiBFdmVudC5pZGwgKi8sCisJCQkJNDEzOEQz
MzQxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5jcHAgKi8sCisJCQkJNDEzOEQzMzMx
MjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5oICovLAogCQkJCUJDNjBEOTA5MEQyQTE3
Q0UwMEI5OTE4RiAvKiBFdmVudEV4Y2VwdGlvbi5oICovLAogCQkJCUJDNjBEOTBBMEQyQTE3Q0Uw
MEI5OTE4RiAvKiBFdmVudEV4Y2VwdGlvbi5pZGwgKi8sCiAJCQkJOTM1RkJDNDQwOUJBMDBCOTAw
RTIzMEIxIC8qIEV2ZW50TGlzdGVuZXIuaCAqLywKQEAgLTE4ODU4LDYgKzE4ODY0LDcgQEAKIAkJ
CQlBOEVBN0VDMDBBMTk0NUQwMDBBOEVGNUYgLyogRW50aXR5UmVmZXJlbmNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyRUNGN0FFMjEwMTYyQjU4MDA0MjdERTcgLyogRXJyb3JFdmVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODUwMzFCNDIwQTQ0RUZDNzAwRjk5MkUwIC8qIEV2ZW50LmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0MTM4RDMzNTEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzYwRDkwQzBEMkExN0NFMDBCOTkxOEYgLyogRXZlbnRFeGNl
cHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzA5QTUzMEIwNjREQjMwMDVBQkQ0RCAvKiBF
dmVudEhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUZCQzQ1MDlCQTAwQjkwMEUyMzBC
MSAvKiBFdmVudExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTIxMzk4LDYgKzIxNDA1LDcg
QEAKIAkJCQlBOEVBN0VDMTBBMTk0NUQwMDBBOEVGNUYgLyogRW50aXR5UmVmZXJlbmNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTJFQ0Y3QUUxMTAxNjJCNTgwMDQyN0RFNyAvKiBFcnJvckV2ZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMxQjQxMEE0NEVGQzcwMEY5OTJFMCAvKiBFdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTM4RDMzNjEyNDQwNTQ4MDAzMjNEMzMgLyogRXZl
bnRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzQzA5QTgxMEIwNjRGMDAwMDVBQkQ0
RCAvKiBFdmVudEhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNDMDlBN0YwQjA2NEVF
RjAwNUFCRDREIC8qIEV2ZW50SGFuZGxlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDQTE5
RTA1MERDMjU1OTUwMDY1QTk5NCAvKiBFdmVudExvb3BNYWMubW0gaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAKaW5kZXggMmRkNTBiYjdjNGZlMGI1YjkxYmE1MTJjYjY4Y2Q2Y2M1N2Nl
NDU3OC4uYTkwOWM0YjQyNTRkOGMwYzgxNjgxNDNhYzU0NGIwZjNjMGEyODY2ZCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAKQEAgLTk5NSw3ICs5OTUsOCBAQCBzdGF0aWMgdm9pZCBub3RpZnlDaGlsZElu
c2VydGVkKE5vZGUqIGNoaWxkKQogICAgIFJlZlB0cjxOb2RlPiBjID0gY2hpbGQ7CiAgICAgUmVm
UHRyPERvY3VtZW50PiBkb2N1bWVudCA9IGNoaWxkLT5kb2N1bWVudCgpOwogCi0gICAgaWYgKGMt
PnBhcmVudE5vZGUoKSAmJiBjLT5wYXJlbnROb2RlKCktPmluRG9jdW1lbnQoKSkKKyAgICBOb2Rl
KiBwYXJlbnRPckhvc3ROb2RlID0gYy0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgIGlmIChwYXJl
bnRPckhvc3ROb2RlICYmIHBhcmVudE9ySG9zdE5vZGUtPmluRG9jdW1lbnQoKSkKICAgICAgICAg
Yy0+aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICBlbHNlCiAgICAgICAgIGMtPmluc2VydGVk
SW50b1RyZWUodHJ1ZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3Bw
IGIvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NWU0ZmRlZWY3MzU2
ODYyZDM0ODcyMzZjNzliZDA3ZmFiZDk5NjdiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9k
b20vRXZlbnRDb250ZXh0LmNwcApAQCAtMCwwICsxLDEzMCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV2ZW50Q29udGV4dC5oIgorCisjaW5jbHVkZSAi
Q29udGFpbmVyTm9kZS5oIgorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkV2ZW50
LmgiCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR0VsZW1lbnRJbnN0YW5jZS5oIgor
I2luY2x1ZGUgIlNWR1VzZUVsZW1lbnQuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0V2ZW50Q29udGV4dDo6RXZlbnRDb250ZXh0KENvbnRhaW5lck5vZGUqIGFuY2VzdG9yLCBF
dmVudFRhcmdldCogdGFyZ2V0KQorICAgIDogbV9hbmNlc3RvcihhbmNlc3RvcikKKyAgICAsIG1f
dGFyZ2V0KHRhcmdldCkKK3sKK30KKworQ29udGFpbmVyTm9kZSogRXZlbnRDb250ZXh0OjphbmNl
c3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYW5jZXN0b3IuZ2V0KCk7Cit9CisKK0V2ZW50
VGFyZ2V0KiBFdmVudENvbnRleHQ6OnRhcmdldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdGFy
Z2V0LmdldCgpOworfQorCitzdGF0aWMgaW5saW5lIEV2ZW50VGFyZ2V0KiBldmVudFRhcmdldFJl
c3BlY3RpbmdTVkdUYXJnZXRSdWxlcyhOb2RlKiByZWZlcmVuY2VOb2RlKQoreworICAgIEFTU0VS
VChyZWZlcmVuY2VOb2RlKTsKKworI2lmIEVOQUJMRShTVkcpCisgICAgaWYgKCFyZWZlcmVuY2VO
b2RlLT5pc1NWR0VsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHJlZmVyZW5jZU5vZGU7CisKKyAg
ICAvLyBTcGVjOiBUaGUgZXZlbnQgaGFuZGxpbmcgZm9yIHRoZSBub24tZXhwb3NlZCB0cmVlIHdv
cmtzIGFzIGlmIHRoZSByZWZlcmVuY2VkIGVsZW1lbnQgaGFkIGJlZW4gdGV4dHVhbGx5IGluY2x1
ZGVkCisgICAgLy8gYXMgYSBkZWVwbHkgY2xvbmVkIGNoaWxkIG9mIHRoZSAndXNlJyBlbGVtZW50
LCBleGNlcHQgdGhhdCBldmVudHMgYXJlIGRpc3BhdGNoZWQgdG8gdGhlIFNWR0VsZW1lbnRJbnN0
YW5jZSBvYmplY3RzCisgICAgZm9yIChOb2RlKiBuID0gcmVmZXJlbmNlTm9kZTsgbjsgbiA9IG4t
PnBhcmVudE5vZGUoKSkgeworICAgICAgICBpZiAoIW4tPmlzU2hhZG93Tm9kZSgpIHx8ICFuLT5p
c1NWR0VsZW1lbnQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIENvbnRhaW5l
ck5vZGUqIHNoYWRvd1RyZWVQYXJlbnRFbGVtZW50ID0gbi0+c2hhZG93UGFyZW50Tm9kZSgpOwor
ICAgICAgICBBU1NFUlQoc2hhZG93VHJlZVBhcmVudEVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OnVzZVRhZykpOworCisgICAgICAgIGlmIChTVkdFbGVtZW50SW5zdGFuY2UqIGluc3RhbmNl
ID0gc3RhdGljX2Nhc3Q8U1ZHVXNlRWxlbWVudCo+KHNoYWRvd1RyZWVQYXJlbnRFbGVtZW50KS0+
aW5zdGFuY2VGb3JTaGFkb3dUcmVlRWxlbWVudChyZWZlcmVuY2VOb2RlKSkKKyAgICAgICAgICAg
IHJldHVybiBpbnN0YW5jZTsKKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiByZWZlcmVuY2VO
b2RlOworfQorCit2b2lkIEV2ZW50Q29udGV4dDo6aGFuZGxlTG9jYWxFdmVudHMoRXZlbnQqIGV2
ZW50KSBjb25zdAoreworICAgIGV2ZW50LT5zZXRUYXJnZXQodGFyZ2V0KCkpOworICAgIGV2ZW50
LT5zZXRDdXJyZW50VGFyZ2V0KGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1NWR1RhcmdldFJ1bGVzKGFu
Y2VzdG9yKCkpKTsKKyAgICBtX2FuY2VzdG9yLT5oYW5kbGVMb2NhbEV2ZW50cyhldmVudCk7Cit9
CisKK1dpbmRvd0V2ZW50Q29udGV4dDo6V2luZG93RXZlbnRDb250ZXh0KEV2ZW50KiBldmVudCwg
Tm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFuY2VzdG9ycykKK3sKKyAg
ICAvLyBXZSBkb24ndCBkaXNwYXRjaCBsb2FkIGV2ZW50cyB0byB0aGUgd2luZG93LiBUaGF0IHF1
aXJrIHdhcyBvcmlnaW5hbGx5CisgICAgLy8gYWRkZWQgYmVjYXVzZSBNb3ppbGxhIGRvZXNuJ3Qg
cHJvcGFnYXRlIGxvYWQgZXZlbnRzIHRvIHRoZSB3aW5kb3cgb2JqZWN0LgorICAgIGlmIChldmVu
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEV2ZW50VGFyZ2V0KiB0YXJnZXRGb3JXaW5kb3dFdmVudHMgPSBub2RlOworICAgIE5vZGUq
IHRvcExldmVsQ29udGFpbmVyID0gbm9kZTsKKyAgICBpZiAoIWFuY2VzdG9ycy5pc0VtcHR5KCkp
IHsKKyAgICAgICAgdG9wTGV2ZWxDb250YWluZXIgPSBhbmNlc3RvcnMubGFzdCgpLmFuY2VzdG9y
KCk7CisgICAgICAgIHRhcmdldEZvcldpbmRvd0V2ZW50cyA9IGFuY2VzdG9ycy5sYXN0KCkudGFy
Z2V0KCk7CisgICAgfQorICAgIGlmICghdG9wTGV2ZWxDb250YWluZXItPmlzRG9jdW1lbnROb2Rl
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fd2luZG93ID0gc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPih0b3BMZXZlbENvbnRhaW5lciktPmRvbVdpbmRvdygpOworICAgIG1fdGFyZ2V0ID0gdGFy
Z2V0Rm9yV2luZG93RXZlbnRzOworfQorCitET01XaW5kb3cqIFdpbmRvd0V2ZW50Q29udGV4dDo6
d2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93aW5kb3cuZ2V0KCk7Cit9CisKK0V2ZW50
VGFyZ2V0KiBXaW5kb3dFdmVudENvbnRleHQ6OnRhcmdldCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fdGFyZ2V0LmdldCgpOworfQorCitib29sIFdpbmRvd0V2ZW50Q29udGV4dDo6aGFuZGxlTG9j
YWxFdmVudHMoRXZlbnQqIGV2ZW50KQoreworICAgIGlmICghbV93aW5kb3cpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGV2ZW50LT5zZXRUYXJnZXQodGFyZ2V0KCkpOworICAgIGV2ZW50
LT5zZXRDdXJyZW50VGFyZ2V0KHdpbmRvdygpKTsKKyAgICBtX3dpbmRvdy0+ZmlyZUV2ZW50TGlz
dGVuZXJzKGV2ZW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9kb20vRXZlbnRDb250ZXh0LmggYi9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jNjU5NGY2ZDdjMGRhNTk5ZjBlMjVkNGY0NzI4Yzc2ZjcyYTIwZmFkCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmgKQEAgLTAsMCArMSw3MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqCisgKi8KKworI2lmbmRlZiBFdmVudENvbnRleHRfaAorI2RlZmluZSBFdmVudENvbnRl
eHRfaAorCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBDb250YWluZXJOb2RlOworY2xhc3MgRE9NV2luZG93OworY2xhc3MgRXZlbnRU
YXJnZXQ7CitjbGFzcyBFdmVudDsKK2NsYXNzIE5vZGU7CisKK2NsYXNzIEV2ZW50Q29udGV4dCB7
CitwdWJsaWM6CisgICAgRXZlbnRDb250ZXh0KENvbnRhaW5lck5vZGUqIGFuY2VzdG9yLCBFdmVu
dFRhcmdldCogdGFyZ2V0KTsKKworICAgIENvbnRhaW5lck5vZGUqIGFuY2VzdG9yKCkgY29uc3Q7
CisgICAgRXZlbnRUYXJnZXQqIHRhcmdldCgpIGNvbnN0OworICAgIHZvaWQgaGFuZGxlTG9jYWxF
dmVudHMoRXZlbnQqKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8Q29udGFpbmVyTm9k
ZT4gbV9hbmNlc3RvcjsKKyAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IG1fdGFyZ2V0OworfTsKKwor
Y2xhc3MgV2luZG93RXZlbnRDb250ZXh0IHsKK3B1YmxpYzoKKyAgICBXaW5kb3dFdmVudENvbnRl
eHQoRXZlbnQqLCBOb2RlKiwgY29uc3QgVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFuY2VzdG9ycyk7
CisKKyAgICBET01XaW5kb3cqIHdpbmRvdygpIGNvbnN0OworICAgIEV2ZW50VGFyZ2V0KiB0YXJn
ZXQoKSBjb25zdDsKKyAgICBib29sIGhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KiBldmVudCk7CisK
K3ByaXZhdGU6CisgICAgUmVmUHRyPERPTVdpbmRvdz4gbV93aW5kb3c7CisgICAgUmVmUHRyPEV2
ZW50VGFyZ2V0PiBtX3RhcmdldDsKK307CisKK30KKworI2VuZGlmIC8vIEV2ZW50Q29udGV4dF9o
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CmluZGV4IDhmZjgyMmE0YzQxNDY0YTFjMzcwNDA4MjU1OTM4YTlhNTBmYWUzMjIuLjYyYjk4NzNj
OGMwMjJjOTg1OWY5OGExOTkxNjUyNGYxZTAyN2U4ZjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9t
L05vZGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAj
aW5jbHVkZSAiRHluYW1pY05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1
ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRDb250ZXh0LmgiCiAjaW5jbHVkZSAiRXZlbnRF
eGNlcHRpb24uaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJFdmVudExp
c3RlbmVyLmgiCkBAIC0xMTUsNiArMTE2LDMxIEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiAKIHN0YXRpYyBIYXNoU2V0PE5vZGUqPiogZ05vZGVzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlj
a3MgPSAwOwogCitzdGF0aWMgaW5saW5lIEV2ZW50VGFyZ2V0KiBldmVudFRhcmdldFJlc3BlY3Rp
bmdTVkdUYXJnZXRSdWxlcyhOb2RlKiByZWZlcmVuY2VOb2RlKQoreworICAgIEFTU0VSVChyZWZl
cmVuY2VOb2RlKTsKKworI2lmIEVOQUJMRShTVkcpCisgICAgaWYgKCFyZWZlcmVuY2VOb2RlLT5p
c1NWR0VsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHJlZmVyZW5jZU5vZGU7CisKKyAgICAvLyBT
cGVjOiBUaGUgZXZlbnQgaGFuZGxpbmcgZm9yIHRoZSBub24tZXhwb3NlZCB0cmVlIHdvcmtzIGFz
IGlmIHRoZSByZWZlcmVuY2VkIGVsZW1lbnQgaGFkIGJlZW4gdGV4dHVhbGx5IGluY2x1ZGVkCisg
ICAgLy8gYXMgYSBkZWVwbHkgY2xvbmVkIGNoaWxkIG9mIHRoZSAndXNlJyBlbGVtZW50LCBleGNl
cHQgdGhhdCBldmVudHMgYXJlIGRpc3BhdGNoZWQgdG8gdGhlIFNWR0VsZW1lbnRJbnN0YW5jZSBv
YmplY3RzCisgICAgZm9yIChOb2RlKiBuID0gcmVmZXJlbmNlTm9kZTsgbjsgbiA9IG4tPnBhcmVu
dE5vZGUoKSkgeworICAgICAgICBpZiAoIW4tPmlzU2hhZG93Tm9kZSgpIHx8ICFuLT5pc1NWR0Vs
ZW1lbnQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIENvbnRhaW5lck5vZGUq
IHNoYWRvd1RyZWVQYXJlbnRFbGVtZW50ID0gbi0+c2hhZG93UGFyZW50Tm9kZSgpOworICAgICAg
ICBBU1NFUlQoc2hhZG93VHJlZVBhcmVudEVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnVz
ZVRhZykpOworCisgICAgICAgIGlmIChTVkdFbGVtZW50SW5zdGFuY2UqIGluc3RhbmNlID0gc3Rh
dGljX2Nhc3Q8U1ZHVXNlRWxlbWVudCo+KHNoYWRvd1RyZWVQYXJlbnRFbGVtZW50KS0+aW5zdGFu
Y2VGb3JTaGFkb3dUcmVlRWxlbWVudChyZWZlcmVuY2VOb2RlKSkKKyAgICAgICAgICAgIHJldHVy
biBpbnN0YW5jZTsKKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiByZWZlcmVuY2VOb2RlOwor
fQorCiBib29sIE5vZGU6OmlzU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwgY29uc3Qg
U3RyaW5nJiB2ZXJzaW9uKQogewogICAgIHJldHVybiBET01JbXBsZW1lbnRhdGlvbjo6aGFzRmVh
dHVyZShmZWF0dXJlLCB2ZXJzaW9uKTsKQEAgLTcyMCw5ICs3NDYsOSBAQCBpbmxpbmUgdm9pZCBO
b2RlOjpzZXRTdHlsZUNoYW5nZShTdHlsZUNoYW5nZVR5cGUgY2hhbmdlVHlwZSkKIAogaW5saW5l
IHZvaWQgTm9kZTo6bWFya0FuY2VzdG9yc1dpdGhDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKQogewot
ICAgIGZvciAoTm9kZSogcCA9IHBhcmVudE5vZGUoKTsgcCAmJiAhcC0+Y2hpbGROZWVkc1N0eWxl
UmVjYWxjKCk7IHAgPSBwLT5wYXJlbnROb2RlKCkpCisgICAgZm9yIChOb2RlKiBwID0gcGFyZW50
T3JIb3N0Tm9kZSgpOyBwICYmICFwLT5jaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsgcCA9IHAtPnBh
cmVudE9ySG9zdE5vZGUoKSkKICAgICAgICAgcC0+c2V0Q2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7
Ci0gICAgCisKICAgICBpZiAoZG9jdW1lbnQoKS0+Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCkpCiAg
ICAgICAgIGRvY3VtZW50KCktPnNjaGVkdWxlU3R5bGVSZWNhbGMoKTsKIH0KQEAgLTEzMTksNyAr
MTM0NSw3IEBAIHZvaWQgTm9kZTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgpCiAKICAgICBBU1NF
UlQoIXJlbmRlcmVyKCkpOwogICAgIAotICAgIE5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGUoKTsg
ICAgCisgICAgTm9kZSogcGFyZW50ID0gcGFyZW50T3JIb3N0Tm9kZSgpOwogICAgIEFTU0VSVChw
YXJlbnQpOwogICAgIAogICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIgPSBwYXJlbnQt
PnJlbmRlcmVyKCk7CkBAIC0xNDQyLDYgKzE0NjgsMTMgQEAgYm9vbCBOb2RlOjppc0luU2hhZG93
VHJlZSgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitDb250YWluZXJOb2RlKiBOb2RlOjpwYXJl
bnRPckhvc3ROb2RlKCkKK3sKKyAgICBpZiAoQ29udGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50
Tm9kZSgpKQorICAgICAgICByZXR1cm4gcGFyZW50OworICAgIHJldHVybiBzaGFkb3dQYXJlbnRO
b2RlKCk7Cit9CisKIGJvb2wgTm9kZTo6aXNCbG9ja0Zsb3coKSBjb25zdAogewogICAgIHJldHVy
biByZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzQmxvY2tGbG93KCk7CkBAIC0yMjY1LDE0ICsy
Mjk4LDkgQEAgdm9pZCBOb2RlOjpnZXRTdWJyZXNvdXJjZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4m
IHVybHMpIGNvbnN0CiAgICAgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogfQog
Ci1Db250YWluZXJOb2RlKiBOb2RlOjpldmVudFBhcmVudE5vZGUoKQotewotICAgIHJldHVybiBw
YXJlbnROb2RlKCk7Ci19Ci0KIE5vZGUqIE5vZGU6OmVuY2xvc2luZ0xpbmtFdmVudFBhcmVudE9y
U2VsZigpCiB7Ci0gICAgZm9yIChOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUt
PmV2ZW50UGFyZW50Tm9kZSgpKSB7CisgICAgZm9yIChOb2RlKiBub2RlID0gdGhpczsgbm9kZTsg
bm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgewogICAgICAgICAvLyBGb3IgaW1hZ2Vt
YXBzLCB0aGUgZW5jbG9zaW5nIGxpbmsgbm9kZSBpcyB0aGUgYXNzb2NpYXRlZCBhcmVhIGVsZW1l
bnQgbm90IHRoZSBpbWFnZSBpdHNlbGYuCiAgICAgICAgIC8vIFNvIHdlIGRvbid0IGxldCBpbWFn
ZXMgYmUgdGhlIGVuY2xvc2luZ0xpbmtOb2RlLCBldmVuIHRob3VnaCBpc0xpbmsgc29tZXRpbWVz
IHJldHVybnMgdHJ1ZQogICAgICAgICAvLyBmb3IgdGhlbS4KQEAgLTI1MTAsNTQgKzI1MzgsMjEg
QEAgdm9pZCBOb2RlOjpoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCogZXZlbnQpCiAgICAgZmlyZUV2
ZW50TGlzdGVuZXJzKGV2ZW50KTsKIH0KIAotI2lmIEVOQUJMRShTVkcpCi1zdGF0aWMgaW5saW5l
IFNWR0VsZW1lbnRJbnN0YW5jZSogZXZlbnRUYXJnZXRBc1NWR0VsZW1lbnRJbnN0YW5jZShOb2Rl
KiByZWZlcmVuY2VOb2RlKQotewotICAgIEFTU0VSVChyZWZlcmVuY2VOb2RlKTsKLSAgICBpZiAo
IXJlZmVyZW5jZU5vZGUtPmlzU1ZHRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IC8vIFNwZWM6IFRoZSBldmVudCBoYW5kbGluZyBmb3IgdGhlIG5vbi1leHBvc2VkIHRyZWUgd29y
a3MgYXMgaWYgdGhlIHJlZmVyZW5jZWQgZWxlbWVudCBoYWQgYmVlbiB0ZXh0dWFsbHkgaW5jbHVk
ZWQKLSAgICAvLyBhcyBhIGRlZXBseSBjbG9uZWQgY2hpbGQgb2YgdGhlICd1c2UnIGVsZW1lbnQs
IGV4Y2VwdCB0aGF0IGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCB0byB0aGUgU1ZHRWxlbWVudEluc3Rh
bmNlIG9iamVjdHMKLSAgICBmb3IgKE5vZGUqIG4gPSByZWZlcmVuY2VOb2RlOyBuOyBuID0gbi0+
cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgIGlmICghbi0+aXNTaGFkb3dOb2RlKCkgfHwgIW4tPmlz
U1ZHRWxlbWVudCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgQ29udGFpbmVy
Tm9kZSogc2hhZG93VHJlZVBhcmVudEVsZW1lbnQgPSBuLT5zaGFkb3dQYXJlbnROb2RlKCk7Ci0g
ICAgICAgIEFTU0VSVChzaGFkb3dUcmVlUGFyZW50RWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1l
czo6dXNlVGFnKSk7Ci0KLSAgICAgICAgaWYgKFNWR0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2Ug
PSBzdGF0aWNfY2FzdDxTVkdVc2VFbGVtZW50Kj4oc2hhZG93VHJlZVBhcmVudEVsZW1lbnQpLT5p
bnN0YW5jZUZvclNoYWRvd1RyZWVFbGVtZW50KHJlZmVyZW5jZU5vZGUpKQotICAgICAgICAgICAg
cmV0dXJuIGluc3RhbmNlOwotICAgIH0KLQotICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0KLXN0
YXRpYyBpbmxpbmUgRXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1NWR1RhcmdldFJ1
bGVzKE5vZGUqIHJlZmVyZW5jZU5vZGUpCi17Ci0gICAgQVNTRVJUKHJlZmVyZW5jZU5vZGUpOwot
Ci0jaWYgRU5BQkxFKFNWRykKLSAgICBpZiAoU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZSA9
IGV2ZW50VGFyZ2V0QXNTVkdFbGVtZW50SW5zdGFuY2UocmVmZXJlbmNlTm9kZSkpIHsKLSAgICAg
ICAgQVNTRVJUKGluc3RhbmNlLT5zaGFkb3dUcmVlRWxlbWVudCgpID09IHJlZmVyZW5jZU5vZGUp
OwotICAgICAgICByZXR1cm4gaW5zdGFuY2U7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4g
cmVmZXJlbmNlTm9kZTsKLX0KLQotdm9pZCBOb2RlOjpldmVudEFuY2VzdG9ycyhWZWN0b3I8UmVm
UHRyPENvbnRhaW5lck5vZGU+ID4gJmFuY2VzdG9ycykKK3ZvaWQgTm9kZTo6ZXZlbnRBbmNlc3Rv
cnMoVmVjdG9yPEV2ZW50Q29udGV4dD4gJmFuY2VzdG9ycywgRXZlbnRUYXJnZXQqIG9yaWdpbmFs
VGFyZ2V0KQogewogICAgIGlmIChpbkRvY3VtZW50KCkpIHsKLSAgICAgICAgZm9yIChDb250YWlu
ZXJOb2RlKiBhbmNlc3RvciA9IGV2ZW50UGFyZW50Tm9kZSgpOyBhbmNlc3RvcjsgYW5jZXN0b3Ig
PSBhbmNlc3Rvci0+ZXZlbnRQYXJlbnROb2RlKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IEludGVn
cmF0ZSBiZXR0ZXIgd2l0aCBTVkcgc2hhZG93IHN0dWZmLCB3aGljaCBzZWVtcyB2ZXJ5IHNpbWls
YXIuCisgICAgICAgIEV2ZW50VGFyZ2V0KiB0YXJnZXQgPSBpc1NoYWRvd05vZGUoKSA/IHNoYWRv
d1BhcmVudE5vZGUoKSA6IG9yaWdpbmFsVGFyZ2V0OworICAgICAgICBmb3IgKENvbnRhaW5lck5v
ZGUqIGFuY2VzdG9yID0gcGFyZW50T3JIb3N0Tm9kZSgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBh
bmNlc3Rvci0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7CiAjaWYgRU5BQkxFKFNWRykKICAgICAgICAg
ICAgIC8vIFNraXAgPHVzZT4gc2hhZG93IHRyZWUgZWxlbWVudHMuCiAgICAgICAgICAgICBpZiAo
YW5jZXN0b3ItPmlzU1ZHRWxlbWVudCgpICYmIGFuY2VzdG9yLT5pc1NoYWRvd05vZGUoKSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICNlbmRpZgotICAgICAgICAgICAgYW5jZXN0b3JzLmFw
cGVuZChhbmNlc3Rvcik7CisgICAgICAgICAgICBhbmNlc3RvcnMuYXBwZW5kKEV2ZW50Q29udGV4
dChhbmNlc3RvciwgdGFyZ2V0KSk7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIGJp
dCB1Z2x5LiBXZSBzaG91bGQgZWxpbWluYXRlIHRoZXNlIG11bHRpcGxlIGNhbGxzIHRvIHNoYWRv
d1BhcmVudE5vZGUoKQorICAgICAgICAgICAgaWYgKGFuY2VzdG9yLT5pc1NoYWRvd05vZGUoKSkK
KyAgICAgICAgICAgICAgICB0YXJnZXQgPSBhbmNlc3Rvci0+c2hhZG93UGFyZW50Tm9kZSgpOwog
ICAgICAgICB9CiAgICAgfQogfQpAQCAtMjU3Myw3ICsyNTY4LDcgQEAgYm9vbCBOb2RlOjpkaXNw
YXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50KQogICAgIHJldHVybiBkaXNwYXRj
aEdlbmVyaWNFdmVudChldmVudC5yZWxlYXNlKCkpOwogfQogCi1zdGF0aWMgYm9vbCBldmVudEhh
c0xpc3RlbmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB3aW5k
b3csIE5vZGUqIG5vZGUsIFZlY3RvcjxSZWZQdHI8Q29udGFpbmVyTm9kZT4gPiYgYW5jZXN0b3Jz
KQorc3RhdGljIGJvb2wgZXZlbnRIYXNMaXN0ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8RXZlbnRD
b250ZXh0PiYgYW5jZXN0b3JzKQogewogICAgIGlmICh3aW5kb3cgJiYgd2luZG93LT5oYXNFdmVu
dExpc3RlbmVycyhldmVudFR5cGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI1ODIsNyAr
MjU3Nyw3IEBAIHN0YXRpYyBib29sIGV2ZW50SGFzTGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqIHdpbmRvdywKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFuY2VzdG9ycy5zaXplKCk7IGkrKykgewotICAg
ICAgICBDb250YWluZXJOb2RlKiBhbmNlc3RvciA9IGFuY2VzdG9yc1tpXS5nZXQoKTsKKyAgICAg
ICAgQ29udGFpbmVyTm9kZSogYW5jZXN0b3IgPSBhbmNlc3RvcnNbaV0uYW5jZXN0b3IoKTsKICAg
ICAgICAgaWYgKGFuY2VzdG9yLT5oYXNFdmVudExpc3RlbmVycyhldmVudFR5cGUpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjYwMiwyMyArMjU5NywxNiBAQCBib29sIE5v
ZGU6OmRpc3BhdGNoR2VuZXJpY0V2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50KQogICAg
IC8vIElmIHRoZSBub2RlIGlzIG5vdCBpbiBhIGRvY3VtZW50IGp1c3Qgc2VuZCB0aGUgZXZlbnQg
dG8gaXQuCiAgICAgLy8gQmUgc3VyZSB0byByZWYgYWxsIG9mIG5vZGVzIHNpbmNlIGV2ZW50IGhh
bmRsZXJzIGNvdWxkIHJlc3VsdCBpbiB0aGUgbGFzdCByZWZlcmVuY2UgZ29pbmcgYXdheS4KICAg
ICBSZWZQdHI8Tm9kZT4gdGhpc05vZGUodGhpcyk7Ci0gICAgVmVjdG9yPFJlZlB0cjxDb250YWlu
ZXJOb2RlPiA+IGFuY2VzdG9yczsKLSAgICBldmVudEFuY2VzdG9ycyhhbmNlc3RvcnMpOworICAg
IFJlZlB0cjxFdmVudFRhcmdldD4gb3JpZ2luYWxUYXJnZXQoZXZlbnQtPnRhcmdldCgpKTsKKyAg
ICBWZWN0b3I8RXZlbnRDb250ZXh0PiBhbmNlc3RvcnM7CisgICAgZXZlbnRBbmNlc3RvcnMoYW5j
ZXN0b3JzLCBvcmlnaW5hbFRhcmdldC5nZXQoKSk7CiAKLSAgICAvLyBTZXQgdXAgYSBwb2ludGVy
IHRvIGluZGljYXRlIHdoZXRoZXIgLyB3aGVyZSB0byBkaXNwYXRjaCB3aW5kb3cgZXZlbnRzLgot
ICAgIC8vIFdlIGRvbid0IGRpc3BhdGNoIGxvYWQgZXZlbnRzIHRvIHRoZSB3aW5kb3cuIFRoYXQg
cXVpcmsgd2FzIG9yaWdpbmFsbHkKLSAgICAvLyBhZGRlZCBiZWNhdXNlIE1vemlsbGEgZG9lc24n
dCBwcm9wYWdhdGUgbG9hZCBldmVudHMgdG8gdGhlIHdpbmRvdyBvYmplY3QuCi0gICAgRE9NV2lu
ZG93KiB0YXJnZXRGb3JXaW5kb3dFdmVudHMgPSAwOwotICAgIGlmIChldmVudC0+dHlwZSgpICE9
IGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpIHsKLSAgICAgICAgTm9kZSogdG9wTGV2ZWxDb250YWlu
ZXIgPSBhbmNlc3RvcnMuaXNFbXB0eSgpID8gdGhpcyA6IGFuY2VzdG9ycy5sYXN0KCkuZ2V0KCk7
Ci0gICAgICAgIGlmICh0b3BMZXZlbENvbnRhaW5lci0+aXNEb2N1bWVudE5vZGUoKSkKLSAgICAg
ICAgICAgIHRhcmdldEZvcldpbmRvd0V2ZW50cyA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4odG9w
TGV2ZWxDb250YWluZXIpLT5kb21XaW5kb3coKTsKLSAgICB9CisgICAgV2luZG93RXZlbnRDb250
ZXh0IHdpbmRvdyhldmVudC5nZXQoKSwgdGhpcywgYW5jZXN0b3JzKTsKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAgICAgUGFnZSogaW5zcGVjdGVkUGFnZSA9IEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6Omluc3RhbmNlQ291bnQoKSA/IGRvY3VtZW50KCktPnBhZ2UoKSA6IDA7CiAgICAgaWYgKGlu
c3BlY3RlZFBhZ2UpIHsKLSAgICAgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVs
aW5lQWdlbnQgPSBldmVudEhhc0xpc3RlbmVycyhldmVudC0+dHlwZSgpLCB0YXJnZXRGb3JXaW5k
b3dFdmVudHMsIHRoaXMsIGFuY2VzdG9ycykgPyBpbnNwZWN0ZWRQYWdlLT5pbnNwZWN0b3JUaW1l
bGluZUFnZW50KCkgOiAwKQorICAgICAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGlt
ZWxpbmVBZ2VudCA9IGV2ZW50SGFzTGlzdGVuZXJzKGV2ZW50LT50eXBlKCksIHdpbmRvdy53aW5k
b3coKSwgdGhpcywgYW5jZXN0b3JzKSA/IGluc3BlY3RlZFBhZ2UtPmluc3BlY3RvclRpbWVsaW5l
QWdlbnQoKSA6IDApCiAgICAgICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRGlzcGF0Y2hFdmVu
dCgqZXZlbnQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpbnNwZWN0ZWRQYWdlID0gMDsK
QEAgLTI2MzMsMjIgKzI2MjEsMTcgQEAgYm9vbCBOb2RlOjpkaXNwYXRjaEdlbmVyaWNFdmVudChQ
YXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCkKICAgICAvLyBUcmlnZ2VyIGNhcHR1cmluZyBldmVu
dCBoYW5kbGVycywgc3RhcnRpbmcgYXQgdGhlIHRvcCBhbmQgd29ya2luZyBvdXIgd2F5IGRvd24u
CiAgICAgZXZlbnQtPnNldEV2ZW50UGhhc2UoRXZlbnQ6OkNBUFRVUklOR19QSEFTRSk7CiAKLSAg
ICBpZiAodGFyZ2V0Rm9yV2luZG93RXZlbnRzKSB7Ci0gICAgICAgIGV2ZW50LT5zZXRDdXJyZW50
VGFyZ2V0KHRhcmdldEZvcldpbmRvd0V2ZW50cyk7Ci0gICAgICAgIHRhcmdldEZvcldpbmRvd0V2
ZW50cy0+ZmlyZUV2ZW50TGlzdGVuZXJzKGV2ZW50LmdldCgpKTsKLSAgICAgICAgaWYgKGV2ZW50
LT5wcm9wYWdhdGlvblN0b3BwZWQoKSkKLSAgICAgICAgICAgIGdvdG8gZG9uZURpc3BhdGNoaW5n
OwotICAgIH0KKyAgICBpZiAod2luZG93LmhhbmRsZUxvY2FsRXZlbnRzKGV2ZW50LmdldCgpKSAm
JiBldmVudC0+cHJvcGFnYXRpb25TdG9wcGVkKCkpCisgICAgICAgIGdvdG8gZG9uZURpc3BhdGNo
aW5nOworCiAgICAgZm9yIChzaXplX3QgaSA9IGFuY2VzdG9ycy5zaXplKCk7IGk7IC0taSkgewot
ICAgICAgICBDb250YWluZXJOb2RlKiBhbmNlc3RvciA9IGFuY2VzdG9yc1tpIC0gMV0uZ2V0KCk7
Ci0gICAgICAgIGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1NW
R1RhcmdldFJ1bGVzKGFuY2VzdG9yKSk7Ci0gICAgICAgIGFuY2VzdG9yLT5oYW5kbGVMb2NhbEV2
ZW50cyhldmVudC5nZXQoKSk7CisgICAgICAgIGFuY2VzdG9yc1tpIC0gMV0uaGFuZGxlTG9jYWxF
dmVudHMoZXZlbnQuZ2V0KCkpOwogICAgICAgICBpZiAoZXZlbnQtPnByb3BhZ2F0aW9uU3RvcHBl
ZCgpKQogICAgICAgICAgICAgZ290byBkb25lRGlzcGF0Y2hpbmc7CiAgICAgfQogCiAgICAgZXZl
bnQtPnNldEV2ZW50UGhhc2UoRXZlbnQ6OkFUX1RBUkdFVCk7Ci0KKyAgICBldmVudC0+c2V0VGFy
Z2V0KG9yaWdpbmFsVGFyZ2V0LmdldCgpKTsKICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldChl
dmVudFRhcmdldFJlc3BlY3RpbmdTVkdUYXJnZXRSdWxlcyh0aGlzKSk7CiAgICAgaGFuZGxlTG9j
YWxFdmVudHMoZXZlbnQuZ2V0KCkpOwogICAgIGlmIChldmVudC0+cHJvcGFnYXRpb25TdG9wcGVk
KCkpCkBAIC0yNjYwLDIxICsyNjQzLDE2IEBAIGJvb2wgTm9kZTo6ZGlzcGF0Y2hHZW5lcmljRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiAKICAgICAgICAgc2l6ZV90IHNpemUgPSBh
bmNlc3RvcnMuc2l6ZSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgewotICAgICAgICAgICAgQ29udGFpbmVyTm9kZSogYW5jZXN0b3IgPSBhbmNlc3RvcnNbaV0u
Z2V0KCk7Ci0gICAgICAgICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldChldmVudFRhcmdldFJl
c3BlY3RpbmdTVkdUYXJnZXRSdWxlcyhhbmNlc3RvcikpOwotICAgICAgICAgICAgYW5jZXN0b3It
PmhhbmRsZUxvY2FsRXZlbnRzKGV2ZW50LmdldCgpKTsKLSAgICAgICAgICAgIGlmIChldmVudC0+
cHJvcGFnYXRpb25TdG9wcGVkKCkgfHwgZXZlbnQtPmNhbmNlbEJ1YmJsZSgpKQotICAgICAgICAg
ICAgICAgIGdvdG8gZG9uZURpc3BhdGNoaW5nOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0YXJn
ZXRGb3JXaW5kb3dFdmVudHMpIHsKLSAgICAgICAgICAgIGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0
KHRhcmdldEZvcldpbmRvd0V2ZW50cyk7Ci0gICAgICAgICAgICB0YXJnZXRGb3JXaW5kb3dFdmVu
dHMtPmZpcmVFdmVudExpc3RlbmVycyhldmVudC5nZXQoKSk7CisgICAgICAgICAgICBhbmNlc3Rv
cnNbaV0uaGFuZGxlTG9jYWxFdmVudHMoZXZlbnQuZ2V0KCkpOwogICAgICAgICAgICAgaWYgKGV2
ZW50LT5wcm9wYWdhdGlvblN0b3BwZWQoKSB8fCBldmVudC0+Y2FuY2VsQnViYmxlKCkpCiAgICAg
ICAgICAgICAgICAgZ290byBkb25lRGlzcGF0Y2hpbmc7CiAgICAgICAgIH0KKyAgICAgICAgaWYg
KHdpbmRvdy5oYW5kbGVMb2NhbEV2ZW50cyhldmVudC5nZXQoKSkgJiYgKGV2ZW50LT5wcm9wYWdh
dGlvblN0b3BwZWQoKSB8fCBldmVudC0+Y2FuY2VsQnViYmxlKCkpKQorICAgICAgICAgICAgZ290
byBkb25lRGlzcGF0Y2hpbmc7CiAgICAgfQogCiBkb25lRGlzcGF0Y2hpbmc6CisgICAgZXZlbnQt
PnNldFRhcmdldChvcmlnaW5hbFRhcmdldC5nZXQoKSk7CiAgICAgZXZlbnQtPnNldEN1cnJlbnRU
YXJnZXQoMCk7CiAgICAgZXZlbnQtPnNldEV2ZW50UGhhc2UoMCk7CiAKQEAgLTI2OTUsOCArMjY3
Myw3IEBAIGRvbmVEaXNwYXRjaGluZzoKICAgICAgICAgaWYgKGV2ZW50LT5idWJibGVzKCkpIHsK
ICAgICAgICAgICAgIHNpemVfdCBzaXplID0gYW5jZXN0b3JzLnNpemUoKTsKICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgQ29u
dGFpbmVyTm9kZSogYW5jZXN0b3IgPSBhbmNlc3RvcnNbaV0uZ2V0KCk7Ci0gICAgICAgICAgICAg
ICAgYW5jZXN0b3ItPmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQuZ2V0KCkpOworICAgICAgICAg
ICAgICAgIGFuY2VzdG9yc1tpXS5hbmNlc3RvcigpLT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50
LmdldCgpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIWV2ZW50LT5kZWZhdWx0UHJldmVudGVk
KCkpOwogICAgICAgICAgICAgICAgIGlmIChldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKICAgICAg
ICAgICAgICAgICAgICAgZ290byBkb25lV2l0aERlZmF1bHQ7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2RvbS9Ob2RlLmggYi9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggNTg3ZWZmZDBmZTgyMjc0NzY5
NTUwNjQ0ZTkyZGVmNWE4MzkyOTQwYS4uNWZjYjgyODk1NWE0NmFjMjViMmE0YThlYzY0YjY5ODkx
ZTlmZjVmOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1dlYkNvcmUvZG9t
L05vZGUuaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIER5bmFtaWNO
b2RlTGlzdDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBFdmVudDsKK2NsYXNzIEV2ZW50Q29udGV4
dDsKIGNsYXNzIEV2ZW50TGlzdGVuZXI7CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRnJhbWU7
CkBAIC0yMTIsMTUgKzIxMywxNCBAQCBwdWJsaWM6CiAgICAgTm9kZSogc2hhZG93QW5jZXN0b3JO
b2RlKCk7CiAgICAgTm9kZSogc2hhZG93VHJlZVJvb3ROb2RlKCk7CiAgICAgYm9vbCBpc0luU2hh
ZG93VHJlZSgpOwotCi0gICAgLy8gVGhlIG5vZGUncyBwYXJlbnQgZm9yIHRoZSBwdXJwb3NlIG9m
IGV2ZW50IGNhcHR1cmUgYW5kIGJ1YmJsaW5nLgotICAgIHZpcnR1YWwgQ29udGFpbmVyTm9kZSog
ZXZlbnRQYXJlbnROb2RlKCk7CisgICAgLy8gTm9kZSdzIHBhcmVudCBvciBzaGFkb3cgdHJlZSBo
b3N0LgorICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE9ySG9zdE5vZGUoKTsKIAogICAgIC8vIFJl
dHVybnMgdGhlIGVuY2xvc2luZyBldmVudCBwYXJlbnQgbm9kZSAob3Igc2VsZikgdGhhdCwgd2hl
biBjbGlja2VkLCB3b3VsZCB0cmlnZ2VyIGEgbmF2aWdhdGlvbi4KICAgICBOb2RlKiBlbmNsb3Np
bmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKTsKIAotICAgIC8vIE5vZGUgYW5jZXN0b3JzIHdoZW4g
Y29uY2VybmVkIGFib3V0IGV2ZW50IGZsb3cKLSAgICB2b2lkIGV2ZW50QW5jZXN0b3JzKFZlY3Rv
cjxSZWZQdHI8Q29udGFpbmVyTm9kZT4gPiAmYW5jZXN0b3JzKTsKKyAgICAvLyBOb2RlIGFuY2Vz
dG9ycyB3aGVuIGNvbmNlcm5lZCBhYm91dCBldmVudCBmbG93LgorICAgIHZvaWQgZXZlbnRBbmNl
c3RvcnMoVmVjdG9yPEV2ZW50Q29udGV4dD4gJmFuY2VzdG9ycywgRXZlbnRUYXJnZXQqKTsKIAog
ICAgIGJvb2wgaXNCbG9ja0Zsb3coKSBjb25zdDsKICAgICBib29sIGlzQmxvY2tGbG93T3JCbG9j
a1RhYmxlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9UZXh0LmNwcCBiL1dlYkNv
cmUvZG9tL1RleHQuY3BwCmluZGV4IDkyOGI5NzU5NmU1Njk5YjU3OWY5M2FhODUzZTViZTViZWIx
OGYwMzguLjY3ODRlOTFlMmM0YzdiZmQ0NzY4Y2M0ZDQxZjcwYmMyMDJjNjI0OTcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZG9tL1RleHQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1RleHQuY3BwCkBAIC0y
MzcsMTAgKzIzNywxMSBAQCBib29sIFRleHQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUg
KnN0eWxlKQogCiBSZW5kZXJPYmplY3QqIFRleHQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogeworICAgIE5vZGUqIHBhcmVudE9ySG9zdCA9IHBhcmVu
dE9ySG9zdE5vZGUoKTsKICNpZiBFTkFCTEUoU1ZHKQotICAgIGlmIChwYXJlbnROb2RlKCktPmlz
U1ZHRWxlbWVudCgpCisgICAgaWYgKHBhcmVudE9ySG9zdC0+aXNTVkdFbGVtZW50KCkKICNpZiBF
TkFCTEUoU1ZHX0ZPUkVJR05fT0JKRUNUKQotICAgICAgICAmJiAhcGFyZW50Tm9kZSgpLT5oYXNU
YWdOYW1lKFNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFnKQorICAgICAgICAmJiAhcGFyZW50T3JI
b3N0LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFnKQogI2VuZGlmCiAgICAg
KQogICAgICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHSW5saW5lVGV4dCh0aGlzLCBk
YXRhSW1wbCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBm
MWRmNWIwYmM1M2ZkMWNiMzEwODI4OTZjZTJjZWIzODMzOWM5MWEwLi40NGQ3MDA2MzI2ZDlhMThh
MmQ4ZjZhM2YzYzM0OTk0MzVkZDAwNjNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJEb2N1bWVudFR5cGUuaCIKICNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50
Q29udGV4dC5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKQEAgLTU5NCwxMyArNTk1LDEzIEBAIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShsb25nIG5vZGVJ
ZCwgbG9uZyogb3V0Tm9kZUlkLCBSCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRoZSBOb2Rl
J3MgRXZlbnQgQW5jZXN0b3JzIChub3QgaW5jbHVkaW5nIHNlbGYpCi0gICAgVmVjdG9yPFJlZlB0
cjxDb250YWluZXJOb2RlPiA+IGFuY2VzdG9yczsKLSAgICBub2RlLT5ldmVudEFuY2VzdG9ycyhh
bmNlc3RvcnMpOworICAgIFZlY3RvcjxFdmVudENvbnRleHQ+IGFuY2VzdG9yczsKKyAgICBub2Rl
LT5ldmVudEFuY2VzdG9ycyhhbmNlc3RvcnMsIG5vZGUpOwogCiAgICAgLy8gTm9kZXMgYW5kIHRo
ZWlyIExpc3RlbmVycyBmb3IgdGhlIGNvbmNlcm5lZCBldmVudCB0eXBlcyAob3JkZXIgaXMgdG9w
IHRvIGJvdHRvbSkKICAgICBWZWN0b3I8RXZlbnRMaXN0ZW5lckluZm8+IGV2ZW50SW5mb3JtYXRp
b247CiAgICAgZm9yIChzaXplX3QgaSA9IGFuY2VzdG9ycy5zaXplKCk7IGk7IC0taSkgewotICAg
ICAgICBDb250YWluZXJOb2RlKiBhbmNlc3RvciA9IGFuY2VzdG9yc1tpIC0gMV0uZ2V0KCk7Cisg
ICAgICAgIENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0gYW5jZXN0b3JzW2kgLSAxXS5hbmNlc3Rv
cigpOwogICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGV2ZW50VHlwZXNMZW5ndGg7ICsr
aikgewogICAgICAgICAgICAgQXRvbWljU3RyaW5nJiB0eXBlID0gZXZlbnRUeXBlc1tqXTsKICAg
ICAgICAgICAgIGlmIChhbmNlc3Rvci0+aGFzRXZlbnRMaXN0ZW5lcnModHlwZSkpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IGU3MGRmMGI5Nzg0OWRiM2Y2MGRjNmNlMDVjYTA2NTUzMjIwZDlkZTku
LmIxN2ZjMWEwYzg1ZDMxYmY5ODNlNjI5Mjg3YTlmNTc1YzA4YzdhZGEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCkBAIC0xNzYzLDYgKzE3NjMsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlTW91
c2VFdmVudFRhcmdldE5vZGUoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgUGxhdGZvcm1NbwogICAg
ICAgICAvLyBJZiB0aGUgdGFyZ2V0IG5vZGUgaXMgYSB0ZXh0IG5vZGUsIGRpc3BhdGNoIG9uIHRo
ZSBwYXJlbnQgbm9kZSAtIHJkYXI6Ly80MTk2NjQ2CiAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVz
dWx0LT5pc1RleHROb2RlKCkpCiAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQtPnBhcmVudE5v
ZGUoKTsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBwcm9wZXIgcmUtdGFyZ2V0aW5nIG9m
IGV2ZW50cyBpbnNpZGUgb2YgdGhlIHNoYWRvdyB0cmVlLgogICAgICAgICBpZiAocmVzdWx0KQog
ICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT5zaGFkb3dBbmNlc3Rvck5vZGUoKTsKICAgICB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuY3BwCmluZGV4IDFiMTlmMjU0OGFhZDRkYmEwYzFjMzBiOWE1OTM2NjRmYThlNWMw
ODkuLmI5YzlhNjY3MTEzYzcwNzcxOGEyYjIzYjVjNzcxNTBmMWQ0ODEwNjUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCkBAIC0zMzIsMTMgKzMzMiw2IEBAIHZvaWQgU1ZHRWxlbWVudDo6dXBkYXRlQW5pbWF0ZWRT
VkdBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKICAgICBjbGVhcklz
U3luY2hyb25pemluZ1NWR0F0dHJpYnV0ZXMoKTsKIH0KIAotQ29udGFpbmVyTm9kZSogU1ZHRWxl
bWVudDo6ZXZlbnRQYXJlbnROb2RlKCkKLXsKLSAgICBpZiAoQ29udGFpbmVyTm9kZSogc2hhZG93
UGFyZW50ID0gc2hhZG93UGFyZW50Tm9kZSgpKQotICAgICAgICByZXR1cm4gc2hhZG93UGFyZW50
OwotICAgIHJldHVybiBTdHlsZWRFbGVtZW50OjpldmVudFBhcmVudE5vZGUoKTsKLX0KLQogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuaCBiL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRleCBmYjI4Mjc5Y2Y4NTU2NzE4N2Qz
MzhjN2FmMTYwZWMwNmRhMGFjNzdiLi4xMjcxYzdiNDNhOGFhNjYzNDY4ZmQ1OGFkMDIzY2JmNTFm
ODJiZjIxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC05Niw4ICs5Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdXBwb3J0ZWQoU3RyaW5nSW1wbCogZmVhdHVyZSwg
U3RyaW5nSW1wbCogdmVyc2lvbikgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCBDb250YWluZXJO
b2RlKiBldmVudFBhcmVudE5vZGUoKTsKLQogICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQZW5k
aW5nUmVzb3VyY2VIYW5kbGluZygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgdmly
dHVhbCB2b2lkIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCkgeyB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69537</attachid>
            <date>2010-10-01 16:23:36 -0700</date>
            <delta_ts>2010-10-04 09:05:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46015-20101001162335.patch</filename>
            <type>text/plain</type>
            <size>32629</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxODgxNzBhYTc2N2YyYjUzYTVlZTc5M2YxMzc1YTlmMTAwYjM3NmM4Li5jYTQxYWVk
MTBkYTdkNjZiMmZkMDJhNDQ2ZWYxNzg4MDM1YmJmOTI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMTAtMDEgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
c2hhZG93IERPTS1hd2FyZSBldmVudCB0YXJnZXRpbmcgYW5kIGludHJvZHVjZSBFdmVudENvbnRl
eHQgdG8gdHJhY2sgdGhlIGNvbnRleHQgb2YgZWFjaCBldmVudCBkaXNwYXRjaC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MDE1CisKKyAgICAgICAg
KiBmYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRtbDoKKwogMjAxMC0xMC0w
MSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBmb3Ig
dGVzdGluZyBOUE5fR2V0VmFsdWUoTlBOVm5ldHNjYXBlV2luZG93KQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvc2hhZG93LWJvdW5kYXJ5LWNyb3NzaW5nLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRtbAppbmRleCA2
MjNlMDY3M2VjMWNmMzYyNTZmNWVjMTM2N2Q3Y2EzOWJhYmI0MTUzLi4wZTg3ZmQ3NDU1N2M1NWZh
ZWIxMTM1NDM3YjY1MWU1Y2U1YzBjNDIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRtbApAQCAtMiwxMSArMiwxMSBAQAog
PGhlYWQ+CiAgICAgPHRpdGxlPjwvdGl0bGU+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgotICAgICAgICB2YXIgZmlyZWQgPSBmYWxzZTsKKyAgICAgICAgdmFyIHN1Y2Nlc3M7
CiAKICAgICAgICAgZnVuY3Rpb24gc2VsZWN0U3RhcnQoZXZlbnQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGZpcmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBldmVudC50YXJnZXQu
cGFyZW50Tm9kZTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQpAQCAtMjMs
NyArMjMsNyBAQAogICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CiAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CiAKLSAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lclRleHQgPSBmaXJlZCA/ICJGQUlMIiA6ICJQQVNTIjsK
KyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lclRleHQg
PSAhc3VjY2VzcyA/ICJGQUlMIiA6ICJQQVNTIjsKICAgICAgICAgfQogCiAgICAgICAgIGFkZEV2
ZW50TGlzdGVuZXIoInNlbGVjdHN0YXJ0Iiwgc2VsZWN0U3RhcnQsIHRydWUpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9BbmRyb2lkLm1rIGIvV2ViQ29yZS9BbmRyb2lkLm1rCmluZGV4IGY5ZGM4NDJi
OThhODJiMWEyZDkxYWQ1YjQ4YjliYTEzNzY1ZjUyMDIuLjY4ZjU1MGQyMmFhM2NiOWJmNjA1NjYw
OTMyZGNmOTA0Yjc3ZTFjOTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQW5kcm9pZC5taworKysgYi9X
ZWJDb3JlL0FuZHJvaWQubWsKQEAgLTEzMiw2ICsxMzIsNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0g
JChMT0NBTF9TUkNfRklMRVMpIFwKIAlkb20vRW50aXR5UmVmZXJlbmNlLmNwcCBcCiAJZG9tL0Vy
cm9yRXZlbnQuY3BwIFwKIAlkb20vRXZlbnQuY3BwIFwKKwlkb20vRXZlbnRDb250ZXh0LmNwcCBc
CiAJZG9tL0V2ZW50TmFtZXMuY3BwIFwKIAlkb20vRXZlbnRUYXJnZXQuY3BwIFwKIAlkb20vRXhj
ZXB0aW9uQmFzZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDEwZDU5YmMxZjY0NTc5YjRjNmEzYzY1NDA2ZjA3
Yzc2YWYzN2FiNy4uZDk1YmFmNDgxY2UwMTc4ZWFjMWIxZWEzMWJjMDIxYjE4Y2E5NjRlNiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC04MTgsNiArODE4LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9FbnRp
dHlSZWZlcmVuY2UuY3BwCiAgICAgZG9tL0Vycm9yRXZlbnQuY3BwCiAgICAgZG9tL0V2ZW50LmNw
cAorICAgIGRvbS9FdmVudENvbnRleHQuY3BwCiAgICAgZG9tL0V2ZW50TmFtZXMuY3BwCiAgICAg
ZG9tL0V2ZW50VGFyZ2V0LmNwcAogICAgIGRvbS9FeGNlcHRpb25CYXNlLmNwcApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzYjg1MTY0ZjU4
YzAyOTY5OTUzMDk4OTA1OTM5MTg3NjIwOTY0NzU5Li5kZTc4MTM4OTkwZDQwZDRjZDM1ZDE3NTU4
YjUyYzNkMTYwOTIzNGRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEwLTEwLTAxICBEaW1pdHJpIEdsYXpr
b3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHNoYWRvdyBET00tYXdhcmUgZXZlbnQgdGFy
Z2V0aW5nIGFuZCBpbnRyb2R1Y2UgRXZlbnRDb250ZXh0IHRvIHRyYWNrIHRoZSBjb250ZXh0IG9m
IGVhY2ggZXZlbnQgZGlzcGF0Y2guCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NjAxNQorCisgICAgICAgICogQW5kcm9pZC5tazoKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om5vdGlmeUNoaWxkSW5zZXJ0ZWQpOgorICAgICAgICAqIGRvbS9F
dmVudENvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50Q29udGV4dDo6
RXZlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50Q29udGV4dDo6bm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudENvbnRleHQ6OnRhcmdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudENvbnRleHQ6OmhhbmRsZUxvY2FsRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Oldp
bmRvd0V2ZW50Q29udGV4dDo6V2luZG93RXZlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OldpbmRvd0V2ZW50Q29udGV4dDo6d2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd0V2
ZW50Q29udGV4dDo6dGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd0V2ZW50Q29udGV4
dDo6aGFuZGxlTG9jYWxFdmVudHMpOgorICAgICAgICAqIGRvbS9FdmVudENvbnRleHQuaDogQWRk
ZWQuCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bWFy
a0FuY2VzdG9yc1dpdGhDaGlsZE5lZWRzU3R5bGVSZWNhbGMpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpw
YXJlbnRPckhvc3ROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmVuY2xvc2luZ0xpbmtF
dmVudFBhcmVudE9yU2VsZik6CisgICAgICAgIChXZWJDb3JlOjpldmVudFRhcmdldFJlc3BlY3Rp
bmdTVkdUYXJnZXRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpldmVudEFuY2VzdG9y
cyk6CisgICAgICAgIChXZWJDb3JlOjpldmVudEhhc0xpc3RlbmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpkaXNwYXRjaEdlbmVyaWNFdmVudCk6CisgICAgICAgICogZG9tL05vZGUuaDoK
KyAgICAgICAgKiBkb20vVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0OjpjcmVhdGVS
ZW5kZXJlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5v
ZGUpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6dXBkYXRlTW91c2VFdmVudFRhcmdldE5vZGUpOgorICAgICAgICAqIHN2
Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5oOgorCiAyMDEwLTEw
LTAxICBSYWduZXIgTWFnYWxoYWVzICA8cmFnbmVyLm1hZ2FsaGFlc0BvcGVuYm9zc2Eub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5k
ZXggYTc0Mzk4MzllMzJjMTY4Y2ViYzIyNDdlYWFkMjYyMmE1YjhiMTRiZS4uNDZkZTk5NDdmYzg2
MWE3ZTg4ZjM1NmNjM2JlOTM0NDVlOTRlOGZiNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xMTIxLDggKzExMjEsMTAg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2RvbS9FcnJvckV2ZW50LmNwcCBcCiAJ
V2ViQ29yZS9kb20vRXJyb3JFdmVudC5oIFwKIAlXZWJDb3JlL2RvbS9FdmVudC5jcHAgXAotCVdl
YkNvcmUvZG9tL0V2ZW50RXhjZXB0aW9uLmggXAogCVdlYkNvcmUvZG9tL0V2ZW50LmggXAorCVdl
YkNvcmUvZG9tL0V2ZW50Q29udGV4dC5jcHAgXAorCVdlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5o
IFwKKwlXZWJDb3JlL2RvbS9FdmVudEV4Y2VwdGlvbi5oIFwKIAlXZWJDb3JlL2RvbS9FdmVudExp
c3RlbmVyLmggXAogCVdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuY3BwIFwKIAlXZWJDb3JlL2RvbS9F
dmVudE5hbWVzLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCBlOWFlZjdiODM5MzY4ZmI0ZjVkYWYyYjM0NDM4Yzk3ZDllOTdh
MGNhLi44OGE0M2E4MzM5ZTdkZmI1MmI0MzJkNmJmNWQ3YzY0MzE3Zjg4YjliIDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTE5
Miw2ICsxMTkyLDggQEAKICAgICAgICAgICAgICdkb20vRXJyb3JFdmVudC5oJywKICAgICAgICAg
ICAgICdkb20vRXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20vRXZlbnQuaCcsCisgICAgICAg
ICAgICAnZG9tL0V2ZW50Q29udGV4dC5jcHAnLAorICAgICAgICAgICAgJ2RvbS9FdmVudENvbnRl
eHQuaCcsCiAgICAgICAgICAgICAnZG9tL0V2ZW50RXhjZXB0aW9uLmgnLAogICAgICAgICAgICAg
J2RvbS9FdmVudExpc3RlbmVyLmgnLAogICAgICAgICAgICAgJ2RvbS9FdmVudE5hbWVzLmNwcCcs
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpp
bmRleCA0NWUwOWVhOGI5MjM5MWUxMmUzYjY5ZDEzNzk5ZjI4MWNhNTZmMmNmLi5kNWFkNGRmZmE4
MmFkMWExMWYxYmNlZTAwNTBhMzFjNTRlZDJmOTFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTcwOCw2ICs3MDgsNyBAQCBTT1VS
Q0VTICs9IFwKICAgICBkb20vRW50aXR5UmVmZXJlbmNlLmNwcCBcCiAgICAgZG9tL0Vycm9yRXZl
bnQuY3BwIFwKICAgICBkb20vRXZlbnQuY3BwIFwKKyAgICBkb20vRXZlbnRDb250ZXh0LmNwcCBc
CiAgICAgZG9tL0V2ZW50TmFtZXMuY3BwIFwKICAgICBkb20vRXZlbnRUYXJnZXQuY3BwIFwKICAg
ICBkb20vRXhjZXB0aW9uQmFzZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA5MDAwNzI2ODg0NzE5MTJhNGIzZDdlYTViYWU2YmI4ZjhlZmMzZWUz
Li45OGFkOTRmYjhmYTc5ZjU3N2FlZDQ4N2MzNmU4MGFiZWRjZmE4NWJiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODY1LDYgKzg2NSw4IEBACiAJCTQx
MTA0NjQxMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVudExpc3RlbmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwNDYzRjBGQTIyMkE2MDBC
QTQzNkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5lci5oICovOyB9OwogCQk0MTEwNDY0MjBGQTIyMkE2
MDBCQTQzNkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwNDY0MDBGQTIyMkE2MDBCQTQzNkEgLyogU2Ny
aXB0RXZlbnRMaXN0ZW5lci5jcHAgKi87IH07CiAJCTQxMjdENTM3MEY4QUFCMUQwMEU0MjRGNSAv
KiBTY3JpcHRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovOyB9
OworCQk0MTM4RDMzNTEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM4RDMzMzEyNDQwNTQ4MDAz
MjNEMzMgLyogRXZlbnRDb250ZXh0LmggKi87IH07CisJCTQxMzhEMzM2MTI0NDA1NDgwMDMyM0Qz
MyAvKiBFdmVudENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDEzOEQzMzQxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5jcHAg
Ki87IH07CiAJCTQxNjJBNDUwMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NjJBNDREMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCAqLzsg
fTsKIAkJNDE2MkE0NTExMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDRF
MTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggKi87IH07CiAJCTQx
NjJBNDU0MTAxMTQ1RTMwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MkE0
NTMxMDExNDVFMzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAg
Ki87IH07CkBAIC02ODUyLDYgKzY4NTQsOCBAQAogCQk0MTEwNDYzRjBGQTIyMkE2MDBCQTQzNkEg
LyogU2NyaXB0RXZlbnRMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTY3JpcHRFdmVudExpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
MTA0NjQwMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVudExpc3RlbmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEV2ZW50TGlzdGVuZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyog
U2NyaXB0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Ny
aXB0U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTM4RDMzMzEyNDQw
NTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEV2ZW50Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTM4
RDMzNDEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxNjJBNDREMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERlZGljYXRl
ZFdvcmtlckNvbnRleHQuY3BwOyBwYXRoID0gd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2MkE0NEUxMDExNDVBRTAwREZG
M0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oOyBwYXRoID0gd29ya2Vycy9EZWRpY2F0
ZWRXb3JrZXJDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNjJBNDRG
MTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IG5hbWUgPSBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbDsgcGF0aCA9IHdvcmtlcnMv
RGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNzkyMSw2ICsxNzkyNSw4IEBACiAJCQkJODUwMzFCMkIwQTQ0RUZDNzAwRjk5MkUwIC8qIEV2
ZW50LmNwcCAqLywKIAkJCQk4NTAzMUIyQzBBNDRFRkM3MDBGOTkyRTAgLyogRXZlbnQuaCAqLywK
IAkJCQkxNEU4MzZEMjA5Rjg1MTIwMDBCODVBRTQgLyogRXZlbnQuaWRsICovLAorCQkJCTQxMzhE
MzM0MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuY3BwICovLAorCQkJCTQxMzhEMzMz
MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuaCAqLywKIAkJCQlCQzYwRDkwOTBEMkEx
N0NFMDBCOTkxOEYgLyogRXZlbnRFeGNlcHRpb24uaCAqLywKIAkJCQlCQzYwRDkwQTBEMkExN0NF
MDBCOTkxOEYgLyogRXZlbnRFeGNlcHRpb24uaWRsICovLAogCQkJCTkzNUZCQzQ0MDlCQTAwQjkw
MEUyMzBCMSAvKiBFdmVudExpc3RlbmVyLmggKi8sCkBAIC0xOTIyNiw2ICsxOTIzMiw3IEBACiAJ
CQkJODk4Nzg1NjAxMjJDQTA2NDAwM0FBQkRBIC8qIEVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJFQ0Y3QUUyMTAxNjJCNTgwMDQyN0RFNyAvKiBFcnJvckV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NTAzMUI0MjBBNDRFRkM3MDBGOTkyRTAgLyogRXZlbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQxMzhEMzM1MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDNjBEOTBDMEQyQTE3Q0UwMEI5OTE4RiAvKiBFdmVudEV4Y2Vw
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDMDlBNTMwQjA2NERCMzAwNUFCRDREIC8qIEV2
ZW50SGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1RkJDNDUwOUJBMDBCOTAwRTIzMEIx
IC8qIEV2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjE4MTEsNiArMjE4MTgsNyBA
QAogCQkJCTg5ODc4NTVEMTIyQ0EwNjQwMDNBQUJEQSAvKiBFbnRyeUFycmF5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTJFQ0Y3QUUxMTAxNjJCNTgwMDQyN0RFNyAvKiBFcnJvckV2ZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTg1MDMxQjQxMEE0NEVGQzcwMEY5OTJFMCAvKiBFdmVudC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk0MTM4RDMzNjEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250
ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzQzA5QTgxMEIwNjRGMDAwMDVBQkQ0RCAvKiBF
dmVudEhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNDMDlBN0YwQjA2NEVFRjAwNUFC
RDREIC8qIEV2ZW50SGFuZGxlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDQTE5RTA1MERD
MjU1OTUwMDY1QTk5NCAvKiBFdmVudExvb3BNYWMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAKaW5kZXggODllYTdiNTg4OGNmZGVhMjNjY2FiYjg2ZTY5NzM0MTE4MzVlMDg4My4u
OWUyOTY3NzkzMjExODEzMWY0OGFjMGE2NWQzNTQxNDhhYWFlMGQ2NiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAKQEAgLTEwMDcsNyArMTAwNyw4IEBAIHN0YXRpYyB2b2lkIG5vdGlmeUNoaWxkSW5zZXJ0
ZWQoTm9kZSogY2hpbGQpCiAgICAgUmVmUHRyPE5vZGU+IGMgPSBjaGlsZDsKICAgICBSZWZQdHI8
RG9jdW1lbnQ+IGRvY3VtZW50ID0gY2hpbGQtPmRvY3VtZW50KCk7CiAKLSAgICBpZiAoYy0+cGFy
ZW50Tm9kZSgpICYmIGMtPnBhcmVudE5vZGUoKS0+aW5Eb2N1bWVudCgpKQorICAgIE5vZGUqIHBh
cmVudE9ySG9zdE5vZGUgPSBjLT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgaWYgKHBhcmVudE9y
SG9zdE5vZGUgJiYgcGFyZW50T3JIb3N0Tm9kZS0+aW5Eb2N1bWVudCgpKQogICAgICAgICBjLT5p
bnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIGVsc2UKICAgICAgICAgYy0+aW5zZXJ0ZWRJbnRv
VHJlZSh0cnVlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5jcHAgYi9X
ZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwZDhlNTAxYzE4ZDVmMTRm
ODQyNTQ3ZWZmYjQyMDlkZDgwZTBmNGEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9F
dmVudENvbnRleHQuY3BwCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXZlbnRDb250ZXh0LmgiCisKKyNpbmNsdWRlICJET01X
aW5kb3cuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIk5vZGUuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitFdmVudENvbnRleHQ6OkV2ZW50Q29udGV4dChOb2RlKiBub2RlLCBF
dmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCkKKyAgICA6IG1f
bm9kZShub2RlKQorICAgICwgbV9jdXJyZW50VGFyZ2V0KGN1cnJlbnRUYXJnZXQpCisgICAgLCBt
X3RhcmdldCh0YXJnZXQpCit7Cit9CisKK05vZGUqIEV2ZW50Q29udGV4dDo6bm9kZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fbm9kZS5nZXQoKTsKK30KKworRXZlbnRUYXJnZXQqIEV2ZW50Q29u
dGV4dDo6dGFyZ2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90YXJnZXQuZ2V0KCk7Cit9CisK
K3ZvaWQgRXZlbnRDb250ZXh0OjpoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCogZXZlbnQpIGNvbnN0
Cit7CisgICAgZXZlbnQtPnNldFRhcmdldChtX3RhcmdldC5nZXQoKSk7CisgICAgZXZlbnQtPnNl
dEN1cnJlbnRUYXJnZXQobV9jdXJyZW50VGFyZ2V0LmdldCgpKTsKKyAgICBtX25vZGUtPmhhbmRs
ZUxvY2FsRXZlbnRzKGV2ZW50KTsKK30KKworV2luZG93RXZlbnRDb250ZXh0OjpXaW5kb3dFdmVu
dENvbnRleHQoRXZlbnQqIGV2ZW50LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8RXZlbnRDb250
ZXh0PiYgYW5jZXN0b3JzKQoreworICAgIC8vIFdlIGRvbid0IGRpc3BhdGNoIGxvYWQgZXZlbnRz
IHRvIHRoZSB3aW5kb3cuIFRoYXQgcXVpcmsgd2FzIG9yaWdpbmFsbHkKKyAgICAvLyBhZGRlZCBi
ZWNhdXNlIE1vemlsbGEgZG9lc24ndCBwcm9wYWdhdGUgbG9hZCBldmVudHMgdG8gdGhlIHdpbmRv
dyBvYmplY3QuCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmxvYWRFdmVu
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXZlbnRUYXJnZXQqIHRhcmdldEZvcldpbmRvd0V2
ZW50cyA9IG5vZGU7CisgICAgTm9kZSogdG9wTGV2ZWxDb250YWluZXIgPSBub2RlOworICAgIGlm
ICghYW5jZXN0b3JzLmlzRW1wdHkoKSkgeworICAgICAgICB0b3BMZXZlbENvbnRhaW5lciA9IGFu
Y2VzdG9ycy5sYXN0KCkubm9kZSgpOworICAgICAgICB0YXJnZXRGb3JXaW5kb3dFdmVudHMgPSBh
bmNlc3RvcnMubGFzdCgpLnRhcmdldCgpOworICAgIH0KKyAgICBpZiAoIXRvcExldmVsQ29udGFp
bmVyLT5pc0RvY3VtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3dpbmRvdyA9
IHN0YXRpY19jYXN0PERvY3VtZW50Kj4odG9wTGV2ZWxDb250YWluZXIpLT5kb21XaW5kb3coKTsK
KyAgICBtX3RhcmdldCA9IHRhcmdldEZvcldpbmRvd0V2ZW50czsKK30KKworRE9NV2luZG93KiBX
aW5kb3dFdmVudENvbnRleHQ6OndpbmRvdygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2luZG93
LmdldCgpOworfQorCitFdmVudFRhcmdldCogV2luZG93RXZlbnRDb250ZXh0Ojp0YXJnZXQoKSBj
b25zdAoreworICAgIHJldHVybiBtX3RhcmdldC5nZXQoKTsKK30KKworYm9vbCBXaW5kb3dFdmVu
dENvbnRleHQ6OmhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoIW1f
d2luZG93KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBldmVudC0+c2V0VGFyZ2V0KHRh
cmdldCgpKTsKKyAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh3aW5kb3coKSk7CisgICAgbV93
aW5kb3ctPmZpcmVFdmVudExpc3RlbmVycyhldmVudCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oIGIvV2ViQ29yZS9kb20v
RXZlbnRDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmMxMjczMjVlMTI0ZTUyMTk4ZjRiYzIxNzg2MTMx
YjQzMzQ3Mzg2MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5o
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpZm5kZWYgRXZlbnRDb250ZXh0X2gK
KyNkZWZpbmUgRXZlbnRDb250ZXh0X2gKKworI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29udGFp
bmVyTm9kZTsKK2NsYXNzIERPTVdpbmRvdzsKK2NsYXNzIEV2ZW50VGFyZ2V0OworY2xhc3MgRXZl
bnQ7CitjbGFzcyBOb2RlOworCitjbGFzcyBFdmVudENvbnRleHQgeworcHVibGljOgorICAgIEV2
ZW50Q29udGV4dChOb2RlKiwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0
KiB0YXJnZXQpOworCisgICAgTm9kZSogbm9kZSgpIGNvbnN0OworICAgIEV2ZW50VGFyZ2V0KiB0
YXJnZXQoKSBjb25zdDsKKyAgICB2b2lkIGhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KikgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKKyAgICBSZWZQdHI8RXZlbnRU
YXJnZXQ+IG1fY3VycmVudFRhcmdldDsKKyAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IG1fdGFyZ2V0
OworfTsKKworY2xhc3MgV2luZG93RXZlbnRDb250ZXh0IHsKK3B1YmxpYzoKKyAgICBXaW5kb3dF
dmVudENvbnRleHQoRXZlbnQqLCBOb2RlKiwgY29uc3QgVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFu
Y2VzdG9ycyk7CisKKyAgICBET01XaW5kb3cqIHdpbmRvdygpIGNvbnN0OworICAgIEV2ZW50VGFy
Z2V0KiB0YXJnZXQoKSBjb25zdDsKKyAgICBib29sIGhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KiBl
dmVudCk7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPERPTVdpbmRvdz4gbV93aW5kb3c7CisgICAg
UmVmUHRyPEV2ZW50VGFyZ2V0PiBtX3RhcmdldDsKK307CisKK30KKworI2VuZGlmIC8vIEV2ZW50
Q29udGV4dF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1dlYkNvcmUvZG9t
L05vZGUuY3BwCmluZGV4IDUzMzk1YTg3NWUyMjYzN2U5MjVhNTdjMjcyZGI0ODJiZThhNTMwMDQu
LjdkMmViODlkYzMwYjAxY2E4ZWRkYmMzNzM0ZjdjMGYwYjY5OTQyMmEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00NSw2ICs0
NSw3IEBACiAjaW5jbHVkZSAiRHluYW1pY05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5o
IgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiRXZlbnRFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRl
ICJFdmVudExpc3RlbmVyLmgiCkBAIC03MjQsOSArNzI1LDkgQEAgaW5saW5lIHZvaWQgTm9kZTo6
c2V0U3R5bGVDaGFuZ2UoU3R5bGVDaGFuZ2VUeXBlIGNoYW5nZVR5cGUpCiAKIGlubGluZSB2b2lk
IE5vZGU6Om1hcmtBbmNlc3RvcnNXaXRoQ2hpbGROZWVkc1N0eWxlUmVjYWxjKCkKIHsKLSAgICBm
b3IgKE5vZGUqIHAgPSBwYXJlbnROb2RlKCk7IHAgJiYgIXAtPmNoaWxkTmVlZHNTdHlsZVJlY2Fs
YygpOyBwID0gcC0+cGFyZW50Tm9kZSgpKQorICAgIGZvciAoTm9kZSogcCA9IHBhcmVudE9ySG9z
dE5vZGUoKTsgcCAmJiAhcC0+Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7IHAgPSBwLT5wYXJlbnRP
ckhvc3ROb2RlKCkpCiAgICAgICAgIHAtPnNldENoaWxkTmVlZHNTdHlsZVJlY2FsYygpOwotICAg
IAorCiAgICAgaWYgKGRvY3VtZW50KCktPmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpKQogICAgICAg
ICBkb2N1bWVudCgpLT5zY2hlZHVsZVN0eWxlUmVjYWxjKCk7CiB9CkBAIC0xMzIzLDcgKzEzMjQs
NyBAQCB2b2lkIE5vZGU6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKQogCiAgICAgQVNTRVJUKCFy
ZW5kZXJlcigpKTsKICAgICAKLSAgICBOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlKCk7ICAgIAor
ICAgIE5vZGUqIHBhcmVudCA9IHBhcmVudE9ySG9zdE5vZGUoKTsKICAgICBBU1NFUlQocGFyZW50
KTsKICAgICAKICAgICBSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyID0gcGFyZW50LT5yZW5k
ZXJlcigpOwpAQCAtMTQ0Niw2ICsxNDQ3LDEzIEBAIGJvb2wgTm9kZTo6aXNJblNoYWRvd1RyZWUo
KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50T3JI
b3N0Tm9kZSgpCit7CisgICAgaWYgKENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGUo
KSkKKyAgICAgICAgcmV0dXJuIHBhcmVudDsKKyAgICByZXR1cm4gc2hhZG93UGFyZW50Tm9kZSgp
OworfQorCiBib29sIE5vZGU6OmlzQmxvY2tGbG93KCkgY29uc3QKIHsKICAgICByZXR1cm4gcmVu
ZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc0Jsb2NrRmxvdygpOwpAQCAtMjI2OSwxNCArMjI3Nyw5
IEBAIHZvaWQgTm9kZTo6Z2V0U3VicmVzb3VyY2VVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxz
KSBjb25zdAogICAgIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIH0KIAotQ29u
dGFpbmVyTm9kZSogTm9kZTo6ZXZlbnRQYXJlbnROb2RlKCkKLXsKLSAgICByZXR1cm4gcGFyZW50
Tm9kZSgpOwotfQotCiBOb2RlKiBOb2RlOjplbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYo
KQogewotICAgIGZvciAoTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT5ldmVu
dFBhcmVudE5vZGUoKSkgeworICAgIGZvciAoTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUg
PSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKICAgICAgICAgLy8gRm9yIGltYWdlbWFwcywg
dGhlIGVuY2xvc2luZyBsaW5rIG5vZGUgaXMgdGhlIGFzc29jaWF0ZWQgYXJlYSBlbGVtZW50IG5v
dCB0aGUgaW1hZ2UgaXRzZWxmLgogICAgICAgICAvLyBTbyB3ZSBkb24ndCBsZXQgaW1hZ2VzIGJl
IHRoZSBlbmNsb3NpbmdMaW5rTm9kZSwgZXZlbiB0aG91Z2ggaXNMaW5rIHNvbWV0aW1lcyByZXR1
cm5zIHRydWUKICAgICAgICAgLy8gZm9yIHRoZW0uCkBAIC0yNTE0LDEyICsyNTE3LDEzIEBAIHZv
aWQgTm9kZTo6aGFuZGxlTG9jYWxFdmVudHMoRXZlbnQqIGV2ZW50KQogICAgIGZpcmVFdmVudExp
c3RlbmVycyhldmVudCk7CiB9CiAKLSNpZiBFTkFCTEUoU1ZHKQotc3RhdGljIGlubGluZSBTVkdF
bGVtZW50SW5zdGFuY2UqIGV2ZW50VGFyZ2V0QXNTVkdFbGVtZW50SW5zdGFuY2UoTm9kZSogcmVm
ZXJlbmNlTm9kZSkKK3N0YXRpYyBpbmxpbmUgRXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0UmVzcGVj
dGluZ1NWR1RhcmdldFJ1bGVzKE5vZGUqIHJlZmVyZW5jZU5vZGUpCiB7CiAgICAgQVNTRVJUKHJl
ZmVyZW5jZU5vZGUpOworCisjaWYgRU5BQkxFKFNWRykKICAgICBpZiAoIXJlZmVyZW5jZU5vZGUt
PmlzU1ZHRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHJlZmVy
ZW5jZU5vZGU7CiAKICAgICAvLyBTcGVjOiBUaGUgZXZlbnQgaGFuZGxpbmcgZm9yIHRoZSBub24t
ZXhwb3NlZCB0cmVlIHdvcmtzIGFzIGlmIHRoZSByZWZlcmVuY2VkIGVsZW1lbnQgaGFkIGJlZW4g
dGV4dHVhbGx5IGluY2x1ZGVkCiAgICAgLy8gYXMgYSBkZWVwbHkgY2xvbmVkIGNoaWxkIG9mIHRo
ZSAndXNlJyBlbGVtZW50LCBleGNlcHQgdGhhdCBldmVudHMgYXJlIGRpc3BhdGNoZWQgdG8gdGhl
IFNWR0VsZW1lbnRJbnN0YW5jZSBvYmplY3RzCkBAIC0yNTMzLDM3ICsyNTM3LDQwIEBAIHN0YXRp
YyBpbmxpbmUgU1ZHRWxlbWVudEluc3RhbmNlKiBldmVudFRhcmdldEFzU1ZHRWxlbWVudEluc3Rh
bmNlKE5vZGUqIHJlZmVyZW5jCiAgICAgICAgIGlmIChTVkdFbGVtZW50SW5zdGFuY2UqIGluc3Rh
bmNlID0gc3RhdGljX2Nhc3Q8U1ZHVXNlRWxlbWVudCo+KHNoYWRvd1RyZWVQYXJlbnRFbGVtZW50
KS0+aW5zdGFuY2VGb3JTaGFkb3dUcmVlRWxlbWVudChyZWZlcmVuY2VOb2RlKSkKICAgICAgICAg
ICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CisjZW5kaWYKIAotICAgIHJldHVybiAwOworICAg
IHJldHVybiByZWZlcmVuY2VOb2RlOwogfQotI2VuZGlmCiAKLXN0YXRpYyBpbmxpbmUgRXZlbnRU
YXJnZXQqIGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1NWR1RhcmdldFJ1bGVzKE5vZGUqIHJlZmVyZW5j
ZU5vZGUpCit2b2lkIE5vZGU6OmV2ZW50QW5jZXN0b3JzKFZlY3RvcjxFdmVudENvbnRleHQ+ICZh
bmNlc3RvcnMsIEV2ZW50VGFyZ2V0KiBvcmlnaW5hbFRhcmdldCkKIHsKLSAgICBBU1NFUlQocmVm
ZXJlbmNlTm9kZSk7CisgICAgaWYgKCFpbkRvY3VtZW50KCkpCisgICAgICAgIHJldHVybjsKIAot
I2lmIEVOQUJMRShTVkcpCi0gICAgaWYgKFNWR0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2UgPSBl
dmVudFRhcmdldEFzU1ZHRWxlbWVudEluc3RhbmNlKHJlZmVyZW5jZU5vZGUpKSB7Ci0gICAgICAg
IEFTU0VSVChpbnN0YW5jZS0+c2hhZG93VHJlZUVsZW1lbnQoKSA9PSByZWZlcmVuY2VOb2RlKTsK
LSAgICAgICAgcmV0dXJuIGluc3RhbmNlOwotICAgIH0KLSNlbmRpZgorICAgIEV2ZW50VGFyZ2V0
KiB0YXJnZXQgPSBvcmlnaW5hbFRhcmdldDsKKyAgICBOb2RlKiBhbmNlc3RvciA9IHRoaXM7Cisg
ICAgYm9vbCBza2lwID0gZmFsc2U7CisgICAgZG8geworICAgICAgICBpZiAoYW5jZXN0b3ItPmlz
U2hhZG93Tm9kZSgpKSB7CisgICAgICAgICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLT5zaGFkb3dQ
YXJlbnROb2RlKCk7CisgICAgICAgICAgICBpZiAoIXNraXApCisgICAgICAgICAgICAgICAgdGFy
Z2V0ID0gYW5jZXN0b3I7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYW5jZXN0b3IgPSBh
bmNlc3Rvci0+cGFyZW50Tm9kZSgpOwogCi0gICAgcmV0dXJuIHJlZmVyZW5jZU5vZGU7Ci19Cisg
ICAgICAgIGlmICghYW5jZXN0b3IpCisgICAgICAgICAgICByZXR1cm47CiAKLXZvaWQgTm9kZTo6
ZXZlbnRBbmNlc3RvcnMoVmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+ICZhbmNlc3RvcnMp
Ci17Ci0gICAgaWYgKGluRG9jdW1lbnQoKSkgewotICAgICAgICBmb3IgKENvbnRhaW5lck5vZGUq
IGFuY2VzdG9yID0gZXZlbnRQYXJlbnROb2RlKCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2Vz
dG9yLT5ldmVudFBhcmVudE5vZGUoKSkgewogI2lmIEVOQUJMRShTVkcpCi0gICAgICAgICAgICAv
LyBTa2lwIDx1c2U+IHNoYWRvdyB0cmVlIGVsZW1lbnRzLgotICAgICAgICAgICAgaWYgKGFuY2Vz
dG9yLT5pc1NWR0VsZW1lbnQoKSAmJiBhbmNlc3Rvci0+aXNTaGFkb3dOb2RlKCkpCi0gICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIC8vIFNraXAgU1ZHU2hhZG93VHJlZVJvb3RFbGVt
ZW50LgorICAgICAgICBza2lwID0gYW5jZXN0b3ItPmlzU1ZHRWxlbWVudCgpICYmIGFuY2VzdG9y
LT5pc1NoYWRvd05vZGUoKTsKKyAgICAgICAgaWYgKHNraXApCisgICAgICAgICAgICBjb250aW51
ZTsKICNlbmRpZgotICAgICAgICAgICAgYW5jZXN0b3JzLmFwcGVuZChhbmNlc3Rvcik7Ci0gICAg
ICAgIH0KLSAgICB9CisgICAgICAgIC8vIEZJWE1FOiBVbnJvbGwgdGhlIGV4dHJhIGxvb3AgaW5z
aWRlIGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1NWR1RhcmdldFJ1bGVzIGludG8gdGhpcyBsb29wLgor
ICAgICAgICBhbmNlc3RvcnMuYXBwZW5kKEV2ZW50Q29udGV4dChhbmNlc3RvciwgZXZlbnRUYXJn
ZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0UnVsZXMoYW5jZXN0b3IpLCB0YXJnZXQpKTsKKworICAgIH0g
d2hpbGUgKHRydWUpOwogfQogCiBib29sIE5vZGU6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxF
dmVudD4gcHJwRXZlbnQpCkBAIC0yNTc3LDcgKzI1ODQsNyBAQCBib29sIE5vZGU6OmRpc3BhdGNo
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiAgICAgcmV0dXJuIGRpc3BhdGNoR2Vu
ZXJpY0V2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CiB9CiAKLXN0YXRpYyBib29sIGV2ZW50SGFzTGlz
dGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqIHdpbmRvdywg
Tm9kZSogbm9kZSwgVmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+JiBhbmNlc3RvcnMpCitz
dGF0aWMgYm9vbCBldmVudEhhc0xpc3RlbmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgRE9NV2luZG93KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxFdmVudENvbnRl
eHQ+JiBhbmNlc3RvcnMpCiB7CiAgICAgaWYgKHdpbmRvdyAmJiB3aW5kb3ctPmhhc0V2ZW50TGlz
dGVuZXJzKGV2ZW50VHlwZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjU4Niw3ICsyNTkz
LDcgQEAgc3RhdGljIGJvb2wgZXZlbnRIYXNMaXN0ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIERPTVdpbmRvdyogd2luZG93LAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5jZXN0b3JzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAg
IENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0gYW5jZXN0b3JzW2ldLmdldCgpOworICAgICAgICBO
b2RlKiBhbmNlc3RvciA9IGFuY2VzdG9yc1tpXS5ub2RlKCk7CiAgICAgICAgIGlmIChhbmNlc3Rv
ci0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnRUeXBlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KQEAgLTI2MDYsMjMgKzI2MTMsMTYgQEAgYm9vbCBOb2RlOjpkaXNwYXRjaEdlbmVy
aWNFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCkKICAgICAvLyBJZiB0aGUgbm9kZSBp
cyBub3QgaW4gYSBkb2N1bWVudCBqdXN0IHNlbmQgdGhlIGV2ZW50IHRvIGl0LgogICAgIC8vIEJl
IHN1cmUgdG8gcmVmIGFsbCBvZiBub2RlcyBzaW5jZSBldmVudCBoYW5kbGVycyBjb3VsZCByZXN1
bHQgaW4gdGhlIGxhc3QgcmVmZXJlbmNlIGdvaW5nIGF3YXkuCiAgICAgUmVmUHRyPE5vZGU+IHRo
aXNOb2RlKHRoaXMpOwotICAgIFZlY3RvcjxSZWZQdHI8Q29udGFpbmVyTm9kZT4gPiBhbmNlc3Rv
cnM7Ci0gICAgZXZlbnRBbmNlc3RvcnMoYW5jZXN0b3JzKTsKKyAgICBSZWZQdHI8RXZlbnRUYXJn
ZXQ+IG9yaWdpbmFsVGFyZ2V0KGV2ZW50LT50YXJnZXQoKSk7CisgICAgVmVjdG9yPEV2ZW50Q29u
dGV4dD4gYW5jZXN0b3JzOworICAgIGV2ZW50QW5jZXN0b3JzKGFuY2VzdG9ycywgb3JpZ2luYWxU
YXJnZXQuZ2V0KCkpOwogCi0gICAgLy8gU2V0IHVwIGEgcG9pbnRlciB0byBpbmRpY2F0ZSB3aGV0
aGVyIC8gd2hlcmUgdG8gZGlzcGF0Y2ggd2luZG93IGV2ZW50cy4KLSAgICAvLyBXZSBkb24ndCBk
aXNwYXRjaCBsb2FkIGV2ZW50cyB0byB0aGUgd2luZG93LiBUaGF0IHF1aXJrIHdhcyBvcmlnaW5h
bGx5Ci0gICAgLy8gYWRkZWQgYmVjYXVzZSBNb3ppbGxhIGRvZXNuJ3QgcHJvcGFnYXRlIGxvYWQg
ZXZlbnRzIHRvIHRoZSB3aW5kb3cgb2JqZWN0LgotICAgIERPTVdpbmRvdyogdGFyZ2V0Rm9yV2lu
ZG93RXZlbnRzID0gMDsKLSAgICBpZiAoZXZlbnQtPnR5cGUoKSAhPSBldmVudE5hbWVzKCkubG9h
ZEV2ZW50KSB7Ci0gICAgICAgIE5vZGUqIHRvcExldmVsQ29udGFpbmVyID0gYW5jZXN0b3JzLmlz
RW1wdHkoKSA/IHRoaXMgOiBhbmNlc3RvcnMubGFzdCgpLmdldCgpOwotICAgICAgICBpZiAodG9w
TGV2ZWxDb250YWluZXItPmlzRG9jdW1lbnROb2RlKCkpCi0gICAgICAgICAgICB0YXJnZXRGb3JX
aW5kb3dFdmVudHMgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHRvcExldmVsQ29udGFpbmVyKS0+
ZG9tV2luZG93KCk7Ci0gICAgfQorICAgIFdpbmRvd0V2ZW50Q29udGV4dCB3aW5kb3coZXZlbnQu
Z2V0KCksIHRoaXMsIGFuY2VzdG9ycyk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFBh
Z2UqIGluc3BlY3RlZFBhZ2UgPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnN0YW5jZUNvdW50
KCkgPyBkb2N1bWVudCgpLT5wYWdlKCkgOiAwOwogICAgIGlmIChpbnNwZWN0ZWRQYWdlKSB7Ci0g
ICAgICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gZXZlbnRI
YXNMaXN0ZW5lcnMoZXZlbnQtPnR5cGUoKSwgdGFyZ2V0Rm9yV2luZG93RXZlbnRzLCB0aGlzLCBh
bmNlc3RvcnMpID8gaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIDogMCkK
KyAgICAgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBldmVu
dEhhc0xpc3RlbmVycyhldmVudC0+dHlwZSgpLCB3aW5kb3cud2luZG93KCksIHRoaXMsIGFuY2Vz
dG9ycykgPyBpbnNwZWN0ZWRQYWdlLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgOiAwKQogICAg
ICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbERpc3BhdGNoRXZlbnQoKmV2ZW50KTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgaW5zcGVjdGVkUGFnZSA9IDA7CkBAIC0yNjM3LDIyICsyNjM3
LDE3IEBAIGJvb2wgTm9kZTo6ZGlzcGF0Y2hHZW5lcmljRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4g
cHJwRXZlbnQpCiAgICAgLy8gVHJpZ2dlciBjYXB0dXJpbmcgZXZlbnQgaGFuZGxlcnMsIHN0YXJ0
aW5nIGF0IHRoZSB0b3AgYW5kIHdvcmtpbmcgb3VyIHdheSBkb3duLgogICAgIGV2ZW50LT5zZXRF
dmVudFBoYXNlKEV2ZW50OjpDQVBUVVJJTkdfUEhBU0UpOwogCi0gICAgaWYgKHRhcmdldEZvcldp
bmRvd0V2ZW50cykgewotICAgICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh0YXJnZXRGb3JX
aW5kb3dFdmVudHMpOwotICAgICAgICB0YXJnZXRGb3JXaW5kb3dFdmVudHMtPmZpcmVFdmVudExp
c3RlbmVycyhldmVudC5nZXQoKSk7Ci0gICAgICAgIGlmIChldmVudC0+cHJvcGFnYXRpb25TdG9w
cGVkKCkpCi0gICAgICAgICAgICBnb3RvIGRvbmVEaXNwYXRjaGluZzsKLSAgICB9CisgICAgaWYg
KHdpbmRvdy5oYW5kbGVMb2NhbEV2ZW50cyhldmVudC5nZXQoKSkgJiYgZXZlbnQtPnByb3BhZ2F0
aW9uU3RvcHBlZCgpKQorICAgICAgICBnb3RvIGRvbmVEaXNwYXRjaGluZzsKKwogICAgIGZvciAo
c2l6ZV90IGkgPSBhbmNlc3RvcnMuc2l6ZSgpOyBpOyAtLWkpIHsKLSAgICAgICAgQ29udGFpbmVy
Tm9kZSogYW5jZXN0b3IgPSBhbmNlc3RvcnNbaSAtIDFdLmdldCgpOwotICAgICAgICBldmVudC0+
c2V0Q3VycmVudFRhcmdldChldmVudFRhcmdldFJlc3BlY3RpbmdTVkdUYXJnZXRSdWxlcyhhbmNl
c3RvcikpOwotICAgICAgICBhbmNlc3Rvci0+aGFuZGxlTG9jYWxFdmVudHMoZXZlbnQuZ2V0KCkp
OworICAgICAgICBhbmNlc3RvcnNbaSAtIDFdLmhhbmRsZUxvY2FsRXZlbnRzKGV2ZW50LmdldCgp
KTsKICAgICAgICAgaWYgKGV2ZW50LT5wcm9wYWdhdGlvblN0b3BwZWQoKSkKICAgICAgICAgICAg
IGdvdG8gZG9uZURpc3BhdGNoaW5nOwogICAgIH0KIAogICAgIGV2ZW50LT5zZXRFdmVudFBoYXNl
KEV2ZW50OjpBVF9UQVJHRVQpOwotCisgICAgZXZlbnQtPnNldFRhcmdldChvcmlnaW5hbFRhcmdl
dC5nZXQoKSk7CiAgICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQoZXZlbnRUYXJnZXRSZXNwZWN0
aW5nU1ZHVGFyZ2V0UnVsZXModGhpcykpOwogICAgIGhhbmRsZUxvY2FsRXZlbnRzKGV2ZW50Lmdl
dCgpKTsKICAgICBpZiAoZXZlbnQtPnByb3BhZ2F0aW9uU3RvcHBlZCgpKQpAQCAtMjY2NCwyMSAr
MjY1OSwxNiBAQCBib29sIE5vZGU6OmRpc3BhdGNoR2VuZXJpY0V2ZW50KFBhc3NSZWZQdHI8RXZl
bnQ+IHBycEV2ZW50KQogCiAgICAgICAgIHNpemVfdCBzaXplID0gYW5jZXN0b3JzLnNpemUoKTsK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAg
IENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0gYW5jZXN0b3JzW2ldLmdldCgpOwotICAgICAgICAg
ICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQoZXZlbnRUYXJnZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0
UnVsZXMoYW5jZXN0b3IpKTsKLSAgICAgICAgICAgIGFuY2VzdG9yLT5oYW5kbGVMb2NhbEV2ZW50
cyhldmVudC5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoZXZlbnQtPnByb3BhZ2F0aW9uU3RvcHBl
ZCgpIHx8IGV2ZW50LT5jYW5jZWxCdWJibGUoKSkKLSAgICAgICAgICAgICAgICBnb3RvIGRvbmVE
aXNwYXRjaGluZzsKLSAgICAgICAgfQotICAgICAgICBpZiAodGFyZ2V0Rm9yV2luZG93RXZlbnRz
KSB7Ci0gICAgICAgICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh0YXJnZXRGb3JXaW5kb3dF
dmVudHMpOwotICAgICAgICAgICAgdGFyZ2V0Rm9yV2luZG93RXZlbnRzLT5maXJlRXZlbnRMaXN0
ZW5lcnMoZXZlbnQuZ2V0KCkpOworICAgICAgICAgICAgYW5jZXN0b3JzW2ldLmhhbmRsZUxvY2Fs
RXZlbnRzKGV2ZW50LmdldCgpKTsKICAgICAgICAgICAgIGlmIChldmVudC0+cHJvcGFnYXRpb25T
dG9wcGVkKCkgfHwgZXZlbnQtPmNhbmNlbEJ1YmJsZSgpKQogICAgICAgICAgICAgICAgIGdvdG8g
ZG9uZURpc3BhdGNoaW5nOwogICAgICAgICB9CisgICAgICAgIGlmICh3aW5kb3cuaGFuZGxlTG9j
YWxFdmVudHMoZXZlbnQuZ2V0KCkpICYmIChldmVudC0+cHJvcGFnYXRpb25TdG9wcGVkKCkgfHwg
ZXZlbnQtPmNhbmNlbEJ1YmJsZSgpKSkKKyAgICAgICAgICAgIGdvdG8gZG9uZURpc3BhdGNoaW5n
OwogICAgIH0KIAogZG9uZURpc3BhdGNoaW5nOgorICAgIGV2ZW50LT5zZXRUYXJnZXQob3JpZ2lu
YWxUYXJnZXQuZ2V0KCkpOwogICAgIGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KDApOwogICAgIGV2
ZW50LT5zZXRFdmVudFBoYXNlKDApOwogCkBAIC0yNjk5LDggKzI2ODksNyBAQCBkb25lRGlzcGF0
Y2hpbmc6CiAgICAgICAgIGlmIChldmVudC0+YnViYmxlcygpKSB7CiAgICAgICAgICAgICBzaXpl
X3Qgc2l6ZSA9IGFuY2VzdG9ycy5zaXplKCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgICAgIENvbnRhaW5lck5vZGUqIGFuY2Vz
dG9yID0gYW5jZXN0b3JzW2ldLmdldCgpOwotICAgICAgICAgICAgICAgIGFuY2VzdG9yLT5kZWZh
dWx0RXZlbnRIYW5kbGVyKGV2ZW50LmdldCgpKTsKKyAgICAgICAgICAgICAgICBhbmNlc3RvcnNb
aV0ubm9kZSgpLT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50LmdldCgpKTsKICAgICAgICAgICAg
ICAgICBBU1NFUlQoIWV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCkpOwogICAgICAgICAgICAgICAg
IGlmIChldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKICAgICAgICAgICAgICAgICAgICAgZ290byBk
b25lV2l0aERlZmF1bHQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9XZWJDb3Jl
L2RvbS9Ob2RlLmgKaW5kZXggNTg3ZWZmZDBmZTgyMjc0NzY5NTUwNjQ0ZTkyZGVmNWE4MzkyOTQw
YS4uNWZjYjgyODk1NWE0NmFjMjViMmE0YThlYzY0YjY5ODkxZTlmZjVmOSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNDksNiArNDks
NyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIER5bmFtaWNOb2RlTGlzdDsKIGNsYXNzIEVsZW1l
bnQ7CiBjbGFzcyBFdmVudDsKK2NsYXNzIEV2ZW50Q29udGV4dDsKIGNsYXNzIEV2ZW50TGlzdGVu
ZXI7CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRnJhbWU7CkBAIC0yMTIsMTUgKzIxMywxNCBA
QCBwdWJsaWM6CiAgICAgTm9kZSogc2hhZG93QW5jZXN0b3JOb2RlKCk7CiAgICAgTm9kZSogc2hh
ZG93VHJlZVJvb3ROb2RlKCk7CiAgICAgYm9vbCBpc0luU2hhZG93VHJlZSgpOwotCi0gICAgLy8g
VGhlIG5vZGUncyBwYXJlbnQgZm9yIHRoZSBwdXJwb3NlIG9mIGV2ZW50IGNhcHR1cmUgYW5kIGJ1
YmJsaW5nLgotICAgIHZpcnR1YWwgQ29udGFpbmVyTm9kZSogZXZlbnRQYXJlbnROb2RlKCk7Cisg
ICAgLy8gTm9kZSdzIHBhcmVudCBvciBzaGFkb3cgdHJlZSBob3N0LgorICAgIENvbnRhaW5lck5v
ZGUqIHBhcmVudE9ySG9zdE5vZGUoKTsKIAogICAgIC8vIFJldHVybnMgdGhlIGVuY2xvc2luZyBl
dmVudCBwYXJlbnQgbm9kZSAob3Igc2VsZikgdGhhdCwgd2hlbiBjbGlja2VkLCB3b3VsZCB0cmln
Z2VyIGEgbmF2aWdhdGlvbi4KICAgICBOb2RlKiBlbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNl
bGYoKTsKIAotICAgIC8vIE5vZGUgYW5jZXN0b3JzIHdoZW4gY29uY2VybmVkIGFib3V0IGV2ZW50
IGZsb3cKLSAgICB2b2lkIGV2ZW50QW5jZXN0b3JzKFZlY3RvcjxSZWZQdHI8Q29udGFpbmVyTm9k
ZT4gPiAmYW5jZXN0b3JzKTsKKyAgICAvLyBOb2RlIGFuY2VzdG9ycyB3aGVuIGNvbmNlcm5lZCBh
Ym91dCBldmVudCBmbG93LgorICAgIHZvaWQgZXZlbnRBbmNlc3RvcnMoVmVjdG9yPEV2ZW50Q29u
dGV4dD4gJmFuY2VzdG9ycywgRXZlbnRUYXJnZXQqKTsKIAogICAgIGJvb2wgaXNCbG9ja0Zsb3co
KSBjb25zdDsKICAgICBib29sIGlzQmxvY2tGbG93T3JCbG9ja1RhYmxlKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2RvbS9UZXh0LmNwcCBiL1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4
IGNjMjE2ZDhmZmYxY2Q3NDFkMjhmODhkODM0MWZiOGMzNTRkZTliMmUuLmRhOTgwOWIzM2RlNWU4
ODIyY2M1Mjg5NzQ4YjgyZDQwY2NmNWYyMzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1RleHQu
Y3BwCisrKyBiL1dlYkNvcmUvZG9tL1RleHQuY3BwCkBAIC0yMzksMTAgKzIzOSwxMSBAQCBib29s
IFRleHQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUgKnN0eWxlKQogCiBSZW5kZXJPYmpl
Y3QqIFRleHQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUq
KQogeworICAgIE5vZGUqIHBhcmVudE9ySG9zdCA9IHBhcmVudE9ySG9zdE5vZGUoKTsKICNpZiBF
TkFCTEUoU1ZHKQotICAgIGlmIChwYXJlbnROb2RlKCktPmlzU1ZHRWxlbWVudCgpCisgICAgaWYg
KHBhcmVudE9ySG9zdC0+aXNTVkdFbGVtZW50KCkKICNpZiBFTkFCTEUoU1ZHX0ZPUkVJR05fT0JK
RUNUKQotICAgICAgICAmJiAhcGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmb3Jl
aWduT2JqZWN0VGFnKQorICAgICAgICAmJiAhcGFyZW50T3JIb3N0LT5oYXNUYWdOYW1lKFNWR05h
bWVzOjpmb3JlaWduT2JqZWN0VGFnKQogI2VuZGlmCiAgICAgKQogICAgICAgICByZXR1cm4gbmV3
IChhcmVuYSkgUmVuZGVyU1ZHSW5saW5lVGV4dCh0aGlzLCBkYXRhSW1wbCgpKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBjMWMyMWI2YzM4MzlhN2RkYjE1MmRl
YmM1ODM2NDIxMjMwYTUwNTE1Li4yZDVmNjM0YjU0MTU3M2UwMTJlYjIyMWI5MjJhOTBiMTk0N2Ux
OWZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC01MSw2ICs1
MSw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudFR5cGUuaCIK
ICNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50Q29udGV4dC5oIgogI2luY2x1ZGUg
IkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZl
bnRUYXJnZXQuaCIKQEAgLTU5NywxMyArNTk4LDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShsb25nIG5vZGVJZCwgbG9uZyogb3V0Tm9kZUlkLCBS
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRoZSBOb2RlJ3MgRXZlbnQgQW5jZXN0b3JzIChu
b3QgaW5jbHVkaW5nIHNlbGYpCi0gICAgVmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+IGFu
Y2VzdG9yczsKLSAgICBub2RlLT5ldmVudEFuY2VzdG9ycyhhbmNlc3RvcnMpOworICAgIFZlY3Rv
cjxFdmVudENvbnRleHQ+IGFuY2VzdG9yczsKKyAgICBub2RlLT5ldmVudEFuY2VzdG9ycyhhbmNl
c3RvcnMsIG5vZGUpOwogCiAgICAgLy8gTm9kZXMgYW5kIHRoZWlyIExpc3RlbmVycyBmb3IgdGhl
IGNvbmNlcm5lZCBldmVudCB0eXBlcyAob3JkZXIgaXMgdG9wIHRvIGJvdHRvbSkKICAgICBWZWN0
b3I8RXZlbnRMaXN0ZW5lckluZm8+IGV2ZW50SW5mb3JtYXRpb247CiAgICAgZm9yIChzaXplX3Qg
aSA9IGFuY2VzdG9ycy5zaXplKCk7IGk7IC0taSkgewotICAgICAgICBDb250YWluZXJOb2RlKiBh
bmNlc3RvciA9IGFuY2VzdG9yc1tpIC0gMV0uZ2V0KCk7CisgICAgICAgIE5vZGUqIGFuY2VzdG9y
ID0gYW5jZXN0b3JzW2kgLSAxXS5ub2RlKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBq
IDwgZXZlbnRUeXBlc0xlbmd0aDsgKytqKSB7CiAgICAgICAgICAgICBBdG9taWNTdHJpbmcmIHR5
cGUgPSBldmVudFR5cGVzW2pdOwogICAgICAgICAgICAgaWYgKGFuY2VzdG9yLT5oYXNFdmVudExp
c3RlbmVycyh0eXBlKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
IGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZDM3MDlmYmQ0YWFjNjY5MmZl
YTdlZmQ1ZjRmYjY2OTQxOTc3M2EzNy4uYjdmMWIwOWFkMzk3MDcxNWFhNzk4MmUwOWZmYmFlNTU3
NGI1MzNlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTE3NjMsOCArMTc2Myw2IEBAIHZvaWQg
RXZlbnRIYW5kbGVyOjp1cGRhdGVNb3VzZUV2ZW50VGFyZ2V0Tm9kZShOb2RlKiB0YXJnZXROb2Rl
LCBjb25zdCBQbGF0Zm9ybU1vCiAgICAgICAgIC8vIElmIHRoZSB0YXJnZXQgbm9kZSBpcyBhIHRl
eHQgbm9kZSwgZGlzcGF0Y2ggb24gdGhlIHBhcmVudCBub2RlIC0gcmRhcjovLzQxOTY2NDYKICAg
ICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQtPmlzVGV4dE5vZGUoKSkKICAgICAgICAgICAgIHJl
c3VsdCA9IHJlc3VsdC0+cGFyZW50Tm9kZSgpOwotICAgICAgICBpZiAocmVzdWx0KQotICAgICAg
ICAgICAgcmVzdWx0ID0gcmVzdWx0LT5zaGFkb3dBbmNlc3Rvck5vZGUoKTsKICAgICB9CiAgICAg
bV9ub2RlVW5kZXJNb3VzZSA9IHJlc3VsdDsKICNpZiBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApp
bmRleCAxYjE5ZjI1NDhhYWQ0ZGJhMGMxYzMwYjlhNTkzNjY0ZmE4ZTVjMDg5Li5iOWM5YTY2NzEx
M2M3MDc3MThhMmIyM2I1Yzc3MTUwZjFkNDgxMDY1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMzMyLDEz
ICszMzIsNiBAQCB2b2lkIFNWR0VsZW1lbnQ6OnVwZGF0ZUFuaW1hdGVkU1ZHQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiAgICAgY2xlYXJJc1N5bmNocm9uaXppbmdT
VkdBdHRyaWJ1dGVzKCk7CiB9CiAKLUNvbnRhaW5lck5vZGUqIFNWR0VsZW1lbnQ6OmV2ZW50UGFy
ZW50Tm9kZSgpCi17Ci0gICAgaWYgKENvbnRhaW5lck5vZGUqIHNoYWRvd1BhcmVudCA9IHNoYWRv
d1BhcmVudE5vZGUoKSkKLSAgICAgICAgcmV0dXJuIHNoYWRvd1BhcmVudDsKLSAgICByZXR1cm4g
U3R5bGVkRWxlbWVudDo6ZXZlbnRQYXJlbnROb2RlKCk7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShTVkcpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggYi9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggZmIyODI3OWNmODU1NjcxODdkMzM4YzdhZjE2MGVjMDZk
YTBhYzc3Yi4uMTI3MWM3YjQzYThhYTY2MzQ2OGZkNThhZDAyM2NiZjUxZjgyYmYyMSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuaApAQCAtOTYsOCArOTYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmly
dHVhbCBib29sIGlzU3VwcG9ydGVkKFN0cmluZ0ltcGwqIGZlYXR1cmUsIFN0cmluZ0ltcGwqIHZl
cnNpb24pIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgQ29udGFpbmVyTm9kZSogZXZlbnRQYXJl
bnROb2RlKCk7Ci0KICAgICAgICAgdmlydHVhbCBib29sIG5lZWRzUGVuZGluZ1Jlc291cmNlSGFu
ZGxpbmcoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBidWls
ZFBlbmRpbmdSZXNvdXJjZSgpIHsgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69640</attachid>
            <date>2010-10-04 09:06:04 -0700</date>
            <delta_ts>2010-10-04 12:17:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46015-20101004090602.patch</filename>
            <type>text/plain</type>
            <size>33525</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxODgxNzBhYTc2N2YyYjUzYTVlZTc5M2YxMzc1YTlmMTAwYjM3NmM4Li5iNjYwN2U1
NjVhNzUwMDZmM2UzYTRmMWMxZjliNjUxYWNmNjc4NGEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMTAtMDEgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
c2hhZG93IERPTS1hd2FyZSBldmVudCB0YXJnZXRpbmcgYW5kIGludHJvZHVjZSBFdmVudENvbnRl
eHQgdG8gdHJhY2sgdGhlIGNvbnRleHQgb2YgZWFjaCBldmVudCBkaXNwYXRjaC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MDE1CisKKyAgICAgICAg
VHVuZWQgdGhlIHRlc3QgdG8gYmV0dGVyIHJlZmxlY3QgaXRzIHBvaW50OiB0aGUgZXZlbiBzaG91
bGQgaW5kZWVkIGZpcmUgKGl0IHVzZWQgdG8gYmUgc3dhbGxvd2VkKSwKKyAgICAgICAgYnV0IGl0
J3MgdGFyZ2V0IHNob3VsZCBiZSBhIG5vbi1zaGFkb3cgbm9kZS4KKworICAgICAgICAqIGZhc3Qv
ZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9zc2luZy5odG1sOiBNb2RpZmllZCB0aGUgdGVzdC4K
KwogMjAxMC0xMC0wMSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAg
U3VwcG9ydCBmb3IgdGVzdGluZyBOUE5fR2V0VmFsdWUoTlBOVm5ldHNjYXBlV2luZG93KQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2hhZG93LWJvdW5kYXJ5LWNyb3NzaW5n
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3Npbmcu
aHRtbAppbmRleCA2MjNlMDY3M2VjMWNmMzYyNTZmNWVjMTM2N2Q3Y2EzOWJhYmI0MTUzLi4wZTg3
ZmQ3NDU1N2M1NWZhZWIxMTM1NDM3YjY1MWU1Y2U1YzBjNDIxIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRtbApAQCAtMiwx
MSArMiwxMSBAQAogPGhlYWQ+CiAgICAgPHRpdGxlPjwvdGl0bGU+CiAgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICB2YXIgZmlyZWQgPSBmYWxzZTsKKyAgICAgICAg
dmFyIHN1Y2Nlc3M7CiAKICAgICAgICAgZnVuY3Rpb24gc2VsZWN0U3RhcnQoZXZlbnQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGZpcmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBl
dmVudC50YXJnZXQucGFyZW50Tm9kZTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIHRl
c3QoKQpAQCAtMjMsNyArMjMsNyBAQAogICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3du
KCk7CiAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CiAKLSAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lclRleHQgPSBmaXJlZCA/ICJGQUlM
IiA6ICJQQVNTIjsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQi
KS5pbm5lclRleHQgPSAhc3VjY2VzcyA/ICJGQUlMIiA6ICJQQVNTIjsKICAgICAgICAgfQogCiAg
ICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdHN0YXJ0Iiwgc2VsZWN0U3RhcnQsIHRydWUp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9BbmRyb2lkLm1rIGIvV2ViQ29yZS9BbmRyb2lkLm1rCmlu
ZGV4IGY5ZGM4NDJiOThhODJiMWEyZDkxYWQ1YjQ4YjliYTEzNzY1ZjUyMDIuLjY4ZjU1MGQyMmFh
M2NiOWJmNjA1NjYwOTMyZGNmOTA0Yjc3ZTFjOTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQW5kcm9p
ZC5taworKysgYi9XZWJDb3JlL0FuZHJvaWQubWsKQEAgLTEzMiw2ICsxMzIsNyBAQCBMT0NBTF9T
UkNfRklMRVMgOj0gJChMT0NBTF9TUkNfRklMRVMpIFwKIAlkb20vRW50aXR5UmVmZXJlbmNlLmNw
cCBcCiAJZG9tL0Vycm9yRXZlbnQuY3BwIFwKIAlkb20vRXZlbnQuY3BwIFwKKwlkb20vRXZlbnRD
b250ZXh0LmNwcCBcCiAJZG9tL0V2ZW50TmFtZXMuY3BwIFwKIAlkb20vRXZlbnRUYXJnZXQuY3Bw
IFwKIAlkb20vRXhjZXB0aW9uQmFzZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dCBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDEwZDU5YmMxZjY0NTc5YjRj
NmEzYzY1NDA2ZjA3Yzc2YWYzN2FiNy4uZDk1YmFmNDgxY2UwMTc4ZWFjMWIxZWEzMWJjMDIxYjE4
Y2E5NjRlNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC04MTgsNiArODE4LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwog
ICAgIGRvbS9FbnRpdHlSZWZlcmVuY2UuY3BwCiAgICAgZG9tL0Vycm9yRXZlbnQuY3BwCiAgICAg
ZG9tL0V2ZW50LmNwcAorICAgIGRvbS9FdmVudENvbnRleHQuY3BwCiAgICAgZG9tL0V2ZW50TmFt
ZXMuY3BwCiAgICAgZG9tL0V2ZW50VGFyZ2V0LmNwcAogICAgIGRvbS9FeGNlcHRpb25CYXNlLmNw
cApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAzYjg1MTY0ZjU4YzAyOTY5OTUzMDk4OTA1OTM5MTg3NjIwOTY0NzU5Li4wMzY2MTNlYzI4NjZh
Zjk2ZjM0MGIwODczZmI5MDFlZjBiZGFmNTU3IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEwLTEwLTAxICBE
aW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHNoYWRvdyBET00tYXdh
cmUgZXZlbnQgdGFyZ2V0aW5nIGFuZCBpbnRyb2R1Y2UgRXZlbnRDb250ZXh0IHRvIHRyYWNrIHRo
ZSBjb250ZXh0IG9mIGVhY2ggZXZlbnQgZGlzcGF0Y2guCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjAxNQorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRk
cyB0aGUgbm90aW9uIG9mIEV2ZW50Q29udGV4dCAoYW5kIGEgdmVyeSBzaW1pbGFyLWFjdGluZyBX
aW5kb3dFdmVudENvbnRleHQsIHNwZWNpZmljYWxseQorICAgICAgICBmb3IgRE9NV2luZG93KSwg
YW4gYWJzdHJhY3Rpb24gdGhhdCBjYXJyaWVzIGluZm9ybWF0aW9uIGFyb3VuZCBkaXNwYXRjaGlu
ZyBhbiBldmVudCBmb3IgYW55IGdpdmVuIE5vZGUuCisKKyAgICAgICAgVGhpcyBhYnN0cmFjdGlv
biBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoYXQgZXZlbnRzLCBmaXJlZCBmcm9tIHNoYWRvdyBE
T00gbm9kZXMgYXJlIHByb3Blcmx5IHJldGFyZ2V0ZWQgdG8KKyAgICAgICAgYXBwZWFyIGFzIGlm
IHRoZXkgYXJlIGNvbWluZyBmcm9tIHRoZWlyIGhvc3QsIHRodXMgbmV2ZXIgZXhwb3NpbmcgdGhl
IHNoYWRvdyBET00gbm9kZXMgdG8gdGhlIHdvcmxkIG91dHNpZGUuCisKKyAgICAgICAgKiBBbmRy
b2lkLm1rOiBBZGRlZCBFdmVudENvbnRleHQgZmlsZXMuCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6IERpdHRvLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUucHJvOiBEaXR0by4KKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAq
IGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vdGlmeUNoaWxkSW5z
ZXJ0ZWQpOiBDaGFuZ2VkIHRvIGJlIHNoYWRvdyBET00tYXdhcmUuCisgICAgICAgICogZG9tL0V2
ZW50Q29udGV4dC5jcHA6IEFkZGVkLgorICAgICAgICAqIGRvbS9FdmVudENvbnRleHQuaDogQWRk
ZWQuCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bWFy
a0FuY2VzdG9yc1dpdGhDaGlsZE5lZWRzU3R5bGVSZWNhbGMpOiBDaGFuZ2VkIHRvIGJlIHNoYWRv
dyBET00tYXdhcmUuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpjcmVhdGVSZW5kZXJlcklmTmVl
ZGVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpwYXJlbnRPckhvc3ROb2RlKTog
QWRkZWQgbmV3IGhlbHBlciBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjplbmNsb3Np
bmdMaW5rRXZlbnRQYXJlbnRPclNlbGYpOiBDaGFuZ2VkIHRvIGJlIHNoYWRvdyBET00tYXdhcmUu
CisgICAgICAgIChXZWJDb3JlOjpldmVudFRhcmdldFJlc3BlY3RpbmdTVkdUYXJnZXRSdWxlcyk6
IENvbGxhcHNlZCB0d28gaGVscGVyIG1ldGhvZHMgaW50byBvbmUuCisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpldmVudEFuY2VzdG9ycyk6IFJlZmFjdG9yZWQgdG8gY29sbGVjdCBhIHZlY3RvciBv
ZiBFdmVudENvbnRleHRzLgorICAgICAgKFdlYkNvcmU6OmV2ZW50SGFzTGlzdGVuZXJzKTogQ2hh
bmdlZCB0byB1c2UgRXZlbnRDb250ZXh0cy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpc3Bh
dGNoR2VuZXJpY0V2ZW50KTogRGl0dG8uCisgICAgICAgICogZG9tL05vZGUuaDogUmVtb3ZlZCBl
dmVudFBhcmVudE5vZGUgdGhhdCdzIG5vIGxvbmdlciBuZWVkZWQsIGFkZGVkIHBhcmVudE9ySG9z
dE5vZGUgZGVjbCwKKyAgICAgICAgICAgIGFuZCBjaGFuZ2VkIHNpZ25hdHVyZSBvZiBldmVudEFu
Y2VzdG9ycyB0byB1c2UgRXZlbnRDb250ZXh0cy4KKyAgICAgICAgKiBkb20vVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0OjpjcmVhdGVSZW5kZXJlcik6IENoYW5nZWQgdG8gYmUgc2hh
ZG93IERPTS1hd2FyZS4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJz
Rm9yTm9kZSk6IENoYW5nZWQgdG8gdXNlIEV2ZW50Q29udGV4dHMuCisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVN
b3VzZUV2ZW50VGFyZ2V0Tm9kZSk6IFJlbW92ZWQgY29kZSB0aGF0J3Mgbm8gbG9uZ2VyIG5lY2Vz
c2FyeS4KKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6IFJlbW92ZWQgZXZlbnRQYXJlbnRO
b2RlIHRoYXQncyBubyBsb25nZXIgbmVlZGVkLgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6
IERpdHRvLgorCiAyMDEwLTEwLTAxICBSYWduZXIgTWFnYWxoYWVzICA8cmFnbmVyLm1hZ2FsaGFl
c0BvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hy
aXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KaW5kZXggYTc0Mzk4MzllMzJjMTY4Y2ViYzIyNDdlYWFkMjYyMmE1Yjhi
MTRiZS4uNDZkZTk5NDdmYzg2MWE3ZTg4ZjM1NmNjM2JlOTM0NDVlOTRlOGZiNiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBA
IC0xMTIxLDggKzExMjEsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2RvbS9F
cnJvckV2ZW50LmNwcCBcCiAJV2ViQ29yZS9kb20vRXJyb3JFdmVudC5oIFwKIAlXZWJDb3JlL2Rv
bS9FdmVudC5jcHAgXAotCVdlYkNvcmUvZG9tL0V2ZW50RXhjZXB0aW9uLmggXAogCVdlYkNvcmUv
ZG9tL0V2ZW50LmggXAorCVdlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5jcHAgXAorCVdlYkNvcmUv
ZG9tL0V2ZW50Q29udGV4dC5oIFwKKwlXZWJDb3JlL2RvbS9FdmVudEV4Y2VwdGlvbi5oIFwKIAlX
ZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmggXAogCVdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuY3Bw
IFwKIAlXZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBlOWFlZjdiODM5MzY4ZmI0ZjVk
YWYyYjM0NDM4Yzk3ZDllOTdhMGNhLi44OGE0M2E4MzM5ZTdkZmI1MmI0MzJkNmJmNWQ3YzY0MzE3
Zjg4YjliIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtMTE5Miw2ICsxMTkyLDggQEAKICAgICAgICAgICAgICdkb20vRXJyb3JF
dmVudC5oJywKICAgICAgICAgICAgICdkb20vRXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20v
RXZlbnQuaCcsCisgICAgICAgICAgICAnZG9tL0V2ZW50Q29udGV4dC5jcHAnLAorICAgICAgICAg
ICAgJ2RvbS9FdmVudENvbnRleHQuaCcsCiAgICAgICAgICAgICAnZG9tL0V2ZW50RXhjZXB0aW9u
LmgnLAogICAgICAgICAgICAgJ2RvbS9FdmVudExpc3RlbmVyLmgnLAogICAgICAgICAgICAgJ2Rv
bS9FdmVudE5hbWVzLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2Vi
Q29yZS9XZWJDb3JlLnBybwppbmRleCA0NWUwOWVhOGI5MjM5MWUxMmUzYjY5ZDEzNzk5ZjI4MWNh
NTZmMmNmLi5kNWFkNGRmZmE4MmFkMWExMWYxYmNlZTAwNTBhMzFjNTRlZDJmOTFkIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTcw
OCw2ICs3MDgsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vRW50aXR5UmVmZXJlbmNlLmNwcCBc
CiAgICAgZG9tL0Vycm9yRXZlbnQuY3BwIFwKICAgICBkb20vRXZlbnQuY3BwIFwKKyAgICBkb20v
RXZlbnRDb250ZXh0LmNwcCBcCiAgICAgZG9tL0V2ZW50TmFtZXMuY3BwIFwKICAgICBkb20vRXZl
bnRUYXJnZXQuY3BwIFwKICAgICBkb20vRXhjZXB0aW9uQmFzZS5jcHAgXApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MDAwNzI2ODg0NzE5MTJhNGIzZDdl
YTViYWU2YmI4ZjhlZmMzZWUzLi45OGFkOTRmYjhmYTc5ZjU3N2FlZDQ4N2MzNmU4MGFiZWRjZmE4
NWJiIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODY1
LDYgKzg2NSw4IEBACiAJCTQxMTA0NjQxMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVudExp
c3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTEwNDYzRjBGQTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5lci5oICovOyB9Owog
CQk0MTEwNDY0MjBGQTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwNDY0MDBGQTIy
MkE2MDBCQTQzNkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgKi87IH07CiAJCTQxMjdENTM3
MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2Ny
aXB0U3RhdGUuY3BwICovOyB9OworCQk0MTM4RDMzNTEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRD
b250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTM4RDMzMzEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggKi87IH07CisJCTQxMzhE
MzM2MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzOEQzMzQxMjQ0MDU0ODAwMzIzRDMzIC8q
IEV2ZW50Q29udGV4dC5jcHAgKi87IH07CiAJCTQxNjJBNDUwMTAxMTQ1QUUwMERGRjNFRCAvKiBE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxNjJBNDREMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0LmNwcCAqLzsgfTsKIAkJNDE2MkE0NTExMDExNDVBRTAwREZGM0VEIC8qIERlZGlj
YXRlZFdvcmtlckNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxNjJBNDRFMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0LmggKi87IH07CiAJCTQxNjJBNDU0MTAxMTQ1RTMwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdv
cmtlckNvbnRleHRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE2MkE0NTMxMDExNDVFMzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2Vy
Q29udGV4dEN1c3RvbS5jcHAgKi87IH07CkBAIC02ODUyLDYgKzY4NTQsOCBAQAogCQk0MTEwNDYz
RjBGQTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5lci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRFdmVudExpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxMTA0NjQwMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVudExp
c3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEV2
ZW50TGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI3RDUzNjBG
OEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2NyaXB0U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTM4RDMzMzEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MTM4RDMzNDEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50Q29udGV4dC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNjJBNDREMTAxMTQ1QUUwMERGRjNFRCAv
KiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwOyBwYXRoID0gd29ya2Vycy9EZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2
MkE0NEUxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oOyBwYXRo
ID0gd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxNjJBNDRGMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmlk
bDsgcGF0aCA9IHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNzkyMSw2ICsxNzkyNSw4IEBACiAJCQkJODUwMzFCMkIwQTQ0
RUZDNzAwRjk5MkUwIC8qIEV2ZW50LmNwcCAqLywKIAkJCQk4NTAzMUIyQzBBNDRFRkM3MDBGOTky
RTAgLyogRXZlbnQuaCAqLywKIAkJCQkxNEU4MzZEMjA5Rjg1MTIwMDBCODVBRTQgLyogRXZlbnQu
aWRsICovLAorCQkJCTQxMzhEMzM0MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuY3Bw
ICovLAorCQkJCTQxMzhEMzMzMTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuaCAqLywK
IAkJCQlCQzYwRDkwOTBEMkExN0NFMDBCOTkxOEYgLyogRXZlbnRFeGNlcHRpb24uaCAqLywKIAkJ
CQlCQzYwRDkwQTBEMkExN0NFMDBCOTkxOEYgLyogRXZlbnRFeGNlcHRpb24uaWRsICovLAogCQkJ
CTkzNUZCQzQ0MDlCQTAwQjkwMEUyMzBCMSAvKiBFdmVudExpc3RlbmVyLmggKi8sCkBAIC0xOTIy
Niw2ICsxOTIzMiw3IEBACiAJCQkJODk4Nzg1NjAxMjJDQTA2NDAwM0FBQkRBIC8qIEVycm9yQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTJFQ0Y3QUUyMTAxNjJCNTgwMDQyN0RFNyAvKiBF
cnJvckV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0MjBBNDRFRkM3MDBGOTkyRTAg
LyogRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxMzhEMzM1MTI0NDA1NDgwMDMyM0QzMyAv
KiBFdmVudENvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEOTBDMEQyQTE3Q0UwMEI5
OTE4RiAvKiBFdmVudEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDMDlBNTMwQjA2
NERCMzAwNUFCRDREIC8qIEV2ZW50SGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1RkJD
NDUwOUJBMDBCOTAwRTIzMEIxIC8qIEV2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
MjE4MTEsNiArMjE4MTgsNyBAQAogCQkJCTg5ODc4NTVEMTIyQ0EwNjQwMDNBQUJEQSAvKiBFbnRy
eUFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQ0Y3QUUxMTAxNjJCNTgwMDQyN0RFNyAv
KiBFcnJvckV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMxQjQxMEE0NEVGQzcwMEY5
OTJFMCAvKiBFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTM4RDMzNjEyNDQwNTQ4MDAz
MjNEMzMgLyogRXZlbnRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzQzA5QTgxMEIw
NjRGMDAwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTND
MDlBN0YwQjA2NEVFRjAwNUFCRDREIC8qIEV2ZW50SGFuZGxlck1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTFDQTE5RTA1MERDMjU1OTUwMDY1QTk5NCAvKiBFdmVudExvb3BNYWMubW0gaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggODllYTdiNTg4OGNmZGVhMjNjY2FiYjg2
ZTY5NzM0MTE4MzVlMDg4My4uOWUyOTY3NzkzMjExODEzMWY0OGFjMGE2NWQzNTQxNDhhYWFlMGQ2
NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTEwMDcsNyArMTAwNyw4IEBAIHN0YXRpYyB2b2lk
IG5vdGlmeUNoaWxkSW5zZXJ0ZWQoTm9kZSogY2hpbGQpCiAgICAgUmVmUHRyPE5vZGU+IGMgPSBj
aGlsZDsKICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gY2hpbGQtPmRvY3VtZW50KCk7
CiAKLSAgICBpZiAoYy0+cGFyZW50Tm9kZSgpICYmIGMtPnBhcmVudE5vZGUoKS0+aW5Eb2N1bWVu
dCgpKQorICAgIE5vZGUqIHBhcmVudE9ySG9zdE5vZGUgPSBjLT5wYXJlbnRPckhvc3ROb2RlKCk7
CisgICAgaWYgKHBhcmVudE9ySG9zdE5vZGUgJiYgcGFyZW50T3JIb3N0Tm9kZS0+aW5Eb2N1bWVu
dCgpKQogICAgICAgICBjLT5pbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIGVsc2UKICAgICAg
ICAgYy0+aW5zZXJ0ZWRJbnRvVHJlZSh0cnVlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V2
ZW50Q29udGV4dC5jcHAgYi9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAxMjIyZjYyZjlhM2E3ZjgwMmRkMDc4ZDExMTk0MWE1NTFhZTExYzMKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwCkBAIC0wLDAgKzEsMTAyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXZlbnRDb250ZXh0Lmgi
CisKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1
ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiTm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0V2ZW50Q29udGV4dDo6RXZlbnRDb250ZXh0KE5vZGUqIG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJy
ZW50VGFyZ2V0LCBFdmVudFRhcmdldCogdGFyZ2V0KQorICAgIDogbV9ub2RlKG5vZGUpCisgICAg
LCBtX2N1cnJlbnRUYXJnZXQoY3VycmVudFRhcmdldCkKKyAgICAsIG1fdGFyZ2V0KHRhcmdldCkK
K3sKK30KKworTm9kZSogRXZlbnRDb250ZXh0Ojpub2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9ub2RlLmdldCgpOworfQorCitFdmVudFRhcmdldCogRXZlbnRDb250ZXh0Ojp0YXJnZXQoKSBj
b25zdAoreworICAgIHJldHVybiBtX3RhcmdldC5nZXQoKTsKK30KKwordm9pZCBFdmVudENvbnRl
eHQ6OmhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KiBldmVudCkgY29uc3QKK3sKKyAgICBldmVudC0+
c2V0VGFyZ2V0KG1fdGFyZ2V0LmdldCgpKTsKKyAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCht
X2N1cnJlbnRUYXJnZXQuZ2V0KCkpOworICAgIG1fbm9kZS0+aGFuZGxlTG9jYWxFdmVudHMoZXZl
bnQpOworfQorCitXaW5kb3dFdmVudENvbnRleHQ6OldpbmRvd0V2ZW50Q29udGV4dChFdmVudCog
ZXZlbnQsIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxFdmVudENvbnRleHQ+JiBhbmNlc3RvcnMp
Cit7CisgICAgLy8gV2UgZG9uJ3QgZGlzcGF0Y2ggbG9hZCBldmVudHMgdG8gdGhlIHdpbmRvdy4g
VGhhdCBxdWlyayB3YXMgb3JpZ2luYWxseQorICAgIC8vIGFkZGVkIGJlY2F1c2UgTW96aWxsYSBk
b2Vzbid0IHByb3BhZ2F0ZSBsb2FkIGV2ZW50cyB0byB0aGUgd2luZG93IG9iamVjdC4KKyAgICBp
ZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubG9hZEV2ZW50KQorICAgICAgICByZXR1
cm47CisKKyAgICBFdmVudFRhcmdldCogdGFyZ2V0Rm9yV2luZG93RXZlbnRzID0gbm9kZTsKKyAg
ICBOb2RlKiB0b3BMZXZlbENvbnRhaW5lciA9IG5vZGU7CisgICAgaWYgKCFhbmNlc3RvcnMuaXNF
bXB0eSgpKSB7CisgICAgICAgIHRvcExldmVsQ29udGFpbmVyID0gYW5jZXN0b3JzLmxhc3QoKS5u
b2RlKCk7CisgICAgICAgIHRhcmdldEZvcldpbmRvd0V2ZW50cyA9IGFuY2VzdG9ycy5sYXN0KCku
dGFyZ2V0KCk7CisgICAgfQorICAgIGlmICghdG9wTGV2ZWxDb250YWluZXItPmlzRG9jdW1lbnRO
b2RlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fd2luZG93ID0gc3RhdGljX2Nhc3Q8RG9j
dW1lbnQqPih0b3BMZXZlbENvbnRhaW5lciktPmRvbVdpbmRvdygpOworICAgIG1fdGFyZ2V0ID0g
dGFyZ2V0Rm9yV2luZG93RXZlbnRzOworfQorCitET01XaW5kb3cqIFdpbmRvd0V2ZW50Q29udGV4
dDo6d2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93aW5kb3cuZ2V0KCk7Cit9CisKK0V2
ZW50VGFyZ2V0KiBXaW5kb3dFdmVudENvbnRleHQ6OnRhcmdldCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fdGFyZ2V0LmdldCgpOworfQorCitib29sIFdpbmRvd0V2ZW50Q29udGV4dDo6aGFuZGxl
TG9jYWxFdmVudHMoRXZlbnQqIGV2ZW50KQoreworICAgIGlmICghbV93aW5kb3cpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGV2ZW50LT5zZXRUYXJnZXQodGFyZ2V0KCkpOworICAgIGV2
ZW50LT5zZXRDdXJyZW50VGFyZ2V0KHdpbmRvdygpKTsKKyAgICBtX3dpbmRvdy0+ZmlyZUV2ZW50
TGlzdGVuZXJzKGV2ZW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmggYi9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mYzEyNzMyNWUxMjRlNTIxOThmNGJjMjE3ODYxMzFiNDMzNDczODYyCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmgKQEAgLTAsMCArMSw3MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqCisgKi8KKworI2lmbmRlZiBFdmVudENvbnRleHRfaAorI2RlZmluZSBFdmVudENv
bnRleHRfaAorCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDb250YWluZXJOb2RlOworY2xhc3Mg
RE9NV2luZG93OworY2xhc3MgRXZlbnRUYXJnZXQ7CitjbGFzcyBFdmVudDsKK2NsYXNzIE5vZGU7
CisKK2NsYXNzIEV2ZW50Q29udGV4dCB7CitwdWJsaWM6CisgICAgRXZlbnRDb250ZXh0KE5vZGUq
LCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCk7CisKKyAg
ICBOb2RlKiBub2RlKCkgY29uc3Q7CisgICAgRXZlbnRUYXJnZXQqIHRhcmdldCgpIGNvbnN0Owor
ICAgIHZvaWQgaGFuZGxlTG9jYWxFdmVudHMoRXZlbnQqKSBjb25zdDsKKworcHJpdmF0ZToKKyAg
ICBSZWZQdHI8Tm9kZT4gbV9ub2RlOworICAgIFJlZlB0cjxFdmVudFRhcmdldD4gbV9jdXJyZW50
VGFyZ2V0OworICAgIFJlZlB0cjxFdmVudFRhcmdldD4gbV90YXJnZXQ7Cit9OworCitjbGFzcyBX
aW5kb3dFdmVudENvbnRleHQgeworcHVibGljOgorICAgIFdpbmRvd0V2ZW50Q29udGV4dChFdmVu
dCosIE5vZGUqLCBjb25zdCBWZWN0b3I8RXZlbnRDb250ZXh0PiYgYW5jZXN0b3JzKTsKKworICAg
IERPTVdpbmRvdyogd2luZG93KCkgY29uc3Q7CisgICAgRXZlbnRUYXJnZXQqIHRhcmdldCgpIGNv
bnN0OworICAgIGJvb2wgaGFuZGxlTG9jYWxFdmVudHMoRXZlbnQqIGV2ZW50KTsKKworcHJpdmF0
ZToKKyAgICBSZWZQdHI8RE9NV2luZG93PiBtX3dpbmRvdzsKKyAgICBSZWZQdHI8RXZlbnRUYXJn
ZXQ+IG1fdGFyZ2V0OworfTsKKworfQorCisjZW5kaWYgLy8gRXZlbnRDb250ZXh0X2gKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXgg
NTMzOTVhODc1ZTIyNjM3ZTkyNWE1N2MyNzJkYjQ4MmJlOGE1MzAwNC4uN2QyZWI4OWRjMzBiMDFj
YThlZGRiYzM3MzRmN2MwZjBiNjk5NDIyYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTm9kZS5j
cHAKKysrIGIvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRl
ICJEeW5hbWljTm9kZUxpc3QuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXZl
bnQuaCIKKyNpbmNsdWRlICJFdmVudENvbnRleHQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlv
bi5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIu
aCIKQEAgLTcyNCw5ICs3MjUsOSBAQCBpbmxpbmUgdm9pZCBOb2RlOjpzZXRTdHlsZUNoYW5nZShT
dHlsZUNoYW5nZVR5cGUgY2hhbmdlVHlwZSkKIAogaW5saW5lIHZvaWQgTm9kZTo6bWFya0FuY2Vz
dG9yc1dpdGhDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKQogewotICAgIGZvciAoTm9kZSogcCA9IHBh
cmVudE5vZGUoKTsgcCAmJiAhcC0+Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7IHAgPSBwLT5wYXJl
bnROb2RlKCkpCisgICAgZm9yIChOb2RlKiBwID0gcGFyZW50T3JIb3N0Tm9kZSgpOyBwICYmICFw
LT5jaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsgcCA9IHAtPnBhcmVudE9ySG9zdE5vZGUoKSkKICAg
ICAgICAgcC0+c2V0Q2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7Ci0gICAgCisKICAgICBpZiAoZG9j
dW1lbnQoKS0+Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCkpCiAgICAgICAgIGRvY3VtZW50KCktPnNj
aGVkdWxlU3R5bGVSZWNhbGMoKTsKIH0KQEAgLTEzMjMsNyArMTMyNCw3IEBAIHZvaWQgTm9kZTo6
Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgpCiAKICAgICBBU1NFUlQoIXJlbmRlcmVyKCkpOwogICAg
IAotICAgIE5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGUoKTsgICAgCisgICAgTm9kZSogcGFyZW50
ID0gcGFyZW50T3JIb3N0Tm9kZSgpOwogICAgIEFTU0VSVChwYXJlbnQpOwogICAgIAogICAgIFJl
bmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIgPSBwYXJlbnQtPnJlbmRlcmVyKCk7CkBAIC0xNDQ2
LDYgKzE0NDcsMTMgQEAgYm9vbCBOb2RlOjppc0luU2hhZG93VHJlZSgpCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCitDb250YWluZXJOb2RlKiBOb2RlOjpwYXJlbnRPckhvc3ROb2RlKCkKK3sKKyAg
ICBpZiAoQ29udGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZSgpKQorICAgICAgICByZXR1
cm4gcGFyZW50OworICAgIHJldHVybiBzaGFkb3dQYXJlbnROb2RlKCk7Cit9CisKIGJvb2wgTm9k
ZTo6aXNCbG9ja0Zsb3coKSBjb25zdAogewogICAgIHJldHVybiByZW5kZXJlcigpICYmIHJlbmRl
cmVyKCktPmlzQmxvY2tGbG93KCk7CkBAIC0yMjY5LDE0ICsyMjc3LDkgQEAgdm9pZCBOb2RlOjpn
ZXRTdWJyZXNvdXJjZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0CiAgICAgYWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogfQogCi1Db250YWluZXJOb2RlKiBOb2Rl
OjpldmVudFBhcmVudE5vZGUoKQotewotICAgIHJldHVybiBwYXJlbnROb2RlKCk7Ci19Ci0KIE5v
ZGUqIE5vZGU6OmVuY2xvc2luZ0xpbmtFdmVudFBhcmVudE9yU2VsZigpCiB7Ci0gICAgZm9yIChO
b2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPmV2ZW50UGFyZW50Tm9kZSgpKSB7
CisgICAgZm9yIChOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9y
SG9zdE5vZGUoKSkgewogICAgICAgICAvLyBGb3IgaW1hZ2VtYXBzLCB0aGUgZW5jbG9zaW5nIGxp
bmsgbm9kZSBpcyB0aGUgYXNzb2NpYXRlZCBhcmVhIGVsZW1lbnQgbm90IHRoZSBpbWFnZSBpdHNl
bGYuCiAgICAgICAgIC8vIFNvIHdlIGRvbid0IGxldCBpbWFnZXMgYmUgdGhlIGVuY2xvc2luZ0xp
bmtOb2RlLCBldmVuIHRob3VnaCBpc0xpbmsgc29tZXRpbWVzIHJldHVybnMgdHJ1ZQogICAgICAg
ICAvLyBmb3IgdGhlbS4KQEAgLTI1MTQsMTIgKzI1MTcsMTMgQEAgdm9pZCBOb2RlOjpoYW5kbGVM
b2NhbEV2ZW50cyhFdmVudCogZXZlbnQpCiAgICAgZmlyZUV2ZW50TGlzdGVuZXJzKGV2ZW50KTsK
IH0KIAotI2lmIEVOQUJMRShTVkcpCi1zdGF0aWMgaW5saW5lIFNWR0VsZW1lbnRJbnN0YW5jZSog
ZXZlbnRUYXJnZXRBc1NWR0VsZW1lbnRJbnN0YW5jZShOb2RlKiByZWZlcmVuY2VOb2RlKQorc3Rh
dGljIGlubGluZSBFdmVudFRhcmdldCogZXZlbnRUYXJnZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0UnVs
ZXMoTm9kZSogcmVmZXJlbmNlTm9kZSkKIHsKICAgICBBU1NFUlQocmVmZXJlbmNlTm9kZSk7CisK
KyNpZiBFTkFCTEUoU1ZHKQogICAgIGlmICghcmVmZXJlbmNlTm9kZS0+aXNTVkdFbGVtZW50KCkp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gcmVmZXJlbmNlTm9kZTsKIAogICAg
IC8vIFNwZWM6IFRoZSBldmVudCBoYW5kbGluZyBmb3IgdGhlIG5vbi1leHBvc2VkIHRyZWUgd29y
a3MgYXMgaWYgdGhlIHJlZmVyZW5jZWQgZWxlbWVudCBoYWQgYmVlbiB0ZXh0dWFsbHkgaW5jbHVk
ZWQKICAgICAvLyBhcyBhIGRlZXBseSBjbG9uZWQgY2hpbGQgb2YgdGhlICd1c2UnIGVsZW1lbnQs
IGV4Y2VwdCB0aGF0IGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCB0byB0aGUgU1ZHRWxlbWVudEluc3Rh
bmNlIG9iamVjdHMKQEAgLTI1MzMsMzcgKzI1MzcsNDAgQEAgc3RhdGljIGlubGluZSBTVkdFbGVt
ZW50SW5zdGFuY2UqIGV2ZW50VGFyZ2V0QXNTVkdFbGVtZW50SW5zdGFuY2UoTm9kZSogcmVmZXJl
bmMKICAgICAgICAgaWYgKFNWR0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2UgPSBzdGF0aWNfY2Fz
dDxTVkdVc2VFbGVtZW50Kj4oc2hhZG93VHJlZVBhcmVudEVsZW1lbnQpLT5pbnN0YW5jZUZvclNo
YWRvd1RyZWVFbGVtZW50KHJlZmVyZW5jZU5vZGUpKQogICAgICAgICAgICAgcmV0dXJuIGluc3Rh
bmNlOwogICAgIH0KKyNlbmRpZgogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHJlZmVyZW5j
ZU5vZGU7CiB9Ci0jZW5kaWYKIAotc3RhdGljIGlubGluZSBFdmVudFRhcmdldCogZXZlbnRUYXJn
ZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0UnVsZXMoTm9kZSogcmVmZXJlbmNlTm9kZSkKK3ZvaWQgTm9k
ZTo6ZXZlbnRBbmNlc3RvcnMoVmVjdG9yPEV2ZW50Q29udGV4dD4gJmFuY2VzdG9ycywgRXZlbnRU
YXJnZXQqIG9yaWdpbmFsVGFyZ2V0KQogewotICAgIEFTU0VSVChyZWZlcmVuY2VOb2RlKTsKKyAg
ICBpZiAoIWluRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuOwogCi0jaWYgRU5BQkxFKFNWRykK
LSAgICBpZiAoU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZSA9IGV2ZW50VGFyZ2V0QXNTVkdF
bGVtZW50SW5zdGFuY2UocmVmZXJlbmNlTm9kZSkpIHsKLSAgICAgICAgQVNTRVJUKGluc3RhbmNl
LT5zaGFkb3dUcmVlRWxlbWVudCgpID09IHJlZmVyZW5jZU5vZGUpOwotICAgICAgICByZXR1cm4g
aW5zdGFuY2U7Ci0gICAgfQotI2VuZGlmCisgICAgRXZlbnRUYXJnZXQqIHRhcmdldCA9IG9yaWdp
bmFsVGFyZ2V0OworICAgIE5vZGUqIGFuY2VzdG9yID0gdGhpczsKKyAgICBib29sIHNraXAgPSBm
YWxzZTsKKyAgICBkbyB7CisgICAgICAgIGlmIChhbmNlc3Rvci0+aXNTaGFkb3dOb2RlKCkpIHsK
KyAgICAgICAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3ItPnNoYWRvd1BhcmVudE5vZGUoKTsKKyAg
ICAgICAgICAgIGlmICghc2tpcCkKKyAgICAgICAgICAgICAgICB0YXJnZXQgPSBhbmNlc3RvcjsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnRO
b2RlKCk7CiAKLSAgICByZXR1cm4gcmVmZXJlbmNlTm9kZTsKLX0KKyAgICAgICAgaWYgKCFhbmNl
c3RvcikKKyAgICAgICAgICAgIHJldHVybjsKIAotdm9pZCBOb2RlOjpldmVudEFuY2VzdG9ycyhW
ZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4gJmFuY2VzdG9ycykKLXsKLSAgICBpZiAoaW5E
b2N1bWVudCgpKSB7Ci0gICAgICAgIGZvciAoQ29udGFpbmVyTm9kZSogYW5jZXN0b3IgPSBldmVu
dFBhcmVudE5vZGUoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPmV2ZW50UGFyZW50
Tm9kZSgpKSB7CiAjaWYgRU5BQkxFKFNWRykKLSAgICAgICAgICAgIC8vIFNraXAgPHVzZT4gc2hh
ZG93IHRyZWUgZWxlbWVudHMuCi0gICAgICAgICAgICBpZiAoYW5jZXN0b3ItPmlzU1ZHRWxlbWVu
dCgpICYmIGFuY2VzdG9yLT5pc1NoYWRvd05vZGUoKSkKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgLy8gU2tpcCBTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQuCisgICAgICAgIHNr
aXAgPSBhbmNlc3Rvci0+aXNTVkdFbGVtZW50KCkgJiYgYW5jZXN0b3ItPmlzU2hhZG93Tm9kZSgp
OworICAgICAgICBpZiAoc2tpcCkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogI2VuZGlmCi0gICAg
ICAgICAgICBhbmNlc3RvcnMuYXBwZW5kKGFuY2VzdG9yKTsKLSAgICAgICAgfQotICAgIH0KKyAg
ICAgICAgLy8gRklYTUU6IFVucm9sbCB0aGUgZXh0cmEgbG9vcCBpbnNpZGUgZXZlbnRUYXJnZXRS
ZXNwZWN0aW5nU1ZHVGFyZ2V0UnVsZXMgaW50byB0aGlzIGxvb3AuCisgICAgICAgIGFuY2VzdG9y
cy5hcHBlbmQoRXZlbnRDb250ZXh0KGFuY2VzdG9yLCBldmVudFRhcmdldFJlc3BlY3RpbmdTVkdU
YXJnZXRSdWxlcyhhbmNlc3RvciksIHRhcmdldCkpOworCisgICAgfSB3aGlsZSAodHJ1ZSk7CiB9
CiAKIGJvb2wgTm9kZTo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCkK
QEAgLTI1NzcsNyArMjU4NCw3IEBAIGJvb2wgTm9kZTo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRy
PEV2ZW50PiBwcnBFdmVudCkKICAgICByZXR1cm4gZGlzcGF0Y2hHZW5lcmljRXZlbnQoZXZlbnQu
cmVsZWFzZSgpKTsKIH0KIAotc3RhdGljIGJvb2wgZXZlbnRIYXNMaXN0ZW5lcnMoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2RlLCBWZWN0
b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4mIGFuY2VzdG9ycykKK3N0YXRpYyBib29sIGV2ZW50
SGFzTGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqIHdp
bmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFuY2VzdG9ycykK
IHsKICAgICBpZiAod2luZG93ICYmIHdpbmRvdy0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnRUeXBl
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yNTg2LDcgKzI1OTMsNyBAQCBzdGF0aWMgYm9v
bCBldmVudEhhc0xpc3RlbmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2lu
ZG93KiB3aW5kb3csCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhbmNlc3RvcnMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgQ29udGFpbmVyTm9kZSog
YW5jZXN0b3IgPSBhbmNlc3RvcnNbaV0uZ2V0KCk7CisgICAgICAgIE5vZGUqIGFuY2VzdG9yID0g
YW5jZXN0b3JzW2ldLm5vZGUoKTsKICAgICAgICAgaWYgKGFuY2VzdG9yLT5oYXNFdmVudExpc3Rl
bmVycyhldmVudFR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjYw
NiwyMyArMjYxMywxNiBAQCBib29sIE5vZGU6OmRpc3BhdGNoR2VuZXJpY0V2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+IHBycEV2ZW50KQogICAgIC8vIElmIHRoZSBub2RlIGlzIG5vdCBpbiBhIGRvY3Vt
ZW50IGp1c3Qgc2VuZCB0aGUgZXZlbnQgdG8gaXQuCiAgICAgLy8gQmUgc3VyZSB0byByZWYgYWxs
IG9mIG5vZGVzIHNpbmNlIGV2ZW50IGhhbmRsZXJzIGNvdWxkIHJlc3VsdCBpbiB0aGUgbGFzdCBy
ZWZlcmVuY2UgZ29pbmcgYXdheS4KICAgICBSZWZQdHI8Tm9kZT4gdGhpc05vZGUodGhpcyk7Ci0g
ICAgVmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+IGFuY2VzdG9yczsKLSAgICBldmVudEFu
Y2VzdG9ycyhhbmNlc3RvcnMpOworICAgIFJlZlB0cjxFdmVudFRhcmdldD4gb3JpZ2luYWxUYXJn
ZXQoZXZlbnQtPnRhcmdldCgpKTsKKyAgICBWZWN0b3I8RXZlbnRDb250ZXh0PiBhbmNlc3RvcnM7
CisgICAgZXZlbnRBbmNlc3RvcnMoYW5jZXN0b3JzLCBvcmlnaW5hbFRhcmdldC5nZXQoKSk7CiAK
LSAgICAvLyBTZXQgdXAgYSBwb2ludGVyIHRvIGluZGljYXRlIHdoZXRoZXIgLyB3aGVyZSB0byBk
aXNwYXRjaCB3aW5kb3cgZXZlbnRzLgotICAgIC8vIFdlIGRvbid0IGRpc3BhdGNoIGxvYWQgZXZl
bnRzIHRvIHRoZSB3aW5kb3cuIFRoYXQgcXVpcmsgd2FzIG9yaWdpbmFsbHkKLSAgICAvLyBhZGRl
ZCBiZWNhdXNlIE1vemlsbGEgZG9lc24ndCBwcm9wYWdhdGUgbG9hZCBldmVudHMgdG8gdGhlIHdp
bmRvdyBvYmplY3QuCi0gICAgRE9NV2luZG93KiB0YXJnZXRGb3JXaW5kb3dFdmVudHMgPSAwOwot
ICAgIGlmIChldmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpIHsKLSAgICAg
ICAgTm9kZSogdG9wTGV2ZWxDb250YWluZXIgPSBhbmNlc3RvcnMuaXNFbXB0eSgpID8gdGhpcyA6
IGFuY2VzdG9ycy5sYXN0KCkuZ2V0KCk7Ci0gICAgICAgIGlmICh0b3BMZXZlbENvbnRhaW5lci0+
aXNEb2N1bWVudE5vZGUoKSkKLSAgICAgICAgICAgIHRhcmdldEZvcldpbmRvd0V2ZW50cyA9IHN0
YXRpY19jYXN0PERvY3VtZW50Kj4odG9wTGV2ZWxDb250YWluZXIpLT5kb21XaW5kb3coKTsKLSAg
ICB9CisgICAgV2luZG93RXZlbnRDb250ZXh0IHdpbmRvdyhldmVudC5nZXQoKSwgdGhpcywgYW5j
ZXN0b3JzKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgUGFnZSogaW5zcGVjdGVkUGFn
ZSA9IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Omluc3RhbmNlQ291bnQoKSA/IGRvY3VtZW50KCkt
PnBhZ2UoKSA6IDA7CiAgICAgaWYgKGluc3BlY3RlZFBhZ2UpIHsKLSAgICAgICAgaWYgKEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBldmVudEhhc0xpc3RlbmVycyhldmVu
dC0+dHlwZSgpLCB0YXJnZXRGb3JXaW5kb3dFdmVudHMsIHRoaXMsIGFuY2VzdG9ycykgPyBpbnNw
ZWN0ZWRQYWdlLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgOiAwKQorICAgICAgICBpZiAoSW5z
cGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGV2ZW50SGFzTGlzdGVuZXJzKGV2
ZW50LT50eXBlKCksIHdpbmRvdy53aW5kb3coKSwgdGhpcywgYW5jZXN0b3JzKSA/IGluc3BlY3Rl
ZFBhZ2UtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSA6IDApCiAgICAgICAgICAgICB0aW1lbGlu
ZUFnZW50LT53aWxsRGlzcGF0Y2hFdmVudCgqZXZlbnQpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBpbnNwZWN0ZWRQYWdlID0gMDsKQEAgLTI2MzcsMjIgKzI2MzcsMTcgQEAgYm9vbCBOb2Rl
OjpkaXNwYXRjaEdlbmVyaWNFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCkKICAgICAv
LyBUcmlnZ2VyIGNhcHR1cmluZyBldmVudCBoYW5kbGVycywgc3RhcnRpbmcgYXQgdGhlIHRvcCBh
bmQgd29ya2luZyBvdXIgd2F5IGRvd24uCiAgICAgZXZlbnQtPnNldEV2ZW50UGhhc2UoRXZlbnQ6
OkNBUFRVUklOR19QSEFTRSk7CiAKLSAgICBpZiAodGFyZ2V0Rm9yV2luZG93RXZlbnRzKSB7Ci0g
ICAgICAgIGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KHRhcmdldEZvcldpbmRvd0V2ZW50cyk7Ci0g
ICAgICAgIHRhcmdldEZvcldpbmRvd0V2ZW50cy0+ZmlyZUV2ZW50TGlzdGVuZXJzKGV2ZW50Lmdl
dCgpKTsKLSAgICAgICAgaWYgKGV2ZW50LT5wcm9wYWdhdGlvblN0b3BwZWQoKSkKLSAgICAgICAg
ICAgIGdvdG8gZG9uZURpc3BhdGNoaW5nOwotICAgIH0KKyAgICBpZiAod2luZG93LmhhbmRsZUxv
Y2FsRXZlbnRzKGV2ZW50LmdldCgpKSAmJiBldmVudC0+cHJvcGFnYXRpb25TdG9wcGVkKCkpCisg
ICAgICAgIGdvdG8gZG9uZURpc3BhdGNoaW5nOworCiAgICAgZm9yIChzaXplX3QgaSA9IGFuY2Vz
dG9ycy5zaXplKCk7IGk7IC0taSkgewotICAgICAgICBDb250YWluZXJOb2RlKiBhbmNlc3RvciA9
IGFuY2VzdG9yc1tpIC0gMV0uZ2V0KCk7Ci0gICAgICAgIGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0
KGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1NWR1RhcmdldFJ1bGVzKGFuY2VzdG9yKSk7Ci0gICAgICAg
IGFuY2VzdG9yLT5oYW5kbGVMb2NhbEV2ZW50cyhldmVudC5nZXQoKSk7CisgICAgICAgIGFuY2Vz
dG9yc1tpIC0gMV0uaGFuZGxlTG9jYWxFdmVudHMoZXZlbnQuZ2V0KCkpOwogICAgICAgICBpZiAo
ZXZlbnQtPnByb3BhZ2F0aW9uU3RvcHBlZCgpKQogICAgICAgICAgICAgZ290byBkb25lRGlzcGF0
Y2hpbmc7CiAgICAgfQogCiAgICAgZXZlbnQtPnNldEV2ZW50UGhhc2UoRXZlbnQ6OkFUX1RBUkdF
VCk7Ci0KKyAgICBldmVudC0+c2V0VGFyZ2V0KG9yaWdpbmFsVGFyZ2V0LmdldCgpKTsKICAgICBl
dmVudC0+c2V0Q3VycmVudFRhcmdldChldmVudFRhcmdldFJlc3BlY3RpbmdTVkdUYXJnZXRSdWxl
cyh0aGlzKSk7CiAgICAgaGFuZGxlTG9jYWxFdmVudHMoZXZlbnQuZ2V0KCkpOwogICAgIGlmIChl
dmVudC0+cHJvcGFnYXRpb25TdG9wcGVkKCkpCkBAIC0yNjY0LDIxICsyNjU5LDE2IEBAIGJvb2wg
Tm9kZTo6ZGlzcGF0Y2hHZW5lcmljRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiAK
ICAgICAgICAgc2l6ZV90IHNpemUgPSBhbmNlc3RvcnMuc2l6ZSgpOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgQ29udGFpbmVyTm9kZSog
YW5jZXN0b3IgPSBhbmNlc3RvcnNbaV0uZ2V0KCk7Ci0gICAgICAgICAgICBldmVudC0+c2V0Q3Vy
cmVudFRhcmdldChldmVudFRhcmdldFJlc3BlY3RpbmdTVkdUYXJnZXRSdWxlcyhhbmNlc3Rvcikp
OwotICAgICAgICAgICAgYW5jZXN0b3ItPmhhbmRsZUxvY2FsRXZlbnRzKGV2ZW50LmdldCgpKTsK
LSAgICAgICAgICAgIGlmIChldmVudC0+cHJvcGFnYXRpb25TdG9wcGVkKCkgfHwgZXZlbnQtPmNh
bmNlbEJ1YmJsZSgpKQotICAgICAgICAgICAgICAgIGdvdG8gZG9uZURpc3BhdGNoaW5nOwotICAg
ICAgICB9Ci0gICAgICAgIGlmICh0YXJnZXRGb3JXaW5kb3dFdmVudHMpIHsKLSAgICAgICAgICAg
IGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KHRhcmdldEZvcldpbmRvd0V2ZW50cyk7Ci0gICAgICAg
ICAgICB0YXJnZXRGb3JXaW5kb3dFdmVudHMtPmZpcmVFdmVudExpc3RlbmVycyhldmVudC5nZXQo
KSk7CisgICAgICAgICAgICBhbmNlc3RvcnNbaV0uaGFuZGxlTG9jYWxFdmVudHMoZXZlbnQuZ2V0
KCkpOwogICAgICAgICAgICAgaWYgKGV2ZW50LT5wcm9wYWdhdGlvblN0b3BwZWQoKSB8fCBldmVu
dC0+Y2FuY2VsQnViYmxlKCkpCiAgICAgICAgICAgICAgICAgZ290byBkb25lRGlzcGF0Y2hpbmc7
CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHdpbmRvdy5oYW5kbGVMb2NhbEV2ZW50cyhldmVudC5n
ZXQoKSkgJiYgKGV2ZW50LT5wcm9wYWdhdGlvblN0b3BwZWQoKSB8fCBldmVudC0+Y2FuY2VsQnVi
YmxlKCkpKQorICAgICAgICAgICAgZ290byBkb25lRGlzcGF0Y2hpbmc7CiAgICAgfQogCiBkb25l
RGlzcGF0Y2hpbmc6CisgICAgZXZlbnQtPnNldFRhcmdldChvcmlnaW5hbFRhcmdldC5nZXQoKSk7
CiAgICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQoMCk7CiAgICAgZXZlbnQtPnNldEV2ZW50UGhh
c2UoMCk7CiAKQEAgLTI2OTksOCArMjY4OSw3IEBAIGRvbmVEaXNwYXRjaGluZzoKICAgICAgICAg
aWYgKGV2ZW50LT5idWJibGVzKCkpIHsKICAgICAgICAgICAgIHNpemVfdCBzaXplID0gYW5jZXN0
b3JzLnNpemUoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytp
KSB7Ci0gICAgICAgICAgICAgICAgQ29udGFpbmVyTm9kZSogYW5jZXN0b3IgPSBhbmNlc3RvcnNb
aV0uZ2V0KCk7Ci0gICAgICAgICAgICAgICAgYW5jZXN0b3ItPmRlZmF1bHRFdmVudEhhbmRsZXIo
ZXZlbnQuZ2V0KCkpOworICAgICAgICAgICAgICAgIGFuY2VzdG9yc1tpXS5ub2RlKCktPmRlZmF1
bHRFdmVudEhhbmRsZXIoZXZlbnQuZ2V0KCkpOwogICAgICAgICAgICAgICAgIEFTU0VSVCghZXZl
bnQtPmRlZmF1bHRQcmV2ZW50ZWQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LT5kZWZh
dWx0SGFuZGxlZCgpKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmVXaXRoRGVmYXVsdDsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL05vZGUuaCBiL1dlYkNvcmUvZG9tL05vZGUuaAppbmRl
eCA1ODdlZmZkMGZlODIyNzQ3Njk1NTA2NDRlOTJkZWY1YTgzOTI5NDBhLi41ZmNiODI4OTU1YTQ2
YWMyNWIyYTRhOGVjNjRiNjk4OTFlOWZmNWY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKKysrIGIvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIERvY3Vt
ZW50OwogY2xhc3MgRHluYW1pY05vZGVMaXN0OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEV2ZW50
OworY2xhc3MgRXZlbnRDb250ZXh0OwogY2xhc3MgRXZlbnRMaXN0ZW5lcjsKIGNsYXNzIEZsb2F0
UG9pbnQ7CiBjbGFzcyBGcmFtZTsKQEAgLTIxMiwxNSArMjEzLDE0IEBAIHB1YmxpYzoKICAgICBO
b2RlKiBzaGFkb3dBbmNlc3Rvck5vZGUoKTsKICAgICBOb2RlKiBzaGFkb3dUcmVlUm9vdE5vZGUo
KTsKICAgICBib29sIGlzSW5TaGFkb3dUcmVlKCk7Ci0KLSAgICAvLyBUaGUgbm9kZSdzIHBhcmVu
dCBmb3IgdGhlIHB1cnBvc2Ugb2YgZXZlbnQgY2FwdHVyZSBhbmQgYnViYmxpbmcuCi0gICAgdmly
dHVhbCBDb250YWluZXJOb2RlKiBldmVudFBhcmVudE5vZGUoKTsKKyAgICAvLyBOb2RlJ3MgcGFy
ZW50IG9yIHNoYWRvdyB0cmVlIGhvc3QuCisgICAgQ29udGFpbmVyTm9kZSogcGFyZW50T3JIb3N0
Tm9kZSgpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgZW5jbG9zaW5nIGV2ZW50IHBhcmVudCBub2Rl
IChvciBzZWxmKSB0aGF0LCB3aGVuIGNsaWNrZWQsIHdvdWxkIHRyaWdnZXIgYSBuYXZpZ2F0aW9u
LgogICAgIE5vZGUqIGVuY2xvc2luZ0xpbmtFdmVudFBhcmVudE9yU2VsZigpOwogCi0gICAgLy8g
Tm9kZSBhbmNlc3RvcnMgd2hlbiBjb25jZXJuZWQgYWJvdXQgZXZlbnQgZmxvdwotICAgIHZvaWQg
ZXZlbnRBbmNlc3RvcnMoVmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+ICZhbmNlc3RvcnMp
OworICAgIC8vIE5vZGUgYW5jZXN0b3JzIHdoZW4gY29uY2VybmVkIGFib3V0IGV2ZW50IGZsb3cu
CisgICAgdm9pZCBldmVudEFuY2VzdG9ycyhWZWN0b3I8RXZlbnRDb250ZXh0PiAmYW5jZXN0b3Jz
LCBFdmVudFRhcmdldCopOwogCiAgICAgYm9vbCBpc0Jsb2NrRmxvdygpIGNvbnN0OwogICAgIGJv
b2wgaXNCbG9ja0Zsb3dPckJsb2NrVGFibGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL1RleHQuY3BwIGIvV2ViQ29yZS9kb20vVGV4dC5jcHAKaW5kZXggY2MyMTZkOGZmZjFjZDc0
MWQyOGY4OGQ4MzQxZmI4YzM1NGRlOWIyZS4uZGE5ODA5YjMzZGU1ZTg4MjJjYzUyODk3NDhiODJk
NDBjY2Y1ZjIzNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vVGV4dC5jcHAKKysrIGIvV2ViQ29y
ZS9kb20vVGV4dC5jcHAKQEAgLTIzOSwxMCArMjM5LDExIEBAIGJvb2wgVGV4dDo6cmVuZGVyZXJJ
c05lZWRlZChSZW5kZXJTdHlsZSAqc3R5bGUpCiAKIFJlbmRlck9iamVjdCogVGV4dDo6Y3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CisgICAgTm9kZSog
cGFyZW50T3JIb3N0ID0gcGFyZW50T3JIb3N0Tm9kZSgpOwogI2lmIEVOQUJMRShTVkcpCi0gICAg
aWYgKHBhcmVudE5vZGUoKS0+aXNTVkdFbGVtZW50KCkKKyAgICBpZiAocGFyZW50T3JIb3N0LT5p
c1NWR0VsZW1lbnQoKQogI2lmIEVOQUJMRShTVkdfRk9SRUlHTl9PQkpFQ1QpCi0gICAgICAgICYm
ICFwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RUYWcpCisg
ICAgICAgICYmICFwYXJlbnRPckhvc3QtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZvcmVpZ25PYmpl
Y3RUYWcpCiAjZW5kaWYKICAgICApCiAgICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJT
VkdJbmxpbmVUZXh0KHRoaXMsIGRhdGFJbXBsKCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCmluZGV4IGMxYzIxYjZjMzgzOWE3ZGRiMTUyZGViYzU4MzY0MjEyMzBhNTA1
MTUuLjJkNWY2MzRiNTQxNTczZTAxMmViMjIxYjkyMmE5MGIxOTQ3ZTE5ZmUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50VHlwZS5oIgogI2luY2x1ZGUgIkV2ZW50
LmgiCisjaW5jbHVkZSAiRXZlbnRDb250ZXh0LmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5o
IgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgpAQCAt
NTk3LDEzICs1OTgsMTMgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5l
cnNGb3JOb2RlKGxvbmcgbm9kZUlkLCBsb25nKiBvdXROb2RlSWQsIFIKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gVGhlIE5vZGUncyBFdmVudCBBbmNlc3RvcnMgKG5vdCBpbmNsdWRpbmcgc2Vs
ZikKLSAgICBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4gYW5jZXN0b3JzOwotICAgIG5v
ZGUtPmV2ZW50QW5jZXN0b3JzKGFuY2VzdG9ycyk7CisgICAgVmVjdG9yPEV2ZW50Q29udGV4dD4g
YW5jZXN0b3JzOworICAgIG5vZGUtPmV2ZW50QW5jZXN0b3JzKGFuY2VzdG9ycywgbm9kZSk7CiAK
ICAgICAvLyBOb2RlcyBhbmQgdGhlaXIgTGlzdGVuZXJzIGZvciB0aGUgY29uY2VybmVkIGV2ZW50
IHR5cGVzIChvcmRlciBpcyB0b3AgdG8gYm90dG9tKQogICAgIFZlY3RvcjxFdmVudExpc3RlbmVy
SW5mbz4gZXZlbnRJbmZvcm1hdGlvbjsKICAgICBmb3IgKHNpemVfdCBpID0gYW5jZXN0b3JzLnNp
emUoKTsgaTsgLS1pKSB7Ci0gICAgICAgIENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0gYW5jZXN0
b3JzW2kgLSAxXS5nZXQoKTsKKyAgICAgICAgTm9kZSogYW5jZXN0b3IgPSBhbmNlc3RvcnNbaSAt
IDFdLm5vZGUoKTsKICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBldmVudFR5cGVzTGVu
Z3RoOyArK2opIHsKICAgICAgICAgICAgIEF0b21pY1N0cmluZyYgdHlwZSA9IGV2ZW50VHlwZXNb
al07CiAgICAgICAgICAgICBpZiAoYW5jZXN0b3ItPmhhc0V2ZW50TGlzdGVuZXJzKHR5cGUpKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAppbmRleCBkMzcwOWZiZDRhYWM2NjkyZmVhN2VmZDVmNGZiNjY5NDE5
NzczYTM3Li5iN2YxYjA5YWQzOTcwNzE1YWE3OTgyZTA5ZmZiYWU1NTc0YjUzM2VkIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcApAQCAtMTc2Myw4ICsxNzYzLDYgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVw
ZGF0ZU1vdXNlRXZlbnRUYXJnZXROb2RlKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IFBsYXRmb3Jt
TW8KICAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBub2RlIGlzIGEgdGV4dCBub2RlLCBkaXNwYXRj
aCBvbiB0aGUgcGFyZW50IG5vZGUgLSByZGFyOi8vNDE5NjY0NgogICAgICAgICBpZiAocmVzdWx0
ICYmIHJlc3VsdC0+aXNUZXh0Tm9kZSgpKQogICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT5w
YXJlbnROb2RlKCk7Ci0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICByZXN1bHQgPSBy
ZXN1bHQtPnNoYWRvd0FuY2VzdG9yTm9kZSgpOwogICAgIH0KICAgICBtX25vZGVVbmRlck1vdXNl
ID0gcmVzdWx0OwogI2lmIEVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDFiMTlmMjU0OGFh
ZDRkYmEwYzFjMzBiOWE1OTM2NjRmYThlNWMwODkuLmI5YzlhNjY3MTEzYzcwNzcxOGEyYjIzYjVj
NzcxNTBmMWQ0ODEwNjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC0zMzIsMTMgKzMzMiw2IEBAIHZvaWQg
U1ZHRWxlbWVudDo6dXBkYXRlQW5pbWF0ZWRTVkdBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSkgY29uc3QKICAgICBjbGVhcklzU3luY2hyb25pemluZ1NWR0F0dHJpYnV0ZXMoKTsK
IH0KIAotQ29udGFpbmVyTm9kZSogU1ZHRWxlbWVudDo6ZXZlbnRQYXJlbnROb2RlKCkKLXsKLSAg
ICBpZiAoQ29udGFpbmVyTm9kZSogc2hhZG93UGFyZW50ID0gc2hhZG93UGFyZW50Tm9kZSgpKQot
ICAgICAgICByZXR1cm4gc2hhZG93UGFyZW50OwotICAgIHJldHVybiBTdHlsZWRFbGVtZW50Ojpl
dmVudFBhcmVudE5vZGUoKTsKLX0KLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
aAppbmRleCBmYjI4Mjc5Y2Y4NTU2NzE4N2QzMzhjN2FmMTYwZWMwNmRhMGFjNzdiLi4xMjcxYzdi
NDNhOGFhNjYzNDY4ZmQ1OGFkMDIzY2JmNTFmODJiZjIxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC05Niw4ICs5
Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdXBw
b3J0ZWQoU3RyaW5nSW1wbCogZmVhdHVyZSwgU3RyaW5nSW1wbCogdmVyc2lvbikgY29uc3Q7CiAK
LSAgICAgICAgdmlydHVhbCBDb250YWluZXJOb2RlKiBldmVudFBhcmVudE5vZGUoKTsKLQogICAg
ICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQZW5kaW5nUmVzb3VyY2VIYW5kbGluZygpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGJ1aWxkUGVuZGluZ1Jlc291cmNl
KCkgeyB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69665</attachid>
            <date>2010-10-04 12:18:02 -0700</date>
            <delta_ts>2010-10-29 11:12:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46015-20101004121800.patch</filename>
            <type>text/plain</type>
            <size>36749</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMTk4OTY4NTkwOWVjNGNlNGFiZmI1OTI4N2QxNTM0NTFjZjI3OWFhLi4yNzI4MmZk
ODg5ZjczOTFiM2M5NGJiYjM5MGExODg1OTY3ZGU1YzBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMTAtMDEgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
c2hhZG93IERPTS1hd2FyZSBldmVudCB0YXJnZXRpbmcgYW5kIGludHJvZHVjZSBFdmVudENvbnRl
eHQgdG8gdHJhY2sgdGhlIGNvbnRleHQgb2YgZWFjaCBldmVudCBkaXNwYXRjaC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MDE1CisKKyAgICAgICAg
VHVuZWQgdGhlIHRlc3QgdG8gYmV0dGVyIHJlZmxlY3QgaXRzIHBvaW50OiB0aGUgZXZlbiBzaG91
bGQgaW5kZWVkIGZpcmUgKGl0IHVzZWQgdG8gYmUgc3dhbGxvd2VkKSwKKyAgICAgICAgYnV0IGl0
J3MgdGFyZ2V0IHNob3VsZCBiZSBhIG5vbi1zaGFkb3cgbm9kZS4KKworICAgICAgICAqIGZhc3Qv
ZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9zc2luZy5odG1sOiBNb2RpZmllZCB0aGUgdGVzdC4K
KwogMjAxMC0xMC0wNCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAg
U2tpcCBhIHRpbWluZy1vdXQgdGVzdCBvbiBXaW5kb3dzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9zc2luZy5odG1sCmluZGV4IDYyM2UwNjcz
ZWMxY2YzNjI1NmY1ZWMxMzY3ZDdjYTM5YmFiYjQxNTMuLjBlODdmZDc0NTU3YzU1ZmFlYjExMzU0
MzdiNjUxZTVjZTVjMGM0MjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3No
YWRvdy1ib3VuZGFyeS1jcm9zc2luZy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3NoYWRvdy1ib3VuZGFyeS1jcm9zc2luZy5odG1sCkBAIC0yLDExICsyLDExIEBACiA8aGVhZD4K
ICAgICA8dGl0bGU+PC90aXRsZT4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
Ci0gICAgICAgIHZhciBmaXJlZCA9IGZhbHNlOworICAgICAgICB2YXIgc3VjY2VzczsKIAogICAg
ICAgICBmdW5jdGlvbiBzZWxlY3RTdGFydChldmVudCkKICAgICAgICAgewotICAgICAgICAgICAg
ZmlyZWQgPSB0cnVlOworICAgICAgICAgICAgc3VjY2VzcyA9IGV2ZW50LnRhcmdldC5wYXJlbnRO
b2RlOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gdGVzdCgpCkBAIC0yMyw3ICsyMyw3
IEBACiAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlVXAoKTsKIAotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlc3VsdCIpLmlubmVyVGV4dCA9IGZpcmVkID8gIkZBSUwiIDogIlBBU1MiOworICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVyVGV4dCA9ICFzdWNj
ZXNzID8gIkZBSUwiIDogIlBBU1MiOwogICAgICAgICB9CiAKICAgICAgICAgYWRkRXZlbnRMaXN0
ZW5lcigic2VsZWN0c3RhcnQiLCBzZWxlY3RTdGFydCwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL0FuZHJvaWQubWsgYi9XZWJDb3JlL0FuZHJvaWQubWsKaW5kZXggZDE1MWIyNzVjNGQwMGFm
MmVmNGVlNTljYjBiOWJmNDk2YTcyNTdlNC4uYzllNjk4OWQ4ODQwMzhkZDJkOWYzY2IxYzI1YTBk
YjNlMzAwYzkwOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9BbmRyb2lkLm1rCisrKyBiL1dlYkNvcmUv
QW5kcm9pZC5tawpAQCAtMTMyLDYgKzEzMiw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FM
X1NSQ19GSUxFUykgXAogCWRvbS9FbnRpdHlSZWZlcmVuY2UuY3BwIFwKIAlkb20vRXJyb3JFdmVu
dC5jcHAgXAogCWRvbS9FdmVudC5jcHAgXAorCWRvbS9FdmVudENvbnRleHQuY3BwIFwKIAlkb20v
RXZlbnROYW1lcy5jcHAgXAogCWRvbS9FdmVudFRhcmdldC5jcHAgXAogCWRvbS9FeGNlcHRpb25C
YXNlLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCAyMTcyNTJlZDkzN2Y4NDhiNjg2N2U1ODEyYjk4YWVkODBiNzA5
YzIxLi5hMDkxZmFlZDU0NjMyMTgyMzhmNDdjYTFiODA2OThlNDljNDcxZjFhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTgxOCw2ICs4MTgsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL0VudGl0eVJlZmVy
ZW5jZS5jcHAKICAgICBkb20vRXJyb3JFdmVudC5jcHAKICAgICBkb20vRXZlbnQuY3BwCisgICAg
ZG9tL0V2ZW50Q29udGV4dC5jcHAKICAgICBkb20vRXZlbnROYW1lcy5jcHAKICAgICBkb20vRXZl
bnRUYXJnZXQuY3BwCiAgICAgZG9tL0V4Y2VwdGlvbkJhc2UuY3BwCmRpZmYgLS1naXQgYS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGRmOTIxNjY5ODA3MjgzM2Vk
ZWEwYWFmN2NiMWFiOTMyY2Q3MTBmZTAuLmJlMTM3NDA5YWQxNzUyNTc5ZDQwNjY2MjNmNmE4Yzc0
ODA3NTk1MTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTAtMTAtMDEgIERpbWl0cmkgR2xhemtvdiAgPGRn
bGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnQgc2hhZG93IERPTS1hd2FyZSBldmVudCB0YXJnZXRpbmcg
YW5kIGludHJvZHVjZSBFdmVudENvbnRleHQgdG8gdHJhY2sgdGhlIGNvbnRleHQgb2YgZWFjaCBl
dmVudCBkaXNwYXRjaC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ2MDE1CisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBub3Rpb24gb2YgRXZl
bnRDb250ZXh0IChhbmQgYSB2ZXJ5IHNpbWlsYXItYWN0aW5nIFdpbmRvd0V2ZW50Q29udGV4dCwg
c3BlY2lmaWNhbGx5CisgICAgICAgIGZvciBET01XaW5kb3cpLCBhbiBhYnN0cmFjdGlvbiB0aGF0
IGNhcnJpZXMgaW5mb3JtYXRpb24gYXJvdW5kIGRpc3BhdGNoaW5nIGFuIGV2ZW50IGZvciBhbnkg
Z2l2ZW4gTm9kZS4KKworICAgICAgICBUaGlzIGFic3RyYWN0aW9uIGlzIG5lY2Vzc2FyeSB0byBl
bnN1cmUgdGhhdCBldmVudHMsIGZpcmVkIGZyb20gc2hhZG93IERPTSBub2RlcyBhcmUgcHJvcGVy
bHkgcmV0YXJnZXRlZCB0bworICAgICAgICBhcHBlYXIgYXMgaWYgdGhleSBhcmUgY29taW5nIGZy
b20gdGhlaXIgaG9zdCwgdGh1cyBuZXZlciBleHBvc2luZyB0aGUgc2hhZG93IERPTSBub2RlcyB0
byB0aGUgd29ybGQgb3V0c2lkZS4KKworICAgICAgICAqIEFuZHJvaWQubWs6IEFkZGVkIEV2ZW50
Q29udGV4dCBmaWxlcy4KKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogRGl0dG8uCisgICAgICAg
ICogR05VbWFrZWZpbGUuYW06IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8u
CisgICAgICAgICogV2ViQ29yZS5wcm86IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6bm90aWZ5Q2hpbGRJbnNlcnRlZCk6IENoYW5nZWQgdG8g
YmUgc2hhZG93IERPTS1hd2FyZS4KKyAgICAgICAgKiBkb20vRXZlbnRDb250ZXh0LmNwcDogQWRk
ZWQuCisgICAgICAgICogZG9tL0V2ZW50Q29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKiBkb20v
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjptYXJrQW5jZXN0b3JzV2l0aENoaWxk
TmVlZHNTdHlsZVJlY2FsYyk6IENoYW5nZWQgdG8gYmUgc2hhZG93IERPTS1hd2FyZS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OnBhcmVudE9ySG9zdE5vZGUpOiBBZGRlZCBuZXcgaGVscGVyIG1l
dGhvZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmVuY2xvc2luZ0xpbmtFdmVudFBhcmVudE9y
U2VsZik6IENoYW5nZWQgdG8gYmUgc2hhZG93IERPTS1hd2FyZS4KKyAgICAgICAgKFdlYkNvcmU6
OmV2ZW50VGFyZ2V0UmVzcGVjdGluZ1NWR1RhcmdldFJ1bGVzKTogQ29sbGFwc2VkIHR3byBoZWxw
ZXIgbWV0aG9kcyBpbnRvIG9uZS4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmV2ZW50QW5jZXN0
b3JzKTogUmVmYWN0b3JlZCB0byBjb2xsZWN0IGEgdmVjdG9yIG9mIEV2ZW50Q29udGV4dHMuCisg
ICAgICAoV2ViQ29yZTo6ZXZlbnRIYXNMaXN0ZW5lcnMpOiBDaGFuZ2VkIHRvIHVzZSBFdmVudENv
bnRleHRzLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hHZW5lcmljRXZlbnQpOiBE
aXR0by4KKyAgICAgICAgKiBkb20vTm9kZS5oOiBSZW1vdmVkIGV2ZW50UGFyZW50Tm9kZSB0aGF0
J3Mgbm8gbG9uZ2VyIG5lZWRlZCwgYWRkZWQgcGFyZW50T3JIb3N0Tm9kZSBkZWNsLAorICAgICAg
ICAgICAgYW5kIGNoYW5nZWQgc2lnbmF0dXJlIG9mIGV2ZW50QW5jZXN0b3JzIHRvIHVzZSBFdmVu
dENvbnRleHRzLgorICAgICAgICAqIGRvbS9UZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHQ6OmNyZWF0ZVJlbmRlcmVyKTogQ2hhbmdlZCB0byBiZSBzaGFkb3cgRE9NLWF3YXJlLgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKTogQ2hhbmdlZCB0
byB1c2UgRXZlbnRDb250ZXh0cy4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZU1vdXNlRXZlbnRUYXJnZXROb2Rl
KTogUmVtb3ZlZCBjb2RlIHRoYXQncyBubyBsb25nZXIgbmVjZXNzYXJ5LgorICAgICAgICAqIHN2
Zy9TVkdFbGVtZW50LmNwcDogUmVtb3ZlZCBldmVudFBhcmVudE5vZGUgdGhhdCdzIG5vIGxvbmdl
ciBuZWVkZWQuCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDogRGl0dG8uCisKIDIwMTAtMTAt
MDQgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDc4OWE5MGNkOGY0ODJkMmU0ZmQ0
ZDg1OGQ2OGRkYTIzNmIyYTIyMDkuLmE4OTdkZDdmZjI4YjZjMWRmMWY1MjlhYjhlNjgyNWI1ZThl
MGU4NTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQpAQCAtMTEyMSw4ICsxMTIxLDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJV2ViQ29yZS9kb20vRXJyb3JFdmVudC5jcHAgXAogCVdlYkNvcmUvZG9tL0Vycm9yRXZlbnQu
aCBcCiAJV2ViQ29yZS9kb20vRXZlbnQuY3BwIFwKLQlXZWJDb3JlL2RvbS9FdmVudEV4Y2VwdGlv
bi5oIFwKIAlXZWJDb3JlL2RvbS9FdmVudC5oIFwKKwlXZWJDb3JlL2RvbS9FdmVudENvbnRleHQu
Y3BwIFwKKwlXZWJDb3JlL2RvbS9FdmVudENvbnRleHQuaCBcCisJV2ViQ29yZS9kb20vRXZlbnRF
eGNlcHRpb24uaCBcCiAJV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oIFwKIAlXZWJDb3JlL2Rv
bS9FdmVudE5hbWVzLmNwcCBcCiAJV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIFwKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYTE3
ZjYxY2FlZDhjMmM5ZjljMTc0MjVhZmVlNmU5YzY3ZDg1ZWNjZC4uNjVjYmRmMDcyNmY3NjExMTRh
OGZiZDJiMTM0MDM0YzkxZjg5ZTgyYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
KysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTExOTIsNiArMTE5Miw4IEBACiAgICAgICAg
ICAgICAnZG9tL0Vycm9yRXZlbnQuaCcsCiAgICAgICAgICAgICAnZG9tL0V2ZW50LmNwcCcsCiAg
ICAgICAgICAgICAnZG9tL0V2ZW50LmgnLAorICAgICAgICAgICAgJ2RvbS9FdmVudENvbnRleHQu
Y3BwJywKKyAgICAgICAgICAgICdkb20vRXZlbnRDb250ZXh0LmgnLAogICAgICAgICAgICAgJ2Rv
bS9FdmVudEV4Y2VwdGlvbi5oJywKICAgICAgICAgICAgICdkb20vRXZlbnRMaXN0ZW5lci5oJywK
ICAgICAgICAgICAgICdkb20vRXZlbnROYW1lcy5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggZDc2OTkyMWM0YzZiMjVkNzhm
MzJmYzc5ZWYwZmNhYzIxMTliN2QyNy4uZmEyYzc1YzBkMThlOTA3MjM1NGU5NGI1MjU2ZDFlNmEx
Mjk2YTVkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dl
YkNvcmUucHJvCkBAIC03MDgsNiArNzA4LDcgQEAgU09VUkNFUyArPSBcCiAgICAgZG9tL0VudGl0
eVJlZmVyZW5jZS5jcHAgXAogICAgIGRvbS9FcnJvckV2ZW50LmNwcCBcCiAgICAgZG9tL0V2ZW50
LmNwcCBcCisgICAgZG9tL0V2ZW50Q29udGV4dC5jcHAgXAogICAgIGRvbS9FdmVudE5hbWVzLmNw
cCBcCiAgICAgZG9tL0V2ZW50VGFyZ2V0LmNwcCBcCiAgICAgZG9tL0V4Y2VwdGlvbkJhc2UuY3Bw
IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjg2ODQw
OGZmYmIzNDljNTY4ODZhNmJiNmY1MWY5ZjkxNWMxNTBmNy4uMDA1OGE2YjFmYTNjOGM2ODgwMjg3
NGIzNDQ4N2UyYzhjYzNhMWNjYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTg2Niw2ICs4NjYsOCBAQAogCQk0MTEwNDY0MTBGQTIyMkE2MDBCQTQzNkEg
LyogU2NyaXB0RXZlbnRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDExMDQ2M0YwRkEyMjJBNjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50TGlz
dGVuZXIuaCAqLzsgfTsKIAkJNDExMDQ2NDIwRkEyMjJBNjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50
TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDExMDQ2NDAwRkEyMjJBNjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50TGlzdGVuZXIuY3BwICov
OyB9OwogCQk0MTI3RDUzNzBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyN0Q1MzYwRjhBQUIx
RDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCAqLzsgfTsKKwkJNDEzOEQzMzUxMjQ0MDU0ODAw
MzIzRDMzIC8qIEV2ZW50Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDEzOEQzMzMxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5o
ICovOyB9OworCQk0MTM4RDMzNjEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzhEMzM0MTI0
NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuY3BwICovOyB9OwogCQk0MTYyQTQ1MDEwMTE0
NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ0RDEwMTE0NUFFMDBERkYzRUQg
LyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAgKi87IH07CiAJCTQxNjJBNDUxMTAxMTQ1QUUw
MERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ0RTEwMTE0NUFFMDBERkYzRUQgLyogRGVk
aWNhdGVkV29ya2VyQ29udGV4dC5oICovOyB9OwogCQk0MTYyQTQ1NDEwMTE0NUUzMDBERkYzRUQg
LyogSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDUzMTAxMTQ1RTMwMERGRjNFRCAvKiBK
U0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwICovOyB9OwpAQCAtNjg1Niw2ICs2ODU4
LDggQEAKIAkJNDExMDQ2M0YwRkEyMjJBNjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50TGlzdGVuZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RXZlbnRMaXN0ZW5lci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEwNDY0MDBGQTIyMkE2MDBCQTQzNkEg
LyogU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTY3JpcHRFdmVudExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdFN0YXRlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEzOEQzMzMxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29u
dGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudENvbnRleHQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEzOEQzMzQxMjQ0MDU0ODAwMzIzRDMzIC8q
IEV2ZW50Q29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBF
dmVudENvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTYyQTQ0RDEw
MTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcDsgcGF0
aCA9IHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxNjJBNDRFMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERlZGljYXRlZFdvcmtl
ckNvbnRleHQuaDsgcGF0aCA9IHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTYyQTQ0RjEwMTE0NUFFMDBERkYzRUQgLyogRGVk
aWNhdGVkV29ya2VyQ29udGV4dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRGVkaWNhdGVk
V29ya2VyQ29udGV4dC5pZGw7IHBhdGggPSB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc5MzAsNiArMTc5MzQsOCBAQAog
CQkJCTg1MDMxQjJCMEE0NEVGQzcwMEY5OTJFMCAvKiBFdmVudC5jcHAgKi8sCiAJCQkJODUwMzFC
MkMwQTQ0RUZDNzAwRjk5MkUwIC8qIEV2ZW50LmggKi8sCiAJCQkJMTRFODM2RDIwOUY4NTEyMDAw
Qjg1QUU0IC8qIEV2ZW50LmlkbCAqLywKKwkJCQk0MTM4RDMzNDEyNDQwNTQ4MDAzMjNEMzMgLyog
RXZlbnRDb250ZXh0LmNwcCAqLywKKwkJCQk0MTM4RDMzMzEyNDQwNTQ4MDAzMjNEMzMgLyogRXZl
bnRDb250ZXh0LmggKi8sCiAJCQkJQkM2MEQ5MDkwRDJBMTdDRTAwQjk5MThGIC8qIEV2ZW50RXhj
ZXB0aW9uLmggKi8sCiAJCQkJQkM2MEQ5MEEwRDJBMTdDRTAwQjk5MThGIC8qIEV2ZW50RXhjZXB0
aW9uLmlkbCAqLywKIAkJCQk5MzVGQkM0NDA5QkEwMEI5MDBFMjMwQjEgLyogRXZlbnRMaXN0ZW5l
ci5oICovLApAQCAtMTkyMzcsNiArMTkyNDMsNyBAQAogCQkJCTg5ODc4NTYwMTIyQ0EwNjQwMDNB
QUJEQSAvKiBFcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUNGN0FFMjEwMTYy
QjU4MDA0MjdERTcgLyogRXJyb3JFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNDIw
QTQ0RUZDNzAwRjk5MkUwIC8qIEV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTM4RDMzNTEy
NDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzYw
RDkwQzBEMkExN0NFMDBCOTkxOEYgLyogRXZlbnRFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzQzA5QTUzMEIwNjREQjMwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkzNUZCQzQ1MDlCQTAwQjkwMEUyMzBCMSAvKiBFdmVudExpc3RlbmVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTIxODIzLDYgKzIxODMwLDcgQEAKIAkJCQk4OTg3ODU1RDEyMkNBMDY0
MDAzQUFCREEgLyogRW50cnlBcnJheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRUNGN0FFMTEw
MTYyQjU4MDA0MjdERTcgLyogRXJyb3JFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAz
MUI0MTBBNDRFRkM3MDBGOTkyRTAgLyogRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDEz
OEQzMzYxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5M0MwOUE4MTBCMDY0RjAwMDA1QUJENEQgLyogRXZlbnRIYW5kbGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzQzA5QTdGMEIwNjRFRUYwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXJNYWMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkxQ0ExOUUwNTBEQzI1NTk1MDA2NUE5OTQgLyogRXZlbnRM
b29wTWFjLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmNwcCBiL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IDg5ZWE3YjU4
ODhjZmRlYTIzY2NhYmI4NmU2OTczNDExODM1ZTA4ODMuLjllMjk2Nzc5MzIxMTgxMzFmNDhhYzBh
NjVkMzU0MTQ4YWFhZTBkNjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwCisrKyBiL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC0xMDA3LDcgKzEwMDcs
OCBAQCBzdGF0aWMgdm9pZCBub3RpZnlDaGlsZEluc2VydGVkKE5vZGUqIGNoaWxkKQogICAgIFJl
ZlB0cjxOb2RlPiBjID0gY2hpbGQ7CiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IGNo
aWxkLT5kb2N1bWVudCgpOwogCi0gICAgaWYgKGMtPnBhcmVudE5vZGUoKSAmJiBjLT5wYXJlbnRO
b2RlKCktPmluRG9jdW1lbnQoKSkKKyAgICBOb2RlKiBwYXJlbnRPckhvc3ROb2RlID0gYy0+cGFy
ZW50T3JIb3N0Tm9kZSgpOworICAgIGlmIChwYXJlbnRPckhvc3ROb2RlICYmIHBhcmVudE9ySG9z
dE5vZGUtPmluRG9jdW1lbnQoKSkKICAgICAgICAgYy0+aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsK
ICAgICBlbHNlCiAgICAgICAgIGMtPmluc2VydGVkSW50b1RyZWUodHJ1ZSk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwIGIvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wMTIyMmY2MmY5YTNhN2Y4MDJkZDA3OGQxMTE5NDFhNTUxYWUxMWMz
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmNwcApAQCAtMCww
ICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkV2ZW50Q29udGV4dC5oIgorCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIk5vZGUuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitFdmVudENvbnRleHQ6OkV2ZW50Q29udGV4dChOb2RlKiBub2RlLCBF
dmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCkKKyAgICA6IG1f
bm9kZShub2RlKQorICAgICwgbV9jdXJyZW50VGFyZ2V0KGN1cnJlbnRUYXJnZXQpCisgICAgLCBt
X3RhcmdldCh0YXJnZXQpCit7Cit9CisKK05vZGUqIEV2ZW50Q29udGV4dDo6bm9kZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fbm9kZS5nZXQoKTsKK30KKworRXZlbnRUYXJnZXQqIEV2ZW50Q29u
dGV4dDo6dGFyZ2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90YXJnZXQuZ2V0KCk7Cit9CisK
K3ZvaWQgRXZlbnRDb250ZXh0OjpoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCogZXZlbnQpIGNvbnN0
Cit7CisgICAgZXZlbnQtPnNldFRhcmdldChtX3RhcmdldC5nZXQoKSk7CisgICAgZXZlbnQtPnNl
dEN1cnJlbnRUYXJnZXQobV9jdXJyZW50VGFyZ2V0LmdldCgpKTsKKyAgICBtX25vZGUtPmhhbmRs
ZUxvY2FsRXZlbnRzKGV2ZW50KTsKK30KKworV2luZG93RXZlbnRDb250ZXh0OjpXaW5kb3dFdmVu
dENvbnRleHQoRXZlbnQqIGV2ZW50LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8RXZlbnRDb250
ZXh0PiYgYW5jZXN0b3JzKQoreworICAgIC8vIFdlIGRvbid0IGRpc3BhdGNoIGxvYWQgZXZlbnRz
IHRvIHRoZSB3aW5kb3cuIFRoYXQgcXVpcmsgd2FzIG9yaWdpbmFsbHkKKyAgICAvLyBhZGRlZCBi
ZWNhdXNlIE1vemlsbGEgZG9lc24ndCBwcm9wYWdhdGUgbG9hZCBldmVudHMgdG8gdGhlIHdpbmRv
dyBvYmplY3QuCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmxvYWRFdmVu
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXZlbnRUYXJnZXQqIHRhcmdldEZvcldpbmRvd0V2
ZW50cyA9IG5vZGU7CisgICAgTm9kZSogdG9wTGV2ZWxDb250YWluZXIgPSBub2RlOworICAgIGlm
ICghYW5jZXN0b3JzLmlzRW1wdHkoKSkgeworICAgICAgICB0b3BMZXZlbENvbnRhaW5lciA9IGFu
Y2VzdG9ycy5sYXN0KCkubm9kZSgpOworICAgICAgICB0YXJnZXRGb3JXaW5kb3dFdmVudHMgPSBh
bmNlc3RvcnMubGFzdCgpLnRhcmdldCgpOworICAgIH0KKyAgICBpZiAoIXRvcExldmVsQ29udGFp
bmVyLT5pc0RvY3VtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3dpbmRvdyA9
IHN0YXRpY19jYXN0PERvY3VtZW50Kj4odG9wTGV2ZWxDb250YWluZXIpLT5kb21XaW5kb3coKTsK
KyAgICBtX3RhcmdldCA9IHRhcmdldEZvcldpbmRvd0V2ZW50czsKK30KKworRE9NV2luZG93KiBX
aW5kb3dFdmVudENvbnRleHQ6OndpbmRvdygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2luZG93
LmdldCgpOworfQorCitFdmVudFRhcmdldCogV2luZG93RXZlbnRDb250ZXh0Ojp0YXJnZXQoKSBj
b25zdAoreworICAgIHJldHVybiBtX3RhcmdldC5nZXQoKTsKK30KKworYm9vbCBXaW5kb3dFdmVu
dENvbnRleHQ6OmhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoIW1f
d2luZG93KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBldmVudC0+c2V0VGFyZ2V0KHRh
cmdldCgpKTsKKyAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh3aW5kb3coKSk7CisgICAgbV93
aW5kb3ctPmZpcmVFdmVudExpc3RlbmVycyhldmVudCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oIGIvV2ViQ29yZS9kb20v
RXZlbnRDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmMxMjczMjVlMTI0ZTUyMTk4ZjRiYzIxNzg2MTMx
YjQzMzQ3Mzg2MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5o
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpZm5kZWYgRXZlbnRDb250ZXh0X2gK
KyNkZWZpbmUgRXZlbnRDb250ZXh0X2gKKworI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29udGFp
bmVyTm9kZTsKK2NsYXNzIERPTVdpbmRvdzsKK2NsYXNzIEV2ZW50VGFyZ2V0OworY2xhc3MgRXZl
bnQ7CitjbGFzcyBOb2RlOworCitjbGFzcyBFdmVudENvbnRleHQgeworcHVibGljOgorICAgIEV2
ZW50Q29udGV4dChOb2RlKiwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0
KiB0YXJnZXQpOworCisgICAgTm9kZSogbm9kZSgpIGNvbnN0OworICAgIEV2ZW50VGFyZ2V0KiB0
YXJnZXQoKSBjb25zdDsKKyAgICB2b2lkIGhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KikgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKKyAgICBSZWZQdHI8RXZlbnRU
YXJnZXQ+IG1fY3VycmVudFRhcmdldDsKKyAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IG1fdGFyZ2V0
OworfTsKKworY2xhc3MgV2luZG93RXZlbnRDb250ZXh0IHsKK3B1YmxpYzoKKyAgICBXaW5kb3dF
dmVudENvbnRleHQoRXZlbnQqLCBOb2RlKiwgY29uc3QgVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFu
Y2VzdG9ycyk7CisKKyAgICBET01XaW5kb3cqIHdpbmRvdygpIGNvbnN0OworICAgIEV2ZW50VGFy
Z2V0KiB0YXJnZXQoKSBjb25zdDsKKyAgICBib29sIGhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KiBl
dmVudCk7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPERPTVdpbmRvdz4gbV93aW5kb3c7CisgICAg
UmVmUHRyPEV2ZW50VGFyZ2V0PiBtX3RhcmdldDsKK307CisKK30KKworI2VuZGlmIC8vIEV2ZW50
Q29udGV4dF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1dlYkNvcmUvZG9t
L05vZGUuY3BwCmluZGV4IDY4NjY2YTA2YWJjZWY3OWViZTJmMDVmZWFhYzc5YWNmZDljZGYwMTEu
LjdjYWY0ODRlY2M0M2Q1YjM3YTEyZjYzYWJmZjJkZWE1MTVkYmE3MzYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00NSw2ICs0
NSw3IEBACiAjaW5jbHVkZSAiRHluYW1pY05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5o
IgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiRXZlbnRFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRl
ICJFdmVudExpc3RlbmVyLmgiCkBAIC03MjQsOSArNzI1LDkgQEAgaW5saW5lIHZvaWQgTm9kZTo6
c2V0U3R5bGVDaGFuZ2UoU3R5bGVDaGFuZ2VUeXBlIGNoYW5nZVR5cGUpCiAKIGlubGluZSB2b2lk
IE5vZGU6Om1hcmtBbmNlc3RvcnNXaXRoQ2hpbGROZWVkc1N0eWxlUmVjYWxjKCkKIHsKLSAgICBm
b3IgKE5vZGUqIHAgPSBwYXJlbnROb2RlKCk7IHAgJiYgIXAtPmNoaWxkTmVlZHNTdHlsZVJlY2Fs
YygpOyBwID0gcC0+cGFyZW50Tm9kZSgpKQorICAgIGZvciAoTm9kZSogcCA9IHBhcmVudE9ySG9z
dE5vZGUoKTsgcCAmJiAhcC0+Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7IHAgPSBwLT5wYXJlbnRP
ckhvc3ROb2RlKCkpCiAgICAgICAgIHAtPnNldENoaWxkTmVlZHNTdHlsZVJlY2FsYygpOwotICAg
IAorCiAgICAgaWYgKGRvY3VtZW50KCktPmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpKQogICAgICAg
ICBkb2N1bWVudCgpLT5zY2hlZHVsZVN0eWxlUmVjYWxjKCk7CiB9CkBAIC0xMzIzLDcgKzEzMjQs
NyBAQCB2b2lkIE5vZGU6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKQogCiAgICAgQVNTRVJUKCFy
ZW5kZXJlcigpKTsKICAgICAKLSAgICBOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlKCk7ICAgIAor
ICAgIE5vZGUqIHBhcmVudCA9IHBhcmVudE9ySG9zdE5vZGUoKTsKICAgICBBU1NFUlQocGFyZW50
KTsKICAgICAKICAgICBSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyID0gcGFyZW50LT5yZW5k
ZXJlcigpOwpAQCAtMTQ0Niw2ICsxNDQ3LDEzIEBAIGJvb2wgTm9kZTo6aXNJblNoYWRvd1RyZWUo
KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50T3JI
b3N0Tm9kZSgpCit7CisgICAgaWYgKENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGUo
KSkKKyAgICAgICAgcmV0dXJuIHBhcmVudDsKKyAgICByZXR1cm4gc2hhZG93UGFyZW50Tm9kZSgp
OworfQorCiBib29sIE5vZGU6OmlzQmxvY2tGbG93KCkgY29uc3QKIHsKICAgICByZXR1cm4gcmVu
ZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc0Jsb2NrRmxvdygpOwpAQCAtMjI2OSwxNCArMjI3Nyw5
IEBAIHZvaWQgTm9kZTo6Z2V0U3VicmVzb3VyY2VVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxz
KSBjb25zdAogICAgIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIH0KIAotQ29u
dGFpbmVyTm9kZSogTm9kZTo6ZXZlbnRQYXJlbnROb2RlKCkKLXsKLSAgICByZXR1cm4gcGFyZW50
Tm9kZSgpOwotfQotCiBOb2RlKiBOb2RlOjplbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYo
KQogewotICAgIGZvciAoTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT5ldmVu
dFBhcmVudE5vZGUoKSkgeworICAgIGZvciAoTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUg
PSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKICAgICAgICAgLy8gRm9yIGltYWdlbWFwcywg
dGhlIGVuY2xvc2luZyBsaW5rIG5vZGUgaXMgdGhlIGFzc29jaWF0ZWQgYXJlYSBlbGVtZW50IG5v
dCB0aGUgaW1hZ2UgaXRzZWxmLgogICAgICAgICAvLyBTbyB3ZSBkb24ndCBsZXQgaW1hZ2VzIGJl
IHRoZSBlbmNsb3NpbmdMaW5rTm9kZSwgZXZlbiB0aG91Z2ggaXNMaW5rIHNvbWV0aW1lcyByZXR1
cm5zIHRydWUKICAgICAgICAgLy8gZm9yIHRoZW0uCkBAIC0yNTE0LDEyICsyNTE3LDEzIEBAIHZv
aWQgTm9kZTo6aGFuZGxlTG9jYWxFdmVudHMoRXZlbnQqIGV2ZW50KQogICAgIGZpcmVFdmVudExp
c3RlbmVycyhldmVudCk7CiB9CiAKLSNpZiBFTkFCTEUoU1ZHKQotc3RhdGljIGlubGluZSBTVkdF
bGVtZW50SW5zdGFuY2UqIGV2ZW50VGFyZ2V0QXNTVkdFbGVtZW50SW5zdGFuY2UoTm9kZSogcmVm
ZXJlbmNlTm9kZSkKK3N0YXRpYyBpbmxpbmUgRXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0UmVzcGVj
dGluZ1NWR1RhcmdldFJ1bGVzKE5vZGUqIHJlZmVyZW5jZU5vZGUpCiB7CiAgICAgQVNTRVJUKHJl
ZmVyZW5jZU5vZGUpOworCisjaWYgRU5BQkxFKFNWRykKICAgICBpZiAoIXJlZmVyZW5jZU5vZGUt
PmlzU1ZHRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHJlZmVy
ZW5jZU5vZGU7CiAKICAgICAvLyBTcGVjOiBUaGUgZXZlbnQgaGFuZGxpbmcgZm9yIHRoZSBub24t
ZXhwb3NlZCB0cmVlIHdvcmtzIGFzIGlmIHRoZSByZWZlcmVuY2VkIGVsZW1lbnQgaGFkIGJlZW4g
dGV4dHVhbGx5IGluY2x1ZGVkCiAgICAgLy8gYXMgYSBkZWVwbHkgY2xvbmVkIGNoaWxkIG9mIHRo
ZSAndXNlJyBlbGVtZW50LCBleGNlcHQgdGhhdCBldmVudHMgYXJlIGRpc3BhdGNoZWQgdG8gdGhl
IFNWR0VsZW1lbnRJbnN0YW5jZSBvYmplY3RzCkBAIC0yNTMzLDM3ICsyNTM3LDQwIEBAIHN0YXRp
YyBpbmxpbmUgU1ZHRWxlbWVudEluc3RhbmNlKiBldmVudFRhcmdldEFzU1ZHRWxlbWVudEluc3Rh
bmNlKE5vZGUqIHJlZmVyZW5jCiAgICAgICAgIGlmIChTVkdFbGVtZW50SW5zdGFuY2UqIGluc3Rh
bmNlID0gc3RhdGljX2Nhc3Q8U1ZHVXNlRWxlbWVudCo+KHNoYWRvd1RyZWVQYXJlbnRFbGVtZW50
KS0+aW5zdGFuY2VGb3JTaGFkb3dUcmVlRWxlbWVudChyZWZlcmVuY2VOb2RlKSkKICAgICAgICAg
ICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CisjZW5kaWYKIAotICAgIHJldHVybiAwOworICAg
IHJldHVybiByZWZlcmVuY2VOb2RlOwogfQotI2VuZGlmCiAKLXN0YXRpYyBpbmxpbmUgRXZlbnRU
YXJnZXQqIGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1NWR1RhcmdldFJ1bGVzKE5vZGUqIHJlZmVyZW5j
ZU5vZGUpCit2b2lkIE5vZGU6OmV2ZW50QW5jZXN0b3JzKFZlY3RvcjxFdmVudENvbnRleHQ+ICZh
bmNlc3RvcnMsIEV2ZW50VGFyZ2V0KiBvcmlnaW5hbFRhcmdldCkKIHsKLSAgICBBU1NFUlQocmVm
ZXJlbmNlTm9kZSk7CisgICAgaWYgKCFpbkRvY3VtZW50KCkpCisgICAgICAgIHJldHVybjsKIAot
I2lmIEVOQUJMRShTVkcpCi0gICAgaWYgKFNWR0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2UgPSBl
dmVudFRhcmdldEFzU1ZHRWxlbWVudEluc3RhbmNlKHJlZmVyZW5jZU5vZGUpKSB7Ci0gICAgICAg
IEFTU0VSVChpbnN0YW5jZS0+c2hhZG93VHJlZUVsZW1lbnQoKSA9PSByZWZlcmVuY2VOb2RlKTsK
LSAgICAgICAgcmV0dXJuIGluc3RhbmNlOwotICAgIH0KLSNlbmRpZgorICAgIEV2ZW50VGFyZ2V0
KiB0YXJnZXQgPSBvcmlnaW5hbFRhcmdldDsKKyAgICBOb2RlKiBhbmNlc3RvciA9IHRoaXM7Cisg
ICAgYm9vbCBza2lwID0gZmFsc2U7CisgICAgZG8geworICAgICAgICBpZiAoYW5jZXN0b3ItPmlz
U2hhZG93Tm9kZSgpKSB7CisgICAgICAgICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLT5zaGFkb3dQ
YXJlbnROb2RlKCk7CisgICAgICAgICAgICBpZiAoIXNraXApCisgICAgICAgICAgICAgICAgdGFy
Z2V0ID0gYW5jZXN0b3I7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYW5jZXN0b3IgPSBh
bmNlc3Rvci0+cGFyZW50Tm9kZSgpOwogCi0gICAgcmV0dXJuIHJlZmVyZW5jZU5vZGU7Ci19Cisg
ICAgICAgIGlmICghYW5jZXN0b3IpCisgICAgICAgICAgICByZXR1cm47CiAKLXZvaWQgTm9kZTo6
ZXZlbnRBbmNlc3RvcnMoVmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+ICZhbmNlc3RvcnMp
Ci17Ci0gICAgaWYgKGluRG9jdW1lbnQoKSkgewotICAgICAgICBmb3IgKENvbnRhaW5lck5vZGUq
IGFuY2VzdG9yID0gZXZlbnRQYXJlbnROb2RlKCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2Vz
dG9yLT5ldmVudFBhcmVudE5vZGUoKSkgewogI2lmIEVOQUJMRShTVkcpCi0gICAgICAgICAgICAv
LyBTa2lwIDx1c2U+IHNoYWRvdyB0cmVlIGVsZW1lbnRzLgotICAgICAgICAgICAgaWYgKGFuY2Vz
dG9yLT5pc1NWR0VsZW1lbnQoKSAmJiBhbmNlc3Rvci0+aXNTaGFkb3dOb2RlKCkpCi0gICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIC8vIFNraXAgU1ZHU2hhZG93VHJlZVJvb3RFbGVt
ZW50LgorICAgICAgICBza2lwID0gYW5jZXN0b3ItPmlzU1ZHRWxlbWVudCgpICYmIGFuY2VzdG9y
LT5pc1NoYWRvd05vZGUoKTsKKyAgICAgICAgaWYgKHNraXApCisgICAgICAgICAgICBjb250aW51
ZTsKICNlbmRpZgotICAgICAgICAgICAgYW5jZXN0b3JzLmFwcGVuZChhbmNlc3Rvcik7Ci0gICAg
ICAgIH0KLSAgICB9CisgICAgICAgIC8vIEZJWE1FOiBVbnJvbGwgdGhlIGV4dHJhIGxvb3AgaW5z
aWRlIGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1NWR1RhcmdldFJ1bGVzIGludG8gdGhpcyBsb29wLgor
ICAgICAgICBhbmNlc3RvcnMuYXBwZW5kKEV2ZW50Q29udGV4dChhbmNlc3RvciwgZXZlbnRUYXJn
ZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0UnVsZXMoYW5jZXN0b3IpLCB0YXJnZXQpKTsKKworICAgIH0g
d2hpbGUgKHRydWUpOwogfQogCiBib29sIE5vZGU6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxF
dmVudD4gcHJwRXZlbnQpCkBAIC0yNTg5LDIwICsyNTk2LDEzIEBAIGJvb2wgTm9kZTo6ZGlzcGF0
Y2hHZW5lcmljRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiAgICAgLy8gSWYgdGhl
IG5vZGUgaXMgbm90IGluIGEgZG9jdW1lbnQganVzdCBzZW5kIHRoZSBldmVudCB0byBpdC4KICAg
ICAvLyBCZSBzdXJlIHRvIHJlZiBhbGwgb2Ygbm9kZXMgc2luY2UgZXZlbnQgaGFuZGxlcnMgY291
bGQgcmVzdWx0IGluIHRoZSBsYXN0IHJlZmVyZW5jZSBnb2luZyBhd2F5LgogICAgIFJlZlB0cjxO
b2RlPiB0aGlzTm9kZSh0aGlzKTsKLSAgICBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4g
YW5jZXN0b3JzOwotICAgIGV2ZW50QW5jZXN0b3JzKGFuY2VzdG9ycyk7CisgICAgUmVmUHRyPEV2
ZW50VGFyZ2V0PiBvcmlnaW5hbFRhcmdldChldmVudC0+dGFyZ2V0KCkpOworICAgIFZlY3RvcjxF
dmVudENvbnRleHQ+IGFuY2VzdG9yczsKKyAgICBldmVudEFuY2VzdG9ycyhhbmNlc3RvcnMsIG9y
aWdpbmFsVGFyZ2V0LmdldCgpKTsKIAotICAgIC8vIFNldCB1cCBhIHBvaW50ZXIgdG8gaW5kaWNh
dGUgd2hldGhlciAvIHdoZXJlIHRvIGRpc3BhdGNoIHdpbmRvdyBldmVudHMuCi0gICAgLy8gV2Ug
ZG9uJ3QgZGlzcGF0Y2ggbG9hZCBldmVudHMgdG8gdGhlIHdpbmRvdy4gVGhhdCBxdWlyayB3YXMg
b3JpZ2luYWxseQotICAgIC8vIGFkZGVkIGJlY2F1c2UgTW96aWxsYSBkb2Vzbid0IHByb3BhZ2F0
ZSBsb2FkIGV2ZW50cyB0byB0aGUgd2luZG93IG9iamVjdC4KLSAgICBET01XaW5kb3cqIHRhcmdl
dEZvcldpbmRvd0V2ZW50cyA9IDA7Ci0gICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1l
cygpLmxvYWRFdmVudCkgewotICAgICAgICBOb2RlKiB0b3BMZXZlbENvbnRhaW5lciA9IGFuY2Vz
dG9ycy5pc0VtcHR5KCkgPyB0aGlzIDogYW5jZXN0b3JzLmxhc3QoKS5nZXQoKTsKLSAgICAgICAg
aWYgKHRvcExldmVsQ29udGFpbmVyLT5pc0RvY3VtZW50Tm9kZSgpKQotICAgICAgICAgICAgdGFy
Z2V0Rm9yV2luZG93RXZlbnRzID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPih0b3BMZXZlbENvbnRh
aW5lciktPmRvbVdpbmRvdygpOwotICAgIH0KKyAgICBXaW5kb3dFdmVudENvbnRleHQgd2luZG93
Q29udGV4dChldmVudC5nZXQoKSwgdGhpcywgYW5jZXN0b3JzKTsKIAotICAgIGludCBpbnN0cnVt
ZW50YXRpb25Db29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRXaWxs
RGlzcGF0Y2hFdmVudChkb2N1bWVudCgpLCAqZXZlbnQsIHRhcmdldEZvcldpbmRvd0V2ZW50cywg
dGhpcywgYW5jZXN0b3JzKTsKKyAgICBpbnQgaW5zdHJ1bWVudGF0aW9uQ29va2llID0gSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50V2lsbERpc3BhdGNoRXZlbnQoZG9jdW1lbnQo
KSwgKmV2ZW50LCB3aW5kb3dDb250ZXh0LndpbmRvdygpLCB0aGlzLCBhbmNlc3RvcnMpOwogCiAg
ICAgLy8gR2l2ZSB0aGUgdGFyZ2V0IG5vZGUgYSBjaGFuY2UgdG8gZG8gc29tZSB3b3JrIGJlZm9y
ZSBET00gZXZlbnQgaGFuZGxlcnMgZ2V0IGEgY3JhY2suCiAgICAgdm9pZCogZGF0YSA9IHByZURp
c3BhdGNoRXZlbnRIYW5kbGVyKGV2ZW50LmdldCgpKTsKQEAgLTI2MTIsMjIgKzI2MTIsMTcgQEAg
Ym9vbCBOb2RlOjpkaXNwYXRjaEdlbmVyaWNFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVu
dCkKICAgICAvLyBUcmlnZ2VyIGNhcHR1cmluZyBldmVudCBoYW5kbGVycywgc3RhcnRpbmcgYXQg
dGhlIHRvcCBhbmQgd29ya2luZyBvdXIgd2F5IGRvd24uCiAgICAgZXZlbnQtPnNldEV2ZW50UGhh
c2UoRXZlbnQ6OkNBUFRVUklOR19QSEFTRSk7CiAKLSAgICBpZiAodGFyZ2V0Rm9yV2luZG93RXZl
bnRzKSB7Ci0gICAgICAgIGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KHRhcmdldEZvcldpbmRvd0V2
ZW50cyk7Ci0gICAgICAgIHRhcmdldEZvcldpbmRvd0V2ZW50cy0+ZmlyZUV2ZW50TGlzdGVuZXJz
KGV2ZW50LmdldCgpKTsKLSAgICAgICAgaWYgKGV2ZW50LT5wcm9wYWdhdGlvblN0b3BwZWQoKSkK
LSAgICAgICAgICAgIGdvdG8gZG9uZURpc3BhdGNoaW5nOwotICAgIH0KKyAgICBpZiAod2luZG93
Q29udGV4dC5oYW5kbGVMb2NhbEV2ZW50cyhldmVudC5nZXQoKSkgJiYgZXZlbnQtPnByb3BhZ2F0
aW9uU3RvcHBlZCgpKQorICAgICAgICBnb3RvIGRvbmVEaXNwYXRjaGluZzsKKwogICAgIGZvciAo
c2l6ZV90IGkgPSBhbmNlc3RvcnMuc2l6ZSgpOyBpOyAtLWkpIHsKLSAgICAgICAgQ29udGFpbmVy
Tm9kZSogYW5jZXN0b3IgPSBhbmNlc3RvcnNbaSAtIDFdLmdldCgpOwotICAgICAgICBldmVudC0+
c2V0Q3VycmVudFRhcmdldChldmVudFRhcmdldFJlc3BlY3RpbmdTVkdUYXJnZXRSdWxlcyhhbmNl
c3RvcikpOwotICAgICAgICBhbmNlc3Rvci0+aGFuZGxlTG9jYWxFdmVudHMoZXZlbnQuZ2V0KCkp
OworICAgICAgICBhbmNlc3RvcnNbaSAtIDFdLmhhbmRsZUxvY2FsRXZlbnRzKGV2ZW50LmdldCgp
KTsKICAgICAgICAgaWYgKGV2ZW50LT5wcm9wYWdhdGlvblN0b3BwZWQoKSkKICAgICAgICAgICAg
IGdvdG8gZG9uZURpc3BhdGNoaW5nOwogICAgIH0KIAogICAgIGV2ZW50LT5zZXRFdmVudFBoYXNl
KEV2ZW50OjpBVF9UQVJHRVQpOwotCisgICAgZXZlbnQtPnNldFRhcmdldChvcmlnaW5hbFRhcmdl
dC5nZXQoKSk7CiAgICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQoZXZlbnRUYXJnZXRSZXNwZWN0
aW5nU1ZHVGFyZ2V0UnVsZXModGhpcykpOwogICAgIGhhbmRsZUxvY2FsRXZlbnRzKGV2ZW50Lmdl
dCgpKTsKICAgICBpZiAoZXZlbnQtPnByb3BhZ2F0aW9uU3RvcHBlZCgpKQpAQCAtMjYzOSwyMSAr
MjYzNCwxNiBAQCBib29sIE5vZGU6OmRpc3BhdGNoR2VuZXJpY0V2ZW50KFBhc3NSZWZQdHI8RXZl
bnQ+IHBycEV2ZW50KQogCiAgICAgICAgIHNpemVfdCBzaXplID0gYW5jZXN0b3JzLnNpemUoKTsK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAg
IENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0gYW5jZXN0b3JzW2ldLmdldCgpOwotICAgICAgICAg
ICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQoZXZlbnRUYXJnZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0
UnVsZXMoYW5jZXN0b3IpKTsKLSAgICAgICAgICAgIGFuY2VzdG9yLT5oYW5kbGVMb2NhbEV2ZW50
cyhldmVudC5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoZXZlbnQtPnByb3BhZ2F0aW9uU3RvcHBl
ZCgpIHx8IGV2ZW50LT5jYW5jZWxCdWJibGUoKSkKLSAgICAgICAgICAgICAgICBnb3RvIGRvbmVE
aXNwYXRjaGluZzsKLSAgICAgICAgfQotICAgICAgICBpZiAodGFyZ2V0Rm9yV2luZG93RXZlbnRz
KSB7Ci0gICAgICAgICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh0YXJnZXRGb3JXaW5kb3dF
dmVudHMpOwotICAgICAgICAgICAgdGFyZ2V0Rm9yV2luZG93RXZlbnRzLT5maXJlRXZlbnRMaXN0
ZW5lcnMoZXZlbnQuZ2V0KCkpOworICAgICAgICAgICAgYW5jZXN0b3JzW2ldLmhhbmRsZUxvY2Fs
RXZlbnRzKGV2ZW50LmdldCgpKTsKICAgICAgICAgICAgIGlmIChldmVudC0+cHJvcGFnYXRpb25T
dG9wcGVkKCkgfHwgZXZlbnQtPmNhbmNlbEJ1YmJsZSgpKQogICAgICAgICAgICAgICAgIGdvdG8g
ZG9uZURpc3BhdGNoaW5nOwogICAgICAgICB9CisgICAgICAgIGlmICh3aW5kb3dDb250ZXh0Lmhh
bmRsZUxvY2FsRXZlbnRzKGV2ZW50LmdldCgpKSAmJiAoZXZlbnQtPnByb3BhZ2F0aW9uU3RvcHBl
ZCgpIHx8IGV2ZW50LT5jYW5jZWxCdWJibGUoKSkpCisgICAgICAgICAgICBnb3RvIGRvbmVEaXNw
YXRjaGluZzsKICAgICB9CiAKIGRvbmVEaXNwYXRjaGluZzoKKyAgICBldmVudC0+c2V0VGFyZ2V0
KG9yaWdpbmFsVGFyZ2V0LmdldCgpKTsKICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCgwKTsK
ICAgICBldmVudC0+c2V0RXZlbnRQaGFzZSgwKTsKIApAQCAtMjY3NCw4ICsyNjY0LDcgQEAgZG9u
ZURpc3BhdGNoaW5nOgogICAgICAgICBpZiAoZXZlbnQtPmJ1YmJsZXMoKSkgewogICAgICAgICAg
ICAgc2l6ZV90IHNpemUgPSBhbmNlc3RvcnMuc2l6ZSgpOwogICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgICAgICBDb250YWluZXJOb2Rl
KiBhbmNlc3RvciA9IGFuY2VzdG9yc1tpXS5nZXQoKTsKLSAgICAgICAgICAgICAgICBhbmNlc3Rv
ci0+ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudC5nZXQoKSk7CisgICAgICAgICAgICAgICAgYW5j
ZXN0b3JzW2ldLm5vZGUoKS0+ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudC5nZXQoKSk7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKCFldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpKTsKICAgICAgICAg
ICAgICAgICBpZiAoZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCiAgICAgICAgICAgICAgICAgICAg
IGdvdG8gZG9uZVdpdGhEZWZhdWx0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vTm9kZS5oIGIv
V2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDU4N2VmZmQwZmU4MjI3NDc2OTU1MDY0NGU5MmRlZjVh
ODM5Mjk0MGEuLjVmY2I4Mjg5NTVhNDZhYzI1YjJhNGE4ZWM2NGI2OTg5MWU5ZmY1ZjkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTQ5
LDYgKzQ5LDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEeW5hbWljTm9kZUxpc3Q7CiBjbGFz
cyBFbGVtZW50OwogY2xhc3MgRXZlbnQ7CitjbGFzcyBFdmVudENvbnRleHQ7CiBjbGFzcyBFdmVu
dExpc3RlbmVyOwogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZyYW1lOwpAQCAtMjEyLDE1ICsy
MTMsMTQgQEAgcHVibGljOgogICAgIE5vZGUqIHNoYWRvd0FuY2VzdG9yTm9kZSgpOwogICAgIE5v
ZGUqIHNoYWRvd1RyZWVSb290Tm9kZSgpOwogICAgIGJvb2wgaXNJblNoYWRvd1RyZWUoKTsKLQot
ICAgIC8vIFRoZSBub2RlJ3MgcGFyZW50IGZvciB0aGUgcHVycG9zZSBvZiBldmVudCBjYXB0dXJl
IGFuZCBidWJibGluZy4KLSAgICB2aXJ0dWFsIENvbnRhaW5lck5vZGUqIGV2ZW50UGFyZW50Tm9k
ZSgpOworICAgIC8vIE5vZGUncyBwYXJlbnQgb3Igc2hhZG93IHRyZWUgaG9zdC4KKyAgICBDb250
YWluZXJOb2RlKiBwYXJlbnRPckhvc3ROb2RlKCk7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBlbmNs
b3NpbmcgZXZlbnQgcGFyZW50IG5vZGUgKG9yIHNlbGYpIHRoYXQsIHdoZW4gY2xpY2tlZCwgd291
bGQgdHJpZ2dlciBhIG5hdmlnYXRpb24uCiAgICAgTm9kZSogZW5jbG9zaW5nTGlua0V2ZW50UGFy
ZW50T3JTZWxmKCk7CiAKLSAgICAvLyBOb2RlIGFuY2VzdG9ycyB3aGVuIGNvbmNlcm5lZCBhYm91
dCBldmVudCBmbG93Ci0gICAgdm9pZCBldmVudEFuY2VzdG9ycyhWZWN0b3I8UmVmUHRyPENvbnRh
aW5lck5vZGU+ID4gJmFuY2VzdG9ycyk7CisgICAgLy8gTm9kZSBhbmNlc3RvcnMgd2hlbiBjb25j
ZXJuZWQgYWJvdXQgZXZlbnQgZmxvdy4KKyAgICB2b2lkIGV2ZW50QW5jZXN0b3JzKFZlY3RvcjxF
dmVudENvbnRleHQ+ICZhbmNlc3RvcnMsIEV2ZW50VGFyZ2V0Kik7CiAKICAgICBib29sIGlzQmxv
Y2tGbG93KCkgY29uc3Q7CiAgICAgYm9vbCBpc0Jsb2NrRmxvd09yQmxvY2tUYWJsZSgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vVGV4dC5jcHAgYi9XZWJDb3JlL2RvbS9UZXh0LmNw
cAppbmRleCBjYzIxNmQ4ZmZmMWNkNzQxZDI4Zjg4ZDgzNDFmYjhjMzU0ZGU5YjJlLi5kYTk4MDli
MzNkZTVlODgyMmNjNTI4OTc0OGI4MmQ0MGNjZjVmMjM2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Rv
bS9UZXh0LmNwcAorKysgYi9XZWJDb3JlL2RvbS9UZXh0LmNwcApAQCAtMjM5LDEwICsyMzksMTEg
QEAgYm9vbCBUZXh0OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlICpzdHlsZSkKIAogUmVu
ZGVyT2JqZWN0KiBUZXh0OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRl
clN0eWxlKikKIHsKKyAgICBOb2RlKiBwYXJlbnRPckhvc3QgPSBwYXJlbnRPckhvc3ROb2RlKCk7
CiAjaWYgRU5BQkxFKFNWRykKLSAgICBpZiAocGFyZW50Tm9kZSgpLT5pc1NWR0VsZW1lbnQoKQor
ICAgIGlmIChwYXJlbnRPckhvc3QtPmlzU1ZHRWxlbWVudCgpCiAjaWYgRU5BQkxFKFNWR19GT1JF
SUdOX09CSkVDVCkKLSAgICAgICAgJiYgIXBhcmVudE5vZGUoKS0+aGFzVGFnTmFtZShTVkdOYW1l
czo6Zm9yZWlnbk9iamVjdFRhZykKKyAgICAgICAgJiYgIXBhcmVudE9ySG9zdC0+aGFzVGFnTmFt
ZShTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZykKICNlbmRpZgogICAgICkKICAgICAgICAgcmV0
dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR0lubGluZVRleHQodGhpcywgZGF0YUltcGwoKSk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggYzFjMjFiNmMzODM5YTdk
ZGIxNTJkZWJjNTgzNjQyMTIzMGE1MDUxNS4uMmQ1ZjYzNGI1NDE1NzNlMDEyZWIyMjFiOTIyYTkw
YjE5NDdlMTlmZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAt
NTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRU
eXBlLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudENvbnRleHQuaCIKICNp
bmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1
ZGUgIkV2ZW50VGFyZ2V0LmgiCkBAIC01OTcsMTMgKzU5OCwxMyBAQCB2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUobG9uZyBub2RlSWQsIGxvbmcqIG91dE5v
ZGVJZCwgUgogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGUgTm9kZSdzIEV2ZW50IEFuY2Vz
dG9ycyAobm90IGluY2x1ZGluZyBzZWxmKQotICAgIFZlY3RvcjxSZWZQdHI8Q29udGFpbmVyTm9k
ZT4gPiBhbmNlc3RvcnM7Ci0gICAgbm9kZS0+ZXZlbnRBbmNlc3RvcnMoYW5jZXN0b3JzKTsKKyAg
ICBWZWN0b3I8RXZlbnRDb250ZXh0PiBhbmNlc3RvcnM7CisgICAgbm9kZS0+ZXZlbnRBbmNlc3Rv
cnMoYW5jZXN0b3JzLCBub2RlKTsKIAogICAgIC8vIE5vZGVzIGFuZCB0aGVpciBMaXN0ZW5lcnMg
Zm9yIHRoZSBjb25jZXJuZWQgZXZlbnQgdHlwZXMgKG9yZGVyIGlzIHRvcCB0byBib3R0b20pCiAg
ICAgVmVjdG9yPEV2ZW50TGlzdGVuZXJJbmZvPiBldmVudEluZm9ybWF0aW9uOwogICAgIGZvciAo
c2l6ZV90IGkgPSBhbmNlc3RvcnMuc2l6ZSgpOyBpOyAtLWkpIHsKLSAgICAgICAgQ29udGFpbmVy
Tm9kZSogYW5jZXN0b3IgPSBhbmNlc3RvcnNbaSAtIDFdLmdldCgpOworICAgICAgICBOb2RlKiBh
bmNlc3RvciA9IGFuY2VzdG9yc1tpIC0gMV0ubm9kZSgpOwogICAgICAgICBmb3IgKHNpemVfdCBq
ID0gMDsgaiA8IGV2ZW50VHlwZXNMZW5ndGg7ICsraikgewogICAgICAgICAgICAgQXRvbWljU3Ry
aW5nJiB0eXBlID0gZXZlbnRUeXBlc1tqXTsKICAgICAgICAgICAgIGlmIChhbmNlc3Rvci0+aGFz
RXZlbnRMaXN0ZW5lcnModHlwZSkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcAppbmRleCBmYjU3NjhhOTE4MTlmYzU5N2M5NmEwNTU0Yjg5ZDNhNjcx
MWJlYTBkLi4zOTRmZDIwNzE0ODFiMmFjYjQyMWYyM2UyM2M2YWRiNWNlNWZhNTE5IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTM1LDYg
KzM1LDcgQEAKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisj
aW5jbHVkZSAiRXZlbnRDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5oIgpAQCAtNDQsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGlu
dCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNfZnJvbnRlbmRDb3VudGVyID0gMDsKIAotc3Rh
dGljIGJvb2wgZXZlbnRIYXNMaXN0ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRh
aW5lck5vZGU+ID4mIGFuY2VzdG9ycykKK3N0YXRpYyBib29sIGV2ZW50SGFzTGlzdGVuZXJzKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9k
ZSwgY29uc3QgVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFuY2VzdG9ycykKIHsKICAgICBpZiAod2lu
ZG93ICYmIHdpbmRvdy0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnRUeXBlKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC01Myw3ICs1NCw3IEBAIHN0YXRpYyBib29sIGV2ZW50SGFzTGlzdGVuZXJz
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqIHdpbmRvdywKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFuY2VzdG9ycy5z
aXplKCk7IGkrKykgewotICAgICAgICBDb250YWluZXJOb2RlKiBhbmNlc3RvciA9IGFuY2VzdG9y
c1tpXS5nZXQoKTsKKyAgICAgICAgTm9kZSogYW5jZXN0b3IgPSBhbmNlc3RvcnNbaV0ubm9kZSgp
OwogICAgICAgICBpZiAoYW5jZXN0b3ItPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50VHlwZSkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNDQsNyArMTQ1LDcgQEAgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3RlckRhdGFNb2RpZmllZEltcGwoSW5zcGVj
dG9yQ29udHJvbGxlciogaW4KICAgICAgICAgZG9tQWdlbnQtPmNoYXJhY3RlckRhdGFNb2RpZmll
ZChjaGFyYWN0ZXJEYXRhKTsKIH0KIAotaW50IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5z
dHJ1bWVudFdpbGxEaXNwYXRjaEV2ZW50SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogd2luZG93LCBOb2Rl
KiBub2RlLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4mIGFuY2VzdG9ycykK
K2ludCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRXaWxsRGlzcGF0Y2hFdmVu
dEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgY29uc3QgRXZl
bnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPEV2
ZW50Q29udGV4dD4mIGFuY2VzdG9ycykKIHsKICAgICBpbnQgaW5zdHJ1bWVudGF0aW9uQ29va2ll
ID0gMDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApp
bmRleCA1YjY2YTJlOWU1YTA3ZGUzM2ViYWI4YmM0NTIxMTNjMTBmZTVkNDEyLi43ZmYwMzcxY2Rl
MWEzNWFlOTRmOWU4M2JhZTc2NDExMjRiODBmMGI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENoYXJhY3RlckRhdGE7CiBjbGFzcyBFbGVtZW50OworY2xhc3MgRXZl
bnRDb250ZXh0OwogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKIGNsYXNzIE5vZGU7CiAKQEAg
LTUxLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZE1vZGlmeURPTUF0dHIo
RG9jdW1lbnQqLCBFbGVtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgY2hhcmFjdGVyRGF0YU1vZGlm
aWVkKERvY3VtZW50KiwgQ2hhcmFjdGVyRGF0YSopOwogCi0gICAgc3RhdGljIGludCBpbnN0cnVt
ZW50V2lsbERpc3BhdGNoRXZlbnQoRG9jdW1lbnQqLCBjb25zdCBFdmVudCYsIERPTVdpbmRvdyos
IE5vZGUqLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4mIGFuY2VzdG9ycyk7
CisgICAgc3RhdGljIGludCBpbnN0cnVtZW50V2lsbERpc3BhdGNoRXZlbnQoRG9jdW1lbnQqLCBj
b25zdCBFdmVudCYsIERPTVdpbmRvdyosIE5vZGUqLCBjb25zdCBWZWN0b3I8RXZlbnRDb250ZXh0
PiYgYW5jZXN0b3JzKTsKICAgICBzdGF0aWMgdm9pZCBpbnN0cnVtZW50RGlkRGlzcGF0Y2hFdmVu
dChEb2N1bWVudCosIGludCBpbnN0cnVtZW50YXRpb25Db29raWUpOwogCiAgICAgc3RhdGljIHZv
aWQgaW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFN0cmluZyYpOwpAQCAtNzIsNyArNzMsNyBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyB2b2lkIGRpZE1vZGlmeURPTUF0dHJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBFbGVtZW50
Kik7CiAgICAgc3RhdGljIHZvaWQgY2hhcmFjdGVyRGF0YU1vZGlmaWVkSW1wbChJbnNwZWN0b3JD
b250cm9sbGVyKiwgQ2hhcmFjdGVyRGF0YSopOwogCi0gICAgc3RhdGljIGludCBpbnN0cnVtZW50
V2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBjb25zdCBFdmVudCYs
IERPTVdpbmRvdyosIE5vZGUqLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4m
IGFuY2VzdG9ycyk7CisgICAgc3RhdGljIGludCBpbnN0cnVtZW50V2lsbERpc3BhdGNoRXZlbnRJ
bXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBjb25zdCBFdmVudCYsIERPTVdpbmRvdyosIE5vZGUq
LCBjb25zdCBWZWN0b3I8RXZlbnRDb250ZXh0PiYgYW5jZXN0b3JzKTsKICAgICBzdGF0aWMgdm9p
ZCBpbnN0cnVtZW50RGlkRGlzcGF0Y2hFdmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGlu
dCBpbnN0cnVtZW50YXRpb25Db29raWUpOwogCiAgICAgc3RhdGljIHZvaWQgaW5zdHJ1bWVudFdp
bGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBjb25zdCBTdHJp
bmcmKTsKQEAgLTEzNSw3ICsxMzYsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmNoYXJhY3RlckRhdGFNb2RpZmllZChEb2N1bWVudCogZG9jdW1lbnQsCiAjZW5kaWYK
IH0KIAotaW5saW5lIGludCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRXaWxs
RGlzcGF0Y2hFdmVudChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9N
V2luZG93KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGFpbmVy
Tm9kZT4gPiYgYW5jZXN0b3JzKQoraW5saW5lIGludCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
Omluc3RydW1lbnRXaWxsRGlzcGF0Y2hFdmVudChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEV2
ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxF
dmVudENvbnRleHQ+JiBhbmNlc3RvcnMpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBp
ZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNv
bnRyb2xsZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGQz
NzA5ZmJkNGFhYzY2OTJmZWE3ZWZkNWY0ZmI2Njk0MTk3NzNhMzcuLmI3ZjFiMDlhZDM5NzA3MTVh
YTc5ODJlMDlmZmJhZTU1NzRiNTMzZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xNzYzLDgg
KzE3NjMsNiBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlTW91c2VFdmVudFRhcmdldE5vZGUo
Tm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgUGxhdGZvcm1NbwogICAgICAgICAvLyBJZiB0aGUgdGFy
Z2V0IG5vZGUgaXMgYSB0ZXh0IG5vZGUsIGRpc3BhdGNoIG9uIHRoZSBwYXJlbnQgbm9kZSAtIHJk
YXI6Ly80MTk2NjQ2CiAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LT5pc1RleHROb2RlKCkp
CiAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgaWYg
KHJlc3VsdCkKLSAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC0+c2hhZG93QW5jZXN0b3JOb2Rl
KCk7CiAgICAgfQogICAgIG1fbm9kZVVuZGVyTW91c2UgPSByZXN1bHQ7CiAjaWYgRU5BQkxFKFNW
RykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5jcHAKaW5kZXggMWIxOWYyNTQ4YWFkNGRiYTBjMWMzMGI5YTU5MzY2NGZhOGU1
YzA4OS4uYjljOWE2NjcxMTNjNzA3NzE4YTJiMjNiNWM3NzE1MGYxZDQ4MTA2NSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAKQEAgLTMzMiwxMyArMzMyLDYgQEAgdm9pZCBTVkdFbGVtZW50Ojp1cGRhdGVBbmltYXRl
ZFNWR0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogICAgIGNsZWFy
SXNTeW5jaHJvbml6aW5nU1ZHQXR0cmlidXRlcygpOwogfQogCi1Db250YWluZXJOb2RlKiBTVkdF
bGVtZW50OjpldmVudFBhcmVudE5vZGUoKQotewotICAgIGlmIChDb250YWluZXJOb2RlKiBzaGFk
b3dQYXJlbnQgPSBzaGFkb3dQYXJlbnROb2RlKCkpCi0gICAgICAgIHJldHVybiBzaGFkb3dQYXJl
bnQ7Ci0gICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OmV2ZW50UGFyZW50Tm9kZSgpOwotfQotCiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5oIGIvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IGZiMjgyNzljZjg1NTY3MTg3
ZDMzOGM3YWYxNjBlYzA2ZGEwYWM3N2IuLjEyNzFjN2I0M2E4YWE2NjM0NjhmZDU4YWQwMjNjYmY1
MWY4MmJmMjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAgLTk2LDggKzk2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N1cHBvcnRlZChTdHJpbmdJbXBsKiBmZWF0dXJl
LCBTdHJpbmdJbXBsKiB2ZXJzaW9uKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIENvbnRhaW5l
ck5vZGUqIGV2ZW50UGFyZW50Tm9kZSgpOwotCiAgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVkc1Bl
bmRpbmdSZXNvdXJjZUhhbmRsaW5nKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICB2
aXJ0dWFsIHZvaWQgYnVpbGRQZW5kaW5nUmVzb3VyY2UoKSB7IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72351</attachid>
            <date>2010-10-29 11:12:15 -0700</date>
            <delta_ts>2010-10-29 11:59:36 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-46015-20101029111214.patch</filename>
            <type>text/plain</type>
            <size>41345</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5ZjQwYzU3YTYzNDBmMjMyYTM4YjUxNDdiY2FjMDM3ZjBlNDJmMTBhLi4zNTU0NTI4
OWM4NGQ3OGYzNzgwY2JkNGRjOTNiMGEyNjI4ZTFlZGIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMTAtMDEgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
c2hhZG93IERPTS1hd2FyZSBldmVudCB0YXJnZXRpbmcgYW5kIGludHJvZHVjZSBFdmVudENvbnRl
eHQgdG8gdHJhY2sgdGhlIGNvbnRleHQgb2YgZWFjaCBldmVudCBkaXNwYXRjaC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MDE1CisKKyAgICAgICAg
VHVuZWQgdGhlIHRlc3QgdG8gYmV0dGVyIHJlZmxlY3QgaXRzIHBvaW50OiB0aGUgZXZlbiBzaG91
bGQgaW5kZWVkIGZpcmUgKGl0IHVzZWQgdG8gYmUgc3dhbGxvd2VkKSwKKyAgICAgICAgYnV0IGl0
J3MgdGFyZ2V0IHNob3VsZCBiZSBhIG5vbi1zaGFkb3cgbm9kZS4KKworICAgICAgICAqIGZhc3Qv
ZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9zc2luZy5odG1sOiBNb2RpZmllZCB0aGUgdGVzdC4K
KwogMjAxMC0xMC0yOSAgTWlraGFpbCBOYWdhbm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtDaHJvbWl1bV0gVW5yZXZpZXdlZCB0ZXN0X2V4cGVjdGF0aW9ucyBmaXguCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3Np
bmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9zc2lu
Zy5odG1sCmluZGV4IDYyM2UwNjczZWMxY2YzNjI1NmY1ZWMxMzY3ZDdjYTM5YmFiYjQxNTMuLjBl
ODdmZDc0NTU3YzU1ZmFlYjExMzU0MzdiNjUxZTVjZTVjMGM0MjEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9zc2luZy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9zc2luZy5odG1sCkBAIC0y
LDExICsyLDExIEBACiA8aGVhZD4KICAgICA8dGl0bGU+PC90aXRsZT4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIHZhciBmaXJlZCA9IGZhbHNlOworICAgICAg
ICB2YXIgc3VjY2VzczsKIAogICAgICAgICBmdW5jdGlvbiBzZWxlY3RTdGFydChldmVudCkKICAg
ICAgICAgewotICAgICAgICAgICAgZmlyZWQgPSB0cnVlOworICAgICAgICAgICAgc3VjY2VzcyA9
IGV2ZW50LnRhcmdldC5wYXJlbnROb2RlOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24g
dGVzdCgpCkBAIC0yMyw3ICsyMyw3IEBACiAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURv
d24oKTsKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKIAotICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVyVGV4dCA9IGZpcmVkID8gIkZB
SUwiIDogIlBBU1MiOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3Vs
dCIpLmlubmVyVGV4dCA9ICFzdWNjZXNzID8gIkZBSUwiIDogIlBBU1MiOwogICAgICAgICB9CiAK
ICAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0c3RhcnQiLCBzZWxlY3RTdGFydCwgdHJ1
ZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0FuZHJvaWQubWsgYi9XZWJDb3JlL0FuZHJvaWQubWsK
aW5kZXggZWEwYzI5ZWUzZDEyZDYzN2RjOGQwYjhkYjBjYjJiYzU3NGQ3OWZmMS4uNzIxNDdmMjk5
ZTczMzFhOGRjZGIzNmIzMzc1ZDUzMmY0Y2I0NzQ3NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9BbmRy
b2lkLm1rCisrKyBiL1dlYkNvcmUvQW5kcm9pZC5tawpAQCAtMTkyLDYgKzE5Miw3IEBAIExPQ0FM
X1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCWRvbS9XZWJLaXRBbmltYXRpb25F
dmVudC5jcHAgXAogCWRvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwIFwKIAlkb20vV2hlZWxF
dmVudC5jcHAgXAorCWRvbS9XaW5kb3dFdmVudENvbnRleHQuY3BwIFwKIAlkb20vWE1MRG9jdW1l
bnRQYXJzZXIuY3BwIFwKIAlkb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBcCiAJZG9t
L1hNTERvY3VtZW50UGFyc2VyU2NvcGUuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDMzZjI1ZDgyZWY1NDc3Yzcw
OTUyYjM4ZDQ5ZDY2OTk5NjdiMjA1YjEuLmZkYjcxNWZkNGIzZmQ5MmJiMjFmM2Q2NzE3NjZmZDcx
YzE3ODUxOTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtODIzLDYgKzgyMyw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMK
ICAgICBkb20vRW50aXR5UmVmZXJlbmNlLmNwcAogICAgIGRvbS9FcnJvckV2ZW50LmNwcAogICAg
IGRvbS9FdmVudC5jcHAKKyAgICBkb20vRXZlbnRDb250ZXh0LmNwcAogICAgIGRvbS9FdmVudE5h
bWVzLmNwcAogICAgIGRvbS9FdmVudFRhcmdldC5jcHAKICAgICBkb20vRXhjZXB0aW9uQmFzZS5j
cHAKQEAgLTg4MCw2ICs4ODEsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL1dlYktp
dEFuaW1hdGlvbkV2ZW50LmNwcAogICAgIGRvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwCiAg
ICAgZG9tL1doZWVsRXZlbnQuY3BwCisgICAgZG9tL1dpbmRvd0V2ZW50Q29udGV4dC5jcHAKICAg
ICBkb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwCiAgICAgZG9tL1hNTERvY3VtZW50UGFyc2VyTGli
eG1sMi5jcHAKICAgICBkb20vWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5jcHAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg5MDVmMzAxMWZj
NGNiNTVhNzM4YzlmOWE3MDdjYTQzYThlZDMwMS4uZjdhZGRkNTI5OWNkNjViNTg5M2ZmZGNkYWM4
NjJhYWI0NTkxNjczMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMC0xMC0wMSAgRGltaXRyaSBHbGF6a292
ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBzaGFkb3cgRE9NLWF3YXJlIGV2ZW50IHRhcmdl
dGluZyBhbmQgaW50cm9kdWNlIEV2ZW50Q29udGV4dCB0byB0cmFjayB0aGUgY29udGV4dCBvZiBl
YWNoIGV2ZW50IGRpc3BhdGNoLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDYwMTUKKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIG5vdGlvbiBv
ZiBFdmVudENvbnRleHQgKGFuZCBhIHZlcnkgc2ltaWxhci1hY3RpbmcgV2luZG93RXZlbnRDb250
ZXh0LCBzcGVjaWZpY2FsbHkKKyAgICAgICAgZm9yIERPTVdpbmRvdyksIGFuIGFic3RyYWN0aW9u
IHRoYXQgY2FycmllcyBpbmZvcm1hdGlvbiBhcm91bmQgZGlzcGF0Y2hpbmcgYW4gZXZlbnQgZm9y
IGFueSBnaXZlbiBOb2RlLgorCisgICAgICAgIFRoaXMgYWJzdHJhY3Rpb24gaXMgbmVjZXNzYXJ5
IHRvIGVuc3VyZSB0aGF0IGV2ZW50cywgZmlyZWQgZnJvbSBzaGFkb3cgRE9NIG5vZGVzIGFyZSBw
cm9wZXJseSByZXRhcmdldGVkIHRvCisgICAgICAgIGFwcGVhciBhcyBpZiB0aGV5IGFyZSBjb21p
bmcgZnJvbSB0aGVpciBob3N0LCB0aHVzIG5ldmVyIGV4cG9zaW5nIHRoZSBzaGFkb3cgRE9NIG5v
ZGVzIHRvIHRoZSB3b3JsZCBvdXRzaWRlLgorCisgICAgICAgICogQW5kcm9pZC5tazogQWRkZWQg
RXZlbnRDb250ZXh0LCBXaW5kb3dFdmVudENvbnRleHQgZmlsZXMuCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6IERpdHRvLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBEaXR0by4KKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUucHJvOiBEaXR0by4K
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAg
ICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vdGlmeUNo
aWxkSW5zZXJ0ZWQpOiBDaGFuZ2VkIHRvIGJlIHNoYWRvdyBET00tYXdhcmUuCisgICAgICAgICog
ZG9tL0V2ZW50Q29udGV4dC5jcHA6IEFkZGVkLgorICAgICAgICAqIGRvbS9FdmVudENvbnRleHQu
aDogQWRkZWQuCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6bWFya0FuY2VzdG9yc1dpdGhDaGlsZE5lZWRzU3R5bGVSZWNhbGMpOiBDaGFuZ2VkIHRvIGJl
IHNoYWRvdyBET00tYXdhcmUuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpjcmVhdGVSZW5kZXJl
cklmTmVlZGVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpwYXJlbnRPckhvc3RO
b2RlKTogQWRkZWQgbmV3IGhlbHBlciBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpl
bmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYpOiBDaGFuZ2VkIHRvIGJlIHNoYWRvdyBET00t
YXdhcmUuCisgICAgICAgIChXZWJDb3JlOjpldmVudFRhcmdldFJlc3BlY3RpbmdTVkdUYXJnZXRS
dWxlcyk6IENvbGxhcHNlZCB0d28gaGVscGVyIG1ldGhvZHMgaW50byBvbmUuCisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpldmVudEFuY2VzdG9ycyk6IFJlZmFjdG9yZWQgdG8gY29sbGVjdCBhIHZl
Y3RvciBvZiBFdmVudENvbnRleHRzLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6dG9wRXZlbnRD
b250ZXh0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpldmVudEhhc0xpc3RlbmVycyk6IENo
YW5nZWQgdG8gdXNlIEV2ZW50Q29udGV4dHMuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaXNw
YXRjaEdlbmVyaWNFdmVudCk6IERpdHRvLgorICAgICAgICAqIGRvbS9Ob2RlLmg6IFJlbW92ZWQg
ZXZlbnRQYXJlbnROb2RlIHRoYXQncyBubyBsb25nZXIgbmVlZGVkLCBhZGRlZCBwYXJlbnRPckhv
c3ROb2RlIGRlY2wsCisgICAgICAgICAgICBhbmQgY2hhbmdlZCBzaWduYXR1cmUgb2YgZXZlbnRB
bmNlc3RvcnMgdG8gdXNlIEV2ZW50Q29udGV4dHMuCisgICAgICAgICogZG9tL1RleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dDo6Y3JlYXRlUmVuZGVyZXIpOiBDaGFuZ2VkIHRvIGJlIHNo
YWRvdyBET00tYXdhcmUuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVy
c0Zvck5vZGUpOiBDaGFuZ2VkIHRvIHVzZSBFdmVudENvbnRleHRzLgorICAgICAgICAqIHBhZ2Uv
RXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRl
TW91c2VFdmVudFRhcmdldE5vZGUpOiBSZW1vdmVkIGNvZGUgdGhhdCdzIG5vIGxvbmdlciBuZWNl
c3NhcnkuCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOiBSZW1vdmVkIGV2ZW50UGFyZW50
Tm9kZSB0aGF0J3Mgbm8gbG9uZ2VyIG5lZWRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5o
OiBEaXR0by4KKyAgICAgICAgKiBkb20vV2luZG93RXZlbnRDb250ZXh0LmNwcDogQWRkZWQuCisg
ICAgICAgICogZG9tL1dpbmRvd0V2ZW50Q29udGV4dC5oOiBBZGRlZC4KKwogMjAxMC0xMC0yOSAg
Q3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQgZml4LiBUb3VjaCBXZWJDb3JlUHJlZml4LmggdG8gZml4IGluY3JlbWVudGFsIGJ1aWxkIGZh
aWx1cmUgYWZ0ZXIgcjcwODc4LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBi
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNGI5ZTRmZWQ5NjBmMmE2NGQxMDBmNjg5Njg2
Y2MyZjhhMmNhYTVjMi4uYzVlYmM0OTlmNWYxYzY5NzI3MDVmYzU4M2QwNTcwMmVmOTFiY2UwOSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCkBAIC0xMTMxLDggKzExMzEsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJD
b3JlL2RvbS9FcnJvckV2ZW50LmNwcCBcCiAJV2ViQ29yZS9kb20vRXJyb3JFdmVudC5oIFwKIAlX
ZWJDb3JlL2RvbS9FdmVudC5jcHAgXAotCVdlYkNvcmUvZG9tL0V2ZW50RXhjZXB0aW9uLmggXAog
CVdlYkNvcmUvZG9tL0V2ZW50LmggXAorCVdlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5jcHAgXAor
CVdlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oIFwKKwlXZWJDb3JlL2RvbS9FdmVudEV4Y2VwdGlv
bi5oIFwKIAlXZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmggXAogCVdlYkNvcmUvZG9tL0V2ZW50
TmFtZXMuY3BwIFwKIAlXZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggXApAQCAtMTI2MCw2ICsxMjYy
LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0aW9u
RXZlbnQuaCBcCiAJV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAgXAogCVdlYkNvcmUvZG9tL1do
ZWVsRXZlbnQuaCBcCisJV2ViQ29yZS9kb20vV2luZG93RXZlbnRDb250ZXh0LmNwcCBcCisJV2Vi
Q29yZS9kb20vV2luZG93RXZlbnRDb250ZXh0LmggXAogCVdlYkNvcmUvZG9tL1hNTERvY3VtZW50
UGFyc2VyLmNwcCBcCiAJV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuaCBcCiAJV2ViQ29y
ZS9kb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDlmZGExNWVmNGM3ZTE0
M2Y4ZTA5NWExY2Q3NWI5MTIwZDk4NmViMzguLjVlZTBlYzUxMTU2YWZjODgzYmZjM2Y0MzM1MzJm
NTMyY2RmNjU2MTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC0xMjAzLDYgKzEyMDMsOCBAQAogICAgICAgICAgICAgJ2RvbS9F
cnJvckV2ZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9FdmVudC5jcHAnLAogICAgICAgICAgICAg
J2RvbS9FdmVudC5oJywKKyAgICAgICAgICAgICdkb20vRXZlbnRDb250ZXh0LmNwcCcsCisgICAg
ICAgICAgICAnZG9tL0V2ZW50Q29udGV4dC5oJywKICAgICAgICAgICAgICdkb20vRXZlbnRFeGNl
cHRpb24uaCcsCiAgICAgICAgICAgICAnZG9tL0V2ZW50TGlzdGVuZXIuaCcsCiAgICAgICAgICAg
ICAnZG9tL0V2ZW50TmFtZXMuY3BwJywKQEAgLTEzMzgsNiArMTM0MCw4IEBACiAgICAgICAgICAg
ICAnZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5oJywKICAgICAgICAgICAgICdkb20vV2hlZWxF
dmVudC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9XaGVlbEV2ZW50LmgnLAorICAgICAgICAgICAg
J2RvbS9XaW5kb3dFdmVudENvbnRleHQuY3BwJywKKyAgICAgICAgICAgICdkb20vV2luZG93RXZl
bnRDb250ZXh0LmgnLAogICAgICAgICAgICAgJ2RvbS9YTUxEb2N1bWVudFBhcnNlci5jcHAnLAog
ICAgICAgICAgICAgJ2RvbS9YTUxEb2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAgICdkb20v
WE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA2MWQ2OTM0MDU2ODA2ZDAwZjhjNTZi
MzZhZGJlYzBjZmM5N2VjMDIxLi45OTg5ZmRkMjA4OTVmZDA1ZGU5ZDAyYzFiM2I4YjRkNTVhMDgx
MjdjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KQEAgLTcxMSw2ICs3MTEsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vRW50aXR5UmVm
ZXJlbmNlLmNwcCBcCiAgICAgZG9tL0Vycm9yRXZlbnQuY3BwIFwKICAgICBkb20vRXZlbnQuY3Bw
IFwKKyAgICBkb20vRXZlbnRDb250ZXh0LmNwcCBcCiAgICAgZG9tL0V2ZW50TmFtZXMuY3BwIFwK
ICAgICBkb20vRXZlbnRUYXJnZXQuY3BwIFwKICAgICBkb20vRXhjZXB0aW9uQmFzZS5jcHAgXApA
QCAtNzcxLDYgKzc3Miw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9XZWJLaXRBbmltYXRpb25F
dmVudC5jcHAgXAogICAgIGRvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwIFwKICAgICBkb20v
V2hlZWxFdmVudC5jcHAgXAorICAgIGRvbS9XaW5kb3dFdmVudENvbnRleHQuY3BwIFwKICAgICBk
b20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwIFwKICAgICBkb20vWE1MRG9jdW1lbnRQYXJzZXJRdC5j
cHAgXAogICAgIGRvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCBcCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJmZmNkYTEyYTJk
Mjk1MGE0YjA5MTJlYWI4NzEyMjFjOGFjYTE0MDUuLmRjMjkzZWNiZjc4ZjIwNWEwOWViMDkzODg1
MTE5ODE5ZTUzNjM1YzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC04ODUsNyArODg1LDExIEBACiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4MjI0RiAvKiBK
U01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRD
dXN0b20uY3BwICovOyB9OwogCQk0MTEwNDY0MTBGQTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZl
bnRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDExMDQ2M0YwRkEyMjJBNjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50TGlzdGVuZXIuaCAqLzsg
fTsKIAkJNDExMDQ2NDIwRkEyMjJBNjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50TGlzdGVuZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDQ2NDAw
RkEyMjJBNjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50TGlzdGVuZXIuY3BwICovOyB9OworCQk0MTIz
RTU2OTEyN0IzMDQxMDAwRkVFQTcgLyogV2luZG93RXZlbnRDb250ZXh0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTIzRTU2NzEyN0IzMDQxMDAwRkVF
QTcgLyogV2luZG93RXZlbnRDb250ZXh0LmggKi87IH07CisJCTQxMjNFNTZBMTI3QjMwNDEwMDBG
RUVBNyAvKiBXaW5kb3dFdmVudENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyM0U1NjgxMjdCMzA0MTAwMEZFRUE3IC8qIFdpbmRvd0V2
ZW50Q29udGV4dC5jcHAgKi87IH07CiAJCTQxMjdENTM3MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3Jp
cHRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovOyB9OworCQk0
MTM4RDMzNTEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM4RDMzMzEyNDQwNTQ4MDAzMjNEMzMg
LyogRXZlbnRDb250ZXh0LmggKi87IH07CisJCTQxMzhEMzM2MTI0NDA1NDgwMDMyM0QzMyAvKiBF
dmVudENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDEzOEQzMzQxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5jcHAgKi87IH07
CiAJCTQxNjJBNDUwMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDRE
MTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCAqLzsgfTsKIAkJ
NDE2MkE0NTExMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDRFMTAxMTQ1
QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggKi87IH07CiAJCTQxNjJBNDU0
MTAxMTQ1RTMwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MkE0NTMxMDEx
NDVFMzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgKi87IH07
CkBAIC02OTQ2LDcgKzY5NTAsMTEgQEAKIAkJNDEwQjdFNzExMDQ1RkFCMDAwRDgyMjRGIC8qIEpT
TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDExMDQ2M0YwRkEyMjJBNjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50TGlzdGVuZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RXZlbnRMaXN0ZW5lci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEwNDY0MDBGQTIyMkE2MDBCQTQzNkEgLyogU2Ny
aXB0RXZlbnRMaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTY3JpcHRFdmVudExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDEyM0U1NjcxMjdCMzA0MTAwMEZFRUE3IC8qIFdpbmRvd0V2ZW50Q29udGV4dC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaW5kb3dFdmVudENvbnRleHQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEyM0U1NjgxMjdCMzA0MTAwMEZFRUE3IC8qIFdpbmRvd0V2
ZW50Q29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaW5k
b3dFdmVudENvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI3RDUz
NjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0MTM4RDMzMzEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50Q29udGV4dC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MTM4RDMzNDEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50Q29udGV4dC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNjJBNDREMTAxMTQ1QUUwMERGRjNF
RCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwOyBwYXRoID0gd29ya2Vycy9E
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE2MkE0NEUxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oOyBw
YXRoID0gd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxNjJBNDRGMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
LmlkbDsgcGF0aCA9IHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODE1NCw2ICsxODE2Miw4IEBACiAJCQkJODUwMzFCMkIw
QTQ0RUZDNzAwRjk5MkUwIC8qIEV2ZW50LmNwcCAqLywKIAkJCQk4NTAzMUIyQzBBNDRFRkM3MDBG
OTkyRTAgLyogRXZlbnQuaCAqLywKIAkJCQkxNEU4MzZEMjA5Rjg1MTIwMDBCODVBRTQgLyogRXZl
bnQuaWRsICovLAorCQkJCTQxMzhEMzM0MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQu
Y3BwICovLAorCQkJCTQxMzhEMzMzMTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuaCAq
LywKIAkJCQlCQzYwRDkwOTBEMkExN0NFMDBCOTkxOEYgLyogRXZlbnRFeGNlcHRpb24uaCAqLywK
IAkJCQlCQzYwRDkwQTBEMkExN0NFMDBCOTkxOEYgLyogRXZlbnRFeGNlcHRpb24uaWRsICovLAog
CQkJCTkzNUZCQzQ0MDlCQTAwQjkwMEUyMzBCMSAvKiBFdmVudExpc3RlbmVyLmggKi8sCkBAIC0x
ODMxNCw2ICsxODMyNCw4IEBACiAJCQkJODUwMzFCM0EwQTQ0RUZDNzAwRjk5MkUwIC8qIFdoZWVs
RXZlbnQuY3BwICovLAogCQkJCTg1MDMxQjNCMEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVlbEV2ZW50
LmggKi8sCiAJCQkJOTNFRUMxRjcwOUMyODc3NzAwQzUxNUQxIC8qIFdoZWVsRXZlbnQuaWRsICov
LAorCQkJCTQxMjNFNTY4MTI3QjMwNDEwMDBGRUVBNyAvKiBXaW5kb3dFdmVudENvbnRleHQuY3Bw
ICovLAorCQkJCTQxMjNFNTY3MTI3QjMwNDEwMDBGRUVBNyAvKiBXaW5kb3dFdmVudENvbnRleHQu
aCAqLywKIAkJCQlGNTIzRDMwOTAyREU0NDc2MDE4NjM1Q0EgLyogWE1MRG9jdW1lbnRQYXJzZXIu
Y3BwICovLAogCQkJCUY1MjNEMzBBMDJERTQ0NzYwMTg2MzVDQSAvKiBYTUxEb2N1bWVudFBhcnNl
ci5oICovLAogCQkJCTU0QzUwRjdBMEU4MDFERjMwMDk4MzJBMCAvKiBYTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwICovLApAQCAtMTk0NzgsNiArMTk0OTAsNyBAQAogCQkJCTg5ODc4NTYwMTIy
Q0EwNjQwMDNBQUJEQSAvKiBFcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUNG
N0FFMjEwMTYyQjU4MDA0MjdERTcgLyogRXJyb3JFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODUwMzFCNDIwQTQ0RUZDNzAwRjk5MkUwIC8qIEV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0
MTM4RDMzNTEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzYwRDkwQzBEMkExN0NFMDBCOTkxOEYgLyogRXZlbnRFeGNlcHRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzQzA5QTUzMEIwNjREQjMwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzNUZCQzQ1MDlCQTAwQjkwMEUyMzBCMSAvKiBFdmVudExpc3Rl
bmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTIxMTMyLDYgKzIxMTQ1LDcgQEAKIAkJCQk4NTAzMUI1
MTBBNDRFRkM3MDBGOTkyRTAgLyogV2hlZWxFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM4
MEY0NzQwOUExMUFCNDAwMUZEQjM0IC8qIFdpZGdldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5
QjAyRUYwRUEyREJDNDAwQzU0NTcwIC8qIFdpZHRoSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQxMjNFNTY5MTI3QjMwNDEwMDBGRUVBNyAvKiBXaW5kb3dFdmVudENvbnRleHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDODI0M0U5MEQwQ0ZENzUwMDQ2MEM4RiAvKiBXaW5kb3dGZWF0dXJl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFMUJGMDAxMTVGRjZGQjAwNkY1MkNBIC8qIFdpbmRv
d3NLZXlib2FyZENvZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODIwM0FBMDBFRDhDMzUzMDBC
OEI2MUEgLyogV01MQWNjZXNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjEwNCw2ICsy
MjExOCw3IEBACiAJCQkJODkzQzQ4MEMxMjQ4QkQzQTAwMkIzRDg2IC8qIEVudHJ5U3luYy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyRUNGN0FFMTEwMTYyQjU4MDA0MjdERTcgLyogRXJyb3JFdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMUI0MTBBNDRFRkM3MDBGOTkyRTAgLyogRXZl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDEzOEQzMzYxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2
ZW50Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0MwOUE4MTBCMDY0RjAwMDA1QUJE
NEQgLyogRXZlbnRIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzQzA5QTdGMEIwNjRF
RUYwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQ0Ex
OUUwNTBEQzI1NTk1MDA2NUE5OTQgLyogRXZlbnRMb29wTWFjLm1tIGluIFNvdXJjZXMgKi8sCkBA
IC0yMzcwMiw2ICsyMzcxNyw3IEBACiAJCQkJOTM4MEY0NzMwOUExMUFCNDAwMUZEQjM0IC8qIFdp
ZGdldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzgwRjQ3ODA5QTExQUNDMDAxRkRCMzQgLyog
V2lkZ2V0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5QjAyRUUwRUEyREJDNDAwQzU0NTcw
IC8qIFdpZHRoSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDEyM0U1NkExMjdCMzA0
MTAwMEZFRUE3IC8qIFdpbmRvd0V2ZW50Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzgyNDNFODBEMENGRDc1MDA0NjBDOEYgLyogV2luZG93RmVhdHVyZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMDgyMDNBOUYwRUQ4QzM1MzAwQjhCNjFBIC8qIFdNTEFjY2Vzc0VsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMDg4Qzk3NTEwRUNCNkUyODAwMDUzNEJBIC8qIFdNTEFFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAgYi9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCBmYzMzNTE5MjQ1
NjE3MmY3OWMxMzRiYTYxOGMyN2VmZDNmNmIxODE0Li5iNGJkYjdmOTFjODk5Y2E4NDdmZWJkYjI3
ODI2M2ZmZTcxOWUzMDZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNw
cAorKysgYi9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMTAwNSw3ICsxMDA1LDgg
QEAgc3RhdGljIHZvaWQgbm90aWZ5Q2hpbGRJbnNlcnRlZChOb2RlKiBjaGlsZCkKICAgICBSZWZQ
dHI8Tm9kZT4gYyA9IGNoaWxkOwogICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBjaGls
ZC0+ZG9jdW1lbnQoKTsKIAotICAgIGlmIChjLT5wYXJlbnROb2RlKCkgJiYgYy0+cGFyZW50Tm9k
ZSgpLT5pbkRvY3VtZW50KCkpCisgICAgTm9kZSogcGFyZW50T3JIb3N0Tm9kZSA9IGMtPnBhcmVu
dE9ySG9zdE5vZGUoKTsKKyAgICBpZiAocGFyZW50T3JIb3N0Tm9kZSAmJiBwYXJlbnRPckhvc3RO
b2RlLT5pbkRvY3VtZW50KCkpCiAgICAgICAgIGMtPmluc2VydGVkSW50b0RvY3VtZW50KCk7CiAg
ICAgZWxzZQogICAgICAgICBjLT5pbnNlcnRlZEludG9UcmVlKHRydWUpOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmNwcCBiL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTY4ZjZiOGFhNDNkNmVjOTJiZGI1M2FiNjc2ZTg4YWVhYzM3OGY0ZQot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5jcHAKQEAgLTAsMCAr
MSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV2
ZW50Q29udGV4dC5oIgorCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIk5vZGUuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitFdmVudENvbnRleHQ6OkV2ZW50Q29udGV4dChOb2RlKiBub2RlLCBFdmVu
dFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCkKKyAgICA6IG1fbm9k
ZShub2RlKQorICAgICwgbV9jdXJyZW50VGFyZ2V0KGN1cnJlbnRUYXJnZXQpCisgICAgLCBtX3Rh
cmdldCh0YXJnZXQpCit7Cit9CisKK3ZvaWQgRXZlbnRDb250ZXh0OjpoYW5kbGVMb2NhbEV2ZW50
cyhFdmVudCogZXZlbnQpIGNvbnN0Cit7CisgICAgZXZlbnQtPnNldFRhcmdldChtX3RhcmdldC5n
ZXQoKSk7CisgICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQobV9jdXJyZW50VGFyZ2V0LmdldCgp
KTsKKyAgICBtX25vZGUtPmhhbmRsZUxvY2FsRXZlbnRzKGV2ZW50KTsKK30KKworfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmggYi9XZWJDb3JlL2RvbS9FdmVudENvbnRl
eHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jZTk2N2E1MDkzZjdmMjFhMTkzZmM0ZTljZWYyOThkYTZhNDU3Yzk0
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmgKQEAgLTAsMCAr
MSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lmbmRlZiBFdmVudENvbnRleHRfaAorI2RlZmluZSBF
dmVudENvbnRleHRfaAorCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEV2ZW50VGFyZ2V0OworY2xhc3MgRXZlbnQ7CitjbGFzcyBOb2RlOwor
CitjbGFzcyBFdmVudENvbnRleHQgeworcHVibGljOgorICAgIEV2ZW50Q29udGV4dChOb2RlKiwg
RXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQpOworCisgICAg
Tm9kZSogbm9kZSgpIGNvbnN0OworICAgIEV2ZW50VGFyZ2V0KiB0YXJnZXQoKSBjb25zdDsKKyAg
ICB2b2lkIGhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
UmVmUHRyPE5vZGU+IG1fbm9kZTsKKyAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IG1fY3VycmVudFRh
cmdldDsKKyAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IG1fdGFyZ2V0OworfTsKKworaW5saW5lIE5v
ZGUqIEV2ZW50Q29udGV4dDo6bm9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbm9kZS5nZXQo
KTsKK30KKworaW5saW5lIEV2ZW50VGFyZ2V0KiBFdmVudENvbnRleHQ6OnRhcmdldCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOworfQorCit9CisKKyNlbmRpZiAvLyBFdmVu
dENvbnRleHRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAppbmRleCBlNDViYWE0OTU3MDM1MDA3NGE0ZmUxODAwNzIwMDRkYWI4MWI2MGYz
Li4yNGVlNmI2M2I3YzVlMGEwOGM0MTA3Yjk4MDMxYjdjMzlhMjNmODdkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNDUsNiAr
NDUsNyBAQAogI2luY2x1ZGUgIkR5bmFtaWNOb2RlTGlzdC5oIgogI2luY2x1ZGUgIkVsZW1lbnQu
aCIKICNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50Q29udGV4dC5oIgogI2luY2x1
ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVk
ZSAiRXZlbnRMaXN0ZW5lci5oIgpAQCAtODAsNiArODEsNyBAQAogI2luY2x1ZGUgIldlYktpdEFu
aW1hdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmgiCiAjaW5j
bHVkZSAiV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIldpbmRvd0V2ZW50Q29udGV4dC5oIgogI2lu
Y2x1ZGUgIlhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgpAQCAtNzM0LDkgKzczNiw5IEBAIGlubGluZSB2b2lkIE5vZGU6OnNldFN0
eWxlQ2hhbmdlKFN0eWxlQ2hhbmdlVHlwZSBjaGFuZ2VUeXBlKQogCiBpbmxpbmUgdm9pZCBOb2Rl
OjptYXJrQW5jZXN0b3JzV2l0aENoaWxkTmVlZHNTdHlsZVJlY2FsYygpCiB7Ci0gICAgZm9yIChD
b250YWluZXJOb2RlKiBwID0gcGFyZW50Tm9kZSgpOyBwICYmICFwLT5jaGlsZE5lZWRzU3R5bGVS
ZWNhbGMoKTsgcCA9IHAtPnBhcmVudE5vZGUoKSkKKyAgICBmb3IgKENvbnRhaW5lck5vZGUqIHAg
PSBwYXJlbnRPckhvc3ROb2RlKCk7IHAgJiYgIXAtPmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpOyBw
ID0gcC0+cGFyZW50T3JIb3N0Tm9kZSgpKQogICAgICAgICBwLT5zZXRDaGlsZE5lZWRzU3R5bGVS
ZWNhbGMoKTsKLSAgICAKKwogICAgIGlmIChkb2N1bWVudCgpLT5jaGlsZE5lZWRzU3R5bGVSZWNh
bGMoKSkKICAgICAgICAgZG9jdW1lbnQoKS0+c2NoZWR1bGVTdHlsZVJlY2FsYygpOwogfQpAQCAt
MTMyMSw3ICsxMzIzLDcgQEAgdm9pZCBOb2RlOjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKIAog
ICAgIEFTU0VSVCghcmVuZGVyZXIoKSk7CiAgICAgCi0gICAgQ29udGFpbmVyTm9kZSogcGFyZW50
ID0gcGFyZW50Tm9kZSgpOyAgICAKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBwYXJlbnRP
ckhvc3ROb2RlKCk7CiAgICAgQVNTRVJUKHBhcmVudCk7CiAgICAgCiAgICAgUmVuZGVyT2JqZWN0
KiBwYXJlbnRSZW5kZXJlciA9IHBhcmVudC0+cmVuZGVyZXIoKTsKQEAgLTE0NDAsNiArMTQ0Miwx
MyBAQCBib29sIE5vZGU6OmlzSW5TaGFkb3dUcmVlKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
K0NvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE9ySG9zdE5vZGUoKQoreworICAgIGlmIChDb250
YWluZXJOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlKCkpCisgICAgICAgIHJldHVybiBwYXJlbnQ7
CisgICAgcmV0dXJuIHNoYWRvd1BhcmVudE5vZGUoKTsKK30KKwogYm9vbCBOb2RlOjppc0Jsb2Nr
RmxvdygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNC
bG9ja0Zsb3coKTsKQEAgLTIyMzksMTQgKzIyNDgsOSBAQCB2b2lkIE5vZGU6OmdldFN1YnJlc291
cmNlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKICAgICBhZGRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVVSTHModXJscyk7CiB9CiAKLUNvbnRhaW5lck5vZGUqIE5vZGU6OmV2ZW50UGFy
ZW50Tm9kZSgpCi17Ci0gICAgcmV0dXJuIHBhcmVudE5vZGUoKTsKLX0KLQogTm9kZSogTm9kZTo6
ZW5jbG9zaW5nTGlua0V2ZW50UGFyZW50T3JTZWxmKCkKIHsKLSAgICBmb3IgKE5vZGUqIG5vZGUg
PSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+ZXZlbnRQYXJlbnROb2RlKCkpIHsKKyAgICBmb3Ig
KE5vZGUqIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgp
KSB7CiAgICAgICAgIC8vIEZvciBpbWFnZW1hcHMsIHRoZSBlbmNsb3NpbmcgbGluayBub2RlIGlz
IHRoZSBhc3NvY2lhdGVkIGFyZWEgZWxlbWVudCBub3QgdGhlIGltYWdlIGl0c2VsZi4KICAgICAg
ICAgLy8gU28gd2UgZG9uJ3QgbGV0IGltYWdlcyBiZSB0aGUgZW5jbG9zaW5nTGlua05vZGUsIGV2
ZW4gdGhvdWdoIGlzTGluayBzb21ldGltZXMgcmV0dXJucyB0cnVlCiAgICAgICAgIC8vIGZvciB0
aGVtLgpAQCAtMjQ4NCwxMiArMjQ4OCwxMyBAQCB2b2lkIE5vZGU6OmhhbmRsZUxvY2FsRXZlbnRz
KEV2ZW50KiBldmVudCkKICAgICBmaXJlRXZlbnRMaXN0ZW5lcnMoZXZlbnQpOwogfQogCi0jaWYg
RU5BQkxFKFNWRykKLXN0YXRpYyBpbmxpbmUgU1ZHRWxlbWVudEluc3RhbmNlKiBldmVudFRhcmdl
dEFzU1ZHRWxlbWVudEluc3RhbmNlKE5vZGUqIHJlZmVyZW5jZU5vZGUpCitzdGF0aWMgaW5saW5l
IEV2ZW50VGFyZ2V0KiBldmVudFRhcmdldFJlc3BlY3RpbmdTVkdUYXJnZXRSdWxlcyhOb2RlKiBy
ZWZlcmVuY2VOb2RlKQogewogICAgIEFTU0VSVChyZWZlcmVuY2VOb2RlKTsKKworI2lmIEVOQUJM
RShTVkcpCiAgICAgaWYgKCFyZWZlcmVuY2VOb2RlLT5pc1NWR0VsZW1lbnQoKSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiByZWZlcmVuY2VOb2RlOwogCiAgICAgLy8gU3BlYzog
VGhlIGV2ZW50IGhhbmRsaW5nIGZvciB0aGUgbm9uLWV4cG9zZWQgdHJlZSB3b3JrcyBhcyBpZiB0
aGUgcmVmZXJlbmNlZCBlbGVtZW50IGhhZCBiZWVuIHRleHR1YWxseSBpbmNsdWRlZAogICAgIC8v
IGFzIGEgZGVlcGx5IGNsb25lZCBjaGlsZCBvZiB0aGUgJ3VzZScgZWxlbWVudCwgZXhjZXB0IHRo
YXQgZXZlbnRzIGFyZSBkaXNwYXRjaGVkIHRvIHRoZSBTVkdFbGVtZW50SW5zdGFuY2Ugb2JqZWN0
cwpAQCAtMjUwMywzNyArMjUwOCw0MCBAQCBzdGF0aWMgaW5saW5lIFNWR0VsZW1lbnRJbnN0YW5j
ZSogZXZlbnRUYXJnZXRBc1NWR0VsZW1lbnRJbnN0YW5jZShOb2RlKiByZWZlcmVuYwogICAgICAg
ICBpZiAoU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZSA9IHN0YXRpY19jYXN0PFNWR1VzZUVs
ZW1lbnQqPihzaGFkb3dUcmVlUGFyZW50RWxlbWVudCktPmluc3RhbmNlRm9yU2hhZG93VHJlZUVs
ZW1lbnQocmVmZXJlbmNlTm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAg
fQotCi0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQotc3RhdGljIGlubGluZSBFdmVudFRhcmdl
dCogZXZlbnRUYXJnZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0UnVsZXMoTm9kZSogcmVmZXJlbmNlTm9k
ZSkKLXsKLSAgICBBU1NFUlQocmVmZXJlbmNlTm9kZSk7Ci0KLSNpZiBFTkFCTEUoU1ZHKQotICAg
IGlmIChTVkdFbGVtZW50SW5zdGFuY2UqIGluc3RhbmNlID0gZXZlbnRUYXJnZXRBc1NWR0VsZW1l
bnRJbnN0YW5jZShyZWZlcmVuY2VOb2RlKSkgewotICAgICAgICBBU1NFUlQoaW5zdGFuY2UtPnNo
YWRvd1RyZWVFbGVtZW50KCkgPT0gcmVmZXJlbmNlTm9kZSk7Ci0gICAgICAgIHJldHVybiBpbnN0
YW5jZTsKLSAgICB9CiAjZW5kaWYKIAogICAgIHJldHVybiByZWZlcmVuY2VOb2RlOwogfQogCi12
b2lkIE5vZGU6OmV2ZW50QW5jZXN0b3JzKFZlY3RvcjxSZWZQdHI8Q29udGFpbmVyTm9kZT4gPiAm
YW5jZXN0b3JzKQordm9pZCBOb2RlOjpldmVudEFuY2VzdG9ycyhWZWN0b3I8RXZlbnRDb250ZXh0
PiAmYW5jZXN0b3JzLCBFdmVudFRhcmdldCogb3JpZ2luYWxUYXJnZXQpCiB7Ci0gICAgaWYgKGlu
RG9jdW1lbnQoKSkgewotICAgICAgICBmb3IgKENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0gZXZl
bnRQYXJlbnROb2RlKCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5ldmVudFBhcmVu
dE5vZGUoKSkgeworICAgIGlmICghaW5Eb2N1bWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBFdmVudFRhcmdldCogdGFyZ2V0ID0gb3JpZ2luYWxUYXJnZXQ7CisgICAgTm9kZSogYW5jZXN0
b3IgPSB0aGlzOworICAgIGJvb2wgc2hvdWxkU2tpcE5leHRBbmNlc3RvciA9IGZhbHNlOworICAg
IHdoaWxlICh0cnVlKSB7CisgICAgICAgIGlmIChhbmNlc3Rvci0+aXNTaGFkb3dOb2RlKCkpIHsK
KyAgICAgICAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3ItPnNoYWRvd1BhcmVudE5vZGUoKTsKKyAg
ICAgICAgICAgIGlmICghc2hvdWxkU2tpcE5leHRBbmNlc3RvcikKKyAgICAgICAgICAgICAgICB0
YXJnZXQgPSBhbmNlc3RvcjsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBhbmNlc3RvciA9
IGFuY2VzdG9yLT5wYXJlbnROb2RlKCk7CisKKyAgICAgICAgaWYgKCFhbmNlc3RvcikKKyAgICAg
ICAgICAgIHJldHVybjsKKwogI2lmIEVOQUJMRShTVkcpCi0gICAgICAgICAgICAvLyBTa2lwIDx1
c2U+IHNoYWRvdyB0cmVlIGVsZW1lbnRzLgotICAgICAgICAgICAgaWYgKGFuY2VzdG9yLT5pc1NW
R0VsZW1lbnQoKSAmJiBhbmNlc3Rvci0+aXNTaGFkb3dOb2RlKCkpCi0gICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIC8vIFNraXAgU1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50LgorICAg
ICAgICBzaG91bGRTa2lwTmV4dEFuY2VzdG9yID0gYW5jZXN0b3ItPmlzU1ZHRWxlbWVudCgpICYm
IGFuY2VzdG9yLT5pc1NoYWRvd05vZGUoKTsKKyAgICAgICAgaWYgKHNob3VsZFNraXBOZXh0QW5j
ZXN0b3IpCisgICAgICAgICAgICBjb250aW51ZTsKICNlbmRpZgotICAgICAgICAgICAgYW5jZXN0
b3JzLmFwcGVuZChhbmNlc3Rvcik7Ci0gICAgICAgIH0KLSAgICB9CisgICAgICAgIC8vIEZJWE1F
OiBVbnJvbGwgdGhlIGV4dHJhIGxvb3AgaW5zaWRlIGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1NWR1Rh
cmdldFJ1bGVzIGludG8gdGhpcyBsb29wLgorICAgICAgICBhbmNlc3RvcnMuYXBwZW5kKEV2ZW50
Q29udGV4dChhbmNlc3RvciwgZXZlbnRUYXJnZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0UnVsZXMoYW5j
ZXN0b3IpLCB0YXJnZXQpKTsKKworICAgIH07CiB9CiAKIGJvb2wgTm9kZTo6ZGlzcGF0Y2hFdmVu
dChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCkKQEAgLTI1NDcsNiArMjU1NSwxMSBAQCBib29s
IE5vZGU6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiAgICAgcmV0
dXJuIGRpc3BhdGNoR2VuZXJpY0V2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CiB9CiAKK3N0YXRpYyBj
b25zdCBFdmVudENvbnRleHQqIHRvcEV2ZW50Q29udGV4dChjb25zdCBWZWN0b3I8RXZlbnRDb250
ZXh0PiYgYW5jZXN0b3JzKQoreworICAgIHJldHVybiBhbmNlc3RvcnMuaXNFbXB0eSgpID8gMCA6
ICYoYW5jZXN0b3JzLmxhc3QoKSk7Cit9CisKIGJvb2wgTm9kZTo6ZGlzcGF0Y2hHZW5lcmljRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiB7CiAgICAgUmVmUHRyPEV2ZW50PiBldmVu
dChwcnBFdmVudCk7CkBAIC0yNTU5LDIwICsyNTcyLDEzIEBAIGJvb2wgTm9kZTo6ZGlzcGF0Y2hH
ZW5lcmljRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiAgICAgLy8gSWYgdGhlIG5v
ZGUgaXMgbm90IGluIGEgZG9jdW1lbnQganVzdCBzZW5kIHRoZSBldmVudCB0byBpdC4KICAgICAv
LyBCZSBzdXJlIHRvIHJlZiBhbGwgb2Ygbm9kZXMgc2luY2UgZXZlbnQgaGFuZGxlcnMgY291bGQg
cmVzdWx0IGluIHRoZSBsYXN0IHJlZmVyZW5jZSBnb2luZyBhd2F5LgogICAgIFJlZlB0cjxOb2Rl
PiB0aGlzTm9kZSh0aGlzKTsKLSAgICBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4gYW5j
ZXN0b3JzOwotICAgIGV2ZW50QW5jZXN0b3JzKGFuY2VzdG9ycyk7CisgICAgUmVmUHRyPEV2ZW50
VGFyZ2V0PiBvcmlnaW5hbFRhcmdldChldmVudC0+dGFyZ2V0KCkpOworICAgIFZlY3RvcjxFdmVu
dENvbnRleHQ+IGFuY2VzdG9yczsKKyAgICBldmVudEFuY2VzdG9ycyhhbmNlc3RvcnMsIG9yaWdp
bmFsVGFyZ2V0LmdldCgpKTsKIAotICAgIC8vIFNldCB1cCBhIHBvaW50ZXIgdG8gaW5kaWNhdGUg
d2hldGhlciAvIHdoZXJlIHRvIGRpc3BhdGNoIHdpbmRvdyBldmVudHMuCi0gICAgLy8gV2UgZG9u
J3QgZGlzcGF0Y2ggbG9hZCBldmVudHMgdG8gdGhlIHdpbmRvdy4gVGhhdCBxdWlyayB3YXMgb3Jp
Z2luYWxseQotICAgIC8vIGFkZGVkIGJlY2F1c2UgTW96aWxsYSBkb2Vzbid0IHByb3BhZ2F0ZSBs
b2FkIGV2ZW50cyB0byB0aGUgd2luZG93IG9iamVjdC4KLSAgICBET01XaW5kb3cqIHRhcmdldEZv
cldpbmRvd0V2ZW50cyA9IDA7Ci0gICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygp
LmxvYWRFdmVudCkgewotICAgICAgICBOb2RlKiB0b3BMZXZlbENvbnRhaW5lciA9IGFuY2VzdG9y
cy5pc0VtcHR5KCkgPyB0aGlzIDogYW5jZXN0b3JzLmxhc3QoKS5nZXQoKTsKLSAgICAgICAgaWYg
KHRvcExldmVsQ29udGFpbmVyLT5pc0RvY3VtZW50Tm9kZSgpKQotICAgICAgICAgICAgdGFyZ2V0
Rm9yV2luZG93RXZlbnRzID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPih0b3BMZXZlbENvbnRhaW5l
ciktPmRvbVdpbmRvdygpOwotICAgIH0KKyAgICBXaW5kb3dFdmVudENvbnRleHQgd2luZG93Q29u
dGV4dChldmVudC5nZXQoKSwgdGhpcywgdG9wRXZlbnRDb250ZXh0KGFuY2VzdG9ycykpOwogCi0g
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnQoZG9jdW1lbnQoKSwgKmV2ZW50LCB0YXJnZXRG
b3JXaW5kb3dFdmVudHMsIHRoaXMsIGFuY2VzdG9ycyk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3Bh
dGNoRXZlbnQoZG9jdW1lbnQoKSwgKmV2ZW50LCB3aW5kb3dDb250ZXh0LndpbmRvdygpLCB0aGlz
LCBhbmNlc3RvcnMpOwogCiAgICAgLy8gR2l2ZSB0aGUgdGFyZ2V0IG5vZGUgYSBjaGFuY2UgdG8g
ZG8gc29tZSB3b3JrIGJlZm9yZSBET00gZXZlbnQgaGFuZGxlcnMgZ2V0IGEgY3JhY2suCiAgICAg
dm9pZCogZGF0YSA9IHByZURpc3BhdGNoRXZlbnRIYW5kbGVyKGV2ZW50LmdldCgpKTsKQEAgLTI1
ODIsMjIgKzI1ODgsMTcgQEAgYm9vbCBOb2RlOjpkaXNwYXRjaEdlbmVyaWNFdmVudChQYXNzUmVm
UHRyPEV2ZW50PiBwcnBFdmVudCkKICAgICAvLyBUcmlnZ2VyIGNhcHR1cmluZyBldmVudCBoYW5k
bGVycywgc3RhcnRpbmcgYXQgdGhlIHRvcCBhbmQgd29ya2luZyBvdXIgd2F5IGRvd24uCiAgICAg
ZXZlbnQtPnNldEV2ZW50UGhhc2UoRXZlbnQ6OkNBUFRVUklOR19QSEFTRSk7CiAKLSAgICBpZiAo
dGFyZ2V0Rm9yV2luZG93RXZlbnRzKSB7Ci0gICAgICAgIGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0
KHRhcmdldEZvcldpbmRvd0V2ZW50cyk7Ci0gICAgICAgIHRhcmdldEZvcldpbmRvd0V2ZW50cy0+
ZmlyZUV2ZW50TGlzdGVuZXJzKGV2ZW50LmdldCgpKTsKLSAgICAgICAgaWYgKGV2ZW50LT5wcm9w
YWdhdGlvblN0b3BwZWQoKSkKLSAgICAgICAgICAgIGdvdG8gZG9uZURpc3BhdGNoaW5nOwotICAg
IH0KKyAgICBpZiAod2luZG93Q29udGV4dC5oYW5kbGVMb2NhbEV2ZW50cyhldmVudC5nZXQoKSkg
JiYgZXZlbnQtPnByb3BhZ2F0aW9uU3RvcHBlZCgpKQorICAgICAgICBnb3RvIGRvbmVEaXNwYXRj
aGluZzsKKwogICAgIGZvciAoc2l6ZV90IGkgPSBhbmNlc3RvcnMuc2l6ZSgpOyBpOyAtLWkpIHsK
LSAgICAgICAgQ29udGFpbmVyTm9kZSogYW5jZXN0b3IgPSBhbmNlc3RvcnNbaSAtIDFdLmdldCgp
OwotICAgICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldChldmVudFRhcmdldFJlc3BlY3RpbmdT
VkdUYXJnZXRSdWxlcyhhbmNlc3RvcikpOwotICAgICAgICBhbmNlc3Rvci0+aGFuZGxlTG9jYWxF
dmVudHMoZXZlbnQuZ2V0KCkpOworICAgICAgICBhbmNlc3RvcnNbaSAtIDFdLmhhbmRsZUxvY2Fs
RXZlbnRzKGV2ZW50LmdldCgpKTsKICAgICAgICAgaWYgKGV2ZW50LT5wcm9wYWdhdGlvblN0b3Bw
ZWQoKSkKICAgICAgICAgICAgIGdvdG8gZG9uZURpc3BhdGNoaW5nOwogICAgIH0KIAogICAgIGV2
ZW50LT5zZXRFdmVudFBoYXNlKEV2ZW50OjpBVF9UQVJHRVQpOwotCisgICAgZXZlbnQtPnNldFRh
cmdldChvcmlnaW5hbFRhcmdldC5nZXQoKSk7CiAgICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQo
ZXZlbnRUYXJnZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0UnVsZXModGhpcykpOwogICAgIGhhbmRsZUxv
Y2FsRXZlbnRzKGV2ZW50LmdldCgpKTsKICAgICBpZiAoZXZlbnQtPnByb3BhZ2F0aW9uU3RvcHBl
ZCgpKQpAQCAtMjYwOSwyMSArMjYxMCwxNiBAQCBib29sIE5vZGU6OmRpc3BhdGNoR2VuZXJpY0V2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50KQogCiAgICAgICAgIHNpemVfdCBzaXplID0g
YW5jZXN0b3JzLnNpemUoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKLSAgICAgICAgICAgIENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0gYW5jZXN0b3JzW2ld
LmdldCgpOwotICAgICAgICAgICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQoZXZlbnRUYXJnZXRS
ZXNwZWN0aW5nU1ZHVGFyZ2V0UnVsZXMoYW5jZXN0b3IpKTsKLSAgICAgICAgICAgIGFuY2VzdG9y
LT5oYW5kbGVMb2NhbEV2ZW50cyhldmVudC5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoZXZlbnQt
PnByb3BhZ2F0aW9uU3RvcHBlZCgpIHx8IGV2ZW50LT5jYW5jZWxCdWJibGUoKSkKLSAgICAgICAg
ICAgICAgICBnb3RvIGRvbmVEaXNwYXRjaGluZzsKLSAgICAgICAgfQotICAgICAgICBpZiAodGFy
Z2V0Rm9yV2luZG93RXZlbnRzKSB7Ci0gICAgICAgICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdl
dCh0YXJnZXRGb3JXaW5kb3dFdmVudHMpOwotICAgICAgICAgICAgdGFyZ2V0Rm9yV2luZG93RXZl
bnRzLT5maXJlRXZlbnRMaXN0ZW5lcnMoZXZlbnQuZ2V0KCkpOworICAgICAgICAgICAgYW5jZXN0
b3JzW2ldLmhhbmRsZUxvY2FsRXZlbnRzKGV2ZW50LmdldCgpKTsKICAgICAgICAgICAgIGlmIChl
dmVudC0+cHJvcGFnYXRpb25TdG9wcGVkKCkgfHwgZXZlbnQtPmNhbmNlbEJ1YmJsZSgpKQogICAg
ICAgICAgICAgICAgIGdvdG8gZG9uZURpc3BhdGNoaW5nOwogICAgICAgICB9CisgICAgICAgIGlm
ICh3aW5kb3dDb250ZXh0LmhhbmRsZUxvY2FsRXZlbnRzKGV2ZW50LmdldCgpKSAmJiAoZXZlbnQt
PnByb3BhZ2F0aW9uU3RvcHBlZCgpIHx8IGV2ZW50LT5jYW5jZWxCdWJibGUoKSkpCisgICAgICAg
ICAgICBnb3RvIGRvbmVEaXNwYXRjaGluZzsKICAgICB9CiAKIGRvbmVEaXNwYXRjaGluZzoKKyAg
ICBldmVudC0+c2V0VGFyZ2V0KG9yaWdpbmFsVGFyZ2V0LmdldCgpKTsKICAgICBldmVudC0+c2V0
Q3VycmVudFRhcmdldCgwKTsKICAgICBldmVudC0+c2V0RXZlbnRQaGFzZSgwKTsKIApAQCAtMjY0
NCw4ICsyNjQwLDcgQEAgZG9uZURpc3BhdGNoaW5nOgogICAgICAgICBpZiAoZXZlbnQtPmJ1YmJs
ZXMoKSkgewogICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBhbmNlc3RvcnMuc2l6ZSgpOwogICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAg
ICAgICBDb250YWluZXJOb2RlKiBhbmNlc3RvciA9IGFuY2VzdG9yc1tpXS5nZXQoKTsKLSAgICAg
ICAgICAgICAgICBhbmNlc3Rvci0+ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudC5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAgYW5jZXN0b3JzW2ldLm5vZGUoKS0+ZGVmYXVsdEV2ZW50SGFuZGxlcihl
dmVudC5nZXQoKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFldmVudC0+ZGVmYXVsdFByZXZl
bnRlZCgpKTsKICAgICAgICAgICAgICAgICBpZiAoZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCiAg
ICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZVdpdGhEZWZhdWx0OwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9kb20vTm9kZS5oIGIvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDNjNmMxOTk3MTFiMzRl
MWEwMGE5ZGE4MDExYWY1YTVhZTRkYzY0ZDUuLmQ0ZjhlNGJmNmRhMmQ4OTZjOTgxOTJiZjNkNWU3
ZmM3YmE5M2MyZmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9XZWJDb3Jl
L2RvbS9Ob2RlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEeW5h
bWljTm9kZUxpc3Q7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRXZlbnQ7CitjbGFzcyBFdmVudENv
bnRleHQ7CiBjbGFzcyBFdmVudExpc3RlbmVyOwogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZy
YW1lOwpAQCAtMjA0LDE2ICsyMDUsMTUgQEAgcHVibGljOgogICAgIE5vZGUqIHNoYWRvd0FuY2Vz
dG9yTm9kZSgpOwogICAgIE5vZGUqIHNoYWRvd1RyZWVSb290Tm9kZSgpOwogICAgIGJvb2wgaXNJ
blNoYWRvd1RyZWUoKTsKLQotICAgIC8vIFRoZSBub2RlJ3MgcGFyZW50IGZvciB0aGUgcHVycG9z
ZSBvZiBldmVudCBjYXB0dXJlIGFuZCBidWJibGluZy4KLSAgICB2aXJ0dWFsIENvbnRhaW5lck5v
ZGUqIGV2ZW50UGFyZW50Tm9kZSgpOworICAgIC8vIE5vZGUncyBwYXJlbnQgb3Igc2hhZG93IHRy
ZWUgaG9zdC4KKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnRPckhvc3ROb2RlKCk7CiAKICAgICAv
LyBSZXR1cm5zIHRoZSBlbmNsb3NpbmcgZXZlbnQgcGFyZW50IG5vZGUgKG9yIHNlbGYpIHRoYXQs
IHdoZW4gY2xpY2tlZCwgd291bGQgdHJpZ2dlciBhIG5hdmlnYXRpb24uCiAgICAgTm9kZSogZW5j
bG9zaW5nTGlua0V2ZW50UGFyZW50T3JTZWxmKCk7CiAKICAgICAvLyBOb2RlIGFuY2VzdG9ycyB3
aGVuIGNvbmNlcm5lZCBhYm91dCBldmVudCBmbG93LgogICAgIC8vIEZJWE1FOiBTaG91bGQgYmUg
bmFtZWQgZ2V0RXZlbnRBbmNlc3RvcnMuCi0gICAgdm9pZCBldmVudEFuY2VzdG9ycyhWZWN0b3I8
UmVmUHRyPENvbnRhaW5lck5vZGU+ID4gJmFuY2VzdG9ycyk7CisgICAgdm9pZCBldmVudEFuY2Vz
dG9ycyhWZWN0b3I8RXZlbnRDb250ZXh0PiAmYW5jZXN0b3JzLCBFdmVudFRhcmdldCopOwogCiAg
ICAgYm9vbCBpc0Jsb2NrRmxvdygpIGNvbnN0OwogICAgIGJvb2wgaXNCbG9ja0Zsb3dPckJsb2Nr
VGFibGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1RleHQuY3BwIGIvV2ViQ29y
ZS9kb20vVGV4dC5jcHAKaW5kZXggNjI3MWYxMTA2NTljNmI4MGJiNGMyM2FmMGFhN2M2ZTI4NTJl
ODViNy4uZjlhNGYwNGJjMzY3NWVlZGY2ZGUxZWM0YjA5ZTMzYjI0ZDhiYjg3NyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vVGV4dC5jcHAKKysrIGIvV2ViQ29yZS9kb20vVGV4dC5jcHAKQEAgLTIz
OSwxMCArMjM5LDExIEBAIGJvb2wgVGV4dDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSAq
c3R5bGUpCiAKIFJlbmRlck9iamVjdCogVGV4dDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
IGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CisgICAgTm9kZSogcGFyZW50T3JIb3N0ID0gcGFyZW50
T3JIb3N0Tm9kZSgpOwogI2lmIEVOQUJMRShTVkcpCi0gICAgaWYgKHBhcmVudE5vZGUoKS0+aXNT
VkdFbGVtZW50KCkKKyAgICBpZiAocGFyZW50T3JIb3N0LT5pc1NWR0VsZW1lbnQoKQogI2lmIEVO
QUJMRShTVkdfRk9SRUlHTl9PQkpFQ1QpCi0gICAgICAgICYmICFwYXJlbnROb2RlKCktPmhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RUYWcpCisgICAgICAgICYmICFwYXJlbnRPckhv
c3QtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RUYWcpCiAjZW5kaWYKICAgICAp
CiAgICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdJbmxpbmVUZXh0KHRoaXMsIGRh
dGFJbXBsKCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGNm
YjU1ZmM2ZTBkNzQ3MTc3NDUwYTkxOTU5MjgyMDA3ODU1ZGMzOGQuLjdhM2QxYjAwYTJmOTk2M2Uz
MTllNjE2ODFiMjBkNjcwZGE5M2ExZGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkRvY3VtZW50VHlwZS5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRD
b250ZXh0LmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgpAQCAtNjA3LDEzICs2MDgsMTMgQEAgdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKGxvbmcgbm9kZUlk
LCBsb25nKiBvdXROb2RlSWQsIFIKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIE5vZGUn
cyBFdmVudCBBbmNlc3RvcnMgKG5vdCBpbmNsdWRpbmcgc2VsZikKLSAgICBWZWN0b3I8UmVmUHRy
PENvbnRhaW5lck5vZGU+ID4gYW5jZXN0b3JzOwotICAgIG5vZGUtPmV2ZW50QW5jZXN0b3JzKGFu
Y2VzdG9ycyk7CisgICAgVmVjdG9yPEV2ZW50Q29udGV4dD4gYW5jZXN0b3JzOworICAgIG5vZGUt
PmV2ZW50QW5jZXN0b3JzKGFuY2VzdG9ycywgbm9kZSk7CiAKICAgICAvLyBOb2RlcyBhbmQgdGhl
aXIgTGlzdGVuZXJzIGZvciB0aGUgY29uY2VybmVkIGV2ZW50IHR5cGVzIChvcmRlciBpcyB0b3Ag
dG8gYm90dG9tKQogICAgIFZlY3RvcjxFdmVudExpc3RlbmVySW5mbz4gZXZlbnRJbmZvcm1hdGlv
bjsKICAgICBmb3IgKHNpemVfdCBpID0gYW5jZXN0b3JzLnNpemUoKTsgaTsgLS1pKSB7Ci0gICAg
ICAgIENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0gYW5jZXN0b3JzW2kgLSAxXS5nZXQoKTsKKyAg
ICAgICAgTm9kZSogYW5jZXN0b3IgPSBhbmNlc3RvcnNbaSAtIDFdLm5vZGUoKTsKICAgICAgICAg
Zm9yIChzaXplX3QgaiA9IDA7IGogPCBldmVudFR5cGVzTGVuZ3RoOyArK2opIHsKICAgICAgICAg
ICAgIEF0b21pY1N0cmluZyYgdHlwZSA9IGV2ZW50VHlwZXNbal07CiAgICAgICAgICAgICBpZiAo
YW5jZXN0b3ItPmhhc0V2ZW50TGlzdGVuZXJzKHR5cGUpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggOTQyMDJjMTE2NWVmMTFjMzhlODhm
NjBkN2JlZGExM2ZjM2Q0YmQ5Yy4uY2Y0MTUyNzk4NTk5ZmE3Mzg4ZTViYTFjNTFjNGRiZjJhYzZl
MTAxNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwCkBAIC0zNSw2ICszNSw3IEBACiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRl
ICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50Q29udGV4dC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKQEAgLTUzLDcgKzU0LDcgQEAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IHRpbWVyRmlyZWRFdmVudE5hbWUgPSAidGltZXJGaXJlZCI7CiAKIGludCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNfZnJvbnRlbmRDb3VudGVyID0gMDsKIAotc3RhdGlj
IGJvb2wgZXZlbnRIYXNMaXN0ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERP
TVdpbmRvdyogd2luZG93LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRhaW5l
ck5vZGU+ID4mIGFuY2VzdG9ycykKK3N0YXRpYyBib29sIGV2ZW50SGFzTGlzdGVuZXJzKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9kZSwg
Y29uc3QgVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFuY2VzdG9ycykKIHsKICAgICBpZiAod2luZG93
ICYmIHdpbmRvdy0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnRUeXBlKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC02Miw3ICs2Myw3IEBAIHN0YXRpYyBib29sIGV2ZW50SGFzTGlzdGVuZXJzKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqIHdpbmRvdywKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFuY2VzdG9ycy5zaXpl
KCk7IGkrKykgewotICAgICAgICBDb250YWluZXJOb2RlKiBhbmNlc3RvciA9IGFuY2VzdG9yc1tp
XS5nZXQoKTsKKyAgICAgICAgTm9kZSogYW5jZXN0b3IgPSBhbmNlc3RvcnNbaV0ubm9kZSgpOwog
ICAgICAgICBpZiAoYW5jZXN0b3ItPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50VHlwZSkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xMzksNyArMTQwLDYgQEAgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3RlckRhdGFNb2RpZmllZEltcGwoSW5zcGVjdG9y
Q29udHJvbGxlciogaW4KICAgICAgICAgZG9tQWdlbnQtPmNoYXJhY3RlckRhdGFNb2RpZmllZChj
aGFyYWN0ZXJEYXRhKTsKIH0KIAotCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFNlbmRYTUxIdHRwUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlciwgY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZENoYW5nZVhIUlJlYWR5U3RhdGVJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW0KICAgICAg
ICAgdGltZWxpbmVBZ2VudC0+ZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZSgpOwogfQogCi1JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlz
cGF0Y2hFdmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwg
Y29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+JiBhbmNlc3RvcnMpCitJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hF
dmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgY29uc3Qg
RXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9y
PEV2ZW50Q29udGV4dD4mIGFuY2VzdG9ycykKIHsKICAgICBwYXVzZU9uTmF0aXZlRXZlbnRJZk5l
ZWRlZChpbnNwZWN0b3JDb250cm9sbGVyLCBsaXN0ZW5lckV2ZW50Q2F0ZWdvcnlUeXBlLCBldmVu
dC50eXBlKCksIGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaAppbmRleCAxYjYyZWNiNzZjNzgyOTc0OGY0MjE2N2ZiODIzYjNjZDhkNjVjMmI0
Li43ZjI0MWM0MTE4NGE0MWZiNjdlMDAyMjlmOTBjMTBkN2NmYmE1NjNlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtNDAsNiArNDAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENoYXJhY3RlckRhdGE7CiBjbGFzcyBFbGVtZW50
OworY2xhc3MgRXZlbnRDb250ZXh0OwogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKIGNsYXNz
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ7CiBjbGFzcyBLVVJMOwpAQCAtNzMsNyArNzQsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlkQ2FsbEZ1bmN0aW9uKGNvbnN0IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgd2lsbENoYW5nZVhIUlJlYWR5U3RhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFhNTEh0dHBSZXF1ZXN0KiByZXF1ZXN0KTsKICAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VYSFJS
ZWFkeVN0YXRlKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwotICAgIHN0
YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNoRXZlbnQoRG9j
dW1lbnQqLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2Rl
LCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4mIGFuY2VzdG9ycyk7CisgICAg
c3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hFdmVudChE
b2N1bWVudCosIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3csIE5vZGUqIG5v
ZGUsIGNvbnN0IFZlY3RvcjxFdmVudENvbnRleHQ+JiBhbmNlc3RvcnMpOwogICAgIHN0YXRpYyB2
b2lkIGRpZERpc3BhdGNoRXZlbnQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
Jik7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0
Y2hFdmVudE9uV2luZG93KEZyYW1lKiwgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdp
bmRvdyk7CiAgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93KGNvbnN0IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwpAQCAtMTMwLDcgKzEzMSw3IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIHZvaWQgZGlkQ2FsbEZ1bmN0aW9uSW1wbChjb25zdCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIHdpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlSW1wbChJbnNwZWN0b3JDb250cm9sbGVy
KiwgWE1MSHR0cFJlcXVlc3QqIHJlcXVlc3QpOwogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZVhI
UlJlYWR5U3RhdGVJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwot
ICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNoRXZl
bnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRv
dyogd2luZG93LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+
ID4mIGFuY2VzdG9ycyk7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSB3aWxsRGlzcGF0Y2hFdmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGNvbnN0IEV2ZW50
JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxFdmVu
dENvbnRleHQ+JiBhbmNlc3RvcnMpOwogICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnRJ
bXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNoRXZlbnRPbldpbmRvd0lt
cGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3
aW5kb3cpOwogICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnRPbldpbmRvd0ltcGwoY29u
c3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CkBAIC0yMjUsNyArMjI2LDYgQEAg
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRhTW9kaWZp
ZWQoRG9jdW1lbnQqIGRvY3VtZW50LAogI2VuZGlmCiB9CiAKLQogaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsKQogewogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCkBAIC0yOTMsNyArMjkzLDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRDaGFuZ2VYSFJSZWFkeVN0YXRlKGNvbnN0IEluc3BlY3Rvckluc3QKICNlbmRp
ZgogfQogCi1pbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25z
dCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0
b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4mIGFuY2VzdG9ycykKK2lubGluZSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0
Y2hFdmVudChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93
KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxFdmVudENvbnRleHQ+JiBhbmNlc3Rv
cnMpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChk
b2N1bWVudCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDI5NzAyNTkxZWViZmQzMTljYTRmOWVh
MjA4OGE1M2YxNzA1ODIwYzguLjcxY2E5YzgxZDM1Y2Q2ZWM2MDE0ODAwMDMxMzY3OWUxOTBkNmI5
ZWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xNzY2LDggKzE3NjYsNiBAQCB2b2lkIEV2ZW50
SGFuZGxlcjo6dXBkYXRlTW91c2VFdmVudFRhcmdldE5vZGUoTm9kZSogdGFyZ2V0Tm9kZSwgY29u
c3QgUGxhdGZvcm1NbwogICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IG5vZGUgaXMgYSB0ZXh0IG5v
ZGUsIGRpc3BhdGNoIG9uIHRoZSBwYXJlbnQgbm9kZSAtIHJkYXI6Ly80MTk2NjQ2CiAgICAgICAg
IGlmIChyZXN1bHQgJiYgcmVzdWx0LT5pc1RleHROb2RlKCkpCiAgICAgICAgICAgICByZXN1bHQg
PSByZXN1bHQtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAg
IHJlc3VsdCA9IHJlc3VsdC0+c2hhZG93QW5jZXN0b3JOb2RlKCk7CiAgICAgfQogICAgIG1fbm9k
ZVVuZGVyTW91c2UgPSByZXN1bHQ7CiAjaWYgRU5BQkxFKFNWRykKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXgg
NmMyYzRhMjc4M2VhOWUzOGFhZmY5N2RiOWRiNTU2MGZiY2Y0YjA0YS4uM2U5YmRhMDdkZWNiM2M0
YjkyMTYxYzYwYWQ0MzZkNzcyNDEwYjZkOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5jcHAKKysrIGIvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTM0NywxMyArMzQ3
LDYgQEAgdm9pZCBTVkdFbGVtZW50Ojp1cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogICAgIGNsZWFySXNTeW5jaHJvbml6aW5nU1ZHQXR0
cmlidXRlcygpOwogfQogCi1Db250YWluZXJOb2RlKiBTVkdFbGVtZW50OjpldmVudFBhcmVudE5v
ZGUoKQotewotICAgIGlmIChDb250YWluZXJOb2RlKiBzaGFkb3dQYXJlbnQgPSBzaGFkb3dQYXJl
bnROb2RlKCkpCi0gICAgICAgIHJldHVybiBzaGFkb3dQYXJlbnQ7Ci0gICAgcmV0dXJuIFN0eWxl
ZEVsZW1lbnQ6OmV2ZW50UGFyZW50Tm9kZSgpOwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUo
U1ZHKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5oCmluZGV4IDUxNzUxNWY5Mzk4NTMwNDlkYTE2NzA3NGQzZWUzZTQ5OGJjMzBh
NjguLjk2ZTdmZDdhZDRkMDllZDg2YjM5M2E1MThkOTk3NjM0OTgyN2ZkOTkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgK
QEAgLTk5LDggKzk5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc1N1cHBvcnRlZChTdHJpbmdJbXBsKiBmZWF0dXJlLCBTdHJpbmdJbXBsKiB2ZXJzaW9u
KSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIENvbnRhaW5lck5vZGUqIGV2ZW50UGFyZW50Tm9k
ZSgpOwotCiAgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVkc1BlbmRpbmdSZXNvdXJjZUhhbmRsaW5n
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgYnVpbGRQZW5k
aW5nUmVzb3VyY2UoKSB7IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72360</attachid>
            <date>2010-10-29 11:59:42 -0700</date>
            <delta_ts>2010-11-05 15:54:09 -0700</delta_ts>
            <desc>Patch for landing for realz.</desc>
            <filename>bug-46015-20101029115939.patch</filename>
            <type>text/plain</type>
            <size>46483</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlM2U1ODU0ZGE1ZDJhY2IzNjE3ZGNhN2ZjZmY5MGMzNjIyMjFkYWUyLi44Mzk3ZGQx
YjA3OGZhYTllNDk5NDE5ZDUyMWMxNjIyN2NkZmFjMjBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMTAtMDEgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
c2hhZG93IERPTS1hd2FyZSBldmVudCB0YXJnZXRpbmcgYW5kIGludHJvZHVjZSBFdmVudENvbnRl
eHQgdG8gdHJhY2sgdGhlIGNvbnRleHQgb2YgZWFjaCBldmVudCBkaXNwYXRjaC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MDE1CisKKyAgICAgICAg
VHVuZWQgdGhlIHRlc3QgdG8gYmV0dGVyIHJlZmxlY3QgaXRzIHBvaW50OiB0aGUgZXZlbiBzaG91
bGQgaW5kZWVkIGZpcmUgKGl0IHVzZWQgdG8gYmUgc3dhbGxvd2VkKSwKKyAgICAgICAgYnV0IGl0
J3MgdGFyZ2V0IHNob3VsZCBiZSBhIG5vbi1zaGFkb3cgbm9kZS4KKworICAgICAgICAqIGZhc3Qv
ZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9zc2luZy5odG1sOiBNb2RpZmllZCB0aGUgdGVzdC4K
KwogMjAxMC0xMC0yOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvc2hhZG93LWJvdW5kYXJ5LWNyb3NzaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRtbAppbmRleCA2MjNlMDY3M2Vj
MWNmMzYyNTZmNWVjMTM2N2Q3Y2EzOWJhYmI0MTUzLi4wZTg3ZmQ3NDU1N2M1NWZhZWIxMTM1NDM3
YjY1MWU1Y2U1YzBjNDIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zaGFk
b3ctYm91bmRhcnktY3Jvc3NpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9z
aGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRtbApAQCAtMiwxMSArMiwxMSBAQAogPGhlYWQ+CiAg
ICAgPHRpdGxlPjwvdGl0bGU+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgot
ICAgICAgICB2YXIgZmlyZWQgPSBmYWxzZTsKKyAgICAgICAgdmFyIHN1Y2Nlc3M7CiAKICAgICAg
ICAgZnVuY3Rpb24gc2VsZWN0U3RhcnQoZXZlbnQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGZp
cmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBldmVudC50YXJnZXQucGFyZW50Tm9k
ZTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQpAQCAtMjMsNyArMjMsNyBA
QAogICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CiAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVVwKCk7CiAKLSAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQiKS5pbm5lclRleHQgPSBmaXJlZCA/ICJGQUlMIiA6ICJQQVNTIjsKKyAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lclRleHQgPSAhc3VjY2Vz
cyA/ICJGQUlMIiA6ICJQQVNTIjsKICAgICAgICAgfQogCiAgICAgICAgIGFkZEV2ZW50TGlzdGVu
ZXIoInNlbGVjdHN0YXJ0Iiwgc2VsZWN0U3RhcnQsIHRydWUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9BbmRyb2lkLm1rIGIvV2ViQ29yZS9BbmRyb2lkLm1rCmluZGV4IGVhMGMyOWVlM2QxMmQ2Mzdk
YzhkMGI4ZGIwY2IyYmM1NzRkNzlmZjEuLjcyMTQ3ZjI5OWU3MzMxYThkY2RiMzZiMzM3NWQ1MzJm
NGNiNDc0NzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQW5kcm9pZC5taworKysgYi9XZWJDb3JlL0Fu
ZHJvaWQubWsKQEAgLTE5Miw2ICsxOTIsNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NBTF9T
UkNfRklMRVMpIFwKIAlkb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwIFwKIAlkb20vV2ViS2l0
VHJhbnNpdGlvbkV2ZW50LmNwcCBcCiAJZG9tL1doZWVsRXZlbnQuY3BwIFwKKwlkb20vV2luZG93
RXZlbnRDb250ZXh0LmNwcCBcCiAJZG9tL1hNTERvY3VtZW50UGFyc2VyLmNwcCBcCiAJZG9tL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgXAogCWRvbS9YTUxEb2N1bWVudFBhcnNlclNjb3Bl
LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCAzMGZkOTlkNGEwNmZjM2VjZWE4NzQ1OWU3MTk2YzFlMmU4MDA2ZTk4
Li5hMjEwODllOGFjODVkN2ZhNmRjYTgyNDViZWNjNjkxODQ3OGY0N2UyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTgy
NCw2ICs4MjQsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL0VudGl0eVJlZmVyZW5j
ZS5jcHAKICAgICBkb20vRXJyb3JFdmVudC5jcHAKICAgICBkb20vRXZlbnQuY3BwCisgICAgZG9t
L0V2ZW50Q29udGV4dC5jcHAKICAgICBkb20vRXZlbnROYW1lcy5jcHAKICAgICBkb20vRXZlbnRU
YXJnZXQuY3BwCiAgICAgZG9tL0V4Y2VwdGlvbkJhc2UuY3BwCkBAIC04ODEsNiArODgyLDcgQEAg
U0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9XZWJLaXRBbmltYXRpb25FdmVudC5jcHAKICAg
ICBkb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcAogICAgIGRvbS9XaGVlbEV2ZW50LmNwcAor
ICAgIGRvbS9XaW5kb3dFdmVudENvbnRleHQuY3BwCiAgICAgZG9tL1hNTERvY3VtZW50UGFyc2Vy
LmNwcAogICAgIGRvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCiAgICAgZG9tL1hNTERv
Y3VtZW50UGFyc2VyU2NvcGUuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGMxNjExOThmZGFjNmQzYjhhYjQ3NDE0YzgxZGIwMGExZDIz
M2YyNWYuLmY5MmM4ZjdmMjE1NzNlM2RkYjU2ODljN2E4OWEwYzIzZWE0M2ZmN2QgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDkgQEAKKzIwMTAtMTAtMDEgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBs
ZW1lbnQgc2hhZG93IERPTS1hd2FyZSBldmVudCB0YXJnZXRpbmcgYW5kIGludHJvZHVjZSBFdmVu
dENvbnRleHQgdG8gdHJhY2sgdGhlIGNvbnRleHQgb2YgZWFjaCBldmVudCBkaXNwYXRjaC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MDE1CisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBub3Rpb24gb2YgRXZlbnRDb250ZXh0IChhbmQgYSB2
ZXJ5IHNpbWlsYXItYWN0aW5nIFdpbmRvd0V2ZW50Q29udGV4dCwgc3BlY2lmaWNhbGx5CisgICAg
ICAgIGZvciBET01XaW5kb3cpLCBhbiBhYnN0cmFjdGlvbiB0aGF0IGNhcnJpZXMgaW5mb3JtYXRp
b24gYXJvdW5kIGRpc3BhdGNoaW5nIGFuIGV2ZW50IGZvciBhbnkgZ2l2ZW4gTm9kZS4KKworICAg
ICAgICBUaGlzIGFic3RyYWN0aW9uIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhhdCBldmVudHMs
IGZpcmVkIGZyb20gc2hhZG93IERPTSBub2RlcyBhcmUgcHJvcGVybHkgcmV0YXJnZXRlZCB0bwor
ICAgICAgICBhcHBlYXIgYXMgaWYgdGhleSBhcmUgY29taW5nIGZyb20gdGhlaXIgaG9zdCwgdGh1
cyBuZXZlciBleHBvc2luZyB0aGUgc2hhZG93IERPTSBub2RlcyB0byB0aGUgd29ybGQgb3V0c2lk
ZS4KKworICAgICAgICAqIEFuZHJvaWQubWs6IEFkZGVkIEV2ZW50Q29udGV4dCwgV2luZG93RXZl
bnRDb250ZXh0IGZpbGVzLgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBEaXR0by4KKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0
by4KKyAgICAgICAgKiBXZWJDb3JlLnBybzogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub3RpZnlDaGlsZEluc2VydGVkKTogQ2hhbmdlZCB0
byBiZSBzaGFkb3cgRE9NLWF3YXJlLgorICAgICAgICAqIGRvbS9FdmVudENvbnRleHQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBkb20vRXZlbnRDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAqIGRv
bS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Om1hcmtBbmNlc3RvcnNXaXRoQ2hp
bGROZWVkc1N0eWxlUmVjYWxjKTogQ2hhbmdlZCB0byBiZSBzaGFkb3cgRE9NLWF3YXJlLgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6cGFyZW50T3JIb3N0Tm9kZSk6IEFkZGVkIG5ldyBoZWxwZXIg
bWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZW5jbG9zaW5nTGlua0V2ZW50UGFyZW50
T3JTZWxmKTogQ2hhbmdlZCB0byBiZSBzaGFkb3cgRE9NLWF3YXJlLgorICAgICAgICAoV2ViQ29y
ZTo6ZXZlbnRUYXJnZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0UnVsZXMpOiBDb2xsYXBzZWQgdHdvIGhl
bHBlciBtZXRob2RzIGludG8gb25lLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZXZlbnRBbmNl
c3RvcnMpOiBSZWZhY3RvcmVkIHRvIGNvbGxlY3QgYSB2ZWN0b3Igb2YgRXZlbnRDb250ZXh0cy4K
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnRvcEV2ZW50Q29udGV4dCk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6ZXZlbnRIYXNMaXN0ZW5lcnMpOiBDaGFuZ2VkIHRvIHVzZSBFdmVudENvbnRl
eHRzLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hHZW5lcmljRXZlbnQpOiBEaXR0
by4KKyAgICAgICAgKiBkb20vTm9kZS5oOiBSZW1vdmVkIGV2ZW50UGFyZW50Tm9kZSB0aGF0J3Mg
bm8gbG9uZ2VyIG5lZWRlZCwgYWRkZWQgcGFyZW50T3JIb3N0Tm9kZSBkZWNsLAorICAgICAgICAg
ICAgYW5kIGNoYW5nZWQgc2lnbmF0dXJlIG9mIGV2ZW50QW5jZXN0b3JzIHRvIHVzZSBFdmVudENv
bnRleHRzLgorICAgICAgICAqIGRvbS9UZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHQ6
OmNyZWF0ZVJlbmRlcmVyKTogQ2hhbmdlZCB0byBiZSBzaGFkb3cgRE9NLWF3YXJlLgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKTogQ2hhbmdlZCB0byB1
c2UgRXZlbnRDb250ZXh0cy4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZU1vdXNlRXZlbnRUYXJnZXROb2RlKTog
UmVtb3ZlZCBjb2RlIHRoYXQncyBubyBsb25nZXIgbmVjZXNzYXJ5LgorICAgICAgICAqIHN2Zy9T
VkdFbGVtZW50LmNwcDogUmVtb3ZlZCBldmVudFBhcmVudE5vZGUgdGhhdCdzIG5vIGxvbmdlciBu
ZWVkZWQuCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDogRGl0dG8uCisgICAgICAgICogZG9t
L1dpbmRvd0V2ZW50Q29udGV4dC5jcHA6IEFkZGVkLgorICAgICAgICAqIGRvbS9XaW5kb3dFdmVu
dENvbnRleHQuaDogQWRkZWQuCisKIDIwMTAtMTAtMjkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxh
cEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSB3b3JsZCAoZCdvaCEpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA2
YzFiYzM1ZTk2NTQ0M2M1ZmQ4ZWJmZmVjMTcwNDRiYTZhYTU4M2E4Li5iMjYyN2M4ZTA5OWUzOWY0
MDViM2VjNWZiY2ZlZjhlMDU2MmViNDg0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTExMzIsOCArMTEzMiwxMCBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvZG9tL0Vycm9yRXZlbnQuY3BwIFwKIAlXZWJD
b3JlL2RvbS9FcnJvckV2ZW50LmggXAogCVdlYkNvcmUvZG9tL0V2ZW50LmNwcCBcCi0JV2ViQ29y
ZS9kb20vRXZlbnRFeGNlcHRpb24uaCBcCiAJV2ViQ29yZS9kb20vRXZlbnQuaCBcCisJV2ViQ29y
ZS9kb20vRXZlbnRDb250ZXh0LmNwcCBcCisJV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmggXAor
CVdlYkNvcmUvZG9tL0V2ZW50RXhjZXB0aW9uLmggXAogCVdlYkNvcmUvZG9tL0V2ZW50TGlzdGVu
ZXIuaCBcCiAJV2ViQ29yZS9kb20vRXZlbnROYW1lcy5jcHAgXAogCVdlYkNvcmUvZG9tL0V2ZW50
TmFtZXMuaCBcCkBAIC0xMjYxLDYgKzEyNjMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdl
YkNvcmUvZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5oIFwKIAlXZWJDb3JlL2RvbS9XaGVlbEV2
ZW50LmNwcCBcCiAJV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oIFwKKwlXZWJDb3JlL2RvbS9XaW5k
b3dFdmVudENvbnRleHQuY3BwIFwKKwlXZWJDb3JlL2RvbS9XaW5kb3dFdmVudENvbnRleHQuaCBc
CiAJV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwIFwKIAlXZWJDb3JlL2RvbS9YTUxE
b2N1bWVudFBhcnNlci5oIFwKIAlXZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggOTM0ZGIxNzc2MjZkYWZlOGZiZTE1ODE0ZjgxODI4MDgzOWUxYjljMi4uY2I3
ZGM0NjY5OGIwOGUzZWQyYjc0OWM0NzA0YTc0MDIwOTQ0YmRjMSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEyMDQsNiArMTIw
NCw4IEBACiAgICAgICAgICAgICAnZG9tL0Vycm9yRXZlbnQuaCcsCiAgICAgICAgICAgICAnZG9t
L0V2ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL0V2ZW50LmgnLAorICAgICAgICAgICAgJ2Rv
bS9FdmVudENvbnRleHQuY3BwJywKKyAgICAgICAgICAgICdkb20vRXZlbnRDb250ZXh0LmgnLAog
ICAgICAgICAgICAgJ2RvbS9FdmVudEV4Y2VwdGlvbi5oJywKICAgICAgICAgICAgICdkb20vRXZl
bnRMaXN0ZW5lci5oJywKICAgICAgICAgICAgICdkb20vRXZlbnROYW1lcy5jcHAnLApAQCAtMTMz
OSw2ICsxMzQxLDggQEAKICAgICAgICAgICAgICdkb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lmgn
LAogICAgICAgICAgICAgJ2RvbS9XaGVlbEV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1do
ZWVsRXZlbnQuaCcsCisgICAgICAgICAgICAnZG9tL1dpbmRvd0V2ZW50Q29udGV4dC5jcHAnLAor
ICAgICAgICAgICAgJ2RvbS9XaW5kb3dFdmVudENvbnRleHQuaCcsCiAgICAgICAgICAgICAnZG9t
L1hNTERvY3VtZW50UGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAnZG9tL1hNTERvY3VtZW50UGFy
c2VyLmgnLAogICAgICAgICAgICAgJ2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwJywK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmlu
ZGV4IDEzMmQzNmRkOTk1NTIxMDUzNTM3MTQxOThlZWMyZjc4MDUxYTMwODQuLmYxZDhjNmNhMThj
ZDliMDA2MGQ5M2JkOGZkMTdkNDA4ZDc0NTFmZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNzEzLDYgKzcxMyw3IEBAIFNPVVJD
RVMgKz0gXAogICAgIGRvbS9FbnRpdHlSZWZlcmVuY2UuY3BwIFwKICAgICBkb20vRXJyb3JFdmVu
dC5jcHAgXAogICAgIGRvbS9FdmVudC5jcHAgXAorICAgIGRvbS9FdmVudENvbnRleHQuY3BwIFwK
ICAgICBkb20vRXZlbnROYW1lcy5jcHAgXAogICAgIGRvbS9FdmVudFRhcmdldC5jcHAgXAogICAg
IGRvbS9FeGNlcHRpb25CYXNlLmNwcCBcCkBAIC03NzMsNiArNzc0LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCBcCiAgICAgZG9tL1dlYktpdFRyYW5z
aXRpb25FdmVudC5jcHAgXAogICAgIGRvbS9XaGVlbEV2ZW50LmNwcCBcCisgICAgZG9tL1dpbmRv
d0V2ZW50Q29udGV4dC5jcHAgXAogICAgIGRvbS9YTUxEb2N1bWVudFBhcnNlci5jcHAgXAogICAg
IGRvbS9YTUxEb2N1bWVudFBhcnNlclF0LmNwcCBcCiAgICAgZG9tL2RlZmF1bHQvUGxhdGZvcm1N
ZXNzYWdlUG9ydENoYW5uZWwuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNmJjMmUzNjJlNDMxYWJkOTQ1ZDc4NDFiMDEwZGRhYTVjMmIzNTI0YS4u
ZGJkOGNiNDJhNDBmZjU0Y2JmNzY4NTdlOWJiNWIxYTZjNDA0ZjMzMCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg4OSw3ICs4ODksMTEgQEAKIAkJNDEw
QjdFNzIxMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMEI3RTcxMTA0NUZBQjAw
MEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgKi87IH07CiAJCTQxMTA0NjQxMEZB
MjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVudExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwNDYzRjBGQTIyMkE2MDBCQTQzNkEgLyog
U2NyaXB0RXZlbnRMaXN0ZW5lci5oICovOyB9OwogCQk0MTEwNDY0MjBGQTIyMkE2MDBCQTQzNkEg
LyogU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTEwNDY0MDBGQTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZlbnRM
aXN0ZW5lci5jcHAgKi87IH07CisJCTQxMjNFNTY5MTI3QjMwNDEwMDBGRUVBNyAvKiBXaW5kb3dF
dmVudENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxMjNFNTY3MTI3QjMwNDEwMDBGRUVBNyAvKiBXaW5kb3dFdmVudENvbnRleHQuaCAqLzsg
fTsKKwkJNDEyM0U1NkExMjdCMzA0MTAwMEZFRUE3IC8qIFdpbmRvd0V2ZW50Q29udGV4dC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTIzRTU2ODEy
N0IzMDQxMDAwRkVFQTcgLyogV2luZG93RXZlbnRDb250ZXh0LmNwcCAqLzsgfTsKIAkJNDEyN0Q1
MzcwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBT
Y3JpcHRTdGF0ZS5jcHAgKi87IH07CisJCTQxMzhEMzM1MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVu
dENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxMzhEMzMzMTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuaCAqLzsgfTsKKwkJNDEz
OEQzMzYxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM4RDMzNDEyNDQwNTQ4MDAzMjNEMzMg
LyogRXZlbnRDb250ZXh0LmNwcCAqLzsgfTsKIAkJNDE2MkE0NTAxMDExNDVBRTAwREZGM0VEIC8q
IERlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE2MkE0NEQxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdv
cmtlckNvbnRleHQuY3BwICovOyB9OwogCQk0MTYyQTQ1MTEwMTE0NUFFMDBERkYzRUQgLyogRGVk
aWNhdGVkV29ya2VyQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE2MkE0NEUxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNv
bnRleHQuaCAqLzsgfTsKIAkJNDE2MkE0NTQxMDExNDVFMzAwREZGM0VEIC8qIEpTRGVkaWNhdGVk
V29ya2VyQ29udGV4dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTYyQTQ1MzEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0Q3VzdG9tLmNwcCAqLzsgfTsKQEAgLTY5NTQsNyArNjk1OCwxMSBAQAogCQk0MTBC
N0U3MTEwNDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEwNDYzRjBGQTIyMkE2MDBCQTQzNkEgLyog
U2NyaXB0RXZlbnRMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
Y3JpcHRFdmVudExpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTA0
NjQwMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVudExpc3RlbmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEV2ZW50TGlzdGVuZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTIzRTU2NzEyN0IzMDQxMDAwRkVFQTcgLyogV2lu
ZG93RXZlbnRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdpbmRv
d0V2ZW50Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTIzRTU2ODEy
N0IzMDQxMDAwRkVFQTcgLyogV2luZG93RXZlbnRDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbmRvd0V2ZW50Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxMjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRTdGF0ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMzhEMzMzMTI0NDA1NDgwMDMyM0Qz
MyAvKiBFdmVudENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZl
bnRDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMzhEMzM0MTI0NDA1
NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRXZlbnRDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDE2MkE0NEQxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGVkaWNhdGVkV29ya2VyQ29u
dGV4dC5jcHA7IHBhdGggPSB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTYyQTQ0RTEwMTE0NUFFMDBERkYzRUQgLyogRGVk
aWNhdGVkV29ya2VyQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmg7IHBhdGggPSB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNv
bnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2MkE0NEYxMDExNDVBRTAw
REZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFt
ZSA9IERlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsOyBwYXRoID0gd29ya2Vycy9EZWRpY2F0ZWRX
b3JrZXJDb250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MTY2LDYg
KzE4MTc0LDggQEAKIAkJCQk4NTAzMUIyQjBBNDRFRkM3MDBGOTkyRTAgLyogRXZlbnQuY3BwICov
LAogCQkJCTg1MDMxQjJDMEE0NEVGQzcwMEY5OTJFMCAvKiBFdmVudC5oICovLAogCQkJCTE0RTgz
NkQyMDlGODUxMjAwMEI4NUFFNCAvKiBFdmVudC5pZGwgKi8sCisJCQkJNDEzOEQzMzQxMjQ0MDU0
ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5jcHAgKi8sCisJCQkJNDEzOEQzMzMxMjQ0MDU0ODAw
MzIzRDMzIC8qIEV2ZW50Q29udGV4dC5oICovLAogCQkJCUJDNjBEOTA5MEQyQTE3Q0UwMEI5OTE4
RiAvKiBFdmVudEV4Y2VwdGlvbi5oICovLAogCQkJCUJDNjBEOTBBMEQyQTE3Q0UwMEI5OTE4RiAv
KiBFdmVudEV4Y2VwdGlvbi5pZGwgKi8sCiAJCQkJOTM1RkJDNDQwOUJBMDBCOTAwRTIzMEIxIC8q
IEV2ZW50TGlzdGVuZXIuaCAqLywKQEAgLTE4MzI2LDYgKzE4MzM2LDggQEAKIAkJCQk4NTAzMUIz
QTBBNDRFRkM3MDBGOTkyRTAgLyogV2hlZWxFdmVudC5jcHAgKi8sCiAJCQkJODUwMzFCM0IwQTQ0
RUZDNzAwRjk5MkUwIC8qIFdoZWVsRXZlbnQuaCAqLywKIAkJCQk5M0VFQzFGNzA5QzI4Nzc3MDBD
NTE1RDEgLyogV2hlZWxFdmVudC5pZGwgKi8sCisJCQkJNDEyM0U1NjgxMjdCMzA0MTAwMEZFRUE3
IC8qIFdpbmRvd0V2ZW50Q29udGV4dC5jcHAgKi8sCisJCQkJNDEyM0U1NjcxMjdCMzA0MTAwMEZF
RUE3IC8qIFdpbmRvd0V2ZW50Q29udGV4dC5oICovLAogCQkJCUY1MjNEMzA5MDJERTQ0NzYwMTg2
MzVDQSAvKiBYTUxEb2N1bWVudFBhcnNlci5jcHAgKi8sCiAJCQkJRjUyM0QzMEEwMkRFNDQ3NjAx
ODYzNUNBIC8qIFhNTERvY3VtZW50UGFyc2VyLmggKi8sCiAJCQkJNTRDNTBGN0EwRTgwMURGMzAw
OTgzMkEwIC8qIFhNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgKi8sCkBAIC0xOTQ5MCw2ICsx
OTUwMiw3IEBACiAJCQkJODk4Nzg1NjAxMjJDQTA2NDAwM0FBQkRBIC8qIEVycm9yQ2FsbGJhY2su
aCBpbiBIZWFkZXJzICovLAogCQkJCTJFQ0Y3QUUyMTAxNjJCNTgwMDQyN0RFNyAvKiBFcnJvckV2
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0MjBBNDRFRkM3MDBGOTkyRTAgLyogRXZl
bnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxMzhEMzM1MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVu
dENvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEOTBDMEQyQTE3Q0UwMEI5OTE4RiAv
KiBFdmVudEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDMDlBNTMwQjA2NERCMzAw
NUFCRDREIC8qIEV2ZW50SGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1RkJDNDUwOUJB
MDBCOTAwRTIzMEIxIC8qIEV2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjExNDYs
NiArMjExNTksNyBAQAogCQkJCTg1MDMxQjUxMEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVlbEV2ZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzgwRjQ3NDA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzlCMDJFRjBFQTJEQkM0MDBDNTQ1NzAgLyogV2lkdGhJ
dGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDEyM0U1NjkxMjdCMzA0MTAwMEZFRUE3IC8q
IFdpbmRvd0V2ZW50Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4MjQzRTkwRDBDRkQ3
NTAwNDYwQzhGIC8qIFdpbmRvd0ZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUUxQkYw
MDExNUZGNkZCMDA2RjUyQ0EgLyogV2luZG93c0tleWJvYXJkQ29kZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTA4MjAzQUEwMEVEOEMzNTMwMEI4QjYxQSAvKiBXTUxBY2Nlc3NFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKQEAgLTIyMTE4LDYgKzIyMTMyLDcgQEAKIAkJCQk4OTNDNDgwQzEyNDhCRDNB
MDAyQjNEODYgLyogRW50cnlTeW5jLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQ0Y3QUUxMTAx
NjJCNTgwMDQyN0RFNyAvKiBFcnJvckV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMx
QjQxMEE0NEVGQzcwMEY5OTJFMCAvKiBFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTM4
RDMzNjEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTkzQzA5QTgxMEIwNjRGMDAwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTNDMDlBN0YwQjA2NEVFRjAwNUFCRDREIC8qIEV2ZW50SGFuZGxlck1hYy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTFDQTE5RTA1MERDMjU1OTUwMDY1QTk5NCAvKiBFdmVudExv
b3BNYWMubW0gaW4gU291cmNlcyAqLywKQEAgLTIzNzE4LDYgKzIzNzMzLDcgQEAKIAkJCQk5Mzgw
RjQ3MzA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkz
ODBGNDc4MDlBMTFBQ0MwMDFGREIzNCAvKiBXaWRnZXRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk5MzlCMDJFRTBFQTJEQkM0MDBDNTQ1NzAgLyogV2lkdGhJdGVyYXRvci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk0MTIzRTU2QTEyN0IzMDQxMDAwRkVFQTcgLyogV2luZG93RXZlbnRDb250ZXh0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDODI0M0U4MEQwQ0ZENzUwMDQ2MEM4RiAvKiBXaW5k
b3dGZWF0dXJlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwODIwM0E5RjBFRDhDMzUzMDBCOEI2
MUEgLyogV01MQWNjZXNzRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwODhDOTc1MTBF
Q0I2RTI4MDAwNTM0QkEgLyogV01MQUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwCmluZGV4IGZjMzM1MTkyNDU2MTcyZjc5YzEzNGJhNjE4YzI3ZWZkM2Y2YjE4MTQu
LmI0YmRiN2Y5MWM4OTljYTg0N2ZlYmRiMjc4MjYzZmZlNzE5ZTMwNmYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuY3BwCkBAIC0xMDA1LDcgKzEwMDUsOCBAQCBzdGF0aWMgdm9pZCBub3RpZnlDaGlsZEluc2Vy
dGVkKE5vZGUqIGNoaWxkKQogICAgIFJlZlB0cjxOb2RlPiBjID0gY2hpbGQ7CiAgICAgUmVmUHRy
PERvY3VtZW50PiBkb2N1bWVudCA9IGNoaWxkLT5kb2N1bWVudCgpOwogCi0gICAgaWYgKGMtPnBh
cmVudE5vZGUoKSAmJiBjLT5wYXJlbnROb2RlKCktPmluRG9jdW1lbnQoKSkKKyAgICBOb2RlKiBw
YXJlbnRPckhvc3ROb2RlID0gYy0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgIGlmIChwYXJlbnRP
ckhvc3ROb2RlICYmIHBhcmVudE9ySG9zdE5vZGUtPmluRG9jdW1lbnQoKSkKICAgICAgICAgYy0+
aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICBlbHNlCiAgICAgICAgIGMtPmluc2VydGVkSW50
b1RyZWUodHJ1ZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwIGIv
V2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjhmNmI4YWE0M2Q2ZWM5
MmJkYjUzYWI2NzZlODhhZWFjMzc4ZjRlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9kb20v
RXZlbnRDb250ZXh0LmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXZlbnRDb250ZXh0LmgiCisKKyNpbmNsdWRlICJET01X
aW5kb3cuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5j
bHVkZSAiTm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0V2ZW50Q29udGV4dDo6RXZl
bnRDb250ZXh0KE5vZGUqIG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRh
cmdldCogdGFyZ2V0KQorICAgIDogbV9ub2RlKG5vZGUpCisgICAgLCBtX2N1cnJlbnRUYXJnZXQo
Y3VycmVudFRhcmdldCkKKyAgICAsIG1fdGFyZ2V0KHRhcmdldCkKK3sKK30KKwordm9pZCBFdmVu
dENvbnRleHQ6OmhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KiBldmVudCkgY29uc3QKK3sKKyAgICBl
dmVudC0+c2V0VGFyZ2V0KG1fdGFyZ2V0LmdldCgpKTsKKyAgICBldmVudC0+c2V0Q3VycmVudFRh
cmdldChtX2N1cnJlbnRUYXJnZXQuZ2V0KCkpOworICAgIG1fbm9kZS0+aGFuZGxlTG9jYWxFdmVu
dHMoZXZlbnQpOworfQorCit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQu
aCBiL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlOTY3YTUwOTNmN2Yy
MWExOTNmYzRlOWNlZjI5OGRhNmE0NTdjOTQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2Rv
bS9FdmVudENvbnRleHQuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVm
IEV2ZW50Q29udGV4dF9oCisjZGVmaW5lIEV2ZW50Q29udGV4dF9oCisKKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRXZlbnRUYXJnZXQ7Citj
bGFzcyBFdmVudDsKK2NsYXNzIE5vZGU7CisKK2NsYXNzIEV2ZW50Q29udGV4dCB7CitwdWJsaWM6
CisgICAgRXZlbnRDb250ZXh0KE5vZGUqLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZl
bnRUYXJnZXQqIHRhcmdldCk7CisKKyAgICBOb2RlKiBub2RlKCkgY29uc3Q7CisgICAgRXZlbnRU
YXJnZXQqIHRhcmdldCgpIGNvbnN0OworICAgIHZvaWQgaGFuZGxlTG9jYWxFdmVudHMoRXZlbnQq
KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlOworICAgIFJlZlB0
cjxFdmVudFRhcmdldD4gbV9jdXJyZW50VGFyZ2V0OworICAgIFJlZlB0cjxFdmVudFRhcmdldD4g
bV90YXJnZXQ7Cit9OworCitpbmxpbmUgTm9kZSogRXZlbnRDb250ZXh0Ojpub2RlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9ub2RlLmdldCgpOworfQorCitpbmxpbmUgRXZlbnRUYXJnZXQqIEV2
ZW50Q29udGV4dDo6dGFyZ2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90YXJnZXQuZ2V0KCk7
Cit9CisKK30KKworI2VuZGlmIC8vIEV2ZW50Q29udGV4dF9oCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcCBiL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGU0NWJhYTQ5NTcwMzUw
MDc0YTRmZTE4MDA3MjAwNGRhYjgxYjYwZjMuLjI0ZWU2YjYzYjdjNWUwYTA4YzQxMDdiOTgwMzFi
N2MzOWEyM2Y4N2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1dlYkNv
cmUvZG9tL05vZGUuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRHluYW1pY05vZGVM
aXN0LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVk
ZSAiRXZlbnRDb250ZXh0LmgiCiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKICNpbmNsdWRl
ICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCkBAIC04MCw2ICs4
MSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJXZWJL
aXRUcmFuc2l0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAi
V2luZG93RXZlbnRDb250ZXh0LmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKICNpbmNsdWRlICJo
dG1sZWRpdGluZy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC03MzQsOSArNzM2LDkg
QEAgaW5saW5lIHZvaWQgTm9kZTo6c2V0U3R5bGVDaGFuZ2UoU3R5bGVDaGFuZ2VUeXBlIGNoYW5n
ZVR5cGUpCiAKIGlubGluZSB2b2lkIE5vZGU6Om1hcmtBbmNlc3RvcnNXaXRoQ2hpbGROZWVkc1N0
eWxlUmVjYWxjKCkKIHsKLSAgICBmb3IgKENvbnRhaW5lck5vZGUqIHAgPSBwYXJlbnROb2RlKCk7
IHAgJiYgIXAtPmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpOyBwID0gcC0+cGFyZW50Tm9kZSgpKQor
ICAgIGZvciAoQ29udGFpbmVyTm9kZSogcCA9IHBhcmVudE9ySG9zdE5vZGUoKTsgcCAmJiAhcC0+
Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7IHAgPSBwLT5wYXJlbnRPckhvc3ROb2RlKCkpCiAgICAg
ICAgIHAtPnNldENoaWxkTmVlZHNTdHlsZVJlY2FsYygpOwotICAgIAorCiAgICAgaWYgKGRvY3Vt
ZW50KCktPmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpKQogICAgICAgICBkb2N1bWVudCgpLT5zY2hl
ZHVsZVN0eWxlUmVjYWxjKCk7CiB9CkBAIC0xMzIxLDcgKzEzMjMsNyBAQCB2b2lkIE5vZGU6OmNy
ZWF0ZVJlbmRlcmVySWZOZWVkZWQoKQogCiAgICAgQVNTRVJUKCFyZW5kZXJlcigpKTsKICAgICAK
LSAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlKCk7ICAgIAorICAgIENvbnRh
aW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE9ySG9zdE5vZGUoKTsKICAgICBBU1NFUlQocGFyZW50
KTsKICAgICAKICAgICBSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyID0gcGFyZW50LT5yZW5k
ZXJlcigpOwpAQCAtMTQ0MCw2ICsxNDQyLDEzIEBAIGJvb2wgTm9kZTo6aXNJblNoYWRvd1RyZWUo
KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50T3JI
b3N0Tm9kZSgpCit7CisgICAgaWYgKENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGUo
KSkKKyAgICAgICAgcmV0dXJuIHBhcmVudDsKKyAgICByZXR1cm4gc2hhZG93UGFyZW50Tm9kZSgp
OworfQorCiBib29sIE5vZGU6OmlzQmxvY2tGbG93KCkgY29uc3QKIHsKICAgICByZXR1cm4gcmVu
ZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc0Jsb2NrRmxvdygpOwpAQCAtMjIzOSwxNCArMjI0OCw5
IEBAIHZvaWQgTm9kZTo6Z2V0U3VicmVzb3VyY2VVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxz
KSBjb25zdAogICAgIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIH0KIAotQ29u
dGFpbmVyTm9kZSogTm9kZTo6ZXZlbnRQYXJlbnROb2RlKCkKLXsKLSAgICByZXR1cm4gcGFyZW50
Tm9kZSgpOwotfQotCiBOb2RlKiBOb2RlOjplbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYo
KQogewotICAgIGZvciAoTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT5ldmVu
dFBhcmVudE5vZGUoKSkgeworICAgIGZvciAoTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUg
PSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKICAgICAgICAgLy8gRm9yIGltYWdlbWFwcywg
dGhlIGVuY2xvc2luZyBsaW5rIG5vZGUgaXMgdGhlIGFzc29jaWF0ZWQgYXJlYSBlbGVtZW50IG5v
dCB0aGUgaW1hZ2UgaXRzZWxmLgogICAgICAgICAvLyBTbyB3ZSBkb24ndCBsZXQgaW1hZ2VzIGJl
IHRoZSBlbmNsb3NpbmdMaW5rTm9kZSwgZXZlbiB0aG91Z2ggaXNMaW5rIHNvbWV0aW1lcyByZXR1
cm5zIHRydWUKICAgICAgICAgLy8gZm9yIHRoZW0uCkBAIC0yNDg0LDEyICsyNDg4LDEzIEBAIHZv
aWQgTm9kZTo6aGFuZGxlTG9jYWxFdmVudHMoRXZlbnQqIGV2ZW50KQogICAgIGZpcmVFdmVudExp
c3RlbmVycyhldmVudCk7CiB9CiAKLSNpZiBFTkFCTEUoU1ZHKQotc3RhdGljIGlubGluZSBTVkdF
bGVtZW50SW5zdGFuY2UqIGV2ZW50VGFyZ2V0QXNTVkdFbGVtZW50SW5zdGFuY2UoTm9kZSogcmVm
ZXJlbmNlTm9kZSkKK3N0YXRpYyBpbmxpbmUgRXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0UmVzcGVj
dGluZ1NWR1RhcmdldFJ1bGVzKE5vZGUqIHJlZmVyZW5jZU5vZGUpCiB7CiAgICAgQVNTRVJUKHJl
ZmVyZW5jZU5vZGUpOworCisjaWYgRU5BQkxFKFNWRykKICAgICBpZiAoIXJlZmVyZW5jZU5vZGUt
PmlzU1ZHRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHJlZmVy
ZW5jZU5vZGU7CiAKICAgICAvLyBTcGVjOiBUaGUgZXZlbnQgaGFuZGxpbmcgZm9yIHRoZSBub24t
ZXhwb3NlZCB0cmVlIHdvcmtzIGFzIGlmIHRoZSByZWZlcmVuY2VkIGVsZW1lbnQgaGFkIGJlZW4g
dGV4dHVhbGx5IGluY2x1ZGVkCiAgICAgLy8gYXMgYSBkZWVwbHkgY2xvbmVkIGNoaWxkIG9mIHRo
ZSAndXNlJyBlbGVtZW50LCBleGNlcHQgdGhhdCBldmVudHMgYXJlIGRpc3BhdGNoZWQgdG8gdGhl
IFNWR0VsZW1lbnRJbnN0YW5jZSBvYmplY3RzCkBAIC0yNTAzLDM3ICsyNTA4LDQwIEBAIHN0YXRp
YyBpbmxpbmUgU1ZHRWxlbWVudEluc3RhbmNlKiBldmVudFRhcmdldEFzU1ZHRWxlbWVudEluc3Rh
bmNlKE5vZGUqIHJlZmVyZW5jCiAgICAgICAgIGlmIChTVkdFbGVtZW50SW5zdGFuY2UqIGluc3Rh
bmNlID0gc3RhdGljX2Nhc3Q8U1ZHVXNlRWxlbWVudCo+KHNoYWRvd1RyZWVQYXJlbnRFbGVtZW50
KS0+aW5zdGFuY2VGb3JTaGFkb3dUcmVlRWxlbWVudChyZWZlcmVuY2VOb2RlKSkKICAgICAgICAg
ICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgot
Ci1zdGF0aWMgaW5saW5lIEV2ZW50VGFyZ2V0KiBldmVudFRhcmdldFJlc3BlY3RpbmdTVkdUYXJn
ZXRSdWxlcyhOb2RlKiByZWZlcmVuY2VOb2RlKQotewotICAgIEFTU0VSVChyZWZlcmVuY2VOb2Rl
KTsKLQotI2lmIEVOQUJMRShTVkcpCi0gICAgaWYgKFNWR0VsZW1lbnRJbnN0YW5jZSogaW5zdGFu
Y2UgPSBldmVudFRhcmdldEFzU1ZHRWxlbWVudEluc3RhbmNlKHJlZmVyZW5jZU5vZGUpKSB7Ci0g
ICAgICAgIEFTU0VSVChpbnN0YW5jZS0+c2hhZG93VHJlZUVsZW1lbnQoKSA9PSByZWZlcmVuY2VO
b2RlKTsKLSAgICAgICAgcmV0dXJuIGluc3RhbmNlOwotICAgIH0KICNlbmRpZgogCiAgICAgcmV0
dXJuIHJlZmVyZW5jZU5vZGU7CiB9CiAKLXZvaWQgTm9kZTo6ZXZlbnRBbmNlc3RvcnMoVmVjdG9y
PFJlZlB0cjxDb250YWluZXJOb2RlPiA+ICZhbmNlc3RvcnMpCit2b2lkIE5vZGU6OmV2ZW50QW5j
ZXN0b3JzKFZlY3RvcjxFdmVudENvbnRleHQ+ICZhbmNlc3RvcnMsIEV2ZW50VGFyZ2V0KiBvcmln
aW5hbFRhcmdldCkKIHsKLSAgICBpZiAoaW5Eb2N1bWVudCgpKSB7Ci0gICAgICAgIGZvciAoQ29u
dGFpbmVyTm9kZSogYW5jZXN0b3IgPSBldmVudFBhcmVudE5vZGUoKTsgYW5jZXN0b3I7IGFuY2Vz
dG9yID0gYW5jZXN0b3ItPmV2ZW50UGFyZW50Tm9kZSgpKSB7CisgICAgaWYgKCFpbkRvY3VtZW50
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEV2ZW50VGFyZ2V0KiB0YXJnZXQgPSBvcmlnaW5h
bFRhcmdldDsKKyAgICBOb2RlKiBhbmNlc3RvciA9IHRoaXM7CisgICAgYm9vbCBzaG91bGRTa2lw
TmV4dEFuY2VzdG9yID0gZmFsc2U7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKGFu
Y2VzdG9yLT5pc1NoYWRvd05vZGUoKSkgeworICAgICAgICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rv
ci0+c2hhZG93UGFyZW50Tm9kZSgpOworICAgICAgICAgICAgaWYgKCFzaG91bGRTa2lwTmV4dEFu
Y2VzdG9yKQorICAgICAgICAgICAgICAgIHRhcmdldCA9IGFuY2VzdG9yOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudE5vZGUoKTsKKworICAg
ICAgICBpZiAoIWFuY2VzdG9yKQorICAgICAgICAgICAgcmV0dXJuOworCiAjaWYgRU5BQkxFKFNW
RykKLSAgICAgICAgICAgIC8vIFNraXAgPHVzZT4gc2hhZG93IHRyZWUgZWxlbWVudHMuCi0gICAg
ICAgICAgICBpZiAoYW5jZXN0b3ItPmlzU1ZHRWxlbWVudCgpICYmIGFuY2VzdG9yLT5pc1NoYWRv
d05vZGUoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgLy8gU2tpcCBTVkdT
aGFkb3dUcmVlUm9vdEVsZW1lbnQuCisgICAgICAgIHNob3VsZFNraXBOZXh0QW5jZXN0b3IgPSBh
bmNlc3Rvci0+aXNTVkdFbGVtZW50KCkgJiYgYW5jZXN0b3ItPmlzU2hhZG93Tm9kZSgpOworICAg
ICAgICBpZiAoc2hvdWxkU2tpcE5leHRBbmNlc3RvcikKKyAgICAgICAgICAgIGNvbnRpbnVlOwog
I2VuZGlmCi0gICAgICAgICAgICBhbmNlc3RvcnMuYXBwZW5kKGFuY2VzdG9yKTsKLSAgICAgICAg
fQotICAgIH0KKyAgICAgICAgLy8gRklYTUU6IFVucm9sbCB0aGUgZXh0cmEgbG9vcCBpbnNpZGUg
ZXZlbnRUYXJnZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0UnVsZXMgaW50byB0aGlzIGxvb3AuCisgICAg
ICAgIGFuY2VzdG9ycy5hcHBlbmQoRXZlbnRDb250ZXh0KGFuY2VzdG9yLCBldmVudFRhcmdldFJl
c3BlY3RpbmdTVkdUYXJnZXRSdWxlcyhhbmNlc3RvciksIHRhcmdldCkpOworCisgICAgfTsKIH0K
IAogYm9vbCBOb2RlOjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50KQpA
QCAtMjU0Nyw2ICsyNTU1LDExIEBAIGJvb2wgTm9kZTo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRy
PEV2ZW50PiBwcnBFdmVudCkKICAgICByZXR1cm4gZGlzcGF0Y2hHZW5lcmljRXZlbnQoZXZlbnQu
cmVsZWFzZSgpKTsKIH0KIAorc3RhdGljIGNvbnN0IEV2ZW50Q29udGV4dCogdG9wRXZlbnRDb250
ZXh0KGNvbnN0IFZlY3RvcjxFdmVudENvbnRleHQ+JiBhbmNlc3RvcnMpCit7CisgICAgcmV0dXJu
IGFuY2VzdG9ycy5pc0VtcHR5KCkgPyAwIDogJihhbmNlc3RvcnMubGFzdCgpKTsKK30KKwogYm9v
bCBOb2RlOjpkaXNwYXRjaEdlbmVyaWNFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCkK
IHsKICAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50KHBycEV2ZW50KTsKQEAgLTI1NTksMjAgKzI1NzIs
MTMgQEAgYm9vbCBOb2RlOjpkaXNwYXRjaEdlbmVyaWNFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBw
cnBFdmVudCkKICAgICAvLyBJZiB0aGUgbm9kZSBpcyBub3QgaW4gYSBkb2N1bWVudCBqdXN0IHNl
bmQgdGhlIGV2ZW50IHRvIGl0LgogICAgIC8vIEJlIHN1cmUgdG8gcmVmIGFsbCBvZiBub2RlcyBz
aW5jZSBldmVudCBoYW5kbGVycyBjb3VsZCByZXN1bHQgaW4gdGhlIGxhc3QgcmVmZXJlbmNlIGdv
aW5nIGF3YXkuCiAgICAgUmVmUHRyPE5vZGU+IHRoaXNOb2RlKHRoaXMpOwotICAgIFZlY3RvcjxS
ZWZQdHI8Q29udGFpbmVyTm9kZT4gPiBhbmNlc3RvcnM7Ci0gICAgZXZlbnRBbmNlc3RvcnMoYW5j
ZXN0b3JzKTsKKyAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IG9yaWdpbmFsVGFyZ2V0KGV2ZW50LT50
YXJnZXQoKSk7CisgICAgVmVjdG9yPEV2ZW50Q29udGV4dD4gYW5jZXN0b3JzOworICAgIGV2ZW50
QW5jZXN0b3JzKGFuY2VzdG9ycywgb3JpZ2luYWxUYXJnZXQuZ2V0KCkpOwogCi0gICAgLy8gU2V0
IHVwIGEgcG9pbnRlciB0byBpbmRpY2F0ZSB3aGV0aGVyIC8gd2hlcmUgdG8gZGlzcGF0Y2ggd2lu
ZG93IGV2ZW50cy4KLSAgICAvLyBXZSBkb24ndCBkaXNwYXRjaCBsb2FkIGV2ZW50cyB0byB0aGUg
d2luZG93LiBUaGF0IHF1aXJrIHdhcyBvcmlnaW5hbGx5Ci0gICAgLy8gYWRkZWQgYmVjYXVzZSBN
b3ppbGxhIGRvZXNuJ3QgcHJvcGFnYXRlIGxvYWQgZXZlbnRzIHRvIHRoZSB3aW5kb3cgb2JqZWN0
LgotICAgIERPTVdpbmRvdyogdGFyZ2V0Rm9yV2luZG93RXZlbnRzID0gMDsKLSAgICBpZiAoZXZl
bnQtPnR5cGUoKSAhPSBldmVudE5hbWVzKCkubG9hZEV2ZW50KSB7Ci0gICAgICAgIE5vZGUqIHRv
cExldmVsQ29udGFpbmVyID0gYW5jZXN0b3JzLmlzRW1wdHkoKSA/IHRoaXMgOiBhbmNlc3RvcnMu
bGFzdCgpLmdldCgpOwotICAgICAgICBpZiAodG9wTGV2ZWxDb250YWluZXItPmlzRG9jdW1lbnRO
b2RlKCkpCi0gICAgICAgICAgICB0YXJnZXRGb3JXaW5kb3dFdmVudHMgPSBzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KHRvcExldmVsQ29udGFpbmVyKS0+ZG9tV2luZG93KCk7Ci0gICAgfQorICAgIFdp
bmRvd0V2ZW50Q29udGV4dCB3aW5kb3dDb250ZXh0KGV2ZW50LmdldCgpLCB0aGlzLCB0b3BFdmVu
dENvbnRleHQoYW5jZXN0b3JzKSk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudChk
b2N1bWVudCgpLCAqZXZlbnQsIHRhcmdldEZvcldpbmRvd0V2ZW50cywgdGhpcywgYW5jZXN0b3Jz
KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudChkb2N1bWVudCgpLCAqZXZlbnQsIHdp
bmRvd0NvbnRleHQud2luZG93KCksIHRoaXMsIGFuY2VzdG9ycyk7CiAKICAgICAvLyBHaXZlIHRo
ZSB0YXJnZXQgbm9kZSBhIGNoYW5jZSB0byBkbyBzb21lIHdvcmsgYmVmb3JlIERPTSBldmVudCBo
YW5kbGVycyBnZXQgYSBjcmFjay4KICAgICB2b2lkKiBkYXRhID0gcHJlRGlzcGF0Y2hFdmVudEhh
bmRsZXIoZXZlbnQuZ2V0KCkpOwpAQCAtMjU4MiwyMiArMjU4OCwxNyBAQCBib29sIE5vZGU6OmRp
c3BhdGNoR2VuZXJpY0V2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50KQogICAgIC8vIFRy
aWdnZXIgY2FwdHVyaW5nIGV2ZW50IGhhbmRsZXJzLCBzdGFydGluZyBhdCB0aGUgdG9wIGFuZCB3
b3JraW5nIG91ciB3YXkgZG93bi4KICAgICBldmVudC0+c2V0RXZlbnRQaGFzZShFdmVudDo6Q0FQ
VFVSSU5HX1BIQVNFKTsKIAotICAgIGlmICh0YXJnZXRGb3JXaW5kb3dFdmVudHMpIHsKLSAgICAg
ICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQodGFyZ2V0Rm9yV2luZG93RXZlbnRzKTsKLSAgICAg
ICAgdGFyZ2V0Rm9yV2luZG93RXZlbnRzLT5maXJlRXZlbnRMaXN0ZW5lcnMoZXZlbnQuZ2V0KCkp
OwotICAgICAgICBpZiAoZXZlbnQtPnByb3BhZ2F0aW9uU3RvcHBlZCgpKQotICAgICAgICAgICAg
Z290byBkb25lRGlzcGF0Y2hpbmc7Ci0gICAgfQorICAgIGlmICh3aW5kb3dDb250ZXh0LmhhbmRs
ZUxvY2FsRXZlbnRzKGV2ZW50LmdldCgpKSAmJiBldmVudC0+cHJvcGFnYXRpb25TdG9wcGVkKCkp
CisgICAgICAgIGdvdG8gZG9uZURpc3BhdGNoaW5nOworCiAgICAgZm9yIChzaXplX3QgaSA9IGFu
Y2VzdG9ycy5zaXplKCk7IGk7IC0taSkgewotICAgICAgICBDb250YWluZXJOb2RlKiBhbmNlc3Rv
ciA9IGFuY2VzdG9yc1tpIC0gMV0uZ2V0KCk7Ci0gICAgICAgIGV2ZW50LT5zZXRDdXJyZW50VGFy
Z2V0KGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1NWR1RhcmdldFJ1bGVzKGFuY2VzdG9yKSk7Ci0gICAg
ICAgIGFuY2VzdG9yLT5oYW5kbGVMb2NhbEV2ZW50cyhldmVudC5nZXQoKSk7CisgICAgICAgIGFu
Y2VzdG9yc1tpIC0gMV0uaGFuZGxlTG9jYWxFdmVudHMoZXZlbnQuZ2V0KCkpOwogICAgICAgICBp
ZiAoZXZlbnQtPnByb3BhZ2F0aW9uU3RvcHBlZCgpKQogICAgICAgICAgICAgZ290byBkb25lRGlz
cGF0Y2hpbmc7CiAgICAgfQogCiAgICAgZXZlbnQtPnNldEV2ZW50UGhhc2UoRXZlbnQ6OkFUX1RB
UkdFVCk7Ci0KKyAgICBldmVudC0+c2V0VGFyZ2V0KG9yaWdpbmFsVGFyZ2V0LmdldCgpKTsKICAg
ICBldmVudC0+c2V0Q3VycmVudFRhcmdldChldmVudFRhcmdldFJlc3BlY3RpbmdTVkdUYXJnZXRS
dWxlcyh0aGlzKSk7CiAgICAgaGFuZGxlTG9jYWxFdmVudHMoZXZlbnQuZ2V0KCkpOwogICAgIGlm
IChldmVudC0+cHJvcGFnYXRpb25TdG9wcGVkKCkpCkBAIC0yNjA5LDIxICsyNjEwLDE2IEBAIGJv
b2wgTm9kZTo6ZGlzcGF0Y2hHZW5lcmljRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQp
CiAKICAgICAgICAgc2l6ZV90IHNpemUgPSBhbmNlc3RvcnMuc2l6ZSgpOwogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgQ29udGFpbmVyTm9k
ZSogYW5jZXN0b3IgPSBhbmNlc3RvcnNbaV0uZ2V0KCk7Ci0gICAgICAgICAgICBldmVudC0+c2V0
Q3VycmVudFRhcmdldChldmVudFRhcmdldFJlc3BlY3RpbmdTVkdUYXJnZXRSdWxlcyhhbmNlc3Rv
cikpOwotICAgICAgICAgICAgYW5jZXN0b3ItPmhhbmRsZUxvY2FsRXZlbnRzKGV2ZW50LmdldCgp
KTsKLSAgICAgICAgICAgIGlmIChldmVudC0+cHJvcGFnYXRpb25TdG9wcGVkKCkgfHwgZXZlbnQt
PmNhbmNlbEJ1YmJsZSgpKQotICAgICAgICAgICAgICAgIGdvdG8gZG9uZURpc3BhdGNoaW5nOwot
ICAgICAgICB9Ci0gICAgICAgIGlmICh0YXJnZXRGb3JXaW5kb3dFdmVudHMpIHsKLSAgICAgICAg
ICAgIGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KHRhcmdldEZvcldpbmRvd0V2ZW50cyk7Ci0gICAg
ICAgICAgICB0YXJnZXRGb3JXaW5kb3dFdmVudHMtPmZpcmVFdmVudExpc3RlbmVycyhldmVudC5n
ZXQoKSk7CisgICAgICAgICAgICBhbmNlc3RvcnNbaV0uaGFuZGxlTG9jYWxFdmVudHMoZXZlbnQu
Z2V0KCkpOwogICAgICAgICAgICAgaWYgKGV2ZW50LT5wcm9wYWdhdGlvblN0b3BwZWQoKSB8fCBl
dmVudC0+Y2FuY2VsQnViYmxlKCkpCiAgICAgICAgICAgICAgICAgZ290byBkb25lRGlzcGF0Y2hp
bmc7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHdpbmRvd0NvbnRleHQuaGFuZGxlTG9jYWxFdmVu
dHMoZXZlbnQuZ2V0KCkpICYmIChldmVudC0+cHJvcGFnYXRpb25TdG9wcGVkKCkgfHwgZXZlbnQt
PmNhbmNlbEJ1YmJsZSgpKSkKKyAgICAgICAgICAgIGdvdG8gZG9uZURpc3BhdGNoaW5nOwogICAg
IH0KIAogZG9uZURpc3BhdGNoaW5nOgorICAgIGV2ZW50LT5zZXRUYXJnZXQob3JpZ2luYWxUYXJn
ZXQuZ2V0KCkpOwogICAgIGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KDApOwogICAgIGV2ZW50LT5z
ZXRFdmVudFBoYXNlKDApOwogCkBAIC0yNjQ0LDggKzI2NDAsNyBAQCBkb25lRGlzcGF0Y2hpbmc6
CiAgICAgICAgIGlmIChldmVudC0+YnViYmxlcygpKSB7CiAgICAgICAgICAgICBzaXplX3Qgc2l6
ZSA9IGFuY2VzdG9ycy5zaXplKCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkgewotICAgICAgICAgICAgICAgIENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0g
YW5jZXN0b3JzW2ldLmdldCgpOwotICAgICAgICAgICAgICAgIGFuY2VzdG9yLT5kZWZhdWx0RXZl
bnRIYW5kbGVyKGV2ZW50LmdldCgpKTsKKyAgICAgICAgICAgICAgICBhbmNlc3RvcnNbaV0ubm9k
ZSgpLT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50LmdldCgpKTsKICAgICAgICAgICAgICAgICBB
U1NFUlQoIWV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCkpOwogICAgICAgICAgICAgICAgIGlmIChl
dmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKICAgICAgICAgICAgICAgICAgICAgZ290byBkb25lV2l0
aERlZmF1bHQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9XZWJDb3JlL2RvbS9O
b2RlLmgKaW5kZXggM2M2YzE5OTcxMWIzNGUxYTAwYTlkYTgwMTFhZjVhNWFlNGRjNjRkNS4uZDRm
OGU0YmY2ZGEyZDg5NmM5ODE5MmJmM2Q1ZTdmYzdiYTkzYzJmZSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9kb20vTm9kZS5oCisrKyBiL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNDksNiArNDksNyBAQCBj
bGFzcyBEb2N1bWVudDsKIGNsYXNzIER5bmFtaWNOb2RlTGlzdDsKIGNsYXNzIEVsZW1lbnQ7CiBj
bGFzcyBFdmVudDsKK2NsYXNzIEV2ZW50Q29udGV4dDsKIGNsYXNzIEV2ZW50TGlzdGVuZXI7CiBj
bGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRnJhbWU7CkBAIC0yMDQsMTYgKzIwNSwxNSBAQCBwdWJs
aWM6CiAgICAgTm9kZSogc2hhZG93QW5jZXN0b3JOb2RlKCk7CiAgICAgTm9kZSogc2hhZG93VHJl
ZVJvb3ROb2RlKCk7CiAgICAgYm9vbCBpc0luU2hhZG93VHJlZSgpOwotCi0gICAgLy8gVGhlIG5v
ZGUncyBwYXJlbnQgZm9yIHRoZSBwdXJwb3NlIG9mIGV2ZW50IGNhcHR1cmUgYW5kIGJ1YmJsaW5n
LgotICAgIHZpcnR1YWwgQ29udGFpbmVyTm9kZSogZXZlbnRQYXJlbnROb2RlKCk7CisgICAgLy8g
Tm9kZSdzIHBhcmVudCBvciBzaGFkb3cgdHJlZSBob3N0LgorICAgIENvbnRhaW5lck5vZGUqIHBh
cmVudE9ySG9zdE5vZGUoKTsKIAogICAgIC8vIFJldHVybnMgdGhlIGVuY2xvc2luZyBldmVudCBw
YXJlbnQgbm9kZSAob3Igc2VsZikgdGhhdCwgd2hlbiBjbGlja2VkLCB3b3VsZCB0cmlnZ2VyIGEg
bmF2aWdhdGlvbi4KICAgICBOb2RlKiBlbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKTsK
IAogICAgIC8vIE5vZGUgYW5jZXN0b3JzIHdoZW4gY29uY2VybmVkIGFib3V0IGV2ZW50IGZsb3cu
CiAgICAgLy8gRklYTUU6IFNob3VsZCBiZSBuYW1lZCBnZXRFdmVudEFuY2VzdG9ycy4KLSAgICB2
b2lkIGV2ZW50QW5jZXN0b3JzKFZlY3RvcjxSZWZQdHI8Q29udGFpbmVyTm9kZT4gPiAmYW5jZXN0
b3JzKTsKKyAgICB2b2lkIGV2ZW50QW5jZXN0b3JzKFZlY3RvcjxFdmVudENvbnRleHQ+ICZhbmNl
c3RvcnMsIEV2ZW50VGFyZ2V0Kik7CiAKICAgICBib29sIGlzQmxvY2tGbG93KCkgY29uc3Q7CiAg
ICAgYm9vbCBpc0Jsb2NrRmxvd09yQmxvY2tUYWJsZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9kb20vVGV4dC5jcHAgYi9XZWJDb3JlL2RvbS9UZXh0LmNwcAppbmRleCA2MjcxZjExMDY1
OWM2YjgwYmI0YzIzYWYwYWE3YzZlMjg1MmU4NWI3Li5mOWE0ZjA0YmMzNjc1ZWVkZjZkZTFlYzRi
MDllMzNiMjRkOGJiODc3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9UZXh0LmNwcAorKysgYi9X
ZWJDb3JlL2RvbS9UZXh0LmNwcApAQCAtMjM5LDEwICsyMzksMTEgQEAgYm9vbCBUZXh0OjpyZW5k
ZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlICpzdHlsZSkKIAogUmVuZGVyT2JqZWN0KiBUZXh0Ojpj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKKyAgICBO
b2RlKiBwYXJlbnRPckhvc3QgPSBwYXJlbnRPckhvc3ROb2RlKCk7CiAjaWYgRU5BQkxFKFNWRykK
LSAgICBpZiAocGFyZW50Tm9kZSgpLT5pc1NWR0VsZW1lbnQoKQorICAgIGlmIChwYXJlbnRPckhv
c3QtPmlzU1ZHRWxlbWVudCgpCiAjaWYgRU5BQkxFKFNWR19GT1JFSUdOX09CSkVDVCkKLSAgICAg
ICAgJiYgIXBhcmVudE5vZGUoKS0+aGFzVGFnTmFtZShTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRh
ZykKKyAgICAgICAgJiYgIXBhcmVudE9ySG9zdC0+aGFzVGFnTmFtZShTVkdOYW1lczo6Zm9yZWln
bk9iamVjdFRhZykKICNlbmRpZgogICAgICkKICAgICAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJl
bmRlclNWR0lubGluZVRleHQodGhpcywgZGF0YUltcGwoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2RvbS9XaW5kb3dFdmVudENvbnRleHQuY3BwIGIvV2ViQ29yZS9kb20vV2luZG93RXZlbnRDb250
ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mYmI5OTFjNWExMGJiOGZhZDdjYWNlNWRjYWRhNTM0OGE5MDc2
MWU3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9kb20vV2luZG93RXZlbnRDb250ZXh0LmNw
cApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2luZG93RXZlbnRDb250ZXh0LmgiCisKKyNpbmNsdWRlICJET01XaW5kb3cuaCIK
KyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZl
bnRDb250ZXh0LmgiCisjaW5jbHVkZSAiTm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1dpbmRvd0V2ZW50Q29udGV4dDo6V2luZG93RXZlbnRDb250ZXh0KEV2ZW50KiBldmVudCwgTm9k
ZSogbm9kZSwgY29uc3QgRXZlbnRDb250ZXh0KiB0b3BFdmVudENvbnRleHQpCit7CisgICAgLy8g
V2UgZG9uJ3QgZGlzcGF0Y2ggbG9hZCBldmVudHMgdG8gdGhlIHdpbmRvdy4gVGhhdCBxdWlyayB3
YXMgb3JpZ2luYWxseQorICAgIC8vIGFkZGVkIGJlY2F1c2UgTW96aWxsYSBkb2Vzbid0IHByb3Bh
Z2F0ZSBsb2FkIGV2ZW50cyB0byB0aGUgd2luZG93IG9iamVjdC4KKyAgICBpZiAoZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkubG9hZEV2ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBF
dmVudFRhcmdldCogdGFyZ2V0Rm9yV2luZG93RXZlbnRzID0gbm9kZTsKKyAgICBOb2RlKiB0b3BM
ZXZlbENvbnRhaW5lciA9IG5vZGU7CisgICAgaWYgKHRvcEV2ZW50Q29udGV4dCkgeworICAgICAg
ICB0b3BMZXZlbENvbnRhaW5lciA9IHRvcEV2ZW50Q29udGV4dC0+bm9kZSgpOworICAgICAgICB0
YXJnZXRGb3JXaW5kb3dFdmVudHMgPSB0b3BFdmVudENvbnRleHQtPnRhcmdldCgpOworICAgIH0K
KyAgICBpZiAoIXRvcExldmVsQ29udGFpbmVyLT5pc0RvY3VtZW50Tm9kZSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX3dpbmRvdyA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4odG9wTGV2ZWxD
b250YWluZXIpLT5kb21XaW5kb3coKTsKKyAgICBtX3RhcmdldCA9IHRhcmdldEZvcldpbmRvd0V2
ZW50czsKK30KKworYm9vbCBXaW5kb3dFdmVudENvbnRleHQ6OmhhbmRsZUxvY2FsRXZlbnRzKEV2
ZW50KiBldmVudCkKK3sKKyAgICBpZiAoIW1fd2luZG93KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBldmVudC0+c2V0VGFyZ2V0KHRhcmdldCgpKTsKKyAgICBldmVudC0+c2V0Q3VycmVu
dFRhcmdldCh3aW5kb3coKSk7CisgICAgbV93aW5kb3ctPmZpcmVFdmVudExpc3RlbmVycyhldmVu
dCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dp
bmRvd0V2ZW50Q29udGV4dC5oIGIvV2ViQ29yZS9kb20vV2luZG93RXZlbnRDb250ZXh0LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGRmZTM2N2QwOTllNzQ2MWFjZjA4ZWNlOGM5NmU3Y2QyMDhjNDYwZAotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50Q29udGV4dC5oCkBAIC0wLDAgKzEs
NjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKgorICovCisKKyNpZm5kZWYgV2luZG93RXZlbnRDb250ZXh0X2gKKyNkZWZp
bmUgV2luZG93RXZlbnRDb250ZXh0X2gKKworI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NV2lu
ZG93OworY2xhc3MgRXZlbnRUYXJnZXQ7CitjbGFzcyBFdmVudENvbnRleHQ7CitjbGFzcyBFdmVu
dDsKK2NsYXNzIE5vZGU7CisKK2NsYXNzIFdpbmRvd0V2ZW50Q29udGV4dCB7CitwdWJsaWM6Cisg
ICAgV2luZG93RXZlbnRDb250ZXh0KEV2ZW50KiwgTm9kZSosIGNvbnN0IEV2ZW50Q29udGV4dCop
OworCisgICAgRE9NV2luZG93KiB3aW5kb3coKSBjb25zdDsKKyAgICBFdmVudFRhcmdldCogdGFy
Z2V0KCkgY29uc3Q7CisgICAgYm9vbCBoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCogZXZlbnQpOwor
Citwcml2YXRlOgorICAgIFJlZlB0cjxET01XaW5kb3c+IG1fd2luZG93OworICAgIFJlZlB0cjxF
dmVudFRhcmdldD4gbV90YXJnZXQ7Cit9OworCitpbmxpbmUgRE9NV2luZG93KiBXaW5kb3dFdmVu
dENvbnRleHQ6OndpbmRvdygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2luZG93LmdldCgpOwor
fQorCitpbmxpbmUgRXZlbnRUYXJnZXQqIFdpbmRvd0V2ZW50Q29udGV4dDo6dGFyZ2V0KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV90YXJnZXQuZ2V0KCk7Cit9CisKK30KKworI2VuZGlmIC8vIFdp
bmRvd0V2ZW50Q29udGV4dF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAK
aW5kZXggY2ZiNTVmYzZlMGQ3NDcxNzc0NTBhOTE5NTkyODIwMDc4NTVkYzM4ZC4uN2EzZDFiMDBh
MmY5OTYzZTMxOWU2MTY4MWIyMGQ2NzBkYTkzYTFkZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnRUeXBlLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRl
ICJFdmVudENvbnRleHQuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCkBAIC02MDcsMTMgKzYwOCwx
MyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUobG9u
ZyBub2RlSWQsIGxvbmcqIG91dE5vZGVJZCwgUgogICAgICAgICByZXR1cm47CiAKICAgICAvLyBU
aGUgTm9kZSdzIEV2ZW50IEFuY2VzdG9ycyAobm90IGluY2x1ZGluZyBzZWxmKQotICAgIFZlY3Rv
cjxSZWZQdHI8Q29udGFpbmVyTm9kZT4gPiBhbmNlc3RvcnM7Ci0gICAgbm9kZS0+ZXZlbnRBbmNl
c3RvcnMoYW5jZXN0b3JzKTsKKyAgICBWZWN0b3I8RXZlbnRDb250ZXh0PiBhbmNlc3RvcnM7Cisg
ICAgbm9kZS0+ZXZlbnRBbmNlc3RvcnMoYW5jZXN0b3JzLCBub2RlKTsKIAogICAgIC8vIE5vZGVz
IGFuZCB0aGVpciBMaXN0ZW5lcnMgZm9yIHRoZSBjb25jZXJuZWQgZXZlbnQgdHlwZXMgKG9yZGVy
IGlzIHRvcCB0byBib3R0b20pCiAgICAgVmVjdG9yPEV2ZW50TGlzdGVuZXJJbmZvPiBldmVudElu
Zm9ybWF0aW9uOwogICAgIGZvciAoc2l6ZV90IGkgPSBhbmNlc3RvcnMuc2l6ZSgpOyBpOyAtLWkp
IHsKLSAgICAgICAgQ29udGFpbmVyTm9kZSogYW5jZXN0b3IgPSBhbmNlc3RvcnNbaSAtIDFdLmdl
dCgpOworICAgICAgICBOb2RlKiBhbmNlc3RvciA9IGFuY2VzdG9yc1tpIC0gMV0ubm9kZSgpOwog
ICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGV2ZW50VHlwZXNMZW5ndGg7ICsraikgewog
ICAgICAgICAgICAgQXRvbWljU3RyaW5nJiB0eXBlID0gZXZlbnRUeXBlc1tqXTsKICAgICAgICAg
ICAgIGlmIChhbmNlc3Rvci0+aGFzRXZlbnRMaXN0ZW5lcnModHlwZSkpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCA5NDIwMmMxMTY1ZWYx
MWMzOGU4OGY2MGQ3YmVkYTEzZmMzZDRiZDljLi5jZjQxNTI3OTg1OTlmYTczODhlNWJhMWM1MWM0
ZGJmMmFjNmUxMDE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgog
I2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRDb250ZXh0LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIgpAQCAtNTMsNyArNTQsNyBAQCBzdGF0
aWMgY29uc3QgY2hhciogY29uc3QgdGltZXJGaXJlZEV2ZW50TmFtZSA9ICJ0aW1lckZpcmVkIjsK
IAogaW50IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c19mcm9udGVuZENvdW50ZXIgPSAwOwog
Ci1zdGF0aWMgYm9vbCBldmVudEhhc0xpc3RlbmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgRE9NV2luZG93KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
Q29udGFpbmVyTm9kZT4gPiYgYW5jZXN0b3JzKQorc3RhdGljIGJvb2wgZXZlbnRIYXNMaXN0ZW5l
cnMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERPTVdpbmRvdyogd2luZG93LCBOb2Rl
KiBub2RlLCBjb25zdCBWZWN0b3I8RXZlbnRDb250ZXh0PiYgYW5jZXN0b3JzKQogewogICAgIGlm
ICh3aW5kb3cgJiYgd2luZG93LT5oYXNFdmVudExpc3RlbmVycyhldmVudFR5cGUpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTYyLDcgKzYzLDcgQEAgc3RhdGljIGJvb2wgZXZlbnRIYXNMaXN0
ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERPTVdpbmRvdyogd2luZG93LAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5jZXN0
b3JzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0gYW5j
ZXN0b3JzW2ldLmdldCgpOworICAgICAgICBOb2RlKiBhbmNlc3RvciA9IGFuY2VzdG9yc1tpXS5u
b2RlKCk7CiAgICAgICAgIGlmIChhbmNlc3Rvci0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnRUeXBl
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTEzOSw3ICsxNDAsNiBAQCB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkSW1wbChJ
bnNwZWN0b3JDb250cm9sbGVyKiBpbgogICAgICAgICBkb21BZ2VudC0+Y2hhcmFjdGVyRGF0YU1v
ZGlmaWVkKGNoYXJhY3RlckRhdGEpOwogfQogCi0KIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNw
ZWN0b3JDb250cm9sbGVyLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKICNpZiBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1
bQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRDaGFuZ2VYSFJSZWFkeVN0YXRlKCk7CiB9CiAK
LUluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxEaXNwYXRjaEV2ZW50SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2Rl
LCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4mIGFuY2VzdG9ycykKK0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxE
aXNwYXRjaEV2ZW50SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVy
LCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2RlLCBjb25z
dCBWZWN0b3I8RXZlbnRDb250ZXh0PiYgYW5jZXN0b3JzKQogewogICAgIHBhdXNlT25OYXRpdmVF
dmVudElmTmVlZGVkKGluc3BlY3RvckNvbnRyb2xsZXIsIGxpc3RlbmVyRXZlbnRDYXRlZ29yeVR5
cGUsIGV2ZW50LnR5cGUoKSwgZmFsc2UpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDFiNjJlY2I3NmM3ODI5NzQ4ZjQyMTY3ZmI4MjNiM2Nk
OGQ2NWMyYjQuLjdmMjQxYzQxMTg0YTQxZmI2N2UwMDIyOWY5MGMxMGQ3Y2ZiYTU2M2UgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC00MCw2ICs0
MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2hhcmFjdGVyRGF0YTsKIGNsYXNz
IEVsZW1lbnQ7CitjbGFzcyBFdmVudENvbnRleHQ7CiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVy
OwogY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDsKIGNsYXNzIEtVUkw7CkBAIC03Myw3ICs3
NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRDYWxsRnVuY3Rpb24oY29uc3QgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSB3aWxsQ2hhbmdlWEhSUmVhZHlTdGF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgWE1MSHR0cFJlcXVlc3QqIHJlcXVlc3QpOwogICAgIHN0YXRpYyB2b2lkIGRpZENo
YW5nZVhIUlJlYWR5U3RhdGUoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7
Ci0gICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hF
dmVudChEb2N1bWVudCosIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3csIE5v
ZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGFpbmVyTm9kZT4gPiYgYW5jZXN0b3Jz
KTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxEaXNwYXRj
aEV2ZW50KERvY3VtZW50KiwgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywg
Tm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFuY2VzdG9ycyk7CiAgICAg
c3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdp
bGxEaXNwYXRjaEV2ZW50T25XaW5kb3coRnJhbWUqLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdp
bmRvdyogd2luZG93KTsKICAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50T25XaW5kb3co
Y29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CkBAIC0xMzAsNyArMTMxLDcg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRDYWxsRnVuY3Rpb25JbXBsKGNvbnN0IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgd2lsbENoYW5nZVhIUlJlYWR5U3RhdGVJbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqLCBYTUxIdHRwUmVxdWVzdCogcmVxdWVzdCk7CiAgICAgc3RhdGljIHZvaWQgZGlk
Q2hhbmdlWEhSUmVhZHlTdGF0ZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llJik7Ci0gICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRGlz
cGF0Y2hFdmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGNvbnN0IEV2ZW50JiBldmVudCwg
RE9NV2luZG93KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGFp
bmVyTm9kZT4gPiYgYW5jZXN0b3JzKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIHdpbGxEaXNwYXRjaEV2ZW50SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgY29u
c3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVj
dG9yPEV2ZW50Q29udGV4dD4mIGFuY2VzdG9ycyk7CiAgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0
Y2hFdmVudEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAg
c3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hFdmVudE9u
V2luZG93SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgY29uc3QgRXZlbnQmIGV2ZW50LCBET01X
aW5kb3cqIHdpbmRvdyk7CiAgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93
SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKQEAgLTIyNSw3ICsy
MjYsNiBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3RlckRh
dGFNb2RpZmllZChEb2N1bWVudCogZG9jdW1lbnQsCiAjZW5kaWYKIH0KIAotCiBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKQEAgLTI5Myw3ICsyOTMsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZENoYW5nZVhIUlJlYWR5U3RhdGUoY29uc3QgSW5zcGVjdG9ySW5z
dAogI2VuZGlmCiB9CiAKLWlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudChEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNv
bnN0IFZlY3RvcjxSZWZQdHI8Q29udGFpbmVyTm9kZT4gPiYgYW5jZXN0b3JzKQoraW5saW5lIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxEaXNwYXRjaEV2ZW50KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRXZlbnQmIGV2ZW50LCBE
T01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPEV2ZW50Q29udGV4dD4m
IGFuY2VzdG9ycykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckRv
Y3VtZW50KGRvY3VtZW50KSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwIGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMjk3MDI1OTFlZWJmZDMx
OWNhNGY5ZWEyMDg4YTUzZjE3MDU4MjBjOC4uNzFjYTljODFkMzVjZDZlYzYwMTQ4MDAwMzEzNjc5
ZTE5MGQ2YjllZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysr
IGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTE3NjYsOCArMTc2Niw2IEBAIHZv
aWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVNb3VzZUV2ZW50VGFyZ2V0Tm9kZShOb2RlKiB0YXJnZXRO
b2RlLCBjb25zdCBQbGF0Zm9ybU1vCiAgICAgICAgIC8vIElmIHRoZSB0YXJnZXQgbm9kZSBpcyBh
IHRleHQgbm9kZSwgZGlzcGF0Y2ggb24gdGhlIHBhcmVudCBub2RlIC0gcmRhcjovLzQxOTY2NDYK
ICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQtPmlzVGV4dE5vZGUoKSkKICAgICAgICAgICAg
IHJlc3VsdCA9IHJlc3VsdC0+cGFyZW50Tm9kZSgpOwotICAgICAgICBpZiAocmVzdWx0KQotICAg
ICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT5zaGFkb3dBbmNlc3Rvck5vZGUoKTsKICAgICB9CiAg
ICAgbV9ub2RlVW5kZXJNb3VzZSA9IHJlc3VsdDsKICNpZiBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNw
cAppbmRleCA2YzJjNGEyNzgzZWE5ZTM4YWFmZjk3ZGI5ZGI1NTYwZmJjZjRiMDRhLi4zZTliZGEw
N2RlY2IzYzRiOTIxNjFjNjBhZDQzNmQ3NzI0MTBiNmQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMzQ3
LDEzICszNDcsNiBAQCB2b2lkIFNWR0VsZW1lbnQ6OnVwZGF0ZUFuaW1hdGVkU1ZHQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiAgICAgY2xlYXJJc1N5bmNocm9uaXpp
bmdTVkdBdHRyaWJ1dGVzKCk7CiB9CiAKLUNvbnRhaW5lck5vZGUqIFNWR0VsZW1lbnQ6OmV2ZW50
UGFyZW50Tm9kZSgpCi17Ci0gICAgaWYgKENvbnRhaW5lck5vZGUqIHNoYWRvd1BhcmVudCA9IHNo
YWRvd1BhcmVudE5vZGUoKSkKLSAgICAgICAgcmV0dXJuIHNoYWRvd1BhcmVudDsKLSAgICByZXR1
cm4gU3R5bGVkRWxlbWVudDo6ZXZlbnRQYXJlbnROb2RlKCk7Ci19Ci0KIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggYi9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggNTE3NTE1ZjkzOTg1MzA0OWRhMTY3MDc0ZDNlZTNl
NDk4YmMzMGE2OC4uOTZlN2ZkN2FkNGQwOWVkODZiMzkzYTUxOGQ5OTc2MzQ5ODI3ZmQ5OSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuaApAQCAtOTksOCArOTksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
dmlydHVhbCBib29sIGlzU3VwcG9ydGVkKFN0cmluZ0ltcGwqIGZlYXR1cmUsIFN0cmluZ0ltcGwq
IHZlcnNpb24pIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgQ29udGFpbmVyTm9kZSogZXZlbnRQ
YXJlbnROb2RlKCk7Ci0KICAgICAgICAgdmlydHVhbCBib29sIG5lZWRzUGVuZGluZ1Jlc291cmNl
SGFuZGxpbmcoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBi
dWlsZFBlbmRpbmdSZXNvdXJjZSgpIHsgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72410</attachid>
            <date>2010-10-29 15:56:30 -0700</date>
            <delta_ts>2010-10-30 09:31:24 -0700</delta_ts>
            <desc>Patch for landing 2.0</desc>
            <filename>bug-46015-20101029155629.patch</filename>
            <type>text/plain</type>
            <size>46718</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxMDg1NWNiY2M2MzdlYmU0YmMwNGM4MDFlNDc3YzUzM2U3OTM3YmIyLi40Yjk0NzA1
NjQ4MTg1ZTkxY2RjZjYxYzhjZTBhNTg3NTA0YzlhYmZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMTAtMDEgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
c2hhZG93IERPTS1hd2FyZSBldmVudCB0YXJnZXRpbmcgYW5kIGludHJvZHVjZSBFdmVudENvbnRl
eHQgdG8gdHJhY2sgdGhlIGNvbnRleHQgb2YgZWFjaCBldmVudCBkaXNwYXRjaC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MDE1CisKKyAgICAgICAg
VHVuZWQgdGhlIHRlc3QgdG8gYmV0dGVyIHJlZmxlY3QgaXRzIHBvaW50OiB0aGUgZXZlbnQgc2hv
dWxkIGluZGVlZCBmaXJlIChpdCB1c2VkIHRvIGJlIHN3YWxsb3dlZCksCisgICAgICAgIGJ1dCBp
dHMgdGFyZ2V0IHNob3VsZCBiZSBhIG5vbi1zaGFkb3cgbm9kZS4KKworICAgICAgICAqIGZhc3Qv
ZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9zc2luZy5odG1sOiBNb2RpZmllZCB0aGUgdGVzdC4K
KwogMjAxMC0xMC0yOSAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbQ2hyb21pdW1dIFVucmV2aWV3ZWQgdGVzdCBleHBlY3RhdGlvbnMgdXBkYXRlLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2hhZG93LWJvdW5kYXJ5LWNyb3NzaW5n
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3Npbmcu
aHRtbAppbmRleCA2MjNlMDY3M2VjMWNmMzYyNTZmNWVjMTM2N2Q3Y2EzOWJhYmI0MTUzLi5lMDAy
MzMzMGUxZGMxNmM2N2RiOTAxMTE0MjQxYzYzYmIxZWRhMTFkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRtbApAQCAtMiwx
MSArMiwxMiBAQAogPGhlYWQ+CiAgICAgPHRpdGxlPjwvdGl0bGU+CiAgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICB2YXIgZmlyZWQgPSBmYWxzZTsKKyAgICAgICAg
dmFyIHN1Y2Nlc3M7CisgICAgICAgIHZhciB0YXJnZXQ7CiAKICAgICAgICAgZnVuY3Rpb24gc2Vs
ZWN0U3RhcnQoZXZlbnQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGZpcmVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIHN1Y2Nlc3MgPSBldmVudC50YXJnZXQgPT0gdGFyZ2V0OwogICAgICAgICB9CiAK
ICAgICAgICAgZnVuY3Rpb24gdGVzdCgpCkBAIC0xNSw3ICsxNiw3IEBACiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwogCi0gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRh
cmdldCIpOworICAgICAgICAgICAgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRh
cmdldCIpOwogICAgICAgICAgICAgdmFyIHggPSB0YXJnZXQub2Zmc2V0TGVmdCArIHRhcmdldC5v
ZmZzZXRXaWR0aCAvIDI7CiAgICAgICAgICAgICB2YXIgeSA9IHRhcmdldC5vZmZzZXRUb3AgKyB0
YXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjsKIApAQCAtMjMsNyArMjQsNyBAQAogICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CiAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVw
KCk7CiAKLSAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5l
clRleHQgPSBmaXJlZCA/ICJGQUlMIiA6ICJQQVNTIjsKKyAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lclRleHQgPSAhc3VjY2VzcyA/ICJGQUlMIiA6ICJQ
QVNTIjsKICAgICAgICAgfQogCiAgICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdHN0YXJ0
Iiwgc2VsZWN0U3RhcnQsIHRydWUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9BbmRyb2lkLm1rIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCmluZGV4IGVhMGMyOWVlM2QxMmQ2MzdkYzhkMGI4ZGIwY2IyYmM1
NzRkNzlmZjEuLjcyMTQ3ZjI5OWU3MzMxYThkY2RiMzZiMzM3NWQ1MzJmNGNiNDc0NzQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvQW5kcm9pZC5taworKysgYi9XZWJDb3JlL0FuZHJvaWQubWsKQEAgLTE5
Miw2ICsxOTIsNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NBTF9TUkNfRklMRVMpIFwKIAlk
b20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwIFwKIAlkb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50
LmNwcCBcCiAJZG9tL1doZWVsRXZlbnQuY3BwIFwKKwlkb20vV2luZG93RXZlbnRDb250ZXh0LmNw
cCBcCiAJZG9tL1hNTERvY3VtZW50UGFyc2VyLmNwcCBcCiAJZG9tL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAgXAogCWRvbS9YTUxEb2N1bWVudFBhcnNlclNjb3BlLmNwcCBcCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCAzMGZkOTlkNGEwNmZjM2VjZWE4NzQ1OWU3MTk2YzFlMmU4MDA2ZTk4Li5hMjEwODllOGFjODVk
N2ZhNmRjYTgyNDViZWNjNjkxODQ3OGY0N2UyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTgyNCw2ICs4MjQsNyBAQCBT
RVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL0VudGl0eVJlZmVyZW5jZS5jcHAKICAgICBkb20v
RXJyb3JFdmVudC5jcHAKICAgICBkb20vRXZlbnQuY3BwCisgICAgZG9tL0V2ZW50Q29udGV4dC5j
cHAKICAgICBkb20vRXZlbnROYW1lcy5jcHAKICAgICBkb20vRXZlbnRUYXJnZXQuY3BwCiAgICAg
ZG9tL0V4Y2VwdGlvbkJhc2UuY3BwCkBAIC04ODEsNiArODgyLDcgQEAgU0VUKFdlYkNvcmVfU09V
UkNFUwogICAgIGRvbS9XZWJLaXRBbmltYXRpb25FdmVudC5jcHAKICAgICBkb20vV2ViS2l0VHJh
bnNpdGlvbkV2ZW50LmNwcAogICAgIGRvbS9XaGVlbEV2ZW50LmNwcAorICAgIGRvbS9XaW5kb3dF
dmVudENvbnRleHQuY3BwCiAgICAgZG9tL1hNTERvY3VtZW50UGFyc2VyLmNwcAogICAgIGRvbS9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCiAgICAgZG9tL1hNTERvY3VtZW50UGFyc2VyU2Nv
cGUuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDVmNGI1ZWU1MTc4YWU3MzgzYzMzNmJlOGM3MDhhMmQyZTNmYzFlYzYuLjI5NDIwYWM3
ZDA0MTk0MmJlODJjYjcyN2IyOTdkODQ0MDAxMDA3NzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTAtMTAt
MDEgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgc2hhZG93IERP
TS1hd2FyZSBldmVudCB0YXJnZXRpbmcgYW5kIGludHJvZHVjZSBFdmVudENvbnRleHQgdG8gdHJh
Y2sgdGhlIGNvbnRleHQgb2YgZWFjaCBldmVudCBkaXNwYXRjaC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MDE1CisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIHRoZSBub3Rpb24gb2YgRXZlbnRDb250ZXh0IChhbmQgYSB2ZXJ5IHNpbWlsYXItYWN0
aW5nIFdpbmRvd0V2ZW50Q29udGV4dCwgc3BlY2lmaWNhbGx5CisgICAgICAgIGZvciBET01XaW5k
b3cpLCBhbiBhYnN0cmFjdGlvbiB0aGF0IGNhcnJpZXMgaW5mb3JtYXRpb24gYXJvdW5kIGRpc3Bh
dGNoaW5nIGFuIGV2ZW50IGZvciBhbnkgZ2l2ZW4gTm9kZS4KKworICAgICAgICBUaGlzIGFic3Ry
YWN0aW9uIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhhdCBldmVudHMsIGZpcmVkIGZyb20gc2hh
ZG93IERPTSBub2RlcyBhcmUgcHJvcGVybHkgcmV0YXJnZXRlZCB0bworICAgICAgICBhcHBlYXIg
YXMgaWYgdGhleSBhcmUgY29taW5nIGZyb20gdGhlaXIgaG9zdCwgdGh1cyBuZXZlciBleHBvc2lu
ZyB0aGUgc2hhZG93IERPTSBub2RlcyB0byB0aGUgd29ybGQgb3V0c2lkZS4KKworICAgICAgICAq
IEFuZHJvaWQubWs6IEFkZGVkIEV2ZW50Q29udGV4dCwgV2luZG93RXZlbnRDb250ZXh0IGZpbGVz
LgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBEaXR0by4KKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5hbTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJDb3JlLnBybzogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpub3RpZnlDaGlsZEluc2VydGVkKTogQ2hhbmdlZCB0byBiZSBzaGFkb3cgRE9N
LWF3YXJlLgorICAgICAgICAqIGRvbS9FdmVudENvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBkb20vRXZlbnRDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6Om1hcmtBbmNlc3RvcnNXaXRoQ2hpbGROZWVkc1N0eWxlUmVj
YWxjKTogQ2hhbmdlZCB0byBiZSBzaGFkb3cgRE9NLWF3YXJlLgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6cGFyZW50T3JIb3N0Tm9kZSk6IEFkZGVkIG5ldyBoZWxwZXIgbWV0aG9kLgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6ZW5jbG9zaW5nTGlua0V2ZW50UGFyZW50T3JTZWxmKTogQ2hhbmdl
ZCB0byBiZSBzaGFkb3cgRE9NLWF3YXJlLgorICAgICAgICAoV2ViQ29yZTo6ZXZlbnRUYXJnZXRS
ZXNwZWN0aW5nU1ZHVGFyZ2V0UnVsZXMpOiBDb2xsYXBzZWQgdHdvIGhlbHBlciBtZXRob2RzIGlu
dG8gb25lLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZXZlbnRBbmNlc3RvcnMpOiBSZWZhY3Rv
cmVkIHRvIGNvbGxlY3QgYSB2ZWN0b3Igb2YgRXZlbnRDb250ZXh0cy4KKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OnRvcEV2ZW50Q29udGV4dCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZXZl
bnRIYXNMaXN0ZW5lcnMpOiBDaGFuZ2VkIHRvIHVzZSBFdmVudENvbnRleHRzLgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hHZW5lcmljRXZlbnQpOiBEaXR0by4KKyAgICAgICAgKiBk
b20vTm9kZS5oOiBSZW1vdmVkIGV2ZW50UGFyZW50Tm9kZSB0aGF0J3Mgbm8gbG9uZ2VyIG5lZWRl
ZCwgYWRkZWQgcGFyZW50T3JIb3N0Tm9kZSBkZWNsLAorICAgICAgICAgICAgYW5kIGNoYW5nZWQg
c2lnbmF0dXJlIG9mIGV2ZW50QW5jZXN0b3JzIHRvIHVzZSBFdmVudENvbnRleHRzLgorICAgICAg
ICAqIGRvbS9UZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHQ6OmNyZWF0ZVJlbmRlcmVy
KTogQ2hhbmdlZCB0byBiZSBzaGFkb3cgRE9NLWF3YXJlLgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2Vu
dDo6Z2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKTogQ2hhbmdlZCB0byB1c2UgRXZlbnRDb250ZXh0
cy4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OnVwZGF0ZU1vdXNlRXZlbnRUYXJnZXROb2RlKTogUmVtb3ZlZCBjb2RlIHRo
YXQncyBubyBsb25nZXIgbmVjZXNzYXJ5LgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDog
UmVtb3ZlZCBldmVudFBhcmVudE5vZGUgdGhhdCdzIG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAg
ICogc3ZnL1NWR0VsZW1lbnQuaDogRGl0dG8uCisgICAgICAgICogZG9tL1dpbmRvd0V2ZW50Q29u
dGV4dC5jcHA6IEFkZGVkLgorICAgICAgICAqIGRvbS9XaW5kb3dFdmVudENvbnRleHQuaDogQWRk
ZWQuCisKIDIwMTAtMTAtMjggIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgYXAuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA2YzFiYzM1ZTk2NTQ0M2M1ZmQ4
ZWJmZmVjMTcwNDRiYTZhYTU4M2E4Li5iMjYyN2M4ZTA5OWUzOWY0MDViM2VjNWZiY2ZlZjhlMDU2
MmViNDg0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KQEAgLTExMzIsOCArMTEzMiwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVdlYkNvcmUvZG9tL0Vycm9yRXZlbnQuY3BwIFwKIAlXZWJDb3JlL2RvbS9FcnJvckV2ZW50
LmggXAogCVdlYkNvcmUvZG9tL0V2ZW50LmNwcCBcCi0JV2ViQ29yZS9kb20vRXZlbnRFeGNlcHRp
b24uaCBcCiAJV2ViQ29yZS9kb20vRXZlbnQuaCBcCisJV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0
LmNwcCBcCisJV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmggXAorCVdlYkNvcmUvZG9tL0V2ZW50
RXhjZXB0aW9uLmggXAogCVdlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaCBcCiAJV2ViQ29yZS9k
b20vRXZlbnROYW1lcy5jcHAgXAogCVdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBcCkBAIC0xMjYx
LDYgKzEyNjMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvZG9tL1dlYktpdFRy
YW5zaXRpb25FdmVudC5oIFwKIAlXZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcCBcCiAJV2ViQ29y
ZS9kb20vV2hlZWxFdmVudC5oIFwKKwlXZWJDb3JlL2RvbS9XaW5kb3dFdmVudENvbnRleHQuY3Bw
IFwKKwlXZWJDb3JlL2RvbS9XaW5kb3dFdmVudENvbnRleHQuaCBcCiAJV2ViQ29yZS9kb20vWE1M
RG9jdW1lbnRQYXJzZXIuY3BwIFwKIAlXZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5oIFwK
IAlXZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIFwKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOTM0ZGIx
Nzc2MjZkYWZlOGZiZTE1ODE0ZjgxODI4MDgzOWUxYjljMi4uY2I3ZGM0NjY5OGIwOGUzZWQyYjc0
OWM0NzA0YTc0MDIwOTQ0YmRjMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEyMDQsNiArMTIwNCw4IEBACiAgICAgICAgICAg
ICAnZG9tL0Vycm9yRXZlbnQuaCcsCiAgICAgICAgICAgICAnZG9tL0V2ZW50LmNwcCcsCiAgICAg
ICAgICAgICAnZG9tL0V2ZW50LmgnLAorICAgICAgICAgICAgJ2RvbS9FdmVudENvbnRleHQuY3Bw
JywKKyAgICAgICAgICAgICdkb20vRXZlbnRDb250ZXh0LmgnLAogICAgICAgICAgICAgJ2RvbS9F
dmVudEV4Y2VwdGlvbi5oJywKICAgICAgICAgICAgICdkb20vRXZlbnRMaXN0ZW5lci5oJywKICAg
ICAgICAgICAgICdkb20vRXZlbnROYW1lcy5jcHAnLApAQCAtMTMzOSw2ICsxMzQxLDggQEAKICAg
ICAgICAgICAgICdkb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmgnLAogICAgICAgICAgICAgJ2Rv
bS9XaGVlbEV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1doZWVsRXZlbnQuaCcsCisgICAg
ICAgICAgICAnZG9tL1dpbmRvd0V2ZW50Q29udGV4dC5jcHAnLAorICAgICAgICAgICAgJ2RvbS9X
aW5kb3dFdmVudENvbnRleHQuaCcsCiAgICAgICAgICAgICAnZG9tL1hNTERvY3VtZW50UGFyc2Vy
LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1hNTERvY3VtZW50UGFyc2VyLmgnLAogICAgICAgICAg
ICAgJ2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDEzMmQzNmRkOTk1NTIx
MDUzNTM3MTQxOThlZWMyZjc4MDUxYTMwODQuLmYxZDhjNmNhMThjZDliMDA2MGQ5M2JkOGZkMTdk
NDA4ZDc0NTFmZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLnBybwpAQCAtNzEzLDYgKzcxMyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9F
bnRpdHlSZWZlcmVuY2UuY3BwIFwKICAgICBkb20vRXJyb3JFdmVudC5jcHAgXAogICAgIGRvbS9F
dmVudC5jcHAgXAorICAgIGRvbS9FdmVudENvbnRleHQuY3BwIFwKICAgICBkb20vRXZlbnROYW1l
cy5jcHAgXAogICAgIGRvbS9FdmVudFRhcmdldC5jcHAgXAogICAgIGRvbS9FeGNlcHRpb25CYXNl
LmNwcCBcCkBAIC03NzMsNiArNzc0LDcgQEAgU09VUkNFUyArPSBcCiAgICAgZG9tL1dlYktpdEFu
aW1hdGlvbkV2ZW50LmNwcCBcCiAgICAgZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgXAog
ICAgIGRvbS9XaGVlbEV2ZW50LmNwcCBcCisgICAgZG9tL1dpbmRvd0V2ZW50Q29udGV4dC5jcHAg
XAogICAgIGRvbS9YTUxEb2N1bWVudFBhcnNlci5jcHAgXAogICAgIGRvbS9YTUxEb2N1bWVudFBh
cnNlclF0LmNwcCBcCiAgICAgZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmJj
MmUzNjJlNDMxYWJkOTQ1ZDc4NDFiMDEwZGRhYTVjMmIzNTI0YS4uZGJkOGNiNDJhNDBmZjU0Y2Jm
NzY4NTdlOWJiNWIxYTZjNDA0ZjMzMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTg4OSw3ICs4ODksMTEgQEAKIAkJNDEwQjdFNzIxMDQ1RkFCMDAwRDgy
MjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMEI3RTcxMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3Nh
Z2VFdmVudEN1c3RvbS5jcHAgKi87IH07CiAJCTQxMTA0NjQxMEZBMjIyQTYwMEJBNDM2QSAvKiBT
Y3JpcHRFdmVudExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTEwNDYzRjBGQTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5l
ci5oICovOyB9OwogCQk0MTEwNDY0MjBGQTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZlbnRMaXN0
ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTEwNDY0MDBGQTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgKi87IH07
CisJCTQxMjNFNTY5MTI3QjMwNDEwMDBGRUVBNyAvKiBXaW5kb3dFdmVudENvbnRleHQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjNFNTY3MTI3QjMw
NDEwMDBGRUVBNyAvKiBXaW5kb3dFdmVudENvbnRleHQuaCAqLzsgfTsKKwkJNDEyM0U1NkExMjdC
MzA0MTAwMEZFRUE3IC8qIFdpbmRvd0V2ZW50Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTIzRTU2ODEyN0IzMDQxMDAwRkVFQTcgLyog
V2luZG93RXZlbnRDb250ZXh0LmNwcCAqLzsgfTsKIAkJNDEyN0Q1MzcwRjhBQUIxRDAwRTQyNEY1
IC8qIFNjcmlwdFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0ZS5jcHAgKi87
IH07CisJCTQxMzhEMzM1MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzhEMzMzMTI0NDA1NDgw
MDMyM0QzMyAvKiBFdmVudENvbnRleHQuaCAqLzsgfTsKKwkJNDEzOEQzMzYxMjQ0MDU0ODAwMzIz
RDMzIC8qIEV2ZW50Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTM4RDMzNDEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmNw
cCAqLzsgfTsKIAkJNDE2MkE0NTAxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNv
bnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE2MkE0NEQxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwICov
OyB9OwogCQk0MTYyQTQ1MTEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MkE0
NEUxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuaCAqLzsgfTsKIAkJ
NDE2MkE0NTQxMDExNDVFMzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYy
QTQ1MzEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cCAqLzsgfTsKQEAgLTY5NTQsNyArNjk1OCwxMSBAQAogCQk0MTBCN0U3MTEwNDVGQUIwMDBEODIy
NEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTEwNDYzRjBGQTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5l
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRFdmVudExpc3RlbmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTA0NjQwMEZBMjIyQTYwMEJBNDM2
QSAvKiBTY3JpcHRFdmVudExpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNjcmlwdEV2ZW50TGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0MTIzRTU2NzEyN0IzMDQxMDAwRkVFQTcgLyogV2luZG93RXZlbnRDb250ZXh0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdpbmRvd0V2ZW50Q29udGV4dC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTIzRTU2ODEyN0IzMDQxMDAwRkVFQTcgLyog
V2luZG93RXZlbnRDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdpbmRvd0V2ZW50Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxMjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxMzhEMzMzMTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRDb250ZXh0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMzhEMzM0MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVu
dENvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXZlbnRD
b250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2MkE0NEQxMDExNDVB
RTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHA7IHBhdGggPSB3
b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTYyQTQ0RTEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0Lmg7IHBhdGggPSB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2MkE0NEYxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRl
ZFdvcmtlckNvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERlZGljYXRlZFdvcmtl
ckNvbnRleHQuaWRsOyBwYXRoID0gd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MTY2LDYgKzE4MTc0LDggQEAKIAkJCQk4
NTAzMUIyQjBBNDRFRkM3MDBGOTkyRTAgLyogRXZlbnQuY3BwICovLAogCQkJCTg1MDMxQjJDMEE0
NEVGQzcwMEY5OTJFMCAvKiBFdmVudC5oICovLAogCQkJCTE0RTgzNkQyMDlGODUxMjAwMEI4NUFF
NCAvKiBFdmVudC5pZGwgKi8sCisJCQkJNDEzOEQzMzQxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50
Q29udGV4dC5jcHAgKi8sCisJCQkJNDEzOEQzMzMxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29u
dGV4dC5oICovLAogCQkJCUJDNjBEOTA5MEQyQTE3Q0UwMEI5OTE4RiAvKiBFdmVudEV4Y2VwdGlv
bi5oICovLAogCQkJCUJDNjBEOTBBMEQyQTE3Q0UwMEI5OTE4RiAvKiBFdmVudEV4Y2VwdGlvbi5p
ZGwgKi8sCiAJCQkJOTM1RkJDNDQwOUJBMDBCOTAwRTIzMEIxIC8qIEV2ZW50TGlzdGVuZXIuaCAq
LywKQEAgLTE4MzI2LDYgKzE4MzM2LDggQEAKIAkJCQk4NTAzMUIzQTBBNDRFRkM3MDBGOTkyRTAg
LyogV2hlZWxFdmVudC5jcHAgKi8sCiAJCQkJODUwMzFCM0IwQTQ0RUZDNzAwRjk5MkUwIC8qIFdo
ZWVsRXZlbnQuaCAqLywKIAkJCQk5M0VFQzFGNzA5QzI4Nzc3MDBDNTE1RDEgLyogV2hlZWxFdmVu
dC5pZGwgKi8sCisJCQkJNDEyM0U1NjgxMjdCMzA0MTAwMEZFRUE3IC8qIFdpbmRvd0V2ZW50Q29u
dGV4dC5jcHAgKi8sCisJCQkJNDEyM0U1NjcxMjdCMzA0MTAwMEZFRUE3IC8qIFdpbmRvd0V2ZW50
Q29udGV4dC5oICovLAogCQkJCUY1MjNEMzA5MDJERTQ0NzYwMTg2MzVDQSAvKiBYTUxEb2N1bWVu
dFBhcnNlci5jcHAgKi8sCiAJCQkJRjUyM0QzMEEwMkRFNDQ3NjAxODYzNUNBIC8qIFhNTERvY3Vt
ZW50UGFyc2VyLmggKi8sCiAJCQkJNTRDNTBGN0EwRTgwMURGMzAwOTgzMkEwIC8qIFhNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHAgKi8sCkBAIC0xOTQ5MCw2ICsxOTUwMiw3IEBACiAJCQkJODk4
Nzg1NjAxMjJDQTA2NDAwM0FBQkRBIC8qIEVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAog
CQkJCTJFQ0Y3QUUyMTAxNjJCNTgwMDQyN0RFNyAvKiBFcnJvckV2ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NTAzMUI0MjBBNDRFRkM3MDBGOTkyRTAgLyogRXZlbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTQxMzhEMzM1MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNjBEOTBDMEQyQTE3Q0UwMEI5OTE4RiAvKiBFdmVudEV4Y2VwdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDMDlBNTMwQjA2NERCMzAwNUFCRDREIC8qIEV2ZW50SGFu
ZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1RkJDNDUwOUJBMDBCOTAwRTIzMEIxIC8qIEV2
ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjExNDYsNiArMjExNTksNyBAQAogCQkJ
CTg1MDMxQjUxMEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVlbEV2ZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk5MzgwRjQ3NDA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk5MzlCMDJFRjBFQTJEQkM0MDBDNTQ1NzAgLyogV2lkdGhJdGVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDEyM0U1NjkxMjdCMzA0MTAwMEZFRUE3IC8qIFdpbmRvd0V2ZW50Q29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4MjQzRTkwRDBDRkQ3NTAwNDYwQzhGIC8qIFdpbmRv
d0ZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUUxQkYwMDExNUZGNkZCMDA2RjUyQ0Eg
LyogV2luZG93c0tleWJvYXJkQ29kZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4MjAzQUEwMEVE
OEMzNTMwMEI4QjYxQSAvKiBXTUxBY2Nlc3NFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTIy
MTE4LDYgKzIyMTMyLDcgQEAKIAkJCQk4OTNDNDgwQzEyNDhCRDNBMDAyQjNEODYgLyogRW50cnlT
eW5jLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQ0Y3QUUxMTAxNjJCNTgwMDQyN0RFNyAvKiBF
cnJvckV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMxQjQxMEE0NEVGQzcwMEY5OTJF
MCAvKiBFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTM4RDMzNjEyNDQwNTQ4MDAzMjNE
MzMgLyogRXZlbnRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzQzA5QTgxMEIwNjRG
MDAwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNDMDlB
N0YwQjA2NEVFRjAwNUFCRDREIC8qIEV2ZW50SGFuZGxlck1hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTFDQTE5RTA1MERDMjU1OTUwMDY1QTk5NCAvKiBFdmVudExvb3BNYWMubW0gaW4gU291cmNl
cyAqLywKQEAgLTIzNzE4LDYgKzIzNzMzLDcgQEAKIAkJCQk5MzgwRjQ3MzA5QTExQUI0MDAxRkRC
MzQgLyogV2lkZ2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzODBGNDc4MDlBMTFBQ0MwMDFG
REIzNCAvKiBXaWRnZXRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzlCMDJFRTBFQTJEQkM0
MDBDNTQ1NzAgLyogV2lkdGhJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTIzRTU2
QTEyN0IzMDQxMDAwRkVFQTcgLyogV2luZG93RXZlbnRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDODI0M0U4MEQwQ0ZENzUwMDQ2MEM4RiAvKiBXaW5kb3dGZWF0dXJlcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwODIwM0E5RjBFRDhDMzUzMDBCOEI2MUEgLyogV01MQWNjZXNzRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwODhDOTc1MTBFQ0I2RTI4MDAwNTM0QkEgLyog
V01MQUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmNwcCBiL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IGZj
MzM1MTkyNDU2MTcyZjc5YzEzNGJhNjE4YzI3ZWZkM2Y2YjE4MTQuLmI0YmRiN2Y5MWM4OTljYTg0
N2ZlYmRiMjc4MjYzZmZlNzE5ZTMwNmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC0xMDA1LDcg
KzEwMDUsOCBAQCBzdGF0aWMgdm9pZCBub3RpZnlDaGlsZEluc2VydGVkKE5vZGUqIGNoaWxkKQog
ICAgIFJlZlB0cjxOb2RlPiBjID0gY2hpbGQ7CiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVu
dCA9IGNoaWxkLT5kb2N1bWVudCgpOwogCi0gICAgaWYgKGMtPnBhcmVudE5vZGUoKSAmJiBjLT5w
YXJlbnROb2RlKCktPmluRG9jdW1lbnQoKSkKKyAgICBOb2RlKiBwYXJlbnRPckhvc3ROb2RlID0g
Yy0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgIGlmIChwYXJlbnRPckhvc3ROb2RlICYmIHBhcmVu
dE9ySG9zdE5vZGUtPmluRG9jdW1lbnQoKSkKICAgICAgICAgYy0+aW5zZXJ0ZWRJbnRvRG9jdW1l
bnQoKTsKICAgICBlbHNlCiAgICAgICAgIGMtPmluc2VydGVkSW50b1RyZWUodHJ1ZSk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwIGIvV2ViQ29yZS9kb20vRXZlbnRD
b250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTVjNTIxMGFhZWY2Yjk0MWJiZGU1ZGUyOTVjYmEzMzlk
MTQyZGY1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmNwcApA
QCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRXZlbnRDb250ZXh0LmgiCisKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiTm9kZS5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0V2ZW50Q29udGV4dDo6RXZlbnRDb250ZXh0KFBhc3NSZWZQ
dHI8Tm9kZT4gbm9kZSwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gY3VycmVudFRhcmdldCwgUGFz
c1JlZlB0cjxFdmVudFRhcmdldD4gdGFyZ2V0KQorICAgIDogbV9ub2RlKG5vZGUpCisgICAgLCBt
X2N1cnJlbnRUYXJnZXQoY3VycmVudFRhcmdldCkKKyAgICAsIG1fdGFyZ2V0KHRhcmdldCkKK3sK
K30KKwordm9pZCBFdmVudENvbnRleHQ6OmhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KiBldmVudCkg
Y29uc3QKK3sKKyAgICBldmVudC0+c2V0VGFyZ2V0KG1fdGFyZ2V0LmdldCgpKTsKKyAgICBldmVu
dC0+c2V0Q3VycmVudFRhcmdldChtX2N1cnJlbnRUYXJnZXQuZ2V0KCkpOworICAgIG1fbm9kZS0+
aGFuZGxlTG9jYWxFdmVudHMoZXZlbnQpOworfQorCit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9FdmVudENvbnRleHQuaCBiL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjliYWI5ZDQxNjJjMzViNjJjZmQ3MDYyMzZlZTFmNTQ3YmRkMjk3NGIKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuaApAQCAtMCwwICsxLDY1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoK
KyAqLworCisjaWZuZGVmIEV2ZW50Q29udGV4dF9oCisjZGVmaW5lIEV2ZW50Q29udGV4dF9oCisK
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
RXZlbnRUYXJnZXQ7CitjbGFzcyBFdmVudDsKK2NsYXNzIE5vZGU7CisKK2NsYXNzIEV2ZW50Q29u
dGV4dCB7CitwdWJsaWM6CisgICAgLy8gRklYTUU6IFVzZSBDb250YWluZXJOb2RlIGluc3RlYWQg
b2YgTm9kZS4KKyAgICBFdmVudENvbnRleHQoUGFzc1JlZlB0cjxOb2RlPiwgUGFzc1JlZlB0cjxF
dmVudFRhcmdldD4gY3VycmVudFRhcmdldCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gdGFyZ2V0
KTsKKworICAgIE5vZGUqIG5vZGUoKSBjb25zdDsKKyAgICBFdmVudFRhcmdldCogdGFyZ2V0KCkg
Y29uc3Q7CisgICAgdm9pZCBoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCopIGNvbnN0OworCitwcml2
YXRlOgorICAgIFJlZlB0cjxOb2RlPiBtX25vZGU7CisgICAgUmVmUHRyPEV2ZW50VGFyZ2V0PiBt
X2N1cnJlbnRUYXJnZXQ7CisgICAgUmVmUHRyPEV2ZW50VGFyZ2V0PiBtX3RhcmdldDsKK307CisK
K2lubGluZSBOb2RlKiBFdmVudENvbnRleHQ6Om5vZGUoKSBjb25zdAoreworICAgIHJldHVybiBt
X25vZGUuZ2V0KCk7Cit9CisKK2lubGluZSBFdmVudFRhcmdldCogRXZlbnRDb250ZXh0Ojp0YXJn
ZXQoKSBjb25zdAoreworICAgIHJldHVybiBtX3RhcmdldC5nZXQoKTsKK30KKworfQorCisjZW5k
aWYgLy8gRXZlbnRDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIv
V2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggZTQ1YmFhNDk1NzAzNTAwNzRhNGZlMTgwMDcyMDA0
ZGFiODFiNjBmMy4uZmY3ODU2YWE2YTJjODY3NzlmODhiOGRkODI2NzE2OTRhNDNiODFjYiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9kb20vTm9kZS5jcHAK
QEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJEeW5hbWljTm9kZUxpc3QuaCIKICNpbmNsdWRl
ICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudENvbnRleHQu
aCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5o
IgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKQEAgLTgwLDYgKzgxLDcgQEAKICNpbmNsdWRl
ICJXZWJLaXRBbmltYXRpb25FdmVudC5oIgogI2luY2x1ZGUgIldlYktpdFRyYW5zaXRpb25FdmVu
dC5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJXaW5kb3dFdmVudENvbnRl
eHQuaCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTczNCw5ICs3MzYsOSBAQCBpbmxpbmUgdm9pZCBO
b2RlOjpzZXRTdHlsZUNoYW5nZShTdHlsZUNoYW5nZVR5cGUgY2hhbmdlVHlwZSkKIAogaW5saW5l
IHZvaWQgTm9kZTo6bWFya0FuY2VzdG9yc1dpdGhDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKQogewot
ICAgIGZvciAoQ29udGFpbmVyTm9kZSogcCA9IHBhcmVudE5vZGUoKTsgcCAmJiAhcC0+Y2hpbGRO
ZWVkc1N0eWxlUmVjYWxjKCk7IHAgPSBwLT5wYXJlbnROb2RlKCkpCisgICAgZm9yIChDb250YWlu
ZXJOb2RlKiBwID0gcGFyZW50T3JIb3N0Tm9kZSgpOyBwICYmICFwLT5jaGlsZE5lZWRzU3R5bGVS
ZWNhbGMoKTsgcCA9IHAtPnBhcmVudE9ySG9zdE5vZGUoKSkKICAgICAgICAgcC0+c2V0Q2hpbGRO
ZWVkc1N0eWxlUmVjYWxjKCk7Ci0gICAgCisKICAgICBpZiAoZG9jdW1lbnQoKS0+Y2hpbGROZWVk
c1N0eWxlUmVjYWxjKCkpCiAgICAgICAgIGRvY3VtZW50KCktPnNjaGVkdWxlU3R5bGVSZWNhbGMo
KTsKIH0KQEAgLTEzMjEsNyArMTMyMyw3IEBAIHZvaWQgTm9kZTo6Y3JlYXRlUmVuZGVyZXJJZk5l
ZWRlZCgpCiAKICAgICBBU1NFUlQoIXJlbmRlcmVyKCkpOwogICAgIAotICAgIENvbnRhaW5lck5v
ZGUqIHBhcmVudCA9IHBhcmVudE5vZGUoKTsgICAgCisgICAgQ29udGFpbmVyTm9kZSogcGFyZW50
ID0gcGFyZW50T3JIb3N0Tm9kZSgpOwogICAgIEFTU0VSVChwYXJlbnQpOwogICAgIAogICAgIFJl
bmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIgPSBwYXJlbnQtPnJlbmRlcmVyKCk7CkBAIC0yMjM5
LDE0ICsyMjQxLDkgQEAgdm9pZCBOb2RlOjpnZXRTdWJyZXNvdXJjZVVSTHMoTGlzdEhhc2hTZXQ8
S1VSTD4mIHVybHMpIGNvbnN0CiAgICAgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMp
OwogfQogCi1Db250YWluZXJOb2RlKiBOb2RlOjpldmVudFBhcmVudE5vZGUoKQotewotICAgIHJl
dHVybiBwYXJlbnROb2RlKCk7Ci19Ci0KIE5vZGUqIE5vZGU6OmVuY2xvc2luZ0xpbmtFdmVudFBh
cmVudE9yU2VsZigpCiB7Ci0gICAgZm9yIChOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9
IG5vZGUtPmV2ZW50UGFyZW50Tm9kZSgpKSB7CisgICAgZm9yIChOb2RlKiBub2RlID0gdGhpczsg
bm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgewogICAgICAgICAvLyBGb3Ig
aW1hZ2VtYXBzLCB0aGUgZW5jbG9zaW5nIGxpbmsgbm9kZSBpcyB0aGUgYXNzb2NpYXRlZCBhcmVh
IGVsZW1lbnQgbm90IHRoZSBpbWFnZSBpdHNlbGYuCiAgICAgICAgIC8vIFNvIHdlIGRvbid0IGxl
dCBpbWFnZXMgYmUgdGhlIGVuY2xvc2luZ0xpbmtOb2RlLCBldmVuIHRob3VnaCBpc0xpbmsgc29t
ZXRpbWVzIHJldHVybnMgdHJ1ZQogICAgICAgICAvLyBmb3IgdGhlbS4KQEAgLTI0ODQsMTIgKzI0
ODEsMTMgQEAgdm9pZCBOb2RlOjpoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCogZXZlbnQpCiAgICAg
ZmlyZUV2ZW50TGlzdGVuZXJzKGV2ZW50KTsKIH0KIAotI2lmIEVOQUJMRShTVkcpCi1zdGF0aWMg
aW5saW5lIFNWR0VsZW1lbnRJbnN0YW5jZSogZXZlbnRUYXJnZXRBc1NWR0VsZW1lbnRJbnN0YW5j
ZShOb2RlKiByZWZlcmVuY2VOb2RlKQorc3RhdGljIGlubGluZSBFdmVudFRhcmdldCogZXZlbnRU
YXJnZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0UnVsZXMoTm9kZSogcmVmZXJlbmNlTm9kZSkKIHsKICAg
ICBBU1NFUlQocmVmZXJlbmNlTm9kZSk7CisKKyNpZiBFTkFCTEUoU1ZHKQogICAgIGlmICghcmVm
ZXJlbmNlTm9kZS0+aXNTVkdFbGVtZW50KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gcmVmZXJlbmNlTm9kZTsKIAogICAgIC8vIFNwZWM6IFRoZSBldmVudCBoYW5kbGluZyBm
b3IgdGhlIG5vbi1leHBvc2VkIHRyZWUgd29ya3MgYXMgaWYgdGhlIHJlZmVyZW5jZWQgZWxlbWVu
dCBoYWQgYmVlbiB0ZXh0dWFsbHkgaW5jbHVkZWQKICAgICAvLyBhcyBhIGRlZXBseSBjbG9uZWQg
Y2hpbGQgb2YgdGhlICd1c2UnIGVsZW1lbnQsIGV4Y2VwdCB0aGF0IGV2ZW50cyBhcmUgZGlzcGF0
Y2hlZCB0byB0aGUgU1ZHRWxlbWVudEluc3RhbmNlIG9iamVjdHMKQEAgLTI1MDMsMzYgKzI1MDEs
MzkgQEAgc3RhdGljIGlubGluZSBTVkdFbGVtZW50SW5zdGFuY2UqIGV2ZW50VGFyZ2V0QXNTVkdF
bGVtZW50SW5zdGFuY2UoTm9kZSogcmVmZXJlbmMKICAgICAgICAgaWYgKFNWR0VsZW1lbnRJbnN0
YW5jZSogaW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxTVkdVc2VFbGVtZW50Kj4oc2hhZG93VHJlZVBh
cmVudEVsZW1lbnQpLT5pbnN0YW5jZUZvclNoYWRvd1RyZWVFbGVtZW50KHJlZmVyZW5jZU5vZGUp
KQogICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KLQotICAgIHJldHVybiAwOwot
fQotI2VuZGlmCi0KLXN0YXRpYyBpbmxpbmUgRXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0UmVzcGVj
dGluZ1NWR1RhcmdldFJ1bGVzKE5vZGUqIHJlZmVyZW5jZU5vZGUpCi17Ci0gICAgQVNTRVJUKHJl
ZmVyZW5jZU5vZGUpOwotCi0jaWYgRU5BQkxFKFNWRykKLSAgICBpZiAoU1ZHRWxlbWVudEluc3Rh
bmNlKiBpbnN0YW5jZSA9IGV2ZW50VGFyZ2V0QXNTVkdFbGVtZW50SW5zdGFuY2UocmVmZXJlbmNl
Tm9kZSkpIHsKLSAgICAgICAgQVNTRVJUKGluc3RhbmNlLT5zaGFkb3dUcmVlRWxlbWVudCgpID09
IHJlZmVyZW5jZU5vZGUpOwotICAgICAgICByZXR1cm4gaW5zdGFuY2U7Ci0gICAgfQogI2VuZGlm
CiAKICAgICByZXR1cm4gcmVmZXJlbmNlTm9kZTsKIH0KIAotdm9pZCBOb2RlOjpldmVudEFuY2Vz
dG9ycyhWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4gJmFuY2VzdG9ycykKK3ZvaWQgTm9k
ZTo6Z2V0RXZlbnRBbmNlc3RvcnMoVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFuY2VzdG9ycywgRXZl
bnRUYXJnZXQqIG9yaWdpbmFsVGFyZ2V0KQogewotICAgIGlmIChpbkRvY3VtZW50KCkpIHsKLSAg
ICAgICAgZm9yIChDb250YWluZXJOb2RlKiBhbmNlc3RvciA9IGV2ZW50UGFyZW50Tm9kZSgpOyBh
bmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+ZXZlbnRQYXJlbnROb2RlKCkpIHsKKyAgICBp
ZiAoIWluRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXZlbnRUYXJnZXQqIHRh
cmdldCA9IG9yaWdpbmFsVGFyZ2V0OworICAgIE5vZGUqIGFuY2VzdG9yID0gdGhpczsKKyAgICBi
b29sIHNob3VsZFNraXBOZXh0QW5jZXN0b3IgPSBmYWxzZTsKKyAgICB3aGlsZSAodHJ1ZSkgewor
ICAgICAgICBpZiAoYW5jZXN0b3ItPmlzU2hhZG93Tm9kZSgpKSB7CisgICAgICAgICAgICBhbmNl
c3RvciA9IGFuY2VzdG9yLT5zaGFkb3dQYXJlbnROb2RlKCk7CisgICAgICAgICAgICBpZiAoIXNo
b3VsZFNraXBOZXh0QW5jZXN0b3IpCisgICAgICAgICAgICAgICAgdGFyZ2V0ID0gYW5jZXN0b3I7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50
Tm9kZSgpOworCisgICAgICAgIGlmICghYW5jZXN0b3IpCisgICAgICAgICAgICByZXR1cm47CisK
ICNpZiBFTkFCTEUoU1ZHKQotICAgICAgICAgICAgLy8gU2tpcCA8dXNlPiBzaGFkb3cgdHJlZSBl
bGVtZW50cy4KLSAgICAgICAgICAgIGlmIChhbmNlc3Rvci0+aXNTVkdFbGVtZW50KCkgJiYgYW5j
ZXN0b3ItPmlzU2hhZG93Tm9kZSgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAvLyBTa2lwIFNWR1NoYWRvd1RyZWVSb290RWxlbWVudC4KKyAgICAgICAgc2hvdWxkU2tpcE5l
eHRBbmNlc3RvciA9IGFuY2VzdG9yLT5pc1NWR0VsZW1lbnQoKSAmJiBhbmNlc3Rvci0+aXNTaGFk
b3dOb2RlKCk7CisgICAgICAgIGlmIChzaG91bGRTa2lwTmV4dEFuY2VzdG9yKQorICAgICAgICAg
ICAgY29udGludWU7CiAjZW5kaWYKLSAgICAgICAgICAgIGFuY2VzdG9ycy5hcHBlbmQoYW5jZXN0
b3IpOwotICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBVbnJvbGwgdGhlIGV4dHJhIGxvb3Ag
aW5zaWRlIGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1NWR1RhcmdldFJ1bGVzIGludG8gdGhpcyBsb29w
LgorICAgICAgICBhbmNlc3RvcnMuYXBwZW5kKEV2ZW50Q29udGV4dChhbmNlc3RvciwgZXZlbnRU
YXJnZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0UnVsZXMoYW5jZXN0b3IpLCB0YXJnZXQpKTsKKwogICAg
IH0KIH0KIApAQCAtMjU0Nyw2ICsyNTQ4LDExIEBAIGJvb2wgTm9kZTo6ZGlzcGF0Y2hFdmVudChQ
YXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCkKICAgICByZXR1cm4gZGlzcGF0Y2hHZW5lcmljRXZl
bnQoZXZlbnQucmVsZWFzZSgpKTsKIH0KIAorc3RhdGljIGNvbnN0IEV2ZW50Q29udGV4dCogdG9w
RXZlbnRDb250ZXh0KGNvbnN0IFZlY3RvcjxFdmVudENvbnRleHQ+JiBhbmNlc3RvcnMpCit7Cisg
ICAgcmV0dXJuIGFuY2VzdG9ycy5pc0VtcHR5KCkgPyAwIDogJihhbmNlc3RvcnMubGFzdCgpKTsK
K30KKwogYm9vbCBOb2RlOjpkaXNwYXRjaEdlbmVyaWNFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBw
cnBFdmVudCkKIHsKICAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50KHBycEV2ZW50KTsKQEAgLTI1NTks
MjAgKzI1NjUsMTMgQEAgYm9vbCBOb2RlOjpkaXNwYXRjaEdlbmVyaWNFdmVudChQYXNzUmVmUHRy
PEV2ZW50PiBwcnBFdmVudCkKICAgICAvLyBJZiB0aGUgbm9kZSBpcyBub3QgaW4gYSBkb2N1bWVu
dCBqdXN0IHNlbmQgdGhlIGV2ZW50IHRvIGl0LgogICAgIC8vIEJlIHN1cmUgdG8gcmVmIGFsbCBv
ZiBub2RlcyBzaW5jZSBldmVudCBoYW5kbGVycyBjb3VsZCByZXN1bHQgaW4gdGhlIGxhc3QgcmVm
ZXJlbmNlIGdvaW5nIGF3YXkuCiAgICAgUmVmUHRyPE5vZGU+IHRoaXNOb2RlKHRoaXMpOwotICAg
IFZlY3RvcjxSZWZQdHI8Q29udGFpbmVyTm9kZT4gPiBhbmNlc3RvcnM7Ci0gICAgZXZlbnRBbmNl
c3RvcnMoYW5jZXN0b3JzKTsKKyAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IG9yaWdpbmFsVGFyZ2V0
ID0gZXZlbnQtPnRhcmdldCgpOworICAgIFZlY3RvcjxFdmVudENvbnRleHQ+IGFuY2VzdG9yczsK
KyAgICBnZXRFdmVudEFuY2VzdG9ycyhhbmNlc3RvcnMsIG9yaWdpbmFsVGFyZ2V0LmdldCgpKTsK
IAotICAgIC8vIFNldCB1cCBhIHBvaW50ZXIgdG8gaW5kaWNhdGUgd2hldGhlciAvIHdoZXJlIHRv
IGRpc3BhdGNoIHdpbmRvdyBldmVudHMuCi0gICAgLy8gV2UgZG9uJ3QgZGlzcGF0Y2ggbG9hZCBl
dmVudHMgdG8gdGhlIHdpbmRvdy4gVGhhdCBxdWlyayB3YXMgb3JpZ2luYWxseQotICAgIC8vIGFk
ZGVkIGJlY2F1c2UgTW96aWxsYSBkb2Vzbid0IHByb3BhZ2F0ZSBsb2FkIGV2ZW50cyB0byB0aGUg
d2luZG93IG9iamVjdC4KLSAgICBET01XaW5kb3cqIHRhcmdldEZvcldpbmRvd0V2ZW50cyA9IDA7
Ci0gICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLmxvYWRFdmVudCkgewotICAg
ICAgICBOb2RlKiB0b3BMZXZlbENvbnRhaW5lciA9IGFuY2VzdG9ycy5pc0VtcHR5KCkgPyB0aGlz
IDogYW5jZXN0b3JzLmxhc3QoKS5nZXQoKTsKLSAgICAgICAgaWYgKHRvcExldmVsQ29udGFpbmVy
LT5pc0RvY3VtZW50Tm9kZSgpKQotICAgICAgICAgICAgdGFyZ2V0Rm9yV2luZG93RXZlbnRzID0g
c3RhdGljX2Nhc3Q8RG9jdW1lbnQqPih0b3BMZXZlbENvbnRhaW5lciktPmRvbVdpbmRvdygpOwot
ICAgIH0KKyAgICBXaW5kb3dFdmVudENvbnRleHQgd2luZG93Q29udGV4dChldmVudC5nZXQoKSwg
dGhpcywgdG9wRXZlbnRDb250ZXh0KGFuY2VzdG9ycykpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERp
c3BhdGNoRXZlbnQoZG9jdW1lbnQoKSwgKmV2ZW50LCB0YXJnZXRGb3JXaW5kb3dFdmVudHMsIHRo
aXMsIGFuY2VzdG9ycyk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tp
ZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnQoZG9jdW1lbnQo
KSwgKmV2ZW50LCB3aW5kb3dDb250ZXh0LndpbmRvdygpLCB0aGlzLCBhbmNlc3RvcnMpOwogCiAg
ICAgLy8gR2l2ZSB0aGUgdGFyZ2V0IG5vZGUgYSBjaGFuY2UgdG8gZG8gc29tZSB3b3JrIGJlZm9y
ZSBET00gZXZlbnQgaGFuZGxlcnMgZ2V0IGEgY3JhY2suCiAgICAgdm9pZCogZGF0YSA9IHByZURp
c3BhdGNoRXZlbnRIYW5kbGVyKGV2ZW50LmdldCgpKTsKQEAgLTI1ODIsMjIgKzI1ODEsMTcgQEAg
Ym9vbCBOb2RlOjpkaXNwYXRjaEdlbmVyaWNFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVu
dCkKICAgICAvLyBUcmlnZ2VyIGNhcHR1cmluZyBldmVudCBoYW5kbGVycywgc3RhcnRpbmcgYXQg
dGhlIHRvcCBhbmQgd29ya2luZyBvdXIgd2F5IGRvd24uCiAgICAgZXZlbnQtPnNldEV2ZW50UGhh
c2UoRXZlbnQ6OkNBUFRVUklOR19QSEFTRSk7CiAKLSAgICBpZiAodGFyZ2V0Rm9yV2luZG93RXZl
bnRzKSB7Ci0gICAgICAgIGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KHRhcmdldEZvcldpbmRvd0V2
ZW50cyk7Ci0gICAgICAgIHRhcmdldEZvcldpbmRvd0V2ZW50cy0+ZmlyZUV2ZW50TGlzdGVuZXJz
KGV2ZW50LmdldCgpKTsKLSAgICAgICAgaWYgKGV2ZW50LT5wcm9wYWdhdGlvblN0b3BwZWQoKSkK
LSAgICAgICAgICAgIGdvdG8gZG9uZURpc3BhdGNoaW5nOwotICAgIH0KKyAgICBpZiAod2luZG93
Q29udGV4dC5oYW5kbGVMb2NhbEV2ZW50cyhldmVudC5nZXQoKSkgJiYgZXZlbnQtPnByb3BhZ2F0
aW9uU3RvcHBlZCgpKQorICAgICAgICBnb3RvIGRvbmVEaXNwYXRjaGluZzsKKwogICAgIGZvciAo
c2l6ZV90IGkgPSBhbmNlc3RvcnMuc2l6ZSgpOyBpOyAtLWkpIHsKLSAgICAgICAgQ29udGFpbmVy
Tm9kZSogYW5jZXN0b3IgPSBhbmNlc3RvcnNbaSAtIDFdLmdldCgpOwotICAgICAgICBldmVudC0+
c2V0Q3VycmVudFRhcmdldChldmVudFRhcmdldFJlc3BlY3RpbmdTVkdUYXJnZXRSdWxlcyhhbmNl
c3RvcikpOwotICAgICAgICBhbmNlc3Rvci0+aGFuZGxlTG9jYWxFdmVudHMoZXZlbnQuZ2V0KCkp
OworICAgICAgICBhbmNlc3RvcnNbaSAtIDFdLmhhbmRsZUxvY2FsRXZlbnRzKGV2ZW50LmdldCgp
KTsKICAgICAgICAgaWYgKGV2ZW50LT5wcm9wYWdhdGlvblN0b3BwZWQoKSkKICAgICAgICAgICAg
IGdvdG8gZG9uZURpc3BhdGNoaW5nOwogICAgIH0KIAogICAgIGV2ZW50LT5zZXRFdmVudFBoYXNl
KEV2ZW50OjpBVF9UQVJHRVQpOwotCisgICAgZXZlbnQtPnNldFRhcmdldChvcmlnaW5hbFRhcmdl
dC5nZXQoKSk7CiAgICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQoZXZlbnRUYXJnZXRSZXNwZWN0
aW5nU1ZHVGFyZ2V0UnVsZXModGhpcykpOwogICAgIGhhbmRsZUxvY2FsRXZlbnRzKGV2ZW50Lmdl
dCgpKTsKICAgICBpZiAoZXZlbnQtPnByb3BhZ2F0aW9uU3RvcHBlZCgpKQpAQCAtMjYwOSwyMSAr
MjYwMywxNSBAQCBib29sIE5vZGU6OmRpc3BhdGNoR2VuZXJpY0V2ZW50KFBhc3NSZWZQdHI8RXZl
bnQ+IHBycEV2ZW50KQogCiAgICAgICAgIHNpemVfdCBzaXplID0gYW5jZXN0b3JzLnNpemUoKTsK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAg
IENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0gYW5jZXN0b3JzW2ldLmdldCgpOwotICAgICAgICAg
ICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQoZXZlbnRUYXJnZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0
UnVsZXMoYW5jZXN0b3IpKTsKLSAgICAgICAgICAgIGFuY2VzdG9yLT5oYW5kbGVMb2NhbEV2ZW50
cyhldmVudC5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoZXZlbnQtPnByb3BhZ2F0aW9uU3RvcHBl
ZCgpIHx8IGV2ZW50LT5jYW5jZWxCdWJibGUoKSkKLSAgICAgICAgICAgICAgICBnb3RvIGRvbmVE
aXNwYXRjaGluZzsKLSAgICAgICAgfQotICAgICAgICBpZiAodGFyZ2V0Rm9yV2luZG93RXZlbnRz
KSB7Ci0gICAgICAgICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh0YXJnZXRGb3JXaW5kb3dF
dmVudHMpOwotICAgICAgICAgICAgdGFyZ2V0Rm9yV2luZG93RXZlbnRzLT5maXJlRXZlbnRMaXN0
ZW5lcnMoZXZlbnQuZ2V0KCkpOworICAgICAgICAgICAgYW5jZXN0b3JzW2ldLmhhbmRsZUxvY2Fs
RXZlbnRzKGV2ZW50LmdldCgpKTsKICAgICAgICAgICAgIGlmIChldmVudC0+cHJvcGFnYXRpb25T
dG9wcGVkKCkgfHwgZXZlbnQtPmNhbmNlbEJ1YmJsZSgpKQogICAgICAgICAgICAgICAgIGdvdG8g
ZG9uZURpc3BhdGNoaW5nOwogICAgICAgICB9CisgICAgICAgIHdpbmRvd0NvbnRleHQuaGFuZGxl
TG9jYWxFdmVudHMoZXZlbnQuZ2V0KCkpOwogICAgIH0KIAogZG9uZURpc3BhdGNoaW5nOgorICAg
IGV2ZW50LT5zZXRUYXJnZXQob3JpZ2luYWxUYXJnZXQuZ2V0KCkpOwogICAgIGV2ZW50LT5zZXRD
dXJyZW50VGFyZ2V0KDApOwogICAgIGV2ZW50LT5zZXRFdmVudFBoYXNlKDApOwogCkBAIC0yNjQ0
LDggKzI2MzIsNyBAQCBkb25lRGlzcGF0Y2hpbmc6CiAgICAgICAgIGlmIChldmVudC0+YnViYmxl
cygpKSB7CiAgICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IGFuY2VzdG9ycy5zaXplKCk7CiAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAg
ICAgIENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0gYW5jZXN0b3JzW2ldLmdldCgpOwotICAgICAg
ICAgICAgICAgIGFuY2VzdG9yLT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50LmdldCgpKTsKKyAg
ICAgICAgICAgICAgICBhbmNlc3RvcnNbaV0ubm9kZSgpLT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2
ZW50LmdldCgpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIWV2ZW50LT5kZWZhdWx0UHJldmVu
dGVkKCkpOwogICAgICAgICAgICAgICAgIGlmIChldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKICAg
ICAgICAgICAgICAgICAgICAgZ290byBkb25lV2l0aERlZmF1bHQ7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9Ob2RlLmggYi9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggM2M2YzE5OTcxMWIzNGUx
YTAwYTlkYTgwMTFhZjVhNWFlNGRjNjRkNS4uZGFkMjU4NWVmYzZjNTI4MTQzNDZlZDY1NGVmYzFl
NDY1OTJiZTliYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1dlYkNvcmUv
ZG9tL05vZGUuaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIER5bmFt
aWNOb2RlTGlzdDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBFdmVudDsKK2NsYXNzIEV2ZW50Q29u
dGV4dDsKIGNsYXNzIEV2ZW50TGlzdGVuZXI7CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRnJh
bWU7CkBAIC0yMDQsMTYgKzIwNSwxNCBAQCBwdWJsaWM6CiAgICAgTm9kZSogc2hhZG93QW5jZXN0
b3JOb2RlKCk7CiAgICAgTm9kZSogc2hhZG93VHJlZVJvb3ROb2RlKCk7CiAgICAgYm9vbCBpc0lu
U2hhZG93VHJlZSgpOwotCi0gICAgLy8gVGhlIG5vZGUncyBwYXJlbnQgZm9yIHRoZSBwdXJwb3Nl
IG9mIGV2ZW50IGNhcHR1cmUgYW5kIGJ1YmJsaW5nLgotICAgIHZpcnR1YWwgQ29udGFpbmVyTm9k
ZSogZXZlbnRQYXJlbnROb2RlKCk7CisgICAgLy8gTm9kZSdzIHBhcmVudCBvciBzaGFkb3cgdHJl
ZSBob3N0LgorICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE9ySG9zdE5vZGUoKTsKIAogICAgIC8v
IFJldHVybnMgdGhlIGVuY2xvc2luZyBldmVudCBwYXJlbnQgbm9kZSAob3Igc2VsZikgdGhhdCwg
d2hlbiBjbGlja2VkLCB3b3VsZCB0cmlnZ2VyIGEgbmF2aWdhdGlvbi4KICAgICBOb2RlKiBlbmNs
b3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKTsKIAogICAgIC8vIE5vZGUgYW5jZXN0b3JzIHdo
ZW4gY29uY2VybmVkIGFib3V0IGV2ZW50IGZsb3cuCi0gICAgLy8gRklYTUU6IFNob3VsZCBiZSBu
YW1lZCBnZXRFdmVudEFuY2VzdG9ycy4KLSAgICB2b2lkIGV2ZW50QW5jZXN0b3JzKFZlY3RvcjxS
ZWZQdHI8Q29udGFpbmVyTm9kZT4gPiAmYW5jZXN0b3JzKTsKKyAgICB2b2lkIGdldEV2ZW50QW5j
ZXN0b3JzKFZlY3RvcjxFdmVudENvbnRleHQ+JiBhbmNlc3RvcnMsIEV2ZW50VGFyZ2V0Kik7CiAK
ICAgICBib29sIGlzQmxvY2tGbG93KCkgY29uc3Q7CiAgICAgYm9vbCBpc0Jsb2NrRmxvd09yQmxv
Y2tUYWJsZSgpIGNvbnN0OwpAQCAtNjkzLDYgKzY5MiwxMyBAQCBpbmxpbmUgdm9pZCBhZGRTdWJy
ZXNvdXJjZVVSTChMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgS1VSTCYgdXJsKQogICAg
ICAgICB1cmxzLmFkZCh1cmwpOwogfQogCitpbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFy
ZW50T3JIb3N0Tm9kZSgpCit7CisgICAgaWYgKENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVu
dE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHBhcmVudDsKKyAgICByZXR1cm4gc2hhZG93UGFyZW50
Tm9kZSgpOworfQorCiB9IC8vbmFtZXNwYWNlCiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2RvbS9UZXh0LmNwcCBiL1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4IDYyNzFm
MTEwNjU5YzZiODBiYjRjMjNhZjBhYTdjNmUyODUyZTg1YjcuLmY5YTRmMDRiYzM2NzVlZWRmNmRl
MWVjNGIwOWUzM2IyNGQ4YmI4NzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1RleHQuY3BwCisr
KyBiL1dlYkNvcmUvZG9tL1RleHQuY3BwCkBAIC0yMzksMTAgKzIzOSwxMSBAQCBib29sIFRleHQ6
OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUgKnN0eWxlKQogCiBSZW5kZXJPYmplY3QqIFRl
eHQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewor
ICAgIE5vZGUqIHBhcmVudE9ySG9zdCA9IHBhcmVudE9ySG9zdE5vZGUoKTsKICNpZiBFTkFCTEUo
U1ZHKQotICAgIGlmIChwYXJlbnROb2RlKCktPmlzU1ZHRWxlbWVudCgpCisgICAgaWYgKHBhcmVu
dE9ySG9zdC0+aXNTVkdFbGVtZW50KCkKICNpZiBFTkFCTEUoU1ZHX0ZPUkVJR05fT0JKRUNUKQot
ICAgICAgICAmJiAhcGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmb3JlaWduT2Jq
ZWN0VGFnKQorICAgICAgICAmJiAhcGFyZW50T3JIb3N0LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpm
b3JlaWduT2JqZWN0VGFnKQogI2VuZGlmCiAgICAgKQogICAgICAgICByZXR1cm4gbmV3IChhcmVu
YSkgUmVuZGVyU1ZHSW5saW5lVGV4dCh0aGlzLCBkYXRhSW1wbCgpKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZG9tL1dpbmRvd0V2ZW50Q29udGV4dC5jcHAgYi9XZWJDb3JlL2RvbS9XaW5kb3dFdmVu
dENvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwZjRhMzYyN2Q2MDllNTg4MWI0NzkzYzM0MDFkOTE4
ZWVlNzI3ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudENvbnRl
eHQuY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXaW5kb3dFdmVudENvbnRleHQuaCIKKworI2luY2x1ZGUgIkRPTVdpbmRv
dy5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRl
ICJFdmVudENvbnRleHQuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworV2luZG93RXZlbnRDb250ZXh0OjpXaW5kb3dFdmVudENvbnRleHQoRXZlbnQqIGV2ZW50
LCBQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIGNvbnN0IEV2ZW50Q29udGV4dCogdG9wRXZlbnRDb250
ZXh0KQoreworICAgIC8vIFdlIGRvbid0IGRpc3BhdGNoIGxvYWQgZXZlbnRzIHRvIHRoZSB3aW5k
b3cuIFRoYXQgcXVpcmsgd2FzIG9yaWdpbmFsbHkKKyAgICAvLyBhZGRlZCBiZWNhdXNlIE1vemls
bGEgZG9lc24ndCBwcm9wYWdhdGUgbG9hZCBldmVudHMgdG8gdGhlIHdpbmRvdyBvYmplY3QuCisg
ICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmxvYWRFdmVudCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgTm9kZSogdG9wTGV2ZWxDb250YWluZXIgPSB0b3BFdmVudENvbnRleHQg
PyB0b3BFdmVudENvbnRleHQtPm5vZGUoKSA6IG5vZGUuZ2V0KCk7CisgICAgaWYgKCF0b3BMZXZl
bENvbnRhaW5lci0+aXNEb2N1bWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV93
aW5kb3cgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHRvcExldmVsQ29udGFpbmVyKS0+ZG9tV2lu
ZG93KCk7CisgICAgbV90YXJnZXQgPSB0b3BFdmVudENvbnRleHQgPyB0b3BFdmVudENvbnRleHQt
PnRhcmdldCgpIDogbm9kZS5nZXQoKTsKK30KKworYm9vbCBXaW5kb3dFdmVudENvbnRleHQ6Omhh
bmRsZUxvY2FsRXZlbnRzKEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoIW1fd2luZG93KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBldmVudC0+c2V0VGFyZ2V0KHRhcmdldCgpKTsKKyAg
ICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh3aW5kb3coKSk7CisgICAgbV93aW5kb3ctPmZpcmVF
dmVudExpc3RlbmVycyhldmVudCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50Q29udGV4dC5oIGIvV2ViQ29yZS9kb20vV2luZG93
RXZlbnRDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTE5ZTA0ZDE4NDBkMWE2Mjk5MzRlNTBjYmU5ZDM5
ODMxYjdlOGMzMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50Q29u
dGV4dC5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpZm5kZWYgV2luZG93RXZl
bnRDb250ZXh0X2gKKyNkZWZpbmUgV2luZG93RXZlbnRDb250ZXh0X2gKKworI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBET01XaW5kb3c7Citj
bGFzcyBFdmVudFRhcmdldDsKK2NsYXNzIEV2ZW50Q29udGV4dDsKK2NsYXNzIEV2ZW50OworY2xh
c3MgTm9kZTsKKworY2xhc3MgV2luZG93RXZlbnRDb250ZXh0IHsKK3B1YmxpYzoKKyAgICBXaW5k
b3dFdmVudENvbnRleHQoRXZlbnQqLCBQYXNzUmVmUHRyPE5vZGU+LCBjb25zdCBFdmVudENvbnRl
eHQqKTsKKworICAgIERPTVdpbmRvdyogd2luZG93KCkgY29uc3Q7CisgICAgRXZlbnRUYXJnZXQq
IHRhcmdldCgpIGNvbnN0OworICAgIGJvb2wgaGFuZGxlTG9jYWxFdmVudHMoRXZlbnQqIGV2ZW50
KTsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8RE9NV2luZG93PiBtX3dpbmRvdzsKKyAgICBSZWZQ
dHI8RXZlbnRUYXJnZXQ+IG1fdGFyZ2V0OworfTsKKworaW5saW5lIERPTVdpbmRvdyogV2luZG93
RXZlbnRDb250ZXh0Ojp3aW5kb3coKSBjb25zdAoreworICAgIHJldHVybiBtX3dpbmRvdy5nZXQo
KTsKK30KKworaW5saW5lIEV2ZW50VGFyZ2V0KiBXaW5kb3dFdmVudENvbnRleHQ6OnRhcmdldCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOworfQorCit9CisKKyNlbmRpZiAv
LyBXaW5kb3dFdmVudENvbnRleHRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCmluZGV4IGNmYjU1ZmM2ZTBkNzQ3MTc3NDUwYTkxOTU5MjgyMDA3ODU1ZGMzOGQuLjAxNjg5
NzUzY2EwYTAxYzk4NGY2N2FlMDcwODI2ZTM2Y2FmMzgzNzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkRvY3VtZW50VHlwZS5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5j
bHVkZSAiRXZlbnRDb250ZXh0LmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgpAQCAtNjA3LDEzICs2
MDgsMTMgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2Rl
KGxvbmcgbm9kZUlkLCBsb25nKiBvdXROb2RlSWQsIFIKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gVGhlIE5vZGUncyBFdmVudCBBbmNlc3RvcnMgKG5vdCBpbmNsdWRpbmcgc2VsZikKLSAgICBW
ZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4gYW5jZXN0b3JzOwotICAgIG5vZGUtPmV2ZW50
QW5jZXN0b3JzKGFuY2VzdG9ycyk7CisgICAgVmVjdG9yPEV2ZW50Q29udGV4dD4gYW5jZXN0b3Jz
OworICAgIG5vZGUtPmdldEV2ZW50QW5jZXN0b3JzKGFuY2VzdG9ycywgbm9kZSk7CiAKICAgICAv
LyBOb2RlcyBhbmQgdGhlaXIgTGlzdGVuZXJzIGZvciB0aGUgY29uY2VybmVkIGV2ZW50IHR5cGVz
IChvcmRlciBpcyB0b3AgdG8gYm90dG9tKQogICAgIFZlY3RvcjxFdmVudExpc3RlbmVySW5mbz4g
ZXZlbnRJbmZvcm1hdGlvbjsKICAgICBmb3IgKHNpemVfdCBpID0gYW5jZXN0b3JzLnNpemUoKTsg
aTsgLS1pKSB7Ci0gICAgICAgIENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0gYW5jZXN0b3JzW2kg
LSAxXS5nZXQoKTsKKyAgICAgICAgTm9kZSogYW5jZXN0b3IgPSBhbmNlc3RvcnNbaSAtIDFdLm5v
ZGUoKTsKICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBldmVudFR5cGVzTGVuZ3RoOyAr
K2opIHsKICAgICAgICAgICAgIEF0b21pY1N0cmluZyYgdHlwZSA9IGV2ZW50VHlwZXNbal07CiAg
ICAgICAgICAgICBpZiAoYW5jZXN0b3ItPmhhc0V2ZW50TGlzdGVuZXJzKHR5cGUpKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggOTQyMDJj
MTE2NWVmMTFjMzhlODhmNjBkN2JlZGExM2ZjM2Q0YmQ5Yy4uY2Y0MTUyNzk4NTk5ZmE3Mzg4ZTVi
YTFjNTFjNGRiZjJhYzZlMTAxNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKICNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50Q29udGV4dC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2Vu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKQEAgLTUzLDcgKzU0LDcg
QEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHRpbWVyRmlyZWRFdmVudE5hbWUgPSAidGltZXJG
aXJlZCI7CiAKIGludCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNfZnJvbnRlbmRDb3VudGVy
ID0gMDsKIAotc3RhdGljIGJvb2wgZXZlbnRIYXNMaXN0ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8
UmVmUHRyPENvbnRhaW5lck5vZGU+ID4mIGFuY2VzdG9ycykKK3N0YXRpYyBib29sIGV2ZW50SGFz
TGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqIHdpbmRv
dywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFuY2VzdG9ycykKIHsK
ICAgICBpZiAod2luZG93ICYmIHdpbmRvdy0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnRUeXBlKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02Miw3ICs2Myw3IEBAIHN0YXRpYyBib29sIGV2ZW50
SGFzTGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqIHdp
bmRvdywKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGFuY2VzdG9ycy5zaXplKCk7IGkrKykgewotICAgICAgICBDb250YWluZXJOb2RlKiBhbmNlc3Rv
ciA9IGFuY2VzdG9yc1tpXS5nZXQoKTsKKyAgICAgICAgTm9kZSogYW5jZXN0b3IgPSBhbmNlc3Rv
cnNbaV0ubm9kZSgpOwogICAgICAgICBpZiAoYW5jZXN0b3ItPmhhc0V2ZW50TGlzdGVuZXJzKGV2
ZW50VHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xMzksNyArMTQw
LDYgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3RlckRhdGFNb2RpZmll
ZEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW4KICAgICAgICAgZG9tQWdlbnQtPmNoYXJhY3Rl
ckRhdGFNb2RpZmllZChjaGFyYWN0ZXJEYXRhKTsKIH0KIAotCiB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlciwgY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAjaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZENoYW5nZVhIUlJlYWR5U3RhdGVJbXBsKGNvbnN0IEluc3BlY3Rv
ckluc3RydW0KICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZSgp
OwogfQogCi1JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlciwgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9k
ZSogbm9kZSwgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+JiBhbmNlc3RvcnMp
CitJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsRGlzcGF0Y2hFdmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlciwgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9k
ZSwgY29uc3QgVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFuY2VzdG9ycykKIHsKICAgICBwYXVzZU9u
TmF0aXZlRXZlbnRJZk5lZWRlZChpbnNwZWN0b3JDb250cm9sbGVyLCBsaXN0ZW5lckV2ZW50Q2F0
ZWdvcnlUeXBlLCBldmVudC50eXBlKCksIGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCAxYjYyZWNiNzZjNzgyOTc0OGY0MjE2N2Zi
ODIzYjNjZDhkNjVjMmI0Li43ZjI0MWM0MTE4NGE0MWZiNjdlMDAyMjlmOTBjMTBkN2NmYmE1NjNl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAt
NDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENoYXJhY3RlckRhdGE7
CiBjbGFzcyBFbGVtZW50OworY2xhc3MgRXZlbnRDb250ZXh0OwogY2xhc3MgSW5zcGVjdG9yQ29u
dHJvbGxlcjsKIGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ7CiBjbGFzcyBLVVJMOwpAQCAt
NzMsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlkQ2FsbEZ1bmN0aW9uKGNv
bnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbENoYW5nZVhIUlJlYWR5U3RhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFhNTEh0dHBSZXF1ZXN0KiByZXF1ZXN0KTsKICAgICBzdGF0aWMgdm9p
ZCBkaWRDaGFuZ2VYSFJSZWFkeVN0YXRlKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERp
c3BhdGNoRXZlbnQoRG9jdW1lbnQqLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogd2lu
ZG93LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4mIGFu
Y2VzdG9ycyk7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxs
RGlzcGF0Y2hFdmVudChEb2N1bWVudCosIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3
aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxFdmVudENvbnRleHQ+JiBhbmNlc3RvcnMp
OwogICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSB3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93KEZyYW1lKiwgY29uc3QgRXZlbnQmIGV2ZW50
LCBET01XaW5kb3cqIHdpbmRvdyk7CiAgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudE9u
V2luZG93KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwpAQCAtMTMwLDcg
KzEzMSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkQ2FsbEZ1bmN0aW9uSW1wbChj
b25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlSW1wbChJbnNw
ZWN0b3JDb250cm9sbGVyKiwgWE1MSHR0cFJlcXVlc3QqIHJlcXVlc3QpOwogICAgIHN0YXRpYyB2
b2lkIGRpZENoYW5nZVhIUlJlYWR5U3RhdGVJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
d2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBjb25zdCBFdmVudCYg
ZXZlbnQsIERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8UmVmUHRy
PENvbnRhaW5lck5vZGU+ID4mIGFuY2VzdG9ycyk7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hFdmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxl
ciosIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNv
bnN0IFZlY3RvcjxFdmVudENvbnRleHQ+JiBhbmNlc3RvcnMpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZERpc3BhdGNoRXZlbnRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYp
OwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNo
RXZlbnRPbldpbmRvd0ltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGNvbnN0IEV2ZW50JiBldmVu
dCwgRE9NV2luZG93KiB3aW5kb3cpOwogICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnRP
bldpbmRvd0ltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CkBAIC0y
MjUsNyArMjI2LDYgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjaGFy
YWN0ZXJEYXRhTW9kaWZpZWQoRG9jdW1lbnQqIGRvY3VtZW50LAogI2VuZGlmCiB9CiAKLQogaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsKQogewog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCkBAIC0yOTMsNyArMjkzLDcgQEAgaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VYSFJSZWFkeVN0YXRlKGNvbnN0IEluc3Bl
Y3Rvckluc3QKICNlbmRpZgogfQogCi1pbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnQoRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBu
b2RlLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4mIGFuY2VzdG9ycykKK2lu
bGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsRGlzcGF0Y2hFdmVudChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEV2ZW50JiBl
dmVudCwgRE9NV2luZG93KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxFdmVudENv
bnRleHQ+JiBhbmNlc3RvcnMpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5z
cGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xs
ZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDI5NzAyNTkx
ZWViZmQzMTljYTRmOWVhMjA4OGE1M2YxNzA1ODIwYzguLjcxY2E5YzgxZDM1Y2Q2ZWM2MDE0ODAw
MDMxMzY3OWUxOTBkNmI5ZWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xNzY2LDggKzE3NjYs
NiBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlTW91c2VFdmVudFRhcmdldE5vZGUoTm9kZSog
dGFyZ2V0Tm9kZSwgY29uc3QgUGxhdGZvcm1NbwogICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IG5v
ZGUgaXMgYSB0ZXh0IG5vZGUsIGRpc3BhdGNoIG9uIHRoZSBwYXJlbnQgbm9kZSAtIHJkYXI6Ly80
MTk2NjQ2CiAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LT5pc1RleHROb2RlKCkpCiAgICAg
ICAgICAgICByZXN1bHQgPSByZXN1bHQtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgaWYgKHJlc3Vs
dCkKLSAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC0+c2hhZG93QW5jZXN0b3JOb2RlKCk7CiAg
ICAgfQogICAgIG1fbm9kZVVuZGVyTW91c2UgPSByZXN1bHQ7CiAjaWYgRU5BQkxFKFNWRykKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5jcHAKaW5kZXggNmMyYzRhMjc4M2VhOWUzOGFhZmY5N2RiOWRiNTU2MGZiY2Y0YjA0YS4u
M2U5YmRhMDdkZWNiM2M0YjkyMTYxYzYwYWQ0MzZkNzcyNDEwYjZkOSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAK
QEAgLTM0NywxMyArMzQ3LDYgQEAgdm9pZCBTVkdFbGVtZW50Ojp1cGRhdGVBbmltYXRlZFNWR0F0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogICAgIGNsZWFySXNTeW5j
aHJvbml6aW5nU1ZHQXR0cmlidXRlcygpOwogfQogCi1Db250YWluZXJOb2RlKiBTVkdFbGVtZW50
OjpldmVudFBhcmVudE5vZGUoKQotewotICAgIGlmIChDb250YWluZXJOb2RlKiBzaGFkb3dQYXJl
bnQgPSBzaGFkb3dQYXJlbnROb2RlKCkpCi0gICAgICAgIHJldHVybiBzaGFkb3dQYXJlbnQ7Ci0g
ICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OmV2ZW50UGFyZW50Tm9kZSgpOwotfQotCiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5o
IGIvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IDUxNzUxNWY5Mzk4NTMwNDlkYTE2NzA3
NGQzZWUzZTQ5OGJjMzBhNjguLjk2ZTdmZDdhZDRkMDllZDg2YjM5M2E1MThkOTk3NjM0OTgyN2Zk
OTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmgKQEAgLTk5LDggKzk5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc1N1cHBvcnRlZChTdHJpbmdJbXBsKiBmZWF0dXJlLCBTdHJp
bmdJbXBsKiB2ZXJzaW9uKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIENvbnRhaW5lck5vZGUq
IGV2ZW50UGFyZW50Tm9kZSgpOwotCiAgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVkc1BlbmRpbmdS
ZXNvdXJjZUhhbmRsaW5nKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICB2aXJ0dWFs
IHZvaWQgYnVpbGRQZW5kaW5nUmVzb3VyY2UoKSB7IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72582</attachid>
            <date>2010-11-01 16:01:49 -0700</date>
            <delta_ts>2010-11-03 10:00:28 -0700</delta_ts>
            <desc>With a stale ptr fix</desc>
            <filename>bug-46015-20101101160148.patch</filename>
            <type>text/plain</type>
            <size>47649</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNWYwN2NjYTgzOTZmOTFlYTVjZjU0YTE5NzRiOTc4NzhhNzQzNzdhLi41ZmJiNzg1
ODY3NDcyMmU3MDA2MzNjMjY4MjdlYTFlNmIyN2M5Y2JjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMTAtMDEgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
c2hhZG93IERPTS1hd2FyZSBldmVudCB0YXJnZXRpbmcgYW5kIGludHJvZHVjZSBFdmVudENvbnRl
eHQgdG8gdHJhY2sgdGhlIGNvbnRleHQgb2YgZWFjaCBldmVudCBkaXNwYXRjaC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MDE1CisKKyAgICAgICAg
VHVuZWQgdGhlIHRlc3QgdG8gYmV0dGVyIHJlZmxlY3QgaXRzIHBvaW50OiB0aGUgZXZlbnQgc2hv
dWxkIGluZGVlZCBmaXJlIChpdCB1c2VkIHRvIGJlIHN3YWxsb3dlZCksCisgICAgICAgIGJ1dCBp
dHMgdGFyZ2V0IHNob3VsZCBiZSBhIG5vbi1zaGFkb3cgbm9kZS4KKworICAgICAgICAqIGZhc3Qv
ZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9zc2luZy5odG1sOiBNb2RpZmllZCB0aGUgdGVzdC4K
KwogMjAxMC0xMS0wMSAgTWF0dGhldyBEZWxhbmV5ICA8bWRlbGFuZXlAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9zc2luZy5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvc2hhZG93LWJvdW5kYXJ5LWNyb3NzaW5nLmh0bWwKaW5kZXggNjIzZTA2NzNl
YzFjZjM2MjU2ZjVlYzEzNjdkN2NhMzliYWJiNDE1My4uZTAwMjMzMzBlMWRjMTZjNjdkYjkwMTEx
NDI0MWM2M2JiMWVkYTExZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2hh
ZG93LWJvdW5kYXJ5LWNyb3NzaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
c2hhZG93LWJvdW5kYXJ5LWNyb3NzaW5nLmh0bWwKQEAgLTIsMTEgKzIsMTIgQEAKIDxoZWFkPgog
ICAgIDx0aXRsZT48L3RpdGxlPgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
LSAgICAgICAgdmFyIGZpcmVkID0gZmFsc2U7CisgICAgICAgIHZhciBzdWNjZXNzOworICAgICAg
ICB2YXIgdGFyZ2V0OwogCiAgICAgICAgIGZ1bmN0aW9uIHNlbGVjdFN0YXJ0KGV2ZW50KQogICAg
ICAgICB7Ci0gICAgICAgICAgICBmaXJlZCA9IHRydWU7CisgICAgICAgICAgICBzdWNjZXNzID0g
ZXZlbnQudGFyZ2V0ID09IHRhcmdldDsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIHRl
c3QoKQpAQCAtMTUsNyArMTYsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKIAotICAgICAgICAgICAgdmFy
IHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKKyAgICAgICAgICAg
IHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKICAgICAgICAgICAg
IHZhciB4ID0gdGFyZ2V0Lm9mZnNldExlZnQgKyB0YXJnZXQub2Zmc2V0V2lkdGggLyAyOwogICAg
ICAgICAgICAgdmFyIHkgPSB0YXJnZXQub2Zmc2V0VG9wICsgdGFyZ2V0Lm9mZnNldEhlaWdodCAv
IDI7CiAKQEAgLTIzLDcgKzI0LDcgQEAKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93
bigpOwogICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwogCi0gICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJUZXh0ID0gZmlyZWQgPyAiRkFJ
TCIgOiAiUEFTUyI7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0
IikuaW5uZXJUZXh0ID0gIXN1Y2Nlc3MgPyAiRkFJTCIgOiAiUEFTUyI7CiAgICAgICAgIH0KIAog
ICAgICAgICBhZGRFdmVudExpc3RlbmVyKCJzZWxlY3RzdGFydCIsIHNlbGVjdFN0YXJ0LCB0cnVl
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawpp
bmRleCBlYTBjMjllZTNkMTJkNjM3ZGM4ZDBiOGRiMGNiMmJjNTc0ZDc5ZmYxLi43MjE0N2YyOTll
NzMzMWE4ZGNkYjM2YjMzNzVkNTMyZjRjYjQ3NDc0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJv
aWQubWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0xOTIsNiArMTkyLDcgQEAgTE9DQUxf
U1JDX0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJZG9tL1dlYktpdEFuaW1hdGlvbkV2
ZW50LmNwcCBcCiAJZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgXAogCWRvbS9XaGVlbEV2
ZW50LmNwcCBcCisJZG9tL1dpbmRvd0V2ZW50Q29udGV4dC5jcHAgXAogCWRvbS9YTUxEb2N1bWVu
dFBhcnNlci5jcHAgXAogCWRvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIFwKIAlkb20v
WE1MRG9jdW1lbnRQYXJzZXJTY29wZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dCBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYmJhN2EzM2NjOGQyYzZjMGZj
OWU4M2RlMDZjZGQ2MDViZWRjZjVlYS4uNzlmYjlhNjk4NWU0MWMzMWM1MjQ4YzE2MTEyMjYwMTU5
MWEwZmI1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC04MjQsNiArODI0LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwog
ICAgIGRvbS9FbnRpdHlSZWZlcmVuY2UuY3BwCiAgICAgZG9tL0Vycm9yRXZlbnQuY3BwCiAgICAg
ZG9tL0V2ZW50LmNwcAorICAgIGRvbS9FdmVudENvbnRleHQuY3BwCiAgICAgZG9tL0V2ZW50TmFt
ZXMuY3BwCiAgICAgZG9tL0V2ZW50VGFyZ2V0LmNwcAogICAgIGRvbS9FeGNlcHRpb25CYXNlLmNw
cApAQCAtODgxLDYgKzg4Miw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vV2ViS2l0
QW5pbWF0aW9uRXZlbnQuY3BwCiAgICAgZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAKICAg
ICBkb20vV2hlZWxFdmVudC5jcHAKKyAgICBkb20vV2luZG93RXZlbnRDb250ZXh0LmNwcAogICAg
IGRvbS9YTUxEb2N1bWVudFBhcnNlci5jcHAKICAgICBkb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcAogICAgIGRvbS9YTUxEb2N1bWVudFBhcnNlclNjb3BlLmNwcApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhYWUwYmI4Nzc4YTEw
OTJkODBlODQ5NDVlOTAzMzdhNDNkYTY5MzdiLi4xOGJjNDNhYzdkZjljOTMzOGNiM2YxZDhkZWNj
OTViM2U5OGUwMWY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEwLTEwLTAxICBEaW1pdHJpIEdsYXprb3Yg
IDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHNoYWRvdyBET00tYXdhcmUgZXZlbnQgdGFyZ2V0
aW5nIGFuZCBpbnRyb2R1Y2UgRXZlbnRDb250ZXh0IHRvIHRyYWNrIHRoZSBjb250ZXh0IG9mIGVh
Y2ggZXZlbnQgZGlzcGF0Y2guCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NjAxNQorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgbm90aW9uIG9m
IEV2ZW50Q29udGV4dCAoYW5kIGEgdmVyeSBzaW1pbGFyLWFjdGluZyBXaW5kb3dFdmVudENvbnRl
eHQsIHNwZWNpZmljYWxseQorICAgICAgICBmb3IgRE9NV2luZG93KSwgYW4gYWJzdHJhY3Rpb24g
dGhhdCBjYXJyaWVzIGluZm9ybWF0aW9uIGFyb3VuZCBkaXNwYXRjaGluZyBhbiBldmVudCBmb3Ig
YW55IGdpdmVuIE5vZGUuCisKKyAgICAgICAgVGhpcyBhYnN0cmFjdGlvbiBpcyBuZWNlc3Nhcnkg
dG8gZW5zdXJlIHRoYXQgZXZlbnRzLCBmaXJlZCBmcm9tIHNoYWRvdyBET00gbm9kZXMgYXJlIHBy
b3Blcmx5IHJldGFyZ2V0ZWQgdG8KKyAgICAgICAgYXBwZWFyIGFzIGlmIHRoZXkgYXJlIGNvbWlu
ZyBmcm9tIHRoZWlyIGhvc3QsIHRodXMgbmV2ZXIgZXhwb3NpbmcgdGhlIHNoYWRvdyBET00gbm9k
ZXMgdG8gdGhlIHdvcmxkIG91dHNpZGUuCisKKyAgICAgICAgKiBBbmRyb2lkLm1rOiBBZGRlZCBF
dmVudENvbnRleHQsIFdpbmRvd0V2ZW50Q29udGV4dCBmaWxlcy4KKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDogRGl0dG8uCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IERpdHRvLgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5wcm86IERpdHRvLgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAg
ICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm90aWZ5Q2hp
bGRJbnNlcnRlZCk6IENoYW5nZWQgdG8gYmUgc2hhZG93IERPTS1hd2FyZS4KKyAgICAgICAgKiBk
b20vRXZlbnRDb250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgICogZG9tL0V2ZW50Q29udGV4dC5o
OiBBZGRlZC4KKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjptYXJrQW5jZXN0b3JzV2l0aENoaWxkTmVlZHNTdHlsZVJlY2FsYyk6IENoYW5nZWQgdG8gYmUg
c2hhZG93IERPTS1hd2FyZS4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNyZWF0ZVJlbmRlcmVy
SWZOZWVkZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnBhcmVudE9ySG9zdE5v
ZGUpOiBBZGRlZCBuZXcgaGVscGVyIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmVu
Y2xvc2luZ0xpbmtFdmVudFBhcmVudE9yU2VsZik6IENoYW5nZWQgdG8gYmUgc2hhZG93IERPTS1h
d2FyZS4KKyAgICAgICAgKFdlYkNvcmU6OmV2ZW50VGFyZ2V0UmVzcGVjdGluZ1NWR1RhcmdldFJ1
bGVzKTogQ29sbGFwc2VkIHR3byBoZWxwZXIgbWV0aG9kcyBpbnRvIG9uZS4KKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmV2ZW50QW5jZXN0b3JzKTogUmVmYWN0b3JlZCB0byBjb2xsZWN0IGEgdmVj
dG9yIG9mIEV2ZW50Q29udGV4dHMuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjp0b3BFdmVudENv
bnRleHQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmV2ZW50SGFzTGlzdGVuZXJzKTogQ2hh
bmdlZCB0byB1c2UgRXZlbnRDb250ZXh0cy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpc3Bh
dGNoR2VuZXJpY0V2ZW50KTogRGl0dG8uCisgICAgICAgICogZG9tL05vZGUuaDogUmVtb3ZlZCBl
dmVudFBhcmVudE5vZGUgdGhhdCdzIG5vIGxvbmdlciBuZWVkZWQsIGFkZGVkIHBhcmVudE9ySG9z
dE5vZGUgZGVjbCwKKyAgICAgICAgICAgIGFuZCBjaGFuZ2VkIHNpZ25hdHVyZSBvZiBldmVudEFu
Y2VzdG9ycyB0byB1c2UgRXZlbnRDb250ZXh0cy4KKyAgICAgICAgKiBkb20vVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0OjpjcmVhdGVSZW5kZXJlcik6IENoYW5nZWQgdG8gYmUgc2hh
ZG93IERPTS1hd2FyZS4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJz
Rm9yTm9kZSk6IENoYW5nZWQgdG8gdXNlIEV2ZW50Q29udGV4dHMuCisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVN
b3VzZUV2ZW50VGFyZ2V0Tm9kZSk6IFJlbW92ZWQgY29kZSB0aGF0J3Mgbm8gbG9uZ2VyIG5lY2Vz
c2FyeS4KKyAgICAgICAgKiByZW5kZXJpbmcvU2hhZG93RWxlbWVudC5oOiBNYWRlIG1fc2hhZG93
UGFyZW50IGEgUmVmUHRyIHRvIGF2b2lkIHN0YWxlIHJlZmVyZW5jZXMgd2hlbiBwYXJlbnQKKyAg
ICAgICAgaXMgZGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6IFJlbW92ZWQg
ZXZlbnRQYXJlbnROb2RlIHRoYXQncyBubyBsb25nZXIgbmVlZGVkLgorICAgICAgICAqIHN2Zy9T
VkdFbGVtZW50Lmg6IERpdHRvLgorICAgICAgICAqIGRvbS9XaW5kb3dFdmVudENvbnRleHQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKiBkb20vV2luZG93RXZlbnRDb250ZXh0Lmg6IEFkZGVkLgorCiAy
MDEwLTExLTAxICBNYXR0aGV3IERlbGFuZXkgIDxtZGVsYW5leUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYjQyNDM4ODBjNGU5MjlhZTcz
ODk2NWNjNGQ3YjY5MTE1MjdiOWM5MC4uN2U3YzA4ZWY5ZjY4MzZhZDdmNWE3NjQ2ZGU3YTg3MzBl
NGQ0YWUzNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCkBAIC0xMTMyLDggKzExMzIsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlXZWJDb3JlL2RvbS9FcnJvckV2ZW50LmNwcCBcCiAJV2ViQ29yZS9kb20vRXJyb3JFdmVu
dC5oIFwKIAlXZWJDb3JlL2RvbS9FdmVudC5jcHAgXAotCVdlYkNvcmUvZG9tL0V2ZW50RXhjZXB0
aW9uLmggXAogCVdlYkNvcmUvZG9tL0V2ZW50LmggXAorCVdlYkNvcmUvZG9tL0V2ZW50Q29udGV4
dC5jcHAgXAorCVdlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oIFwKKwlXZWJDb3JlL2RvbS9FdmVu
dEV4Y2VwdGlvbi5oIFwKIAlXZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmggXAogCVdlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuY3BwIFwKIAlXZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggXApAQCAtMTI2
MSw2ICsxMjYzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2RvbS9XZWJLaXRU
cmFuc2l0aW9uRXZlbnQuaCBcCiAJV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAgXAogCVdlYkNv
cmUvZG9tL1doZWVsRXZlbnQuaCBcCisJV2ViQ29yZS9kb20vV2luZG93RXZlbnRDb250ZXh0LmNw
cCBcCisJV2ViQ29yZS9kb20vV2luZG93RXZlbnRDb250ZXh0LmggXAogCVdlYkNvcmUvZG9tL1hN
TERvY3VtZW50UGFyc2VyLmNwcCBcCiAJV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuaCBc
CiAJV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBcCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGE3YTU1
NmE0YzVhMTczMDAyMmI5YTcxMGFkYjg2MTAyOGQ5YjJlMDIuLjY5ZTM4Y2YxMzllY2U3M2YwMzc1
YmY1NTk0MDViNmIzYjJmN2NmNjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMjA0LDYgKzEyMDQsOCBAQAogICAgICAgICAg
ICAgJ2RvbS9FcnJvckV2ZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9FdmVudC5jcHAnLAogICAg
ICAgICAgICAgJ2RvbS9FdmVudC5oJywKKyAgICAgICAgICAgICdkb20vRXZlbnRDb250ZXh0LmNw
cCcsCisgICAgICAgICAgICAnZG9tL0V2ZW50Q29udGV4dC5oJywKICAgICAgICAgICAgICdkb20v
RXZlbnRFeGNlcHRpb24uaCcsCiAgICAgICAgICAgICAnZG9tL0V2ZW50TGlzdGVuZXIuaCcsCiAg
ICAgICAgICAgICAnZG9tL0V2ZW50TmFtZXMuY3BwJywKQEAgLTEzMzksNiArMTM0MSw4IEBACiAg
ICAgICAgICAgICAnZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5oJywKICAgICAgICAgICAgICdk
b20vV2hlZWxFdmVudC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9XaGVlbEV2ZW50LmgnLAorICAg
ICAgICAgICAgJ2RvbS9XaW5kb3dFdmVudENvbnRleHQuY3BwJywKKyAgICAgICAgICAgICdkb20v
V2luZG93RXZlbnRDb250ZXh0LmgnLAogICAgICAgICAgICAgJ2RvbS9YTUxEb2N1bWVudFBhcnNl
ci5jcHAnLAogICAgICAgICAgICAgJ2RvbS9YTUxEb2N1bWVudFBhcnNlci5oJywKICAgICAgICAg
ICAgICdkb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJD
b3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA0NGQ1NDRkNGI2YTIz
Yzg3YmIxYjBiNzMzMTgyOTg5YzVlNzVjODhiLi4zNjk5ODEzZjU1MGRhNDBmZTY1MmQzNjY0YTc5
M2NjNDFmOGUyMGRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNv
cmUvV2ViQ29yZS5wcm8KQEAgLTcxMyw2ICs3MTMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20v
RW50aXR5UmVmZXJlbmNlLmNwcCBcCiAgICAgZG9tL0Vycm9yRXZlbnQuY3BwIFwKICAgICBkb20v
RXZlbnQuY3BwIFwKKyAgICBkb20vRXZlbnRDb250ZXh0LmNwcCBcCiAgICAgZG9tL0V2ZW50TmFt
ZXMuY3BwIFwKICAgICBkb20vRXZlbnRUYXJnZXQuY3BwIFwKICAgICBkb20vRXhjZXB0aW9uQmFz
ZS5jcHAgXApAQCAtNzczLDYgKzc3NCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9XZWJLaXRB
bmltYXRpb25FdmVudC5jcHAgXAogICAgIGRvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwIFwK
ICAgICBkb20vV2hlZWxFdmVudC5jcHAgXAorICAgIGRvbS9XaW5kb3dFdmVudENvbnRleHQuY3Bw
IFwKICAgICBkb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwIFwKICAgICBkb20vWE1MRG9jdW1lbnRQ
YXJzZXJRdC5jcHAgXAogICAgIGRvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVs
LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQy
ZDY4M2I2MDM5Y2IzZGFhNzAzZTcyNjUyOWI3Yzg5NDgwNDY3MTUuLjY2NmM3ZGJkMTA0YWQzMzRh
ZTllODVhNGEzYzJjZGM3MjM4ODcyMTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC04OTEsNyArODkxLDExIEBACiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4
MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYgLyogSlNNZXNz
YWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk0MTEwNDY0MTBGQTIyMkE2MDBCQTQzNkEgLyog
U2NyaXB0RXZlbnRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDExMDQ2M0YwRkEyMjJBNjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50TGlzdGVu
ZXIuaCAqLzsgfTsKIAkJNDExMDQ2NDIwRkEyMjJBNjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50TGlz
dGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDExMDQ2NDAwRkEyMjJBNjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50TGlzdGVuZXIuY3BwICovOyB9
OworCQk0MTIzRTU2OTEyN0IzMDQxMDAwRkVFQTcgLyogV2luZG93RXZlbnRDb250ZXh0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTIzRTU2NzEyN0Iz
MDQxMDAwRkVFQTcgLyogV2luZG93RXZlbnRDb250ZXh0LmggKi87IH07CisJCTQxMjNFNTZBMTI3
QjMwNDEwMDBGRUVBNyAvKiBXaW5kb3dFdmVudENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyM0U1NjgxMjdCMzA0MTAwMEZFRUE3IC8q
IFdpbmRvd0V2ZW50Q29udGV4dC5jcHAgKi87IH07CiAJCTQxMjdENTM3MEY4QUFCMUQwMEU0MjRG
NSAvKiBTY3JpcHRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICov
OyB9OworCQk0MTM4RDMzNTEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM4RDMzMzEyNDQwNTQ4
MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggKi87IH07CisJCTQxMzhEMzM2MTI0NDA1NDgwMDMy
M0QzMyAvKiBFdmVudENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDEzOEQzMzQxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5j
cHAgKi87IH07CiAJCTQxNjJBNDUwMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxNjJBNDREMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCAq
LzsgfTsKIAkJNDE2MkE0NTExMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRl
eHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJB
NDRFMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggKi87IH07CiAJ
CTQxNjJBNDU0MTAxMTQ1RTMwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2
MkE0NTMxMDExNDVFMzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5j
cHAgKi87IH07CkBAIC02OTU1LDcgKzY5NTksMTEgQEAKIAkJNDEwQjdFNzExMDQ1RkFCMDAwRDgy
MjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDExMDQ2M0YwRkEyMjJBNjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50TGlzdGVu
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RXZlbnRMaXN0ZW5l
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEwNDY0MDBGQTIyMkE2MDBCQTQz
NkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTY3JpcHRFdmVudExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDEyM0U1NjcxMjdCMzA0MTAwMEZFRUE3IC8qIFdpbmRvd0V2ZW50Q29udGV4dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaW5kb3dFdmVudENvbnRleHQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEyM0U1NjgxMjdCMzA0MTAwMEZFRUE3IC8q
IFdpbmRvd0V2ZW50Q29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXaW5kb3dFdmVudENvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MTM4RDMzMzEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50Q29udGV4dC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTM4RDMzNDEyNDQwNTQ4MDAzMjNEMzMgLyogRXZl
bnRDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50
Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNjJBNDREMTAxMTQ1
QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwOyBwYXRoID0g
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDE2MkE0NEUxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRl
eHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGVkaWNhdGVkV29ya2VyQ29u
dGV4dC5oOyBwYXRoID0gd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNjJBNDRGMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0LmlkbDsgcGF0aCA9IHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODE2Myw2ICsxODE3MSw4IEBACiAJCQkJ
ODUwMzFCMkIwQTQ0RUZDNzAwRjk5MkUwIC8qIEV2ZW50LmNwcCAqLywKIAkJCQk4NTAzMUIyQzBB
NDRFRkM3MDBGOTkyRTAgLyogRXZlbnQuaCAqLywKIAkJCQkxNEU4MzZEMjA5Rjg1MTIwMDBCODVB
RTQgLyogRXZlbnQuaWRsICovLAorCQkJCTQxMzhEMzM0MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVu
dENvbnRleHQuY3BwICovLAorCQkJCTQxMzhEMzMzMTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENv
bnRleHQuaCAqLywKIAkJCQlCQzYwRDkwOTBEMkExN0NFMDBCOTkxOEYgLyogRXZlbnRFeGNlcHRp
b24uaCAqLywKIAkJCQlCQzYwRDkwQTBEMkExN0NFMDBCOTkxOEYgLyogRXZlbnRFeGNlcHRpb24u
aWRsICovLAogCQkJCTkzNUZCQzQ0MDlCQTAwQjkwMEUyMzBCMSAvKiBFdmVudExpc3RlbmVyLmgg
Ki8sCkBAIC0xODMyMyw2ICsxODMzMyw4IEBACiAJCQkJODUwMzFCM0EwQTQ0RUZDNzAwRjk5MkUw
IC8qIFdoZWVsRXZlbnQuY3BwICovLAogCQkJCTg1MDMxQjNCMEE0NEVGQzcwMEY5OTJFMCAvKiBX
aGVlbEV2ZW50LmggKi8sCiAJCQkJOTNFRUMxRjcwOUMyODc3NzAwQzUxNUQxIC8qIFdoZWVsRXZl
bnQuaWRsICovLAorCQkJCTQxMjNFNTY4MTI3QjMwNDEwMDBGRUVBNyAvKiBXaW5kb3dFdmVudENv
bnRleHQuY3BwICovLAorCQkJCTQxMjNFNTY3MTI3QjMwNDEwMDBGRUVBNyAvKiBXaW5kb3dFdmVu
dENvbnRleHQuaCAqLywKIAkJCQlGNTIzRDMwOTAyREU0NDc2MDE4NjM1Q0EgLyogWE1MRG9jdW1l
bnRQYXJzZXIuY3BwICovLAogCQkJCUY1MjNEMzBBMDJERTQ0NzYwMTg2MzVDQSAvKiBYTUxEb2N1
bWVudFBhcnNlci5oICovLAogCQkJCTU0QzUwRjdBMEU4MDFERjMwMDk4MzJBMCAvKiBYTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwICovLApAQCAtMTk0ODYsNiArMTk0OTgsNyBAQAogCQkJCTg5
ODc4NTYwMTIyQ0EwNjQwMDNBQUJEQSAvKiBFcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRUNGN0FFMjEwMTYyQjU4MDA0MjdERTcgLyogRXJyb3JFdmVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODUwMzFCNDIwQTQ0RUZDNzAwRjk5MkUwIC8qIEV2ZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQk0MTM4RDMzNTEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzYwRDkwQzBEMkExN0NFMDBCOTkxOEYgLyogRXZlbnRFeGNlcHRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzA5QTUzMEIwNjREQjMwMDVBQkQ0RCAvKiBFdmVudEhh
bmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUZCQzQ1MDlCQTAwQjkwMEUyMzBCMSAvKiBF
dmVudExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTIxMTQxLDYgKzIxMTU0LDcgQEAKIAkJ
CQk4NTAzMUI1MTBBNDRFRkM3MDBGOTkyRTAgLyogV2hlZWxFdmVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTM4MEY0NzQwOUExMUFCNDAwMUZEQjM0IC8qIFdpZGdldC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTM5QjAyRUYwRUEyREJDNDAwQzU0NTcwIC8qIFdpZHRoSXRlcmF0b3IuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQxMjNFNTY5MTI3QjMwNDEwMDBGRUVBNyAvKiBXaW5kb3dFdmVudENvbnRl
eHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODI0M0U5MEQwQ0ZENzUwMDQ2MEM4RiAvKiBXaW5k
b3dGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFMUJGMDAxMTVGRjZGQjAwNkY1MkNB
IC8qIFdpbmRvd3NLZXlib2FyZENvZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODIwM0FBMDBF
RDhDMzUzMDBCOEI2MUEgLyogV01MQWNjZXNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
MjExNiw2ICsyMjEzMCw3IEBACiAJCQkJODkzQzQ4MEMxMjQ4QkQzQTAwMkIzRDg2IC8qIEVudHJ5
U3luYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRUNGN0FFMTEwMTYyQjU4MDA0MjdERTcgLyog
RXJyb3JFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMUI0MTBBNDRFRkM3MDBGOTky
RTAgLyogRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDEzOEQzMzYxMjQ0MDU0ODAwMzIz
RDMzIC8qIEV2ZW50Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0MwOUE4MTBCMDY0
RjAwMDA1QUJENEQgLyogRXZlbnRIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzQzA5
QTdGMEIwNjRFRUYwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXJNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQkxQ0ExOUUwNTBEQzI1NTk1MDA2NUE5OTQgLyogRXZlbnRMb29wTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCkBAIC0yMzcxNSw2ICsyMzczMCw3IEBACiAJCQkJOTM4MEY0NzMwOUExMUFCNDAwMUZE
QjM0IC8qIFdpZGdldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzgwRjQ3ODA5QTExQUNDMDAx
RkRCMzQgLyogV2lkZ2V0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5QjAyRUUwRUEyREJD
NDAwQzU0NTcwIC8qIFdpZHRoSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDEyM0U1
NkExMjdCMzA0MTAwMEZFRUE3IC8qIFdpbmRvd0V2ZW50Q29udGV4dC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQzgyNDNFODBEMENGRDc1MDA0NjBDOEYgLyogV2luZG93RmVhdHVyZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMDgyMDNBOUYwRUQ4QzM1MzAwQjhCNjFBIC8qIFdNTEFjY2Vzc0Vs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDg4Qzk3NTEwRUNCNkUyODAwMDUzNEJBIC8q
IFdNTEFFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5jcHAgYi9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCBm
YzMzNTE5MjQ1NjE3MmY3OWMxMzRiYTYxOGMyN2VmZDNmNmIxODE0Li5iNGJkYjdmOTFjODk5Y2E4
NDdmZWJkYjI3ODI2M2ZmZTcxOWUzMDZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmNwcAorKysgYi9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMTAwNSw3
ICsxMDA1LDggQEAgc3RhdGljIHZvaWQgbm90aWZ5Q2hpbGRJbnNlcnRlZChOb2RlKiBjaGlsZCkK
ICAgICBSZWZQdHI8Tm9kZT4gYyA9IGNoaWxkOwogICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1l
bnQgPSBjaGlsZC0+ZG9jdW1lbnQoKTsKIAotICAgIGlmIChjLT5wYXJlbnROb2RlKCkgJiYgYy0+
cGFyZW50Tm9kZSgpLT5pbkRvY3VtZW50KCkpCisgICAgTm9kZSogcGFyZW50T3JIb3N0Tm9kZSA9
IGMtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICBpZiAocGFyZW50T3JIb3N0Tm9kZSAmJiBwYXJl
bnRPckhvc3ROb2RlLT5pbkRvY3VtZW50KCkpCiAgICAgICAgIGMtPmluc2VydGVkSW50b0RvY3Vt
ZW50KCk7CiAgICAgZWxzZQogICAgICAgICBjLT5pbnNlcnRlZEludG9UcmVlKHRydWUpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmNwcCBiL1dlYkNvcmUvZG9tL0V2ZW50
Q29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE1YzUyMTBhYWVmNmI5NDFiYmRlNWRlMjk1Y2JhMzM5
ZDE0MmRmNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5jcHAK
QEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkV2ZW50Q29udGV4dC5oIgorCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIk5vZGUuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitFdmVudENvbnRleHQ6OkV2ZW50Q29udGV4dChQYXNzUmVm
UHRyPE5vZGU+IG5vZGUsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IGN1cnJlbnRUYXJnZXQsIFBh
c3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHRhcmdldCkKKyAgICA6IG1fbm9kZShub2RlKQorICAgICwg
bV9jdXJyZW50VGFyZ2V0KGN1cnJlbnRUYXJnZXQpCisgICAgLCBtX3RhcmdldCh0YXJnZXQpCit7
Cit9CisKK3ZvaWQgRXZlbnRDb250ZXh0OjpoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCogZXZlbnQp
IGNvbnN0Cit7CisgICAgZXZlbnQtPnNldFRhcmdldChtX3RhcmdldC5nZXQoKSk7CisgICAgZXZl
bnQtPnNldEN1cnJlbnRUYXJnZXQobV9jdXJyZW50VGFyZ2V0LmdldCgpKTsKKyAgICBtX25vZGUt
PmhhbmRsZUxvY2FsRXZlbnRzKGV2ZW50KTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vRXZlbnRDb250ZXh0LmggYi9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45YmFiOWQ0MTYyYzM1YjYyY2ZkNzA2MjM2ZWUxZjU0N2JkZDI5NzRiCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
CisgKi8KKworI2lmbmRlZiBFdmVudENvbnRleHRfaAorI2RlZmluZSBFdmVudENvbnRleHRfaAor
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEV2ZW50VGFyZ2V0OworY2xhc3MgRXZlbnQ7CitjbGFzcyBOb2RlOworCitjbGFzcyBFdmVudENv
bnRleHQgeworcHVibGljOgorICAgIC8vIEZJWE1FOiBVc2UgQ29udGFpbmVyTm9kZSBpbnN0ZWFk
IG9mIE5vZGUuCisgICAgRXZlbnRDb250ZXh0KFBhc3NSZWZQdHI8Tm9kZT4sIFBhc3NSZWZQdHI8
RXZlbnRUYXJnZXQ+IGN1cnJlbnRUYXJnZXQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHRhcmdl
dCk7CisKKyAgICBOb2RlKiBub2RlKCkgY29uc3Q7CisgICAgRXZlbnRUYXJnZXQqIHRhcmdldCgp
IGNvbnN0OworICAgIHZvaWQgaGFuZGxlTG9jYWxFdmVudHMoRXZlbnQqKSBjb25zdDsKKworcHJp
dmF0ZToKKyAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlOworICAgIFJlZlB0cjxFdmVudFRhcmdldD4g
bV9jdXJyZW50VGFyZ2V0OworICAgIFJlZlB0cjxFdmVudFRhcmdldD4gbV90YXJnZXQ7Cit9Owor
CitpbmxpbmUgTm9kZSogRXZlbnRDb250ZXh0Ojpub2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9ub2RlLmdldCgpOworfQorCitpbmxpbmUgRXZlbnRUYXJnZXQqIEV2ZW50Q29udGV4dDo6dGFy
Z2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90YXJnZXQuZ2V0KCk7Cit9CisKK30KKworI2Vu
ZGlmIC8vIEV2ZW50Q29udGV4dF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBi
L1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGU0NWJhYTQ5NTcwMzUwMDc0YTRmZTE4MDA3MjAw
NGRhYjgxYjYwZjMuLmZmNzg1NmFhNmEyYzg2Nzc5Zjg4YjhkZDgyNjcxNjk0YTQzYjgxY2IgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRHluYW1pY05vZGVMaXN0LmgiCiAjaW5jbHVk
ZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRDb250ZXh0
LmgiCiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIu
aCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCkBAIC04MCw2ICs4MSw3IEBACiAjaW5jbHVk
ZSAiV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJXZWJLaXRUcmFuc2l0aW9uRXZl
bnQuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiV2luZG93RXZlbnRDb250
ZXh0LmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC03MzQsOSArNzM2LDkgQEAgaW5saW5lIHZvaWQg
Tm9kZTo6c2V0U3R5bGVDaGFuZ2UoU3R5bGVDaGFuZ2VUeXBlIGNoYW5nZVR5cGUpCiAKIGlubGlu
ZSB2b2lkIE5vZGU6Om1hcmtBbmNlc3RvcnNXaXRoQ2hpbGROZWVkc1N0eWxlUmVjYWxjKCkKIHsK
LSAgICBmb3IgKENvbnRhaW5lck5vZGUqIHAgPSBwYXJlbnROb2RlKCk7IHAgJiYgIXAtPmNoaWxk
TmVlZHNTdHlsZVJlY2FsYygpOyBwID0gcC0+cGFyZW50Tm9kZSgpKQorICAgIGZvciAoQ29udGFp
bmVyTm9kZSogcCA9IHBhcmVudE9ySG9zdE5vZGUoKTsgcCAmJiAhcC0+Y2hpbGROZWVkc1N0eWxl
UmVjYWxjKCk7IHAgPSBwLT5wYXJlbnRPckhvc3ROb2RlKCkpCiAgICAgICAgIHAtPnNldENoaWxk
TmVlZHNTdHlsZVJlY2FsYygpOwotICAgIAorCiAgICAgaWYgKGRvY3VtZW50KCktPmNoaWxkTmVl
ZHNTdHlsZVJlY2FsYygpKQogICAgICAgICBkb2N1bWVudCgpLT5zY2hlZHVsZVN0eWxlUmVjYWxj
KCk7CiB9CkBAIC0xMzIxLDcgKzEzMjMsNyBAQCB2b2lkIE5vZGU6OmNyZWF0ZVJlbmRlcmVySWZO
ZWVkZWQoKQogCiAgICAgQVNTRVJUKCFyZW5kZXJlcigpKTsKICAgICAKLSAgICBDb250YWluZXJO
b2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlKCk7ICAgIAorICAgIENvbnRhaW5lck5vZGUqIHBhcmVu
dCA9IHBhcmVudE9ySG9zdE5vZGUoKTsKICAgICBBU1NFUlQocGFyZW50KTsKICAgICAKICAgICBS
ZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpOwpAQCAtMjIz
OSwxNCArMjI0MSw5IEBAIHZvaWQgTm9kZTo6Z2V0U3VicmVzb3VyY2VVUkxzKExpc3RIYXNoU2V0
PEtVUkw+JiB1cmxzKSBjb25zdAogICAgIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxz
KTsKIH0KIAotQ29udGFpbmVyTm9kZSogTm9kZTo6ZXZlbnRQYXJlbnROb2RlKCkKLXsKLSAgICBy
ZXR1cm4gcGFyZW50Tm9kZSgpOwotfQotCiBOb2RlKiBOb2RlOjplbmNsb3NpbmdMaW5rRXZlbnRQ
YXJlbnRPclNlbGYoKQogewotICAgIGZvciAoTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUg
PSBub2RlLT5ldmVudFBhcmVudE5vZGUoKSkgeworICAgIGZvciAoTm9kZSogbm9kZSA9IHRoaXM7
IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKICAgICAgICAgLy8gRm9y
IGltYWdlbWFwcywgdGhlIGVuY2xvc2luZyBsaW5rIG5vZGUgaXMgdGhlIGFzc29jaWF0ZWQgYXJl
YSBlbGVtZW50IG5vdCB0aGUgaW1hZ2UgaXRzZWxmLgogICAgICAgICAvLyBTbyB3ZSBkb24ndCBs
ZXQgaW1hZ2VzIGJlIHRoZSBlbmNsb3NpbmdMaW5rTm9kZSwgZXZlbiB0aG91Z2ggaXNMaW5rIHNv
bWV0aW1lcyByZXR1cm5zIHRydWUKICAgICAgICAgLy8gZm9yIHRoZW0uCkBAIC0yNDg0LDEyICsy
NDgxLDEzIEBAIHZvaWQgTm9kZTo6aGFuZGxlTG9jYWxFdmVudHMoRXZlbnQqIGV2ZW50KQogICAg
IGZpcmVFdmVudExpc3RlbmVycyhldmVudCk7CiB9CiAKLSNpZiBFTkFCTEUoU1ZHKQotc3RhdGlj
IGlubGluZSBTVkdFbGVtZW50SW5zdGFuY2UqIGV2ZW50VGFyZ2V0QXNTVkdFbGVtZW50SW5zdGFu
Y2UoTm9kZSogcmVmZXJlbmNlTm9kZSkKK3N0YXRpYyBpbmxpbmUgRXZlbnRUYXJnZXQqIGV2ZW50
VGFyZ2V0UmVzcGVjdGluZ1NWR1RhcmdldFJ1bGVzKE5vZGUqIHJlZmVyZW5jZU5vZGUpCiB7CiAg
ICAgQVNTRVJUKHJlZmVyZW5jZU5vZGUpOworCisjaWYgRU5BQkxFKFNWRykKICAgICBpZiAoIXJl
ZmVyZW5jZU5vZGUtPmlzU1ZHRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIHJlZmVyZW5jZU5vZGU7CiAKICAgICAvLyBTcGVjOiBUaGUgZXZlbnQgaGFuZGxpbmcg
Zm9yIHRoZSBub24tZXhwb3NlZCB0cmVlIHdvcmtzIGFzIGlmIHRoZSByZWZlcmVuY2VkIGVsZW1l
bnQgaGFkIGJlZW4gdGV4dHVhbGx5IGluY2x1ZGVkCiAgICAgLy8gYXMgYSBkZWVwbHkgY2xvbmVk
IGNoaWxkIG9mIHRoZSAndXNlJyBlbGVtZW50LCBleGNlcHQgdGhhdCBldmVudHMgYXJlIGRpc3Bh
dGNoZWQgdG8gdGhlIFNWR0VsZW1lbnRJbnN0YW5jZSBvYmplY3RzCkBAIC0yNTAzLDM2ICsyNTAx
LDM5IEBAIHN0YXRpYyBpbmxpbmUgU1ZHRWxlbWVudEluc3RhbmNlKiBldmVudFRhcmdldEFzU1ZH
RWxlbWVudEluc3RhbmNlKE5vZGUqIHJlZmVyZW5jCiAgICAgICAgIGlmIChTVkdFbGVtZW50SW5z
dGFuY2UqIGluc3RhbmNlID0gc3RhdGljX2Nhc3Q8U1ZHVXNlRWxlbWVudCo+KHNoYWRvd1RyZWVQ
YXJlbnRFbGVtZW50KS0+aW5zdGFuY2VGb3JTaGFkb3dUcmVlRWxlbWVudChyZWZlcmVuY2VOb2Rl
KSkKICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9Ci0KLSAgICByZXR1cm4gMDsK
LX0KLSNlbmRpZgotCi1zdGF0aWMgaW5saW5lIEV2ZW50VGFyZ2V0KiBldmVudFRhcmdldFJlc3Bl
Y3RpbmdTVkdUYXJnZXRSdWxlcyhOb2RlKiByZWZlcmVuY2VOb2RlKQotewotICAgIEFTU0VSVChy
ZWZlcmVuY2VOb2RlKTsKLQotI2lmIEVOQUJMRShTVkcpCi0gICAgaWYgKFNWR0VsZW1lbnRJbnN0
YW5jZSogaW5zdGFuY2UgPSBldmVudFRhcmdldEFzU1ZHRWxlbWVudEluc3RhbmNlKHJlZmVyZW5j
ZU5vZGUpKSB7Ci0gICAgICAgIEFTU0VSVChpbnN0YW5jZS0+c2hhZG93VHJlZUVsZW1lbnQoKSA9
PSByZWZlcmVuY2VOb2RlKTsKLSAgICAgICAgcmV0dXJuIGluc3RhbmNlOwotICAgIH0KICNlbmRp
ZgogCiAgICAgcmV0dXJuIHJlZmVyZW5jZU5vZGU7CiB9CiAKLXZvaWQgTm9kZTo6ZXZlbnRBbmNl
c3RvcnMoVmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+ICZhbmNlc3RvcnMpCit2b2lkIE5v
ZGU6OmdldEV2ZW50QW5jZXN0b3JzKFZlY3RvcjxFdmVudENvbnRleHQ+JiBhbmNlc3RvcnMsIEV2
ZW50VGFyZ2V0KiBvcmlnaW5hbFRhcmdldCkKIHsKLSAgICBpZiAoaW5Eb2N1bWVudCgpKSB7Ci0g
ICAgICAgIGZvciAoQ29udGFpbmVyTm9kZSogYW5jZXN0b3IgPSBldmVudFBhcmVudE5vZGUoKTsg
YW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPmV2ZW50UGFyZW50Tm9kZSgpKSB7CisgICAg
aWYgKCFpbkRvY3VtZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEV2ZW50VGFyZ2V0KiB0
YXJnZXQgPSBvcmlnaW5hbFRhcmdldDsKKyAgICBOb2RlKiBhbmNlc3RvciA9IHRoaXM7CisgICAg
Ym9vbCBzaG91bGRTa2lwTmV4dEFuY2VzdG9yID0gZmFsc2U7CisgICAgd2hpbGUgKHRydWUpIHsK
KyAgICAgICAgaWYgKGFuY2VzdG9yLT5pc1NoYWRvd05vZGUoKSkgeworICAgICAgICAgICAgYW5j
ZXN0b3IgPSBhbmNlc3Rvci0+c2hhZG93UGFyZW50Tm9kZSgpOworICAgICAgICAgICAgaWYgKCFz
aG91bGRTa2lwTmV4dEFuY2VzdG9yKQorICAgICAgICAgICAgICAgIHRhcmdldCA9IGFuY2VzdG9y
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVu
dE5vZGUoKTsKKworICAgICAgICBpZiAoIWFuY2VzdG9yKQorICAgICAgICAgICAgcmV0dXJuOwor
CiAjaWYgRU5BQkxFKFNWRykKLSAgICAgICAgICAgIC8vIFNraXAgPHVzZT4gc2hhZG93IHRyZWUg
ZWxlbWVudHMuCi0gICAgICAgICAgICBpZiAoYW5jZXN0b3ItPmlzU1ZHRWxlbWVudCgpICYmIGFu
Y2VzdG9yLT5pc1NoYWRvd05vZGUoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgLy8gU2tpcCBTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQuCisgICAgICAgIHNob3VsZFNraXBO
ZXh0QW5jZXN0b3IgPSBhbmNlc3Rvci0+aXNTVkdFbGVtZW50KCkgJiYgYW5jZXN0b3ItPmlzU2hh
ZG93Tm9kZSgpOworICAgICAgICBpZiAoc2hvdWxkU2tpcE5leHRBbmNlc3RvcikKKyAgICAgICAg
ICAgIGNvbnRpbnVlOwogI2VuZGlmCi0gICAgICAgICAgICBhbmNlc3RvcnMuYXBwZW5kKGFuY2Vz
dG9yKTsKLSAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogVW5yb2xsIHRoZSBleHRyYSBsb29w
IGluc2lkZSBldmVudFRhcmdldFJlc3BlY3RpbmdTVkdUYXJnZXRSdWxlcyBpbnRvIHRoaXMgbG9v
cC4KKyAgICAgICAgYW5jZXN0b3JzLmFwcGVuZChFdmVudENvbnRleHQoYW5jZXN0b3IsIGV2ZW50
VGFyZ2V0UmVzcGVjdGluZ1NWR1RhcmdldFJ1bGVzKGFuY2VzdG9yKSwgdGFyZ2V0KSk7CisKICAg
ICB9CiB9CiAKQEAgLTI1NDcsNiArMjU0OCwxMSBAQCBib29sIE5vZGU6OmRpc3BhdGNoRXZlbnQo
UGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiAgICAgcmV0dXJuIGRpc3BhdGNoR2VuZXJpY0V2
ZW50KGV2ZW50LnJlbGVhc2UoKSk7CiB9CiAKK3N0YXRpYyBjb25zdCBFdmVudENvbnRleHQqIHRv
cEV2ZW50Q29udGV4dChjb25zdCBWZWN0b3I8RXZlbnRDb250ZXh0PiYgYW5jZXN0b3JzKQorewor
ICAgIHJldHVybiBhbmNlc3RvcnMuaXNFbXB0eSgpID8gMCA6ICYoYW5jZXN0b3JzLmxhc3QoKSk7
Cit9CisKIGJvb2wgTm9kZTo6ZGlzcGF0Y2hHZW5lcmljRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4g
cHJwRXZlbnQpCiB7CiAgICAgUmVmUHRyPEV2ZW50PiBldmVudChwcnBFdmVudCk7CkBAIC0yNTU5
LDIwICsyNTY1LDEzIEBAIGJvb2wgTm9kZTo6ZGlzcGF0Y2hHZW5lcmljRXZlbnQoUGFzc1JlZlB0
cjxFdmVudD4gcHJwRXZlbnQpCiAgICAgLy8gSWYgdGhlIG5vZGUgaXMgbm90IGluIGEgZG9jdW1l
bnQganVzdCBzZW5kIHRoZSBldmVudCB0byBpdC4KICAgICAvLyBCZSBzdXJlIHRvIHJlZiBhbGwg
b2Ygbm9kZXMgc2luY2UgZXZlbnQgaGFuZGxlcnMgY291bGQgcmVzdWx0IGluIHRoZSBsYXN0IHJl
ZmVyZW5jZSBnb2luZyBhd2F5LgogICAgIFJlZlB0cjxOb2RlPiB0aGlzTm9kZSh0aGlzKTsKLSAg
ICBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4gYW5jZXN0b3JzOwotICAgIGV2ZW50QW5j
ZXN0b3JzKGFuY2VzdG9ycyk7CisgICAgUmVmUHRyPEV2ZW50VGFyZ2V0PiBvcmlnaW5hbFRhcmdl
dCA9IGV2ZW50LT50YXJnZXQoKTsKKyAgICBWZWN0b3I8RXZlbnRDb250ZXh0PiBhbmNlc3RvcnM7
CisgICAgZ2V0RXZlbnRBbmNlc3RvcnMoYW5jZXN0b3JzLCBvcmlnaW5hbFRhcmdldC5nZXQoKSk7
CiAKLSAgICAvLyBTZXQgdXAgYSBwb2ludGVyIHRvIGluZGljYXRlIHdoZXRoZXIgLyB3aGVyZSB0
byBkaXNwYXRjaCB3aW5kb3cgZXZlbnRzLgotICAgIC8vIFdlIGRvbid0IGRpc3BhdGNoIGxvYWQg
ZXZlbnRzIHRvIHRoZSB3aW5kb3cuIFRoYXQgcXVpcmsgd2FzIG9yaWdpbmFsbHkKLSAgICAvLyBh
ZGRlZCBiZWNhdXNlIE1vemlsbGEgZG9lc24ndCBwcm9wYWdhdGUgbG9hZCBldmVudHMgdG8gdGhl
IHdpbmRvdyBvYmplY3QuCi0gICAgRE9NV2luZG93KiB0YXJnZXRGb3JXaW5kb3dFdmVudHMgPSAw
OwotICAgIGlmIChldmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpIHsKLSAg
ICAgICAgTm9kZSogdG9wTGV2ZWxDb250YWluZXIgPSBhbmNlc3RvcnMuaXNFbXB0eSgpID8gdGhp
cyA6IGFuY2VzdG9ycy5sYXN0KCkuZ2V0KCk7Ci0gICAgICAgIGlmICh0b3BMZXZlbENvbnRhaW5l
ci0+aXNEb2N1bWVudE5vZGUoKSkKLSAgICAgICAgICAgIHRhcmdldEZvcldpbmRvd0V2ZW50cyA9
IHN0YXRpY19jYXN0PERvY3VtZW50Kj4odG9wTGV2ZWxDb250YWluZXIpLT5kb21XaW5kb3coKTsK
LSAgICB9CisgICAgV2luZG93RXZlbnRDb250ZXh0IHdpbmRvd0NvbnRleHQoZXZlbnQuZ2V0KCks
IHRoaXMsIHRvcEV2ZW50Q29udGV4dChhbmNlc3RvcnMpKTsKIAotICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxE
aXNwYXRjaEV2ZW50KGRvY3VtZW50KCksICpldmVudCwgdGFyZ2V0Rm9yV2luZG93RXZlbnRzLCB0
aGlzLCBhbmNlc3RvcnMpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29r
aWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50KGRvY3VtZW50
KCksICpldmVudCwgd2luZG93Q29udGV4dC53aW5kb3coKSwgdGhpcywgYW5jZXN0b3JzKTsKIAog
ICAgIC8vIEdpdmUgdGhlIHRhcmdldCBub2RlIGEgY2hhbmNlIHRvIGRvIHNvbWUgd29yayBiZWZv
cmUgRE9NIGV2ZW50IGhhbmRsZXJzIGdldCBhIGNyYWNrLgogICAgIHZvaWQqIGRhdGEgPSBwcmVE
aXNwYXRjaEV2ZW50SGFuZGxlcihldmVudC5nZXQoKSk7CkBAIC0yNTgyLDIyICsyNTgxLDE3IEBA
IGJvb2wgTm9kZTo6ZGlzcGF0Y2hHZW5lcmljRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZl
bnQpCiAgICAgLy8gVHJpZ2dlciBjYXB0dXJpbmcgZXZlbnQgaGFuZGxlcnMsIHN0YXJ0aW5nIGF0
IHRoZSB0b3AgYW5kIHdvcmtpbmcgb3VyIHdheSBkb3duLgogICAgIGV2ZW50LT5zZXRFdmVudFBo
YXNlKEV2ZW50OjpDQVBUVVJJTkdfUEhBU0UpOwogCi0gICAgaWYgKHRhcmdldEZvcldpbmRvd0V2
ZW50cykgewotICAgICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh0YXJnZXRGb3JXaW5kb3dF
dmVudHMpOwotICAgICAgICB0YXJnZXRGb3JXaW5kb3dFdmVudHMtPmZpcmVFdmVudExpc3RlbmVy
cyhldmVudC5nZXQoKSk7Ci0gICAgICAgIGlmIChldmVudC0+cHJvcGFnYXRpb25TdG9wcGVkKCkp
Ci0gICAgICAgICAgICBnb3RvIGRvbmVEaXNwYXRjaGluZzsKLSAgICB9CisgICAgaWYgKHdpbmRv
d0NvbnRleHQuaGFuZGxlTG9jYWxFdmVudHMoZXZlbnQuZ2V0KCkpICYmIGV2ZW50LT5wcm9wYWdh
dGlvblN0b3BwZWQoKSkKKyAgICAgICAgZ290byBkb25lRGlzcGF0Y2hpbmc7CisKICAgICBmb3Ig
KHNpemVfdCBpID0gYW5jZXN0b3JzLnNpemUoKTsgaTsgLS1pKSB7Ci0gICAgICAgIENvbnRhaW5l
ck5vZGUqIGFuY2VzdG9yID0gYW5jZXN0b3JzW2kgLSAxXS5nZXQoKTsKLSAgICAgICAgZXZlbnQt
PnNldEN1cnJlbnRUYXJnZXQoZXZlbnRUYXJnZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0UnVsZXMoYW5j
ZXN0b3IpKTsKLSAgICAgICAgYW5jZXN0b3ItPmhhbmRsZUxvY2FsRXZlbnRzKGV2ZW50LmdldCgp
KTsKKyAgICAgICAgYW5jZXN0b3JzW2kgLSAxXS5oYW5kbGVMb2NhbEV2ZW50cyhldmVudC5nZXQo
KSk7CiAgICAgICAgIGlmIChldmVudC0+cHJvcGFnYXRpb25TdG9wcGVkKCkpCiAgICAgICAgICAg
ICBnb3RvIGRvbmVEaXNwYXRjaGluZzsKICAgICB9CiAKICAgICBldmVudC0+c2V0RXZlbnRQaGFz
ZShFdmVudDo6QVRfVEFSR0VUKTsKLQorICAgIGV2ZW50LT5zZXRUYXJnZXQob3JpZ2luYWxUYXJn
ZXQuZ2V0KCkpOwogICAgIGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KGV2ZW50VGFyZ2V0UmVzcGVj
dGluZ1NWR1RhcmdldFJ1bGVzKHRoaXMpKTsKICAgICBoYW5kbGVMb2NhbEV2ZW50cyhldmVudC5n
ZXQoKSk7CiAgICAgaWYgKGV2ZW50LT5wcm9wYWdhdGlvblN0b3BwZWQoKSkKQEAgLTI2MDksMjEg
KzI2MDMsMTUgQEAgYm9vbCBOb2RlOjpkaXNwYXRjaEdlbmVyaWNFdmVudChQYXNzUmVmUHRyPEV2
ZW50PiBwcnBFdmVudCkKIAogICAgICAgICBzaXplX3Qgc2l6ZSA9IGFuY2VzdG9ycy5zaXplKCk7
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAg
ICBDb250YWluZXJOb2RlKiBhbmNlc3RvciA9IGFuY2VzdG9yc1tpXS5nZXQoKTsKLSAgICAgICAg
ICAgIGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1NWR1Rhcmdl
dFJ1bGVzKGFuY2VzdG9yKSk7Ci0gICAgICAgICAgICBhbmNlc3Rvci0+aGFuZGxlTG9jYWxFdmVu
dHMoZXZlbnQuZ2V0KCkpOwotICAgICAgICAgICAgaWYgKGV2ZW50LT5wcm9wYWdhdGlvblN0b3Bw
ZWQoKSB8fCBldmVudC0+Y2FuY2VsQnViYmxlKCkpCi0gICAgICAgICAgICAgICAgZ290byBkb25l
RGlzcGF0Y2hpbmc7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHRhcmdldEZvcldpbmRvd0V2ZW50
cykgewotICAgICAgICAgICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQodGFyZ2V0Rm9yV2luZG93
RXZlbnRzKTsKLSAgICAgICAgICAgIHRhcmdldEZvcldpbmRvd0V2ZW50cy0+ZmlyZUV2ZW50TGlz
dGVuZXJzKGV2ZW50LmdldCgpKTsKKyAgICAgICAgICAgIGFuY2VzdG9yc1tpXS5oYW5kbGVMb2Nh
bEV2ZW50cyhldmVudC5nZXQoKSk7CiAgICAgICAgICAgICBpZiAoZXZlbnQtPnByb3BhZ2F0aW9u
U3RvcHBlZCgpIHx8IGV2ZW50LT5jYW5jZWxCdWJibGUoKSkKICAgICAgICAgICAgICAgICBnb3Rv
IGRvbmVEaXNwYXRjaGluZzsKICAgICAgICAgfQorICAgICAgICB3aW5kb3dDb250ZXh0LmhhbmRs
ZUxvY2FsRXZlbnRzKGV2ZW50LmdldCgpKTsKICAgICB9CiAKIGRvbmVEaXNwYXRjaGluZzoKKyAg
ICBldmVudC0+c2V0VGFyZ2V0KG9yaWdpbmFsVGFyZ2V0LmdldCgpKTsKICAgICBldmVudC0+c2V0
Q3VycmVudFRhcmdldCgwKTsKICAgICBldmVudC0+c2V0RXZlbnRQaGFzZSgwKTsKIApAQCAtMjY0
NCw4ICsyNjMyLDcgQEAgZG9uZURpc3BhdGNoaW5nOgogICAgICAgICBpZiAoZXZlbnQtPmJ1YmJs
ZXMoKSkgewogICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBhbmNlc3RvcnMuc2l6ZSgpOwogICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAg
ICAgICBDb250YWluZXJOb2RlKiBhbmNlc3RvciA9IGFuY2VzdG9yc1tpXS5nZXQoKTsKLSAgICAg
ICAgICAgICAgICBhbmNlc3Rvci0+ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudC5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAgYW5jZXN0b3JzW2ldLm5vZGUoKS0+ZGVmYXVsdEV2ZW50SGFuZGxlcihl
dmVudC5nZXQoKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFldmVudC0+ZGVmYXVsdFByZXZl
bnRlZCgpKTsKICAgICAgICAgICAgICAgICBpZiAoZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCiAg
ICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZVdpdGhEZWZhdWx0OwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9kb20vTm9kZS5oIGIvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDNjNmMxOTk3MTFiMzRl
MWEwMGE5ZGE4MDExYWY1YTVhZTRkYzY0ZDUuLmRhZDI1ODVlZmM2YzUyODE0MzQ2ZWQ2NTRlZmMx
ZTQ2NTkyYmU5YmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9XZWJDb3Jl
L2RvbS9Ob2RlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEeW5h
bWljTm9kZUxpc3Q7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRXZlbnQ7CitjbGFzcyBFdmVudENv
bnRleHQ7CiBjbGFzcyBFdmVudExpc3RlbmVyOwogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZy
YW1lOwpAQCAtMjA0LDE2ICsyMDUsMTQgQEAgcHVibGljOgogICAgIE5vZGUqIHNoYWRvd0FuY2Vz
dG9yTm9kZSgpOwogICAgIE5vZGUqIHNoYWRvd1RyZWVSb290Tm9kZSgpOwogICAgIGJvb2wgaXNJ
blNoYWRvd1RyZWUoKTsKLQotICAgIC8vIFRoZSBub2RlJ3MgcGFyZW50IGZvciB0aGUgcHVycG9z
ZSBvZiBldmVudCBjYXB0dXJlIGFuZCBidWJibGluZy4KLSAgICB2aXJ0dWFsIENvbnRhaW5lck5v
ZGUqIGV2ZW50UGFyZW50Tm9kZSgpOworICAgIC8vIE5vZGUncyBwYXJlbnQgb3Igc2hhZG93IHRy
ZWUgaG9zdC4KKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnRPckhvc3ROb2RlKCk7CiAKICAgICAv
LyBSZXR1cm5zIHRoZSBlbmNsb3NpbmcgZXZlbnQgcGFyZW50IG5vZGUgKG9yIHNlbGYpIHRoYXQs
IHdoZW4gY2xpY2tlZCwgd291bGQgdHJpZ2dlciBhIG5hdmlnYXRpb24uCiAgICAgTm9kZSogZW5j
bG9zaW5nTGlua0V2ZW50UGFyZW50T3JTZWxmKCk7CiAKICAgICAvLyBOb2RlIGFuY2VzdG9ycyB3
aGVuIGNvbmNlcm5lZCBhYm91dCBldmVudCBmbG93LgotICAgIC8vIEZJWE1FOiBTaG91bGQgYmUg
bmFtZWQgZ2V0RXZlbnRBbmNlc3RvcnMuCi0gICAgdm9pZCBldmVudEFuY2VzdG9ycyhWZWN0b3I8
UmVmUHRyPENvbnRhaW5lck5vZGU+ID4gJmFuY2VzdG9ycyk7CisgICAgdm9pZCBnZXRFdmVudEFu
Y2VzdG9ycyhWZWN0b3I8RXZlbnRDb250ZXh0PiYgYW5jZXN0b3JzLCBFdmVudFRhcmdldCopOwog
CiAgICAgYm9vbCBpc0Jsb2NrRmxvdygpIGNvbnN0OwogICAgIGJvb2wgaXNCbG9ja0Zsb3dPckJs
b2NrVGFibGUoKSBjb25zdDsKQEAgLTY5Myw2ICs2OTIsMTMgQEAgaW5saW5lIHZvaWQgYWRkU3Vi
cmVzb3VyY2VVUkwoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IEtVUkwmIHVybCkKICAg
ICAgICAgdXJscy5hZGQodXJsKTsKIH0KIAoraW5saW5lIENvbnRhaW5lck5vZGUqIE5vZGU6OnBh
cmVudE9ySG9zdE5vZGUoKQoreworICAgIGlmIChDb250YWluZXJOb2RlKiBwYXJlbnQgPSBwYXJl
bnROb2RlKCkpCisgICAgICAgIHJldHVybiBwYXJlbnQ7CisgICAgcmV0dXJuIHNoYWRvd1BhcmVu
dE5vZGUoKTsKK30KKwogfSAvL25hbWVzcGFjZQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vVGV4dC5jcHAgYi9XZWJDb3JlL2RvbS9UZXh0LmNwcAppbmRleCA2Mjcx
ZjExMDY1OWM2YjgwYmI0YzIzYWYwYWE3YzZlMjg1MmU4NWI3Li5mOWE0ZjA0YmMzNjc1ZWVkZjZk
ZTFlYzRiMDllMzNiMjRkOGJiODc3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9UZXh0LmNwcAor
KysgYi9XZWJDb3JlL2RvbS9UZXh0LmNwcApAQCAtMjM5LDEwICsyMzksMTEgQEAgYm9vbCBUZXh0
OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlICpzdHlsZSkKIAogUmVuZGVyT2JqZWN0KiBU
ZXh0OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsK
KyAgICBOb2RlKiBwYXJlbnRPckhvc3QgPSBwYXJlbnRPckhvc3ROb2RlKCk7CiAjaWYgRU5BQkxF
KFNWRykKLSAgICBpZiAocGFyZW50Tm9kZSgpLT5pc1NWR0VsZW1lbnQoKQorICAgIGlmIChwYXJl
bnRPckhvc3QtPmlzU1ZHRWxlbWVudCgpCiAjaWYgRU5BQkxFKFNWR19GT1JFSUdOX09CSkVDVCkK
LSAgICAgICAgJiYgIXBhcmVudE5vZGUoKS0+aGFzVGFnTmFtZShTVkdOYW1lczo6Zm9yZWlnbk9i
amVjdFRhZykKKyAgICAgICAgJiYgIXBhcmVudE9ySG9zdC0+aGFzVGFnTmFtZShTVkdOYW1lczo6
Zm9yZWlnbk9iamVjdFRhZykKICNlbmRpZgogICAgICkKICAgICAgICAgcmV0dXJuIG5ldyAoYXJl
bmEpIFJlbmRlclNWR0lubGluZVRleHQodGhpcywgZGF0YUltcGwoKSk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9XaW5kb3dFdmVudENvbnRleHQuY3BwIGIvV2ViQ29yZS9kb20vV2luZG93RXZl
bnRDb250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGY0YTM2MjdkNjA5ZTU4ODFiNDc5M2MzNDAxZDkx
OGVlZTcyN2ZjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9kb20vV2luZG93RXZlbnRDb250
ZXh0LmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2luZG93RXZlbnRDb250ZXh0LmgiCisKKyNpbmNsdWRlICJET01XaW5k
b3cuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVk
ZSAiRXZlbnRDb250ZXh0LmgiCisjaW5jbHVkZSAiTm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1dpbmRvd0V2ZW50Q29udGV4dDo6V2luZG93RXZlbnRDb250ZXh0KEV2ZW50KiBldmVu
dCwgUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBjb25zdCBFdmVudENvbnRleHQqIHRvcEV2ZW50Q29u
dGV4dCkKK3sKKyAgICAvLyBXZSBkb24ndCBkaXNwYXRjaCBsb2FkIGV2ZW50cyB0byB0aGUgd2lu
ZG93LiBUaGF0IHF1aXJrIHdhcyBvcmlnaW5hbGx5CisgICAgLy8gYWRkZWQgYmVjYXVzZSBNb3pp
bGxhIGRvZXNuJ3QgcHJvcGFnYXRlIGxvYWQgZXZlbnRzIHRvIHRoZSB3aW5kb3cgb2JqZWN0Lgor
ICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpCisgICAgICAg
IHJldHVybjsKKworICAgIE5vZGUqIHRvcExldmVsQ29udGFpbmVyID0gdG9wRXZlbnRDb250ZXh0
ID8gdG9wRXZlbnRDb250ZXh0LT5ub2RlKCkgOiBub2RlLmdldCgpOworICAgIGlmICghdG9wTGV2
ZWxDb250YWluZXItPmlzRG9jdW1lbnROb2RlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
d2luZG93ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPih0b3BMZXZlbENvbnRhaW5lciktPmRvbVdp
bmRvdygpOworICAgIG1fdGFyZ2V0ID0gdG9wRXZlbnRDb250ZXh0ID8gdG9wRXZlbnRDb250ZXh0
LT50YXJnZXQoKSA6IG5vZGUuZ2V0KCk7Cit9CisKK2Jvb2wgV2luZG93RXZlbnRDb250ZXh0Ojpo
YW5kbGVMb2NhbEV2ZW50cyhFdmVudCogZXZlbnQpCit7CisgICAgaWYgKCFtX3dpbmRvdykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZXZlbnQtPnNldFRhcmdldCh0YXJnZXQoKSk7Cisg
ICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQod2luZG93KCkpOworICAgIG1fd2luZG93LT5maXJl
RXZlbnRMaXN0ZW5lcnMoZXZlbnQpOworICAgIHJldHVybiB0cnVlOworfQorCit9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudENvbnRleHQuaCBiL1dlYkNvcmUvZG9tL1dpbmRv
d0V2ZW50Q29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExOWUwNGQxODQwZDFhNjI5OTM0ZTUwY2JlOWQz
OTgzMWI3ZThjMzMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudENv
bnRleHQuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIFdpbmRvd0V2
ZW50Q29udGV4dF9oCisjZGVmaW5lIFdpbmRvd0V2ZW50Q29udGV4dF9oCisKKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NV2luZG93Owor
Y2xhc3MgRXZlbnRUYXJnZXQ7CitjbGFzcyBFdmVudENvbnRleHQ7CitjbGFzcyBFdmVudDsKK2Ns
YXNzIE5vZGU7CisKK2NsYXNzIFdpbmRvd0V2ZW50Q29udGV4dCB7CitwdWJsaWM6CisgICAgV2lu
ZG93RXZlbnRDb250ZXh0KEV2ZW50KiwgUGFzc1JlZlB0cjxOb2RlPiwgY29uc3QgRXZlbnRDb250
ZXh0Kik7CisKKyAgICBET01XaW5kb3cqIHdpbmRvdygpIGNvbnN0OworICAgIEV2ZW50VGFyZ2V0
KiB0YXJnZXQoKSBjb25zdDsKKyAgICBib29sIGhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KiBldmVu
dCk7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPERPTVdpbmRvdz4gbV93aW5kb3c7CisgICAgUmVm
UHRyPEV2ZW50VGFyZ2V0PiBtX3RhcmdldDsKK307CisKK2lubGluZSBET01XaW5kb3cqIFdpbmRv
d0V2ZW50Q29udGV4dDo6d2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93aW5kb3cuZ2V0
KCk7Cit9CisKK2lubGluZSBFdmVudFRhcmdldCogV2luZG93RXZlbnRDb250ZXh0Ojp0YXJnZXQo
KSBjb25zdAoreworICAgIHJldHVybiBtX3RhcmdldC5nZXQoKTsKK30KKworfQorCisjZW5kaWYg
Ly8gV2luZG93RXZlbnRDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcAppbmRleCBjZmI1NWZjNmUwZDc0NzE3NzQ1MGE5MTk1OTI4MjAwNzg1NWRjMzhkLi4wMTY4
OTc1M2NhMGEwMWM5ODRmNjdhZTA3MDgyNmUzNmNhZjM4Mzc5IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJEb2N1bWVudFR5cGUuaCIKICNpbmNsdWRlICJFdmVudC5oIgorI2lu
Y2x1ZGUgIkV2ZW50Q29udGV4dC5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKQEAgLTYwNywxMyAr
NjA4LDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9k
ZShsb25nIG5vZGVJZCwgbG9uZyogb3V0Tm9kZUlkLCBSCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIFRoZSBOb2RlJ3MgRXZlbnQgQW5jZXN0b3JzIChub3QgaW5jbHVkaW5nIHNlbGYpCi0gICAg
VmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+IGFuY2VzdG9yczsKLSAgICBub2RlLT5ldmVu
dEFuY2VzdG9ycyhhbmNlc3RvcnMpOworICAgIFZlY3RvcjxFdmVudENvbnRleHQ+IGFuY2VzdG9y
czsKKyAgICBub2RlLT5nZXRFdmVudEFuY2VzdG9ycyhhbmNlc3RvcnMsIG5vZGUpOwogCiAgICAg
Ly8gTm9kZXMgYW5kIHRoZWlyIExpc3RlbmVycyBmb3IgdGhlIGNvbmNlcm5lZCBldmVudCB0eXBl
cyAob3JkZXIgaXMgdG9wIHRvIGJvdHRvbSkKICAgICBWZWN0b3I8RXZlbnRMaXN0ZW5lckluZm8+
IGV2ZW50SW5mb3JtYXRpb247CiAgICAgZm9yIChzaXplX3QgaSA9IGFuY2VzdG9ycy5zaXplKCk7
IGk7IC0taSkgewotICAgICAgICBDb250YWluZXJOb2RlKiBhbmNlc3RvciA9IGFuY2VzdG9yc1tp
IC0gMV0uZ2V0KCk7CisgICAgICAgIE5vZGUqIGFuY2VzdG9yID0gYW5jZXN0b3JzW2kgLSAxXS5u
b2RlKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgZXZlbnRUeXBlc0xlbmd0aDsg
KytqKSB7CiAgICAgICAgICAgICBBdG9taWNTdHJpbmcmIHR5cGUgPSBldmVudFR5cGVzW2pdOwog
ICAgICAgICAgICAgaWYgKGFuY2VzdG9yLT5oYXNFdmVudExpc3RlbmVycyh0eXBlKSkKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDk0MjAy
YzExNjVlZjExYzM4ZTg4ZjYwZDdiZWRhMTNmYzNkNGJkOWMuLmNmNDE1Mjc5ODU5OWZhNzM4OGU1
YmExYzUxYzRkYmYyYWM2ZTEwMTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAiRE9NV2lu
ZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudENvbnRleHQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdl
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCkBAIC01Myw3ICs1NCw3
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB0aW1lckZpcmVkRXZlbnROYW1lID0gInRpbWVy
RmlyZWQiOwogCiBpbnQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzX2Zyb250ZW5kQ291bnRl
ciA9IDA7CiAKLXN0YXRpYyBib29sIGV2ZW50SGFzTGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9y
PFJlZlB0cjxDb250YWluZXJOb2RlPiA+JiBhbmNlc3RvcnMpCitzdGF0aWMgYm9vbCBldmVudEhh
c0xpc3RlbmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB3aW5k
b3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxFdmVudENvbnRleHQ+JiBhbmNlc3RvcnMpCiB7
CiAgICAgaWYgKHdpbmRvdyAmJiB3aW5kb3ctPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50VHlwZSkp
CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNjIsNyArNjMsNyBAQCBzdGF0aWMgYm9vbCBldmVu
dEhhc0xpc3RlbmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB3
aW5kb3csCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBhbmNlc3RvcnMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgQ29udGFpbmVyTm9kZSogYW5jZXN0
b3IgPSBhbmNlc3RvcnNbaV0uZ2V0KCk7CisgICAgICAgIE5vZGUqIGFuY2VzdG9yID0gYW5jZXN0
b3JzW2ldLm5vZGUoKTsKICAgICAgICAgaWYgKGFuY2VzdG9yLT5oYXNFdmVudExpc3RlbmVycyhl
dmVudFR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTM5LDcgKzE0
MCw2IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRhTW9kaWZp
ZWRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluCiAgICAgICAgIGRvbUFnZW50LT5jaGFyYWN0
ZXJEYXRhTW9kaWZpZWQoY2hhcmFjdGVyRGF0YSk7CiB9CiAKLQogdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKEluc3BlY3RvckNvbnRyb2xs
ZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIGNvbnN0IFN0cmluZyYgdXJsKQogewogI2lmIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKQpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VYSFJSZWFkeVN0YXRlSW1wbChjb25zdCBJbnNwZWN0
b3JJbnN0cnVtCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZENoYW5nZVhIUlJlYWR5U3RhdGUo
KTsKIH0KIAotSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3csIE5v
ZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGFpbmVyTm9kZT4gPiYgYW5jZXN0b3Jz
KQorSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNv
bnRyb2xsZXIsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3csIE5vZGUqIG5v
ZGUsIGNvbnN0IFZlY3RvcjxFdmVudENvbnRleHQ+JiBhbmNlc3RvcnMpCiB7CiAgICAgcGF1c2VP
bk5hdGl2ZUV2ZW50SWZOZWVkZWQoaW5zcGVjdG9yQ29udHJvbGxlciwgbGlzdGVuZXJFdmVudENh
dGVnb3J5VHlwZSwgZXZlbnQudHlwZSgpLCBmYWxzZSk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggMWI2MmVjYjc2Yzc4Mjk3NDhmNDIxNjdm
YjgyM2IzY2Q4ZDY1YzJiNC4uN2YyNDFjNDExODRhNDFmYjY3ZTAwMjI5ZjkwYzEwZDdjZmJhNTYz
ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAg
LTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDaGFyYWN0ZXJEYXRh
OwogY2xhc3MgRWxlbWVudDsKK2NsYXNzIEV2ZW50Q29udGV4dDsKIGNsYXNzIEluc3BlY3RvckNv
bnRyb2xsZXI7CiBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50OwogY2xhc3MgS1VSTDsKQEAg
LTczLDcgKzc0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZENhbGxGdW5jdGlvbihj
b25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBYTUxIdHRwUmVxdWVzdCogcmVxdWVzdCk7CiAgICAgc3RhdGljIHZv
aWQgZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUmKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxE
aXNwYXRjaEV2ZW50KERvY3VtZW50KiwgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdp
bmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+JiBh
bmNlc3RvcnMpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2ls
bERpc3BhdGNoRXZlbnQoRG9jdW1lbnQqLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyog
d2luZG93LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8RXZlbnRDb250ZXh0PiYgYW5jZXN0b3Jz
KTsKICAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50KGNvbnN0IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgd2lsbERpc3BhdGNoRXZlbnRPbldpbmRvdyhGcmFtZSosIGNvbnN0IEV2ZW50JiBldmVu
dCwgRE9NV2luZG93KiB3aW5kb3cpOwogICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnRP
bldpbmRvdyhjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKQEAgLTEzMCw3
ICsxMzEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZENhbGxGdW5jdGlvbkltcGwo
Y29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsQ2hhbmdlWEhSUmVhZHlTdGF0ZUltcGwoSW5z
cGVjdG9yQ29udHJvbGxlciosIFhNTEh0dHBSZXF1ZXN0KiByZXF1ZXN0KTsKICAgICBzdGF0aWMg
dm9pZCBkaWRDaGFuZ2VYSFJSZWFkeVN0YXRlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUmKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IHdpbGxEaXNwYXRjaEV2ZW50SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgY29uc3QgRXZlbnQm
IGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPFJlZlB0
cjxDb250YWluZXJOb2RlPiA+JiBhbmNlc3RvcnMpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3BlY3RvckNvbnRyb2xs
ZXIqLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2RlLCBj
b25zdCBWZWN0b3I8RXZlbnRDb250ZXh0PiYgYW5jZXN0b3JzKTsKICAgICBzdGF0aWMgdm9pZCBk
aWREaXNwYXRjaEV2ZW50SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUm
KTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxEaXNwYXRj
aEV2ZW50T25XaW5kb3dJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBjb25zdCBFdmVudCYgZXZl
bnQsIERPTVdpbmRvdyogd2luZG93KTsKICAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50
T25XaW5kb3dJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwpAQCAt
MjI1LDcgKzIyNiw2IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hh
cmFjdGVyRGF0YU1vZGlmaWVkKERvY3VtZW50KiBkb2N1bWVudCwKICNlbmRpZgogfQogCi0KIGlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRYTUxIdHRwUmVxdWVz
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCkKIHsK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtMjkzLDcgKzI5Myw3IEBAIGlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZShjb25zdCBJbnNw
ZWN0b3JJbnN0CiAjZW5kaWYKIH0KIAotaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50KERvY3VtZW50
KiBkb2N1bWVudCwgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSog
bm9kZSwgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+JiBhbmNlc3RvcnMpCitp
bmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbERpc3BhdGNoRXZlbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBFdmVudCYg
ZXZlbnQsIERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8RXZlbnRD
b250ZXh0PiYgYW5jZXN0b3JzKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKElu
c3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9s
bGVyRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAyOTcwMjU5
MWVlYmZkMzE5Y2E0ZjllYTIwODhhNTNmMTcwNTgyMGM4Li43MWNhOWM4MWQzNWNkNmVjNjAxNDgw
MDAzMTM2NzllMTkwZDZiOWVmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTc2Niw4ICsxNzY2
LDYgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZU1vdXNlRXZlbnRUYXJnZXROb2RlKE5vZGUq
IHRhcmdldE5vZGUsIGNvbnN0IFBsYXRmb3JtTW8KICAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBu
b2RlIGlzIGEgdGV4dCBub2RlLCBkaXNwYXRjaCBvbiB0aGUgcGFyZW50IG5vZGUgLSByZGFyOi8v
NDE5NjY0NgogICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC0+aXNUZXh0Tm9kZSgpKQogICAg
ICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT5wYXJlbnROb2RlKCk7Ci0gICAgICAgIGlmIChyZXN1
bHQpCi0gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQtPnNoYWRvd0FuY2VzdG9yTm9kZSgpOwog
ICAgIH0KICAgICBtX25vZGVVbmRlck1vdXNlID0gcmVzdWx0OwogI2lmIEVOQUJMRShTVkcpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9TaGFkb3dFbGVtZW50LmggYi9XZWJDb3JlL3Jl
bmRlcmluZy9TaGFkb3dFbGVtZW50LmgKaW5kZXggMDRkYjYyYmU3ZjJiYjEwZWIwMjRjZTMwMjNm
ZWQ3MGYyYzMyZGE5Mi4uZjU2NjhlZjIzOTNiYzNhMDMwZDIwYTZlYWY5ZmE4MWNlMThiYzk1NSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvU2hhZG93RWxlbWVudC5oCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1NoYWRvd0VsZW1lbnQuaApAQCAtNDMsMTMgKzQzLDEzIEBAIHByb3RlY3Rl
ZDoKICAgICB7CiAgICAgfQogCi0gICAgSFRNTEVsZW1lbnQqIHNoYWRvd1BhcmVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2hhZG93UGFyZW50OyB9CisgICAgSFRNTEVsZW1lbnQqIHNoYWRvd1BhcmVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93UGFyZW50LmdldCgpOyB9CiAKIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBib29sIGlzU2hhZG93Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAg
ICB2aXJ0dWFsIENvbnRhaW5lck5vZGUqIHNoYWRvd1BhcmVudE5vZGUoKSB7IHJldHVybiBtX3No
YWRvd1BhcmVudDsgfQorICAgIHZpcnR1YWwgQ29udGFpbmVyTm9kZSogc2hhZG93UGFyZW50Tm9k
ZSgpIHsgcmV0dXJuIG1fc2hhZG93UGFyZW50LmdldCgpOyB9CiAKLSAgICBIVE1MRWxlbWVudCog
bV9zaGFkb3dQYXJlbnQ7CisgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX3NoYWRvd1BhcmVudDsK
IH07CiAKIGNsYXNzIFNoYWRvd0Jsb2NrRWxlbWVudCA6IHB1YmxpYyBTaGFkb3dFbGVtZW50PEhU
TUxEaXZFbGVtZW50PiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBi
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDZjMmM0YTI3ODNlYTllMzhhYWZmOTdk
YjlkYjU1NjBmYmNmNGIwNGEuLjNlOWJkYTA3ZGVjYjNjNGI5MjE2MWM2MGFkNDM2ZDc3MjQxMGI2
ZDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC0zNDcsMTMgKzM0Nyw2IEBAIHZvaWQgU1ZHRWxlbWVudDo6
dXBkYXRlQW5pbWF0ZWRTVkdBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29u
c3QKICAgICBjbGVhcklzU3luY2hyb25pemluZ1NWR0F0dHJpYnV0ZXMoKTsKIH0KIAotQ29udGFp
bmVyTm9kZSogU1ZHRWxlbWVudDo6ZXZlbnRQYXJlbnROb2RlKCkKLXsKLSAgICBpZiAoQ29udGFp
bmVyTm9kZSogc2hhZG93UGFyZW50ID0gc2hhZG93UGFyZW50Tm9kZSgpKQotICAgICAgICByZXR1
cm4gc2hhZG93UGFyZW50OwotICAgIHJldHVybiBTdHlsZWRFbGVtZW50OjpldmVudFBhcmVudE5v
ZGUoKTsKLX0KLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRleCA1MTc1
MTVmOTM5ODUzMDQ5ZGExNjcwNzRkM2VlM2U0OThiYzMwYTY4Li45NmU3ZmQ3YWQ0ZDA5ZWQ4NmIz
OTNhNTE4ZDk5NzYzNDk4MjdmZDk5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmgKKysrIGIvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC05OSw4ICs5OSw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdXBwb3J0ZWQoU3RyaW5n
SW1wbCogZmVhdHVyZSwgU3RyaW5nSW1wbCogdmVyc2lvbikgY29uc3Q7CiAKLSAgICAgICAgdmly
dHVhbCBDb250YWluZXJOb2RlKiBldmVudFBhcmVudE5vZGUoKTsKLQogICAgICAgICB2aXJ0dWFs
IGJvb2wgbmVlZHNQZW5kaW5nUmVzb3VyY2VIYW5kbGluZygpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCkgeyB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73131</attachid>
            <date>2010-11-05 15:54:13 -0700</date>
            <delta_ts>2010-11-05 16:16:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46015-20101105155412.patch</filename>
            <type>text/plain</type>
            <size>58271</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0YmI2NWM4Njc4NjM1YjExNDNkYThlNmMxY2NiMjBiOThhNWRlOTAzLi4zMmIzZWI2
NTM0ZDUyNGZhM2ZhNWI5YWQ5MTM2ZmUxNmZhNGY3YTBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMTEtMDUgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
c2hhZG93IERPTS1hd2FyZSBldmVudCB0YXJnZXRpbmcgYW5kIGludHJvZHVjZSBFdmVudENvbnRl
eHQgdG8gdHJhY2sgdGhlIGNvbnRleHQgb2YgZWFjaCBldmVudCBkaXNwYXRjaC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MDE1CisKKyAgICAgICAg
KiBmYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmctMi1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9zc2luZy0yLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9zc2lu
Zy5odG1sOgorICAgICAgICAqIG1lZGlhL2F1ZGlvLWRlbGV0ZS13aGlsZS1zbGlkZXItdGh1bWIt
Y2xpY2tlZC5odG1sOgorCiAyMDEwLTExLTA0ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgbW9yZSBmYWlsaW5nIHRlc3RzIHRvIHRoZSBXaW5kb3dzIFNraXBw
ZWQgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2hhZG93LWJvdW5k
YXJ5LWNyb3NzaW5nLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2hh
ZG93LWJvdW5kYXJ5LWNyb3NzaW5nLTItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzZDYyMGI5
ZDFmZWVmOGViZTEzY2QwZDgzNWJjMTA2ZjkwZmMwYjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmctMi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw3IEBACitUZXN0cyB0byBlbnN1cmUgdGhhdCBzaGFkb3cgRE9NIGJvdW5k
YXJ5IGlzIG5vdCBjcm9zc2VkIGR1cmluZyBldmVudCBwcm9wYWdhdGlvbi4gQ2FuIG9ubHkgcnVu
IHdpdGhpbiBEUlQuCisKK1NlZSBidWcgNDYwMTUgZm9yIGRldGFpbHMuCisKK011dGF0aW9uIGV2
ZW50cyBzaG91bGQgbm90IHByb3BhZ2F0ZSBvdXQgb2YgdGhlIHNoYWRvdyBET006IFBBU1MKK090
aGVyIGV2ZW50cyBzaG91bGQgYmUgcmV0YXJnZXRlZDogUEFTUworQWZ0ZXIgZXZlbnQgZGlzcGF0
Y2gsIHRoZSBldmVudCBvYmplY3Qgc2hvdWxkIG5vdCByZXZlYWwgc2hhZG93IERPTTogUEFTUwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2hhZG93LWJvdW5kYXJ5LWNyb3Nz
aW5nLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9z
c2luZy0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NmODhiMDNmZmI4YjMwNmY2ZjRhNDQwMjY5M2RkODJl
MjgyYTZlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NoYWRv
dy1ib3VuZGFyeS1jcm9zc2luZy0yLmh0bWwKQEAgLTAsMCArMSw4MSBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQ+CisKK3ZhciBsb2dEaXY7CisKK2Z1bmN0aW9uIGxvZyhtc2csIHN1Y2Nlc3Mp
Cit7CisgICAgbG9nRGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
KS50ZXh0Q29udGVudCA9IG1zZyArICc6ICcgKyAoc3VjY2VzcyA/ICdQQVNTJyA6ICdGQUlMJyk7
Cit9CisKK2Z1bmN0aW9uIGNsaWNrT24oZWxlbWVudCkKK3sKKyAgICBpZiAoIXdpbmRvdy5ldmVu
dFNlbmRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgdmFyIHggPSBlbGVtZW50Lm9mZnNldExl
ZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICB2YXIgeSA9IGVsZW1lbnQub2Zmc2V0
VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlVXAoKTsKK30KKwordmFyIHRlc3RzID0geworICAgIG11dGF0aW9uRXZlbnRQcm9wYWdh
dGlvbjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHRleHRhcmVhID0gZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpKTsKKyAg
ICAgICAgdmFyIG11dGF0aW9uRXZlbnRGaXJlZDsKKyAgICAgICAgdGV4dGFyZWEuYWRkRXZlbnRM
aXN0ZW5lcignRE9NU3VidHJlZU1vZGlmaWVkJywgZnVuY3Rpb24oZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgbXV0YXRpb25FdmVudEZpcmVkID0gdHJ1ZTsKKyAgICAgICAgfSwgZmFsc2UpOwor
ICAgICAgICB0ZXh0YXJlYS52YWx1ZSA9ICd0ZXN0JzsKKyAgICAgICAgLy8gVHJpZ2dlciBzdHls
ZSByZWNhbGMgYW5kIHNhZGx5LCB0aGUgYWN0dWFsIG11dGF0aW9uIG9mIHRoZSB0ZXh0YXJlYSBz
aGFkb3cgRE9NLgorICAgICAgICB0ZXh0YXJlYS5vZmZzZXRIZWlnaHQ7CisgICAgICAgIGxvZygn
TXV0YXRpb24gZXZlbnRzIHNob3VsZCBub3QgcHJvcGFnYXRlIG91dCBvZiB0aGUgc2hhZG93IERP
TScsICFtdXRhdGlvbkV2ZW50RmlyZWQpOworICAgICAgICB0ZXh0YXJlYS5wYXJlbnROb2RlLnJl
bW92ZUNoaWxkKHRleHRhcmVhKTsKKyAgICB9LAorICAgIGV2ZW50SW5Qcm9ncmVzczogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdmFyIHRleHRJbnB1dCA9IGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKSk7CisgICAgICAgIHRleHRJbnB1
dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGxvZygnT3RoZXIgZXZlbnRzIHNob3VsZCBiZSByZXRhcmdldGVkJywgZS50YXJnZXQg
PT0gdGV4dElucHV0KTsKKyAgICAgICAgfSwgZmFsc2UpOworICAgICAgICBjbGlja09uKHRleHRJ
bnB1dCk7CisgICAgICAgIHRleHRJbnB1dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRleHRJbnB1
dCk7CisgICAgfSwKKyAgICBmaW5hbEV2ZW50T2JqZWN0OiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICB2YXIgdGV4dElucHV0ID0gZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdpbnB1dCcpKTsKKyAgICAgICAgdmFyIHN0b3JlZEV2ZW50OworICAgICAg
ICB0ZXh0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKQorICAgICAg
ICB7CisgICAgICAgICAgICBzdG9yZWRFdmVudCA9IGU7CisgICAgICAgIH0sIGZhbHNlKTsKKyAg
ICAgICAgY2xpY2tPbih0ZXh0SW5wdXQpOworICAgICAgICBsb2coJ0FmdGVyIGV2ZW50IGRpc3Bh
dGNoLCB0aGUgZXZlbnQgb2JqZWN0IHNob3VsZCBub3QgcmV2ZWFsIHNoYWRvdyBET00nLCBzdG9y
ZWRFdmVudCAmJiBzdG9yZWRFdmVudC50YXJnZXQgPT0gdGV4dElucHV0KTsKKyAgICAgICAgdGV4
dElucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGV4dElucHV0KTsKKyAgICB9Cit9OworCitm
dW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBsb2dE
aXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7CisgICAgZm9yKHZhciB0ZXN0TmFt
ZSBpbiB0ZXN0cykgeworICAgICAgICB0ZXN0c1t0ZXN0TmFtZV0oKTsKKyAgICB9Cit9CisKKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxwPlRlc3Rz
IHRvIGVuc3VyZSB0aGF0IHNoYWRvdyBET00gYm91bmRhcnkgaXMgbm90IGNyb3NzZWQgZHVyaW5n
IGV2ZW50IHByb3BhZ2F0aW9uLiBDYW4gb25seSBydW4gd2l0aGluIERSVC4KKyAgICA8cD5TZWUg
PGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MDE1Ij5i
dWcgNDYwMTU8L2E+IGZvciBkZXRhaWxzLgorICAgIDxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvc2hhZG93LWJvdW5kYXJ5LWNyb3NzaW5nLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRtbAppbmRleCA2
MjNlMDY3M2VjMWNmMzYyNTZmNWVjMTM2N2Q3Y2EzOWJhYmI0MTUzLi5lMDAyMzMzMGUxZGMxNmM2
N2RiOTAxMTE0MjQxYzYzYmIxZWRhMTFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRtbApAQCAtMiwxMSArMiwxMiBAQAog
PGhlYWQ+CiAgICAgPHRpdGxlPjwvdGl0bGU+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgotICAgICAgICB2YXIgZmlyZWQgPSBmYWxzZTsKKyAgICAgICAgdmFyIHN1Y2Nlc3M7
CisgICAgICAgIHZhciB0YXJnZXQ7CiAKICAgICAgICAgZnVuY3Rpb24gc2VsZWN0U3RhcnQoZXZl
bnQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGZpcmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHN1
Y2Nlc3MgPSBldmVudC50YXJnZXQgPT0gdGFyZ2V0OwogICAgICAgICB9CiAKICAgICAgICAgZnVu
Y3Rpb24gdGVzdCgpCkBAIC0xNSw3ICsxNiw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwogCi0gICAgICAg
ICAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpOworICAg
ICAgICAgICAgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpOwogICAg
ICAgICAgICAgdmFyIHggPSB0YXJnZXQub2Zmc2V0TGVmdCArIHRhcmdldC5vZmZzZXRXaWR0aCAv
IDI7CiAgICAgICAgICAgICB2YXIgeSA9IHRhcmdldC5vZmZzZXRUb3AgKyB0YXJnZXQub2Zmc2V0
SGVpZ2h0IC8gMjsKIApAQCAtMjMsNyArMjQsNyBAQAogICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VEb3duKCk7CiAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CiAKLSAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lclRleHQgPSBmaXJl
ZCA/ICJGQUlMIiA6ICJQQVNTIjsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQiKS5pbm5lclRleHQgPSAhc3VjY2VzcyA/ICJGQUlMIiA6ICJQQVNTIjsKICAgICAg
ICAgfQogCiAgICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdHN0YXJ0Iiwgc2VsZWN0U3Rh
cnQsIHRydWUpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvYXVkaW8tZGVsZXRlLXdo
aWxlLXNsaWRlci10aHVtYi1jbGlja2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9hdWRpby1k
ZWxldGUtd2hpbGUtc2xpZGVyLXRodW1iLWNsaWNrZWQuaHRtbAppbmRleCBjNWExNmE4Mzk3NTJi
YjU3MzAyMTQ1Mjc0ZTE0YTFiZGZkMDI0MTc1Li44ZDI1ZThhNTkwNjNiNTkyNjU1OGE2YzhkMzM0
ZTdmNTRmMmVmN2VkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS9hdWRpby1kZWxldGUt
d2hpbGUtc2xpZGVyLXRodW1iLWNsaWNrZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9h
dWRpby1kZWxldGUtd2hpbGUtc2xpZGVyLXRodW1iLWNsaWNrZWQuaHRtbApAQCAtNTAsMTEgKzUw
LDExIEBACiAKICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnYXVkaW8nKTsKIAotICAgICAgICAgICAgICAgIHZhciBtaWRkbGUgPSBhdWRpby5vZmZz
ZXRMZWZ0ICsgKGF1ZGlvLm9mZnNldFdpZHRoIC8gMik7Ci0gICAgICAgICAgICAgICAgdmFyIGJv
dHRvbSA9IGF1ZGlvLm9mZnNldFRvcCArIGF1ZGlvLm9mZnNldEhlaWdodDsKKyAgICAgICAgICAg
ICAgICB2YXIgY2VudGVyID0gYXVkaW8ub2Zmc2V0TGVmdCArIChhdWRpby5vZmZzZXRXaWR0aCAv
IDIpOworICAgICAgICAgICAgICAgIHZhciBtaWRkbGUgPSBhdWRpby5vZmZzZXRUb3AgKyAoYXVk
aW8ub2Zmc2V0SGVpZ2h0IC8gMik7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
dmFyIHggPSBtaWRkbGUgKyAxNiArIDE2ICsgODsKLSAgICAgICAgICAgICAgICB2YXIgeSA9IGJv
dHRvbSAtIDg7CisgICAgICAgICAgICAgICAgdmFyIHggPSBjZW50ZXIgKyAxNiArIDE2ICsgODsK
KyAgICAgICAgICAgICAgICB2YXIgeSA9IG1pZGRsZTsKIAogICAgICAgICAgICAgICAgIC8vIGRy
YWcgc2xpZGVyLCBsZWF2ZSB0aGUgbW91c2UgZG93bgogICAgICAgICAgICAgICAgIGxvZygiY2xp
Y2tpbmcgaW4gY29udHJvbGxlciIpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9BbmRyb2lkLm1rIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCmluZGV4IDA1OGZhYzMyZGJjYTg1ZjFkOTM5NTNiZmZiMzBkZWM3
Zjk2MWUwYWMuLjJiNTgwMzBmMWI4OTI2NmYxYzM0ZTcyN2NmZTM5NzdhMjk5MWZjZmQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvQW5kcm9pZC5taworKysgYi9XZWJDb3JlL0FuZHJvaWQubWsKQEAgLTEz
Miw2ICsxMzIsNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NBTF9TUkNfRklMRVMpIFwKIAlk
b20vRW50aXR5UmVmZXJlbmNlLmNwcCBcCiAJZG9tL0Vycm9yRXZlbnQuY3BwIFwKIAlkb20vRXZl
bnQuY3BwIFwKKwlkb20vRXZlbnRDb250ZXh0LmNwcCBcCiAJZG9tL0V2ZW50TmFtZXMuY3BwIFwK
IAlkb20vRXZlbnRUYXJnZXQuY3BwIFwKIAlkb20vRXhjZXB0aW9uQmFzZS5jcHAgXApAQCAtMTky
LDYgKzE5Myw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCWRv
bS9XZWJLaXRBbmltYXRpb25FdmVudC5jcHAgXAogCWRvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQu
Y3BwIFwKIAlkb20vV2hlZWxFdmVudC5jcHAgXAorCWRvbS9XaW5kb3dFdmVudENvbnRleHQuY3Bw
IFwKIAlkb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwIFwKIAlkb20vWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcCBcCiAJZG9tL1hNTERvY3VtZW50UGFyc2VyU2NvcGUuY3BwIFwKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IGQ5YzcyYzIyNjc3MWFiZmMyZGRmNDUxODk1MTE4MjU1ZTAwN2U3YzguLjYzMjU5OGY2MmY3NDQ3
NzUzZGEzYzhjYWY5NGRlOGFlZDdiNTQzZGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODI0LDYgKzgyNCw3IEBAIFNF
VChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vRW50aXR5UmVmZXJlbmNlLmNwcAogICAgIGRvbS9F
cnJvckV2ZW50LmNwcAogICAgIGRvbS9FdmVudC5jcHAKKyAgICBkb20vRXZlbnRDb250ZXh0LmNw
cAogICAgIGRvbS9FdmVudE5hbWVzLmNwcAogICAgIGRvbS9FdmVudFRhcmdldC5jcHAKICAgICBk
b20vRXhjZXB0aW9uQmFzZS5jcHAKQEAgLTg4MSw2ICs4ODIsNyBAQCBTRVQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcAogICAgIGRvbS9XZWJLaXRUcmFu
c2l0aW9uRXZlbnQuY3BwCiAgICAgZG9tL1doZWVsRXZlbnQuY3BwCisgICAgZG9tL1dpbmRvd0V2
ZW50Q29udGV4dC5jcHAKICAgICBkb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwCiAgICAgZG9tL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKICAgICBkb20vWE1MRG9jdW1lbnRQYXJzZXJTY29w
ZS5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMWYzMWE5M2RkODFjZmU1NGVkZTYyMDc1MTExZGIzMWFlZTJlYTU0OC4uZWNhYzZiNzJh
MmRhNjA0ZjhjZWMwZjM4ZjA3ZDE1NDNjY2FjZjYxZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NSBAQAorMjAxMC0xMS0w
NSAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBzaGFkb3cgRE9N
LWF3YXJlIGV2ZW50IHRhcmdldGluZyBhbmQgaW50cm9kdWNlIEV2ZW50Q29udGV4dCB0byB0cmFj
ayB0aGUgY29udGV4dCBvZiBlYWNoIGV2ZW50IGRpc3BhdGNoLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYwMTUKKworICAgICAgICBUZXN0OiBmYXN0
L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmctMi5odG1sCisKKyAgICAgICAgKiBBbmRy
b2lkLm1rOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAg
ICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6bm90aWZ5Q2hpbGRJbnNlcnRlZCk6CisgICAgICAgICog
ZG9tL0RPTUFsbEluT25lLmNwcDoKKyAgICAgICAgKiBkb20vRXZlbnRDb250ZXh0LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFdmVudENvbnRleHQ6OkV2ZW50Q29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudENvbnRleHQ6OmhhbmRsZUxvY2FsRXZlbnRzKToKKyAgICAgICAg
KiBkb20vRXZlbnRDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRDb250
ZXh0Ojpub2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50Q29udGV4dDo6dGFyZ2V0KToKKyAg
ICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjptYXJrQW5jZXN0
b3JzV2l0aENoaWxkTmVlZHNTdHlsZVJlY2FsYyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpj
cmVhdGVSZW5kZXJlcklmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmVuY2xvc2lu
Z0xpbmtFdmVudFBhcmVudE9yU2VsZik6CisgICAgICAgIChXZWJDb3JlOjpldmVudFRhcmdldFJl
c3BlY3RpbmdTVkdUYXJnZXRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpnZXRFdmVu
dEFuY2VzdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjp0b3BFdmVudENvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hHZW5lcmljRXZlbnQpOgorICAgICAgICAqIGRvbS9O
b2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpwYXJlbnRPckhvc3ROb2RlKToKKyAgICAg
ICAgKiBkb20vVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0OjpjcmVhdGVSZW5kZXJl
cik6CisgICAgICAgICogZG9tL1dpbmRvd0V2ZW50Q29udGV4dC5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V2luZG93RXZlbnRDb250ZXh0OjpXaW5kb3dFdmVudENvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2luZG93RXZlbnRDb250ZXh0OjpoYW5kbGVMb2NhbEV2ZW50cyk6Cisg
ICAgICAgICogZG9tL1dpbmRvd0V2ZW50Q29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldpbmRvd0V2ZW50Q29udGV4dDo6d2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRv
d0V2ZW50Q29udGV4dDo6dGFyZ2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50
TGlzdGVuZXJzRm9yTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpldmVudEhhc0xpc3RlbmVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50
SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hF
dmVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVNb3VzZUV2ZW50VGFyZ2V0Tm9kZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpzdWJ0cmVlSGFzQ2hhbmdlZCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1NoYWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d0VsZW1lbnQ6OnNoYWRvd1BhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dFbGVtZW50
OjpzaGFkb3dQYXJlbnROb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJUZXh0RWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3Bw
OgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisKIDIwMTAtMTEtMDQgIE5pa29sYXMgWmlt
bWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
cmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCmluZGV4IGU3NmZjYjJkZjA4ZjRkYzE2OGRkYzdlNTZlYzY0MDJiNGM3
ODkxZGUuLmUwYTJlOWEzOGY4MGZiYWI0ZWRmYmVjMzNiODBlMTk0M2NkMzNmYzUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpA
QCAtMTEzMyw4ICsxMTMzLDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9kb20v
RXJyb3JFdmVudC5jcHAgXAogCVdlYkNvcmUvZG9tL0Vycm9yRXZlbnQuaCBcCiAJV2ViQ29yZS9k
b20vRXZlbnQuY3BwIFwKLQlXZWJDb3JlL2RvbS9FdmVudEV4Y2VwdGlvbi5oIFwKIAlXZWJDb3Jl
L2RvbS9FdmVudC5oIFwKKwlXZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwIFwKKwlXZWJDb3Jl
L2RvbS9FdmVudENvbnRleHQuaCBcCisJV2ViQ29yZS9kb20vRXZlbnRFeGNlcHRpb24uaCBcCiAJ
V2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oIFwKIAlXZWJDb3JlL2RvbS9FdmVudE5hbWVzLmNw
cCBcCiAJV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIFwKQEAgLTEyNjIsNiArMTI2NCw4IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lmgg
XAogCVdlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwIFwKIAlXZWJDb3JlL2RvbS9XaGVlbEV2ZW50
LmggXAorCVdlYkNvcmUvZG9tL1dpbmRvd0V2ZW50Q29udGV4dC5jcHAgXAorCVdlYkNvcmUvZG9t
L1dpbmRvd0V2ZW50Q29udGV4dC5oIFwKIAlXZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5j
cHAgXAogCVdlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmggXAogCVdlYkNvcmUvZG9tL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAzMzVjNjQ4NGQ2YTFmMGM3NmU4NTEx
OWJmMmUwMGNiMDIwN2VmODY4Li43NmZmMDFmZTZlMzI2YjExOGY5MGQ3ZDYyOGVhMjdkOWI3N2Zl
MjVmIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtMTIwNiw2ICsxMjA2LDggQEAKICAgICAgICAgICAgICdkb20vRXJyb3JFdmVu
dC5oJywKICAgICAgICAgICAgICdkb20vRXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20vRXZl
bnQuaCcsCisgICAgICAgICAgICAnZG9tL0V2ZW50Q29udGV4dC5jcHAnLAorICAgICAgICAgICAg
J2RvbS9FdmVudENvbnRleHQuaCcsCiAgICAgICAgICAgICAnZG9tL0V2ZW50RXhjZXB0aW9uLmgn
LAogICAgICAgICAgICAgJ2RvbS9FdmVudExpc3RlbmVyLmgnLAogICAgICAgICAgICAgJ2RvbS9F
dmVudE5hbWVzLmNwcCcsCkBAIC0xMzQxLDYgKzEzNDMsOCBAQAogICAgICAgICAgICAgJ2RvbS9X
ZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCcsCiAgICAgICAgICAgICAnZG9tL1doZWVsRXZlbnQuY3Bw
JywKICAgICAgICAgICAgICdkb20vV2hlZWxFdmVudC5oJywKKyAgICAgICAgICAgICdkb20vV2lu
ZG93RXZlbnRDb250ZXh0LmNwcCcsCisgICAgICAgICAgICAnZG9tL1dpbmRvd0V2ZW50Q29udGV4
dC5oJywKICAgICAgICAgICAgICdkb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwJywKICAgICAgICAg
ICAgICdkb20vWE1MRG9jdW1lbnRQYXJzZXIuaCcsCiAgICAgICAgICAgICAnZG9tL1hNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBi
L1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggODkzMzA3MjRjNWU1ZWUyNjdlN2M2MjY5NzEwOTA1
OTU2OWQ3NzJjYi4uNzBmYzllMDYwZmZhMGQ5YThhNjBkMDM2N2RiNWU5ZTM5NzU4NDZkOSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBA
IC03MTMsNiArNzEzLDcgQEAgU09VUkNFUyArPSBcCiAgICAgZG9tL0VudGl0eVJlZmVyZW5jZS5j
cHAgXAogICAgIGRvbS9FcnJvckV2ZW50LmNwcCBcCiAgICAgZG9tL0V2ZW50LmNwcCBcCisgICAg
ZG9tL0V2ZW50Q29udGV4dC5jcHAgXAogICAgIGRvbS9FdmVudE5hbWVzLmNwcCBcCiAgICAgZG9t
L0V2ZW50VGFyZ2V0LmNwcCBcCiAgICAgZG9tL0V4Y2VwdGlvbkJhc2UuY3BwIFwKQEAgLTc3Myw2
ICs3NzQsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3Bw
IFwKICAgICBkb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCBcCiAgICAgZG9tL1doZWVsRXZl
bnQuY3BwIFwKKyAgICBkb20vV2luZG93RXZlbnRDb250ZXh0LmNwcCBcCiAgICAgZG9tL1hNTERv
Y3VtZW50UGFyc2VyLmNwcCBcCiAgICAgZG9tL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwIFwKICAg
ICBkb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgXApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZjM2MjY1MzJlZDRhYTYyY2QwODVkNzA0ZGI4
ZjAyM2M1ZGFlNzNmNi4uYjdlMzE4Yjc1ZjBhYjQ1YWI2MDUyMjhiNDEwZjc4OTZkYWNkYjUzYiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC00MjI1Niw2ICs0MjI1Niw2
MiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIu
Llxkb21cRXZlbnRDb250ZXh0LmNwcCINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24N
CisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
DQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQor
CQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfSW50ZXJuYWx8V2luMzIiDQorCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98V2luMzIiDQorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xX
aW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRv
b2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1
Z19BbGx8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJ
CQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cZG9tXEV2ZW50Q29udGV4dC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXEV2ZW50RXhjZXB0aW9uLmgiDQogCQkJ
CT4NCiAJCQk8L0ZpbGU+DQpAQCAtNDUzNDQsNiArNDU0MDAsNjIgQEAKIAkJCQk+DQogCQkJPC9G
aWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFdpbmRvd0V2ZW50Q29u
dGV4dC5jcHAiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJE
ZWJ1Z3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJ
CQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1l
PSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+
DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJ
CU5hbWU9IkRlYnVnX0ludGVybmFsfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
DQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQorCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIg0K
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRv
bVxXaW5kb3dFdmVudENvbnRleHQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxYTUxEb2N1bWVudFBhcnNlci5jcHAiDQogCQkJCT4N
CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA2YTllMmYxY2IyYTg4MWJjMDI2MGE5ODc2YTgzZDZhMzFhOWQ1ZDI1
Li4wMjkzMDk5MzdjMzI4MWU1Y2Y1NWE3ZjRlZTNlYmMyZDY1ZGEyNjNmIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODk1LDcgKzg5NSwxMSBAQAogCQk0
MTBCN0U3MjEwNDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwQjdFNzExMDQ1RkFC
MDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLzsgfTsKIAkJNDExMDQ2NDEw
RkEyMjJBNjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTA0NjNGMEZBMjIyQTYwMEJBNDM2QSAv
KiBTY3JpcHRFdmVudExpc3RlbmVyLmggKi87IH07CiAJCTQxMTA0NjQyMEZBMjIyQTYwMEJBNDM2
QSAvKiBTY3JpcHRFdmVudExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTA0NjQwMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVu
dExpc3RlbmVyLmNwcCAqLzsgfTsKKwkJNDEyM0U1NjkxMjdCMzA0MTAwMEZFRUE3IC8qIFdpbmRv
d0V2ZW50Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDEyM0U1NjcxMjdCMzA0MTAwMEZFRUE3IC8qIFdpbmRvd0V2ZW50Q29udGV4dC5oICov
OyB9OworCQk0MTIzRTU2QTEyN0IzMDQxMDAwRkVFQTcgLyogV2luZG93RXZlbnRDb250ZXh0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjNFNTY4
MTI3QjMwNDEwMDBGRUVBNyAvKiBXaW5kb3dFdmVudENvbnRleHQuY3BwICovOyB9OwogCQk0MTI3
RDUzNzBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8q
IFNjcmlwdFN0YXRlLmNwcCAqLzsgfTsKKwkJNDEzOEQzMzUxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2
ZW50Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDEzOEQzMzMxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5oICovOyB9OworCQk0
MTM4RDMzNjEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzhEMzM0MTI0NDA1NDgwMDMyM0Qz
MyAvKiBFdmVudENvbnRleHQuY3BwICovOyB9OwogCQk0MTYyQTQ1MDEwMTE0NUFFMDBERkYzRUQg
LyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ0RDEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVk
V29ya2VyQ29udGV4dC5jcHAgKi87IH07CiAJCTQxNjJBNDUxMTAxMTQ1QUUwMERGRjNFRCAvKiBE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTYyQTQ0RTEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5oICovOyB9OwogCQk0MTYyQTQ1NDEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxNjJBNDUzMTAxMTQ1RTMwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdv
cmtlckNvbnRleHRDdXN0b20uY3BwICovOyB9OwpAQCAtNjk3Miw3ICs2OTc2LDExIEBACiAJCTQx
MEI3RTcxMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTA0NjNGMEZBMjIyQTYwMEJBNDM2QSAv
KiBTY3JpcHRFdmVudExpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNjcmlwdEV2ZW50TGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEx
MDQ2NDAwRkEyMjJBNjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50TGlzdGVuZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMjNFNTY3MTI3QjMwNDEwMDBGRUVBNyAvKiBX
aW5kb3dFdmVudENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2lu
ZG93RXZlbnRDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMjNFNTY4
MTI3QjMwNDEwMDBGRUVBNyAvKiBXaW5kb3dFdmVudENvbnRleHQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2luZG93RXZlbnRDb250ZXh0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0
YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdFN0YXRl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEzOEQzMzMxMjQ0MDU0ODAwMzIz
RDMzIC8qIEV2ZW50Q29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBF
dmVudENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEzOEQzMzQxMjQ0
MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFdmVudENvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTYyQTQ0RDEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmNwcDsgcGF0aCA9IHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNjJBNDRFMTAxMTQ1QUUwMERGRjNFRCAvKiBE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERlZGljYXRlZFdvcmtlckNvbnRleHQuaDsgcGF0aCA9IHdvcmtlcnMvRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTYyQTQ0RjEwMTE0NUFF
MDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBu
YW1lID0gRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGw7IHBhdGggPSB3b3JrZXJzL0RlZGljYXRl
ZFdvcmtlckNvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgyMDIs
NiArMTgyMTAsOCBAQAogCQkJCTg1MDMxQjJCMEE0NEVGQzcwMEY5OTJFMCAvKiBFdmVudC5jcHAg
Ki8sCiAJCQkJODUwMzFCMkMwQTQ0RUZDNzAwRjk5MkUwIC8qIEV2ZW50LmggKi8sCiAJCQkJMTRF
ODM2RDIwOUY4NTEyMDAwQjg1QUU0IC8qIEV2ZW50LmlkbCAqLywKKwkJCQk0MTM4RDMzNDEyNDQw
NTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmNwcCAqLywKKwkJCQk0MTM4RDMzMzEyNDQwNTQ4
MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggKi8sCiAJCQkJQkM2MEQ5MDkwRDJBMTdDRTAwQjk5
MThGIC8qIEV2ZW50RXhjZXB0aW9uLmggKi8sCiAJCQkJQkM2MEQ5MEEwRDJBMTdDRTAwQjk5MThG
IC8qIEV2ZW50RXhjZXB0aW9uLmlkbCAqLywKIAkJCQk5MzVGQkM0NDA5QkEwMEI5MDBFMjMwQjEg
LyogRXZlbnRMaXN0ZW5lci5oICovLApAQCAtMTgzNjIsNiArMTgzNzIsOCBAQAogCQkJCTg1MDMx
QjNBMEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVlbEV2ZW50LmNwcCAqLywKIAkJCQk4NTAzMUIzQjBB
NDRFRkM3MDBGOTkyRTAgLyogV2hlZWxFdmVudC5oICovLAogCQkJCTkzRUVDMUY3MDlDMjg3Nzcw
MEM1MTVEMSAvKiBXaGVlbEV2ZW50LmlkbCAqLywKKwkJCQk0MTIzRTU2ODEyN0IzMDQxMDAwRkVF
QTcgLyogV2luZG93RXZlbnRDb250ZXh0LmNwcCAqLywKKwkJCQk0MTIzRTU2NzEyN0IzMDQxMDAw
RkVFQTcgLyogV2luZG93RXZlbnRDb250ZXh0LmggKi8sCiAJCQkJRjUyM0QzMDkwMkRFNDQ3NjAx
ODYzNUNBIC8qIFhNTERvY3VtZW50UGFyc2VyLmNwcCAqLywKIAkJCQlGNTIzRDMwQTAyREU0NDc2
MDE4NjM1Q0EgLyogWE1MRG9jdW1lbnRQYXJzZXIuaCAqLywKIAkJCQk1NEM1MEY3QTBFODAxREYz
MDA5ODMyQTAgLyogWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCAqLywKQEAgLTE5NTI4LDYg
KzE5NTQwLDcgQEAKIAkJCQk4OTg3ODU2MDEyMkNBMDY0MDAzQUFCREEgLyogRXJyb3JDYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVDRjdBRTIxMDE2MkI1ODAwNDI3REU3IC8qIEVycm9y
RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjQyMEE0NEVGQzcwMEY5OTJFMCAvKiBF
dmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDEzOEQzMzUxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2
ZW50Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2MEQ5MEMwRDJBMTdDRTAwQjk5MThG
IC8qIEV2ZW50RXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0MwOUE1MzBCMDY0REIz
MDA1QUJENEQgLyogRXZlbnRIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVGQkM0NTA5
QkEwMEI5MDBFMjMwQjEgLyogRXZlbnRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMTE5
NSw2ICsyMTIwOCw3IEBACiAJCQkJODUwMzFCNTEwQTQ0RUZDNzAwRjk5MkUwIC8qIFdoZWVsRXZl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzODBGNDc0MDlBMTFBQjQwMDFGREIzNCAvKiBXaWRn
ZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOUIwMkVGMEVBMkRCQzQwMEM1NDU3MCAvKiBXaWR0
aEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTIzRTU2OTEyN0IzMDQxMDAwRkVFQTcg
LyogV2luZG93RXZlbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzgyNDNFOTBEMENG
RDc1MDA0NjBDOEYgLyogV2luZG93RmVhdHVyZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRTFC
RjAwMTE1RkY2RkIwMDZGNTJDQSAvKiBXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDgyMDNBQTAwRUQ4QzM1MzAwQjhCNjFBIC8qIFdNTEFjY2Vzc0VsZW1lbnQuaCBp
biBIZWFkZXJzICovLApAQCAtMjIxNjcsNiArMjIxODEsNyBAQAogCQkJCTg5M0M0ODBDMTI0OEJE
M0EwMDJCM0Q4NiAvKiBFbnRyeVN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkVDRjdBRTEx
MDE2MkI1ODAwNDI3REU3IC8qIEVycm9yRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUw
MzFCNDEwQTQ0RUZDNzAwRjk5MkUwIC8qIEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQx
MzhEMzM2MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTNDMDlBODEwQjA2NEYwMDAwNUFCRDREIC8qIEV2ZW50SGFuZGxlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5M0MwOUE3RjBCMDY0RUVGMDA1QUJENEQgLyogRXZlbnRIYW5kbGVyTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNBMTlFMDUwREMyNTU5NTAwNjVBOTk0IC8qIEV2ZW50
TG9vcE1hYy5tbSBpbiBTb3VyY2VzICovLApAQCAtMjM3NjcsNiArMjM3ODIsNyBAQAogCQkJCTkz
ODBGNDczMDlBMTFBQjQwMDFGREIzNCAvKiBXaWRnZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTM4MEY0NzgwOUExMUFDQzAwMUZEQjM0IC8qIFdpZGdldE1hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTkzOUIwMkVFMEVBMkRCQzQwMEM1NDU3MCAvKiBXaWR0aEl0ZXJhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTQxMjNFNTZBMTI3QjMwNDEwMDBGRUVBNyAvKiBXaW5kb3dFdmVudENvbnRl
eHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4MjQzRTgwRDBDRkQ3NTAwNDYwQzhGIC8qIFdp
bmRvd0ZlYXR1cmVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4MjAzQTlGMEVEOEMzNTMwMEI4
QjYxQSAvKiBXTUxBY2Nlc3NFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4OEM5NzUx
MEVDQjZFMjgwMDA1MzRCQSAvKiBXTUxBRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAKaW5kZXggZmMzMzUxOTI0NTYxNzJmNzljMTM0YmE2MThjMjdlZmQzZjZiMTgx
NC4uYjRiZGI3ZjkxYzg5OWNhODQ3ZmViZGIyNzgyNjNmZmU3MTllMzA2ZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAKQEAgLTEwMDUsNyArMTAwNSw4IEBAIHN0YXRpYyB2b2lkIG5vdGlmeUNoaWxkSW5z
ZXJ0ZWQoTm9kZSogY2hpbGQpCiAgICAgUmVmUHRyPE5vZGU+IGMgPSBjaGlsZDsKICAgICBSZWZQ
dHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gY2hpbGQtPmRvY3VtZW50KCk7CiAKLSAgICBpZiAoYy0+
cGFyZW50Tm9kZSgpICYmIGMtPnBhcmVudE5vZGUoKS0+aW5Eb2N1bWVudCgpKQorICAgIE5vZGUq
IHBhcmVudE9ySG9zdE5vZGUgPSBjLT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgaWYgKHBhcmVu
dE9ySG9zdE5vZGUgJiYgcGFyZW50T3JIb3N0Tm9kZS0+aW5Eb2N1bWVudCgpKQogICAgICAgICBj
LT5pbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIGVsc2UKICAgICAgICAgYy0+aW5zZXJ0ZWRJ
bnRvVHJlZSh0cnVlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcCBi
L1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAppbmRleCBjMWQ1MzZhOTk5OTdiN2U5YjJjNjky
ODhlOGZjYzA5OGYxMmY0YzdhLi4yZjM1MTBkODhiZTE2NDE1MjEyODUzNGRmMmQwMWQ1NjNhZGIx
OTg4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKKysrIGIvV2ViQ29y
ZS9kb20vRE9NQWxsSW5PbmUuY3BwCkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiRW50aXR5
UmVmZXJlbmNlLmNwcCIKICNpbmNsdWRlICJFcnJvckV2ZW50LmNwcCIKICNpbmNsdWRlICJFdmVu
dC5jcHAiCisjaW5jbHVkZSAiRXZlbnRDb250ZXh0LmNwcCIKICNpbmNsdWRlICJFdmVudE5hbWVz
LmNwcCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5jcHAiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQmFz
ZS5jcHAiCkBAIC0xMjYsNSArMTI3LDYgQEAKICNpbmNsdWRlICJXZWJLaXRBbmltYXRpb25FdmVu
dC5jcHAiCiAjaW5jbHVkZSAiV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCIKICNpbmNsdWRlICJX
aGVlbEV2ZW50LmNwcCIKKyNpbmNsdWRlICJXaW5kb3dFdmVudENvbnRleHQuY3BwIgogI2luY2x1
ZGUgIlhNTERvY3VtZW50UGFyc2VyLmNwcCIKICNpbmNsdWRlICJYTUxEb2N1bWVudFBhcnNlclNj
b3BlLmNwcCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5jcHAgYi9XZWJD
b3JlL2RvbS9FdmVudENvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhNWM1MjEwYWFlZjZiOTQxYmJk
ZTVkZTI5NWNiYTMzOWQxNDJkZjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9FdmVu
dENvbnRleHQuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJFdmVudENvbnRleHQuaCIKKworI2luY2x1ZGUgIkRPTVdpbmRv
dy5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRl
ICJOb2RlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRXZlbnRDb250ZXh0OjpFdmVudENv
bnRleHQoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBjdXJy
ZW50VGFyZ2V0LCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiB0YXJnZXQpCisgICAgOiBtX25vZGUo
bm9kZSkKKyAgICAsIG1fY3VycmVudFRhcmdldChjdXJyZW50VGFyZ2V0KQorICAgICwgbV90YXJn
ZXQodGFyZ2V0KQoreworfQorCit2b2lkIEV2ZW50Q29udGV4dDo6aGFuZGxlTG9jYWxFdmVudHMo
RXZlbnQqIGV2ZW50KSBjb25zdAoreworICAgIGV2ZW50LT5zZXRUYXJnZXQobV90YXJnZXQuZ2V0
KCkpOworICAgIGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KG1fY3VycmVudFRhcmdldC5nZXQoKSk7
CisgICAgbV9ub2RlLT5oYW5kbGVMb2NhbEV2ZW50cyhldmVudCk7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oIGIvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWJhYjlkNDE2MmMzNWI2MmNmZDcwNjIzNmVlMWY1NDdiZGQyOTc0Ygot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oCkBAIC0wLDAgKzEs
NjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKgorICovCisKKyNpZm5kZWYgRXZlbnRDb250ZXh0X2gKKyNkZWZpbmUgRXZl
bnRDb250ZXh0X2gKKworI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBFdmVudFRhcmdldDsKK2NsYXNzIEV2ZW50OworY2xhc3MgTm9kZTsKKwor
Y2xhc3MgRXZlbnRDb250ZXh0IHsKK3B1YmxpYzoKKyAgICAvLyBGSVhNRTogVXNlIENvbnRhaW5l
ck5vZGUgaW5zdGVhZCBvZiBOb2RlLgorICAgIEV2ZW50Q29udGV4dChQYXNzUmVmUHRyPE5vZGU+
LCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBjdXJyZW50VGFyZ2V0LCBQYXNzUmVmUHRyPEV2ZW50
VGFyZ2V0PiB0YXJnZXQpOworCisgICAgTm9kZSogbm9kZSgpIGNvbnN0OworICAgIEV2ZW50VGFy
Z2V0KiB0YXJnZXQoKSBjb25zdDsKKyAgICB2b2lkIGhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50Kikg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKKyAgICBSZWZQdHI8
RXZlbnRUYXJnZXQ+IG1fY3VycmVudFRhcmdldDsKKyAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IG1f
dGFyZ2V0OworfTsKKworaW5saW5lIE5vZGUqIEV2ZW50Q29udGV4dDo6bm9kZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fbm9kZS5nZXQoKTsKK30KKworaW5saW5lIEV2ZW50VGFyZ2V0KiBFdmVu
dENvbnRleHQ6OnRhcmdldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOwor
fQorCit9CisKKyNlbmRpZiAvLyBFdmVudENvbnRleHRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vTm9kZS5jcHAgYi9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBlNDViYWE0OTU3MDM1MDA3
NGE0ZmUxODAwNzIwMDRkYWI4MWI2MGYzLi4xZjg0YWVhODcyZGM4ODA2NTJiZDYyOGRkZTljNGZh
MzhhYTkzNmJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkR5bmFtaWNOb2RlTGlz
dC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUg
IkV2ZW50Q29udGV4dC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAi
RXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgpAQCAtODAsNiArODEs
NyBAQAogI2luY2x1ZGUgIldlYktpdEFuaW1hdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0
VHJhbnNpdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIldp
bmRvd0V2ZW50Q29udGV4dC5oIgogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiaHRt
bGVkaXRpbmcuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNzM0LDkgKzczNiw5IEBA
IGlubGluZSB2b2lkIE5vZGU6OnNldFN0eWxlQ2hhbmdlKFN0eWxlQ2hhbmdlVHlwZSBjaGFuZ2VU
eXBlKQogCiBpbmxpbmUgdm9pZCBOb2RlOjptYXJrQW5jZXN0b3JzV2l0aENoaWxkTmVlZHNTdHls
ZVJlY2FsYygpCiB7Ci0gICAgZm9yIChDb250YWluZXJOb2RlKiBwID0gcGFyZW50Tm9kZSgpOyBw
ICYmICFwLT5jaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsgcCA9IHAtPnBhcmVudE5vZGUoKSkKKyAg
ICBmb3IgKENvbnRhaW5lck5vZGUqIHAgPSBwYXJlbnRPckhvc3ROb2RlKCk7IHAgJiYgIXAtPmNo
aWxkTmVlZHNTdHlsZVJlY2FsYygpOyBwID0gcC0+cGFyZW50T3JIb3N0Tm9kZSgpKQogICAgICAg
ICBwLT5zZXRDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICAKKwogICAgIGlmIChkb2N1bWVu
dCgpLT5jaGlsZE5lZWRzU3R5bGVSZWNhbGMoKSkKICAgICAgICAgZG9jdW1lbnQoKS0+c2NoZWR1
bGVTdHlsZVJlY2FsYygpOwogfQpAQCAtMTMyMSw3ICsxMzIzLDcgQEAgdm9pZCBOb2RlOjpjcmVh
dGVSZW5kZXJlcklmTmVlZGVkKCkKIAogICAgIEFTU0VSVCghcmVuZGVyZXIoKSk7CiAgICAgCi0g
ICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZSgpOyAgICAKKyAgICBDb250YWlu
ZXJOb2RlKiBwYXJlbnQgPSBwYXJlbnRPckhvc3ROb2RlKCk7CiAgICAgQVNTRVJUKHBhcmVudCk7
CiAgICAgCiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlciA9IHBhcmVudC0+cmVuZGVy
ZXIoKTsKQEAgLTIyMzksMTQgKzIyNDEsOSBAQCB2b2lkIE5vZGU6OmdldFN1YnJlc291cmNlVVJM
cyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKICAgICBhZGRTdWJyZXNvdXJjZUF0dHJp
YnV0ZVVSTHModXJscyk7CiB9CiAKLUNvbnRhaW5lck5vZGUqIE5vZGU6OmV2ZW50UGFyZW50Tm9k
ZSgpCi17Ci0gICAgcmV0dXJuIHBhcmVudE5vZGUoKTsKLX0KLQogTm9kZSogTm9kZTo6ZW5jbG9z
aW5nTGlua0V2ZW50UGFyZW50T3JTZWxmKCkKIHsKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSB0aGlz
OyBub2RlOyBub2RlID0gbm9kZS0+ZXZlbnRQYXJlbnROb2RlKCkpIHsKKyAgICBmb3IgKE5vZGUq
IG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7CiAg
ICAgICAgIC8vIEZvciBpbWFnZW1hcHMsIHRoZSBlbmNsb3NpbmcgbGluayBub2RlIGlzIHRoZSBh
c3NvY2lhdGVkIGFyZWEgZWxlbWVudCBub3QgdGhlIGltYWdlIGl0c2VsZi4KICAgICAgICAgLy8g
U28gd2UgZG9uJ3QgbGV0IGltYWdlcyBiZSB0aGUgZW5jbG9zaW5nTGlua05vZGUsIGV2ZW4gdGhv
dWdoIGlzTGluayBzb21ldGltZXMgcmV0dXJucyB0cnVlCiAgICAgICAgIC8vIGZvciB0aGVtLgpA
QCAtMjQ4NCwxMiArMjQ4MSwxMyBAQCB2b2lkIE5vZGU6OmhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50
KiBldmVudCkKICAgICBmaXJlRXZlbnRMaXN0ZW5lcnMoZXZlbnQpOwogfQogCi0jaWYgRU5BQkxF
KFNWRykKLXN0YXRpYyBpbmxpbmUgU1ZHRWxlbWVudEluc3RhbmNlKiBldmVudFRhcmdldEFzU1ZH
RWxlbWVudEluc3RhbmNlKE5vZGUqIHJlZmVyZW5jZU5vZGUpCitzdGF0aWMgaW5saW5lIEV2ZW50
VGFyZ2V0KiBldmVudFRhcmdldFJlc3BlY3RpbmdTVkdUYXJnZXRSdWxlcyhOb2RlKiByZWZlcmVu
Y2VOb2RlKQogewogICAgIEFTU0VSVChyZWZlcmVuY2VOb2RlKTsKKworI2lmIEVOQUJMRShTVkcp
CiAgICAgaWYgKCFyZWZlcmVuY2VOb2RlLT5pc1NWR0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiByZWZlcmVuY2VOb2RlOwogCiAgICAgLy8gU3BlYzogVGhlIGV2
ZW50IGhhbmRsaW5nIGZvciB0aGUgbm9uLWV4cG9zZWQgdHJlZSB3b3JrcyBhcyBpZiB0aGUgcmVm
ZXJlbmNlZCBlbGVtZW50IGhhZCBiZWVuIHRleHR1YWxseSBpbmNsdWRlZAogICAgIC8vIGFzIGEg
ZGVlcGx5IGNsb25lZCBjaGlsZCBvZiB0aGUgJ3VzZScgZWxlbWVudCwgZXhjZXB0IHRoYXQgZXZl
bnRzIGFyZSBkaXNwYXRjaGVkIHRvIHRoZSBTVkdFbGVtZW50SW5zdGFuY2Ugb2JqZWN0cwpAQCAt
MjUwMywzNiArMjUwMSw0MSBAQCBzdGF0aWMgaW5saW5lIFNWR0VsZW1lbnRJbnN0YW5jZSogZXZl
bnRUYXJnZXRBc1NWR0VsZW1lbnRJbnN0YW5jZShOb2RlKiByZWZlcmVuYwogICAgICAgICBpZiAo
U1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZSA9IHN0YXRpY19jYXN0PFNWR1VzZUVsZW1lbnQq
PihzaGFkb3dUcmVlUGFyZW50RWxlbWVudCktPmluc3RhbmNlRm9yU2hhZG93VHJlZUVsZW1lbnQo
cmVmZXJlbmNlTm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQorI2Vu
ZGlmCiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcmVmZXJlbmNlTm9kZTsKIH0KLSNlbmRp
ZgogCi1zdGF0aWMgaW5saW5lIEV2ZW50VGFyZ2V0KiBldmVudFRhcmdldFJlc3BlY3RpbmdTVkdU
YXJnZXRSdWxlcyhOb2RlKiByZWZlcmVuY2VOb2RlKQordm9pZCBOb2RlOjpnZXRFdmVudEFuY2Vz
dG9ycyhWZWN0b3I8RXZlbnRDb250ZXh0PiYgYW5jZXN0b3JzLCBFdmVudFRhcmdldCogb3JpZ2lu
YWxUYXJnZXQsIEV2ZW50RGlzcGF0Y2hCZWhhdmlvciBiZWhhdmlvcikKIHsKLSAgICBBU1NFUlQo
cmVmZXJlbmNlTm9kZSk7CisgICAgaWYgKCFpbkRvY3VtZW50KCkpCisgICAgICAgIHJldHVybjsK
IAotI2lmIEVOQUJMRShTVkcpCi0gICAgaWYgKFNWR0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2Ug
PSBldmVudFRhcmdldEFzU1ZHRWxlbWVudEluc3RhbmNlKHJlZmVyZW5jZU5vZGUpKSB7Ci0gICAg
ICAgIEFTU0VSVChpbnN0YW5jZS0+c2hhZG93VHJlZUVsZW1lbnQoKSA9PSByZWZlcmVuY2VOb2Rl
KTsKLSAgICAgICAgcmV0dXJuIGluc3RhbmNlOwotICAgIH0KLSNlbmRpZgorICAgIEV2ZW50VGFy
Z2V0KiB0YXJnZXQgPSBvcmlnaW5hbFRhcmdldDsKKyAgICBOb2RlKiBhbmNlc3RvciA9IHRoaXM7
CisgICAgYm9vbCBzaG91bGRTa2lwTmV4dEFuY2VzdG9yID0gZmFsc2U7CisgICAgd2hpbGUgKHRy
dWUpIHsKKyAgICAgICAgaWYgKGFuY2VzdG9yLT5pc1NoYWRvd05vZGUoKSkgeworICAgICAgICAg
ICAgaWYgKGJlaGF2aW9yID09IFN0YXlJbnNpZGVTaGFkb3dET00pCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci0+c2hhZG93UGFyZW50Tm9k
ZSgpOworICAgICAgICAgICAgaWYgKCFzaG91bGRTa2lwTmV4dEFuY2VzdG9yKQorICAgICAgICAg
ICAgICAgIHRhcmdldCA9IGFuY2VzdG9yOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFu
Y2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudE5vZGUoKTsKIAotICAgIHJldHVybiByZWZlcmVuY2VO
b2RlOwotfQorICAgICAgICBpZiAoIWFuY2VzdG9yKQorICAgICAgICAgICAgcmV0dXJuOwogCi12
b2lkIE5vZGU6OmV2ZW50QW5jZXN0b3JzKFZlY3RvcjxSZWZQdHI8Q29udGFpbmVyTm9kZT4gPiAm
YW5jZXN0b3JzKQotewotICAgIGlmIChpbkRvY3VtZW50KCkpIHsKLSAgICAgICAgZm9yIChDb250
YWluZXJOb2RlKiBhbmNlc3RvciA9IGV2ZW50UGFyZW50Tm9kZSgpOyBhbmNlc3RvcjsgYW5jZXN0
b3IgPSBhbmNlc3Rvci0+ZXZlbnRQYXJlbnROb2RlKCkpIHsKICNpZiBFTkFCTEUoU1ZHKQotICAg
ICAgICAgICAgLy8gU2tpcCA8dXNlPiBzaGFkb3cgdHJlZSBlbGVtZW50cy4KLSAgICAgICAgICAg
IGlmIChhbmNlc3Rvci0+aXNTVkdFbGVtZW50KCkgJiYgYW5jZXN0b3ItPmlzU2hhZG93Tm9kZSgp
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAvLyBTa2lwIFNWR1NoYWRvd1Ry
ZWVSb290RWxlbWVudC4KKyAgICAgICAgc2hvdWxkU2tpcE5leHRBbmNlc3RvciA9IGFuY2VzdG9y
LT5pc1NWR0VsZW1lbnQoKSAmJiBhbmNlc3Rvci0+aXNTaGFkb3dOb2RlKCk7CisgICAgICAgIGlm
IChzaG91bGRTa2lwTmV4dEFuY2VzdG9yKQorICAgICAgICAgICAgY29udGludWU7CiAjZW5kaWYK
LSAgICAgICAgICAgIGFuY2VzdG9ycy5hcHBlbmQoYW5jZXN0b3IpOwotICAgICAgICB9CisgICAg
ICAgIC8vIEZJWE1FOiBVbnJvbGwgdGhlIGV4dHJhIGxvb3AgaW5zaWRlIGV2ZW50VGFyZ2V0UmVz
cGVjdGluZ1NWR1RhcmdldFJ1bGVzIGludG8gdGhpcyBsb29wLgorICAgICAgICBhbmNlc3RvcnMu
YXBwZW5kKEV2ZW50Q29udGV4dChhbmNlc3RvciwgZXZlbnRUYXJnZXRSZXNwZWN0aW5nU1ZHVGFy
Z2V0UnVsZXMoYW5jZXN0b3IpLCB0YXJnZXQpKTsKKwogICAgIH0KIH0KIApAQCAtMjU0Nyw2ICsy
NTUwLDExIEBAIGJvb2wgTm9kZTo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBF
dmVudCkKICAgICByZXR1cm4gZGlzcGF0Y2hHZW5lcmljRXZlbnQoZXZlbnQucmVsZWFzZSgpKTsK
IH0KIAorc3RhdGljIGNvbnN0IEV2ZW50Q29udGV4dCogdG9wRXZlbnRDb250ZXh0KGNvbnN0IFZl
Y3RvcjxFdmVudENvbnRleHQ+JiBhbmNlc3RvcnMpCit7CisgICAgcmV0dXJuIGFuY2VzdG9ycy5p
c0VtcHR5KCkgPyAwIDogJihhbmNlc3RvcnMubGFzdCgpKTsKK30KKwogYm9vbCBOb2RlOjpkaXNw
YXRjaEdlbmVyaWNFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCkKIHsKICAgICBSZWZQ
dHI8RXZlbnQ+IGV2ZW50KHBycEV2ZW50KTsKQEAgLTI1NTksMjAgKzI1NjcsMTMgQEAgYm9vbCBO
b2RlOjpkaXNwYXRjaEdlbmVyaWNFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCkKICAg
ICAvLyBJZiB0aGUgbm9kZSBpcyBub3QgaW4gYSBkb2N1bWVudCBqdXN0IHNlbmQgdGhlIGV2ZW50
IHRvIGl0LgogICAgIC8vIEJlIHN1cmUgdG8gcmVmIGFsbCBvZiBub2RlcyBzaW5jZSBldmVudCBo
YW5kbGVycyBjb3VsZCByZXN1bHQgaW4gdGhlIGxhc3QgcmVmZXJlbmNlIGdvaW5nIGF3YXkuCiAg
ICAgUmVmUHRyPE5vZGU+IHRoaXNOb2RlKHRoaXMpOwotICAgIFZlY3RvcjxSZWZQdHI8Q29udGFp
bmVyTm9kZT4gPiBhbmNlc3RvcnM7Ci0gICAgZXZlbnRBbmNlc3RvcnMoYW5jZXN0b3JzKTsKKyAg
ICBSZWZQdHI8RXZlbnRUYXJnZXQ+IG9yaWdpbmFsVGFyZ2V0ID0gZXZlbnQtPnRhcmdldCgpOwor
ICAgIFZlY3RvcjxFdmVudENvbnRleHQ+IGFuY2VzdG9yczsKKyAgICBnZXRFdmVudEFuY2VzdG9y
cyhhbmNlc3RvcnMsIG9yaWdpbmFsVGFyZ2V0LmdldCgpLCBldmVudC0+aXNNdXRhdGlvbkV2ZW50
KCkgPyBTdGF5SW5zaWRlU2hhZG93RE9NIDogUmV0YXJnZXRFdmVudCk7CiAKLSAgICAvLyBTZXQg
dXAgYSBwb2ludGVyIHRvIGluZGljYXRlIHdoZXRoZXIgLyB3aGVyZSB0byBkaXNwYXRjaCB3aW5k
b3cgZXZlbnRzLgotICAgIC8vIFdlIGRvbid0IGRpc3BhdGNoIGxvYWQgZXZlbnRzIHRvIHRoZSB3
aW5kb3cuIFRoYXQgcXVpcmsgd2FzIG9yaWdpbmFsbHkKLSAgICAvLyBhZGRlZCBiZWNhdXNlIE1v
emlsbGEgZG9lc24ndCBwcm9wYWdhdGUgbG9hZCBldmVudHMgdG8gdGhlIHdpbmRvdyBvYmplY3Qu
Ci0gICAgRE9NV2luZG93KiB0YXJnZXRGb3JXaW5kb3dFdmVudHMgPSAwOwotICAgIGlmIChldmVu
dC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpIHsKLSAgICAgICAgTm9kZSogdG9w
TGV2ZWxDb250YWluZXIgPSBhbmNlc3RvcnMuaXNFbXB0eSgpID8gdGhpcyA6IGFuY2VzdG9ycy5s
YXN0KCkuZ2V0KCk7Ci0gICAgICAgIGlmICh0b3BMZXZlbENvbnRhaW5lci0+aXNEb2N1bWVudE5v
ZGUoKSkKLSAgICAgICAgICAgIHRhcmdldEZvcldpbmRvd0V2ZW50cyA9IHN0YXRpY19jYXN0PERv
Y3VtZW50Kj4odG9wTGV2ZWxDb250YWluZXIpLT5kb21XaW5kb3coKTsKLSAgICB9CisgICAgV2lu
ZG93RXZlbnRDb250ZXh0IHdpbmRvd0NvbnRleHQoZXZlbnQuZ2V0KCksIHRoaXMsIHRvcEV2ZW50
Q29udGV4dChhbmNlc3RvcnMpKTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50KGRv
Y3VtZW50KCksICpldmVudCwgdGFyZ2V0Rm9yV2luZG93RXZlbnRzLCB0aGlzLCBhbmNlc3RvcnMp
OworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50KGRvY3VtZW50KCksICpldmVudCwgd2lu
ZG93Q29udGV4dC53aW5kb3coKSwgdGhpcywgYW5jZXN0b3JzKTsKIAogICAgIC8vIEdpdmUgdGhl
IHRhcmdldCBub2RlIGEgY2hhbmNlIHRvIGRvIHNvbWUgd29yayBiZWZvcmUgRE9NIGV2ZW50IGhh
bmRsZXJzIGdldCBhIGNyYWNrLgogICAgIHZvaWQqIGRhdGEgPSBwcmVEaXNwYXRjaEV2ZW50SGFu
ZGxlcihldmVudC5nZXQoKSk7CkBAIC0yNTgyLDIyICsyNTgzLDE3IEBAIGJvb2wgTm9kZTo6ZGlz
cGF0Y2hHZW5lcmljRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiAgICAgLy8gVHJp
Z2dlciBjYXB0dXJpbmcgZXZlbnQgaGFuZGxlcnMsIHN0YXJ0aW5nIGF0IHRoZSB0b3AgYW5kIHdv
cmtpbmcgb3VyIHdheSBkb3duLgogICAgIGV2ZW50LT5zZXRFdmVudFBoYXNlKEV2ZW50OjpDQVBU
VVJJTkdfUEhBU0UpOwogCi0gICAgaWYgKHRhcmdldEZvcldpbmRvd0V2ZW50cykgewotICAgICAg
ICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh0YXJnZXRGb3JXaW5kb3dFdmVudHMpOwotICAgICAg
ICB0YXJnZXRGb3JXaW5kb3dFdmVudHMtPmZpcmVFdmVudExpc3RlbmVycyhldmVudC5nZXQoKSk7
Ci0gICAgICAgIGlmIChldmVudC0+cHJvcGFnYXRpb25TdG9wcGVkKCkpCi0gICAgICAgICAgICBn
b3RvIGRvbmVEaXNwYXRjaGluZzsKLSAgICB9CisgICAgaWYgKHdpbmRvd0NvbnRleHQuaGFuZGxl
TG9jYWxFdmVudHMoZXZlbnQuZ2V0KCkpICYmIGV2ZW50LT5wcm9wYWdhdGlvblN0b3BwZWQoKSkK
KyAgICAgICAgZ290byBkb25lRGlzcGF0Y2hpbmc7CisKICAgICBmb3IgKHNpemVfdCBpID0gYW5j
ZXN0b3JzLnNpemUoKTsgaTsgLS1pKSB7Ci0gICAgICAgIENvbnRhaW5lck5vZGUqIGFuY2VzdG9y
ID0gYW5jZXN0b3JzW2kgLSAxXS5nZXQoKTsKLSAgICAgICAgZXZlbnQtPnNldEN1cnJlbnRUYXJn
ZXQoZXZlbnRUYXJnZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0UnVsZXMoYW5jZXN0b3IpKTsKLSAgICAg
ICAgYW5jZXN0b3ItPmhhbmRsZUxvY2FsRXZlbnRzKGV2ZW50LmdldCgpKTsKKyAgICAgICAgYW5j
ZXN0b3JzW2kgLSAxXS5oYW5kbGVMb2NhbEV2ZW50cyhldmVudC5nZXQoKSk7CiAgICAgICAgIGlm
IChldmVudC0+cHJvcGFnYXRpb25TdG9wcGVkKCkpCiAgICAgICAgICAgICBnb3RvIGRvbmVEaXNw
YXRjaGluZzsKICAgICB9CiAKICAgICBldmVudC0+c2V0RXZlbnRQaGFzZShFdmVudDo6QVRfVEFS
R0VUKTsKLQorICAgIGV2ZW50LT5zZXRUYXJnZXQob3JpZ2luYWxUYXJnZXQuZ2V0KCkpOwogICAg
IGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1NWR1RhcmdldFJ1
bGVzKHRoaXMpKTsKICAgICBoYW5kbGVMb2NhbEV2ZW50cyhldmVudC5nZXQoKSk7CiAgICAgaWYg
KGV2ZW50LT5wcm9wYWdhdGlvblN0b3BwZWQoKSkKQEAgLTI2MDksMjEgKzI2MDUsMTUgQEAgYm9v
bCBOb2RlOjpkaXNwYXRjaEdlbmVyaWNFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCkK
IAogICAgICAgICBzaXplX3Qgc2l6ZSA9IGFuY2VzdG9ycy5zaXplKCk7CiAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBDb250YWluZXJOb2Rl
KiBhbmNlc3RvciA9IGFuY2VzdG9yc1tpXS5nZXQoKTsKLSAgICAgICAgICAgIGV2ZW50LT5zZXRD
dXJyZW50VGFyZ2V0KGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1NWR1RhcmdldFJ1bGVzKGFuY2VzdG9y
KSk7Ci0gICAgICAgICAgICBhbmNlc3Rvci0+aGFuZGxlTG9jYWxFdmVudHMoZXZlbnQuZ2V0KCkp
OwotICAgICAgICAgICAgaWYgKGV2ZW50LT5wcm9wYWdhdGlvblN0b3BwZWQoKSB8fCBldmVudC0+
Y2FuY2VsQnViYmxlKCkpCi0gICAgICAgICAgICAgICAgZ290byBkb25lRGlzcGF0Y2hpbmc7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKHRhcmdldEZvcldpbmRvd0V2ZW50cykgewotICAgICAgICAg
ICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQodGFyZ2V0Rm9yV2luZG93RXZlbnRzKTsKLSAgICAg
ICAgICAgIHRhcmdldEZvcldpbmRvd0V2ZW50cy0+ZmlyZUV2ZW50TGlzdGVuZXJzKGV2ZW50Lmdl
dCgpKTsKKyAgICAgICAgICAgIGFuY2VzdG9yc1tpXS5oYW5kbGVMb2NhbEV2ZW50cyhldmVudC5n
ZXQoKSk7CiAgICAgICAgICAgICBpZiAoZXZlbnQtPnByb3BhZ2F0aW9uU3RvcHBlZCgpIHx8IGV2
ZW50LT5jYW5jZWxCdWJibGUoKSkKICAgICAgICAgICAgICAgICBnb3RvIGRvbmVEaXNwYXRjaGlu
ZzsKICAgICAgICAgfQorICAgICAgICB3aW5kb3dDb250ZXh0LmhhbmRsZUxvY2FsRXZlbnRzKGV2
ZW50LmdldCgpKTsKICAgICB9CiAKIGRvbmVEaXNwYXRjaGluZzoKKyAgICBldmVudC0+c2V0VGFy
Z2V0KG9yaWdpbmFsVGFyZ2V0LmdldCgpKTsKICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCgw
KTsKICAgICBldmVudC0+c2V0RXZlbnRQaGFzZSgwKTsKIApAQCAtMjY0NCw4ICsyNjM0LDcgQEAg
ZG9uZURpc3BhdGNoaW5nOgogICAgICAgICBpZiAoZXZlbnQtPmJ1YmJsZXMoKSkgewogICAgICAg
ICAgICAgc2l6ZV90IHNpemUgPSBhbmNlc3RvcnMuc2l6ZSgpOwogICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgICAgICBDb250YWluZXJO
b2RlKiBhbmNlc3RvciA9IGFuY2VzdG9yc1tpXS5nZXQoKTsKLSAgICAgICAgICAgICAgICBhbmNl
c3Rvci0+ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudC5nZXQoKSk7CisgICAgICAgICAgICAgICAg
YW5jZXN0b3JzW2ldLm5vZGUoKS0+ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudC5nZXQoKSk7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKCFldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpKTsKICAgICAg
ICAgICAgICAgICBpZiAoZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCiAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gZG9uZVdpdGhEZWZhdWx0OwpAQCAtMjY1NSw2ICsyNjQ0LDEwIEBAIGRvbmVEaXNw
YXRjaGluZzoKIAogZG9uZVdpdGhEZWZhdWx0OgogCisgICAgLy8gRW5zdXJlIHRoYXQgYWZ0ZXIg
ZXZlbnQgZGlzcGF0Y2gsIHRoZSBldmVudCdzIHRhcmdldCBvYmplY3QgaXMgdGhlCisgICAgLy8g
b3V0ZXJtb3N0IHNoYWRvdyBET00gYm91bmRhcnkuCisgICAgZXZlbnQtPnNldFRhcmdldCh3aW5k
b3dDb250ZXh0LnRhcmdldCgpKTsKKyAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCgwKTsKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRXZlbnQoY29va2llKTsKIAog
ICAgIHJldHVybiAhZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZG9tL05vZGUuaCBiL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAzYzZjMTk5NzExYjM0ZTFh
MDBhOWRhODAxMWFmNWE1YWU0ZGM2NGQ1Li42NzVkZTA0ZDE5YWFiMWM1NTBhODM0Yjc5MTM5YmUw
OGZmNjQ5NDA1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvV2ViQ29yZS9k
b20vTm9kZS5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRHluYW1p
Y05vZGVMaXN0OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEV2ZW50OworY2xhc3MgRXZlbnRDb250
ZXh0OwogY2xhc3MgRXZlbnRMaXN0ZW5lcjsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGcmFt
ZTsKQEAgLTg1LDYgKzg2LDExIEBAIGVudW0gU3R5bGVDaGFuZ2VUeXBlIHsKICAgICBTeW50aGV0
aWNTdHlsZUNoYW5nZSA9IDMgPDwgbm9kZVN0eWxlQ2hhbmdlU2hpZnQKIH07CiAKK2VudW0gRXZl
bnREaXNwYXRjaEJlaGF2aW9yIHsKKyAgICBSZXRhcmdldEV2ZW50LAorICAgIFN0YXlJbnNpZGVT
aGFkb3dET00KK307CisKIGNsYXNzIE5vZGUgOiBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBU
cmVlU2hhcmVkPENvbnRhaW5lck5vZGU+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKICAgICBm
cmllbmQgY2xhc3MgRG9jdW1lbnQ7CiBwdWJsaWM6CkBAIC0yMDQsMTYgKzIxMCwxNCBAQCBwdWJs
aWM6CiAgICAgTm9kZSogc2hhZG93QW5jZXN0b3JOb2RlKCk7CiAgICAgTm9kZSogc2hhZG93VHJl
ZVJvb3ROb2RlKCk7CiAgICAgYm9vbCBpc0luU2hhZG93VHJlZSgpOwotCi0gICAgLy8gVGhlIG5v
ZGUncyBwYXJlbnQgZm9yIHRoZSBwdXJwb3NlIG9mIGV2ZW50IGNhcHR1cmUgYW5kIGJ1YmJsaW5n
LgotICAgIHZpcnR1YWwgQ29udGFpbmVyTm9kZSogZXZlbnRQYXJlbnROb2RlKCk7CisgICAgLy8g
Tm9kZSdzIHBhcmVudCBvciBzaGFkb3cgdHJlZSBob3N0LgorICAgIENvbnRhaW5lck5vZGUqIHBh
cmVudE9ySG9zdE5vZGUoKTsKIAogICAgIC8vIFJldHVybnMgdGhlIGVuY2xvc2luZyBldmVudCBw
YXJlbnQgbm9kZSAob3Igc2VsZikgdGhhdCwgd2hlbiBjbGlja2VkLCB3b3VsZCB0cmlnZ2VyIGEg
bmF2aWdhdGlvbi4KICAgICBOb2RlKiBlbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKTsK
IAogICAgIC8vIE5vZGUgYW5jZXN0b3JzIHdoZW4gY29uY2VybmVkIGFib3V0IGV2ZW50IGZsb3cu
Ci0gICAgLy8gRklYTUU6IFNob3VsZCBiZSBuYW1lZCBnZXRFdmVudEFuY2VzdG9ycy4KLSAgICB2
b2lkIGV2ZW50QW5jZXN0b3JzKFZlY3RvcjxSZWZQdHI8Q29udGFpbmVyTm9kZT4gPiAmYW5jZXN0
b3JzKTsKKyAgICB2b2lkIGdldEV2ZW50QW5jZXN0b3JzKFZlY3RvcjxFdmVudENvbnRleHQ+JiBh
bmNlc3RvcnMsIEV2ZW50VGFyZ2V0KiwgRXZlbnREaXNwYXRjaEJlaGF2aW9yID0gUmV0YXJnZXRF
dmVudCk7CiAKICAgICBib29sIGlzQmxvY2tGbG93KCkgY29uc3Q7CiAgICAgYm9vbCBpc0Jsb2Nr
Rmxvd09yQmxvY2tUYWJsZSgpIGNvbnN0OwpAQCAtNjkzLDYgKzY5NywxMyBAQCBpbmxpbmUgdm9p
ZCBhZGRTdWJyZXNvdXJjZVVSTChMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgS1VSTCYg
dXJsKQogICAgICAgICB1cmxzLmFkZCh1cmwpOwogfQogCitpbmxpbmUgQ29udGFpbmVyTm9kZSog
Tm9kZTo6cGFyZW50T3JIb3N0Tm9kZSgpCit7CisgICAgaWYgKENvbnRhaW5lck5vZGUqIHBhcmVu
dCA9IHBhcmVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHBhcmVudDsKKyAgICByZXR1cm4gc2hh
ZG93UGFyZW50Tm9kZSgpOworfQorCiB9IC8vbmFtZXNwYWNlCiAKICNpZm5kZWYgTkRFQlVHCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9UZXh0LmNwcCBiL1dlYkNvcmUvZG9tL1RleHQuY3BwCmlu
ZGV4IDYyNzFmMTEwNjU5YzZiODBiYjRjMjNhZjBhYTdjNmUyODUyZTg1YjcuLjQ3YzUzMmVlMzVj
OWQ2YjI4NjVmNzRkZWU0NjMyNGZjMTdlOWI4MTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1Rl
eHQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1RleHQuY3BwCkBAIC0yNDAsOSArMjQwLDEwIEBAIGJv
b2wgVGV4dDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSAqc3R5bGUpCiBSZW5kZXJPYmpl
Y3QqIFRleHQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUq
KQogewogI2lmIEVOQUJMRShTVkcpCi0gICAgaWYgKHBhcmVudE5vZGUoKS0+aXNTVkdFbGVtZW50
KCkKKyAgICBOb2RlKiBwYXJlbnRPckhvc3QgPSBwYXJlbnRPckhvc3ROb2RlKCk7CisgICAgaWYg
KHBhcmVudE9ySG9zdC0+aXNTVkdFbGVtZW50KCkKICNpZiBFTkFCTEUoU1ZHX0ZPUkVJR05fT0JK
RUNUKQotICAgICAgICAmJiAhcGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmb3Jl
aWduT2JqZWN0VGFnKQorICAgICAgICAmJiAhcGFyZW50T3JIb3N0LT5oYXNUYWdOYW1lKFNWR05h
bWVzOjpmb3JlaWduT2JqZWN0VGFnKQogI2VuZGlmCiAgICAgKQogICAgICAgICByZXR1cm4gbmV3
IChhcmVuYSkgUmVuZGVyU1ZHSW5saW5lVGV4dCh0aGlzLCBkYXRhSW1wbCgpKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50Q29udGV4dC5jcHAgYi9XZWJDb3JlL2RvbS9XaW5k
b3dFdmVudENvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwZjRhMzYyN2Q2MDllNTg4MWI0NzkzYzM0
MDFkOTE4ZWVlNzI3ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9XaW5kb3dFdmVu
dENvbnRleHQuY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXaW5kb3dFdmVudENvbnRleHQuaCIKKworI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNp
bmNsdWRlICJFdmVudENvbnRleHQuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworV2luZG93RXZlbnRDb250ZXh0OjpXaW5kb3dFdmVudENvbnRleHQoRXZlbnQq
IGV2ZW50LCBQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIGNvbnN0IEV2ZW50Q29udGV4dCogdG9wRXZl
bnRDb250ZXh0KQoreworICAgIC8vIFdlIGRvbid0IGRpc3BhdGNoIGxvYWQgZXZlbnRzIHRvIHRo
ZSB3aW5kb3cuIFRoYXQgcXVpcmsgd2FzIG9yaWdpbmFsbHkKKyAgICAvLyBhZGRlZCBiZWNhdXNl
IE1vemlsbGEgZG9lc24ndCBwcm9wYWdhdGUgbG9hZCBldmVudHMgdG8gdGhlIHdpbmRvdyBvYmpl
Y3QuCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmxvYWRFdmVudCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgTm9kZSogdG9wTGV2ZWxDb250YWluZXIgPSB0b3BFdmVudENv
bnRleHQgPyB0b3BFdmVudENvbnRleHQtPm5vZGUoKSA6IG5vZGUuZ2V0KCk7CisgICAgaWYgKCF0
b3BMZXZlbENvbnRhaW5lci0+aXNEb2N1bWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV93aW5kb3cgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHRvcExldmVsQ29udGFpbmVyKS0+
ZG9tV2luZG93KCk7CisgICAgbV90YXJnZXQgPSB0b3BFdmVudENvbnRleHQgPyB0b3BFdmVudENv
bnRleHQtPnRhcmdldCgpIDogbm9kZS5nZXQoKTsKK30KKworYm9vbCBXaW5kb3dFdmVudENvbnRl
eHQ6OmhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoIW1fd2luZG93
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBldmVudC0+c2V0VGFyZ2V0KHRhcmdldCgp
KTsKKyAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh3aW5kb3coKSk7CisgICAgbV93aW5kb3ct
PmZpcmVFdmVudExpc3RlbmVycyhldmVudCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50Q29udGV4dC5oIGIvV2ViQ29yZS9kb20v
V2luZG93RXZlbnRDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTE5ZTA0ZDE4NDBkMWE2Mjk5MzRlNTBj
YmU5ZDM5ODMxYjdlOGMzMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvZG9tL1dpbmRvd0V2
ZW50Q29udGV4dC5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpZm5kZWYgV2lu
ZG93RXZlbnRDb250ZXh0X2gKKyNkZWZpbmUgV2luZG93RXZlbnRDb250ZXh0X2gKKworI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBET01XaW5k
b3c7CitjbGFzcyBFdmVudFRhcmdldDsKK2NsYXNzIEV2ZW50Q29udGV4dDsKK2NsYXNzIEV2ZW50
OworY2xhc3MgTm9kZTsKKworY2xhc3MgV2luZG93RXZlbnRDb250ZXh0IHsKK3B1YmxpYzoKKyAg
ICBXaW5kb3dFdmVudENvbnRleHQoRXZlbnQqLCBQYXNzUmVmUHRyPE5vZGU+LCBjb25zdCBFdmVu
dENvbnRleHQqKTsKKworICAgIERPTVdpbmRvdyogd2luZG93KCkgY29uc3Q7CisgICAgRXZlbnRU
YXJnZXQqIHRhcmdldCgpIGNvbnN0OworICAgIGJvb2wgaGFuZGxlTG9jYWxFdmVudHMoRXZlbnQq
IGV2ZW50KTsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8RE9NV2luZG93PiBtX3dpbmRvdzsKKyAg
ICBSZWZQdHI8RXZlbnRUYXJnZXQ+IG1fdGFyZ2V0OworfTsKKworaW5saW5lIERPTVdpbmRvdyog
V2luZG93RXZlbnRDb250ZXh0Ojp3aW5kb3coKSBjb25zdAoreworICAgIHJldHVybiBtX3dpbmRv
dy5nZXQoKTsKK30KKworaW5saW5lIEV2ZW50VGFyZ2V0KiBXaW5kb3dFdmVudENvbnRleHQ6OnRh
cmdldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOworfQorCit9CisKKyNl
bmRpZiAvLyBXaW5kb3dFdmVudENvbnRleHRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCmluZGV4IGNmYjU1ZmM2ZTBkNzQ3MTc3NDUwYTkxOTU5MjgyMDA3ODU1ZGMzOGQu
LjAxNjg5NzUzY2EwYTAxYzk4NGY2N2FlMDcwODI2ZTM2Y2FmMzgzNzkgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50VHlwZS5oIgogI2luY2x1ZGUgIkV2ZW50Lmgi
CisjaW5jbHVkZSAiRXZlbnRDb250ZXh0LmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgog
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgpAQCAtNjA3
LDEzICs2MDgsMTMgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnNG
b3JOb2RlKGxvbmcgbm9kZUlkLCBsb25nKiBvdXROb2RlSWQsIFIKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gVGhlIE5vZGUncyBFdmVudCBBbmNlc3RvcnMgKG5vdCBpbmNsdWRpbmcgc2VsZikK
LSAgICBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4gYW5jZXN0b3JzOwotICAgIG5vZGUt
PmV2ZW50QW5jZXN0b3JzKGFuY2VzdG9ycyk7CisgICAgVmVjdG9yPEV2ZW50Q29udGV4dD4gYW5j
ZXN0b3JzOworICAgIG5vZGUtPmdldEV2ZW50QW5jZXN0b3JzKGFuY2VzdG9ycywgbm9kZSk7CiAK
ICAgICAvLyBOb2RlcyBhbmQgdGhlaXIgTGlzdGVuZXJzIGZvciB0aGUgY29uY2VybmVkIGV2ZW50
IHR5cGVzIChvcmRlciBpcyB0b3AgdG8gYm90dG9tKQogICAgIFZlY3RvcjxFdmVudExpc3RlbmVy
SW5mbz4gZXZlbnRJbmZvcm1hdGlvbjsKICAgICBmb3IgKHNpemVfdCBpID0gYW5jZXN0b3JzLnNp
emUoKTsgaTsgLS1pKSB7Ci0gICAgICAgIENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0gYW5jZXN0
b3JzW2kgLSAxXS5nZXQoKTsKKyAgICAgICAgTm9kZSogYW5jZXN0b3IgPSBhbmNlc3RvcnNbaSAt
IDFdLm5vZGUoKTsKICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBldmVudFR5cGVzTGVu
Z3RoOyArK2opIHsKICAgICAgICAgICAgIEF0b21pY1N0cmluZyYgdHlwZSA9IGV2ZW50VHlwZXNb
al07CiAgICAgICAgICAgICBpZiAoYW5jZXN0b3ItPmhhc0V2ZW50TGlzdGVuZXJzKHR5cGUpKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXgg
OTQyMDJjMTE2NWVmMTFjMzhlODhmNjBkN2JlZGExM2ZjM2Q0YmQ5Yy4uY2Y0MTUyNzk4NTk5ZmE3
Mzg4ZTViYTFjNTFjNGRiZjJhYzZlMTAxNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAKICNpbmNsdWRlICJE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50Q29udGV4dC5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JE
T01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKQEAgLTUzLDcg
KzU0LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHRpbWVyRmlyZWRFdmVudE5hbWUgPSAi
dGltZXJGaXJlZCI7CiAKIGludCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNfZnJvbnRlbmRD
b3VudGVyID0gMDsKIAotc3RhdGljIGJvb2wgZXZlbnRIYXNMaXN0ZW5lcnMoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2RlLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4mIGFuY2VzdG9ycykKK3N0YXRpYyBib29sIGV2
ZW50SGFzTGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5kb3cq
IHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFuY2VzdG9y
cykKIHsKICAgICBpZiAod2luZG93ICYmIHdpbmRvdy0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnRU
eXBlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02Miw3ICs2Myw3IEBAIHN0YXRpYyBib29s
IGV2ZW50SGFzTGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5k
b3cqIHdpbmRvdywKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGFuY2VzdG9ycy5zaXplKCk7IGkrKykgewotICAgICAgICBDb250YWluZXJOb2RlKiBh
bmNlc3RvciA9IGFuY2VzdG9yc1tpXS5nZXQoKTsKKyAgICAgICAgTm9kZSogYW5jZXN0b3IgPSBh
bmNlc3RvcnNbaV0ubm9kZSgpOwogICAgICAgICBpZiAoYW5jZXN0b3ItPmhhc0V2ZW50TGlzdGVu
ZXJzKGV2ZW50VHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xMzks
NyArMTQwLDYgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3RlckRhdGFN
b2RpZmllZEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW4KICAgICAgICAgZG9tQWdlbnQtPmNo
YXJhY3RlckRhdGFNb2RpZmllZChjaGFyYWN0ZXJEYXRhKTsKIH0KIAotCiB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZVhIUlJlYWR5U3RhdGVJbXBsKGNvbnN0IElu
c3BlY3Rvckluc3RydW0KICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkQ2hhbmdlWEhSUmVhZHlT
dGF0ZSgpOwogfQogCi1JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciwgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRv
dywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+JiBhbmNl
c3RvcnMpCitJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlciwgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9k
ZSogbm9kZSwgY29uc3QgVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFuY2VzdG9ycykKIHsKICAgICBw
YXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChpbnNwZWN0b3JDb250cm9sbGVyLCBsaXN0ZW5lckV2
ZW50Q2F0ZWdvcnlUeXBlLCBldmVudC50eXBlKCksIGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCAxYjYyZWNiNzZjNzgyOTc0OGY0
MjE2N2ZiODIzYjNjZDhkNjVjMmI0Li43ZjI0MWM0MTE4NGE0MWZiNjdlMDAyMjlmOTBjMTBkN2Nm
YmE1NjNlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENoYXJhY3Rl
ckRhdGE7CiBjbGFzcyBFbGVtZW50OworY2xhc3MgRXZlbnRDb250ZXh0OwogY2xhc3MgSW5zcGVj
dG9yQ29udHJvbGxlcjsKIGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ7CiBjbGFzcyBLVVJM
OwpAQCAtNzMsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlkQ2FsbEZ1bmN0
aW9uKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbENoYW5nZVhIUlJlYWR5U3RhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFhNTEh0dHBSZXF1ZXN0KiByZXF1ZXN0KTsKICAgICBzdGF0
aWMgdm9pZCBkaWRDaGFuZ2VYSFJSZWFkeVN0YXRlKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
d2lsbERpc3BhdGNoRXZlbnQoRG9jdW1lbnQqLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRv
dyogd2luZG93LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+
ID4mIGFuY2VzdG9ycyk7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSB3aWxsRGlzcGF0Y2hFdmVudChEb2N1bWVudCosIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2lu
ZG93KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxFdmVudENvbnRleHQ+JiBhbmNl
c3RvcnMpOwogICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnQoY29uc3QgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93KEZyYW1lKiwgY29uc3QgRXZlbnQm
IGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdyk7CiAgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hF
dmVudE9uV2luZG93KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwpAQCAt
MTMwLDcgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkQ2FsbEZ1bmN0aW9u
SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlSW1w
bChJbnNwZWN0b3JDb250cm9sbGVyKiwgWE1MSHR0cFJlcXVlc3QqIHJlcXVlc3QpOwogICAgIHN0
YXRpYyB2b2lkIGRpZENoYW5nZVhIUlJlYWR5U3RhdGVJbXBsKGNvbnN0IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgd2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBjb25zdCBF
dmVudCYgZXZlbnQsIERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8
UmVmUHRyPENvbnRhaW5lck5vZGU+ID4mIGFuY2VzdG9ycyk7CisgICAgc3RhdGljIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hFdmVudEltcGwoSW5zcGVjdG9yQ29u
dHJvbGxlciosIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3csIE5vZGUqIG5v
ZGUsIGNvbnN0IFZlY3RvcjxFdmVudENvbnRleHQ+JiBhbmNlc3RvcnMpOwogICAgIHN0YXRpYyB2
b2lkIGRpZERpc3BhdGNoRXZlbnRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERp
c3BhdGNoRXZlbnRPbldpbmRvd0ltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGNvbnN0IEV2ZW50
JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3cpOwogICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNo
RXZlbnRPbldpbmRvd0ltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7
CkBAIC0yMjUsNyArMjI2LDYgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWQoRG9jdW1lbnQqIGRvY3VtZW50LAogI2VuZGlmCiB9CiAK
LQogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFhNTEh0dHBS
ZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJs
KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCkBAIC0yOTMsNyArMjkzLDcgQEAgaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VYSFJSZWFkeVN0YXRlKGNvbnN0
IEluc3BlY3Rvckluc3QKICNlbmRpZgogfQogCi1pbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnQoRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogd2luZG93LCBO
b2RlKiBub2RlLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4mIGFuY2VzdG9y
cykKK2lubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEV2
ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxF
dmVudENvbnRleHQ+JiBhbmNlc3RvcnMpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBp
ZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNv
bnRyb2xsZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDI5
NzAyNTkxZWViZmQzMTljYTRmOWVhMjA4OGE1M2YxNzA1ODIwYzguLjcxY2E5YzgxZDM1Y2Q2ZWM2
MDE0ODAwMDMxMzY3OWUxOTBkNmI5ZWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xNzY2LDgg
KzE3NjYsNiBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlTW91c2VFdmVudFRhcmdldE5vZGUo
Tm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgUGxhdGZvcm1NbwogICAgICAgICAvLyBJZiB0aGUgdGFy
Z2V0IG5vZGUgaXMgYSB0ZXh0IG5vZGUsIGRpc3BhdGNoIG9uIHRoZSBwYXJlbnQgbm9kZSAtIHJk
YXI6Ly80MTk2NjQ2CiAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LT5pc1RleHROb2RlKCkp
CiAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgaWYg
KHJlc3VsdCkKLSAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC0+c2hhZG93QW5jZXN0b3JOb2Rl
KCk7CiAgICAgfQogICAgIG1fbm9kZVVuZGVyTW91c2UgPSByZXN1bHQ7CiAjaWYgRU5BQkxFKFNW
RykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNw
cAppbmRleCA2NDI5M2ZlZTBjNGM1MTdjNzNhMmMxYTU5NmQzNWNhNTRlNThhNWExLi5lMjZkNDc4
ZjBiYjE5MjFhNDRhMzQyNTQ1OWM5ZjYwNjBiZGY4MGI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCkBAIC01Miw4ICs1Miw2IEBAIHZv
aWQgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OnN1YnRyZWVIYXNDaGFuZ2VkKCkKICAgICBp
ZiAoIW5vZGUoKS0+Zm9jdXNlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBub2RlKCktPmRp
c3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuaW5wdXRFdmVudCwgdHJ1ZSwg
ZmFsc2UpKTsKLQogICAgIGlmIChGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpKQogICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPnRleHREaWRDaGFuZ2VJblRleHRBcmVhKHRleHRBcmVhKTsKIH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1NoYWRvd0VsZW1lbnQuaCBiL1dlYkNvcmUv
cmVuZGVyaW5nL1NoYWRvd0VsZW1lbnQuaAppbmRleCAwNGRiNjJiZTdmMmJiMTBlYjAyNGNlMzAy
M2ZlZDcwZjJjMzJkYTkyLi5mNTY2OGVmMjM5M2JjM2EwMzBkMjBhNmVhZjlmYTgxY2UxOGJjOTU1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9TaGFkb3dFbGVtZW50LmgKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvU2hhZG93RWxlbWVudC5oCkBAIC00MywxMyArNDMsMTMgQEAgcHJvdGVj
dGVkOgogICAgIHsKICAgICB9CiAKLSAgICBIVE1MRWxlbWVudCogc2hhZG93UGFyZW50KCkgY29u
c3QgeyByZXR1cm4gbV9zaGFkb3dQYXJlbnQ7IH0KKyAgICBIVE1MRWxlbWVudCogc2hhZG93UGFy
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dQYXJlbnQuZ2V0KCk7IH0KIAogcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFkb3dOb2RlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIHZpcnR1YWwgQ29udGFpbmVyTm9kZSogc2hhZG93UGFyZW50Tm9kZSgpIHsgcmV0dXJuIG1f
c2hhZG93UGFyZW50OyB9CisgICAgdmlydHVhbCBDb250YWluZXJOb2RlKiBzaGFkb3dQYXJlbnRO
b2RlKCkgeyByZXR1cm4gbV9zaGFkb3dQYXJlbnQuZ2V0KCk7IH0KIAotICAgIEhUTUxFbGVtZW50
KiBtX3NoYWRvd1BhcmVudDsKKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1fc2hhZG93UGFyZW50
OwogfTsKIAogY2xhc3MgU2hhZG93QmxvY2tFbGVtZW50IDogcHVibGljIFNoYWRvd0VsZW1lbnQ8
SFRNTERpdkVsZW1lbnQ+IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuY3BwCmluZGV4IDY0OTVkMDQ1MjQxM2E3OGU4MWJiY2FiNTZkNGQzYTM1ODZkNWNl
NTYuLjczNTYwZmQ0YWYyMjZhZWI5NDhlY2U5Y2ZiZjA1YjcyYjIyNTFkNTMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMTU0LDcgKzE1
NCw3IEBAIHZvaWQgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgaWYgKHNoYWRvd0FuY2VzdG9yICYmIHNoYWRvd0Fu
Y2VzdG9yICE9IHRoaXMpCiAgICAgICAgICAgICBzaGFkb3dBbmNlc3Rvci0+ZGVmYXVsdEV2ZW50
SGFuZGxlcihldmVudCk7CiAgICAgfQotICAgIGlmIChldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkK
KyAgICBpZiAoIWV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpKQogICAgICAgICBIVE1MRGl2RWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggNmMy
YzRhMjc4M2VhOWUzOGFhZmY5N2RiOWRiNTU2MGZiY2Y0YjA0YS4uM2U5YmRhMDdkZWNiM2M0Yjky
MTYxYzYwYWQ0MzZkNzcyNDEwYjZkOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAKKysrIGIvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTM0NywxMyArMzQ3LDYg
QEAgdm9pZCBTVkdFbGVtZW50Ojp1cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lKSBjb25zdAogICAgIGNsZWFySXNTeW5jaHJvbml6aW5nU1ZHQXR0cmli
dXRlcygpOwogfQogCi1Db250YWluZXJOb2RlKiBTVkdFbGVtZW50OjpldmVudFBhcmVudE5vZGUo
KQotewotICAgIGlmIChDb250YWluZXJOb2RlKiBzaGFkb3dQYXJlbnQgPSBzaGFkb3dQYXJlbnRO
b2RlKCkpCi0gICAgICAgIHJldHVybiBzaGFkb3dQYXJlbnQ7Ci0gICAgcmV0dXJuIFN0eWxlZEVs
ZW1lbnQ6OmV2ZW50UGFyZW50Tm9kZSgpOwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZH
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5oCmluZGV4IDUxNzUxNWY5Mzk4NTMwNDlkYTE2NzA3NGQzZWUzZTQ5OGJjMzBhNjgu
Ljk2ZTdmZDdhZDRkMDllZDg2YjM5M2E1MThkOTk3NjM0OTgyN2ZkOTkgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAg
LTk5LDggKzk5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpc1N1cHBvcnRlZChTdHJpbmdJbXBsKiBmZWF0dXJlLCBTdHJpbmdJbXBsKiB2ZXJzaW9uKSBj
b25zdDsKIAotICAgICAgICB2aXJ0dWFsIENvbnRhaW5lck5vZGUqIGV2ZW50UGFyZW50Tm9kZSgp
OwotCiAgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVkc1BlbmRpbmdSZXNvdXJjZUhhbmRsaW5nKCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgYnVpbGRQZW5kaW5n
UmVzb3VyY2UoKSB7IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73137</attachid>
            <date>2010-11-05 16:17:01 -0700</date>
            <delta_ts>2010-11-11 14:19:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46015-20101105161700.patch</filename>
            <type>text/plain</type>
            <size>59235</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0YmI2NWM4Njc4NjM1YjExNDNkYThlNmMxY2NiMjBiOThhNWRlOTAzLi4yZjU0NzFl
YjE4ZTZjNmY2YTY2OTkwNzUzMjA2YWUyYjlmNWFkYjVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMTEtMDUgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
c2hhZG93IERPTS1hd2FyZSBldmVudCB0YXJnZXRpbmcgYW5kIGludHJvZHVjZSBFdmVudENvbnRl
eHQgdG8gdHJhY2sgdGhlIGNvbnRleHQgb2YgZWFjaCBldmVudCBkaXNwYXRjaC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MDE1CisKKyAgICAgICAg
QWRkZWQgbW9yZSB0ZXN0IGNvdmVyYWdlIGFyb3VuZCBldmVudHMgY3Jvc3Npbmcgc2hhZG93IERP
TSBib3VuZGFyaWVzIGFuZCB0d2Vha2VkIGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogZmFz
dC9ldmVudHMvc2hhZG93LWJvdW5kYXJ5LWNyb3NzaW5nLTItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmctMi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRt
bDogVHVuZWQgdG8gYmV0dGVyIHJlZmxlY3QgaXRzIHBvaW50OgorICAgICAgICAgICAgdGhlIGV2
ZW50IHNob3VsZCBpbmRlZWQgZmlyZSAoaXQgdXNlZCB0byBiZSBzd2FsbG93ZWQpLCBidXQgaXRz
IHRhcmdldAorICAgICAgICAgICAgc2hvdWxkIGJlIGEgbm9uLXNoYWRvdyBub2RlLgorICAgICAg
ICAqIG1lZGlhL2F1ZGlvLWRlbGV0ZS13aGlsZS1zbGlkZXItdGh1bWItY2xpY2tlZC5odG1sIDog
IFR3ZWFrZWQgdG8gYWN0dWFsbHkgY2xpY2sgb24KKyAgICAgICAgICAgIHRoZSBzY3J1YmJlciB0
aHVtYiAoaXQgd2FzIG9mZiBieSAyIHBpeGVscykuCisKIDIwMTAtMTEtMDQgIEFkYW0gUm9iZW4g
IDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBtb3JlIGZhaWxpbmcgdGVzdHMgdG8g
dGhlIFdpbmRvd3MgU2tpcHBlZCBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmctMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmctMi1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjNkNjIwYjlkMWZlZWY4ZWJlMTNjZDBkODM1YmMxMDZmOTBmYzBiMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9z
c2luZy0yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1Rlc3RzIHRvIGVuc3VyZSB0aGF0
IHNoYWRvdyBET00gYm91bmRhcnkgaXMgbm90IGNyb3NzZWQgZHVyaW5nIGV2ZW50IHByb3BhZ2F0
aW9uLiBDYW4gb25seSBydW4gd2l0aGluIERSVC4KKworU2VlIGJ1ZyA0NjAxNSBmb3IgZGV0YWls
cy4KKworTXV0YXRpb24gZXZlbnRzIHNob3VsZCBub3QgcHJvcGFnYXRlIG91dCBvZiB0aGUgc2hh
ZG93IERPTTogUEFTUworT3RoZXIgZXZlbnRzIHNob3VsZCBiZSByZXRhcmdldGVkOiBQQVNTCitB
ZnRlciBldmVudCBkaXNwYXRjaCwgdGhlIGV2ZW50IG9iamVjdCBzaG91bGQgbm90IHJldmVhbCBz
aGFkb3cgRE9NOiBQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zaGFk
b3ctYm91bmRhcnktY3Jvc3NpbmctMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2hh
ZG93LWJvdW5kYXJ5LWNyb3NzaW5nLTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2Y4OGIwM2ZmYjhiMzA2
ZjZmNGE0NDAyNjkzZGQ4MmUyODJhNmU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvc2hhZG93LWJvdW5kYXJ5LWNyb3NzaW5nLTIuaHRtbApAQCAtMCwwICsxLDgx
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKwordmFyIGxvZ0RpdjsKKworZnVuY3Rpb24g
bG9nKG1zZywgc3VjY2VzcykKK3sKKyAgICBsb2dEaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2JykpLnRleHRDb250ZW50ID0gbXNnICsgJzogJyArIChzdWNjZXNzID8g
J1BBU1MnIDogJ0ZBSUwnKTsKK30KKworZnVuY3Rpb24gY2xpY2tPbihlbGVtZW50KQoreworICAg
IGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICB2YXIgeCA9
IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgIHZhciB5
ID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7
CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCit2YXIgdGVzdHMgPSB7CisgICAgbXV0
YXRpb25FdmVudFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgdGV4
dGFyZWEgPSBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3RleHRhcmVhJykpOworICAgICAgICB2YXIgbXV0YXRpb25FdmVudEZpcmVkOworICAgICAgICB0
ZXh0YXJlYS5hZGRFdmVudExpc3RlbmVyKCdET01TdWJ0cmVlTW9kaWZpZWQnLCBmdW5jdGlvbihl
KQorICAgICAgICB7CisgICAgICAgICAgICBtdXRhdGlvbkV2ZW50RmlyZWQgPSB0cnVlOworICAg
ICAgICB9LCBmYWxzZSk7CisgICAgICAgIHRleHRhcmVhLnZhbHVlID0gJ3Rlc3QnOworICAgICAg
ICAvLyBUcmlnZ2VyIHN0eWxlIHJlY2FsYyBhbmQgc2FkbHksIHRoZSBhY3R1YWwgbXV0YXRpb24g
b2YgdGhlIHRleHRhcmVhIHNoYWRvdyBET00uCisgICAgICAgIHRleHRhcmVhLm9mZnNldEhlaWdo
dDsKKyAgICAgICAgbG9nKCdNdXRhdGlvbiBldmVudHMgc2hvdWxkIG5vdCBwcm9wYWdhdGUgb3V0
IG9mIHRoZSBzaGFkb3cgRE9NJywgIW11dGF0aW9uRXZlbnRGaXJlZCk7CisgICAgICAgIHRleHRh
cmVhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGV4dGFyZWEpOworICAgIH0sCisgICAgZXZlbnRJ
blByb2dyZXNzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgdGV4dElucHV0ID0gZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpKTsK
KyAgICAgICAgdGV4dElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkK
KyAgICAgICAgeworICAgICAgICAgICAgbG9nKCdPdGhlciBldmVudHMgc2hvdWxkIGJlIHJldGFy
Z2V0ZWQnLCBlLnRhcmdldCA9PSB0ZXh0SW5wdXQpOworICAgICAgICB9LCBmYWxzZSk7CisgICAg
ICAgIGNsaWNrT24odGV4dElucHV0KTsKKyAgICAgICAgdGV4dElucHV0LnBhcmVudE5vZGUucmVt
b3ZlQ2hpbGQodGV4dElucHV0KTsKKyAgICB9LAorICAgIGZpbmFsRXZlbnRPYmplY3Q6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHZhciB0ZXh0SW5wdXQgPSBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykpOworICAgICAgICB2YXIgc3Rv
cmVkRXZlbnQ7CisgICAgICAgIHRleHRJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1
bmN0aW9uKGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0b3JlZEV2ZW50ID0gZTsKKyAgICAg
ICAgfSwgZmFsc2UpOworICAgICAgICBjbGlja09uKHRleHRJbnB1dCk7CisgICAgICAgIGxvZygn
QWZ0ZXIgZXZlbnQgZGlzcGF0Y2gsIHRoZSBldmVudCBvYmplY3Qgc2hvdWxkIG5vdCByZXZlYWwg
c2hhZG93IERPTScsIHN0b3JlZEV2ZW50ICYmIHN0b3JlZEV2ZW50LnRhcmdldCA9PSB0ZXh0SW5w
dXQpOworICAgICAgICB0ZXh0SW5wdXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0ZXh0SW5wdXQp
OworICAgIH0KK307CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKworICAgIGxvZ0RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKKyAg
ICBmb3IodmFyIHRlc3ROYW1lIGluIHRlc3RzKSB7CisgICAgICAgIHRlc3RzW3Rlc3ROYW1lXSgp
OworICAgIH0KK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3Qo
KSI+CisgICAgPHA+VGVzdHMgdG8gZW5zdXJlIHRoYXQgc2hhZG93IERPTSBib3VuZGFyeSBpcyBu
b3QgY3Jvc3NlZCBkdXJpbmcgZXZlbnQgcHJvcGFnYXRpb24uIENhbiBvbmx5IHJ1biB3aXRoaW4g
RFJULgorICAgIDxwPlNlZSA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDYwMTUiPmJ1ZyA0NjAxNTwvYT4gZm9yIGRldGFpbHMuCisgICAgPGRpdiBpZD0i
bG9nIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jv
c3NpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9z
c2luZy5odG1sCmluZGV4IDYyM2UwNjczZWMxY2YzNjI1NmY1ZWMxMzY3ZDdjYTM5YmFiYjQxNTMu
LmUwMDIzMzMwZTFkYzE2YzY3ZGI5MDExMTQyNDFjNjNiYjFlZGExMWQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9zc2luZy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9zc2luZy5odG1sCkBA
IC0yLDExICsyLDEyIEBACiA8aGVhZD4KICAgICA8dGl0bGU+PC90aXRsZT4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIHZhciBmaXJlZCA9IGZhbHNlOworICAg
ICAgICB2YXIgc3VjY2VzczsKKyAgICAgICAgdmFyIHRhcmdldDsKIAogICAgICAgICBmdW5jdGlv
biBzZWxlY3RTdGFydChldmVudCkKICAgICAgICAgewotICAgICAgICAgICAgZmlyZWQgPSB0cnVl
OworICAgICAgICAgICAgc3VjY2VzcyA9IGV2ZW50LnRhcmdldCA9PSB0YXJnZXQ7CiAgICAgICAg
IH0KIAogICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKQEAgLTE1LDcgKzE2LDcgQEAKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CiAKLSAgICAgICAgICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGFyZ2V0Iik7CisgICAgICAgICAgICB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGFyZ2V0Iik7CiAgICAgICAgICAgICB2YXIgeCA9IHRhcmdldC5vZmZzZXRMZWZ0ICsgdGFy
Z2V0Lm9mZnNldFdpZHRoIC8gMjsKICAgICAgICAgICAgIHZhciB5ID0gdGFyZ2V0Lm9mZnNldFRv
cCArIHRhcmdldC5vZmZzZXRIZWlnaHQgLyAyOwogCkBAIC0yMyw3ICsyNCw3IEBACiAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlVXAoKTsKIAotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIp
LmlubmVyVGV4dCA9IGZpcmVkID8gIkZBSUwiIDogIlBBU1MiOworICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVyVGV4dCA9ICFzdWNjZXNzID8gIkZBSUwi
IDogIlBBU1MiOwogICAgICAgICB9CiAKICAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0
c3RhcnQiLCBzZWxlY3RTdGFydCwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRp
YS9hdWRpby1kZWxldGUtd2hpbGUtc2xpZGVyLXRodW1iLWNsaWNrZWQuaHRtbCBiL0xheW91dFRl
c3RzL21lZGlhL2F1ZGlvLWRlbGV0ZS13aGlsZS1zbGlkZXItdGh1bWItY2xpY2tlZC5odG1sCmlu
ZGV4IGM1YTE2YTgzOTc1MmJiNTczMDIxNDUyNzRlMTRhMWJkZmQwMjQxNzUuLjhkMjVlOGE1OTA2
M2I1OTI2NTU4YTZjOGQzMzRlN2Y1NGYyZWY3ZWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21l
ZGlhL2F1ZGlvLWRlbGV0ZS13aGlsZS1zbGlkZXItdGh1bWItY2xpY2tlZC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL21lZGlhL2F1ZGlvLWRlbGV0ZS13aGlsZS1zbGlkZXItdGh1bWItY2xpY2tlZC5o
dG1sCkBAIC01MCwxMSArNTAsMTEgQEAKIAogICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdWRpbycpOwogCi0gICAgICAgICAgICAgICAgdmFyIG1p
ZGRsZSA9IGF1ZGlvLm9mZnNldExlZnQgKyAoYXVkaW8ub2Zmc2V0V2lkdGggLyAyKTsKLSAgICAg
ICAgICAgICAgICB2YXIgYm90dG9tID0gYXVkaW8ub2Zmc2V0VG9wICsgYXVkaW8ub2Zmc2V0SGVp
Z2h0OworICAgICAgICAgICAgICAgIHZhciBjZW50ZXIgPSBhdWRpby5vZmZzZXRMZWZ0ICsgKGF1
ZGlvLm9mZnNldFdpZHRoIC8gMik7CisgICAgICAgICAgICAgICAgdmFyIG1pZGRsZSA9IGF1ZGlv
Lm9mZnNldFRvcCArIChhdWRpby5vZmZzZXRIZWlnaHQgLyAyKTsKICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICB2YXIgeCA9IG1pZGRsZSArIDE2ICsgMTYgKyA4OwotICAgICAgICAg
ICAgICAgIHZhciB5ID0gYm90dG9tIC0gODsKKyAgICAgICAgICAgICAgICB2YXIgeCA9IGNlbnRl
ciArIDE2ICsgMTYgKyA4OworICAgICAgICAgICAgICAgIHZhciB5ID0gbWlkZGxlOwogCiAgICAg
ICAgICAgICAgICAgLy8gZHJhZyBzbGlkZXIsIGxlYXZlIHRoZSBtb3VzZSBkb3duCiAgICAgICAg
ICAgICAgICAgbG9nKCJjbGlja2luZyBpbiBjb250cm9sbGVyIik7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL0FuZHJvaWQubWsgYi9XZWJDb3JlL0FuZHJvaWQubWsKaW5kZXggMDU4ZmFjMzJkYmNhODVm
MWQ5Mzk1M2JmZmIzMGRlYzdmOTYxZTBhYy4uMmI1ODAzMGYxYjg5MjY2ZjFjMzRlNzI3Y2ZlMzk3
N2EyOTkxZmNmZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9BbmRyb2lkLm1rCisrKyBiL1dlYkNvcmUv
QW5kcm9pZC5tawpAQCAtMTMyLDYgKzEzMiw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FM
X1NSQ19GSUxFUykgXAogCWRvbS9FbnRpdHlSZWZlcmVuY2UuY3BwIFwKIAlkb20vRXJyb3JFdmVu
dC5jcHAgXAogCWRvbS9FdmVudC5jcHAgXAorCWRvbS9FdmVudENvbnRleHQuY3BwIFwKIAlkb20v
RXZlbnROYW1lcy5jcHAgXAogCWRvbS9FdmVudFRhcmdldC5jcHAgXAogCWRvbS9FeGNlcHRpb25C
YXNlLmNwcCBcCkBAIC0xOTIsNiArMTkzLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9ICQoTE9DQUxf
U1JDX0ZJTEVTKSBcCiAJZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCBcCiAJZG9tL1dlYktp
dFRyYW5zaXRpb25FdmVudC5jcHAgXAogCWRvbS9XaGVlbEV2ZW50LmNwcCBcCisJZG9tL1dpbmRv
d0V2ZW50Q29udGV4dC5jcHAgXAogCWRvbS9YTUxEb2N1bWVudFBhcnNlci5jcHAgXAogCWRvbS9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIFwKIAlkb20vWE1MRG9jdW1lbnRQYXJzZXJTY29w
ZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggZDljNzJjMjI2NzcxYWJmYzJkZGY0NTE4OTUxMTgyNTVlMDA3ZTdj
OC4uNjMyNTk4ZjYyZjc0NDc3NTNkYTNjOGNhZjk0ZGU4YWVkN2I1NDNkYiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04
MjQsNiArODI0LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9FbnRpdHlSZWZlcmVu
Y2UuY3BwCiAgICAgZG9tL0Vycm9yRXZlbnQuY3BwCiAgICAgZG9tL0V2ZW50LmNwcAorICAgIGRv
bS9FdmVudENvbnRleHQuY3BwCiAgICAgZG9tL0V2ZW50TmFtZXMuY3BwCiAgICAgZG9tL0V2ZW50
VGFyZ2V0LmNwcAogICAgIGRvbS9FeGNlcHRpb25CYXNlLmNwcApAQCAtODgxLDYgKzg4Miw3IEBA
IFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwCiAg
ICAgZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAKICAgICBkb20vV2hlZWxFdmVudC5jcHAK
KyAgICBkb20vV2luZG93RXZlbnRDb250ZXh0LmNwcAogICAgIGRvbS9YTUxEb2N1bWVudFBhcnNl
ci5jcHAKICAgICBkb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAogICAgIGRvbS9YTUxE
b2N1bWVudFBhcnNlclNjb3BlLmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxZjMxYTkzZGQ4MWNmZTU0ZWRlNjIwNzUxMTFkYjMxYWVl
MmVhNTQ4Li5jZTc5ZTQ1ZDUxNDBjY2JlMDk3OTFlM2I1MjNlYzMwMDQ2NWNmOGY4IDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDYwIEBACisyMDEwLTExLTA1ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50IHNoYWRvdyBET00tYXdhcmUgZXZlbnQgdGFyZ2V0aW5nIGFuZCBpbnRyb2R1Y2UgRXZl
bnRDb250ZXh0IHRvIHRyYWNrIHRoZSBjb250ZXh0IG9mIGVhY2ggZXZlbnQgZGlzcGF0Y2guCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjAxNQorCisg
ICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9zc2luZy0yLmh0bWwK
KworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIG5vdGlvbiBvZiBFdmVudENvbnRleHQgKGFu
ZCBhIHZlcnkgc2ltaWxhci1hY3RpbmcgV2luZG93RXZlbnRDb250ZXh0LCBzcGVjaWZpY2FsbHkK
KyAgICAgICAgZm9yIERPTVdpbmRvdyksIGFuIGFic3RyYWN0aW9uIHRoYXQgY2FycmllcyBpbmZv
cm1hdGlvbiBhcm91bmQgZGlzcGF0Y2hpbmcgYW4gZXZlbnQgZm9yIGFueSBnaXZlbiBOb2RlLgor
CisgICAgICAgIFRoaXMgYWJzdHJhY3Rpb24gaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGF0IGV2
ZW50cywgZmlyZWQgZnJvbSBzaGFkb3cgRE9NIG5vZGVzIGFyZSBwcm9wZXJseSByZXRhcmdldGVk
IHRvCisgICAgICAgIGFwcGVhciBhcyBpZiB0aGV5IGFyZSBjb21pbmcgZnJvbSB0aGVpciBob3N0
LCB0aHVzIG5ldmVyIGV4cG9zaW5nIHRoZSBzaGFkb3cgRE9NIG5vZGVzIHRvIHRoZSB3b3JsZCBv
dXRzaWRlLgorCisgICAgICAgICogQW5kcm9pZC5tazogQWRkZWQgRXZlbnRDb250ZXh0LCBXaW5k
b3dFdmVudENvbnRleHQgZmlsZXMuCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IERpdHRvLgor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUucHJvOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOiBEaXR0by4KKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpub3RpZnlDaGlsZEluc2VydGVkKTogQ2hhbmdlZCB0byBi
ZSBzaGFkb3cgRE9NLWF3YXJlLgorICAgICAgICAqIGRvbS9FdmVudENvbnRleHQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBkb20vRXZlbnRDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAqIGRvbS9O
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Om1hcmtBbmNlc3RvcnNXaXRoQ2hpbGRO
ZWVkc1N0eWxlUmVjYWxjKTogQ2hhbmdlZCB0byBiZSBzaGFkb3cgRE9NLWF3YXJlLgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6cGFyZW50T3JIb3N0Tm9kZSk6IEFkZGVkIG5ldyBoZWxwZXIgbWV0
aG9kLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZW5jbG9zaW5nTGlua0V2ZW50UGFyZW50T3JT
ZWxmKTogQ2hhbmdlZCB0byBiZSBzaGFkb3cgRE9NLWF3YXJlLgorICAgICAgICAoV2ViQ29yZTo6
ZXZlbnRUYXJnZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0UnVsZXMpOiBDb2xsYXBzZWQgdHdvIGhlbHBl
ciBtZXRob2RzIGludG8gb25lLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Z2V0RXZlbnRBbmNl
c3RvcnMpOiBSZW5hbWVkIGFuZCByZWZhY3RvcmVkIHRvIGNvbGxlY3QgYSB2ZWN0b3Igb2YgRXZl
bnRDb250ZXh0cy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnRvcEV2ZW50Q29udGV4dCk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZXZlbnRIYXNMaXN0ZW5lcnMpOiBDaGFuZ2VkIHRvIHVz
ZSBFdmVudENvbnRleHRzLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hHZW5lcmlj
RXZlbnQpOiBEaXR0by4KKyAgICAgICAgKiBkb20vTm9kZS5oOiBSZW1vdmVkIGV2ZW50UGFyZW50
Tm9kZSB0aGF0J3Mgbm8gbG9uZ2VyIG5lZWRlZCwgYWRkZWQgcGFyZW50T3JIb3N0Tm9kZSBkZWNs
LAorICAgICAgICAgICAgYW5kIGNoYW5nZWQgc2lnbmF0dXJlIG9mIGV2ZW50QW5jZXN0b3JzIHRv
IHVzZSBFdmVudENvbnRleHRzLgorICAgICAgICAqIGRvbS9UZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHQ6OmNyZWF0ZVJlbmRlcmVyKTogQ2hhbmdlZCB0byBiZSBzaGFkb3cgRE9NLWF3
YXJlLgorICAgICAgICAqIGRvbS9XaW5kb3dFdmVudENvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiBkb20vV2luZG93RXZlbnRDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKTogQ2hhbmdlZCB0byB1c2UgRXZlbnRDb250
ZXh0cy4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OnVwZGF0ZU1vdXNlRXZlbnRUYXJnZXROb2RlKTogUmVtb3ZlZCBjb2Rl
IHRoYXQncyBubyBsb25nZXIgbmVjZXNzYXJ5LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29u
dHJvbE11bHRpTGluZTo6c3VidHJlZUhhc0NoYW5nZWQpOiBSZW1vdmVkIGV2ZW50IGludm9jYXRp
b24gdGhhdCdzCisgICAgICAgICAgICBubyBsb25nZXIgbmVjZXNzYXJ5LgorICAgICAgICAqIHJl
bmRlcmluZy9TaGFkb3dFbGVtZW50Lmg6IE1hZGUgbV9zaGFkb3dQYXJlbnQgYSBSZWZQdHIgdG8g
YXZvaWQgc3RhbGUgcmVmZXJlbmNlcyB3aGVuIHBhcmVudAorICAgICAgICBpcyBkZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKTogRmxpcHBlZCB0aGUgY29uZGl0aW9uIGJhY2sKKyAgICAgICAgICAgIGZyb20gd2hlcmUg
aXQgd2FzIHByaW9yIHRvIHI2MDQxOC4KKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6IFJl
bW92ZWQgZXZlbnRQYXJlbnROb2RlIHRoYXQncyBubyBsb25nZXIgbmVlZGVkLgorICAgICAgICAq
IHN2Zy9TVkdFbGVtZW50Lmg6IERpdHRvLgorCiAyMDEwLTExLTA0ICBOaWtvbGFzIFppbW1lcm1h
bm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMg
S2xpbmcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQppbmRleCBlNzZmY2IyZGYwOGY0ZGMxNjhkZGM3ZTU2ZWM2NDAyYjRjNzg5MWRl
Li5lMGEyZTlhMzhmODBmYmFiNGVkZmJlYzMzYjgwZTE5NDNjZDMzZmM1IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTEx
MzMsOCArMTEzMywxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvZG9tL0Vycm9y
RXZlbnQuY3BwIFwKIAlXZWJDb3JlL2RvbS9FcnJvckV2ZW50LmggXAogCVdlYkNvcmUvZG9tL0V2
ZW50LmNwcCBcCi0JV2ViQ29yZS9kb20vRXZlbnRFeGNlcHRpb24uaCBcCiAJV2ViQ29yZS9kb20v
RXZlbnQuaCBcCisJV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmNwcCBcCisJV2ViQ29yZS9kb20v
RXZlbnRDb250ZXh0LmggXAorCVdlYkNvcmUvZG9tL0V2ZW50RXhjZXB0aW9uLmggXAogCVdlYkNv
cmUvZG9tL0V2ZW50TGlzdGVuZXIuaCBcCiAJV2ViQ29yZS9kb20vRXZlbnROYW1lcy5jcHAgXAog
CVdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBcCkBAIC0xMjYyLDYgKzEyNjQsOCBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5oIFwKIAlX
ZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcCBcCiAJV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oIFwK
KwlXZWJDb3JlL2RvbS9XaW5kb3dFdmVudENvbnRleHQuY3BwIFwKKwlXZWJDb3JlL2RvbS9XaW5k
b3dFdmVudENvbnRleHQuaCBcCiAJV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwIFwK
IAlXZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5oIFwKIAlXZWJDb3JlL2RvbS9YTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBp
IGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMzM1YzY0ODRkNmExZjBjNzZlODUxMTliZjJl
MDBjYjAyMDdlZjg2OC4uNzZmZjAxZmU2ZTMyNmIxMThmOTBkN2Q2MjhlYTI3ZDliNzdmZTI1ZiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTEyMDYsNiArMTIwNiw4IEBACiAgICAgICAgICAgICAnZG9tL0Vycm9yRXZlbnQuaCcs
CiAgICAgICAgICAgICAnZG9tL0V2ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL0V2ZW50Lmgn
LAorICAgICAgICAgICAgJ2RvbS9FdmVudENvbnRleHQuY3BwJywKKyAgICAgICAgICAgICdkb20v
RXZlbnRDb250ZXh0LmgnLAogICAgICAgICAgICAgJ2RvbS9FdmVudEV4Y2VwdGlvbi5oJywKICAg
ICAgICAgICAgICdkb20vRXZlbnRMaXN0ZW5lci5oJywKICAgICAgICAgICAgICdkb20vRXZlbnRO
YW1lcy5jcHAnLApAQCAtMTM0MSw2ICsxMzQzLDggQEAKICAgICAgICAgICAgICdkb20vV2ViS2l0
VHJhbnNpdGlvbkV2ZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9XaGVlbEV2ZW50LmNwcCcsCiAg
ICAgICAgICAgICAnZG9tL1doZWVsRXZlbnQuaCcsCisgICAgICAgICAgICAnZG9tL1dpbmRvd0V2
ZW50Q29udGV4dC5jcHAnLAorICAgICAgICAgICAgJ2RvbS9XaW5kb3dFdmVudENvbnRleHQuaCcs
CiAgICAgICAgICAgICAnZG9tL1hNTERvY3VtZW50UGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAn
ZG9tL1hNTERvY3VtZW50UGFyc2VyLmgnLAogICAgICAgICAgICAgJ2RvbS9YTUxEb2N1bWVudFBh
cnNlckxpYnhtbDIuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJD
b3JlL1dlYkNvcmUucHJvCmluZGV4IDg5MzMwNzI0YzVlNWVlMjY3ZTdjNjI2OTcxMDkwNTk1Njlk
NzcyY2IuLjcwZmM5ZTA2MGZmYTBkOWE4YTYwZDAzNjdkYjVlOWUzOTc1ODQ2ZDkgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNzEz
LDYgKzcxMyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9FbnRpdHlSZWZlcmVuY2UuY3BwIFwK
ICAgICBkb20vRXJyb3JFdmVudC5jcHAgXAogICAgIGRvbS9FdmVudC5jcHAgXAorICAgIGRvbS9F
dmVudENvbnRleHQuY3BwIFwKICAgICBkb20vRXZlbnROYW1lcy5jcHAgXAogICAgIGRvbS9FdmVu
dFRhcmdldC5jcHAgXAogICAgIGRvbS9FeGNlcHRpb25CYXNlLmNwcCBcCkBAIC03NzMsNiArNzc0
LDcgQEAgU09VUkNFUyArPSBcCiAgICAgZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCBcCiAg
ICAgZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgXAogICAgIGRvbS9XaGVlbEV2ZW50LmNw
cCBcCisgICAgZG9tL1dpbmRvd0V2ZW50Q29udGV4dC5jcHAgXAogICAgIGRvbS9YTUxEb2N1bWVu
dFBhcnNlci5jcHAgXAogICAgIGRvbS9YTUxEb2N1bWVudFBhcnNlclF0LmNwcCBcCiAgICAgZG9t
L2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwIFwKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGYzNjI2NTMyZWQ0YWE2MmNkMDg1ZDcwNGRiOGYwMjNj
NWRhZTczZjYuLmI3ZTMxOGI3NWYwYWI0NWFiNjA1MjI4YjQxMGY3ODk2ZGFjZGI1M2IgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDIyNTYsNiArNDIyNTYsNjIgQEAK
IAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9t
XEV2ZW50Q29udGV4dC5jcHAiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJ
CQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJ
CQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJ
Lz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQor
CQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
DQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQor
CQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24NCisJCQkJCU5hbWU9IkRlYnVnX0ludGVybmFsfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIi
DQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfQWxs
fFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8
VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGRvbVxFdmVudENvbnRleHQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxFdmVudEV4Y2VwdGlvbi5oIg0KIAkJCQk+DQog
CQkJPC9GaWxlPg0KQEAgLTQ1MzQ0LDYgKzQ1NDAwLDYyIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4N
CiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxXaW5kb3dFdmVudENvbnRleHQu
Y3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8
V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxU
b29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVs
ZWFzZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJ
CQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1l
PSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0K
KwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJ
CQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9u
DQorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiINCisJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cV2lu
ZG93RXZlbnRDb250ZXh0LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxkb21cWE1MRG9jdW1lbnRQYXJzZXIuY3BwIg0KIAkJCQk+DQogCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNmE5ZTJmMWNiMmE4ODFiYzAyNjBhOTg3NmE4M2Q2YTMxYTlkNWQyNS4uMDI5
MzA5OTM3YzMyODFlNWNmNTVhN2Y0ZWUzZWJjMmQ2NWRhMjYzZiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg5NSw3ICs4OTUsMTEgQEAKIAkJNDEwQjdF
NzIxMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMEI3RTcxMTA0NUZBQjAwMEQ4
MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgKi87IH07CiAJCTQxMTA0NjQxMEZBMjIy
QTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVudExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwNDYzRjBGQTIyMkE2MDBCQTQzNkEgLyogU2Ny
aXB0RXZlbnRMaXN0ZW5lci5oICovOyB9OwogCQk0MTEwNDY0MjBGQTIyMkE2MDBCQTQzNkEgLyog
U2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTEwNDY0MDBGQTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZlbnRMaXN0
ZW5lci5jcHAgKi87IH07CisJCTQxMjNFNTY5MTI3QjMwNDEwMDBGRUVBNyAvKiBXaW5kb3dFdmVu
dENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxMjNFNTY3MTI3QjMwNDEwMDBGRUVBNyAvKiBXaW5kb3dFdmVudENvbnRleHQuaCAqLzsgfTsK
KwkJNDEyM0U1NkExMjdCMzA0MTAwMEZFRUE3IC8qIFdpbmRvd0V2ZW50Q29udGV4dC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTIzRTU2ODEyN0Iz
MDQxMDAwRkVFQTcgLyogV2luZG93RXZlbnRDb250ZXh0LmNwcCAqLzsgfTsKIAkJNDEyN0Q1Mzcw
RjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3Jp
cHRTdGF0ZS5jcHAgKi87IH07CisJCTQxMzhEMzM1MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENv
bnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
MzhEMzMzMTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuaCAqLzsgfTsKKwkJNDEzOEQz
MzYxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM4RDMzNDEyNDQwNTQ4MDAzMjNEMzMgLyog
RXZlbnRDb250ZXh0LmNwcCAqLzsgfTsKIAkJNDE2MkE0NTAxMDExNDVBRTAwREZGM0VEIC8qIERl
ZGljYXRlZFdvcmtlckNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE2MkE0NEQxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtl
ckNvbnRleHQuY3BwICovOyB9OwogCQk0MTYyQTQ1MTEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNh
dGVkV29ya2VyQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE2MkE0NEUxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRl
eHQuaCAqLzsgfTsKIAkJNDE2MkE0NTQxMDExNDVFMzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29y
a2VyQ29udGV4dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTYyQTQ1MzEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcCAqLzsgfTsKQEAgLTY5NzIsNyArNjk3NiwxMSBAQAogCQk0MTBCN0U3
MTEwNDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEwNDYzRjBGQTIyMkE2MDBCQTQzNkEgLyogU2Ny
aXB0RXZlbnRMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3Jp
cHRFdmVudExpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTA0NjQw
MEZBMjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVudExpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEV2ZW50TGlzdGVuZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MTIzRTU2NzEyN0IzMDQxMDAwRkVFQTcgLyogV2luZG93
RXZlbnRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdpbmRvd0V2
ZW50Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTIzRTU2ODEyN0Iz
MDQxMDAwRkVFQTcgLyogV2luZG93RXZlbnRDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdpbmRvd0V2ZW50Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxMjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRTdGF0ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMzhEMzMzMTI0NDA1NDgwMDMyM0QzMyAv
KiBFdmVudENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRD
b250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMzhEMzM0MTI0NDA1NDgw
MDMyM0QzMyAvKiBFdmVudENvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRXZlbnRDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE2MkE0NEQxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGVkaWNhdGVkV29ya2VyQ29udGV4
dC5jcHA7IHBhdGggPSB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTYyQTQ0RTEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNh
dGVkV29ya2VyQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0Lmg7IHBhdGggPSB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRl
eHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2MkE0NEYxMDExNDVBRTAwREZG
M0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9
IERlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsOyBwYXRoID0gd29ya2Vycy9EZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MjAyLDYgKzE4
MjEwLDggQEAKIAkJCQk4NTAzMUIyQjBBNDRFRkM3MDBGOTkyRTAgLyogRXZlbnQuY3BwICovLAog
CQkJCTg1MDMxQjJDMEE0NEVGQzcwMEY5OTJFMCAvKiBFdmVudC5oICovLAogCQkJCTE0RTgzNkQy
MDlGODUxMjAwMEI4NUFFNCAvKiBFdmVudC5pZGwgKi8sCisJCQkJNDEzOEQzMzQxMjQ0MDU0ODAw
MzIzRDMzIC8qIEV2ZW50Q29udGV4dC5jcHAgKi8sCisJCQkJNDEzOEQzMzMxMjQ0MDU0ODAwMzIz
RDMzIC8qIEV2ZW50Q29udGV4dC5oICovLAogCQkJCUJDNjBEOTA5MEQyQTE3Q0UwMEI5OTE4RiAv
KiBFdmVudEV4Y2VwdGlvbi5oICovLAogCQkJCUJDNjBEOTBBMEQyQTE3Q0UwMEI5OTE4RiAvKiBF
dmVudEV4Y2VwdGlvbi5pZGwgKi8sCiAJCQkJOTM1RkJDNDQwOUJBMDBCOTAwRTIzMEIxIC8qIEV2
ZW50TGlzdGVuZXIuaCAqLywKQEAgLTE4MzYyLDYgKzE4MzcyLDggQEAKIAkJCQk4NTAzMUIzQTBB
NDRFRkM3MDBGOTkyRTAgLyogV2hlZWxFdmVudC5jcHAgKi8sCiAJCQkJODUwMzFCM0IwQTQ0RUZD
NzAwRjk5MkUwIC8qIFdoZWVsRXZlbnQuaCAqLywKIAkJCQk5M0VFQzFGNzA5QzI4Nzc3MDBDNTE1
RDEgLyogV2hlZWxFdmVudC5pZGwgKi8sCisJCQkJNDEyM0U1NjgxMjdCMzA0MTAwMEZFRUE3IC8q
IFdpbmRvd0V2ZW50Q29udGV4dC5jcHAgKi8sCisJCQkJNDEyM0U1NjcxMjdCMzA0MTAwMEZFRUE3
IC8qIFdpbmRvd0V2ZW50Q29udGV4dC5oICovLAogCQkJCUY1MjNEMzA5MDJERTQ0NzYwMTg2MzVD
QSAvKiBYTUxEb2N1bWVudFBhcnNlci5jcHAgKi8sCiAJCQkJRjUyM0QzMEEwMkRFNDQ3NjAxODYz
NUNBIC8qIFhNTERvY3VtZW50UGFyc2VyLmggKi8sCiAJCQkJNTRDNTBGN0EwRTgwMURGMzAwOTgz
MkEwIC8qIFhNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgKi8sCkBAIC0xOTUyOCw2ICsxOTU0
MCw3IEBACiAJCQkJODk4Nzg1NjAxMjJDQTA2NDAwM0FBQkRBIC8qIEVycm9yQ2FsbGJhY2suaCBp
biBIZWFkZXJzICovLAogCQkJCTJFQ0Y3QUUyMTAxNjJCNTgwMDQyN0RFNyAvKiBFcnJvckV2ZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0MjBBNDRFRkM3MDBGOTkyRTAgLyogRXZlbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQxMzhEMzM1MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENv
bnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEOTBDMEQyQTE3Q0UwMEI5OTE4RiAvKiBF
dmVudEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDMDlBNTMwQjA2NERCMzAwNUFC
RDREIC8qIEV2ZW50SGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1RkJDNDUwOUJBMDBC
OTAwRTIzMEIxIC8qIEV2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjExOTUsNiAr
MjEyMDgsNyBAQAogCQkJCTg1MDMxQjUxMEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVlbEV2ZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzgwRjQ3NDA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzlCMDJFRjBFQTJEQkM0MDBDNTQ1NzAgLyogV2lkdGhJdGVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDEyM0U1NjkxMjdCMzA0MTAwMEZFRUE3IC8qIFdp
bmRvd0V2ZW50Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4MjQzRTkwRDBDRkQ3NTAw
NDYwQzhGIC8qIFdpbmRvd0ZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUUxQkYwMDEx
NUZGNkZCMDA2RjUyQ0EgLyogV2luZG93c0tleWJvYXJkQ29kZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTA4MjAzQUEwMEVEOEMzNTMwMEI4QjYxQSAvKiBXTUxBY2Nlc3NFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTIyMTY3LDYgKzIyMTgxLDcgQEAKIAkJCQk4OTNDNDgwQzEyNDhCRDNBMDAy
QjNEODYgLyogRW50cnlTeW5jLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQ0Y3QUUxMTAxNjJC
NTgwMDQyN0RFNyAvKiBFcnJvckV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMxQjQx
MEE0NEVGQzcwMEY5OTJFMCAvKiBFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTM4RDMz
NjEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTkzQzA5QTgxMEIwNjRGMDAwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTNDMDlBN0YwQjA2NEVFRjAwNUFCRDREIC8qIEV2ZW50SGFuZGxlck1hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTFDQTE5RTA1MERDMjU1OTUwMDY1QTk5NCAvKiBFdmVudExvb3BN
YWMubW0gaW4gU291cmNlcyAqLywKQEAgLTIzNzY3LDYgKzIzNzgyLDcgQEAKIAkJCQk5MzgwRjQ3
MzA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzODBG
NDc4MDlBMTFBQ0MwMDFGREIzNCAvKiBXaWRnZXRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5
MzlCMDJFRTBFQTJEQkM0MDBDNTQ1NzAgLyogV2lkdGhJdGVyYXRvci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0MTIzRTU2QTEyN0IzMDQxMDAwRkVFQTcgLyogV2luZG93RXZlbnRDb250ZXh0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDODI0M0U4MEQwQ0ZENzUwMDQ2MEM4RiAvKiBXaW5kb3dG
ZWF0dXJlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwODIwM0E5RjBFRDhDMzUzMDBCOEI2MUEg
LyogV01MQWNjZXNzRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwODhDOTc1MTBFQ0I2
RTI4MDAwNTM0QkEgLyogV01MQUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuY3BwCmluZGV4IGZjMzM1MTkyNDU2MTcyZjc5YzEzNGJhNjE4YzI3ZWZkM2Y2YjE4MTQuLmI0
YmRiN2Y5MWM4OTljYTg0N2ZlYmRiMjc4MjYzZmZlNzE5ZTMwNmYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwCkBAIC0xMDA1LDcgKzEwMDUsOCBAQCBzdGF0aWMgdm9pZCBub3RpZnlDaGlsZEluc2VydGVk
KE5vZGUqIGNoaWxkKQogICAgIFJlZlB0cjxOb2RlPiBjID0gY2hpbGQ7CiAgICAgUmVmUHRyPERv
Y3VtZW50PiBkb2N1bWVudCA9IGNoaWxkLT5kb2N1bWVudCgpOwogCi0gICAgaWYgKGMtPnBhcmVu
dE5vZGUoKSAmJiBjLT5wYXJlbnROb2RlKCktPmluRG9jdW1lbnQoKSkKKyAgICBOb2RlKiBwYXJl
bnRPckhvc3ROb2RlID0gYy0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgIGlmIChwYXJlbnRPckhv
c3ROb2RlICYmIHBhcmVudE9ySG9zdE5vZGUtPmluRG9jdW1lbnQoKSkKICAgICAgICAgYy0+aW5z
ZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICBlbHNlCiAgICAgICAgIGMtPmluc2VydGVkSW50b1Ry
ZWUodHJ1ZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAgYi9XZWJD
b3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKaW5kZXggYzFkNTM2YTk5OTk3YjdlOWIyYzY5Mjg4ZThm
Y2MwOThmMTJmNGM3YS4uMmYzNTEwZDg4YmUxNjQxNTIxMjg1MzRkZjJkMDFkNTYzYWRiMTk4OCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCisrKyBiL1dlYkNvcmUvZG9t
L0RPTUFsbEluT25lLmNwcApAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgIkVudGl0eVJlZmVy
ZW5jZS5jcHAiCiAjaW5jbHVkZSAiRXJyb3JFdmVudC5jcHAiCiAjaW5jbHVkZSAiRXZlbnQuY3Bw
IgorI2luY2x1ZGUgIkV2ZW50Q29udGV4dC5jcHAiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5jcHAi
CiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuY3BwIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkJhc2UuY3Bw
IgpAQCAtMTI2LDUgKzEyNyw2IEBACiAjaW5jbHVkZSAiV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3Bw
IgogI2luY2x1ZGUgIldlYktpdFRyYW5zaXRpb25FdmVudC5jcHAiCiAjaW5jbHVkZSAiV2hlZWxF
dmVudC5jcHAiCisjaW5jbHVkZSAiV2luZG93RXZlbnRDb250ZXh0LmNwcCIKICNpbmNsdWRlICJY
TUxEb2N1bWVudFBhcnNlci5jcHAiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5j
cHAiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwIGIvV2ViQ29yZS9k
b20vRXZlbnRDb250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTVjNTIxMGFhZWY2Yjk0MWJiZGU1ZGUy
OTVjYmEzMzlkMTQyZGY1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRDb250
ZXh0LmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRXZlbnRDb250ZXh0LmgiCisKKyNpbmNsdWRlICJET01XaW5kb3cuaCIK
KyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiTm9k
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0V2ZW50Q29udGV4dDo6RXZlbnRDb250ZXh0
KFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gY3VycmVudFRh
cmdldCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gdGFyZ2V0KQorICAgIDogbV9ub2RlKG5vZGUp
CisgICAgLCBtX2N1cnJlbnRUYXJnZXQoY3VycmVudFRhcmdldCkKKyAgICAsIG1fdGFyZ2V0KHRh
cmdldCkKK3sKK30KKwordm9pZCBFdmVudENvbnRleHQ6OmhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50
KiBldmVudCkgY29uc3QKK3sKKyAgICBldmVudC0+c2V0VGFyZ2V0KG1fdGFyZ2V0LmdldCgpKTsK
KyAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldChtX2N1cnJlbnRUYXJnZXQuZ2V0KCkpOworICAg
IG1fbm9kZS0+aGFuZGxlTG9jYWxFdmVudHMoZXZlbnQpOworfQorCit9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9FdmVudENvbnRleHQuaCBiL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjliYWI5ZDQxNjJjMzViNjJjZmQ3MDYyMzZlZTFmNTQ3YmRkMjk3NGIKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuaApAQCAtMCwwICsxLDY1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICoKKyAqLworCisjaWZuZGVmIEV2ZW50Q29udGV4dF9oCisjZGVmaW5lIEV2ZW50Q29u
dGV4dF9oCisKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgRXZlbnRUYXJnZXQ7CitjbGFzcyBFdmVudDsKK2NsYXNzIE5vZGU7CisKK2NsYXNz
IEV2ZW50Q29udGV4dCB7CitwdWJsaWM6CisgICAgLy8gRklYTUU6IFVzZSBDb250YWluZXJOb2Rl
IGluc3RlYWQgb2YgTm9kZS4KKyAgICBFdmVudENvbnRleHQoUGFzc1JlZlB0cjxOb2RlPiwgUGFz
c1JlZlB0cjxFdmVudFRhcmdldD4gY3VycmVudFRhcmdldCwgUGFzc1JlZlB0cjxFdmVudFRhcmdl
dD4gdGFyZ2V0KTsKKworICAgIE5vZGUqIG5vZGUoKSBjb25zdDsKKyAgICBFdmVudFRhcmdldCog
dGFyZ2V0KCkgY29uc3Q7CisgICAgdm9pZCBoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCopIGNvbnN0
OworCitwcml2YXRlOgorICAgIFJlZlB0cjxOb2RlPiBtX25vZGU7CisgICAgUmVmUHRyPEV2ZW50
VGFyZ2V0PiBtX2N1cnJlbnRUYXJnZXQ7CisgICAgUmVmUHRyPEV2ZW50VGFyZ2V0PiBtX3Rhcmdl
dDsKK307CisKK2lubGluZSBOb2RlKiBFdmVudENvbnRleHQ6Om5vZGUoKSBjb25zdAoreworICAg
IHJldHVybiBtX25vZGUuZ2V0KCk7Cit9CisKK2lubGluZSBFdmVudFRhcmdldCogRXZlbnRDb250
ZXh0Ojp0YXJnZXQoKSBjb25zdAoreworICAgIHJldHVybiBtX3RhcmdldC5nZXQoKTsKK30KKwor
fQorCisjZW5kaWYgLy8gRXZlbnRDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL05v
ZGUuY3BwIGIvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggZTQ1YmFhNDk1NzAzNTAwNzRhNGZl
MTgwMDcyMDA0ZGFiODFiNjBmMy4uMWY4NGFlYTg3MmRjODgwNjUyYmQ2MjhkZGU5YzRmYTM4YWE5
MzZiZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJEeW5hbWljTm9kZUxpc3QuaCIK
ICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVu
dENvbnRleHQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV2ZW50
SGFuZGxlci5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKQEAgLTgwLDYgKzgxLDcgQEAK
ICNpbmNsdWRlICJXZWJLaXRBbmltYXRpb25FdmVudC5oIgogI2luY2x1ZGUgIldlYktpdFRyYW5z
aXRpb25FdmVudC5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJXaW5kb3dF
dmVudENvbnRleHQuaCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgogI2luY2x1ZGUgImh0bWxlZGl0
aW5nLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTczNCw5ICs3MzYsOSBAQCBpbmxp
bmUgdm9pZCBOb2RlOjpzZXRTdHlsZUNoYW5nZShTdHlsZUNoYW5nZVR5cGUgY2hhbmdlVHlwZSkK
IAogaW5saW5lIHZvaWQgTm9kZTo6bWFya0FuY2VzdG9yc1dpdGhDaGlsZE5lZWRzU3R5bGVSZWNh
bGMoKQogewotICAgIGZvciAoQ29udGFpbmVyTm9kZSogcCA9IHBhcmVudE5vZGUoKTsgcCAmJiAh
cC0+Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7IHAgPSBwLT5wYXJlbnROb2RlKCkpCisgICAgZm9y
IChDb250YWluZXJOb2RlKiBwID0gcGFyZW50T3JIb3N0Tm9kZSgpOyBwICYmICFwLT5jaGlsZE5l
ZWRzU3R5bGVSZWNhbGMoKTsgcCA9IHAtPnBhcmVudE9ySG9zdE5vZGUoKSkKICAgICAgICAgcC0+
c2V0Q2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7Ci0gICAgCisKICAgICBpZiAoZG9jdW1lbnQoKS0+
Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCkpCiAgICAgICAgIGRvY3VtZW50KCktPnNjaGVkdWxlU3R5
bGVSZWNhbGMoKTsKIH0KQEAgLTEzMjEsNyArMTMyMyw3IEBAIHZvaWQgTm9kZTo6Y3JlYXRlUmVu
ZGVyZXJJZk5lZWRlZCgpCiAKICAgICBBU1NFUlQoIXJlbmRlcmVyKCkpOwogICAgIAotICAgIENv
bnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGUoKTsgICAgCisgICAgQ29udGFpbmVyTm9k
ZSogcGFyZW50ID0gcGFyZW50T3JIb3N0Tm9kZSgpOwogICAgIEFTU0VSVChwYXJlbnQpOwogICAg
IAogICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIgPSBwYXJlbnQtPnJlbmRlcmVyKCk7
CkBAIC0yMjM5LDE0ICsyMjQxLDkgQEAgdm9pZCBOb2RlOjpnZXRTdWJyZXNvdXJjZVVSTHMoTGlz
dEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0CiAgICAgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVV
UkxzKHVybHMpOwogfQogCi1Db250YWluZXJOb2RlKiBOb2RlOjpldmVudFBhcmVudE5vZGUoKQot
ewotICAgIHJldHVybiBwYXJlbnROb2RlKCk7Ci19Ci0KIE5vZGUqIE5vZGU6OmVuY2xvc2luZ0xp
bmtFdmVudFBhcmVudE9yU2VsZigpCiB7Ci0gICAgZm9yIChOb2RlKiBub2RlID0gdGhpczsgbm9k
ZTsgbm9kZSA9IG5vZGUtPmV2ZW50UGFyZW50Tm9kZSgpKSB7CisgICAgZm9yIChOb2RlKiBub2Rl
ID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgewogICAgICAg
ICAvLyBGb3IgaW1hZ2VtYXBzLCB0aGUgZW5jbG9zaW5nIGxpbmsgbm9kZSBpcyB0aGUgYXNzb2Np
YXRlZCBhcmVhIGVsZW1lbnQgbm90IHRoZSBpbWFnZSBpdHNlbGYuCiAgICAgICAgIC8vIFNvIHdl
IGRvbid0IGxldCBpbWFnZXMgYmUgdGhlIGVuY2xvc2luZ0xpbmtOb2RlLCBldmVuIHRob3VnaCBp
c0xpbmsgc29tZXRpbWVzIHJldHVybnMgdHJ1ZQogICAgICAgICAvLyBmb3IgdGhlbS4KQEAgLTI0
ODQsMTIgKzI0ODEsMTMgQEAgdm9pZCBOb2RlOjpoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCogZXZl
bnQpCiAgICAgZmlyZUV2ZW50TGlzdGVuZXJzKGV2ZW50KTsKIH0KIAotI2lmIEVOQUJMRShTVkcp
Ci1zdGF0aWMgaW5saW5lIFNWR0VsZW1lbnRJbnN0YW5jZSogZXZlbnRUYXJnZXRBc1NWR0VsZW1l
bnRJbnN0YW5jZShOb2RlKiByZWZlcmVuY2VOb2RlKQorc3RhdGljIGlubGluZSBFdmVudFRhcmdl
dCogZXZlbnRUYXJnZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0UnVsZXMoTm9kZSogcmVmZXJlbmNlTm9k
ZSkKIHsKICAgICBBU1NFUlQocmVmZXJlbmNlTm9kZSk7CisKKyNpZiBFTkFCTEUoU1ZHKQogICAg
IGlmICghcmVmZXJlbmNlTm9kZS0+aXNTVkdFbGVtZW50KCkpCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gcmVmZXJlbmNlTm9kZTsKIAogICAgIC8vIFNwZWM6IFRoZSBldmVudCBo
YW5kbGluZyBmb3IgdGhlIG5vbi1leHBvc2VkIHRyZWUgd29ya3MgYXMgaWYgdGhlIHJlZmVyZW5j
ZWQgZWxlbWVudCBoYWQgYmVlbiB0ZXh0dWFsbHkgaW5jbHVkZWQKICAgICAvLyBhcyBhIGRlZXBs
eSBjbG9uZWQgY2hpbGQgb2YgdGhlICd1c2UnIGVsZW1lbnQsIGV4Y2VwdCB0aGF0IGV2ZW50cyBh
cmUgZGlzcGF0Y2hlZCB0byB0aGUgU1ZHRWxlbWVudEluc3RhbmNlIG9iamVjdHMKQEAgLTI1MDMs
MzYgKzI1MDEsNDEgQEAgc3RhdGljIGlubGluZSBTVkdFbGVtZW50SW5zdGFuY2UqIGV2ZW50VGFy
Z2V0QXNTVkdFbGVtZW50SW5zdGFuY2UoTm9kZSogcmVmZXJlbmMKICAgICAgICAgaWYgKFNWR0Vs
ZW1lbnRJbnN0YW5jZSogaW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxTVkdVc2VFbGVtZW50Kj4oc2hh
ZG93VHJlZVBhcmVudEVsZW1lbnQpLT5pbnN0YW5jZUZvclNoYWRvd1RyZWVFbGVtZW50KHJlZmVy
ZW5jZU5vZGUpKQogICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KKyNlbmRpZgog
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHJlZmVyZW5jZU5vZGU7CiB9Ci0jZW5kaWYKIAot
c3RhdGljIGlubGluZSBFdmVudFRhcmdldCogZXZlbnRUYXJnZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0
UnVsZXMoTm9kZSogcmVmZXJlbmNlTm9kZSkKK3ZvaWQgTm9kZTo6Z2V0RXZlbnRBbmNlc3RvcnMo
VmVjdG9yPEV2ZW50Q29udGV4dD4mIGFuY2VzdG9ycywgRXZlbnRUYXJnZXQqIG9yaWdpbmFsVGFy
Z2V0LCBFdmVudERpc3BhdGNoQmVoYXZpb3IgYmVoYXZpb3IpCiB7Ci0gICAgQVNTRVJUKHJlZmVy
ZW5jZU5vZGUpOworICAgIGlmICghaW5Eb2N1bWVudCgpKQorICAgICAgICByZXR1cm47CiAKLSNp
ZiBFTkFCTEUoU1ZHKQotICAgIGlmIChTVkdFbGVtZW50SW5zdGFuY2UqIGluc3RhbmNlID0gZXZl
bnRUYXJnZXRBc1NWR0VsZW1lbnRJbnN0YW5jZShyZWZlcmVuY2VOb2RlKSkgewotICAgICAgICBB
U1NFUlQoaW5zdGFuY2UtPnNoYWRvd1RyZWVFbGVtZW50KCkgPT0gcmVmZXJlbmNlTm9kZSk7Ci0g
ICAgICAgIHJldHVybiBpbnN0YW5jZTsKLSAgICB9Ci0jZW5kaWYKKyAgICBFdmVudFRhcmdldCog
dGFyZ2V0ID0gb3JpZ2luYWxUYXJnZXQ7CisgICAgTm9kZSogYW5jZXN0b3IgPSB0aGlzOworICAg
IGJvb2wgc2hvdWxkU2tpcE5leHRBbmNlc3RvciA9IGZhbHNlOworICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgIGlmIChhbmNlc3Rvci0+aXNTaGFkb3dOb2RlKCkpIHsKKyAgICAgICAgICAgIGlm
IChiZWhhdmlvciA9PSBTdGF5SW5zaWRlU2hhZG93RE9NKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3ItPnNoYWRvd1BhcmVudE5vZGUoKTsK
KyAgICAgICAgICAgIGlmICghc2hvdWxkU2tpcE5leHRBbmNlc3RvcikKKyAgICAgICAgICAgICAg
ICB0YXJnZXQgPSBhbmNlc3RvcjsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBhbmNlc3Rv
ciA9IGFuY2VzdG9yLT5wYXJlbnROb2RlKCk7CiAKLSAgICByZXR1cm4gcmVmZXJlbmNlTm9kZTsK
LX0KKyAgICAgICAgaWYgKCFhbmNlc3RvcikKKyAgICAgICAgICAgIHJldHVybjsKIAotdm9pZCBO
b2RlOjpldmVudEFuY2VzdG9ycyhWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4gJmFuY2Vz
dG9ycykKLXsKLSAgICBpZiAoaW5Eb2N1bWVudCgpKSB7Ci0gICAgICAgIGZvciAoQ29udGFpbmVy
Tm9kZSogYW5jZXN0b3IgPSBldmVudFBhcmVudE5vZGUoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0g
YW5jZXN0b3ItPmV2ZW50UGFyZW50Tm9kZSgpKSB7CiAjaWYgRU5BQkxFKFNWRykKLSAgICAgICAg
ICAgIC8vIFNraXAgPHVzZT4gc2hhZG93IHRyZWUgZWxlbWVudHMuCi0gICAgICAgICAgICBpZiAo
YW5jZXN0b3ItPmlzU1ZHRWxlbWVudCgpICYmIGFuY2VzdG9yLT5pc1NoYWRvd05vZGUoKSkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgLy8gU2tpcCBTVkdTaGFkb3dUcmVlUm9v
dEVsZW1lbnQuCisgICAgICAgIHNob3VsZFNraXBOZXh0QW5jZXN0b3IgPSBhbmNlc3Rvci0+aXNT
VkdFbGVtZW50KCkgJiYgYW5jZXN0b3ItPmlzU2hhZG93Tm9kZSgpOworICAgICAgICBpZiAoc2hv
dWxkU2tpcE5leHRBbmNlc3RvcikKKyAgICAgICAgICAgIGNvbnRpbnVlOwogI2VuZGlmCi0gICAg
ICAgICAgICBhbmNlc3RvcnMuYXBwZW5kKGFuY2VzdG9yKTsKLSAgICAgICAgfQorICAgICAgICAv
LyBGSVhNRTogVW5yb2xsIHRoZSBleHRyYSBsb29wIGluc2lkZSBldmVudFRhcmdldFJlc3BlY3Rp
bmdTVkdUYXJnZXRSdWxlcyBpbnRvIHRoaXMgbG9vcC4KKyAgICAgICAgYW5jZXN0b3JzLmFwcGVu
ZChFdmVudENvbnRleHQoYW5jZXN0b3IsIGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1NWR1RhcmdldFJ1
bGVzKGFuY2VzdG9yKSwgdGFyZ2V0KSk7CisKICAgICB9CiB9CiAKQEAgLTI1NDcsNiArMjU1MCwx
MSBAQCBib29sIE5vZGU6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQp
CiAgICAgcmV0dXJuIGRpc3BhdGNoR2VuZXJpY0V2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CiB9CiAK
K3N0YXRpYyBjb25zdCBFdmVudENvbnRleHQqIHRvcEV2ZW50Q29udGV4dChjb25zdCBWZWN0b3I8
RXZlbnRDb250ZXh0PiYgYW5jZXN0b3JzKQoreworICAgIHJldHVybiBhbmNlc3RvcnMuaXNFbXB0
eSgpID8gMCA6ICYoYW5jZXN0b3JzLmxhc3QoKSk7Cit9CisKIGJvb2wgTm9kZTo6ZGlzcGF0Y2hH
ZW5lcmljRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiB7CiAgICAgUmVmUHRyPEV2
ZW50PiBldmVudChwcnBFdmVudCk7CkBAIC0yNTU5LDIwICsyNTY3LDEzIEBAIGJvb2wgTm9kZTo6
ZGlzcGF0Y2hHZW5lcmljRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiAgICAgLy8g
SWYgdGhlIG5vZGUgaXMgbm90IGluIGEgZG9jdW1lbnQganVzdCBzZW5kIHRoZSBldmVudCB0byBp
dC4KICAgICAvLyBCZSBzdXJlIHRvIHJlZiBhbGwgb2Ygbm9kZXMgc2luY2UgZXZlbnQgaGFuZGxl
cnMgY291bGQgcmVzdWx0IGluIHRoZSBsYXN0IHJlZmVyZW5jZSBnb2luZyBhd2F5LgogICAgIFJl
ZlB0cjxOb2RlPiB0aGlzTm9kZSh0aGlzKTsKLSAgICBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5v
ZGU+ID4gYW5jZXN0b3JzOwotICAgIGV2ZW50QW5jZXN0b3JzKGFuY2VzdG9ycyk7CisgICAgUmVm
UHRyPEV2ZW50VGFyZ2V0PiBvcmlnaW5hbFRhcmdldCA9IGV2ZW50LT50YXJnZXQoKTsKKyAgICBW
ZWN0b3I8RXZlbnRDb250ZXh0PiBhbmNlc3RvcnM7CisgICAgZ2V0RXZlbnRBbmNlc3RvcnMoYW5j
ZXN0b3JzLCBvcmlnaW5hbFRhcmdldC5nZXQoKSwgZXZlbnQtPmlzTXV0YXRpb25FdmVudCgpID8g
U3RheUluc2lkZVNoYWRvd0RPTSA6IFJldGFyZ2V0RXZlbnQpOwogCi0gICAgLy8gU2V0IHVwIGEg
cG9pbnRlciB0byBpbmRpY2F0ZSB3aGV0aGVyIC8gd2hlcmUgdG8gZGlzcGF0Y2ggd2luZG93IGV2
ZW50cy4KLSAgICAvLyBXZSBkb24ndCBkaXNwYXRjaCBsb2FkIGV2ZW50cyB0byB0aGUgd2luZG93
LiBUaGF0IHF1aXJrIHdhcyBvcmlnaW5hbGx5Ci0gICAgLy8gYWRkZWQgYmVjYXVzZSBNb3ppbGxh
IGRvZXNuJ3QgcHJvcGFnYXRlIGxvYWQgZXZlbnRzIHRvIHRoZSB3aW5kb3cgb2JqZWN0LgotICAg
IERPTVdpbmRvdyogdGFyZ2V0Rm9yV2luZG93RXZlbnRzID0gMDsKLSAgICBpZiAoZXZlbnQtPnR5
cGUoKSAhPSBldmVudE5hbWVzKCkubG9hZEV2ZW50KSB7Ci0gICAgICAgIE5vZGUqIHRvcExldmVs
Q29udGFpbmVyID0gYW5jZXN0b3JzLmlzRW1wdHkoKSA/IHRoaXMgOiBhbmNlc3RvcnMubGFzdCgp
LmdldCgpOwotICAgICAgICBpZiAodG9wTGV2ZWxDb250YWluZXItPmlzRG9jdW1lbnROb2RlKCkp
Ci0gICAgICAgICAgICB0YXJnZXRGb3JXaW5kb3dFdmVudHMgPSBzdGF0aWNfY2FzdDxEb2N1bWVu
dCo+KHRvcExldmVsQ29udGFpbmVyKS0+ZG9tV2luZG93KCk7Ci0gICAgfQorICAgIFdpbmRvd0V2
ZW50Q29udGV4dCB3aW5kb3dDb250ZXh0KGV2ZW50LmdldCgpLCB0aGlzLCB0b3BFdmVudENvbnRl
eHQoYW5jZXN0b3JzKSk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29v
a2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudChkb2N1bWVu
dCgpLCAqZXZlbnQsIHRhcmdldEZvcldpbmRvd0V2ZW50cywgdGhpcywgYW5jZXN0b3JzKTsKKyAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudChkb2N1bWVudCgpLCAqZXZlbnQsIHdpbmRvd0Nv
bnRleHQud2luZG93KCksIHRoaXMsIGFuY2VzdG9ycyk7CiAKICAgICAvLyBHaXZlIHRoZSB0YXJn
ZXQgbm9kZSBhIGNoYW5jZSB0byBkbyBzb21lIHdvcmsgYmVmb3JlIERPTSBldmVudCBoYW5kbGVy
cyBnZXQgYSBjcmFjay4KICAgICB2b2lkKiBkYXRhID0gcHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIo
ZXZlbnQuZ2V0KCkpOwpAQCAtMjU4MiwyMiArMjU4MywxNyBAQCBib29sIE5vZGU6OmRpc3BhdGNo
R2VuZXJpY0V2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50KQogICAgIC8vIFRyaWdnZXIg
Y2FwdHVyaW5nIGV2ZW50IGhhbmRsZXJzLCBzdGFydGluZyBhdCB0aGUgdG9wIGFuZCB3b3JraW5n
IG91ciB3YXkgZG93bi4KICAgICBldmVudC0+c2V0RXZlbnRQaGFzZShFdmVudDo6Q0FQVFVSSU5H
X1BIQVNFKTsKIAotICAgIGlmICh0YXJnZXRGb3JXaW5kb3dFdmVudHMpIHsKLSAgICAgICAgZXZl
bnQtPnNldEN1cnJlbnRUYXJnZXQodGFyZ2V0Rm9yV2luZG93RXZlbnRzKTsKLSAgICAgICAgdGFy
Z2V0Rm9yV2luZG93RXZlbnRzLT5maXJlRXZlbnRMaXN0ZW5lcnMoZXZlbnQuZ2V0KCkpOwotICAg
ICAgICBpZiAoZXZlbnQtPnByb3BhZ2F0aW9uU3RvcHBlZCgpKQotICAgICAgICAgICAgZ290byBk
b25lRGlzcGF0Y2hpbmc7Ci0gICAgfQorICAgIGlmICh3aW5kb3dDb250ZXh0LmhhbmRsZUxvY2Fs
RXZlbnRzKGV2ZW50LmdldCgpKSAmJiBldmVudC0+cHJvcGFnYXRpb25TdG9wcGVkKCkpCisgICAg
ICAgIGdvdG8gZG9uZURpc3BhdGNoaW5nOworCiAgICAgZm9yIChzaXplX3QgaSA9IGFuY2VzdG9y
cy5zaXplKCk7IGk7IC0taSkgewotICAgICAgICBDb250YWluZXJOb2RlKiBhbmNlc3RvciA9IGFu
Y2VzdG9yc1tpIC0gMV0uZ2V0KCk7Ci0gICAgICAgIGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KGV2
ZW50VGFyZ2V0UmVzcGVjdGluZ1NWR1RhcmdldFJ1bGVzKGFuY2VzdG9yKSk7Ci0gICAgICAgIGFu
Y2VzdG9yLT5oYW5kbGVMb2NhbEV2ZW50cyhldmVudC5nZXQoKSk7CisgICAgICAgIGFuY2VzdG9y
c1tpIC0gMV0uaGFuZGxlTG9jYWxFdmVudHMoZXZlbnQuZ2V0KCkpOwogICAgICAgICBpZiAoZXZl
bnQtPnByb3BhZ2F0aW9uU3RvcHBlZCgpKQogICAgICAgICAgICAgZ290byBkb25lRGlzcGF0Y2hp
bmc7CiAgICAgfQogCiAgICAgZXZlbnQtPnNldEV2ZW50UGhhc2UoRXZlbnQ6OkFUX1RBUkdFVCk7
Ci0KKyAgICBldmVudC0+c2V0VGFyZ2V0KG9yaWdpbmFsVGFyZ2V0LmdldCgpKTsKICAgICBldmVu
dC0+c2V0Q3VycmVudFRhcmdldChldmVudFRhcmdldFJlc3BlY3RpbmdTVkdUYXJnZXRSdWxlcyh0
aGlzKSk7CiAgICAgaGFuZGxlTG9jYWxFdmVudHMoZXZlbnQuZ2V0KCkpOwogICAgIGlmIChldmVu
dC0+cHJvcGFnYXRpb25TdG9wcGVkKCkpCkBAIC0yNjA5LDIxICsyNjA1LDE1IEBAIGJvb2wgTm9k
ZTo6ZGlzcGF0Y2hHZW5lcmljRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiAKICAg
ICAgICAgc2l6ZV90IHNpemUgPSBhbmNlc3RvcnMuc2l6ZSgpOwogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgQ29udGFpbmVyTm9kZSogYW5j
ZXN0b3IgPSBhbmNlc3RvcnNbaV0uZ2V0KCk7Ci0gICAgICAgICAgICBldmVudC0+c2V0Q3VycmVu
dFRhcmdldChldmVudFRhcmdldFJlc3BlY3RpbmdTVkdUYXJnZXRSdWxlcyhhbmNlc3RvcikpOwot
ICAgICAgICAgICAgYW5jZXN0b3ItPmhhbmRsZUxvY2FsRXZlbnRzKGV2ZW50LmdldCgpKTsKLSAg
ICAgICAgICAgIGlmIChldmVudC0+cHJvcGFnYXRpb25TdG9wcGVkKCkgfHwgZXZlbnQtPmNhbmNl
bEJ1YmJsZSgpKQotICAgICAgICAgICAgICAgIGdvdG8gZG9uZURpc3BhdGNoaW5nOwotICAgICAg
ICB9Ci0gICAgICAgIGlmICh0YXJnZXRGb3JXaW5kb3dFdmVudHMpIHsKLSAgICAgICAgICAgIGV2
ZW50LT5zZXRDdXJyZW50VGFyZ2V0KHRhcmdldEZvcldpbmRvd0V2ZW50cyk7Ci0gICAgICAgICAg
ICB0YXJnZXRGb3JXaW5kb3dFdmVudHMtPmZpcmVFdmVudExpc3RlbmVycyhldmVudC5nZXQoKSk7
CisgICAgICAgICAgICBhbmNlc3RvcnNbaV0uaGFuZGxlTG9jYWxFdmVudHMoZXZlbnQuZ2V0KCkp
OwogICAgICAgICAgICAgaWYgKGV2ZW50LT5wcm9wYWdhdGlvblN0b3BwZWQoKSB8fCBldmVudC0+
Y2FuY2VsQnViYmxlKCkpCiAgICAgICAgICAgICAgICAgZ290byBkb25lRGlzcGF0Y2hpbmc7CiAg
ICAgICAgIH0KKyAgICAgICAgd2luZG93Q29udGV4dC5oYW5kbGVMb2NhbEV2ZW50cyhldmVudC5n
ZXQoKSk7CiAgICAgfQogCiBkb25lRGlzcGF0Y2hpbmc6CisgICAgZXZlbnQtPnNldFRhcmdldChv
cmlnaW5hbFRhcmdldC5nZXQoKSk7CiAgICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQoMCk7CiAg
ICAgZXZlbnQtPnNldEV2ZW50UGhhc2UoMCk7CiAKQEAgLTI2NDQsOCArMjYzNCw3IEBAIGRvbmVE
aXNwYXRjaGluZzoKICAgICAgICAgaWYgKGV2ZW50LT5idWJibGVzKCkpIHsKICAgICAgICAgICAg
IHNpemVfdCBzaXplID0gYW5jZXN0b3JzLnNpemUoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgQ29udGFpbmVyTm9kZSog
YW5jZXN0b3IgPSBhbmNlc3RvcnNbaV0uZ2V0KCk7Ci0gICAgICAgICAgICAgICAgYW5jZXN0b3It
PmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQuZ2V0KCkpOworICAgICAgICAgICAgICAgIGFuY2Vz
dG9yc1tpXS5ub2RlKCktPmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQuZ2V0KCkpOwogICAgICAg
ICAgICAgICAgIEFTU0VSVCghZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKGV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpKQogICAgICAgICAgICAgICAgICAgICBn
b3RvIGRvbmVXaXRoRGVmYXVsdDsKQEAgLTI2NTUsNiArMjY0NCwxMCBAQCBkb25lRGlzcGF0Y2hp
bmc6CiAKIGRvbmVXaXRoRGVmYXVsdDoKIAorICAgIC8vIEVuc3VyZSB0aGF0IGFmdGVyIGV2ZW50
IGRpc3BhdGNoLCB0aGUgZXZlbnQncyB0YXJnZXQgb2JqZWN0IGlzIHRoZQorICAgIC8vIG91dGVy
bW9zdCBzaGFkb3cgRE9NIGJvdW5kYXJ5LgorICAgIGV2ZW50LT5zZXRUYXJnZXQod2luZG93Q29u
dGV4dC50YXJnZXQoKSk7CisgICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQoMCk7CiAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50KGNvb2tpZSk7CiAKICAgICBy
ZXR1cm4gIWV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9Ob2RlLmggYi9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggM2M2YzE5OTcxMWIzNGUxYTAwYTlk
YTgwMTFhZjVhNWFlNGRjNjRkNS4uNjc1ZGUwNGQxOWFhYjFjNTUwYTgzNGI3OTEzOWJlMDhmZjY0
OTQwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1dlYkNvcmUvZG9tL05v
ZGUuaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIER5bmFtaWNOb2Rl
TGlzdDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBFdmVudDsKK2NsYXNzIEV2ZW50Q29udGV4dDsK
IGNsYXNzIEV2ZW50TGlzdGVuZXI7CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRnJhbWU7CkBA
IC04NSw2ICs4NiwxMSBAQCBlbnVtIFN0eWxlQ2hhbmdlVHlwZSB7CiAgICAgU3ludGhldGljU3R5
bGVDaGFuZ2UgPSAzIDw8IG5vZGVTdHlsZUNoYW5nZVNoaWZ0CiB9OwogCitlbnVtIEV2ZW50RGlz
cGF0Y2hCZWhhdmlvciB7CisgICAgUmV0YXJnZXRFdmVudCwKKyAgICBTdGF5SW5zaWRlU2hhZG93
RE9NCit9OworCiBjbGFzcyBOb2RlIDogcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgVHJlZVNo
YXJlZDxDb250YWluZXJOb2RlPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CiAgICAgZnJpZW5k
IGNsYXNzIERvY3VtZW50OwogcHVibGljOgpAQCAtMjA0LDE2ICsyMTAsMTQgQEAgcHVibGljOgog
ICAgIE5vZGUqIHNoYWRvd0FuY2VzdG9yTm9kZSgpOwogICAgIE5vZGUqIHNoYWRvd1RyZWVSb290
Tm9kZSgpOwogICAgIGJvb2wgaXNJblNoYWRvd1RyZWUoKTsKLQotICAgIC8vIFRoZSBub2RlJ3Mg
cGFyZW50IGZvciB0aGUgcHVycG9zZSBvZiBldmVudCBjYXB0dXJlIGFuZCBidWJibGluZy4KLSAg
ICB2aXJ0dWFsIENvbnRhaW5lck5vZGUqIGV2ZW50UGFyZW50Tm9kZSgpOworICAgIC8vIE5vZGUn
cyBwYXJlbnQgb3Igc2hhZG93IHRyZWUgaG9zdC4KKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnRP
ckhvc3ROb2RlKCk7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBlbmNsb3NpbmcgZXZlbnQgcGFyZW50
IG5vZGUgKG9yIHNlbGYpIHRoYXQsIHdoZW4gY2xpY2tlZCwgd291bGQgdHJpZ2dlciBhIG5hdmln
YXRpb24uCiAgICAgTm9kZSogZW5jbG9zaW5nTGlua0V2ZW50UGFyZW50T3JTZWxmKCk7CiAKICAg
ICAvLyBOb2RlIGFuY2VzdG9ycyB3aGVuIGNvbmNlcm5lZCBhYm91dCBldmVudCBmbG93LgotICAg
IC8vIEZJWE1FOiBTaG91bGQgYmUgbmFtZWQgZ2V0RXZlbnRBbmNlc3RvcnMuCi0gICAgdm9pZCBl
dmVudEFuY2VzdG9ycyhWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4gJmFuY2VzdG9ycyk7
CisgICAgdm9pZCBnZXRFdmVudEFuY2VzdG9ycyhWZWN0b3I8RXZlbnRDb250ZXh0PiYgYW5jZXN0
b3JzLCBFdmVudFRhcmdldCosIEV2ZW50RGlzcGF0Y2hCZWhhdmlvciA9IFJldGFyZ2V0RXZlbnQp
OwogCiAgICAgYm9vbCBpc0Jsb2NrRmxvdygpIGNvbnN0OwogICAgIGJvb2wgaXNCbG9ja0Zsb3dP
ckJsb2NrVGFibGUoKSBjb25zdDsKQEAgLTY5Myw2ICs2OTcsMTMgQEAgaW5saW5lIHZvaWQgYWRk
U3VicmVzb3VyY2VVUkwoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IEtVUkwmIHVybCkK
ICAgICAgICAgdXJscy5hZGQodXJsKTsKIH0KIAoraW5saW5lIENvbnRhaW5lck5vZGUqIE5vZGU6
OnBhcmVudE9ySG9zdE5vZGUoKQoreworICAgIGlmIChDb250YWluZXJOb2RlKiBwYXJlbnQgPSBw
YXJlbnROb2RlKCkpCisgICAgICAgIHJldHVybiBwYXJlbnQ7CisgICAgcmV0dXJuIHNoYWRvd1Bh
cmVudE5vZGUoKTsKK30KKwogfSAvL25hbWVzcGFjZQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9kb20vVGV4dC5jcHAgYi9XZWJDb3JlL2RvbS9UZXh0LmNwcAppbmRleCA2
MjcxZjExMDY1OWM2YjgwYmI0YzIzYWYwYWE3YzZlMjg1MmU4NWI3Li40N2M1MzJlZTM1YzlkNmIy
ODY1Zjc0ZGVlNDYzMjRmYzE3ZTliODE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9UZXh0LmNw
cAorKysgYi9XZWJDb3JlL2RvbS9UZXh0LmNwcApAQCAtMjQwLDkgKzI0MCwxMCBAQCBib29sIFRl
eHQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUgKnN0eWxlKQogUmVuZGVyT2JqZWN0KiBU
ZXh0OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsK
ICNpZiBFTkFCTEUoU1ZHKQotICAgIGlmIChwYXJlbnROb2RlKCktPmlzU1ZHRWxlbWVudCgpCisg
ICAgTm9kZSogcGFyZW50T3JIb3N0ID0gcGFyZW50T3JIb3N0Tm9kZSgpOworICAgIGlmIChwYXJl
bnRPckhvc3QtPmlzU1ZHRWxlbWVudCgpCiAjaWYgRU5BQkxFKFNWR19GT1JFSUdOX09CSkVDVCkK
LSAgICAgICAgJiYgIXBhcmVudE5vZGUoKS0+aGFzVGFnTmFtZShTVkdOYW1lczo6Zm9yZWlnbk9i
amVjdFRhZykKKyAgICAgICAgJiYgIXBhcmVudE9ySG9zdC0+aGFzVGFnTmFtZShTVkdOYW1lczo6
Zm9yZWlnbk9iamVjdFRhZykKICNlbmRpZgogICAgICkKICAgICAgICAgcmV0dXJuIG5ldyAoYXJl
bmEpIFJlbmRlclNWR0lubGluZVRleHQodGhpcywgZGF0YUltcGwoKSk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9XaW5kb3dFdmVudENvbnRleHQuY3BwIGIvV2ViQ29yZS9kb20vV2luZG93RXZl
bnRDb250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGY0YTM2MjdkNjA5ZTU4ODFiNDc5M2MzNDAxZDkx
OGVlZTcyN2ZjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9kb20vV2luZG93RXZlbnRDb250
ZXh0LmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2luZG93RXZlbnRDb250ZXh0LmgiCisKKyNpbmNsdWRlICJET01XaW5k
b3cuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVk
ZSAiRXZlbnRDb250ZXh0LmgiCisjaW5jbHVkZSAiTm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1dpbmRvd0V2ZW50Q29udGV4dDo6V2luZG93RXZlbnRDb250ZXh0KEV2ZW50KiBldmVu
dCwgUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBjb25zdCBFdmVudENvbnRleHQqIHRvcEV2ZW50Q29u
dGV4dCkKK3sKKyAgICAvLyBXZSBkb24ndCBkaXNwYXRjaCBsb2FkIGV2ZW50cyB0byB0aGUgd2lu
ZG93LiBUaGF0IHF1aXJrIHdhcyBvcmlnaW5hbGx5CisgICAgLy8gYWRkZWQgYmVjYXVzZSBNb3pp
bGxhIGRvZXNuJ3QgcHJvcGFnYXRlIGxvYWQgZXZlbnRzIHRvIHRoZSB3aW5kb3cgb2JqZWN0Lgor
ICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpCisgICAgICAg
IHJldHVybjsKKworICAgIE5vZGUqIHRvcExldmVsQ29udGFpbmVyID0gdG9wRXZlbnRDb250ZXh0
ID8gdG9wRXZlbnRDb250ZXh0LT5ub2RlKCkgOiBub2RlLmdldCgpOworICAgIGlmICghdG9wTGV2
ZWxDb250YWluZXItPmlzRG9jdW1lbnROb2RlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
d2luZG93ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPih0b3BMZXZlbENvbnRhaW5lciktPmRvbVdp
bmRvdygpOworICAgIG1fdGFyZ2V0ID0gdG9wRXZlbnRDb250ZXh0ID8gdG9wRXZlbnRDb250ZXh0
LT50YXJnZXQoKSA6IG5vZGUuZ2V0KCk7Cit9CisKK2Jvb2wgV2luZG93RXZlbnRDb250ZXh0Ojpo
YW5kbGVMb2NhbEV2ZW50cyhFdmVudCogZXZlbnQpCit7CisgICAgaWYgKCFtX3dpbmRvdykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZXZlbnQtPnNldFRhcmdldCh0YXJnZXQoKSk7Cisg
ICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQod2luZG93KCkpOworICAgIG1fd2luZG93LT5maXJl
RXZlbnRMaXN0ZW5lcnMoZXZlbnQpOworICAgIHJldHVybiB0cnVlOworfQorCit9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudENvbnRleHQuaCBiL1dlYkNvcmUvZG9tL1dpbmRv
d0V2ZW50Q29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExOWUwNGQxODQwZDFhNjI5OTM0ZTUwY2JlOWQz
OTgzMWI3ZThjMzMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudENv
bnRleHQuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIFdpbmRvd0V2
ZW50Q29udGV4dF9oCisjZGVmaW5lIFdpbmRvd0V2ZW50Q29udGV4dF9oCisKKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NV2luZG93Owor
Y2xhc3MgRXZlbnRUYXJnZXQ7CitjbGFzcyBFdmVudENvbnRleHQ7CitjbGFzcyBFdmVudDsKK2Ns
YXNzIE5vZGU7CisKK2NsYXNzIFdpbmRvd0V2ZW50Q29udGV4dCB7CitwdWJsaWM6CisgICAgV2lu
ZG93RXZlbnRDb250ZXh0KEV2ZW50KiwgUGFzc1JlZlB0cjxOb2RlPiwgY29uc3QgRXZlbnRDb250
ZXh0Kik7CisKKyAgICBET01XaW5kb3cqIHdpbmRvdygpIGNvbnN0OworICAgIEV2ZW50VGFyZ2V0
KiB0YXJnZXQoKSBjb25zdDsKKyAgICBib29sIGhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KiBldmVu
dCk7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPERPTVdpbmRvdz4gbV93aW5kb3c7CisgICAgUmVm
UHRyPEV2ZW50VGFyZ2V0PiBtX3RhcmdldDsKK307CisKK2lubGluZSBET01XaW5kb3cqIFdpbmRv
d0V2ZW50Q29udGV4dDo6d2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93aW5kb3cuZ2V0
KCk7Cit9CisKK2lubGluZSBFdmVudFRhcmdldCogV2luZG93RXZlbnRDb250ZXh0Ojp0YXJnZXQo
KSBjb25zdAoreworICAgIHJldHVybiBtX3RhcmdldC5nZXQoKTsKK30KKworfQorCisjZW5kaWYg
Ly8gV2luZG93RXZlbnRDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcAppbmRleCBjZmI1NWZjNmUwZDc0NzE3NzQ1MGE5MTk1OTI4MjAwNzg1NWRjMzhkLi4wMTY4
OTc1M2NhMGEwMWM5ODRmNjdhZTA3MDgyNmUzNmNhZjM4Mzc5IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJEb2N1bWVudFR5cGUuaCIKICNpbmNsdWRlICJFdmVudC5oIgorI2lu
Y2x1ZGUgIkV2ZW50Q29udGV4dC5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKQEAgLTYwNywxMyAr
NjA4LDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9k
ZShsb25nIG5vZGVJZCwgbG9uZyogb3V0Tm9kZUlkLCBSCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIFRoZSBOb2RlJ3MgRXZlbnQgQW5jZXN0b3JzIChub3QgaW5jbHVkaW5nIHNlbGYpCi0gICAg
VmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+IGFuY2VzdG9yczsKLSAgICBub2RlLT5ldmVu
dEFuY2VzdG9ycyhhbmNlc3RvcnMpOworICAgIFZlY3RvcjxFdmVudENvbnRleHQ+IGFuY2VzdG9y
czsKKyAgICBub2RlLT5nZXRFdmVudEFuY2VzdG9ycyhhbmNlc3RvcnMsIG5vZGUpOwogCiAgICAg
Ly8gTm9kZXMgYW5kIHRoZWlyIExpc3RlbmVycyBmb3IgdGhlIGNvbmNlcm5lZCBldmVudCB0eXBl
cyAob3JkZXIgaXMgdG9wIHRvIGJvdHRvbSkKICAgICBWZWN0b3I8RXZlbnRMaXN0ZW5lckluZm8+
IGV2ZW50SW5mb3JtYXRpb247CiAgICAgZm9yIChzaXplX3QgaSA9IGFuY2VzdG9ycy5zaXplKCk7
IGk7IC0taSkgewotICAgICAgICBDb250YWluZXJOb2RlKiBhbmNlc3RvciA9IGFuY2VzdG9yc1tp
IC0gMV0uZ2V0KCk7CisgICAgICAgIE5vZGUqIGFuY2VzdG9yID0gYW5jZXN0b3JzW2kgLSAxXS5u
b2RlKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgZXZlbnRUeXBlc0xlbmd0aDsg
KytqKSB7CiAgICAgICAgICAgICBBdG9taWNTdHJpbmcmIHR5cGUgPSBldmVudFR5cGVzW2pdOwog
ICAgICAgICAgICAgaWYgKGFuY2VzdG9yLT5oYXNFdmVudExpc3RlbmVycyh0eXBlKSkKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDk0MjAy
YzExNjVlZjExYzM4ZTg4ZjYwZDdiZWRhMTNmYzNkNGJkOWMuLmNmNDE1Mjc5ODU5OWZhNzM4OGU1
YmExYzUxYzRkYmYyYWM2ZTEwMTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAiRE9NV2lu
ZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudENvbnRleHQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdl
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCkBAIC01Myw3ICs1NCw3
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB0aW1lckZpcmVkRXZlbnROYW1lID0gInRpbWVy
RmlyZWQiOwogCiBpbnQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzX2Zyb250ZW5kQ291bnRl
ciA9IDA7CiAKLXN0YXRpYyBib29sIGV2ZW50SGFzTGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9y
PFJlZlB0cjxDb250YWluZXJOb2RlPiA+JiBhbmNlc3RvcnMpCitzdGF0aWMgYm9vbCBldmVudEhh
c0xpc3RlbmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB3aW5k
b3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxFdmVudENvbnRleHQ+JiBhbmNlc3RvcnMpCiB7
CiAgICAgaWYgKHdpbmRvdyAmJiB3aW5kb3ctPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50VHlwZSkp
CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNjIsNyArNjMsNyBAQCBzdGF0aWMgYm9vbCBldmVu
dEhhc0xpc3RlbmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB3
aW5kb3csCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBhbmNlc3RvcnMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgQ29udGFpbmVyTm9kZSogYW5jZXN0
b3IgPSBhbmNlc3RvcnNbaV0uZ2V0KCk7CisgICAgICAgIE5vZGUqIGFuY2VzdG9yID0gYW5jZXN0
b3JzW2ldLm5vZGUoKTsKICAgICAgICAgaWYgKGFuY2VzdG9yLT5oYXNFdmVudExpc3RlbmVycyhl
dmVudFR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTM5LDcgKzE0
MCw2IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRhTW9kaWZp
ZWRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluCiAgICAgICAgIGRvbUFnZW50LT5jaGFyYWN0
ZXJEYXRhTW9kaWZpZWQoY2hhcmFjdGVyRGF0YSk7CiB9CiAKLQogdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKEluc3BlY3RvckNvbnRyb2xs
ZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIGNvbnN0IFN0cmluZyYgdXJsKQogewogI2lmIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKQpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VYSFJSZWFkeVN0YXRlSW1wbChjb25zdCBJbnNwZWN0
b3JJbnN0cnVtCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZENoYW5nZVhIUlJlYWR5U3RhdGUo
KTsKIH0KIAotSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3csIE5v
ZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGFpbmVyTm9kZT4gPiYgYW5jZXN0b3Jz
KQorSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNv
bnRyb2xsZXIsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3csIE5vZGUqIG5v
ZGUsIGNvbnN0IFZlY3RvcjxFdmVudENvbnRleHQ+JiBhbmNlc3RvcnMpCiB7CiAgICAgcGF1c2VP
bk5hdGl2ZUV2ZW50SWZOZWVkZWQoaW5zcGVjdG9yQ29udHJvbGxlciwgbGlzdGVuZXJFdmVudENh
dGVnb3J5VHlwZSwgZXZlbnQudHlwZSgpLCBmYWxzZSk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggMWI2MmVjYjc2Yzc4Mjk3NDhmNDIxNjdm
YjgyM2IzY2Q4ZDY1YzJiNC4uN2YyNDFjNDExODRhNDFmYjY3ZTAwMjI5ZjkwYzEwZDdjZmJhNTYz
ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAg
LTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDaGFyYWN0ZXJEYXRh
OwogY2xhc3MgRWxlbWVudDsKK2NsYXNzIEV2ZW50Q29udGV4dDsKIGNsYXNzIEluc3BlY3RvckNv
bnRyb2xsZXI7CiBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50OwogY2xhc3MgS1VSTDsKQEAg
LTczLDcgKzc0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZENhbGxGdW5jdGlvbihj
b25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBYTUxIdHRwUmVxdWVzdCogcmVxdWVzdCk7CiAgICAgc3RhdGljIHZv
aWQgZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUmKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxE
aXNwYXRjaEV2ZW50KERvY3VtZW50KiwgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdp
bmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+JiBh
bmNlc3RvcnMpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2ls
bERpc3BhdGNoRXZlbnQoRG9jdW1lbnQqLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyog
d2luZG93LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8RXZlbnRDb250ZXh0PiYgYW5jZXN0b3Jz
KTsKICAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50KGNvbnN0IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgd2lsbERpc3BhdGNoRXZlbnRPbldpbmRvdyhGcmFtZSosIGNvbnN0IEV2ZW50JiBldmVu
dCwgRE9NV2luZG93KiB3aW5kb3cpOwogICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnRP
bldpbmRvdyhjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKQEAgLTEzMCw3
ICsxMzEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZENhbGxGdW5jdGlvbkltcGwo
Y29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsQ2hhbmdlWEhSUmVhZHlTdGF0ZUltcGwoSW5z
cGVjdG9yQ29udHJvbGxlciosIFhNTEh0dHBSZXF1ZXN0KiByZXF1ZXN0KTsKICAgICBzdGF0aWMg
dm9pZCBkaWRDaGFuZ2VYSFJSZWFkeVN0YXRlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUmKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IHdpbGxEaXNwYXRjaEV2ZW50SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgY29uc3QgRXZlbnQm
IGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPFJlZlB0
cjxDb250YWluZXJOb2RlPiA+JiBhbmNlc3RvcnMpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3BlY3RvckNvbnRyb2xs
ZXIqLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2RlLCBj
b25zdCBWZWN0b3I8RXZlbnRDb250ZXh0PiYgYW5jZXN0b3JzKTsKICAgICBzdGF0aWMgdm9pZCBk
aWREaXNwYXRjaEV2ZW50SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUm
KTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxEaXNwYXRj
aEV2ZW50T25XaW5kb3dJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBjb25zdCBFdmVudCYgZXZl
bnQsIERPTVdpbmRvdyogd2luZG93KTsKICAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50
T25XaW5kb3dJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwpAQCAt
MjI1LDcgKzIyNiw2IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hh
cmFjdGVyRGF0YU1vZGlmaWVkKERvY3VtZW50KiBkb2N1bWVudCwKICNlbmRpZgogfQogCi0KIGlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRYTUxIdHRwUmVxdWVz
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCkKIHsK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtMjkzLDcgKzI5Myw3IEBAIGlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZShjb25zdCBJbnNw
ZWN0b3JJbnN0CiAjZW5kaWYKIH0KIAotaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50KERvY3VtZW50
KiBkb2N1bWVudCwgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSog
bm9kZSwgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+JiBhbmNlc3RvcnMpCitp
bmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbERpc3BhdGNoRXZlbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBFdmVudCYg
ZXZlbnQsIERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8RXZlbnRD
b250ZXh0PiYgYW5jZXN0b3JzKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKElu
c3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9s
bGVyRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAyOTcwMjU5
MWVlYmZkMzE5Y2E0ZjllYTIwODhhNTNmMTcwNTgyMGM4Li43MWNhOWM4MWQzNWNkNmVjNjAxNDgw
MDAzMTM2NzllMTkwZDZiOWVmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTc2Niw4ICsxNzY2
LDYgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZU1vdXNlRXZlbnRUYXJnZXROb2RlKE5vZGUq
IHRhcmdldE5vZGUsIGNvbnN0IFBsYXRmb3JtTW8KICAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBu
b2RlIGlzIGEgdGV4dCBub2RlLCBkaXNwYXRjaCBvbiB0aGUgcGFyZW50IG5vZGUgLSByZGFyOi8v
NDE5NjY0NgogICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC0+aXNUZXh0Tm9kZSgpKQogICAg
ICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT5wYXJlbnROb2RlKCk7Ci0gICAgICAgIGlmIChyZXN1
bHQpCi0gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQtPnNoYWRvd0FuY2VzdG9yTm9kZSgpOwog
ICAgIH0KICAgICBtX25vZGVVbmRlck1vdXNlID0gcmVzdWx0OwogI2lmIEVOQUJMRShTVkcpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5j
cHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKaW5k
ZXggNjQyOTNmZWUwYzRjNTE3YzczYTJjMWE1OTZkMzVjYTU0ZTU4YTVhMS4uZTI2ZDQ3OGYwYmIx
OTIxYTQ0YTM0MjU0NTljOWY2MDYwYmRmODBiOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcApAQCAtNTIsOCArNTIsNiBAQCB2b2lkIFJl
bmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpzdWJ0cmVlSGFzQ2hhbmdlZCgpCiAgICAgaWYgKCFu
b2RlKCktPmZvY3VzZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbm9kZSgpLT5kaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmlucHV0RXZlbnQsIHRydWUsIGZhbHNl
KSk7Ci0KICAgICBpZiAoRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkKICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT50ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYSh0ZXh0QXJlYSk7CiB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9TaGFkb3dFbGVtZW50LmggYi9XZWJDb3JlL3JlbmRl
cmluZy9TaGFkb3dFbGVtZW50LmgKaW5kZXggMDRkYjYyYmU3ZjJiYjEwZWIwMjRjZTMwMjNmZWQ3
MGYyYzMyZGE5Mi4uZjU2NjhlZjIzOTNiYzNhMDMwZDIwYTZlYWY5ZmE4MWNlMThiYzk1NSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvU2hhZG93RWxlbWVudC5oCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1NoYWRvd0VsZW1lbnQuaApAQCAtNDMsMTMgKzQzLDEzIEBAIHByb3RlY3RlZDoK
ICAgICB7CiAgICAgfQogCi0gICAgSFRNTEVsZW1lbnQqIHNoYWRvd1BhcmVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hhZG93UGFyZW50OyB9CisgICAgSFRNTEVsZW1lbnQqIHNoYWRvd1BhcmVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93UGFyZW50LmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIGlzU2hhZG93Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2
aXJ0dWFsIENvbnRhaW5lck5vZGUqIHNoYWRvd1BhcmVudE5vZGUoKSB7IHJldHVybiBtX3NoYWRv
d1BhcmVudDsgfQorICAgIHZpcnR1YWwgQ29udGFpbmVyTm9kZSogc2hhZG93UGFyZW50Tm9kZSgp
IHsgcmV0dXJuIG1fc2hhZG93UGFyZW50LmdldCgpOyB9CiAKLSAgICBIVE1MRWxlbWVudCogbV9z
aGFkb3dQYXJlbnQ7CisgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX3NoYWRvd1BhcmVudDsKIH07
CiAKIGNsYXNzIFNoYWRvd0Jsb2NrRWxlbWVudCA6IHB1YmxpYyBTaGFkb3dFbGVtZW50PEhUTUxE
aXZFbGVtZW50PiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1l
bnRzLmNwcAppbmRleCA2NDk1ZDA0NTI0MTNhNzhlODFiYmNhYjU2ZDRkM2EzNTg2ZDVjZTU2Li43
MzU2MGZkNGFmMjI2YWViOTQ4ZWNlOWNmYmYwNWI3MmIyMjUxZDUzIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTE1NCw3ICsxNTQsNyBA
QCB2b2lkIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCogZXZlbnQpCiAgICAgICAgIGlmIChzaGFkb3dBbmNlc3RvciAmJiBzaGFkb3dBbmNlc3Rv
ciAhPSB0aGlzKQogICAgICAgICAgICAgc2hhZG93QW5jZXN0b3ItPmRlZmF1bHRFdmVudEhhbmRs
ZXIoZXZlbnQpOwogICAgIH0KLSAgICBpZiAoZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCisgICAg
aWYgKCFldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKICAgICAgICAgSFRNTERpdkVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDZjMmM0YTI3
ODNlYTllMzhhYWZmOTdkYjlkYjU1NjBmYmNmNGIwNGEuLjNlOWJkYTA3ZGVjYjNjNGI5MjE2MWM2
MGFkNDM2ZDc3MjQxMGI2ZDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3Bw
CisrKyBiL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC0zNDcsMTMgKzM0Nyw2IEBAIHZv
aWQgU1ZHRWxlbWVudDo6dXBkYXRlQW5pbWF0ZWRTVkdBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSkgY29uc3QKICAgICBjbGVhcklzU3luY2hyb25pemluZ1NWR0F0dHJpYnV0ZXMo
KTsKIH0KIAotQ29udGFpbmVyTm9kZSogU1ZHRWxlbWVudDo6ZXZlbnRQYXJlbnROb2RlKCkKLXsK
LSAgICBpZiAoQ29udGFpbmVyTm9kZSogc2hhZG93UGFyZW50ID0gc2hhZG93UGFyZW50Tm9kZSgp
KQotICAgICAgICByZXR1cm4gc2hhZG93UGFyZW50OwotICAgIHJldHVybiBTdHlsZWRFbGVtZW50
OjpldmVudFBhcmVudE5vZGUoKTsKLX0KLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuaAppbmRleCA1MTc1MTVmOTM5ODUzMDQ5ZGExNjcwNzRkM2VlM2U0OThiYzMwYTY4Li45NmU3
ZmQ3YWQ0ZDA5ZWQ4NmIzOTNhNTE4ZDk5NzYzNDk4MjdmZDk5IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC05OSw4
ICs5OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNT
dXBwb3J0ZWQoU3RyaW5nSW1wbCogZmVhdHVyZSwgU3RyaW5nSW1wbCogdmVyc2lvbikgY29uc3Q7
CiAKLSAgICAgICAgdmlydHVhbCBDb250YWluZXJOb2RlKiBldmVudFBhcmVudE5vZGUoKTsKLQog
ICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQZW5kaW5nUmVzb3VyY2VIYW5kbGluZygpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGJ1aWxkUGVuZGluZ1Jlc291
cmNlKCkgeyB9CiAK
</data>
<flag name="review"
          id="63522"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>