<?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>53728</bug_id>
          
          <creation_ts>2011-02-03 15:59:33 -0800</creation_ts>
          <short_desc>indexeddb: make setVersion fire blocked event if other connections are open</short_desc>
          <delta_ts>2011-02-16 16:55:53 -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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="David Grogan">dgrogan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jorlow</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>345086</commentid>
    <comment_count>0</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-03 15:59:33 -0800</bug_when>
    <thetext>indexeddb: make setVersion fire blocked event if other connections are open</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345094</commentid>
    <comment_count>1</comment_count>
      <attachid>81132</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-03 16:06:24 -0800</bug_when>
    <thetext>Created attachment 81132
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345099</commentid>
    <comment_count>2</comment_count>
      <attachid>81132</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-03 16:10:58 -0800</bug_when>
    <thetext>Comment on attachment 81132
Patch

This first patch doesn&apos;t change any behavior, it&apos;s just some architectural support.  Sending it now to get early feedback from Jeremy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345119</commentid>
    <comment_count>3</comment_count>
      <attachid>81132</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-03 16:28:08 -0800</bug_when>
    <thetext>Comment on attachment 81132
Patch

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

not too far off

this will require a couple stages to land, but let&apos;s get it all good first and then we can worry aobut that

&gt; Source/WebCore/WebCore.gypi:4006
&gt; +            &apos;storage/IDBBlockedEvent.cpp&apos;,

i think you&apos;ll need an idl, right?

&gt; Source/WebCore/storage/IDBBlockedEvent.cpp:2
&gt; + * Copyright (C) 2010 Google Inc. All rights reserved.

Use this here and elsewhere: http://webkit.org/coding/bsd-license.html

2011

&gt; Source/WebCore/storage/IDBBlockedEvent.cpp:45
&gt; +    : IDBEvent(eventNames().abortEvent, 0) // FIXME: set the source?

implement the fixme....this should take in a PassRefPtr&lt;IDBAny&gt; source attribute and pass it through to IDBEvent

&gt; Source/WebCore/storage/IDBDatabase.cpp:97
&gt; +    RefPtr&lt;IDBVersionChangeRequest&gt; request = IDBVersionChangeRequest::create(context, IDBAny::create(this), 0);

get rid of the 0 since we&apos;ll never have a transaction to pass in

&gt; Source/WebCore/storage/IDBDatabase.cpp:135
&gt; +      return;

4 spaces

&gt; Source/WebCore/storage/IDBDatabase.cpp:137
&gt; +    m_backend-&gt;decrementConnectionCount();

why not just leave this &quot;close()&quot;?  also shouldn&apos;t you pass &quot;this&quot; in?

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:98
&gt; +    , m_openConnectionCount(0)

I thouhght you were going to maintain a set since you&apos;ll need that in the next patch?

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:215
&gt; +    // Call onblocked here if connection count is &gt;0

Use complete sentences.

&gt; Source/WebCore/storage/IDBFactoryBackendImpl.cpp:216
&gt; +        (it-&gt;second)-&gt;incrementConnectionCount();

()&apos;s unneeded

&gt; Source/WebCore/storage/IDBRequest.h:72
&gt; +    virtual void onBlocked() { ASSERT_NOT_REACHED(); }

maybe move the body into the .cpp since a lot of files compile this

&gt; Source/WebCore/storage/IDBVersionChangeRequest.cpp:34
&gt; +#include &quot;Event.h&quot;

Please cut down this list.

&gt; Source/WebCore/storage/IDBVersionChangeRequest.idl:33
&gt; +        EventTarget

inherit from IDBRequest...i think it should mostly do the right thing...?

&gt; Source/WebCore/storage/IDBVersionChangeRequest.idl:37
&gt; +        const unsigned short LOADING = 1;

get rid of this stuff?

&gt; Source/WebCore/storage/IDBVersionChangeRequest.idl:42
&gt; +        attribute EventListener onsuccess;

remove onsuccess and on error

&gt; Source/WebCore/storage/IDBVersionChangeRequest.idl:46
&gt; +        // EventTarget interface

get rid of this stuff?

&gt; Source/WebKit/chromium/src/IDBCallbacksProxy.cpp:111
&gt; +{

call the IDBRequest version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347008</commentid>
    <comment_count>4</comment_count>
      <attachid>81565</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-07 19:00:58 -0800</bug_when>
    <thetext>Created attachment 81565
obsoleted Patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347016</commentid>
    <comment_count>5</comment_count>
      <attachid>81565</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-07 19:07:13 -0800</bug_when>
    <thetext>Comment on attachment 81565
obsoleted Patch 1

This isn&apos;t ready to be committed, but close.

I don&apos;t think the call to close() in IDBDatabase::~IDBDatabase() is right.  If you load the layout test in chromium everything is fine until you hit refresh.  The destructor on the IDBDatabase object from the first page load isn&apos;t called until after the new page loads, causing setVersion to call blocked when it&apos;s supposed to succeed.

I&apos;m not sure what to do about this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347021</commentid>
    <comment_count>6</comment_count>
      <attachid>81565</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-07 19:32:39 -0800</bug_when>
    <thetext>Comment on attachment 81565
obsoleted Patch 1

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

closer

&gt; LayoutTests/storage/indexeddb/set_version_blocked.html:1
&gt; +&lt;html&gt;

You need to create expected results.

&gt; LayoutTests/storage/indexeddb/set_version_blocked.html:20
&gt; +    if (&apos;webkitIndexedDB&apos; in window) {

no {} for one liner

&gt; LayoutTests/storage/indexeddb/set_version_blocked.html:58
&gt; +function setVersion(tries) {

newline

&gt; LayoutTests/storage/indexeddb/set_version_blocked.html:65
&gt; +function unexpectedBlockCallback() {

put in the shared.js file...and call it &quot;Blocked&quot; not &quot;Block&quot;

&gt; Source/WebCore/dom/EventTarget.h:143
&gt; +        virtual IDBVersionChangeRequest* toIDBVersionChangeRequest();

alpha order

&gt; Source/WebCore/storage/IDBDatabase.cpp:135
&gt; +    if (m_noNewTransactions)

Stuff like this should be tested in the layout test.

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.h:65
&gt; +    virtual void open();

You&apos;ll need to add this to the WebKit:: stuff.

&gt; Source/WebCore/storage/IDBRequest.cpp:190
&gt; +void IDBRequest::scheduleBlockedEvent()

You need to sync your repo.  This has all changed a bunch.

&gt; Source/WebCore/storage/IDBVersionChangeRequest.h:32
&gt; +#include &quot;Timer.h&quot;

Why is this needed?

&gt; Source/WebCore/storage/IDBVersionChangeRequest.h:33
&gt; +#include &lt;wtf/Vector.h&gt;

why is this needed?

&gt; Source/WebCore/storage/IDBVersionChangeRequest.h:37
&gt; +class IDBTransactionBackendInterface;

why is this needed?

&gt; Source/WebCore/storage/IDBVersionChangeRequest.h:41
&gt; +    static PassRefPtr&lt;IDBVersionChangeRequest&gt; create(ScriptExecutionContext* context, PassRefPtr&lt;IDBAny&gt; source) { return adoptRef(new IDBVersionChangeRequest(context, source)); }

lately i&apos;ve been shying away from inlining these.  Maybe move it?

&gt; Source/WebCore/storage/IDBVersionChangeRequest.h:43
&gt; +    virtual void onBlocked();

usually we do a newline between the constructor/destructor stuff and other stuff

&gt; Source/WebCore/storage/IDBVersionChangeRequest.h:49
&gt; +

no blank line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348515</commentid>
    <comment_count>7</comment_count>
      <attachid>81862</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-09 13:26:03 -0800</bug_when>
    <thetext>Created attachment 81862
obsoleted patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348519</commentid>
    <comment_count>8</comment_count>
      <attachid>81565</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-09 13:30:27 -0800</bug_when>
    <thetext>Comment on attachment 81565
obsoleted Patch 1

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

&gt;&gt; LayoutTests/storage/indexeddb/set_version_blocked.html:1
&gt;&gt; +&lt;html&gt;
&gt; 
&gt; You need to create expected results.

done

&gt;&gt; LayoutTests/storage/indexeddb/set_version_blocked.html:20
&gt;&gt; +    if (&apos;webkitIndexedDB&apos; in window) {
&gt; 
&gt; no {} for one liner

done

&gt;&gt; LayoutTests/storage/indexeddb/set_version_blocked.html:58
&gt;&gt; +function setVersion(tries) {
&gt; 
&gt; newline

done

&gt;&gt; LayoutTests/storage/indexeddb/set_version_blocked.html:65
&gt;&gt; +function unexpectedBlockCallback() {
&gt; 
&gt; put in the shared.js file...and call it &quot;Blocked&quot; not &quot;Block&quot;

done

&gt;&gt; Source/WebCore/dom/EventTarget.h:143
&gt;&gt; +        virtual IDBVersionChangeRequest* toIDBVersionChangeRequest();
&gt; 
&gt; alpha order

done

&gt;&gt; Source/WebCore/storage/IDBDatabase.cpp:135
&gt;&gt; +    if (m_noNewTransactions)
&gt; 
&gt; Stuff like this should be tested in the layout test.

done

&gt;&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.h:65
&gt;&gt; +    virtual void open();
&gt; 
&gt; You&apos;ll need to add this to the WebKit:: stuff.

This round?  It seems that nothing would use it when only doing ref counting.

&gt;&gt; Source/WebCore/storage/IDBRequest.cpp:190
&gt;&gt; +void IDBRequest::scheduleBlockedEvent()
&gt; 
&gt; You need to sync your repo.  This has all changed a bunch.

done

&gt;&gt; Source/WebCore/storage/IDBVersionChangeRequest.h:32
&gt;&gt; +#include &quot;Timer.h&quot;
&gt; 
&gt; Why is this needed?

it&apos;s not, deleted

&gt;&gt; Source/WebCore/storage/IDBVersionChangeRequest.h:33
&gt;&gt; +#include &lt;wtf/Vector.h&gt;
&gt; 
&gt; why is this needed?

it&apos;s not, deleted

&gt;&gt; Source/WebCore/storage/IDBVersionChangeRequest.h:37
&gt;&gt; +class IDBTransactionBackendInterface;
&gt; 
&gt; why is this needed?

it&apos;s not, deleted

&gt;&gt; Source/WebCore/storage/IDBVersionChangeRequest.h:41
&gt;&gt; +    static PassRefPtr&lt;IDBVersionChangeRequest&gt; create(ScriptExecutionContext* context, PassRefPtr&lt;IDBAny&gt; source) { return adoptRef(new IDBVersionChangeRequest(context, source)); }
&gt; 
&gt; lately i&apos;ve been shying away from inlining these.  Maybe move it?

I&apos;m a fan of &quot;no implementation in the .h files&quot;; moved.

&gt;&gt; Source/WebCore/storage/IDBVersionChangeRequest.h:43
&gt;&gt; +    virtual void onBlocked();
&gt; 
&gt; usually we do a newline between the constructor/destructor stuff and other stuff

done

&gt;&gt; Source/WebCore/storage/IDBVersionChangeRequest.h:49
&gt;&gt; +
&gt; 
&gt; no blank line

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348535</commentid>
    <comment_count>9</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-09 13:53:19 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 81565 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=81565&amp;action=review
&gt; &gt;&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.h:65
&gt; &gt;&gt; +    virtual void open();
&gt; &gt; 
&gt; &gt; You&apos;ll need to add this to the WebKit:: stuff.
&gt; 
&gt; This round?  It seems that nothing would use it when only doing ref counting.

Oops, you&apos;re right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348561</commentid>
    <comment_count>10</comment_count>
      <attachid>81862</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-09 14:13:30 -0800</bug_when>
    <thetext>Comment on attachment 81862
obsoleted patch 2

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

close

&gt; LayoutTests/storage/indexeddb/set_version_blocked.html:31
&gt; +    verifyResult(result);

In new tests, I&apos;m voiding these because at this point they pretty much just add noise

&gt; LayoutTests/storage/indexeddb/set_version_blocked.html:39
&gt; +    verifySuccessEvent(event);

Ditto....fix throughout

&gt; LayoutTests/storage/indexeddb/set_version_blocked.html:42
&gt; +    if (connections.length &lt; 3) {

no {}

&gt; LayoutTests/storage/indexeddb/set_version_blocked.html:44
&gt; +    } else {

no {}

&gt; LayoutTests/storage/indexeddb/set_version_blocked.html:63
&gt; +// Try 1: Close a connection.

Stuff like this should be in shouldBe/testPassed/debug()&apos;s.  The idea is that you should be able to follow along via the on-screen output.

&gt; Source/WebCore/storage/IDBBlockedEvent.cpp:42
&gt; +    : IDBEvent(eventNames().blockedEvent, source, false/*canBubble*/)

space before /*?

&gt; Source/WebCore/storage/IDBBlockedEvent.h:45
&gt; +    virtual String version();

newline

&gt; Source/WebCore/storage/IDBBlockedEvent.h:48
&gt; +    IDBBlockedEvent(PassRefPtr&lt;IDBAny&gt; source, const String&amp; version);

newline

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:217
&gt; +        return;

You need to add this to a queue and start the queue once there&apos;s only one connection left.  And put a FIXME to only fire the event if the DB is still open.

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:260
&gt;  void IDBDatabaseBackendImpl::close()

On close, you need to re-try the set-version transaction.

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.h:65
&gt; +    virtual void open();

shouldn&apos;t be virtual.  Group up above with the other non-virtual/not-in-idl stuff (like id)

&gt; Source/WebCore/storage/IDBRequest.h:85
&gt; +    virtual void enqueueEvent(PassRefPtr&lt;Event&gt;);

don&apos;t make stuff virtual unless necessary

&gt; Source/WebCore/storage/IDBRequest.h:86
&gt; +    virtual IDBAny* source();

I don&apos;t see any reason not to just make this public.  But don&apos;t make virtual.

&gt; Source/WebCore/storage/IDBVersionChangeRequest.cpp:40
&gt; +IDBVersionChangeRequest::IDBVersionChangeRequest(ScriptExecutionContext* context, PassRefPtr&lt;IDBAny&gt; source, const String&amp; version)

newline

&gt; Source/WebCore/storage/IDBVersionChangeRequest.h:46
&gt; +    String m_version;

maybe a newline between these?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350083</commentid>
    <comment_count>11</comment_count>
      <attachid>81862</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-11 15:13:49 -0800</bug_when>
    <thetext>Comment on attachment 81862
obsoleted patch 2

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

&gt;&gt; LayoutTests/storage/indexeddb/set_version_blocked.html:31
&gt;&gt; +    verifyResult(result);
&gt; 
&gt; In new tests, I&apos;m voiding these because at this point they pretty much just add noise

done

&gt;&gt; LayoutTests/storage/indexeddb/set_version_blocked.html:39
&gt;&gt; +    verifySuccessEvent(event);
&gt; 
&gt; Ditto....fix throughout

done

&gt;&gt; LayoutTests/storage/indexeddb/set_version_blocked.html:42
&gt;&gt; +    if (connections.length &lt; 3) {
&gt; 
&gt; no {}

done

&gt;&gt; LayoutTests/storage/indexeddb/set_version_blocked.html:44

&gt; 
&gt; no {}

done

&gt;&gt; LayoutTests/storage/indexeddb/set_version_blocked.html:63

&gt; 
&gt; Stuff like this should be in shouldBe/testPassed/debug()&apos;s.  The idea is that you should be able to follow along via the on-screen output.

gotcha

&gt;&gt; Source/WebCore/storage/IDBBlockedEvent.cpp:42
&gt;&gt; +    : IDBEvent(eventNames().blockedEvent, source, false/*canBubble*/)
&gt; 
&gt; space before /*?

done

&gt;&gt; Source/WebCore/storage/IDBBlockedEvent.h:45
&gt;&gt; +    virtual String version();
&gt; 
&gt; newline

done

&gt;&gt; Source/WebCore/storage/IDBBlockedEvent.h:48
&gt;&gt; +    IDBBlockedEvent(PassRefPtr&lt;IDBAny&gt; source, const String&amp; version);
&gt; 
&gt; newline

done

&gt;&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:217
&gt;&gt; +        return;
&gt; 
&gt; You need to add this to a queue and start the queue once there&apos;s only one connection left.  And put a FIXME to only fire the event if the DB is still open.

done

&gt;&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:260
&gt;&gt;  void IDBDatabaseBackendImpl::close()
&gt; 
&gt; On close, you need to re-try the set-version transaction.

done

&gt;&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.h:65
&gt;&gt; +    virtual void open();
&gt; 
&gt; shouldn&apos;t be virtual.  Group up above with the other non-virtual/not-in-idl stuff (like id)

done

&gt;&gt; Source/WebCore/storage/IDBRequest.h:85
&gt;&gt; +    virtual void enqueueEvent(PassRefPtr&lt;Event&gt;);
&gt; 
&gt; don&apos;t make stuff virtual unless necessary

done

&gt;&gt; Source/WebCore/storage/IDBRequest.h:86
&gt;&gt; +    virtual IDBAny* source();
&gt; 
&gt; I don&apos;t see any reason not to just make this public.  But don&apos;t make virtual.

done

&gt;&gt; Source/WebCore/storage/IDBVersionChangeRequest.cpp:40
&gt;&gt; +IDBVersionChangeRequest::IDBVersionChangeRequest(ScriptExecutionContext* context, PassRefPtr&lt;IDBAny&gt; source, const String&amp; version)
&gt; 
&gt; newline

done

&gt;&gt; Source/WebCore/storage/IDBVersionChangeRequest.h:46
&gt;&gt; +    String m_version;
&gt; 
&gt; maybe a newline between these?

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350102</commentid>
    <comment_count>12</comment_count>
      <attachid>82197</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-11 15:36:22 -0800</bug_when>
    <thetext>Created attachment 82197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350128</commentid>
    <comment_count>13</comment_count>
      <attachid>82197</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-11 15:57:29 -0800</bug_when>
    <thetext>Comment on attachment 82197
Patch

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

almost there

&gt; LayoutTests/storage/indexeddb/set_version_queue.html:84
&gt; +    debug(&quot;inSetVersion2&quot;);

testPassed

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:217
&gt; +        prpCallbacks-&gt;onBlocked();

Usually the first thing we do in a function is assign the prp types to normal RefPtr types.  I know we don&apos;t do that some in these files, but we should probably try to get back to it.  So move that stuff up and then s/prpC/c/ here.

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:218
&gt; +        RefPtr&lt;PendingSetVersionCall&gt; pendingSetVersionCall = adoptRef(new PendingSetVersionCall);

the class should have a factory and new should be private.

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:219
&gt; +        pendingSetVersionCall-&gt;m_callbacks = prpCallbacks;

use callbacks

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:269
&gt; +    if (m_openConnectionCount == 1) {

Just do a return if &gt; 1 so the rest isn&apos;t nested.  newline after the return too, i&apos;d think

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:271
&gt; +            // FIXME: Do something better with ec?

ASSERT(!ec || whatever else it might be that&apos;s OK)...and remove the fixme

&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.h:102
&gt; +    struct PendingSetVersionCall : RefCounted&lt;PendingSetVersionCall&gt; {

I&apos;m not sure we really use structs much in WebKit.  Just forward declare the class here and define it in the .cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350159</commentid>
    <comment_count>14</comment_count>
      <attachid>82197</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-11 16:50:08 -0800</bug_when>
    <thetext>Comment on attachment 82197
Patch

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

&gt;&gt; LayoutTests/storage/indexeddb/set_version_queue.html:84
&gt;&gt; +    debug(&quot;inSetVersion2&quot;);
&gt; 
&gt; testPassed

done

&gt;&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:217
&gt;&gt; +        prpCallbacks-&gt;onBlocked();
&gt; 
&gt; Usually the first thing we do in a function is assign the prp types to normal RefPtr types.  I know we don&apos;t do that some in these files, but we should probably try to get back to it.  So move that stuff up and then s/prpC/c/ here.

done

&gt;&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:218
&gt;&gt; +        RefPtr&lt;PendingSetVersionCall&gt; pendingSetVersionCall = adoptRef(new PendingSetVersionCall);
&gt; 
&gt; the class should have a factory and new should be private.

done

&gt;&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:219
&gt;&gt; +        pendingSetVersionCall-&gt;m_callbacks = prpCallbacks;
&gt; 
&gt; use callbacks

done

&gt;&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:269
&gt;&gt; +    if (m_openConnectionCount == 1) {
&gt; 
&gt; Just do a return if &gt; 1 so the rest isn&apos;t nested.  newline after the return too, i&apos;d think

done

&gt;&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.cpp:271
&gt;&gt; +            // FIXME: Do something better with ec?
&gt; 
&gt; ASSERT(!ec || whatever else it might be that&apos;s OK)...and remove the fixme

done.  I don&apos;t know what might be ok so went conservative with ASSERT(!ec)

&gt;&gt; Source/WebCore/storage/IDBDatabaseBackendImpl.h:102
&gt;&gt; +    struct PendingSetVersionCall : RefCounted&lt;PendingSetVersionCall&gt; {
&gt; 
&gt; I&apos;m not sure we really use structs much in WebKit.  Just forward declare the class here and define it in the .cpp

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350161</commentid>
    <comment_count>15</comment_count>
      <attachid>82209</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-11 16:52:55 -0800</bug_when>
    <thetext>Created attachment 82209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350862</commentid>
    <comment_count>16</comment_count>
      <attachid>82358</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-14 13:52:55 -0800</bug_when>
    <thetext>Created attachment 82358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350867</commentid>
    <comment_count>17</comment_count>
      <attachid>82358</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-14 13:55:08 -0800</bug_when>
    <thetext>Comment on attachment 82358
Patch

Removes small change to webkit whose bug was https://bugs.webkit.org/show_bug.cgi?id=54329</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350868</commentid>
    <comment_count>18</comment_count>
      <attachid>82358</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-14 13:58:57 -0800</bug_when>
    <thetext>Comment on attachment 82358
Patch

rubber stamp assuming nothing else changed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350869</commentid>
    <comment_count>19</comment_count>
      <attachid>82358</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-14 13:59:33 -0800</bug_when>
    <thetext>Comment on attachment 82358
Patch

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

&gt; Source/WebKit/chromium/ChangeLog:8
&gt; +        * public/WebIDBCallbacks.h:

remove these 2 lines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350957</commentid>
    <comment_count>20</comment_count>
      <attachid>82358</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-14 16:07:36 -0800</bug_when>
    <thetext>Comment on attachment 82358
Patch

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

&gt;&gt; Source/WebKit/chromium/ChangeLog:8
&gt;&gt; +        * public/WebIDBCallbacks.h:
&gt; 
&gt; remove these 2 lines

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350958</commentid>
    <comment_count>21</comment_count>
      <attachid>82378</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-14 16:07:59 -0800</bug_when>
    <thetext>Created attachment 82378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351035</commentid>
    <comment_count>22</comment_count>
      <attachid>82378</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-14 18:17:09 -0800</bug_when>
    <thetext>Comment on attachment 82378
Patch

Rejecting attachment 82378 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-7&apos;, &apos;apply-...&quot; exit_code: 2

Last 500 characters of output:
st.h
patching file Source/WebCore/storage/IDBVersionChangeRequest.idl
patching file Source/WebKit/chromium/ChangeLog
patching file Source/WebKit/chromium/src/IDBCallbacksProxy.cpp
patching file Source/WebKit/chromium/src/IDBCallbacksProxy.h
patching file Source/WebKit/chromium/src/WebIDBCallbacksImpl.cpp
patching file Source/WebKit/chromium/src/WebIDBCallbacksImpl.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Jeremy Orlow&apos;, u&apos;--for...&quot; exit_code: 1

Full output: http://queues.webkit.org/results/7905790</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351036</commentid>
    <comment_count>23</comment_count>
      <attachid>82378</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-14 18:17:29 -0800</bug_when>
    <thetext>Comment on attachment 82378
Patch

Crap.  The patch I just landed will mess this up.  Sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352366</commentid>
    <comment_count>24</comment_count>
      <attachid>82700</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-16 14:39:05 -0800</bug_when>
    <thetext>Created attachment 82700
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352454</commentid>
    <comment_count>25</comment_count>
      <attachid>82700</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-16 16:45:12 -0800</bug_when>
    <thetext>Comment on attachment 82700
Patch

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

&gt; Source/WebCore/dom/EventTarget.cpp:192
&gt; +IDBVersionChangeRequest* EventTarget::toIDBVersionChangeRequest()

alpha order</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81132</attachid>
            <date>2011-02-03 16:06:24 -0800</date>
            <delta_ts>2011-02-07 19:00:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53728-20110203160623.patch</filename>
            <type>text/plain</type>
            <size>32701</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyMGI4NThmOWQxM2Q2ZmI4MTQyYzYzNWIyZmQ0N2JlZDY1NjM1NjdhLi4x
ZWQwZDI1MzZjMTQyNzY3ZWU5MmM0MGM0MzgxZDY0NDc3MjAwNTkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDQgQEAKKzIwMTEtMDItMDMgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGlu
ZGV4ZWRkYjogbWFrZSBzZXRWZXJzaW9uIGZpcmUgYmxvY2tlZCBldmVudCBpZiBvdGhlciBjb25u
ZWN0aW9ucyBhcmUgb3BlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTM3MjgKKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAq
IHN0b3JhZ2UvSURCQmxvY2tlZEV2ZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJEYXRhYmFzZS5pZGwuCisgICAgICAgIChXZWJDb3JlOjpJREJCbG9ja2VkRXZl
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJCbG9ja2VkRXZlbnQ6OklEQkJsb2Nr
ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJCbG9ja2VkRXZlbnQ6On5JREJCbG9ja2Vk
RXZlbnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCQmxvY2tlZEV2ZW50Lmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmguCisgICAgICAg
IChXZWJDb3JlOjpJREJCbG9ja2VkRXZlbnQ6OmlzSURCQmxvY2tlZEV2ZW50KToKKyAgICAgICAg
KiBzdG9yYWdlL0lEQkNhbGxiYWNrcy5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnNldFZlcnNpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmNsb3NlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRh
dGFiYXNlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5pZGw6CisgICAgICAgICog
c3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjppbmNyZW1lbnRDb25uZWN0aW9uQ291bnQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVjcmVtZW50Q29u
bmVjdGlvbkNvdW50KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
aDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbik6CisgICAgICAgICogc3RvcmFnZS9JREJS
ZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpvbkJsb2NrZWQpOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oLgorICAgICAgICAo
V2ViQ29yZTo6SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6OklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Ojp+SURCVmVyc2lv
bkNoYW5nZVJlcXVlc3QpOgorICAgICAgICAqIHN0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVl
c3QuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tz
UHJveHkuaC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpjcmVh
dGUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaWRsOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oLgor
CiAyMDExLTAxLTI3ICBTdGVwaGVuIFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDAy
NDg1Nzg0Mjg1ZjA3OGFlZmFiYjVhMzBiNDMwYzUzYzM4NzkwNDUuLmMzNzdhMjM0OTYzMDE1YzRi
YmYzMzRiMmQxZmZlMTI4ZjQzZGNjM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI4Niw2ICsyODYs
NyBAQAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCUmVxdWVzdC5pZGwnLAogICAgICAgICAgICAg
J3N0b3JhZ2UvSURCU3VjY2Vzc0V2ZW50LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJU
cmFuc2FjdGlvbi5pZGwnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJl
cXVlc3QuaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL1NRTEVycm9yLmlkbCcsCiAgICAgICAg
ICAgICAnc3RvcmFnZS9TUUxFeGNlcHRpb24uaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL1NR
TFJlc3VsdFNldC5pZGwnLApAQCAtNDAwMiw2ICs0MDAzLDggQEAKICAgICAgICAgICAgICdzdG9y
YWdlL0lEQkFib3J0RXZlbnQuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJBbnkuY3BwJywK
ICAgICAgICAgICAgICdzdG9yYWdlL0lEQkFueS5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL0lE
QkJsb2NrZWRFdmVudC5jcHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvSURCQmxvY2tlZEV2ZW50
LmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgnLAogICAgICAgICAgICAg
J3N0b3JhZ2UvSURCQ29tcGxldGVFdmVudC5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURC
Q29tcGxldGVFdmVudC5oJywKQEAgLTQwNjMsNiArNDA2Niw4IEBACiAgICAgICAgICAgICAnc3Rv
cmFnZS9JREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0lE
QlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IuaCcsCisgICAgICAgICAgICAnc3RvcmFnZS9JREJWZXJzaW9u
Q2hhbmdlUmVxdWVzdC5jcHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5n
ZVJlcXVlc3QuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUYXNrLmNwcCcs
CiAgICAgICAgICAgICAnc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUYXNrLmgnLAogICAgICAgICAgICAg
J3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApp
bmRleCA0MzllOWQ4YjU1OGI2ZTViMjJjNzY0MzA3NTUwMDc3MzYzNjMxZGQxLi5hZGY0OGVkZGY3
NmJlNDM1MDJhZmQxZjA2YjQ4MGU5NWIwNGQ5NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgK
QEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKGJlZm9yZXBh
c3RlKSBcCiAgICAgbWFjcm8oYmVmb3JlcHJvY2VzcykgXAogICAgIG1hY3JvKGJlZm9yZXVubG9h
ZCkgXAorICAgIG1hY3JvKGJsb2NrZWQpIFwKICAgICBtYWNybyhibHVyKSBcCiAgICAgbWFjcm8o
Y2FjaGVkKSBcCiAgICAgbWFjcm8oY2hhbmdlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkJsb2NrZWRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkJsb2NrZWRFdmVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2VhNTg2ODE1OGU4ODljODYwMjFkNjdiMzRm
NjYzM2FmMjNhMGM5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCQmxvY2tlZEV2ZW50LmNwcApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIklEQkJsb2NrZWRFdmVudC5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiSURCQW55LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxJREJCbG9ja2VkRXZlbnQ+IElEQkJs
b2NrZWRFdmVudDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkJsb2Nr
ZWRFdmVudCgpKTsKK30KKworSURCQmxvY2tlZEV2ZW50OjpJREJCbG9ja2VkRXZlbnQoKQorICAg
IDogSURCRXZlbnQoZXZlbnROYW1lcygpLmFib3J0RXZlbnQsIDApIC8vIEZJWE1FOiBzZXQgdGhl
IHNvdXJjZT8KK3sKK30KKworSURCQmxvY2tlZEV2ZW50Ojp+SURCQmxvY2tlZEV2ZW50KCkKK3sK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmxvY2tlZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkJsb2NrZWRFdmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlNThmZjA0NjA1MTg5OGQ2MDk0ZWIz
Y2Q3NTQ3YmZmYTYyMzdjZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkJsb2NrZWRFdmVudC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQkJsb2Nr
ZWRFdmVudF9oCisjZGVmaW5lIElEQkJsb2NrZWRFdmVudF9oCisKKyNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQkV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJCbG9ja2VkRXZlbnQgOiBw
dWJsaWMgSURCRXZlbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkJsb2Nr
ZWRFdmVudD4gY3JlYXRlKCk7CisgICAgLy8gRklYTUU6IE5lZWQgdG8gYWxsb3cgY3JlYXRpb24g
b2YgdGhlc2UgZXZlbnRzIGZyb20gSlMuCisgICAgdmlydHVhbCB+SURCQmxvY2tlZEV2ZW50KCk7
CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNJREJCbG9ja2VkRXZlbnQoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CisKK3ByaXZhdGU6CisgICAgSURCQmxvY2tlZEV2ZW50KCk7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwor
I2VuZGlmIC8vIElEQkJsb2NrZWRFdmVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDYWxsYmFj
a3MuaAppbmRleCAyOWZiMWM0NjkzNTE5ODZiMWQ0Y2E2MmRiODlmY2QwNzVlMThmYjljLi5hNTAy
ZWQ2NjJlYWQ5MGQ2YWI1ZWMwZDc5ZTMwOWJkYTZmNDk1N2ExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCQ2FsbGJhY2tzLmgKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBv
bkJsb2NrZWQoKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCmluZGV4IGNjZTMwNTRkNDE2NmM3YTQ1YTdjNTNkOGI1
ZGUyYWY2N2RiOWY1OGEuLmMyNjhmNGYxMWIyMzUzMTY0NjcxYWIxNTk4MDVhNzIyNTllOGE5ZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCkBAIC0zMiw3ICszMiw3IEBA
CiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJJ
bmRleC5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCi0jaW5jbHVkZSAiSURCUmVxdWVz
dC5oIgorI2luY2x1ZGUgIklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSURC
VHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5j
bHVkZSA8bGltaXRzPgpAQCAtOTIsOSArOTIsOSBAQCB2b2lkIElEQkRhdGFiYXNlOjpkZWxldGVP
YmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIG1f
YmFja2VuZC0+ZGVsZXRlT2JqZWN0U3RvcmUobmFtZSwgbV9zZXRWZXJzaW9uVHJhbnNhY3Rpb24u
Z2V0KCksIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJEYXRhYmFzZTo6c2V0
VmVyc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZl
cnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVx
dWVzdD4gSURCRGF0YWJhc2U6OnNldFZlcnNpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBS
ZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJ
REJBbnk6OmNyZWF0ZSh0aGlzKSwgMCk7CisgICAgUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VSZXF1
ZXN0PiByZXF1ZXN0ID0gSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJ
REJBbnk6OmNyZWF0ZSh0aGlzKSwgMCk7CiAgICAgbV9iYWNrZW5kLT5zZXRWZXJzaW9uKHZlcnNp
b24sIHJlcXVlc3QsIGVjKTsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KQEAgLTEzMSw3ICsxMzEs
MTAgQEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnQKIAogdm9pZCBJREJEYXRhYmFzZTo6Y2xvc2Uo
KQogeworICAgIGlmIChtX25vTmV3VHJhbnNhY3Rpb25zKQorICAgICAgcmV0dXJuOwogICAgIG1f
bm9OZXdUcmFuc2FjdGlvbnMgPSB0cnVlOworICAgIG1fYmFja2VuZC0+ZGVjcmVtZW50Q29ubmVj
dGlvbkNvdW50KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCRGF0YWJhc2UuaAppbmRleCBhODBkNWEyMjhjYjA4ODdiZjA0MDA5N2EyNzMxMjgxYzgz
ODRkNTlkLi5kYjRhMzJkZTFiMzlkMjg2MDRmZWY0ZWRhYTliZDZlMTYyM2I3YjE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oCkBAIC00MSw3ICs0MSw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIElEQkFueTsKLWNsYXNzIElEQlJlcXVlc3Q7CitjbGFzcyBJREJW
ZXJzaW9uQ2hhbmdlUmVxdWVzdDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNs
YXNzIElEQkRhdGFiYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8SURCRGF0YWJhc2U+IHsKQEAgLTY4
LDcgKzY4LDcgQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gY3Jl
YXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBPcHRpb25zT2JqZWN0Jiwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBzZXRW
ZXJzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBz
ZXRWZXJzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHZlcnNpb24s
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaWRsCmluZGV4IDRlNDBhMTBmNGZlYzAwM2Q5NjNkMjIw
MjNjNzdkYmE0ZTJhMWQ0MmMuLmVmMmEwODExZWIxZjM5YTlmOThhNzFjMTRmZTNhMzE0MGMzMTE3
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaWRsCkBAIC0zNiw3ICszNiw3
IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNl
cHRpb24pOwogICAgICAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGluIERPTVN0cmluZyBuYW1l
KQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7Ci0gICAgICAgIFtD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IHNldFZlcnNpb24oaW4g
RE9NU3RyaW5nIHZlcnNpb24pCisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0XSBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCBzZXRWZXJzaW9uKGluIERPTVN0cmluZyB2ZXJz
aW9uKQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJUcmFuc2FjdGlvbiB0cmFuc2Fj
dGlvbihpbiBbT3B0aW9uYWxdIERPTVN0cmluZ0xpc3Qgc3RvcmVOYW1lcywgaW4gW09wdGlvbmFs
XSB1bnNpZ25lZCBzaG9ydCBtb2RlLCBpbiBbT3B0aW9uYWxdIHVuc2lnbmVkIGxvbmcgdGltZW91
dCkKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggZmE5
YTMzNmY1NjAwZTkzYTFhZjM5NWVkZWNiNTM1MjNlZWRkNDJjOC4uZGQxNGRjZTQyMzk2M2QxNmRk
OTIzN2RjZjZiNTQ2NTQ5N2Q4ZTE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC05NSw2ICs5NSw3IEBAIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJ
REJTUUxpdGVEYXRhCiAgICAgLCBtX2lkZW50aWZpZXIodW5pcXVlSWRlbnRpZmllcikKICAgICAs
IG1fZmFjdG9yeShmYWN0b3J5KQogICAgICwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKGNvb3Jk
aW5hdG9yKQorICAgICwgbV9vcGVuQ29ubmVjdGlvbkNvdW50KDApCiB7CiAgICAgQVNTRVJUKCFt
X25hbWUuaXNOdWxsKCkpOwogCkBAIC0yMTEsNiArMjEyLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLAogCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb24oY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKKyAgICAvLyBDYWxsIG9uYmxvY2tlZCBoZXJlIGlmIGNvbm5lY3Rp
b24gY291bnQgaXMgPjAKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJh
c2UgPSB0aGlzOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxi
YWNrczsKICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0
cmluZ0xpc3Q6OmNyZWF0ZSgpOwpAQCAtMjQ3LDkgKzI0OSwxNSBAQCBQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNh
Y3Rpb24oRAogICAgIHJldHVybiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUob2Jq
ZWN0U3RvcmVOYW1lcywgbW9kZSwgdGltZW91dCwgdGhpcyk7CiB9CiAKLXZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6Y2xvc2UoKQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjppbmNy
ZW1lbnRDb25uZWN0aW9uQ291bnQoKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAg
bV9vcGVuQ29ubmVjdGlvbkNvdW50Kys7Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6ZGVjcmVtZW50Q29ubmVjdGlvbkNvdW50KCkKK3sKKyAgICBtX29wZW5Db25uZWN0aW9uQ291
bnQtLTsKKyAgICBBU1NFUlQobV9vcGVuQ29ubmVjdGlvbkNvdW50ID49IDApOwogfQogCiB2b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmxvYWRPYmplY3RTdG9yZXMoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCA1NzBmNmE1OTUx
YjNjMmE1ZDk3MTVjZDAwMDBiMmViYjU5MGRmNDUzLi5iOWMwMmRjZDJjZTM1NmIwN2FjNzQ0MTFj
OGU0ZTAxNzFkMjhkY2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuaApAQCAtNjIsNyArNjIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRW
ZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCogb2JqZWN0U3RvcmVOYW1l
cywgdW5zaWduZWQgc2hvcnQgbW9kZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0LCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlKCk7CisgICAgdmlydHVhbCB2b2lkIGluY3Jl
bWVudENvbm5lY3Rpb25Db3VudCgpOworICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnRDb25uZWN0
aW9uQ291bnQoKTsKIAogICAgIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlPiBvYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIElEQlRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IqIHRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3Ry
YW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCk7IH0KQEAgLTk0LDYgKzk1LDggQEAgcHJpdmF0ZToK
ICAgICBPYmplY3RTdG9yZU1hcCBtX29iamVjdFN0b3JlczsKIAogICAgIFJlZlB0cjxJREJUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yPiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3I7CisKKyAgICBpbnQg
bV9vcGVuQ29ubmVjdGlvbkNvdW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
LmgKaW5kZXggMGRjNTliMWE5ZWVjNmM0ZTI0NWVlNGQwYjBjYmMwMGI3NjhmNzc4ZC4uZGM1OTc2
MDg4MGJiZThhM2I3N2NkMzZhMzA0MTY5ODcyZWMzNjk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCkBAIC00MCw3ICs0
MCw2IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgSURCQ2FsbGJhY2tzOwogY2xhc3MgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlOwotY2xhc3MgSURCVHJhbnNhY3Rpb25DYWxsYmFja3M7CiAKIC8vIFRoaXMgY2xhc3MgaXMg
c2hhcmVkIGJ5IElEQkRhdGFiYXNlIChhc3luYykgYW5kIElEQkRhdGFiYXNlU3luYyAoc3luYyku
CiAvLyBUaGlzIGlzIGltcGxlbWVudGVkIGJ5IElEQkRhdGFiYXNlQmFja2VuZEltcGwgYW5kIG9w
dGlvbmFsbHkgb3RoZXJzIChpbiBvcmRlciB0byBwcm94eQpAQCAtNTgsNyArNTcsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihET01T
dHJpbmdMaXN0KiBzdG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25lZCBsb25n
IHRpbWVvdXQsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlKCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnRDb25uZWN0aW9uQ291bnQoKSA9IDA7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKaW5kZXggMGU4ODNjZmUyZTQ1NjQ3ODZmOTQyMjFm
ODRjZmE1NWIzMmQxNzdiOS4uYzdjMmZkYmQ0ZWE5ZDZkNjlkOGIwMzYyMGRjMjFhMWQ4YzdjMjQx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBs
LmNwcApAQCAtMjEzLDYgKzIxMyw3IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVu
KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhCiAgICAgU3Ry
aW5nIHVuaXF1ZUlkZW50aWZpZXIgPSBmaWxlSWRlbnRpZmllciArICJAIiArIG5hbWU7CiAgICAg
SURCRGF0YWJhc2VCYWNrZW5kTWFwOjppdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VCYWNrZW5kTWFw
LmZpbmQodW5pcXVlSWRlbnRpZmllcik7CiAgICAgaWYgKGl0ICE9IG1fZGF0YWJhc2VCYWNrZW5k
TWFwLmVuZCgpKSB7CisgICAgICAgIChpdC0+c2Vjb25kKS0+aW5jcmVtZW50Q29ubmVjdGlvbkNv
dW50KCk7CiAgICAgICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGl0LT5zZWNvbmQpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMjM1LDYgKzIzNiw3IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tl
bmRJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IGNhCiAgICAgfQogCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNl
QmFja2VuZCA9IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZShuYW1lLCBzcWxpdGVEYXRh
YmFzZS5nZXQoKSwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdldCgpLCB0aGlzLCB1bmlxdWVJ
ZGVudGlmaWVyKTsKKyAgICBkYXRhYmFzZUJhY2tlbmQtPmluY3JlbWVudENvbm5lY3Rpb25Db3Vu
dCgpOwogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CiAg
ICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFj
a2VuZC5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJl
cXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCmluZGV4IDU0ODgw
MGRiZDI5Y2NmYjRiMTg2NGZjMGMzZWY3MDE3MzFjYjkyOWYuLjFkNDI0NGIzMjE5MGRlZGNkYTdi
NGRkNWI1OWJkZmQzN2M2Y2QyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCkBA
IC02OSw2ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NS
ZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQogCiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICB2aXJ0dWFsIElEQlJlcXVlc3QqIHRvSURC
UmVxdWVzdCgpIHsgcmV0dXJuIHRoaXM7IH0KQEAgLTgwLDkgKzgxLDkgQEAgcHVibGljOgogICAg
IHVzaW5nIFRocmVhZFNhZmVTaGFyZWQ8SURCQ2FsbGJhY2tzPjo6cmVmOwogICAgIHVzaW5nIFRo
cmVhZFNhZmVTaGFyZWQ8SURCQ2FsbGJhY2tzPjo6ZGVyZWY7CiAKLXByaXZhdGU6Citwcm90ZWN0
ZWQ6CiAgICAgSURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJBbnk+IHNvdXJjZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlv
bik7Ci0KK3ByaXZhdGU6CiAgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPElEQlJlcXVlc3Q+Kik7
CiAgICAgdm9pZCBzY2hlZHVsZUV2ZW50KFBhc3NSZWZQdHI8SURCQW55PiByZXN1bHQsIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3ZjAxMjlhOTU4ODdh
NjE4ZDI2MGFkMmJhMmI1NzdiOTZkYjNkYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmNwcApAQCAtMCwwICsxLDYxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0
LmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkV2ZW50Lmgi
CisjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgi
CisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIklEQkN1cnNvci5oIgorI2luY2x1
ZGUgIklEQkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiSURCRXJyb3JFdmVudC5oIgorI2luY2x1ZGUg
IklEQkluZGV4LmgiCisjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKKyNpbmNsdWRlICJJREJQ
ZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgiCisjaW5jbHVkZSAiSURCU3VjY2Vzc0V2ZW50Lmgi
CisjaW5jbHVkZSAiSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSURCVmVyc2lvbkNo
YW5nZVJlcXVlc3Q6OklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24pCisgICAgOiBJREJSZXF1ZXN0KGNvbnRleHQsIHNv
dXJjZSwgdHJhbnNhY3Rpb24pCit7Cit9CisKK0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Ojp+SURC
VmVyc2lvbkNoYW5nZVJlcXVlc3QoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hh
bmdlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVx
dWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmMwYmY3Yjc0ZTMwNjI3MTBhYTM4OTM2NDJhMDhiOGM1MWVkMDEx
OTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25D
aGFuZ2VSZXF1ZXN0LmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCVmVyc2lvbkNoYW5n
ZVJlcXVlc3RfaAorI2RlZmluZSBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdF9oCisKKyNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKKyNpbmNsdWRl
ICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U7CisKK2NsYXNzIElEQlZl
cnNpb25DaGFuZ2VSZXF1ZXN0IDogcHVibGljIElEQlJlcXVlc3QgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KGNvbnRleHQsIHNvdXJjZSwgdHJhbnNhY3Rpb24p
KTsgfQorICAgIHZpcnR1YWwgfklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KCk7CisKKyAgICBERUZJ
TkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGJsb2NrZWQpOworCitwcml2YXRlOgorICAgIElE
QlZlcnNpb25DaGFuZ2VSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PElEQkFueT4gc291cmNlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0
aW9uKTsKKworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBJREJSZXF1ZXN0X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaWRsIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5pZGwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWMwMDU5MGFhNGRlYTIwMzc2ZDliY2Y5ZWVjNWY5ZWQ3ODk2YzhiOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaWRs
CkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgc3RvcmFnZSB7CisKKyAgICBpbnRlcmZhY2UgWwor
ICAgICAgICBDb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFLAorICAgICAgICBFdmVudFRhcmdl
dAorICAgIF0gSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QgeworCisgICAgICAgIC8vIFN0YXRlcwor
ICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBMT0FESU5HID0gMTsKKyAgICAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgRE9ORSA9IDI7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNp
Z25lZCBzaG9ydCByZWFkeVN0YXRlOworCisgICAgICAgIC8vIEV2ZW50cworICAgICAgICBhdHRy
aWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnN1Y2Nlc3M7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9uZXJyb3I7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYmxvY2tl
ZDsKKworICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICAgICAgdm9pZCBhZGRF
dmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRM
aXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNo
RXZlbnQoaW4gRXZlbnQgZXZ0KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsK
KyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwMzc4MmI1MWU4NjA5Mjc1
ZjFkYTA5NjM4NGM0OGI5YzY3NmYyNDljLi5lMTlkODAzZWRhM2FjNTA1ZDE1YjdiMGM0N2FlMDYw
ZDQ0MTQ3NDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisy
MDExLTAyLTAzICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBpbmRleGVkZGI6IG1ha2Ug
c2V0VmVyc2lvbiBmaXJlIGJsb2NrZWQgZXZlbnQgaWYgb3RoZXIgY29ubmVjdGlvbnMgYXJlIG9w
ZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNzI4
CisKKyAgICAgICAgKiBzcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2FsbGJhY2tzUHJveHk6Om9uQmxvY2tlZCk6CisgICAgICAgICogc3JjL0lEQkNhbGxi
YWNrc1Byb3h5Lmg6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VQcm94eTo6ZGVjcmVtZW50Q29ubmVjdGlvbkNvdW50KToK
KyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VQcm94eS5oOgorICAgICAgICAqIHNyYy9XZWJJREJE
YXRhYmFzZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6OmRl
Y3JlbWVudENvbm5lY3Rpb25Db3VudCk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1w
bC5oOgorCiAyMDExLTAxLTI3ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbCB3ZWJraXQgY2hyb21pdW0gcmV2IGZyb20gNzI2NzMgdG8gNzI4
OTQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5j
cHAKaW5kZXggNjkxZmI3NTM3NmNiYjcxYTRlZDYxMWUwMGJiMmFhMDY3N2EyNjI5ZS4uM2E2OTE1
ZjRjNWE1NDBhZDI5MDg3YTNjMTQwNGQ5NzljMzA0ODdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcApAQCAtMTA3LDYgKzEwNywxMCBA
QCB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTYwogICAgIG1fY2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAK
K3ZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uQmxvY2tlZCgpCit7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKaW5kZXggZTFkYjIz
ZDQzOWY2YWE1Zjc2ODY4YTAyNzc0ZjY5ZDkwMDVjMDc4Zi4uN2RlZDhlYWU0ZTMyODA1ZGExNDQz
Mzg3N2Y1ZDc1MzAyODFiYjMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCQ2FsbGJhY2tzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJDYWxsYmFja3NQcm94eS5oCkBAIC01NSw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
Pik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCk7
CiAKIHByaXZhdGU6CiAgICAgSURCQ2FsbGJhY2tzUHJveHkoUGFzc093blB0cjxXZWJLaXQ6Oldl
YklEQkNhbGxiYWNrcz4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCRGF0YWJhc2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZVByb3h5LmNwcAppbmRleCBmMDcwZDY0OGEyODZjMjY2M2Q0ZDIyNjJiNThhZWUwOTE0MDBl
Y2E2Li4wM2YxMTIyNzUwMzBjMzc5OTQxODExZjkwYTJmY2M5NDQ4NTVkMzZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmNwcApAQCAtMTA2LDkg
KzEwNiw5IEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJE
YXRhYmFzZVByb3h5Ojp0cmFuc2FjdGlvbihET01TdHJpCiAgICAgcmV0dXJuIElEQlRyYW5zYWN0
aW9uQmFja2VuZFByb3h5OjpjcmVhdGUodHJhbnNhY3Rpb24pOwogfQogCi12b2lkIElEQkRhdGFi
YXNlUHJveHk6OmNsb3NlKCkKK3ZvaWQgSURCRGF0YWJhc2VQcm94eTo6ZGVjcmVtZW50Q29ubmVj
dGlvbkNvdW50KCkKIHsKLSAgICBtX3dlYklEQkRhdGFiYXNlLT5jbG9zZSgpOworICAgIG1fd2Vi
SURCRGF0YWJhc2UtPmRlY3JlbWVudENvbm5lY3Rpb25Db3VudCgpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJE
YXRhYmFzZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVBy
b3h5LmgKaW5kZXggYzUxYTYwNDkwN2I1MzE0OTkyNDZmNTMyM2U4ZjhmNTIwYTlhZWFkYS4uMGQ1
OThmZDBjYjY4ODY2MzVkOThkOWEyMDRlZWZlMzM1NWNkZTAxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlz
dCogc3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlKCk7CisgICAgdmlydHVh
bCB2b2lkIGRlY3JlbWVudENvbm5lY3Rpb25Db3VudCgpOwogCiBwcml2YXRlOgogICAgIElEQkRh
dGFiYXNlUHJveHkoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkRhdGFiYXNlPik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAppbmRleCBm
YTdhMjAwMGQ3ZTcxMmExYmYzMjNjYzgxZGVjMzQ5OTMyNTNhZjIyLi43NWM5ZmYyZTA1ZjhmNTkx
ZWJiZTFkMGM0MzgzOTVlYWQzOGQ0N2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTk1LDkgKzk1LDkgQEAgV2ViSURCVHJh
bnNhY3Rpb24qIFdlYklEQkRhdGFiYXNlSW1wbDo6dHJhbnNhY3Rpb24oY29uc3QgV2ViRE9NU3Ry
aW5nTGlzdCYgbmFtZXMKICAgICByZXR1cm4gbmV3IFdlYklEQlRyYW5zYWN0aW9uSW1wbCh0cmFu
c2FjdGlvbik7CiB9CiAKLXZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpjbG9zZSgpCit2b2lkIFdl
YklEQkRhdGFiYXNlSW1wbDo6ZGVjcmVtZW50Q29ubmVjdGlvbkNvdW50KCkKIHsKLSAgICBtX2Rh
dGFiYXNlQmFja2VuZC0+Y2xvc2UoKTsKKyAgICBtX2RhdGFiYXNlQmFja2VuZC0+ZGVjcmVtZW50
Q29ubmVjdGlvbkNvdW50KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5kZXggNjRlMGIy
ZWJkYWNhZGQ3MDlhMGJhNzIzYjllODZjNzJhYmE2Mjc1ZS4uOTI0NDk5ODgzMDNhY2QzY2I1Njg4
YmIzNWNmN2JiMmI1MTUxNmI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCRGF0YWJhc2VJbXBsLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRWZXJzaW9uKGNvbnN0IFdlYlN0cmluZyYgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxs
YmFja3MsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIFdlYklEQlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbihjb25zdCBXZWJET01TdHJpbmdMaXN0JiBuYW1lcywgdW5zaWduZWQgc2hv
cnQgbW9kZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0LCBXZWJFeGNlcHRpb25Db2RlJik7Ci0gICAg
dmlydHVhbCB2b2lkIGNsb3NlKCk7CisgICAgdmlydHVhbCB2b2lkIGRlY3JlbWVudENvbm5lY3Rp
b25Db3VudCgpOwogCiBwcml2YXRlOgogICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OklEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZT4gbV9kYXRhYmFzZUJhY2tlbmQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81565</attachid>
            <date>2011-02-07 19:00:58 -0800</date>
            <delta_ts>2011-02-09 13:30:27 -0800</delta_ts>
            <desc>obsoleted Patch 1</desc>
            <filename>bug-53728-20110207190057.patch</filename>
            <type>text/plain</type>
            <size>38052</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX2Js
b2NrZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX2Js
b2NrZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNmY5YTNlZjIyNmU5NzA3NDc1ODQ2OTc4NTc3ZTFhZjg4
YjY2NTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
c2V0X3ZlcnNpb25fYmxvY2tlZC5odG1sCkBAIC0wLDAgKzEsODIgQEAKKzxodG1sPg0KKzxoZWFk
Pg0KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiPg0KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+DQorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+DQorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pg0KKzwvaGVhZD4NCis8Ym9keT4NCis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4NCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4NCis8c2Ny
aXB0Pg0KKw0KK2Rlc2NyaXB0aW9uKCJUZXN0IGNsb3NpbmcgYSBkYXRhYmFzZSBjb25uZWN0aW9u
IGluIEluZGV4ZWREQi4iKTsNCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7DQorDQorY29ubmVjdGlvbnMg
PSBbXQ0KK2Z1bmN0aW9uIHRlc3QoKQ0KK3sNCisgICAgaWYgKCd3ZWJraXRJbmRleGVkREInIGlu
IHdpbmRvdykgew0KKyAgICAgICAgSW5kZXhlZERCID0gd2Via2l0SW5kZXhlZERCOw0KKyAgICB9
DQorICAgIGVsc2UgaWYgKCdtb3pJbmRleGVkREInIGluIHdpbmRvdykgew0KKyAgICAgICAgSW5k
ZXhlZERCID0gbW96SW5kZXhlZERCOw0KKyAgICB9DQorICAgIHNob3VsZEJlRmFsc2UoIkluZGV4
ZWREQiA9PSBudWxsIik7DQorICAgIG9wZW5EQkNvbm5lY3Rpb24oKTsNCit9DQorDQorZnVuY3Rp
b24gb3BlbkRCQ29ubmVjdGlvbigpIHsNCisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygid2Via2l0
SW5kZXhlZERCLm9wZW4oJ3NvbWUgZGIgbmFtZScpIik7DQorICAgIHZlcmlmeVJlc3VsdChyZXN1
bHQpOw0KKyAgICByZXN1bHQub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7DQorICAgIHJlc3VsdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQorfQ0KKw0KK2Z1bmN0aW9uIG9wZW5T
dWNjZXNzKCkNCit7DQorICAgIGRlYnVnKCJpbiBvcGVuU3VjY2VzcyIpOw0KKyAgICB2ZXJpZnlT
dWNjZXNzRXZlbnQoZXZlbnQpOw0KKyAgICBjb25uZWN0aW9uID0gZXZhbEFuZExvZygiY29ubmVj
dGlvbiA9IGV2ZW50LnJlc3VsdCIpOw0KKyAgICBjb25uZWN0aW9ucy5wdXNoKGNvbm5lY3Rpb24p
Ow0KKyAgICBpZiAoY29ubmVjdGlvbnMubGVuZ3RoIDwgMikgew0KKyAgICAgICAgb3BlbkRCQ29u
bmVjdGlvbigpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmVzdWx0ID0gZXZhbEFuZExvZygi
cmVzdWx0ID0gY29ubmVjdGlvbi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOw0KKyAgICAgICAg
cmVzdWx0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7DQorICAgICAgICBy
ZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KKyAgICAgICAgcmVzdWx0
Lm9uYmxvY2tlZCA9IGJsb2NrZWQ7DQorICAgIH0NCit9DQorDQorZnVuY3Rpb24gYmxvY2tlZCgp
IHsNCisgICAgZGVidWcoImluIGJsb2NrZWQiKTsNCisgICAgZXZhbEFuZExvZygiY29ubmVjdGlv
bnNbMF0uY2xvc2UoKSIpOw0KKyAgICBzZXRWZXJzaW9uKDApOw0KK30NCitmdW5jdGlvbiBzZXRW
ZXJzaW9uKHRyaWVzKSB7DQorICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IGNvbm5l
Y3Rpb25zWzFdLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7DQorICAgIHJlc3VsdC5vbnN1Y2Nl
c3MgPSBpblNldFZlcnNpb247DQorICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7DQorICAgIHJlc3VsdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tDYWxsYmFj
azsNCit9DQorDQorZnVuY3Rpb24gdW5leHBlY3RlZEJsb2NrQ2FsbGJhY2soKSB7DQorICAgIHRl
c3RGYWlsZWQoIm9uYmxvY2tlZCBjYWxsZWQgdW5leHBlY3RlZGx5Iik7DQorfQ0KKw0KK2Z1bmN0
aW9uIGluU2V0VmVyc2lvbigpDQorew0KKyAgICBkZWJ1ZygiaW4gaW5TZXRWZXJzaW9uIik7DQor
ICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7DQorICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhjb25uZWN0aW9uc1sxXSwgZG9uZSk7DQorfQ0KKw0KK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOw0KKw0KK3Rlc3QoKTsNCisNCis8L3NjcmlwdD4NCis8L2JvZHk+DQorPC9odG1sPg0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyMGI4NThmOWQxM2Q2ZmI4MTQyYzYzNWIyZmQ0N2JlZDY1NjM1NjdhLi4x
ODA0ZGVjYTg2OWM2ZmEyNzU5ZjM4ZGJkMWUzNzIwOWJjZTRhYTYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDQgQEAKKzIwMTEtMDItMDMgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGlu
ZGV4ZWRkYjogbWFrZSBzZXRWZXJzaW9uIGZpcmUgYmxvY2tlZCBldmVudCBpZiBvdGhlciBjb25u
ZWN0aW9ucyBhcmUgb3BlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTM3MjgKKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAq
IHN0b3JhZ2UvSURCQmxvY2tlZEV2ZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJEYXRhYmFzZS5pZGwuCisgICAgICAgIChXZWJDb3JlOjpJREJCbG9ja2VkRXZl
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJCbG9ja2VkRXZlbnQ6OklEQkJsb2Nr
ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJCbG9ja2VkRXZlbnQ6On5JREJCbG9ja2Vk
RXZlbnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCQmxvY2tlZEV2ZW50Lmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmguCisgICAgICAg
IChXZWJDb3JlOjpJREJCbG9ja2VkRXZlbnQ6OmlzSURCQmxvY2tlZEV2ZW50KToKKyAgICAgICAg
KiBzdG9yYWdlL0lEQkNhbGxiYWNrcy5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnNldFZlcnNpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmNsb3NlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRh
dGFiYXNlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5pZGw6CisgICAgICAgICog
c3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZS5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbik6CisgICAg
ICAgICogc3RvcmFnZS9JREJSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0
OjpvbkJsb2NrZWQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQ
cm94eS5oLgorICAgICAgICAoV2ViQ29yZTo6SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6OklEQlZl
cnNpb25DaGFuZ2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VS
ZXF1ZXN0Ojp+SURCVmVyc2lvbkNoYW5nZVJlcXVlc3QpOgorICAgICAgICAqIHN0b3JhZ2UvSURC
VmVyc2lvbkNoYW5nZVJlcXVlc3QuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25D
aGFuZ2VSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCVmVyc2lvbkNoYW5n
ZVJlcXVlc3QuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJD
YWxsYmFja3NQcm94eS5oLgorCiAyMDExLTAxLTI3ICBTdGVwaGVuIFdoaXRlICA8c2Vub3JibGFu
Y29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDAyNDg1Nzg0Mjg1ZjA3OGFlZmFiYjVhMzBiNDMwYzUzYzM4NzkwNDUu
LmY1N2YxOWRiZTNkN2U5Njc1ZWNmYjQzZGI2ODI1YjMxZDlmYjhjNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTI3Miw2ICsyNzIsNyBAQAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VDYWxs
YmFjay5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmlkbCcsCiAgICAg
ICAgICAgICAnc3RvcmFnZS9JREJBbnkuaWRsJywKKyAgICAgICAgICAgICdzdG9yYWdlL0lEQkJs
b2NrZWRFdmVudC5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCQ3Vyc29yLmlkbCcsCiAg
ICAgICAgICAgICAnc3RvcmFnZS9JREJEYXRhYmFzZUVycm9yLmlkbCcsCiAgICAgICAgICAgICAn
c3RvcmFnZS9JREJEYXRhYmFzZUV4Y2VwdGlvbi5pZGwnLApAQCAtMjg2LDYgKzI4Nyw3IEBACiAg
ICAgICAgICAgICAnc3RvcmFnZS9JREJSZXF1ZXN0LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFn
ZS9JREJTdWNjZXNzRXZlbnQuaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQlRyYW5zYWN0
aW9uLmlkbCcsCisgICAgICAgICAgICAnc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5p
ZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMRXJyb3IuaWRsJywKICAgICAgICAgICAgICdz
dG9yYWdlL1NRTEV4Y2VwdGlvbi5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMUmVzdWx0
U2V0LmlkbCcsCkBAIC00MDAyLDYgKzQwMDQsOCBAQAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURC
QWJvcnRFdmVudC5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQkFueS5jcHAnLAogICAgICAg
ICAgICAgJ3N0b3JhZ2UvSURCQW55LmgnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvSURCQmxvY2tl
ZEV2ZW50LmNwcCcsCisgICAgICAgICAgICAnc3RvcmFnZS9JREJCbG9ja2VkRXZlbnQuaCcsCiAg
ICAgICAgICAgICAnc3RvcmFnZS9JREJDYWxsYmFja3MuaCcsCiAgICAgICAgICAgICAnc3RvcmFn
ZS9JREJDb21wbGV0ZUV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJDb21wbGV0
ZUV2ZW50LmgnLApAQCAtNDA2Myw2ICs0MDY3LDggQEAKICAgICAgICAgICAgICdzdG9yYWdlL0lE
QlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCVHJhbnNhY3Rp
b25Db29yZGluYXRvci5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VS
ZXF1ZXN0LmNwcCcsCisgICAgICAgICAgICAnc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVz
dC5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0xvY2FsU3RvcmFnZVRhc2suY3BwJywKICAgICAg
ICAgICAgICdzdG9yYWdlL0xvY2FsU3RvcmFnZVRhc2suaCcsCiAgICAgICAgICAgICAnc3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKaW5kZXggNDNlYTQ4M2I5MTZk
NzYwNWQ0ZDYwMTgyNDY0MTJlNTJjNGFhNTE4My4uM2Q4Y2IwYjI1M2I3YzhkYWUwZjE4ZjM2YTQ4
NjUwYWRkNzJkYTdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKQEAgLTMzNSw2ICszMzUsNyBAQCBJRExfQklO
RElOR1MgKz0gXAogICAgIHN0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5pZGwgXAogICAgIHN0b3Jh
Z2UvRGF0YWJhc2VTeW5jLmlkbCBcCiAgICAgc3RvcmFnZS9JREJBbnkuaWRsIFwKKyAgICBzdG9y
YWdlL0lEQkJsb2NrZWRFdmVudC5pZGwgXAogICAgIHN0b3JhZ2UvSURCQ3Vyc29yLmlkbCBcCiAg
ICAgc3RvcmFnZS9JREJEYXRhYmFzZUVycm9yLmlkbCBcCiAgICAgc3RvcmFnZS9JREJEYXRhYmFz
ZUV4Y2VwdGlvbi5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggNDM5ZTlkOGI1NThi
NmU1YjIyYzc2NDMwNzU1MDA3NzM2MzYzMWRkMS4uYWRmNDhlZGRmNzZiZTQzNTAyYWZkMWYwNmI0
ODBlOTViMDRkOTZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0zNiw2ICszNiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhiZWZvcmVwYXN0ZSkgXAogICAgIG1hY3Jv
KGJlZm9yZXByb2Nlc3MpIFwKICAgICBtYWNybyhiZWZvcmV1bmxvYWQpIFwKKyAgICBtYWNybyhi
bG9ja2VkKSBcCiAgICAgbWFjcm8oYmx1cikgXAogICAgIG1hY3JvKGNhY2hlZCkgXAogICAgIG1h
Y3JvKGNoYW5nZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggNWYyZjhhNzE2
YTg0MGNjZTkwNTQ1ZTMyMWMzODQ2ZmIyZmU4OTg5OC4uYjVmOWNiOGMwZmMzMTNjNjNkYjJjN2Jk
MTMyNDdjMDExNmUyODA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC0xODUs
NiArMTg1LDEwIEBAIElEQlJlcXVlc3QqIEV2ZW50VGFyZ2V0Ojp0b0lEQlJlcXVlc3QoKQogewog
ICAgIHJldHVybiAwOwogfQorSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QqIEV2ZW50VGFyZ2V0Ojp0
b0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KCkKK3sKKyAgICByZXR1cm4gMDsKK30KIElEQlRyYW5z
YWN0aW9uKiBFdmVudFRhcmdldDo6dG9JREJUcmFuc2FjdGlvbigpCiB7CiAgICAgcmV0dXJuIDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmluZGV4IDgxZWViN2ZjMmRmOTE2MzAzMTZlYjMyOWFk
YzQ3M2RkNjgzZjAwZGUuLmI3YzU3MzU3MjFkMTdiZTk2MGM4MzVmNTQzNWFjMjEzMTg0MTQxNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC01MSw2ICs1MSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBGaWxlV3JpdGVyOwogICAgIGNsYXNzIElEQlJlcXVlc3Q7CiAg
ICAgY2xhc3MgSURCVHJhbnNhY3Rpb247CisgICAgY2xhc3MgSURCVmVyc2lvbkNoYW5nZVJlcXVl
c3Q7CiAgICAgY2xhc3MgSmF2YVNjcmlwdEF1ZGlvTm9kZTsKICAgICBjbGFzcyBNZXNzYWdlUG9y
dDsKICAgICBjbGFzcyBOb2RlOwpAQCAtMTM5LDYgKzE0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgICAgICB2aXJ0dWFsIElEQlJl
cXVlc3QqIHRvSURCUmVxdWVzdCgpOworICAgICAgICB2aXJ0dWFsIElEQlZlcnNpb25DaGFuZ2VS
ZXF1ZXN0KiB0b0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KCk7CiAgICAgICAgIHZpcnR1YWwgSURC
VHJhbnNhY3Rpb24qIHRvSURCVHJhbnNhY3Rpb24oKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJsb2NrZWRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkJsb2NrZWRFdmVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDMwMmM3MjA4YTk2ZjQ3
NjU5ODAyZmI5YmU0M2EwMjlmZDE4NmM1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCQmxvY2tlZEV2ZW50LmNwcApAQCAtMCwwICsxLDUyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQkJsb2NrZWRFdmVudC5oIgorCisjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5j
bHVkZSAiSURCQW55LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxJREJC
bG9ja2VkRXZlbnQ+IElEQkJsb2NrZWRFdmVudDo6Y3JlYXRlKFBhc3NSZWZQdHI8SURCQW55PiBz
b3VyY2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJCbG9ja2VkRXZlbnQoc291cmNl
KSk7Cit9CisKK0lEQkJsb2NrZWRFdmVudDo6SURCQmxvY2tlZEV2ZW50KFBhc3NSZWZQdHI8SURC
QW55PiBzb3VyY2UpCisgICAgOiBJREJFdmVudChldmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50LCBz
b3VyY2UpCit7Cit9CisKK0lEQkJsb2NrZWRFdmVudDo6fklEQkJsb2NrZWRFdmVudCgpCit7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkJsb2NrZWRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJCbG9ja2VkRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZDVmMzQyYjRiMWNjMmI5M2M5NmM4OGJk
OGM2MmNjM2EyMzBkOWFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJCbG9ja2VkRXZlbnQuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJC
bG9ja2VkRXZlbnRfaAorI2RlZmluZSBJREJCbG9ja2VkRXZlbnRfaAorCisjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJFdmVudC5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSURCQmxvY2tlZEV2ZW50
IDogcHVibGljIElEQkV2ZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJC
bG9ja2VkRXZlbnQ+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkFueT4gc291cmNlKTsKKyAgICAvLyBG
SVhNRTogTmVlZCB0byBhbGxvdyBjcmVhdGlvbiBvZiB0aGVzZSBldmVudHMgZnJvbSBKUy4KKyAg
ICB2aXJ0dWFsIH5JREJCbG9ja2VkRXZlbnQoKTsKKworICAgIHZpcnR1YWwgYm9vbCBpc0lEQkJs
b2NrZWRFdmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworcHJpdmF0ZToKKyAgICBJREJC
bG9ja2VkRXZlbnQoUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSk7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2Vu
ZGlmIC8vIElEQkJsb2NrZWRFdmVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkJsb2NrZWRFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJsb2Nr
ZWRFdmVudC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjkzOTc1MWMzMjE0YjI1NTU4OWNmNjVjZWI0NDY4YmE5
NjA4MDVmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmxv
Y2tlZEV2ZW50LmlkbApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHN0b3JhZ2Ugewor
CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQor
ICAgIF0gSURCQmxvY2tlZEV2ZW50IDogSURCRXZlbnQgeworICAgIH07Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJDYWxsYmFja3MuaAppbmRleCAyOWZiMWM0NjkzNTE5ODZiMWQ0Y2E2MmRiODlm
Y2QwNzVlMThmYjljLi5hNTAyZWQ2NjJlYWQ5MGQ2YWI1ZWMwZDc5ZTMwOWJkYTZmNDk1N2ExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgKQEAgLTU2LDYgKzU2LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2U+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCmluZGV4IGNjZTMwNTRk
NDE2NmM3YTQ1YTdjNTNkOGI1ZGUyYWY2N2RiOWY1OGEuLmY5NzYxMzJlNWE0ZDg3NGI1ODIyZDIy
M2FkM2NhYmU3OTc4MDc4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3Bw
CkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2Uu
aCIKICNpbmNsdWRlICJJREJJbmRleC5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCi0j
aW5jbHVkZSAiSURCUmVxdWVzdC5oIgorI2luY2x1ZGUgIklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCiAjaW5jbHVkZSA8bGltaXRzPgpAQCAtNTQsNiArNTQsNyBAQCBJREJEYXRh
YmFzZTo6SURCRGF0YWJhc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+
IGJhY2tlbmQpCiAKIElEQkRhdGFiYXNlOjp+SURCRGF0YWJhc2UoKQogeworICAgIGNsb3NlKCk7
CiB9CiAKIHZvaWQgSURCRGF0YWJhc2U6OnNldFNldFZlcnNpb25UcmFuc2FjdGlvbihJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQpAQCAtOTIsOSArOTMsOSBAQCB2
b2lkIElEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgIG1fYmFja2VuZC0+ZGVsZXRlT2JqZWN0U3RvcmUobmFtZSwg
bV9zZXRWZXJzaW9uVHJhbnNhY3Rpb24uZ2V0KCksIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJEYXRhYmFzZTo6c2V0VmVyc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1Jl
ZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gSURCRGF0YWJhc2U6OnNldFZlcnNpb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKLSAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJl
cXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgMCk7CisgICAgUmVm
UHRyPElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiByZXF1ZXN0ID0gSURCVmVyc2lvbkNoYW5nZVJl
cXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSk7CiAgICAgbV9iYWNr
ZW5kLT5zZXRWZXJzaW9uKHZlcnNpb24sIHJlcXVlc3QsIGVjKTsKICAgICByZXR1cm4gcmVxdWVz
dDsKIH0KQEAgLTEzMSw3ICsxMzIsMTAgQEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURC
RGF0YWJhc2U6OnRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnQKIAogdm9p
ZCBJREJEYXRhYmFzZTo6Y2xvc2UoKQogeworICAgIGlmIChtX25vTmV3VHJhbnNhY3Rpb25zKQor
ICAgICAgICByZXR1cm47CiAgICAgbV9ub05ld1RyYW5zYWN0aW9ucyA9IHRydWU7CisgICAgbV9i
YWNrZW5kLT5jbG9zZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQkRhdGFiYXNlLmgKaW5kZXggYTgwZDVhMjI4Y2IwODg3YmYwNDAwOTdhMjczMTI4
MWM4Mzg0ZDU5ZC4uZGI0YTMyZGUxYjM5ZDI4NjA0ZmVmNGVkYWE5YmQ2ZTE2MjNiN2IxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaApAQCAtNDEsNyArNDEsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJBbnk7Ci1jbGFzcyBJREJSZXF1ZXN0OworY2xhc3Mg
SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owog
CiBjbGFzcyBJREJEYXRhYmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkRhdGFiYXNlPiB7CkBA
IC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+
IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uc09iamVj
dCYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0
cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
c2V0VmVyc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9u
LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVz
dD4gc2V0VmVyc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB2ZXJz
aW9uLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBjbG9zZSgpOwogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlkbAppbmRleCA0ZTQwYTEwZjRmZWMwMDNkOTYz
ZDIyMDIzYzc3ZGJhNGUyYTFkNDJjLi5lZjJhMDgxMWViMWYzOWE5Zjk4YTcxYzE0ZmUzYTMxNDBj
MzExN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlkbApAQCAtMzYsNyAr
MzYsNyBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNl
RXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShpbiBET01TdHJpbmcg
bmFtZSkKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwotICAgICAg
ICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBzZXRWZXJzaW9u
KGluIERPTVN0cmluZyB2ZXJzaW9uKQorICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dF0gSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qgc2V0VmVyc2lvbihpbiBET01TdHJpbmcg
dmVyc2lvbikKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwogICAg
ICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCVHJhbnNhY3Rpb24gdHJh
bnNhY3Rpb24oaW4gW09wdGlvbmFsXSBET01TdHJpbmdMaXN0IHN0b3JlTmFtZXMsIGluIFtPcHRp
b25hbF0gdW5zaWduZWQgc2hvcnQgbW9kZSwgaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBsb25nIHRp
bWVvdXQpCiAgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4
IGZhOWEzMzZmNTYwMGU5M2ExYWYzOTVlZGVjYjUzNTIzZWVkZDQyYzguLmFmZGYzNjlmYzY1ZDUw
MGY1MzA5OGJkZTJmNmUzY2UwN2Y2NjdhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtOTUsNiArOTUsNyBAQCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFt
ZSwgSURCU1FMaXRlRGF0YQogICAgICwgbV9pZGVudGlmaWVyKHVuaXF1ZUlkZW50aWZpZXIpCiAg
ICAgLCBtX2ZhY3RvcnkoZmFjdG9yeSkKICAgICAsIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihj
b29yZGluYXRvcikKKyAgICAsIG1fb3BlbkNvbm5lY3Rpb25Db3VudCgwKQogewogICAgIEFTU0VS
VCghbV9uYW1lLmlzTnVsbCgpKTsKIApAQCAtMjExLDYgKzIxMiwxMCBAQCB2b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosCiAKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbihjb25z
dCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3Ms
IEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIGlmIChtX29wZW5Db25uZWN0aW9uQ291bnQgPiAx
KSB7CisgICAgICAgIHBycENhbGxiYWNrcy0+b25CbG9ja2VkKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlID0gdGhp
czsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAg
ICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJpbmdMaXN0
OjpjcmVhdGUoKTsKQEAgLTI0Nyw5ICsyNTIsMTUgQEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uKEQK
ICAgICByZXR1cm4gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKG9iamVjdFN0b3Jl
TmFtZXMsIG1vZGUsIHRpbWVvdXQsIHRoaXMpOwogfQogCit2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6Om9wZW4oKQoreworICAgIG1fb3BlbkNvbm5lY3Rpb25Db3VudCsrOworfQorCiB2b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVt
ZW50LgorICAgIG1fb3BlbkNvbm5lY3Rpb25Db3VudC0tOworICAgIEFTU0VSVChtX29wZW5Db25u
ZWN0aW9uQ291bnQgPj0gMCk7CiB9CiAKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6bG9h
ZE9iamVjdFN0b3JlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5oCmluZGV4IDU3MGY2YTU5NTFiM2MyYTVkOTcxNWNkMDAwMGIyZWJiNTkwZGY0
NTMuLmQ3MmViYTk5OTBlNTNkMTdhZmRkZWVlYjAzOTYzOWY2YmI2ZWU3YWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC02Miw2ICs2
Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9u
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihE
T01TdHJpbmdMaXN0KiBvYmplY3RTdG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNp
Z25lZCBsb25nIHRpbWVvdXQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgb3Bl
bigpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOwogCiAgICAgUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSk7
CkBAIC05NCw2ICs5NSw4IEBAIHByaXZhdGU6CiAgICAgT2JqZWN0U3RvcmVNYXAgbV9vYmplY3RT
dG9yZXM7CiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcj4gbV90cmFuc2Fj
dGlvbkNvb3JkaW5hdG9yOworCisgICAgaW50IG1fb3BlbkNvbm5lY3Rpb25Db3VudDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCmluZGV4IDBkYzU5YjFhOWVlYzZjNGUyNDVl
ZTRkMGIwY2JjMDBiNzY4Zjc3OGQuLmU1ZThhNTM5NjkxYWFkZTBjM2QwNjJjY2RkNWQxYTU2YWVh
ZTExMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2UuaApAQCAtNDAsNyArNDAsNiBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIElE
QkNhbGxiYWNrczsKIGNsYXNzIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTsKIGNsYXNz
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTsKLWNsYXNzIElEQlRyYW5zYWN0aW9uQ2Fs
bGJhY2tzOwogCiAvLyBUaGlzIGNsYXNzIGlzIHNoYXJlZCBieSBJREJEYXRhYmFzZSAoYXN5bmMp
IGFuZCBJREJEYXRhYmFzZVN5bmMgKHN5bmMpLgogLy8gVGhpcyBpcyBpbXBsZW1lbnRlZCBieSBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsIGFuZCBvcHRpb25hbGx5IG90aGVycyAoaW4gb3JkZXIgdG8g
cHJveHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tl
bmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBs
LmNwcAppbmRleCAwZTg4M2NmZTJlNDU2NDc4NmY5NDIyMWY4NGNmYTU1YjMyZDE3N2I5Li4zNzJk
NTRjNzg5MWNlNDE3MGMwMzdkOGNiZDIyYmM0OWIyM2I0ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCkBAIC0yMTMsNiArMjEzLDcg
QEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2EKICAgICBTdHJpbmcgdW5pcXVlSWRlbnRpZmllciA9
IGZpbGVJZGVudGlmaWVyICsgIkAiICsgbmFtZTsKICAgICBJREJEYXRhYmFzZUJhY2tlbmRNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZmluZCh1bmlxdWVJZGVudGlmaWVy
KTsKICAgICBpZiAoaXQgIT0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZW5kKCkpIHsKKyAgICAgICAg
aXQtPnNlY29uZC0+b3BlbigpOwogICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhpdC0+c2Vj
b25kKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIzNSw2ICsyMzYsNyBAQCB2b2lkIElE
QkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYQogICAgIH0KIAogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsPiBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFt
ZSwgc3FsaXRlRGF0YWJhc2UuZ2V0KCksIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQoKSwg
dGhpcywgdW5pcXVlSWRlbnRpZmllcik7CisgICAgZGF0YWJhc2VCYWNrZW5kLT5vcGVuKCk7CiAg
ICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoZGF0YWJhc2VCYWNrZW5kLmdldCgpKTsKICAgICBtX2Rh
dGFiYXNlQmFja2VuZE1hcC5zZXQodW5pcXVlSWRlbnRpZmllciwgZGF0YWJhc2VCYWNrZW5kLmdl
dCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCmluZGV4IDE1Nzg0NmQ5
ZTgxYjdkNmRhMWE0Y2NmNGY4YWQ4MmYwZDZhZTNiYTMuLjUwYjU3Y2U1OWI5MGVjNTIxNDBjYzhl
ZmExZjRkOWM4NzYyZTZiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcApA
QCAtMzUsMTAgKzM1LDExIEBACiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKICNpbmNsdWRl
ICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIklE
QkJsb2NrZWRFdmVudC5oIgogI2luY2x1ZGUgIklEQkN1cnNvci5oIgogI2luY2x1ZGUgIklEQkRh
dGFiYXNlLmgiCi0jaW5jbHVkZSAiSURCSW5kZXguaCIKICNpbmNsdWRlICJJREJFcnJvckV2ZW50
LmgiCisjaW5jbHVkZSAiSURCSW5kZXguaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgog
I2luY2x1ZGUgIklEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCIKICNpbmNsdWRlICJJREJT
dWNjZXNzRXZlbnQuaCIKQEAgLTExOSw2ICsxMjAsMTEgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRW
YWwKICAgICBzY2hlZHVsZUV2ZW50KElEQkFueTo6Y3JlYXRlKHNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSksIDApOwogfQogCit2b2lkIElEQlJlcXVlc3Q6Om9uQmxvY2tlZCgpCit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIElEQlJlcXVlc3Q6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBBY3RpdmVET01P
YmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTE2Niw5ICsxNzIsMTEgQEAgdm9p
ZCBJREJSZXF1ZXN0Ojp0aW1lckZpcmVkKFRpbWVyPElEQlJlcXVlc3Q+KikKICAgICAgICAgaWYg
KHBlbmRpbmdFdmVudHNbaV0ubV9lcnJvcikgewogICAgICAgICAgICAgQVNTRVJUKCFwZW5kaW5n
RXZlbnRzW2ldLm1fcmVzdWx0KTsKICAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQoSURCRXJyb3JF
dmVudDo6Y3JlYXRlKG1fc291cmNlLCAqcGVuZGluZ0V2ZW50c1tpXS5tX2Vycm9yKSk7Ci0gICAg
ICAgIH0gZWxzZSB7CisgICAgICAgIH0gZWxzZSBpZiAocGVuZGluZ0V2ZW50c1tpXS5tX3Jlc3Vs
dCkgewogICAgICAgICAgICAgQVNTRVJUKHBlbmRpbmdFdmVudHNbaV0ubV9yZXN1bHQtPnR5cGUo
KSAhPSBJREJBbnk6OlVuZGVmaW5lZFR5cGUpOwogICAgICAgICAgICAgZGlzcGF0Y2hFdmVudChJ
REJTdWNjZXNzRXZlbnQ6OmNyZWF0ZShtX3NvdXJjZSwgcGVuZGluZ0V2ZW50c1tpXS5tX3Jlc3Vs
dCkpOworICAgICAgICB9IGVsc2UgaWYgKHBlbmRpbmdFdmVudHNbaV0ubV9ibG9ja2VkKSB7Cisg
ICAgICAgICAgICBkaXNwYXRjaEV2ZW50KElEQkJsb2NrZWRFdmVudDo6Y3JlYXRlKG1fc291cmNl
KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHRyYW5zYWN0aW9uKSB7CkBAIC0xNzksMTQg
KzE4NywyNSBAQCB2b2lkIElEQlJlcXVlc3Q6OnRpbWVyRmlyZWQoVGltZXI8SURCUmVxdWVzdD4q
KQogICAgIH0KIH0KIAordm9pZCBJREJSZXF1ZXN0OjpzY2hlZHVsZUJsb2NrZWRFdmVudCgpCit7
CisgICAgc2NoZWR1bGVFdmVudCgwLypyZXN1bHQqLywgMC8qZXJyb3IqLywgdHJ1ZS8qYmxvY2tl
ZCovKTsKK30KKwogdm9pZCBJREJSZXF1ZXN0OjpzY2hlZHVsZUV2ZW50KFBhc3NSZWZQdHI8SURC
QW55PiByZXN1bHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IpCiB7CisgICAg
c2NoZWR1bGVFdmVudChyZXN1bHQsIGVycm9yLCBmYWxzZS8qYmxvY2tlZCovKTsKK30KKwordm9p
ZCBJREJSZXF1ZXN0OjpzY2hlZHVsZUV2ZW50KFBhc3NSZWZQdHI8SURCQW55PiByZXN1bHQsIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IsIGJvb2wgYmxvY2tlZCkKK3sKICAgICBB
U1NFUlQobV9yZWFkeVN0YXRlIDwgRE9ORSk7CiAgICAgQVNTRVJUKCEhbV9zZWxmUmVmID09IG1f
dGltZXIuaXNBY3RpdmUoKSk7CiAKICAgICBQZW5kaW5nRXZlbnQgcGVuZGluZ0V2ZW50OwogICAg
IHBlbmRpbmdFdmVudC5tX3Jlc3VsdCA9IHJlc3VsdDsKICAgICBwZW5kaW5nRXZlbnQubV9lcnJv
ciA9IGVycm9yOworICAgIHBlbmRpbmdFdmVudC5tX2Jsb2NrZWQgPSBibG9ja2VkOwogICAgIG1f
cGVuZGluZ0V2ZW50cy5hcHBlbmQocGVuZGluZ0V2ZW50KTsKIAogICAgIG1fcmVhZHlTdGF0ZSA9
IERPTkU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCmluZGV4IDU0ODgwMGRiZDI5Y2Nm
YjRiMTg2NGZjMGMzZWY3MDE3MzFjYjkyOWYuLmM2ZDIxNGJhYmFmMTJhY2EzYTFlNTMyMzUyYzJm
M2EyM2ZlNjQ5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCkBAIC02OSw2ICs2
OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCk7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIHZp
cnR1YWwgSURCUmVxdWVzdCogdG9JREJSZXF1ZXN0KCkgeyByZXR1cm4gdGhpczsgfQpAQCAtODAs
MTEgKzgxLDEzIEBAIHB1YmxpYzoKICAgICB1c2luZyBUaHJlYWRTYWZlU2hhcmVkPElEQkNhbGxi
YWNrcz46OnJlZjsKICAgICB1c2luZyBUaHJlYWRTYWZlU2hhcmVkPElEQkNhbGxiYWNrcz46OmRl
cmVmOwogCi1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIElEQlJlcXVlc3QoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24pOwotCisgICAgdm9pZCBzY2hlZHVsZUJsb2NrZWRF
dmVudCgpOworcHJpdmF0ZToKICAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8SURCUmVxdWVzdD4q
KTsKICAgICB2b2lkIHNjaGVkdWxlRXZlbnQoUGFzc1JlZlB0cjxJREJBbnk+IHJlc3VsdCwgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik7CisgICAgdm9pZCBzY2hlZHVsZUV2ZW50KFBhc3NS
ZWZQdHI8SURCQW55PiByZXN1bHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4sIGJvb2wg
YmxvY2tlZCk7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIHZpcnR1YWwgdm9pZCByZWZFdmVu
dFRhcmdldCgpIHsgcmVmKCk7IH0KQEAgLTk4LDYgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgc3Ry
dWN0IFBlbmRpbmdFdmVudCB7CiAgICAgICAgIFJlZlB0cjxJREJBbnk+IG1fcmVzdWx0OwogICAg
ICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gbV9lcnJvcjsKKyAgICAgICAgYm9vbCBtX2Js
b2NrZWQ7CiAgICAgfTsKICAgICBWZWN0b3I8UGVuZGluZ0V2ZW50PiBtX3BlbmRpbmdFdmVudHM7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVz
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODExN2I2YjUwYTdmZTA3YWVjYTdjMWQxYjI3ZDQ0NmViY2Q5NmNk
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNo
YW5nZVJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaCIKKworI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpJREJWZXJz
aW9uQ2hhbmdlUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UHRyPElEQkFueT4gc291cmNlKQorICAgIDogSURCUmVxdWVzdChjb250ZXh0LCBzb3VyY2UsIDAp
Cit7Cit9CisKK0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Ojp+SURCVmVyc2lvbkNoYW5nZVJlcXVl
c3QoKQoreworfQorCit2b2lkIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpvbkJsb2NrZWQoKQor
eworICAgIHNjaGVkdWxlQmxvY2tlZEV2ZW50KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNp
b25DaGFuZ2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFu
Z2VSZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc4Y2Q5MzkzMDk2MDhkMzUzNWE5ODYzYTcyMGZmNTI0
YjVhZTEwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVy
c2lvbkNoYW5nZVJlcXVlc3QuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJW
ZXJzaW9uQ2hhbmdlUmVxdWVzdF9oCisjZGVmaW5lIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0X2gK
KworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCUmVxdWVzdC5o
IgorI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTsKKwor
Y2xhc3MgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QgOiBwdWJsaWMgSURCUmVxdWVzdCB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291
cmNlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QoY29udGV4
dCwgc291cmNlKSk7IH0KKyAgICB2aXJ0dWFsIH5JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCgpOwor
ICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKTsKKworICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoYmxvY2tlZCk7CisKK3ByaXZhdGU6CisgICAgSURCVmVyc2lvbkNoYW5nZVJl
cXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2Up
OworCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIElEQlJlcXVlc3RfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
ZmFjNzM1NDcwYTJhOWIwMGQyZDQ5YTc4NmVmMTc2YmM5YTk3YTM0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5pZGwKQEAg
LTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBzdG9yYWdlIHsKKworICAgIGludGVyZmFjZSBb
CisgICAgICAgIENvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UsCisgICAgICAgIEV2ZW50VGFy
Z2V0CisgICAgXSBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCA6IElEQlJlcXVlc3QgeworICAgICAg
ICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmJsb2NrZWQ7CisgICAgfTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggMDM3ODJiNTFlODYwOTI3NWYxZGEwOTYzODRjNDhiOWM2NzZm
MjQ5Yy4uZDBjMjc3Y2U5MWUyMGQwNTc5Mjc1ZTkzNjlmZjFiYzhlZTY0YzNmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0wMi0wMyAgRGF2aWQgR3Jv
Z2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaW5kZXhlZGRiOiBtYWtlIHNldFZlcnNpb24gZmlyZSBibG9j
a2VkIGV2ZW50IGlmIG90aGVyIGNvbm5lY3Rpb25zIGFyZSBvcGVuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzcyOAorCisgICAgICAgICogc3JjL0lE
QkNhbGxiYWNrc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNhbGxiYWNrc1Byb3h5
OjpvbkJsb2NrZWQpOgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5oOgorICAgICAg
ICAqIHNyYy9JREJEYXRhYmFzZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlUHJveHk6OmNsb3NlKToKKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VQcm94eS5oOgorICAg
ICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJEYXRhYmFzZUltcGw6OmNsb3NlKToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBs
Lmg6CisKIDIwMTEtMDEtMjcgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsIHdlYmtpdCBjaHJvbWl1bSByZXYgZnJvbSA3MjY3MyB0byA3Mjg5
NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxi
YWNrcy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmgK
aW5kZXggZjJjNWYzMzIyMmU4MmFhZjAwMDJiY2Y0MTViNmY0ZTc1YTk4ZjdjYy4uZDI0YzBhNjA1
MTMxNTU2ZmI3ZTFiM2VmNzY5ZDBlOTFiM2QwODExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmgKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViSURCT2JqZWN0U3RvcmUqKSB7IFdFQktJ
VF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2Vi
SURCVHJhbnNhY3Rpb24qKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZp
cnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJikgeyBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2Vk
KCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJh
Y2tzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJv
eHkuY3BwCmluZGV4IDY5MWZiNzUzNzZjYmI3MWE0ZWQ2MTFlMDBiYjJhYTA2NzdhMjYyOWUuLjVh
OWE2ZmRkM2RmNmU0NDNkZjIxZjU0NWU0NjI3MTdjYmYzODU0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKQEAgLTEwNyw2ICsxMDcs
MTEgQEAgdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2MKICAgICBtX2NhbGxiYWNrcy5jbGVhcigpOwog
fQogCit2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvbkJsb2NrZWQoKQoreworICAgIG1fY2FsbGJh
Y2tzLT5vbkJsb2NrZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCQ2FsbGJhY2tzUHJveHkuaAppbmRleCBlMWRiMjNkNDM5ZjZhYTVmNzY4NjhhMDI3NzRm
NjlkOTAwNWMwNzhmLi43ZGVkOGVhZTRlMzI4MDVkYTE0NDMzODc3ZjVkNzUzMDI4MWJiMzNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKQEAg
LTU1LDYgKzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAg
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4pOworICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKTsKIAogcHJpdmF0ZToKICAgICBJREJD
YWxsYmFja3NQcm94eShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCQ2FsbGJhY2tzPik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCmlu
ZGV4IGJiN2ExOWJjZjIxOWNmMjA1M2M4YzdkMDU0ZDBhOTBkYWNlZTEzZTcuLjU3MDNmMjdjOTg3
MzRmNzcxNmMyZjRiZmI3NmU2MDRlYzQxMjJkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCkBAIC05Niw2ICs5NiwxMSBAQCB2
b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vzcyhjb25zdCBXZWJLaXQ6OldlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaQogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moc2VyaWFs
aXplZFNjcmlwdFZhbHVlKTsKIH0KIAordm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvbkJsb2Nr
ZWQoKQoreworICAgIG1fY2FsbGJhY2tzLT5vbkJsb2NrZWQoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgKaW5kZXggZDJh
ZTI1NTYyOWZiYTAxODE4NTQ3MmU5MWJiNjYxYWIyMmIzMzc4Yi4uMWU3NmRlY2YxOTA5YmRjNzUz
YzFiMjIyZmNhNWJhYzhjZGJkYzFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlKik7CiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uKik7CiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJLaXQ6OldlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSYpOworICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKTsKIAogcHJpdmF0ZToKICAgICBS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81862</attachid>
            <date>2011-02-09 13:26:03 -0800</date>
            <delta_ts>2011-02-11 15:40:41 -0800</delta_ts>
            <desc>obsoleted patch 2</desc>
            <filename>bug-53728-20110209132602.patch</filename>
            <type>text/plain</type>
            <size>47165</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmYjNiZjY1NDhjNjAxMmNmYjJhM2MwYzEyOTU4NDM3ZmRlNjU2YThhLi41MTg2Yzc5
NWUyMTk0ZGFjODI3MjEzNGE0Mjg1YTAzZTJjNWMzYzA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTEtMDItMDkgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGluZGV4ZWRkYjogbWFr
ZSBzZXRWZXJzaW9uIGZpcmUgYmxvY2tlZCBldmVudCBpZiBvdGhlciBjb25uZWN0aW9ucyBhcmUg
b3BlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3
MjgKKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanM6Cisg
ICAgICAgICh1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrKToKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2VkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fYmxvY2tlZC5odG1sOiBBZGRlZC4KKwog
MjAxMS0wMi0wOSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgQ29udGludWUgaW1wb3J0aW5nIG5ldyBHVEsrIHJlc3VsdHMgZm9yIHRlc3RzIGluIHRo
ZSBmYXN0IGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9zaGFyZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvc2hhcmVkLmpzCmluZGV4IDhjNTY4MzIxMGRiY2NlNDlmOTgyZGEzM2Y3ZGJkOWQ5
OTI3YWJhM2QuLjA4NWRiMmU2MmMxYTVhZGZjZDRkZjk5NWZiZDMyNzQzY2JhM2JmMjMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanMK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcwpA
QCAtODcsNiArODcsMTEgQEAgZnVuY3Rpb24gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2soKQog
ICAgIGRvbmUoKTsKIH0KIAorZnVuY3Rpb24gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjaygpCit7
CisgICAgdGVzdEZhaWxlZCgib25ibG9ja2VkIGNhbGxlZCB1bmV4cGVjdGVkbHkiKTsKK30KKwog
ZnVuY3Rpb24gZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbihjbWQsIGV4cGVjdGVkKQogewogICAgIGRl
YnVnKCJFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gIiArIGNtZCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2VkLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX2Jsb2NrZWQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlM2VjMGJmMGIxYzZlYzM3NTRlMzc0NGEwZjIwMDVmMmY4
MTU0NDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9z
ZXRfdmVyc2lvbl9ibG9ja2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDk3IEBACitUZXN0IHRo
YXQgYW4gb3BlbiBjb25uZWN0aW9uIGJsb2NrcyBhIHNlcGFyYXRlIGNvbm5lY3Rpb24ncyBzZXRW
ZXJzaW9uIGNhbGwKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgSW5kZXhl
ZERCID09IG51bGwgaXMgZmFsc2UKK3dlYmtpdEluZGV4ZWREQi5vcGVuKCdzb21lIGRiIG5hbWUn
KQorUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4g
cmVzdWx0IGlzIHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCitBbiBl
dmVudCBzaG91bGQgZmlyZSBzaG9ydGx5Li4uCisKK2luIG9wZW5TdWNjZXNzCitTdWNjZXNzIGV2
ZW50IGZpcmVkOgorUEFTUyAncmVzdWx0JyBpbiBldmVudCBpcyB0cnVlCitQQVNTICdjb2RlJyBp
biBldmVudCBpcyBmYWxzZQorUEFTUyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1Mg
J3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0
cnVlCitQQVNTICdvbnN1Y2Nlc3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdvbmVy
cm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQu
dGFyZ2V0IGlzIHRydWUKK1BBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFy
Z2V0LkRPTkUKKworY29ubmVjdGlvbiA9IGV2ZW50LnJlc3VsdAord2Via2l0SW5kZXhlZERCLm9w
ZW4oJ3NvbWUgZGIgbmFtZScpCitQQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCitQ
QVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVz
dWx0IGlzIHRydWUKK0FuIGV2ZW50IHNob3VsZCBmaXJlIHNob3J0bHkuLi4KKworaW4gb3BlblN1
Y2Nlc3MKK1N1Y2Nlc3MgZXZlbnQgZmlyZWQ6CitQQVNTICdyZXN1bHQnIGluIGV2ZW50IGlzIHRy
dWUKK1BBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdtZXNzYWdlJyBpbiBldmVu
dCBpcyBmYWxzZQorUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVlCitQQVNTIGV2ZW50LnNv
dXJjZSAhPSBudWxsIGlzIHRydWUKK1BBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQudGFyZ2V0IGlz
IHRydWUKK1BBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdyZWFk
eVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyBldmVudC50YXJnZXQucmVhZHlT
dGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQorCitjb25uZWN0aW9uID0gZXZlbnQucmVzdWx0Cit3
ZWJraXRJbmRleGVkREIub3Blbignc29tZSBkYiBuYW1lJykKK1BBU1MgJ29uc3VjY2VzcycgaW4g
cmVzdWx0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCitQQVNTICdy
ZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQorQW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hvcnRs
eS4uLgorCitpbiBvcGVuU3VjY2VzcworU3VjY2VzcyBldmVudCBmaXJlZDoKK1BBU1MgJ3Jlc3Vs
dCcgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1Mg
J21lc3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRy
dWUKK1BBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAnb25zdWNjZXNzJyBp
biBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlz
IHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTIGV2
ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCisKK2Nvbm5lY3Rpb24g
PSBldmVudC5yZXN1bHQKKworcmVzdWx0ID0gY29ubmVjdGlvbnNbMF0uc2V0VmVyc2lvbigndmVy
c2lvbiAxJykKK1BBU1MgZXZlbnQudmVyc2lvbiBpcyAidmVyc2lvbiAxIgorZ290IGJsb2NrZWQg
ZXZlbnQgIzEKK2Nvbm5lY3Rpb24uY2xvc2UoKQorCityZXN1bHQgPSBjb25uZWN0aW9uc1swXS5z
ZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKQorUEFTUyBldmVudC52ZXJzaW9uIGlzICJ2ZXJzaW9uIDEi
Citnb3QgYmxvY2tlZCBldmVudCAjMgorY29ubmVjdGlvbi5jbG9zZSgpCisKK3Jlc3VsdCA9IGNv
bm5lY3Rpb25zWzBdLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpCitQQVNTIGV2ZW50LnZlcnNpb24g
aXMgInZlcnNpb24gMSIKK2dvdCBibG9ja2VkIGV2ZW50ICMzCitjb25uZWN0aW9uLmNsb3NlKCkK
KworcmVzdWx0ID0gY29ubmVjdGlvbnNbMF0uc2V0VmVyc2lvbigndmVyc2lvbiAxJykKK2luIGlu
U2V0VmVyc2lvbgorU3VjY2VzcyBldmVudCBmaXJlZDoKK1BBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQg
aXMgdHJ1ZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ21lc3NhZ2UnIGlu
IGV2ZW50IGlzIGZhbHNlCitQQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUKK1BBU1MgZXZl
bnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAnb25zdWNjZXNzJyBpbiBldmVudC50YXJn
ZXQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1Mg
J3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTIGV2ZW50LnRhcmdldC5y
ZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCisKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9y
ZXMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fYmxv
Y2tlZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fYmxv
Y2tlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmM2NiMzc1YzZkYTQ1MTZiZTBjYWFmZDEwMjY4ZDk4ZGI3
ZTdiYzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9z
ZXRfdmVyc2lvbl9ibG9ja2VkLmh0bWwKQEAgLTAsMCArMSw5MyBAQAorPGh0bWw+DQorPGhlYWQ+
DQorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyI+DQorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4NCis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4NCis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+DQorPC9oZWFkPg0KKzxib2R5Pg0KKzxw
IGlkPSJkZXNjcmlwdGlvbiI+PC9wPg0KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pg0KKzxzY3Jp
cHQ+DQorDQorZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBhbiBvcGVuIGNvbm5lY3Rpb24gYmxvY2tz
IGEgc2VwYXJhdGUgY29ubmVjdGlvbidzIHNldFZlcnNpb24gY2FsbCIpOw0KK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpDQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsNCisNCitjb25uZWN0aW9ucyA9IFtdDQorZnVuY3Rpb24gdGVzdCgpDQorew0KKyAg
ICBpZiAoJ3dlYmtpdEluZGV4ZWREQicgaW4gd2luZG93KQ0KKyAgICAgICAgSW5kZXhlZERCID0g
d2Via2l0SW5kZXhlZERCOw0KKyAgICBlbHNlIGlmICgnbW96SW5kZXhlZERCJyBpbiB3aW5kb3cp
DQorICAgICAgICBJbmRleGVkREIgPSBtb3pJbmRleGVkREI7DQorICAgIHNob3VsZEJlRmFsc2Uo
IkluZGV4ZWREQiA9PSBudWxsIik7DQorICAgIG9wZW5EQkNvbm5lY3Rpb24oKTsNCit9DQorDQor
ZnVuY3Rpb24gb3BlbkRCQ29ubmVjdGlvbigpDQorew0KKyAgICByZXN1bHQgPSBldmFsQW5kTG9n
KCJ3ZWJraXRJbmRleGVkREIub3Blbignc29tZSBkYiBuYW1lJykiKTsNCisgICAgdmVyaWZ5UmVz
dWx0KHJlc3VsdCk7DQorICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsNCisgICAg
cmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCisgIH0NCisNCitmdW5j
dGlvbiBvcGVuU3VjY2VzcygpDQorew0KKyAgICBkZWJ1ZygiaW4gb3BlblN1Y2Nlc3MiKTsNCisg
ICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsNCisgICAgY29ubmVjdGlvbiA9IGV2YWxBbmRM
b2coImNvbm5lY3Rpb24gPSBldmVudC5yZXN1bHQiKTsNCisgICAgY29ubmVjdGlvbnMucHVzaChj
b25uZWN0aW9uKTsNCisgICAgaWYgKGNvbm5lY3Rpb25zLmxlbmd0aCA8IDMpIHsNCisgICAgICAg
IG9wZW5EQkNvbm5lY3Rpb24oKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHNldFZlcnNpb24o
MCk7DQorICAgIH0NCit9DQorDQorZnVuY3Rpb24gc2V0VmVyc2lvbihudW1fYmxvY2tlZF9ldmVu
dHMpDQorew0KKyAgICBkZWJ1ZygiIik7DQorICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3Vs
dCA9IGNvbm5lY3Rpb25zWzBdLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7DQorICAgIHJlc3Vs
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQorICAgIGlmIChudW1fYmxvY2tl
ZF9ldmVudHMgPCAzKSB7DQorICAgICAgICByZXN1bHQub25zdWNjZXNzID0gdW5leHBlY3RlZFN1
Y2Nlc3NDYWxsYmFjazsNCisgICAgICAgIHJlc3VsdC5vbmJsb2NrZWQgPSBmdW5jdGlvbigpIHsg
YmxvY2tlZCgrK251bV9ibG9ja2VkX2V2ZW50cykgfTsNCisgICAgfSBlbHNlIGlmIChudW1fYmxv
Y2tlZF9ldmVudHMgPT0gMykgew0KKyAgICAgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGluU2V0VmVy
c2lvbjsNCisgICAgICAgIHJlc3VsdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxi
YWNrOw0KKyAgICB9DQorfQ0KKw0KKy8vIFRyeSAxOiBDbG9zZSBhIGNvbm5lY3Rpb24uDQorLy8g
VHJ5IDI6IENsb3NpbmcgdGhlIHNhbWUgY29ubmVjdGlvbiBzaG91bGQgaGF2ZSBubyBlZmZlY3Qu
DQorLy8gVHJ5IDM6IENsb3NlIHRoZSBsYXN0IGJsb2NraW5nIGNvbm5lY3Rpb24uDQorZnVuY3Rp
b24gYmxvY2tlZChudW1fYmxvY2tlZF9ldmVudHMpDQorew0KKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImV2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAxIik7DQorICAgIGRlYnVnKCJnb3QgYmxv
Y2tlZCBldmVudCAjIiArIG51bV9ibG9ja2VkX2V2ZW50cyk7DQorICAgIGlmIChudW1fYmxvY2tl
ZF9ldmVudHMgPT0gMSkNCisgICAgICAgIGNvbm5lY3Rpb24gPSBjb25uZWN0aW9uc1syXTsNCisg
ICAgZWxzZSBpZiAobnVtX2Jsb2NrZWRfZXZlbnRzIDwgNCkNCisgICAgICAgIGNvbm5lY3Rpb24g
PSBjb25uZWN0aW9ucy5wb3AoKTsNCisgICAgZWxzZQ0KKyAgICAgICAgZmFpbCgidG9vIG1hbnkg
YmxvY2tlZCgpIGNhbGxzOiAiICsgbnVtX2Jsb2NrZWRfZXZlbnRzKTsNCisgICAgZXZhbEFuZExv
ZygiY29ubmVjdGlvbi5jbG9zZSgpIik7DQorICAgIHNldFZlcnNpb24obnVtX2Jsb2NrZWRfZXZl
bnRzKTsNCit9DQorDQorZnVuY3Rpb24gaW5TZXRWZXJzaW9uKCkNCit7DQorICAgIGRlYnVnKCJp
biBpblNldFZlcnNpb24iKTsNCisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsNCisgICAg
ZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGNvbm5lY3Rpb25zWzBdLCBkb25lKTsNCit9DQorDQordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7DQorDQordGVzdCgpOw0KKw0KKzwvc2NyaXB0Pg0K
KzwvYm9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDUwYjEzN2U4MDhjYjFkY2RhYzEyMjVm
ZmU1ZmFkNDY4ZGVhNjkwOTAuLjkxYzBlNTRlZDY0Nzc5MmI0NGE5M2ZmYTIxNjliOTE4OGEzZmUy
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAxMS0wMi0wOSAgRGF2aWQgR3JvZ2Fu
ICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgaW5kZXhlZGRiOiBtYWtlIHNldFZlcnNpb24gZmlyZSBibG9ja2Vk
IGV2ZW50IGlmIG90aGVyIGNvbm5lY3Rpb25zIGFyZSBvcGVuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzcyOAorCisgICAgICAgIFRlc3Q6IHN0b3Jh
Z2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX2Jsb2NrZWQuaHRtbAorCisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9W
OCk6CisgICAgICAgICogZG9tL0V2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50Ojpp
c0lEQkJsb2NrZWRFdmVudCk6CisgICAgICAgICogZG9tL0V2ZW50Lmg6CisgICAgICAgICogZG9t
L0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRUYXJnZXQ6OnRvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QpOgorICAgICAg
ICAqIGRvbS9FdmVudFRhcmdldC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCQmxvY2tlZEV2ZW50
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJh
Y2tzSW1wbC5oLgorICAgICAgICAoV2ViQ29yZTo6SURCQmxvY2tlZEV2ZW50OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCQmxvY2tlZEV2ZW50OjpJREJCbG9ja2VkRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQmxvY2tlZEV2ZW50Ojp+SURCQmxvY2tlZEV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkJsb2NrZWRFdmVudDo6dmVyc2lvbik6CisgICAgICAgICogc3RvcmFn
ZS9JREJCbG9ja2VkRXZlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oLgorICAgICAgICAoV2ViQ29yZTo6SURCQmxvY2tlZEV2
ZW50Ojppc0lEQkJsb2NrZWRFdmVudCk6CisgICAgICAgICogc3RvcmFnZS9JREJCbG9ja2VkRXZl
bnQuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL0lEQkNhbGxiYWNrcy5oOgorICAgICAg
ICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6On5JREJEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6c2V0VmVy
c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2U6OnN0b3ApOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJh
c2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmlkbDoKKyAgICAgICAgKiBzdG9y
YWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UpOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKToKKyAgICAgICAg
KiBzdG9yYWdlL0lEQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6
b25CbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6c291cmNlKToKKyAgICAgICAgKiBzdG9y
YWdlL0lEQlJlcXVlc3QuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1
ZXN0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2Fs
bGJhY2tzSW1wbC5oLgorICAgICAgICAoV2ViQ29yZTo6SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDo6SURC
VmVyc2lvbkNoYW5nZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCVmVyc2lvbkNoYW5n
ZVJlcXVlc3Q6On5JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJWZXJzaW9uQ2hhbmdlUmVxdWVzdDo6b25CbG9ja2VkKToKKyAgICAgICAgKiBzdG9yYWdlL0lE
QlZlcnNpb25DaGFuZ2VSZXF1ZXN0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaC4KKyAgICAgICAgKiBzdG9yYWdlL0lEQlZlcnNp
b25DaGFuZ2VSZXF1ZXN0LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oLgorCiAyMDExLTAyLTA5ICBOYW9raSBUYWthbm8gIDx0
YWthbm8ubmFva2lAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVz
c2VsbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAzNzQxMWUwYTQxYTkwZTEyYjYzMmNiYzI1MDVkNjFj
OWI1YWJmMThhLi5hOGFkYmE0MGI4NzliMDM1NjY4YmY5OTI1OWI3ZmIzZGQ0Y2RiNmY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0yNzIsNiArMjcyLDcgQEAKICAgICAgICAgICAgICdzdG9yYWdlL0Rh
dGFiYXNlQ2FsbGJhY2suaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlU3luYy5p
ZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCQW55LmlkbCcsCisgICAgICAgICAgICAnc3Rv
cmFnZS9JREJCbG9ja2VkRXZlbnQuaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQkN1cnNv
ci5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCRGF0YWJhc2VFcnJvci5pZGwnLAogICAg
ICAgICAgICAgJ3N0b3JhZ2UvSURCRGF0YWJhc2VFeGNlcHRpb24uaWRsJywKQEAgLTI4Niw2ICsy
ODcsNyBAQAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCUmVxdWVzdC5pZGwnLAogICAgICAgICAg
ICAgJ3N0b3JhZ2UvSURCU3VjY2Vzc0V2ZW50LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9J
REJUcmFuc2FjdGlvbi5pZGwnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5n
ZVJlcXVlc3QuaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL1NRTEVycm9yLmlkbCcsCiAgICAg
ICAgICAgICAnc3RvcmFnZS9TUUxFeGNlcHRpb24uaWRsJywKICAgICAgICAgICAgICdzdG9yYWdl
L1NRTFJlc3VsdFNldC5pZGwnLApAQCAtNDAxOCw2ICs0MDIwLDggQEAKICAgICAgICAgICAgICdz
dG9yYWdlL0lEQkFib3J0RXZlbnQuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJBbnkuY3Bw
JywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQkFueS5oJywKKyAgICAgICAgICAgICdzdG9yYWdl
L0lEQkJsb2NrZWRFdmVudC5jcHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvSURCQmxvY2tlZEV2
ZW50LmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgnLAogICAgICAgICAg
ICAgJ3N0b3JhZ2UvSURCQ29tcGxldGVFdmVudC5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2Uv
SURCQ29tcGxldGVFdmVudC5oJywKQEAgLTQwNzcsNiArNDA4MSw4IEBACiAgICAgICAgICAgICAn
c3RvcmFnZS9JREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oJywKICAgICAgICAgICAgICdzdG9yYWdl
L0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL0lE
QlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCcsCisgICAgICAgICAgICAnc3RvcmFnZS9JREJWZXJz
aW9uQ2hhbmdlUmVxdWVzdC5jcHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvSURCVmVyc2lvbkNo
YW5nZVJlcXVlc3QuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUYXNrLmNw
cCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUYXNrLmgnLAogICAgICAgICAg
ICAgJ3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnByaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCmluZGV4IDQz
ZWE0ODNiOTE2ZDc2MDVkNGQ2MDE4MjQ2NDEyZTUyYzRhYTUxODMuLjNkOGNiMGIyNTNiN2M4ZGFl
MGYxOGYzNmE0ODY1MGFkZDcyZGE3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCkBAIC0zMzUsNiArMzM1LDcg
QEAgSURMX0JJTkRJTkdTICs9IFwKICAgICBzdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaWRsIFwK
ICAgICBzdG9yYWdlL0RhdGFiYXNlU3luYy5pZGwgXAogICAgIHN0b3JhZ2UvSURCQW55LmlkbCBc
CisgICAgc3RvcmFnZS9JREJCbG9ja2VkRXZlbnQuaWRsIFwKICAgICBzdG9yYWdlL0lEQkN1cnNv
ci5pZGwgXAogICAgIHN0b3JhZ2UvSURCRGF0YWJhc2VFcnJvci5pZGwgXAogICAgIHN0b3JhZ2Uv
SURCRGF0YWJhc2VFeGNlcHRpb24uaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudEN1c3RvbS5jcHAKaW5kZXggZmQ4MDM2MGE3M2JlZTYyMTcxZTMyOTE2ZTA0MzZmMzVm
YTI1OGQxNi4uN2ExYmFlMWU0ZDAxZDYxMDBhOTg3ZjQ2MTkwNGEyZmVkNGU0M2YwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAKQEAgLTk0LDggKzk0
LDEwIEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2luY2x1ZGUg
IklEQkJsb2NrZWRFdmVudC5oIgogI2luY2x1ZGUgIklEQkVycm9yRXZlbnQuaCIKICNpbmNsdWRl
ICJJREJTdWNjZXNzRXZlbnQuaCIKKyNpbmNsdWRlICJKU0lEQkJsb2NrZWRFdmVudC5oIgogI2lu
Y2x1ZGUgIkpTSURCRXJyb3JFdmVudC5oIgogI2luY2x1ZGUgIkpTSURCU3VjY2Vzc0V2ZW50Lmgi
CiAjZW5kaWYKQEAgLTE2Niw2ICsxNjgsOCBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVj
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFdmVudCogZXZlbnQpCiAgICAgICAg
IHdyYXBwZXIgPSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwg
U3RvcmFnZUV2ZW50LCBldmVudCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKKyAgICBlbHNlIGlmIChldmVudC0+aXNJREJCbG9ja2VkRXZlbnQoKSkKKyAgICAgICAgd3Jh
cHBlciA9IENSRUFURV9ET01fT0JKRUNUX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBJREJC
bG9ja2VkRXZlbnQsIGV2ZW50KTsKICAgICBlbHNlIGlmIChldmVudC0+aXNJREJFcnJvckV2ZW50
KCkpCiAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGds
b2JhbE9iamVjdCwgSURCRXJyb3JFdmVudCwgZXZlbnQpOwogICAgIGVsc2UgaWYgKGV2ZW50LT5p
c0lEQlN1Y2Nlc3NFdmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwCmluZGV4IGZmOWI5OGIyMzFlNGU1YjEyM2IxNWUxNWE4
ZDUzODQxNTRkYTZlMTYuLmQ0Mzg3ZGI4MmE5YzhiMmI1MmJhYzk4OGFhOTNlMDUwOTYzMTVkZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudEN1
c3RvbS5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJWOERldmljZU9yaWVudGF0aW9u
RXZlbnQuaCIKICNpbmNsdWRlICJWOEVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJWOEhhc2hDaGFu
Z2VFdmVudC5oIgorI2luY2x1ZGUgIlY4SURCQmxvY2tlZEV2ZW50LmgiCiAjaW5jbHVkZSAiVjhJ
REJFcnJvckV2ZW50LmgiCiAjaW5jbHVkZSAiVjhJREJTdWNjZXNzRXZlbnQuaCIKICNpbmNsdWRl
ICJWOEtleWJvYXJkRXZlbnQuaCIKQEAgLTE1Niw2ICsxNTcsOCBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdG9WOChFdmVudCogaW1wbCkKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8
U3RvcmFnZUV2ZW50Kj4oaW1wbCkpOwogI2VuZGlmCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCisgICAgaWYgKGltcGwtPmlzSURCQmxvY2tlZEV2ZW50KCkpCisgICAgICAgIHJldHVybiB0
b1Y4KHN0YXRpY19jYXN0PElEQkJsb2NrZWRFdmVudCo+KGltcGwpKTsKICAgICBpZiAoaW1wbC0+
aXNJREJFcnJvckV2ZW50KCkpCiAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PElEQkVy
cm9yRXZlbnQqPihpbXBsKSk7CiAgICAgaWYgKGltcGwtPmlzSURCU3VjY2Vzc0V2ZW50KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50LmNwcAppbmRleCBiZGMxYzU4MDc0OTA0NDAyMzE2OTllOTY3NDVhYWYyMzQ5M2E5
NGFiLi40OWI3ZTgxYTkxNzA4OTAyODRlOTcyZDFiOThiYzdiMGRiZDAzNzI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudC5jcHAKQEAgLTE5OCw2ICsxOTgsMTEgQEAgYm9vbCBFdmVudDo6aXNJREJBYm9ydEV2ZW50
KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgRXZlbnQ6OmlzSURCQmxvY2tl
ZEV2ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgRXZlbnQ6Omlz
SURCQ29tcGxldGVFdmVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQu
aAppbmRleCA4MWY5ZTZiMjkwOGUxYmE4N2YyODNmZjFmNmYxN2U1MjgwNzY0Mzc0Li4wNDgxN2Ez
N2UxNGVkYzY0YmIwYzdhNjEzNjk1MjQ0NDhkYWJhNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaApAQCAtMTI3
LDYgKzEyNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNJREJBYm9ydEV2ZW50KCkgY29u
c3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0lEQkJsb2NrZWRFdmVudCgpIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNJREJDb21wbGV0ZUV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0lEQkVycm9yRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29s
IGlzSURCU3VjY2Vzc0V2ZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA0
MzllOWQ4YjU1OGI2ZTViMjJjNzY0MzA3NTUwMDc3MzYzNjMxZGQxLi5hZGY0OGVkZGY3NmJlNDM1
MDJhZmQxZjA2YjQ4MGU5NWIwNGQ5NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTM2
LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKGJlZm9yZXBhc3RlKSBc
CiAgICAgbWFjcm8oYmVmb3JlcHJvY2VzcykgXAogICAgIG1hY3JvKGJlZm9yZXVubG9hZCkgXAor
ICAgIG1hY3JvKGJsb2NrZWQpIFwKICAgICBtYWNybyhibHVyKSBcCiAgICAgbWFjcm8oY2FjaGVk
KSBcCiAgICAgbWFjcm8oY2hhbmdlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRl
eCBlZDU5OTVjZDBkMmNkOWI0NzVkNzU4NjNjM2FjNDk5ZGVhZmIwZmZmLi5lMjdiMTViZDg4M2Ew
ZGU5OWZkY2RkYmU3ZTg5YzU0MGE1MWZkODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5j
cHAKQEAgLTE4OSw2ICsxODksMTAgQEAgSURCUmVxdWVzdCogRXZlbnRUYXJnZXQ6OnRvSURCUmVx
dWVzdCgpCiB7CiAgICAgcmV0dXJuIDA7CiB9CitJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCogRXZl
bnRUYXJnZXQ6OnRvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QoKQoreworICAgIHJldHVybiAwOwor
fQogSURCVHJhbnNhY3Rpb24qIEV2ZW50VGFyZ2V0Ojp0b0lEQlRyYW5zYWN0aW9uKCkKIHsKICAg
ICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggYTAzODAxYmNiZDUwMGU0
ZGJjZTg5NTFjZDQ3NmI0ZDNkNzA4YThiMy4uYThkMTYwMGY5MTlmNjY0NzIyZDhiOWMzYTk0YWNk
NDFhZWVkZjI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTUyLDYgKzUyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIElEQkRhdGFiYXNlOwogICAgIGNsYXNzIElE
QlJlcXVlc3Q7CiAgICAgY2xhc3MgSURCVHJhbnNhY3Rpb247CisgICAgY2xhc3MgSURCVmVyc2lv
bkNoYW5nZVJlcXVlc3Q7CiAgICAgY2xhc3MgSmF2YVNjcmlwdEF1ZGlvTm9kZTsKICAgICBjbGFz
cyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBOb2RlOwpAQCAtMTQyLDYgKzE0Myw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBJREJEYXRhYmFzZSogdG9JREJEYXRhYmFz
ZSgpOwogICAgICAgICB2aXJ0dWFsIElEQlJlcXVlc3QqIHRvSURCUmVxdWVzdCgpOwogICAgICAg
ICB2aXJ0dWFsIElEQlRyYW5zYWN0aW9uKiB0b0lEQlRyYW5zYWN0aW9uKCk7CisgICAgICAgIHZp
cnR1YWwgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QqIHRvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qo
KTsKICNlbmRpZgogCiAgICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCQmxvY2tlZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCQmxvY2tlZEV2ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDlhZGNhNWM5MWUzYjBhNzA2NjRhMjdl
ZTEyNGViODVhMzdhOGU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJCbG9ja2VkRXZlbnQuY3BwCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSURCQmxvY2tlZEV2ZW50LmgiCisKKyNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJJREJB
bnkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPElEQkJsb2NrZWRFdmVu
dD4gSURCQmxvY2tlZEV2ZW50OjpjcmVhdGUoUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgY29u
c3QgU3RyaW5nJiB2ZXJzaW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQmxvY2tl
ZEV2ZW50KHNvdXJjZSwgdmVyc2lvbikpOworfQorCitJREJCbG9ja2VkRXZlbnQ6OklEQkJsb2Nr
ZWRFdmVudChQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24p
CisgICAgOiBJREJFdmVudChldmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50LCBzb3VyY2UsIGZhbHNl
LypjYW5CdWJibGUqLykKKyAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQoreworfQorCitJREJCbG9j
a2VkRXZlbnQ6On5JREJCbG9ja2VkRXZlbnQoKQoreworfQorCitTdHJpbmcgSURCQmxvY2tlZEV2
ZW50Ojp2ZXJzaW9uKCkKK3sKKyAgICByZXR1cm4gbV92ZXJzaW9uOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJCbG9ja2VkRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmxvY2tlZEV2
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjc5MTYzMGE0MzU5MDFmNzJiOWFlMTU5ZjVjMThmYzFlZDIyZWNk
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmxvY2tlZEV2
ZW50LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCQmxvY2tlZEV2ZW50X2gK
KyNkZWZpbmUgSURCQmxvY2tlZEV2ZW50X2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQorCisjaW5jbHVkZSAiSURCRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQkJsb2NrZWRFdmVudCA6IHB1YmxpYyBJREJF
dmVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQmxvY2tlZEV2ZW50PiBj
cmVhdGUoUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsK
KyAgICAvLyBGSVhNRTogTmVlZCB0byBhbGxvdyBjcmVhdGlvbiBvZiB0aGVzZSBldmVudHMgZnJv
bSBKUy4KKyAgICB2aXJ0dWFsIH5JREJCbG9ja2VkRXZlbnQoKTsKKworICAgIHZpcnR1YWwgYm9v
bCBpc0lEQkJsb2NrZWRFdmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFs
IFN0cmluZyB2ZXJzaW9uKCk7CisKK3ByaXZhdGU6CisgICAgSURCQmxvY2tlZEV2ZW50KFBhc3NS
ZWZQdHI8SURCQW55PiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CisgICAgU3RyaW5n
IG1fdmVyc2lvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjZW5kaWYgLy8gSURCQmxvY2tlZEV2ZW50X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmxvY2tlZEV2ZW50LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmxvY2tlZEV2ZW50LmlkbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Mjgy
ZTI2M2RkNGNkMmY1YTczMTk3MmI0ODlhM2E4YjA0ZTY3NGY5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCbG9ja2VkRXZlbnQuaWRsCkBAIC0wLDAgKzEsMzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCittb2R1bGUgc3RvcmFnZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBD
b25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCisgICAgXSBJREJCbG9ja2VkRXZlbnQgOiBJREJF
dmVudCB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdmVyc2lvbjsKKyAg
ICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDYWxsYmFja3Mu
aCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgKaW5kZXggMjlmYjFjNDY5
MzUxOTg2YjFkNGNhNjJkYjg5ZmNkMDc1ZTE4ZmI5Yy4uYTUwMmVkNjYyZWFkOTBkNmFiNWVjMGQ3
OWUzMDliZGE2ZjQ5NTdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJD
YWxsYmFja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oCkBA
IC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NS
ZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgPSAwOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNl
LmNwcAppbmRleCA0MjIwN2MzOGE1MWE0ZTE4YzRhZDk5NGE3YzEyNzAwM2FmOTBkODA0Li44MzZh
ZmFiNDk3ZTUyYWJjMTVkMTA3ZGRkMzdiNWNlNWUyYTAyNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkRhdGFiYXNlLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIklEQkZhY3Rv
cnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCSW5kZXguaCIKICNpbmNsdWRlICJJ
REJPYmplY3RTdG9yZS5oIgotI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKKyNpbmNsdWRlICJJREJW
ZXJzaW9uQ2hhbmdlUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPGxpbWl0cz4KQEAgLTU3
LDYgKzU3LDcgQEAgSURCRGF0YWJhc2U6OklEQkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2UKIAogSURCRGF0YWJhc2U6On5JREJE
YXRhYmFzZSgpCiB7CisgICAgY2xvc2UoKTsKIH0KIAogdm9pZCBJREJEYXRhYmFzZTo6c2V0U2V0
VmVyc2lvblRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKQEAgLTk1LDkg
Kzk2LDkgQEAgdm9pZCBJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBtX2JhY2tlbmQtPmRlbGV0ZU9iamVjdFN0
b3JlKG5hbWUsIG1fc2V0VmVyc2lvblRyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKIH0KIAot
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJEYXRhYmFzZTo6c2V0VmVyc2lvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIEV4Y2VwdGlvbkNv
ZGUmIGVjKQorUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gSURCRGF0YWJhc2U6
OnNldFZlcnNpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSZWZQdHI8SURCUmVxdWVzdD4g
cmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlz
KSwgMCk7CisgICAgUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiByZXF1ZXN0ID0gSURC
VmVyc2lvbkNoYW5nZVJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlz
KSwgdmVyc2lvbik7CiAgICAgbV9iYWNrZW5kLT5zZXRWZXJzaW9uKHZlcnNpb24sIHJlcXVlc3Qs
IGVjKTsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KQEAgLTEzNCw3ICsxMzUsMTAgQEAgUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnQKIAogdm9pZCBJREJEYXRhYmFzZTo6Y2xvc2UoKQogeworICAgIGlm
IChtX25vTmV3VHJhbnNhY3Rpb25zKQorICAgICAgICByZXR1cm47CiAgICAgbV9ub05ld1RyYW5z
YWN0aW9ucyA9IHRydWU7CisgICAgbV9iYWNrZW5kLT5jbG9zZSgpOwogfQogCiBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBJREJEYXRhYmFzZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
CkBAIC0xNTIsNiArMTU2LDExIEBAIEV2ZW50VGFyZ2V0RGF0YSogSURCRGF0YWJhc2U6OmVuc3Vy
ZUV2ZW50VGFyZ2V0RGF0YSgpCiAgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKIH0KIAor
dm9pZCBJREJEYXRhYmFzZTo6c3RvcCgpCit7CisgICAgY2xvc2UoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKaW5kZXggMzNlYjRiMDgyOWJmYzdjZTRhNTMwYjNj
NWJjYWQ5YjNlNDQ2Y2YxZi4uYTA2ZTljYjc0MmU4NmVlM2U0ZjhjYmEzNTg3NTRlZDZkMjYwYTU4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaApAQCAtNDMsOCArNDMsOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIElEQkFueTsKLWNsYXNzIElEQlJlcXVlc3Q7
CitjbGFzcyBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiAKIGNsYXNzIElEQkRhdGFiYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8SURCRGF0YWJh
c2U+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGlj
OgpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IE9wdGlvbnNP
YmplY3QmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25z
dCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IHNldFZlcnNpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdmVy
c2lvbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJl
cXVlc3Q+IHNldFZlcnNpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
dmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgY2xvc2UoKTsKIAogICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWJvcnQpOwpAQCAtNzYsNiArNzYsOSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBJREJEYXRhYmFzZSogdG9JREJEYXRhYmFzZSgpIHsgcmV0dXJuIHRo
aXM7IH0KICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdDsKIAorICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAgIHZpcnR1YWwg
dm9pZCBzdG9wKCk7CisKICAgICB1c2luZyBSZWZDb3VudGVkPElEQkRhdGFiYXNlPjo6cmVmOwog
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8SURCRGF0YWJhc2U+OjpkZXJlZjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQkRhdGFiYXNlLmlkbAppbmRleCAzOTIyMTQ0NDllZWY5NzE5MjA0OGM5YzM0ODcx
ODlhMjRiMjMxYWI1Li5lNmU4MTliYzJjZTIxZmYwMzMyMDE0YTc2MWFmNTgwYjg2NjViYmZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlkbApAQCAtNDAsNyArNDAsNyBAQCBt
b2R1bGUgc3RvcmFnZSB7CiAgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9u
KTsKICAgICAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShpbiBET01TdHJpbmcgbmFtZSkKICAg
ICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwotICAgICAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBzZXRWZXJzaW9uKGluIERPTVN0
cmluZyB2ZXJzaW9uKQorICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0g
SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qgc2V0VmVyc2lvbihpbiBET01TdHJpbmcgdmVyc2lvbikK
ICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwogICAgICAgICBbQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24o
aW4gW09wdGlvbmFsXSBET01TdHJpbmdMaXN0IHN0b3JlTmFtZXMsIGluIFtPcHRpb25hbF0gdW5z
aWduZWQgc2hvcnQgbW9kZSkKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRp
b24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1w
bC5jcHAKaW5kZXggMTMzYzVhZWI0MDQ1N2FlZDY2ZjQ4NjUwNDMyYTJkZWRlY2MzOGM3Yi4uNmEz
OGY0MjhjNGQyZDhkOWZjOTA1NzAxNDFmYmUxOWRhYjFjM2E3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC05NSw2ICs5NSw3
IEBAIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3Qg
U3RyaW5nJiBuYW1lLCBJREJTUUxpdGVEYXRhCiAgICAgLCBtX2lkZW50aWZpZXIodW5pcXVlSWRl
bnRpZmllcikKICAgICAsIG1fZmFjdG9yeShmYWN0b3J5KQogICAgICwgbV90cmFuc2FjdGlvbkNv
b3JkaW5hdG9yKGNvb3JkaW5hdG9yKQorICAgICwgbV9vcGVuQ29ubmVjdGlvbkNvdW50KDApCiB7
CiAgICAgQVNTRVJUKCFtX25hbWUuaXNOdWxsKCkpOwogCkBAIC0yMTEsNiArMjEyLDEwIEBAIHZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwKIAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRW
ZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBy
cENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgaWYgKG1fb3BlbkNvbm5lY3Rp
b25Db3VudCA+IDEpIHsKKyAgICAgICAgcHJwQ2FsbGJhY2tzLT5vbkJsb2NrZWQoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0
YWJhc2UgPSB0aGlzOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENh
bGxiYWNrczsKICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcyA9IERP
TVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwpAQCAtMjQ3LDkgKzI1MiwxNSBAQCBQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJh
bnNhY3Rpb24oRAogICAgIHJldHVybiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUo
b2JqZWN0U3RvcmVOYW1lcywgbW9kZSwgdGhpcyk7CiB9CiAKK3ZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6b3BlbigpCit7CisgICAgbV9vcGVuQ29ubmVjdGlvbkNvdW50Kys7Cit9CisKIHZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UoKQogewotICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQuCisgICAgbV9vcGVuQ29ubmVjdGlvbkNvdW50LS07CisgICAgQVNTRVJUKG1fb3BlbkNv
bm5lY3Rpb25Db3VudCA+PSAwKTsKIH0KIAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjps
b2FkT2JqZWN0U3RvcmVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmgKaW5kZXggODk0Mjk2ODViYzg0OWYxMjU4NjFkODNmZDQ5NTcxOGI1Mzg4
ZTA5MC4uZTdiNWI0YWFiMDg0OGFiNzc3ODU2OGYxYWUxMjFmODEwZDgzZjQ5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTYyLDYg
KzYyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25z
dCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNp
b24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9u
KERPTVN0cmluZ0xpc3QqIG9iamVjdFN0b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbigpOwogICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZSgpOwogCiAgICAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2U+IG9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSk7CkBAIC05NCw2ICs5NSw4IEBAIHBy
aXZhdGU6CiAgICAgT2JqZWN0U3RvcmVNYXAgbV9vYmplY3RTdG9yZXM7CiAKICAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcj4gbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yOworCisg
ICAgaW50IG1fb3BlbkNvbm5lY3Rpb25Db3VudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZS5oCmluZGV4IDljYzcyMzBhY2Q4MDYyOGUxZjkwYmI2NDQ2NTBlNGNkMTZlZTg1ODMu
LmM0OTQxZGRiMGMwNWExNmE3ZDA0Y2JlMzdkN2Y2YTM5YzU4MTI4N2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAt
NDAsNyArNDAsNiBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIElEQkNhbGxiYWNrczsKIGNsYXNzIElE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTsKIGNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZTsKLWNsYXNzIElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzOwogCiAvLyBUaGlzIGNs
YXNzIGlzIHNoYXJlZCBieSBJREJEYXRhYmFzZSAoYXN5bmMpIGFuZCBJREJEYXRhYmFzZVN5bmMg
KHN5bmMpLgogLy8gVGhpcyBpcyBpbXBsZW1lbnRlZCBieSBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
IGFuZCBvcHRpb25hbGx5IG90aGVycyAoaW4gb3JkZXIgdG8gcHJveHkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAppbmRleCAwZTg4M2NmZTJl
NDU2NDc4NmY5NDIyMWY4NGNmYTU1YjMyZDE3N2I5Li4zNzJkNTRjNzg5MWNlNDE3MGMwMzdkOGNi
ZDIyYmM0OWIyM2I0ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZh
Y3RvcnlCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0
b3J5QmFja2VuZEltcGwuY3BwCkBAIC0yMTMsNiArMjEzLDcgQEAgdm9pZCBJREJGYWN0b3J5QmFj
a2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2EKICAgICBTdHJpbmcgdW5pcXVlSWRlbnRpZmllciA9IGZpbGVJZGVudGlmaWVyICsgIkAi
ICsgbmFtZTsKICAgICBJREJEYXRhYmFzZUJhY2tlbmRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kYXRh
YmFzZUJhY2tlbmRNYXAuZmluZCh1bmlxdWVJZGVudGlmaWVyKTsKICAgICBpZiAoaXQgIT0gbV9k
YXRhYmFzZUJhY2tlbmRNYXAuZW5kKCkpIHsKKyAgICAgICAgaXQtPnNlY29uZC0+b3BlbigpOwog
ICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhpdC0+c2Vjb25kKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTIzNSw2ICsyMzYsNyBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6
b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYQogICAg
IH0KIAogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZUJhY2tlbmQg
PSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFtZSwgc3FsaXRlRGF0YWJhc2UuZ2V0
KCksIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQoKSwgdGhpcywgdW5pcXVlSWRlbnRpZmll
cik7CisgICAgZGF0YWJhc2VCYWNrZW5kLT5vcGVuKCk7CiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nl
c3MoZGF0YWJhc2VCYWNrZW5kLmdldCgpKTsKICAgICBtX2RhdGFiYXNlQmFja2VuZE1hcC5zZXQo
dW5pcXVlSWRlbnRpZmllciwgZGF0YWJhc2VCYWNrZW5kLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQlJlcXVlc3QuY3BwCmluZGV4IGUyNTQ2NGFmZGUzOWZjMGNkMjJhM2QwZGNkNWRi
YTY0ZDhhYzgxMTkuLjU1MzY3M2I5MjY5OTdjZmU4MDQ4YjE3MGJjMzllMWIzM2FjYzRlYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcApAQCAtMzYsMTAgKzM2LDExIEBACiAj
aW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNs
dWRlICJFdmVudFF1ZXVlLmgiCisjaW5jbHVkZSAiSURCQmxvY2tlZEV2ZW50LmgiCiAjaW5jbHVk
ZSAiSURCQ3Vyc29yLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKLSNpbmNsdWRlICJJREJJ
bmRleC5oIgogI2luY2x1ZGUgIklEQkVycm9yRXZlbnQuaCIKKyNpbmNsdWRlICJJREJJbmRleC5o
IgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSURCUGVuZGluZ1RyYW5z
YWN0aW9uTW9uaXRvci5oIgogI2luY2x1ZGUgIklEQlN1Y2Nlc3NFdmVudC5oIgpAQCAtMTMxLDYg
KzEzMiwxMSBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbAogICAgIGVucXVldWVFdmVudChJREJT
dWNjZXNzRXZlbnQ6OmNyZWF0ZShtX3NvdXJjZSwgSURCQW55OjpjcmVhdGUoc2VyaWFsaXplZFNj
cmlwdFZhbHVlKSkpOwogfQogCit2b2lkIElEQlJlcXVlc3Q6Om9uQmxvY2tlZCgpCit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIElEQlJl
cXVlc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBBY3Rp
dmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTE1NCw3ICsxNjAsNiBA
QCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQp
CiAKICAgICBBU1NFUlQoZXZlbnQtPmlzSURCRXJyb3JFdmVudCgpIHx8IGV2ZW50LT5pc0lEQlN1
Y2Nlc3NFdmVudCgpKTsKICAgICBib29sIGRvbnRQcmV2ZW50RGVmYXVsdCA9IHN0YXRpY19jYXN0
PElEQkV2ZW50Kj4oZXZlbnQuZ2V0KCkpLT5kaXNwYXRjaCh0YXJnZXRzKTsKLQogICAgIGlmICht
X3RyYW5zYWN0aW9uKSB7CiAgICAgICAgIGlmIChkb250UHJldmVudERlZmF1bHQgJiYgZXZlbnQt
PmlzSURCRXJyb3JFdmVudCgpKQogICAgICAgICAgICAgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgp
LT5hYm9ydCgpOwpAQCAtMTc1LDYgKzE4MCwxMSBAQCB2b2lkIElEQlJlcXVlc3Q6OmVucXVldWVF
dmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICBldmVudFF1ZXVlLT5lbnF1ZXVlRXZl
bnQoZXZlbnQpOwogfQogCitJREJBbnkqIElEQlJlcXVlc3Q6OnNvdXJjZSgpCit7CisgICAgcmV0
dXJuIG1fc291cmNlLmdldCgpOworfQorCiBFdmVudFRhcmdldERhdGEqIElEQlJlcXVlc3Q6OmV2
ZW50VGFyZ2V0RGF0YSgpCiB7CiAgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKaW5kZXggMmM1ZjQ1NDVhMzhjYzFhM2U0MjI2OTg2NTY5
MGQzOWI0OGQyZGNkNS4uY2E1MmUyOTNmZjY0ZGM4Mzk0Y2UxY2U5YTBjMTYwN2FlZWQ1M2E3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKQEAgLTY5LDYgKzY5LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbnRlcmZhY2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOworICAgIHZpcnR1YWwgdm9p
ZCBvbkJsb2NrZWQoKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdmlydHVhbCBJREJSZXF1
ZXN0KiB0b0lEQlJlcXVlc3QoKSB7IHJldHVybiB0aGlzOyB9CkBAIC03OSwxMSArODAsMTIgQEAg
cHVibGljOgogICAgIHVzaW5nIFRocmVhZFNhZmVTaGFyZWQ8SURCQ2FsbGJhY2tzPjo6cmVmOwog
ICAgIHVzaW5nIFRocmVhZFNhZmVTaGFyZWQ8SURCQ2FsbGJhY2tzPjo6ZGVyZWY7CiAKLXByaXZh
dGU6Citwcm90ZWN0ZWQ6CiAgICAgSURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKKyAgICB2aXJ0dWFsIElEQkFu
eSogc291cmNlKCk7CiAKLSAgICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7
Ci0KK3ByaXZhdGU6CiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZl
bnRUYXJnZXQoKSB7IHJlZigpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQo
KSB7IGRlcmVmKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVy
c2lvbkNoYW5nZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9u
Q2hhbmdlUmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzkwMjg4MmY3MTQyNjBmMWU3MjI0MDhiMDgz
ZjQyNjEyY2M3N2MyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaCIKKwor
I2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCQmxvY2tlZEV2ZW50
LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1Bhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IElEQlZlcnNpb25D
aGFuZ2VSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQoreworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QoY29udGV4dCwgc291cmNl
LCB2ZXJzaW9uKSk7Cit9CitJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDo6SURCVmVyc2lvbkNoYW5n
ZVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJB
bnk+IHNvdXJjZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQorICAgIDogSURCUmVxdWVzdChjb250
ZXh0LCBzb3VyY2UsIDApCisgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKK3sKK30KKworSURCVmVy
c2lvbkNoYW5nZVJlcXVlc3Q6On5JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCgpCit7Cit9CisKK3Zv
aWQgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6Om9uQmxvY2tlZCgpCit7CisgICAgZW5xdWV1ZUV2
ZW50KElEQkJsb2NrZWRFdmVudDo6Y3JlYXRlKHNvdXJjZSgpLCBtX3ZlcnNpb24pKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGYzN2U0OGZlMzZi
ZDc0MDc1NDVmZWQ3NGUwYjMzZDc5Yjk3MjUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5oCkBAIC0wLDAgKzEsNTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0X2gKKyNkZWZpbmUgSURCVmVy
c2lvbkNoYW5nZVJlcXVlc3RfaAorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNp
bmNsdWRlICJJREJSZXF1ZXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSURC
VmVyc2lvbkNoYW5nZVJlcXVlc3QgOiBwdWJsaWMgSURCUmVxdWVzdCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgY29uc3QgU3RyaW5n
JiB2ZXJzaW9uKTsKKyAgICB2aXJ0dWFsIH5JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCgpOworCisg
ICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpOworCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUihibG9ja2VkKTsKKworcHJpdmF0ZToKKyAgICBJREJWZXJzaW9uQ2hhbmdlUmVx
dWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwg
Y29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKKyAgICBTdHJpbmcgbV92ZXJzaW9uOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CisKKyNlbmRpZiAvLyBJREJSZXF1ZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmZhYzczNTQ3MGEyYTli
MDBkMmQ0OWE3ODZlZjE3NmJjOWE5N2EzNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaWRsCkBAIC0wLDAgKzEsMzQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCittb2R1bGUgc3RvcmFnZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25k
aXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFLAorICAgICAgICBFdmVudFRhcmdldAorICAgIF0gSURC
VmVyc2lvbkNoYW5nZVJlcXVlc3QgOiBJREJSZXF1ZXN0IHsKKyAgICAgICAgYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb25ibG9ja2VkOworICAgIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDlkZjdkMzM5Yjc1NzA1ZmE2ODQ1MzcyNTdmMjlmODNhMTg4MjNlN2YuLmM3NTVhNWJk
OGIwZTJkNjYwYmZlNWRmZWIyN2Y1Njk2NDI2ZjFhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDItMDkgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGluZGV4ZWRkYjogbWFrZSBzZXRWZXJzaW9uIGZpcmUgYmxvY2tlZCBldmVudCBpZiBv
dGhlciBjb25uZWN0aW9ucyBhcmUgb3BlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MjgKKworICAgICAgICAqIHB1YmxpYy9XZWJJREJDYWxsYmFj
a3MuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ2FsbGJhY2tzOjpvbkJsb2NrZWQpOgorICAg
ICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJD
YWxsYmFja3NQcm94eTo6b25CbG9ja2VkKToKKyAgICAgICAgKiBzcmMvSURCQ2FsbGJhY2tzUHJv
eHkuaDoKKyAgICAgICAgKiBzcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJJREJDYWxsYmFja3NJbXBsOjpvbkJsb2NrZWQpOgorICAgICAgICAqIHNyYy9X
ZWJJREJDYWxsYmFja3NJbXBsLmg6CisKIDIwMTEtMDItMDkgIFNhaWxlc2ggQWdyYXdhbCAgPHNh
aWxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oCmluZGV4IDEy
NGI2YjgwZjVmNGY1OTZmOGU5Y2Y1ZDE1YTM2ZWYyMzQyMjQ2ZmEuLjFlYjZkM2EwOTZhZTA0OWI2
M2NhZWIxNDI0YzU0MjVhYTcxZTY0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQkNhbGxiYWNrcy5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFdlYklEQk9iamVjdFN0b3JlKikgeyBXRUJLSVRfQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFdlYklEQlRyYW5z
YWN0aW9uKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpIHsgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcApp
bmRleCBkYmEyOGQ5NGVhZmU2M2I4ODA5MjEwYzY4ZGY5Y2RkZmM5ZjIyYzBkLi40NjU0OTUwNjMy
MjRlZjQyYTUxNTU2NTc1ZTgwYWVmY2ZmM2M0ZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCkBAIC05OSw2ICs5OSwxMSBAQCB2b2lk
IElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHNlcmlhbGl6ZWRTYwogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoV2ViS2l0OjpX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUoc2VyaWFsaXplZFNjcmlwdFZhbHVlKSk7CiB9CiAKK3Zv
aWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uQmxvY2tlZCgpCit7CisgICAgbV9jYWxsYmFja3MtPm9u
QmxvY2tlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkNhbGxiYWNrc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJD
YWxsYmFja3NQcm94eS5oCmluZGV4IGUxZGIyM2Q0MzlmNmFhNWY3Njg2OGEwMjc3NGY2OWQ5MDA1
YzA3OGYuLjdkZWQ4ZWFlNGUzMjgwNWRhMTQ0MzM4NzdmNWQ3NTMwMjgxYmIzM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaApAQCAtNTUsNiAr
NTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nl
c3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7Cisg
ICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpOwogCiBwcml2YXRlOgogICAgIElEQkNhbGxiYWNr
c1Byb3h5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJDYWxsYmFja3M+KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKaW5kZXggYmI3
YTE5YmNmMjE5Y2YyMDUzYzhjN2QwNTRkMGE5MGRhY2VlMTNlNy4uNTcwM2YyN2M5ODczNGY3NzE2
YzJmNGJmYjc2ZTYwNGVjNDEyMmQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTk2LDYgKzk2LDExIEBAIHZvaWQgV2Vi
SURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKGNvbnN0IFdlYktpdDo6V2ViU2VyaWFsaXplZFNj
cmlwdFZhbHVlJiBzZXJpCiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhzZXJpYWxpemVkU2Ny
aXB0VmFsdWUpOwogfQogCit2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uQmxvY2tlZCgpCit7
CisgICAgbV9jYWxsYmFja3MtPm9uQmxvY2tlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaAppbmRleCBkMmFlMjU1NjI5
ZmJhMDE4MTg1NDcyZTkxYmI2NjFhYjIyYjMzNzhiLi4xZTc2ZGVjZjE5MDliZGM3NTNjMWIyMjJm
Y2E1YmFjOGNkYmRjMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJDYWxsYmFja3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCQ2FsbGJhY2tzSW1wbC5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmUqKTsKICAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb24qKTsKICAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKGNvbnN0IFdlYktpdDo6V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJik7
CisgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpOwogCiBwcml2YXRlOgogICAgIFJlZlB0cjxJ
REJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82197</attachid>
            <date>2011-02-11 15:36:22 -0800</date>
            <delta_ts>2011-02-11 16:52:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53728-20110211153621.patch</filename>
            <type>text/plain</type>
            <size>48963</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiZGJiYmQyNTdmYmZkNjA2MDUzZTY0ZDYxN2M1YjA4NGVlMDNmZTVkLi4zNTYwNTQx
MGJiZTEzMTI4MmZmZDA5NzMwOTMyMDc4MjJjYjU4ZjhlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTEtMDItMTEgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGluZGV4ZWRkYjogbWFr
ZSBzZXRWZXJzaW9uIGZpcmUgYmxvY2tlZCBldmVudCBpZiBvdGhlciBjb25uZWN0aW9ucyBhcmUg
b3BlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3
MjgKKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanM6Cisg
ICAgICAgICh1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrKToKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2VkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fYmxvY2tlZC5odG1sOiBBZGRlZC4KKwog
MjAxMS0wMi0xMSAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzCmluZGV4IDhjNTY4MzIxMGRiY2NlNDlmOTgy
ZGEzM2Y3ZGJkOWQ5OTI3YWJhM2QuLjA4NWRiMmU2MmMxYTVhZGZjZDRkZjk5NWZiZDMyNzQzY2Jh
M2JmMjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9zaGFyZWQuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L3NoYXJlZC5qcwpAQCAtODcsNiArODcsMTEgQEAgZnVuY3Rpb24gdW5leHBlY3RlZENvbXBsZXRl
Q2FsbGJhY2soKQogICAgIGRvbmUoKTsKIH0KIAorZnVuY3Rpb24gdW5leHBlY3RlZEJsb2NrZWRD
YWxsYmFjaygpCit7CisgICAgdGVzdEZhaWxlZCgib25ibG9ja2VkIGNhbGxlZCB1bmV4cGVjdGVk
bHkiKTsKK30KKwogZnVuY3Rpb24gZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbihjbWQsIGV4cGVjdGVk
KQogewogICAgIGRlYnVnKCJFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gIiArIGNtZCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2Vk
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9u
X2Jsb2NrZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5MDg5MDc2OTcxZGQ0YmYxNWQ1MzVj
NjAyZjA2NGNmOGNkOTE0ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIw
IEBACitBbiBvcGVuIGNvbm5lY3Rpb24gYmxvY2tzIGEgc2VwYXJhdGUgY29ubmVjdGlvbidzIHNl
dFZlcnNpb24gY2FsbAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBJbmRl
eGVkREIgPT0gbnVsbCBpcyBmYWxzZQord2Via2l0SW5kZXhlZERCLm9wZW4oJ3NvbWUgZGIgbmFt
ZScpCit3ZWJraXRJbmRleGVkREIub3Blbignc29tZSBkYiBuYW1lJykKK2Nvbm5lY3Rpb25zWzBd
LnNldFZlcnNpb24oJ3ZlcnNpb24gMScpCitzZWVuX2Jsb2NrZWRfZXZlbnQgPSB0cnVlCitQQVNT
IGJsb2NrZWRfZXZlbnQudmVyc2lvbiBpcyAidmVyc2lvbiAxIgorUEFTUyByZXN1bHQucmVhZHlT
dGF0ZSBpcyAxCitjb25uZWN0aW9uc1sxXS5jbG9zZSgpCitpbiBzZXRWZXJzaW9uLm9uc3VjY2Vz
cworUEFTUyBzZWVuX2Jsb2NrZWRfZXZlbnQgaXMgdHJ1ZQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0
b3Jlcy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9i
bG9ja2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9i
bG9ja2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2I5OTI4MjBlMDgzZjFmZDVhZDhiYzc3ZmEyYTk2ZTU2
ZjgyMTQ0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3NldF92ZXJzaW9uX2Jsb2NrZWQuaHRtbApAQCAtMCwwICsxLDcyIEBACis8aHRtbD4NCis8aGVh
ZD4NCis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4NCis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pg0KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0Pg0KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4NCis8L2hlYWQ+DQorPGJvZHk+DQor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+DQorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+DQorPHNj
cmlwdD4NCisNCitkZXNjcmlwdGlvbigiQW4gb3BlbiBjb25uZWN0aW9uIGJsb2NrcyBhIHNlcGFy
YXRlIGNvbm5lY3Rpb24ncyBzZXRWZXJzaW9uIGNhbGwiKTsNCitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQ0KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
DQorDQorY29ubmVjdGlvbnMgPSBbXQ0KK2Z1bmN0aW9uIHRlc3QoKQ0KK3sNCisgICAgaWYgKCd3
ZWJraXRJbmRleGVkREInIGluIHdpbmRvdykNCisgICAgICAgIEluZGV4ZWREQiA9IHdlYmtpdElu
ZGV4ZWREQjsNCisgICAgZWxzZSBpZiAoJ21vekluZGV4ZWREQicgaW4gd2luZG93KQ0KKyAgICAg
ICAgSW5kZXhlZERCID0gbW96SW5kZXhlZERCOw0KKyAgICBzaG91bGRCZUZhbHNlKCJJbmRleGVk
REIgPT0gbnVsbCIpOw0KKyAgICBvcGVuREJDb25uZWN0aW9uKCk7DQorfQ0KKw0KK2Z1bmN0aW9u
IG9wZW5EQkNvbm5lY3Rpb24oKQ0KK3sNCisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygid2Via2l0
SW5kZXhlZERCLm9wZW4oJ3NvbWUgZGIgbmFtZScpIik7DQorICAgIHJlc3VsdC5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczsNCisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsNCit9DQorDQorZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQ0KK3sNCisgICAgY29ubmVjdGlv
biA9IGV2ZW50LnJlc3VsdDsNCisgICAgY29ubmVjdGlvbnMucHVzaChjb25uZWN0aW9uKTsNCisg
ICAgaWYgKGNvbm5lY3Rpb25zLmxlbmd0aCA8IDIpDQorICAgICAgICBvcGVuREJDb25uZWN0aW9u
KCk7DQorICAgIGVsc2Ugew0KKyAgICAgICAgcmVzdWx0ID0gZXZhbEFuZExvZygiY29ubmVjdGlv
bnNbMF0uc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsNCisgICAgICAgIHJlc3VsdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQorICAgICAgICByZXN1bHQub25zdWNjZXNzID0g
aW5TZXRWZXJzaW9uOw0KKyAgICAgICAgcmVzdWx0Lm9uYmxvY2tlZCA9IGJsb2NrZWQ7DQorICAg
IH0NCit9DQorDQorc2Vlbl9ibG9ja2VkX2V2ZW50ID0gZmFsc2U7DQorZnVuY3Rpb24gYmxvY2tl
ZChudW1fYmxvY2tlZF9ldmVudHMpDQorew0KKyAgICBldmFsQW5kTG9nKCJzZWVuX2Jsb2NrZWRf
ZXZlbnQgPSB0cnVlIik7DQorICAgIGJsb2NrZWRfZXZlbnQgPSBldmVudDsNCisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJibG9ja2VkX2V2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAxIik7DQor
ICAgIHNob3VsZEV2YWx1YXRlVG8oInJlc3VsdC5yZWFkeVN0YXRlIiwgMSk7DQorICAgIGV2YWxB
bmRMb2coImNvbm5lY3Rpb25zWzFdLmNsb3NlKCkiKTsNCit9DQorDQorZnVuY3Rpb24gaW5TZXRW
ZXJzaW9uKCkNCit7DQorICAgIGRlYnVnKCJpbiBzZXRWZXJzaW9uLm9uc3VjY2VzcyIpOw0KKyAg
ICBzaG91bGRCZVRydWUoInNlZW5fYmxvY2tlZF9ldmVudCIpOw0KKyAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoY29ubmVjdGlvbnNbMF0sIGRvbmUpOw0KK30NCisNCit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsNCisNCit0ZXN0KCk7DQorDQorPC9zY3JpcHQ+DQorPC9ib2R5Pg0KKzwv
aHRtbD4NCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVy
c2lvbl9xdWV1ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9z
ZXRfdmVyc2lvbl9xdWV1ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmNkYTJjNTAzM2NiOTY0
MjJkZjVhZmEyYjU4NDYyNDI4ZjliZmM5OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX3F1ZXVlLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDI0IEBACitBbiBvcGVuIGNvbm5lY3Rpb24gYmxvY2tzIGEgc2VwYXJhdGUgY29ubmVjdGlv
bidzIHNldFZlcnNpb24gY2FsbAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBJbmRleGVkREIgPT0gbnVsbCBpcyBmYWxzZQord2Via2l0SW5kZXhlZERCLm9wZW4oJ3NvbWUg
ZGIgbmFtZScpCit3ZWJraXRJbmRleGVkREIub3Blbignc29tZSBkYiBuYW1lJykKK3dlYmtpdElu
ZGV4ZWREQi5vcGVuKCdzb21lIGRiIG5hbWUnKQorY29ubmVjdGlvbnNbMF0uc2V0VmVyc2lvbign
dmVyc2lvbiAxJykKK2Nvbm5lY3Rpb25zWzFdLnNldFZlcnNpb24oJ3ZlcnNpb24gMicpCitjb25u
ZWN0aW9uc1syXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDMnKQorCitjb25uZWN0aW9uc1syXS5jbG9z
ZSgpCitQQVNTIGJsb2NrZWQxZmlyZWQgaXMgdHJ1ZQorUEFTUyBibG9ja2VkM2ZpcmVkIGlzIGZh
bHNlCitjb25uZWN0aW9uc1swXS5jbG9zZSgpCitGSVhNRTogVGhlIGZpcnN0IHNldFZlcnNpb24g
c2hvdWxkbid0IGdldCBmaXJlZAoraW5TZXRWZXJzaW9uMgorRklYTUU6IFRoZSB0aGlyZCBzZXRW
ZXJzaW9uIHNob3VsZG4ndCBnZXQgZmlyZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvc2V0X3ZlcnNpb25fcXVldWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZmQzMjM4ZWM5YWNmMWY3
YjQ4MDk4ZWU2YjA3ZTg2YmUxOTEwOGNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fcXVldWUuaHRtbApAQCAtMCwwICsxLDk5IEBA
Cis8aHRtbD4NCis8aGVhZD4NCis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4NCis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pg0KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2Ny
aXB0Pg0KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4NCis8L2hl
YWQ+DQorPGJvZHk+DQorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+DQorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+DQorPHNjcmlwdD4NCisNCitkZXNjcmlwdGlvbigiQW4gb3BlbiBjb25uZWN0aW9u
IGJsb2NrcyBhIHNlcGFyYXRlIGNvbm5lY3Rpb24ncyBzZXRWZXJzaW9uIGNhbGwiKTsNCitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7DQorDQorY29ubmVjdGlvbnMgPSBbXQ0KK2Z1bmN0aW9uIHRlc3QoKQ0K
K3sNCisgICAgaWYgKCd3ZWJraXRJbmRleGVkREInIGluIHdpbmRvdykNCisgICAgICAgIEluZGV4
ZWREQiA9IHdlYmtpdEluZGV4ZWREQjsNCisgICAgZWxzZSBpZiAoJ21vekluZGV4ZWREQicgaW4g
d2luZG93KQ0KKyAgICAgICAgSW5kZXhlZERCID0gbW96SW5kZXhlZERCOw0KKyAgICBzaG91bGRC
ZUZhbHNlKCJJbmRleGVkREIgPT0gbnVsbCIpOw0KKyAgICBvcGVuREJDb25uZWN0aW9uKCk7DQor
fQ0KKw0KK2Z1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQ0KK3sNCisgICAgcmVzdWx0ID0gZXZh
bEFuZExvZygid2Via2l0SW5kZXhlZERCLm9wZW4oJ3NvbWUgZGIgbmFtZScpIik7DQorICAgIHJl
c3VsdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsNCisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsNCit9DQorDQorZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQ0KK3sN
CisgICAgY29ubmVjdGlvbiA9IGV2ZW50LnJlc3VsdDsNCisgICAgY29ubmVjdGlvbnMucHVzaChj
b25uZWN0aW9uKTsNCisgICAgaWYgKGNvbm5lY3Rpb25zLmxlbmd0aCA8IDMpDQorICAgICAgICBv
cGVuREJDb25uZWN0aW9uKCk7DQorICAgIGVsc2Ugew0KKyAgICAgICAgcmVzdWx0ID0gZXZhbEFu
ZExvZygiY29ubmVjdGlvbnNbMF0uc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsNCisgICAgICAg
IHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQorICAgICAgICByZXN1
bHQub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uOw0KKyAgICAgICAgcmVzdWx0Lm9uYmxvY2tlZCA9
IGJsb2NrZWQxOw0KKyAgICAgICAgcmVzdWx0MiA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzFd
LnNldFZlcnNpb24oJ3ZlcnNpb24gMicpIik7DQorICAgICAgICByZXN1bHQyLm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCisgICAgICAgIHJlc3VsdDIub25zdWNjZXNzID0gaW5T
ZXRWZXJzaW9uMjsNCisgICAgICAgIHJlc3VsdDIub25ibG9ja2VkID0gYmxvY2tlZDI7DQorICAg
ICAgICByZXN1bHQzID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMl0uc2V0VmVyc2lvbigndmVy
c2lvbiAzJykiKTsNCisgICAgICAgIHJlc3VsdDMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOw0KKyAgICAgICAgcmVzdWx0My5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb24zOw0KKyAg
ICAgICAgcmVzdWx0My5vbmJsb2NrZWQgPSBibG9ja2VkMzsNCisgICAgICAgIGRlYnVnKCIiKTsN
CisgICAgfQ0KK30NCisNCitibG9ja2VkMWZpcmVkID0gZmFsc2U7DQorYmxvY2tlZDNmaXJlZCA9
IGZhbHNlOw0KK2Z1bmN0aW9uIGJsb2NrZWQxKCkNCit7DQorICBldmFsQW5kTG9nKCJjb25uZWN0
aW9uc1syXS5jbG9zZSgpIik7DQorICBibG9ja2VkMWZpcmVkID0gdHJ1ZTsNCit9DQorDQorZnVu
Y3Rpb24gYmxvY2tlZDIoKQ0KK3sNCisgIHNob3VsZEJlVHJ1ZSgiYmxvY2tlZDFmaXJlZCIpOw0K
KyAgc2hvdWxkQmVGYWxzZSgiYmxvY2tlZDNmaXJlZCIpOw0KK30NCitmdW5jdGlvbiBibG9ja2Vk
MygpDQorew0KKyAgZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMF0uY2xvc2UoKSIpOw0KKyAgYmxv
Y2tlZDNmaXJlZCA9IHRydWU7DQorfQ0KKw0KK2Z1bmN0aW9uIGluU2V0VmVyc2lvbigpDQorew0K
KyAgICBkZWJ1ZygiRklYTUU6IFRoZSBmaXJzdCBzZXRWZXJzaW9uIHNob3VsZG4ndCBnZXQgZmly
ZWQiKTsNCit9DQorDQorZnVuY3Rpb24gaW5TZXRWZXJzaW9uMigpDQorew0KKyAgICBkZWJ1Zygi
aW5TZXRWZXJzaW9uMiIpOw0KK30NCisNCitmdW5jdGlvbiBpblNldFZlcnNpb24zKCkNCit7DQor
ICAgIGRlYnVnKCJGSVhNRTogVGhlIHRoaXJkIHNldFZlcnNpb24gc2hvdWxkbid0IGdldCBmaXJl
ZCIpOw0KKyAgICBkb25lKCk7DQorfQ0KKw0KK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
Ow0KKw0KK3Rlc3QoKTsNCisNCis8L3NjcmlwdD4NCis8L2JvZHk+DQorPC9odG1sPg0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA3NDJiOTU1ZDZhY2NlMzNiOWMzNTI4ZGJjMDdhNWY2ZjUyZmVkNmQwLi4yZDcxNzE1
ZTQxZDVmYWE3ZTE1NWQxZGQ1YmFjMzk1ZTBjZjdjODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjMgQEAKKzIwMTEtMDItMTEgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGluZGV4ZWRk
YjogbWFrZSBzZXRWZXJzaW9uIGZpcmUgYmxvY2tlZCBldmVudCBpZiBvdGhlciBjb25uZWN0aW9u
cyBhcmUgb3BlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTM3MjgKKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9i
bG9ja2VkLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnByaToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGRvbS9FdmVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6aXNJREJCbG9ja2VkRXZlbnQpOgorICAgICAg
ICAqIGRvbS9FdmVudC5oOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgICog
ZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Ojp0b0lE
QlZlcnNpb25DaGFuZ2VSZXF1ZXN0KToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQkJsb2NrZWRFdmVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaC4KKyAgICAgICAgKFdlYkNv
cmU6OklEQkJsb2NrZWRFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJsb2Nr
ZWRFdmVudDo6SURCQmxvY2tlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJsb2NrZWRF
dmVudDo6fklEQkJsb2NrZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJCbG9ja2VkRXZl
bnQ6OnZlcnNpb24pOgorICAgICAgICAqIHN0b3JhZ2UvSURCQmxvY2tlZEV2ZW50Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaC4K
KyAgICAgICAgKFdlYkNvcmU6OklEQkJsb2NrZWRFdmVudDo6aXNJREJCbG9ja2VkRXZlbnQpOgor
ICAgICAgICAqIHN0b3JhZ2UvSURCQmxvY2tlZEV2ZW50LmlkbDogQWRkZWQuCisgICAgICAgICog
c3RvcmFnZS9JREJDYWxsYmFja3MuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp+SURCRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnNldFZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2U6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpzdG9w
KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmg6CisgICAgICAgICogc3RvcmFnZS9J
REJEYXRhYmFzZS5pZGw6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFi
YXNlQmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6c2V0VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3Nl
KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaDoKKyAgICAgICAg
KiBzdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oOgorICAgICAgICAqIHN0b3Jh
Z2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rv
cnlCYWNrZW5kSW1wbDo6b3Blbik6CisgICAgICAgICogc3RvcmFnZS9JREJSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uQmxvY2tlZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJl
cXVlc3Q6OnNvdXJjZSk6CisgICAgICAgICogc3RvcmFnZS9JREJSZXF1ZXN0Lmg6CisgICAgICAg
ICogc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5jcHA6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaC4KKyAgICAgICAgKFdl
YkNvcmU6OklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6OklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Ojp+SURCVmVyc2lvbkNoYW5n
ZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6Om9u
QmxvY2tlZCk6CisgICAgICAgICogc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBs
LmguCisgICAgICAgICogc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5pZGw6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaC4K
KwogMjAxMS0wMi0xMSAgTWlrZSBSZWVkICA8cmVlZEBnb29nbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGViODAxNmM3OTA4
MzcyZDRmZGVhYzY4ZGU0MjMxZTZmOTk1NjlkYTkuLjdmNzc5ZWFiYTg1YTc2MGZlZTc4NmNmMDE0
YjA0ODM3NGI4Yjc3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI3Myw2ICsyNzMsNyBAQAogICAg
ICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ3N0
b3JhZ2UvRGF0YWJhc2VTeW5jLmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJBbnkuaWRs
JywKKyAgICAgICAgICAgICdzdG9yYWdlL0lEQkJsb2NrZWRFdmVudC5pZGwnLAogICAgICAgICAg
ICAgJ3N0b3JhZ2UvSURCQ3Vyc29yLmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJEYXRh
YmFzZUVycm9yLmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJEYXRhYmFzZUV4Y2VwdGlv
bi5pZGwnLApAQCAtMjg3LDYgKzI4OCw3IEBACiAgICAgICAgICAgICAnc3RvcmFnZS9JREJSZXF1
ZXN0LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJTdWNjZXNzRXZlbnQuaWRsJywKICAg
ICAgICAgICAgICdzdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmlkbCcsCisgICAgICAgICAgICAnc3Rv
cmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2Uv
U1FMRXJyb3IuaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL1NRTEV4Y2VwdGlvbi5pZGwnLAog
ICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMUmVzdWx0U2V0LmlkbCcsCkBAIC00MDIyLDYgKzQwMjQs
OCBAQAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCQWJvcnRFdmVudC5oJywKICAgICAgICAgICAg
ICdzdG9yYWdlL0lEQkFueS5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCQW55LmgnLAor
ICAgICAgICAgICAgJ3N0b3JhZ2UvSURCQmxvY2tlZEV2ZW50LmNwcCcsCisgICAgICAgICAgICAn
c3RvcmFnZS9JREJCbG9ja2VkRXZlbnQuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJDYWxs
YmFja3MuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJDb21wbGV0ZUV2ZW50LmNwcCcsCiAg
ICAgICAgICAgICAnc3RvcmFnZS9JREJDb21wbGV0ZUV2ZW50LmgnLApAQCAtNDA4MSw2ICs0MDg1
LDggQEAKICAgICAgICAgICAgICdzdG9yYWdlL0lEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgnLAog
ICAgICAgICAgICAgJ3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAnLAogICAg
ICAgICAgICAgJ3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oJywKKyAgICAgICAg
ICAgICdzdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmNwcCcsCisgICAgICAgICAgICAn
c3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5oJywKICAgICAgICAgICAgICdzdG9yYWdl
L0xvY2FsU3RvcmFnZVRhc2suY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL0xvY2FsU3RvcmFn
ZVRhc2suaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuY3BwJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcmkKaW5kZXggNTJlMjczOGE2ZWQzOWM4MTc5MTRkNjE1ZTVkNWJmNzk2OTA5ZjYy
YS4uNWU3OGFmODE5M2NjN2VhZDEyMjllMTMyZWIyZTdlZTdhMmRjYjVkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cmkKQEAgLTMzNiw2ICszMzYsNyBAQCBJRExfQklORElOR1MgKz0gXAogICAgIHN0b3JhZ2UvRGF0
YWJhc2VDYWxsYmFjay5pZGwgXAogICAgIHN0b3JhZ2UvRGF0YWJhc2VTeW5jLmlkbCBcCiAgICAg
c3RvcmFnZS9JREJBbnkuaWRsIFwKKyAgICBzdG9yYWdlL0lEQkJsb2NrZWRFdmVudC5pZGwgXAog
ICAgIHN0b3JhZ2UvSURCQ3Vyc29yLmlkbCBcCiAgICAgc3RvcmFnZS9JREJEYXRhYmFzZUVycm9y
LmlkbCBcCiAgICAgc3RvcmFnZS9JREJEYXRhYmFzZUV4Y2VwdGlvbi5pZGwgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAppbmRleCBmZDgwMzYwYTczYmVl
NjIxNzFlMzI5MTZlMDQzNmYzNWZhMjU4ZDE2Li43YTFiYWUxZTRkMDFkNjEwMGE5ODdmNDYxOTA0
YTJmZWQ0ZTQzZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3Vz
dG9tLmNwcApAQCAtOTQsOCArOTQsMTAgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCisjaW5jbHVkZSAiSURCQmxvY2tlZEV2ZW50LmgiCiAjaW5jbHVkZSAiSURCRXJy
b3JFdmVudC5oIgogI2luY2x1ZGUgIklEQlN1Y2Nlc3NFdmVudC5oIgorI2luY2x1ZGUgIkpTSURC
QmxvY2tlZEV2ZW50LmgiCiAjaW5jbHVkZSAiSlNJREJFcnJvckV2ZW50LmgiCiAjaW5jbHVkZSAi
SlNJREJTdWNjZXNzRXZlbnQuaCIKICNlbmRpZgpAQCAtMTY2LDYgKzE2OCw4IEBAIEpTVmFsdWUg
dG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV2
ZW50KiBldmVudCkKICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fT0JKRUNUX1dSQVBQRVIo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBTdG9yYWdlRXZlbnQsIGV2ZW50KTsKICNlbmRpZgogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQorICAgIGVsc2UgaWYgKGV2ZW50LT5pc0lEQkJsb2NrZWRF
dmVudCgpKQorICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9PQkpFQ1RfV1JBUFBFUihleGVj
LCBnbG9iYWxPYmplY3QsIElEQkJsb2NrZWRFdmVudCwgZXZlbnQpOwogICAgIGVsc2UgaWYgKGV2
ZW50LT5pc0lEQkVycm9yRXZlbnQoKSkKICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fT0JK
RUNUX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBJREJFcnJvckV2ZW50LCBldmVudCk7CiAg
ICAgZWxzZSBpZiAoZXZlbnQtPmlzSURCU3VjY2Vzc0V2ZW50KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudEN1c3RvbS5jcHAKaW5kZXggZmY5Yjk4
YjIzMWU0ZTViMTIzYjE1ZTE1YThkNTM4NDE1NGRhNmUxNi4uZDQzODdkYjgyYTljOGIyYjUyYmFj
OTg4YWE5M2UwNTA5NjMxNWRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUg
IlY4RGV2aWNlT3JpZW50YXRpb25FdmVudC5oIgogI2luY2x1ZGUgIlY4RXJyb3JFdmVudC5oIgog
I2luY2x1ZGUgIlY4SGFzaENoYW5nZUV2ZW50LmgiCisjaW5jbHVkZSAiVjhJREJCbG9ja2VkRXZl
bnQuaCIKICNpbmNsdWRlICJWOElEQkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJWOElEQlN1Y2Nl
c3NFdmVudC5oIgogI2luY2x1ZGUgIlY4S2V5Ym9hcmRFdmVudC5oIgpAQCAtMTU2LDYgKzE1Nyw4
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KEV2ZW50KiBpbXBsKQogICAgICAgICByZXR1
cm4gdG9WOChzdGF0aWNfY2FzdDxTdG9yYWdlRXZlbnQqPihpbXBsKSk7CiAjZW5kaWYKICNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBpZiAoaW1wbC0+aXNJREJCbG9ja2VkRXZlbnQo
KSkKKyAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8SURCQmxvY2tlZEV2ZW50Kj4oaW1w
bCkpOwogICAgIGlmIChpbXBsLT5pc0lEQkVycm9yRXZlbnQoKSkKICAgICAgICAgcmV0dXJuIHRv
Vjgoc3RhdGljX2Nhc3Q8SURCRXJyb3JFdmVudCo+KGltcGwpKTsKICAgICBpZiAoaW1wbC0+aXNJ
REJTdWNjZXNzRXZlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCmluZGV4IGJkYzFjNTgwNzQ5MDQ0MDIz
MTY5OWU5Njc0NWFhZjIzNDkzYTk0YWIuLjQ5YjdlODFhOTE3MDg5MDI4NGU5NzJkMWI5OGJjN2Iw
ZGJkMDM3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcApAQCAtMTk4LDYgKzE5OCwxMSBAQCBib29sIEV2
ZW50Ojppc0lEQkFib3J0RXZlbnQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9v
bCBFdmVudDo6aXNJREJCbG9ja2VkRXZlbnQoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsK
K30KKwogYm9vbCBFdmVudDo6aXNJREJDb21wbGV0ZUV2ZW50KCkgY29uc3QKIHsKICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudC5oCmluZGV4IDgxZjllNmIyOTA4ZTFiYTg3ZjI4M2ZmMWY2ZjE3
ZTUyODA3NjQzNzQuLjA0ODE3YTM3ZTE0ZWRjNjRiYjBjN2E2MTM2OTUyNDQ0OGRhYmE3NzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudC5oCkBAIC0xMjcsNiArMTI3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2Vu
ZGlmCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c0lEQkFib3J0RXZlbnQoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBib29sIGlzSURCQmxvY2tl
ZEV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0lEQkNvbXBsZXRlRXZlbnQo
KSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzSURCRXJyb3JFdmVudCgpIGNvbnN0Owog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNJREJTdWNjZXNzRXZlbnQoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnROYW1lcy5oCmluZGV4IDQzOWU5ZDhiNTU4YjZlNWIyMmM3NjQzMDc1NTAwNzczNjM2MzFk
ZDEuLmFkZjQ4ZWRkZjc2YmU0MzUwMmFmZDFmMDZiNDgwZTk1YjA0ZDk2ZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
bWFjcm8oYmVmb3JlcGFzdGUpIFwKICAgICBtYWNybyhiZWZvcmVwcm9jZXNzKSBcCiAgICAgbWFj
cm8oYmVmb3JldW5sb2FkKSBcCisgICAgbWFjcm8oYmxvY2tlZCkgXAogICAgIG1hY3JvKGJsdXIp
IFwKICAgICBtYWNybyhjYWNoZWQpIFwKICAgICBtYWNybyhjaGFuZ2UpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuY3BwCmluZGV4IGVkNTk5NWNkMGQyY2Q5YjQ3NWQ3NTg2M2MzYWM0OTlkZWFm
YjBmZmYuLmUyN2IxNWJkODgzYTBkZTk5ZmRjZGRiZTdlODljNTQwYTUxZmQ4NDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtMTg5LDYgKzE4OSwxMCBAQCBJREJSZXF1ZXN0KiBF
dmVudFRhcmdldDo6dG9JREJSZXF1ZXN0KCkKIHsKICAgICByZXR1cm4gMDsKIH0KK0lEQlZlcnNp
b25DaGFuZ2VSZXF1ZXN0KiBFdmVudFRhcmdldDo6dG9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCgp
Cit7CisgICAgcmV0dXJuIDA7Cit9CiBJREJUcmFuc2FjdGlvbiogRXZlbnRUYXJnZXQ6OnRvSURC
VHJhbnNhY3Rpb24oKQogewogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApp
bmRleCBhMDM4MDFiY2JkNTAwZTRkYmNlODk1MWNkNDc2YjRkM2Q3MDhhOGIzLi5hOGQxNjAwZjkx
OWY2NjQ3MjJkOGI5YzNhOTRhY2Q0MWFlZWRmMjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQu
aApAQCAtNTIsNiArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSURCRGF0
YWJhc2U7CiAgICAgY2xhc3MgSURCUmVxdWVzdDsKICAgICBjbGFzcyBJREJUcmFuc2FjdGlvbjsK
KyAgICBjbGFzcyBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDsKICAgICBjbGFzcyBKYXZhU2NyaXB0
QXVkaW9Ob2RlOwogICAgIGNsYXNzIE1lc3NhZ2VQb3J0OwogICAgIGNsYXNzIE5vZGU7CkBAIC0x
NDIsNiArMTQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIElEQkRh
dGFiYXNlKiB0b0lEQkRhdGFiYXNlKCk7CiAgICAgICAgIHZpcnR1YWwgSURCUmVxdWVzdCogdG9J
REJSZXF1ZXN0KCk7CiAgICAgICAgIHZpcnR1YWwgSURCVHJhbnNhY3Rpb24qIHRvSURCVHJhbnNh
Y3Rpb24oKTsKKyAgICAgICAgdmlydHVhbCBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCogdG9JREJW
ZXJzaW9uQ2hhbmdlUmVxdWVzdCgpOwogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCbG9ja2VkRXZlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCbG9ja2VkRXZlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwNTMx
MTM4ZWRkZDQ5MjExZTkyMjAxODkxYTAwMGI3NGI2ODE3ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJsb2NrZWRFdmVudC5jcHAKQEAgLTAsMCArMSw1OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJCbG9ja2VkRXZlbnQu
aCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgorI2luY2x1ZGUgIklEQkFueS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NS
ZWZQdHI8SURCQmxvY2tlZEV2ZW50PiBJREJCbG9ja2VkRXZlbnQ6OmNyZWF0ZShQYXNzUmVmUHRy
PElEQkFueT4gc291cmNlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJREJCbG9ja2VkRXZlbnQoc291cmNlLCB2ZXJzaW9uKSk7Cit9CisKK0lEQkJs
b2NrZWRFdmVudDo6SURCQmxvY2tlZEV2ZW50KFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGNv
bnN0IFN0cmluZyYgdmVyc2lvbikKKyAgICA6IElEQkV2ZW50KGV2ZW50TmFtZXMoKS5ibG9ja2Vk
RXZlbnQsIHNvdXJjZSwgZmFsc2UgLypjYW5CdWJibGUqLykKKyAgICAsIG1fdmVyc2lvbih2ZXJz
aW9uKQoreworfQorCitJREJCbG9ja2VkRXZlbnQ6On5JREJCbG9ja2VkRXZlbnQoKQoreworfQor
CitTdHJpbmcgSURCQmxvY2tlZEV2ZW50Ojp2ZXJzaW9uKCkKK3sKKyAgICByZXR1cm4gbV92ZXJz
aW9uOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCbG9ja2VkRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCQmxvY2tlZEV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQ2MDQyNDdiNjBiMzg0YzE0
MDA1Y2E1YzE1Yjk2N2ZhYmJlNTlhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCQmxvY2tlZEV2ZW50LmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgSURCQmxvY2tlZEV2ZW50X2gKKyNkZWZpbmUgSURCQmxvY2tlZEV2ZW50X2gKKworI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCRXZlbnQuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQkJsb2Nr
ZWRFdmVudCA6IHB1YmxpYyBJREJFdmVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SURCQmxvY2tlZEV2ZW50PiBjcmVhdGUoUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgY29u
c3QgU3RyaW5nJiB2ZXJzaW9uKTsKKyAgICAvLyBGSVhNRTogTmVlZCB0byBhbGxvdyBjcmVhdGlv
biBvZiB0aGVzZSBldmVudHMgZnJvbSBKUy4KKyAgICB2aXJ0dWFsIH5JREJCbG9ja2VkRXZlbnQo
KTsKKworICAgIHZpcnR1YWwgYm9vbCBpc0lEQkJsb2NrZWRFdmVudCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KKworICAgIHZpcnR1YWwgU3RyaW5nIHZlcnNpb24oKTsKKworcHJpdmF0ZToKKyAg
ICBJREJCbG9ja2VkRXZlbnQoUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgY29uc3QgU3RyaW5n
JiB2ZXJzaW9uKTsKKworICAgIFN0cmluZyBtX3ZlcnNpb247Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2VuZGlm
IC8vIElEQkJsb2NrZWRFdmVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQkJsb2NrZWRFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJsb2NrZWRF
dmVudC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDI4MmUyNjNkZDRjZDJmNWE3MzE5NzJiNDg5YTNhOGIwNGU2
NzRmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmxvY2tl
ZEV2ZW50LmlkbApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHN0b3JhZ2UgeworCisg
ICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQorICAg
IF0gSURCQmxvY2tlZEV2ZW50IDogSURCRXZlbnQgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIHZlcnNpb247CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNh
bGxiYWNrcy5oCmluZGV4IDI5ZmIxYzQ2OTM1MTk4NmIxZDRjYTYyZGI4OWZjZDA3NWUxOGZiOWMu
LmE1MDJlZDY2MmVhZDkwZDZhYjVlYzBkNzllMzA5YmRhNmY0OTU3YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJDYWxsYmFja3MuaApAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZT4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nl
c3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIG9uQmxvY2tlZCgpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKaW5kZXggOWE1ZWI2YzYyZmNlNDY3OGJkNGRl
OWZjN2M0MTY1YzMyZmY1YTc2MC4uNTZhODkxNDE5NTVkZGI5MDdmYjM4ZThhN2FmNzlhYmM1MjVh
OTEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKQEAgLTMyLDcgKzMy
LDcgQEAKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUg
IklEQkluZGV4LmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKLSNpbmNsdWRlICJJREJS
ZXF1ZXN0LmgiCisjaW5jbHVkZSAiSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaCIKICNpbmNsdWRl
ICJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
ICNpbmNsdWRlIDxsaW1pdHM+CkBAIC05Nyw5ICs5Nyw5IEBAIHZvaWQgSURCRGF0YWJhc2U6OmRl
bGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgbV9iYWNrZW5kLT5kZWxldGVPYmplY3RTdG9yZShuYW1lLCBtX3NldFZlcnNpb25UcmFuc2Fj
dGlvbi0+YmFja2VuZCgpLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCRGF0
YWJhc2U6OnNldFZlcnNpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCVmVyc2lv
bkNoYW5nZVJlcXVlc3Q+IElEQkRhdGFiYXNlOjpzZXRWZXJzaW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUo
Y29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIDApOworICAgIFJlZlB0cjxJREJWZXJzaW9u
Q2hhbmdlUmVxdWVzdD4gcmVxdWVzdCA9IElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpjcmVhdGUo
Y29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIHZlcnNpb24pOwogICAgIG1fYmFja2VuZC0+
c2V0VmVyc2lvbih2ZXJzaW9uLCByZXF1ZXN0LCBlYyk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9
CkBAIC0xMzYsNyArMTM2LDEwIEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQkRhdGFi
YXNlOjp0cmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250CiAKIHZvaWQgSURC
RGF0YWJhc2U6OmNsb3NlKCkKIHsKKyAgICBpZiAobV9ub05ld1RyYW5zYWN0aW9ucykKKyAgICAg
ICAgcmV0dXJuOwogICAgIG1fbm9OZXdUcmFuc2FjdGlvbnMgPSB0cnVlOworICAgIG1fYmFja2Vu
ZC0+Y2xvc2UoKTsKIH0KIAogYm9vbCBJREJEYXRhYmFzZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaAppbmRleCBmOTBkZGQzOGJmZjUw
MjVkZmM3YTA1MzBhNTMxMGQzODc1MjFkNTE4Li41MWU3YTk5MjI1ODhlYTdiNzg4Yjk0ZDQ4YWVk
YzFhZTUyYzRjMDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oCkBAIC00Myw4
ICs0Myw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSURCQW55OwotY2xhc3Mg
SURCUmVxdWVzdDsKK2NsYXNzIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OworY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgSURCRGF0YWJhc2UgOiBwdWJsaWMgUmVmQ291bnRl
ZDxJREJEYXRhYmFzZT4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVj
dCB7CiBwdWJsaWM6CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmU+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgT3B0aW9uc09iamVjdCYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZU9iamVj
dFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gc2V0VmVyc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
U3RyaW5nJiB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJWZXJz
aW9uQ2hhbmdlUmVxdWVzdD4gc2V0VmVyc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU3RyaW5nJiB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBjbG9zZSgpOwog
CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhYm9ydCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCRGF0YWJhc2UuaWRsCmluZGV4IDM5MjIxNDQ0OWVlZjk3MTkyMDQ4YzljMzQ4
NzE4OWEyNGIyMzFhYjUuLmU2ZTgxOWJjMmNlMjFmZjAzMzIwMTRhNzYxYWY1ODBiODY2NWJiZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaWRsCkBAIC00MCw3ICs0MCw3IEBA
IG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRp
b24pOwogICAgICAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGluIERPTVN0cmluZyBuYW1lKQog
ICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7Ci0gICAgICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IHNldFZlcnNpb24oaW4gRE9N
U3RyaW5nIHZlcnNpb24pCisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
XSBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCBzZXRWZXJzaW9uKGluIERPTVN0cmluZyB2ZXJzaW9u
KQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgICAgIFtD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlv
bihpbiBbT3B0aW9uYWxdIERPTVN0cmluZ0xpc3Qgc3RvcmVOYW1lcywgaW4gW09wdGlvbmFsXSB1
bnNpZ25lZCBzaG9ydCBtb2RlKQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2Vw
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFj
a2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmNwcAppbmRleCAxMzNjNWFlYjQwNDU3YWVkNjZmNDg2NTA0MzJhMmRlZGVjYzM4YzdiLi4y
NjlhMzUxYjViZTVlMDQxNzgzMjJlNDExMjljNTljNTA4MjE4Yzc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTk1LDYgKzk1
LDcgQEAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25z
dCBTdHJpbmcmIG5hbWUsIElEQlNRTGl0ZURhdGEKICAgICAsIG1faWRlbnRpZmllcih1bmlxdWVJ
ZGVudGlmaWVyKQogICAgICwgbV9mYWN0b3J5KGZhY3RvcnkpCiAgICAgLCBtX3RyYW5zYWN0aW9u
Q29vcmRpbmF0b3IoY29vcmRpbmF0b3IpCisgICAgLCBtX29wZW5Db25uZWN0aW9uQ291bnQoMCkK
IHsKICAgICBBU1NFUlQoIW1fbmFtZS5pc051bGwoKSk7CiAKQEAgLTIxMSw2ICsyMTIsMTUgQEAg
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZUludGVybmFsKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLAogCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNl
dFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
cHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICAvLyBGSVhNRTogT25seSBj
b250aW51ZSBpZiB0aGUgY29ubmVjdGlvbiBpcyBzdGlsbCBvcGVuLgorICAgIGlmIChtX29wZW5D
b25uZWN0aW9uQ291bnQgPiAxKSB7CisgICAgICAgIHBycENhbGxiYWNrcy0+b25CbG9ja2VkKCk7
CisgICAgICAgIFJlZlB0cjxQZW5kaW5nU2V0VmVyc2lvbkNhbGw+IHBlbmRpbmdTZXRWZXJzaW9u
Q2FsbCA9IGFkb3B0UmVmKG5ldyBQZW5kaW5nU2V0VmVyc2lvbkNhbGwpOworICAgICAgICBwZW5k
aW5nU2V0VmVyc2lvbkNhbGwtPm1fY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOworICAgICAgICBw
ZW5kaW5nU2V0VmVyc2lvbkNhbGwtPnZlcnNpb24gPSB2ZXJzaW9uOworICAgICAgICBtX3BlbmRp
bmdTZXRWZXJzaW9uQ2FsbHMuYXBwZW5kKHBlbmRpbmdTZXRWZXJzaW9uQ2FsbCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFi
YXNlID0gdGhpczsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxs
YmFja3M7CiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01T
dHJpbmdMaXN0OjpjcmVhdGUoKTsKQEAgLTI0Nyw5ICsyNTcsMjMgQEAgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5z
YWN0aW9uKEQKICAgICByZXR1cm4gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKG9i
amVjdFN0b3JlTmFtZXMsIG1vZGUsIHRoaXMpOwogfQogCit2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6Om9wZW4oKQoreworICAgIG1fb3BlbkNvbm5lY3Rpb25Db3VudCsrOworfQorCiB2b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVt
ZW50LgorICAgIG1fb3BlbkNvbm5lY3Rpb25Db3VudC0tOworICAgIEFTU0VSVChtX29wZW5Db25u
ZWN0aW9uQ291bnQgPj0gMCk7CisgICAgaWYgKG1fb3BlbkNvbm5lY3Rpb25Db3VudCA9PSAxKSB7
CisgICAgICAgIHdoaWxlICghbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgLy8gRklYTUU6IERvIHNvbWV0aGluZyBiZXR0ZXIgd2l0aCBlYz8KKyAgICAg
ICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgICAgICAgICBSZWZQdHI8UGVuZGluZ1NldFZl
cnNpb25DYWxsPiBwZW5kaW5nU2V0VmVyc2lvbkNhbGwgPSBtX3BlbmRpbmdTZXRWZXJzaW9uQ2Fs
bHMudGFrZUZpcnN0KCk7CisgICAgICAgICAgICBzZXRWZXJzaW9uKHBlbmRpbmdTZXRWZXJzaW9u
Q2FsbC0+dmVyc2lvbiwgcGVuZGluZ1NldFZlcnNpb25DYWxsLT5tX2NhbGxiYWNrcy5yZWxlYXNl
KCksIGVjKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpsb2FkT2JqZWN0U3RvcmVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggODk0Mjk2ODViYzg0OWYxMjU4NjFkODNmZDQ5NTcx
OGI1Mzg4ZTA5MC4uYWI3M2E2YzlkMTE1MjMxMmEzZDExZGI4N2FjMDVhMGI3NGJiZTgxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklE
QkRhdGFiYXNlLmgiCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTUzLDYgKzU0LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IGludDY0X3QgSW52YWxpZElkID0gMDsKICAg
ICBpbnQ2NF90IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIHZvaWQgb3BlbigpOwog
CiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAg
IHZpcnR1YWwgU3RyaW5nIHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb247IH0KQEAg
LTk0LDYgKzk2LDE0IEBAIHByaXZhdGU6CiAgICAgT2JqZWN0U3RvcmVNYXAgbV9vYmplY3RTdG9y
ZXM7CiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcj4gbV90cmFuc2FjdGlv
bkNvb3JkaW5hdG9yOworCisgICAgaW50IG1fb3BlbkNvbm5lY3Rpb25Db3VudDsKKworICAgIHN0
cnVjdCBQZW5kaW5nU2V0VmVyc2lvbkNhbGwgOiBSZWZDb3VudGVkPFBlbmRpbmdTZXRWZXJzaW9u
Q2FsbD4geworICAgICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKKyAgICAg
ICAgU3RyaW5nIHZlcnNpb247CisgICAgfTsKKyAgICBEZXF1ZTxSZWZQdHI8UGVuZGluZ1NldFZl
cnNpb25DYWxsPiA+IG1fcGVuZGluZ1NldFZlcnNpb25DYWxsczsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZS5oCmluZGV4IDljYzcyMzBhY2Q4MDYyOGUxZjkwYmI2NDQ2NTBlNGNk
MTZlZTg1ODMuLmM0OTQxZGRiMGMwNWExNmE3ZDA0Y2JlMzdkN2Y2YTM5YzU4MTI4N2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2UuaApAQCAtNDAsNyArNDAsNiBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIElEQkNhbGxiYWNrczsK
IGNsYXNzIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTsKIGNsYXNzIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZTsKLWNsYXNzIElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzOwogCiAv
LyBUaGlzIGNsYXNzIGlzIHNoYXJlZCBieSBJREJEYXRhYmFzZSAoYXN5bmMpIGFuZCBJREJEYXRh
YmFzZVN5bmMgKHN5bmMpLgogLy8gVGhpcyBpcyBpbXBsZW1lbnRlZCBieSBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsIGFuZCBvcHRpb25hbGx5IG90aGVycyAoaW4gb3JkZXIgdG8gcHJveHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAppbmRleCAw
ZTg4M2NmZTJlNDU2NDc4NmY5NDIyMWY4NGNmYTU1YjMyZDE3N2I5Li4zNzJkNTRjNzg5MWNlNDE3
MGMwMzdkOGNiZDIyYmM0OWIyM2I0ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCkBAIC0yMTMsNiArMjEzLDcgQEAgdm9pZCBJREJG
YWN0b3J5QmFja2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2EKICAgICBTdHJpbmcgdW5pcXVlSWRlbnRpZmllciA9IGZpbGVJZGVudGlm
aWVyICsgIkAiICsgbmFtZTsKICAgICBJREJEYXRhYmFzZUJhY2tlbmRNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZmluZCh1bmlxdWVJZGVudGlmaWVyKTsKICAgICBpZiAo
aXQgIT0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZW5kKCkpIHsKKyAgICAgICAgaXQtPnNlY29uZC0+
b3BlbigpOwogICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhpdC0+c2Vjb25kKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTIzNSw2ICsyMzYsNyBAQCB2b2lkIElEQkZhY3RvcnlCYWNr
ZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYQogICAgIH0KIAogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFz
ZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFtZSwgc3FsaXRlRGF0
YWJhc2UuZ2V0KCksIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQoKSwgdGhpcywgdW5pcXVl
SWRlbnRpZmllcik7CisgICAgZGF0YWJhc2VCYWNrZW5kLT5vcGVuKCk7CiAgICAgY2FsbGJhY2tz
LT5vblN1Y2Nlc3MoZGF0YWJhc2VCYWNrZW5kLmdldCgpKTsKICAgICBtX2RhdGFiYXNlQmFja2Vu
ZE1hcC5zZXQodW5pcXVlSWRlbnRpZmllciwgZGF0YWJhc2VCYWNrZW5kLmdldCgpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCmluZGV4IGU3NDk4ZWNlNWNmZDAyNDIwNDM5
NDJlNDkzZWNiYzkzZDU2OTc4ZWEuLjFiMGE1ZTVkMzYxOTUzMDc0YWRhZTJiZGYwMGMwMGVlNDE2
NWU3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcApAQCAtMzYsMTAgKzM2
LDExIEBACiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKICNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCisjaW5jbHVkZSAiSURCQmxvY2tlZEV2ZW50Lmgi
CiAjaW5jbHVkZSAiSURCQ3Vyc29yLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKLSNpbmNs
dWRlICJJREJJbmRleC5oIgogI2luY2x1ZGUgIklEQkVycm9yRXZlbnQuaCIKKyNpbmNsdWRlICJJ
REJJbmRleC5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSURCUGVu
ZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oIgogI2luY2x1ZGUgIklEQlN1Y2Nlc3NFdmVudC5oIgpA
QCAtMTQxLDYgKzE0MiwxMSBAQCBib29sIElEQlJlcXVlc3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0CiAgICAgcmV0dXJuICFtX2ZpbmlzaGVkIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVu
ZGluZ0FjdGl2aXR5KCk7CiB9CiAKK3ZvaWQgSURCUmVxdWVzdDo6b25CbG9ja2VkKCkKK3sKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSURC
UmVxdWVzdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEFj
dGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtMTUyLDcgKzE1OCw4
IEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVu
dCkKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQoZXZl
bnQtPnRhcmdldCgpID09IHRoaXMpOwogICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPCBET05FKTsK
LSAgICBtX3JlYWR5U3RhdGUgPSBET05FOworICAgIGlmICghZXZlbnQtPmlzSURCQmxvY2tlZEV2
ZW50KCkpCisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IERPTkU7CiAKICAgICBWZWN0b3I8UmVmUHRy
PEV2ZW50VGFyZ2V0PiA+IHRhcmdldHM7CiAgICAgdGFyZ2V0cy5hcHBlbmQodGhpcyk7CkBAIC0x
NjUsNyArMTcyLDcgQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8
RXZlbnQ+IGV2ZW50KQogICAgICAgICB0YXJnZXRzLmFwcGVuZChtX3RyYW5zYWN0aW9uLT5kYigp
KTsKICAgICB9CiAKLSAgICBBU1NFUlQoZXZlbnQtPmlzSURCRXJyb3JFdmVudCgpIHx8IGV2ZW50
LT5pc0lEQlN1Y2Nlc3NFdmVudCgpKTsKKyAgICBBU1NFUlQoZXZlbnQtPmlzSURCRXJyb3JFdmVu
dCgpIHx8IGV2ZW50LT5pc0lEQlN1Y2Nlc3NFdmVudCgpIHx8IGV2ZW50LT5pc0lEQkJsb2NrZWRF
dmVudCgpKTsKICAgICBib29sIGRvbnRQcmV2ZW50RGVmYXVsdCA9IHN0YXRpY19jYXN0PElEQkV2
ZW50Kj4oZXZlbnQuZ2V0KCkpLT5kaXNwYXRjaCh0YXJnZXRzKTsKIAogICAgIC8vIElmIHRoZSBl
dmVudCdzIHJlc3VsdCB3YXMgb2YgdHlwZSBJREJDdXJzb3IsIHRoZW4gaXQncyBwb3NzaWJsZSBm
b3IgdXMgdG8KQEAgLTE3NCw3ICsxODEsNyBAQCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgICAgIFJlZlB0cjxJREJBbnk+IGFueSA9
IHN0YXRpY19jYXN0PElEQlN1Y2Nlc3NFdmVudCo+KGV2ZW50LmdldCgpKS0+cmVzdWx0KCk7CiAg
ICAgICAgIGlmIChhbnktPnR5cGUoKSAhPSBJREJBbnk6OklEQkN1cnNvclR5cGUpCiAgICAgICAg
ICAgICBtX2ZpbmlzaGVkID0gdHJ1ZTsKLSAgICB9IGVsc2UKKyAgICB9IGVsc2UgaWYgKCFldmVu
dC0+aXNJREJCbG9ja2VkRXZlbnQoKSkKICAgICAgICAgbV9maW5pc2hlZCA9IHRydWU7CiAKICAg
ICBpZiAobV90cmFuc2FjdGlvbikgewpAQCAtMTk4LDYgKzIwNSwxMSBAQCB2b2lkIElEQlJlcXVl
c3Q6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICBldmVudFF1ZXVl
LT5lbnF1ZXVlRXZlbnQoZXZlbnQpOwogfQogCitJREJBbnkqIElEQlJlcXVlc3Q6OnNvdXJjZSgp
Cit7CisgICAgcmV0dXJuIG1fc291cmNlLmdldCgpOworfQorCiBFdmVudFRhcmdldERhdGEqIElE
QlJlcXVlc3Q6OmV2ZW50VGFyZ2V0RGF0YSgpCiB7CiAgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0
RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKaW5kZXggNWMzMTMxOGFiYTQ1NmJk
YjJlZmY5ZjYwZTUxNTY0NTk0MTJmNzdjNS4uNzc0Mjg2OGZjYzMzN2JmNWZiN2UwNWMzOGZmNWVi
YWNmNmM4ZmVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKQEAgLTU5LDYgKzU5
LDcgQEAgcHVibGljOgogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3Ip
OwogCiAgICAgYm9vbCByZXNldFJlYWR5U3RhdGUoSURCVHJhbnNhY3Rpb24qKTsKKyAgICBJREJB
bnkqIHNvdXJjZSgpOwogCiAgICAgLy8gSURCQ2FsbGJhY2tzCiAgICAgdmlydHVhbCB2b2lkIG9u
RXJyb3IoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik7CkBAIC02OSw2ICs3MCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKKyAgICB2aXJ0dWFs
IHZvaWQgb25CbG9ja2VkKCk7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICB2aXJ0dWFs
IGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CkBAIC04MiwxMSArODQsMTEgQEAgcHVi
bGljOgogICAgIHVzaW5nIFRocmVhZFNhZmVTaGFyZWQ8SURCQ2FsbGJhY2tzPjo6cmVmOwogICAg
IHVzaW5nIFRocmVhZFNhZmVTaGFyZWQ8SURCQ2FsbGJhY2tzPjo6ZGVyZWY7CiAKLXByaXZhdGU6
Citwcm90ZWN0ZWQ6CiAgICAgSURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFz
c1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qKTsKLQogICAgIHZvaWQgZW5x
dWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKIAorcHJpdmF0ZToKICAgICAvLyBFdmVudFRh
cmdldAogICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42NDg2YzY0NTYwMzI2MjVhYzViYWZmY2YwZjVlNzA1YTlhZDgwZTgyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5jcHAK
QEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJ
REJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CisKKyNpbmNsdWRlICJJREJCbG9ja2VkRXZlbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxJREJWZXJz
aW9uQ2hhbmdlUmVxdWVzdD4gSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBjb25z
dCBTdHJpbmcmIHZlcnNpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJWZXJzaW9u
Q2hhbmdlUmVxdWVzdChjb250ZXh0LCBzb3VyY2UsIHZlcnNpb24pKTsKK30KKworSURCVmVyc2lv
bkNoYW5nZVJlcXVlc3Q6OklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGNvbnN0IFN0cmluZyYg
dmVyc2lvbikKKyAgICA6IElEQlJlcXVlc3QoY29udGV4dCwgc291cmNlLCAwKQorICAgICwgbV92
ZXJzaW9uKHZlcnNpb24pCit7Cit9CisKK0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Ojp+SURCVmVy
c2lvbkNoYW5nZVJlcXVlc3QoKQoreworfQorCit2b2lkIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0
OjpvbkJsb2NrZWQoKQoreworICAgIGVucXVldWVFdmVudChJREJCbG9ja2VkRXZlbnQ6OmNyZWF0
ZShzb3VyY2UoKSwgbV92ZXJzaW9uKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFu
Z2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1
ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzJjZjRjMDM1MWViNTM4OTAzYjUxZWI2NDk1YTkxNWFmOTNmNDEy
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNo
YW5nZVJlcXVlc3QuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJWZXJzaW9u
Q2hhbmdlUmVxdWVzdF9oCisjZGVmaW5lIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0X2gKKworI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCUmVxdWVzdC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IDogcHVi
bGljIElEQlJlcXVlc3QgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlZlcnNp
b25DaGFuZ2VSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8SURCQW55PiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CisgICAgdmlydHVhbCB+
SURCVmVyc2lvbkNoYW5nZVJlcXVlc3QoKTsKKworICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQo
KTsKKworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYmxvY2tlZCk7CisKK3By
aXZhdGU6CisgICAgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CisK
KyAgICBTdHJpbmcgbV92ZXJzaW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBJREJSZXF1ZXN0
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJl
cXVlc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVz
dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZmZhYzczNTQ3MGEyYTliMDBkMmQ0OWE3ODZlZjE3NmJjOWE5N2Ez
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNo
YW5nZVJlcXVlc3QuaWRsCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgc3RvcmFnZSB7
CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNF
LAorICAgICAgICBFdmVudFRhcmdldAorICAgIF0gSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QgOiBJ
REJSZXF1ZXN0IHsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25ibG9ja2VkOwor
ICAgIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDYwM2VlYWI5ZWNjNjgxYjNm
OTA3Y2FjYzFjZjFjZmU2MWJlNmI1NjQuLjc0YTYyZmM3MmNkNmNhN2VlODNlN2YwMzM0M2IwMmRm
NzFmMjJjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MTEtMDItMTEgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGluZGV4ZWRkYjogbWFrZSBz
ZXRWZXJzaW9uIGZpcmUgYmxvY2tlZCBldmVudCBpZiBvdGhlciBjb25uZWN0aW9ucyBhcmUgb3Bl
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MjgK
KworICAgICAgICAqIHB1YmxpYy9XZWJJREJDYWxsYmFja3MuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ2FsbGJhY2tzOjpvbkJsb2NrZWQpOgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDYWxsYmFja3NQcm94eTo6b25CbG9ja2Vk
KToKKyAgICAgICAgKiBzcmMvSURCQ2FsbGJhY2tzUHJveHkuaDoKKyAgICAgICAgKiBzcmMvV2Vi
SURCQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJJREJDYWxsYmFja3NJ
bXBsOjpvbkJsb2NrZWQpOgorICAgICAgICAqIHNyYy9XZWJJREJDYWxsYmFja3NJbXBsLmg6CisK
IDIwMTEtMDItMTEgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJDYWxsYmFja3MuaAppbmRleCAxMjRiNmI4MGY1ZjRmNTk2ZjhlOWNmNWQxNWEz
NmVmMjM0MjI0NmZhLi4xZWI2ZDNhMDk2YWUwNDliNjNjYWViMTQyNGM1NDI1YWE3MWU2NGIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDYWxsYmFja3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaApA
QCAtNTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJJ
REJPYmplY3RTdG9yZSopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJJREJUcmFuc2FjdGlvbiopIHsgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKaW5kZXggZGJhMjhkOTRlYWZlNjNiODgwOTIx
MGM2OGRmOWNkZGZjOWYyMmMwZC4uNDY1NDk1MDYzMjI0ZWY0MmE1MTU1NjU3NWU4MGFlZmNmZjNj
NGY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tz
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1By
b3h5LmNwcApAQCAtOTksNiArOTksMTEgQEAgdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNj
ZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2MKICAgICBt
X2NhbGxiYWNrcy0+b25TdWNjZXNzKFdlYktpdDo6V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKHNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSkpOwogfQogCit2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvbkJs
b2NrZWQoKQoreworICAgIG1fY2FsbGJhY2tzLT5vbkJsb2NrZWQoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAppbmRleCBlMWRi
MjNkNDM5ZjZhYTVmNzY4NjhhMDI3NzRmNjlkOTAwNWMwNzhmLi43ZGVkOGVhZTRlMzI4MDVkYTE0
NDMzODc3ZjVkNzUzMDI4MWJiMzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJDYWxsYmFja3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkNhbGxiYWNrc1Byb3h5LmgKQEAgLTU1LDYgKzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOworICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQo
KTsKIAogcHJpdmF0ZToKICAgICBJREJDYWxsYmFja3NQcm94eShQYXNzT3duUHRyPFdlYktpdDo6
V2ViSURCQ2FsbGJhY2tzPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkNhbGxiYWNrc0ltcGwuY3BwCmluZGV4IGJiN2ExOWJjZjIxOWNmMjA1M2M4YzdkMDU0ZDBh
OTBkYWNlZTEzZTcuLjU3MDNmMjdjOTg3MzRmNzcxNmMyZjRiZmI3NmU2MDRlYzQxMjJkMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwu
Y3BwCkBAIC05Niw2ICs5NiwxMSBAQCB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vz
cyhjb25zdCBXZWJLaXQ6OldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaQogICAgIG1fY2Fs
bGJhY2tzLT5vblN1Y2Nlc3Moc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKIH0KIAordm9pZCBXZWJJ
REJDYWxsYmFja3NJbXBsOjpvbkJsb2NrZWQoKQoreworICAgIG1fY2FsbGJhY2tzLT5vbkJsb2Nr
ZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJDYWxsYmFja3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJD
YWxsYmFja3NJbXBsLmgKaW5kZXggZDJhZTI1NTYyOWZiYTAxODE4NTQ3MmU5MWJiNjYxYWIyMmIz
Mzc4Yi4uMWU3NmRlY2YxOTA5YmRjNzUzYzFiMjIyZmNhNWJhYzhjZGJkYzFjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaApAQCAtNDks
NiArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJLaXQ6Oldl
YklEQk9iamVjdFN0b3JlKik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJLaXQ6Oldl
YklEQlRyYW5zYWN0aW9uKik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJL
aXQ6OldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpOworICAgIHZpcnR1YWwgdm9pZCBvbkJsb2Nr
ZWQoKTsKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82209</attachid>
            <date>2011-02-11 16:52:55 -0800</date>
            <delta_ts>2011-02-14 13:52:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53728-20110211165254.patch</filename>
            <type>text/plain</type>
            <size>49819</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiZGJiYmQyNTdmYmZkNjA2MDUzZTY0ZDYxN2M1YjA4NGVlMDNmZTVkLi4zNTYwNTQx
MGJiZTEzMTI4MmZmZDA5NzMwOTMyMDc4MjJjYjU4ZjhlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTEtMDItMTEgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGluZGV4ZWRkYjogbWFr
ZSBzZXRWZXJzaW9uIGZpcmUgYmxvY2tlZCBldmVudCBpZiBvdGhlciBjb25uZWN0aW9ucyBhcmUg
b3BlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3
MjgKKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanM6Cisg
ICAgICAgICh1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrKToKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2VkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fYmxvY2tlZC5odG1sOiBBZGRlZC4KKwog
MjAxMS0wMi0xMSAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzCmluZGV4IDhjNTY4MzIxMGRiY2NlNDlmOTgy
ZGEzM2Y3ZGJkOWQ5OTI3YWJhM2QuLjA4NWRiMmU2MmMxYTVhZGZjZDRkZjk5NWZiZDMyNzQzY2Jh
M2JmMjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9zaGFyZWQuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L3NoYXJlZC5qcwpAQCAtODcsNiArODcsMTEgQEAgZnVuY3Rpb24gdW5leHBlY3RlZENvbXBsZXRl
Q2FsbGJhY2soKQogICAgIGRvbmUoKTsKIH0KIAorZnVuY3Rpb24gdW5leHBlY3RlZEJsb2NrZWRD
YWxsYmFjaygpCit7CisgICAgdGVzdEZhaWxlZCgib25ibG9ja2VkIGNhbGxlZCB1bmV4cGVjdGVk
bHkiKTsKK30KKwogZnVuY3Rpb24gZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbihjbWQsIGV4cGVjdGVk
KQogewogICAgIGRlYnVnKCJFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gIiArIGNtZCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2Vk
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9u
X2Jsb2NrZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5MDg5MDc2OTcxZGQ0YmYxNWQ1MzVj
NjAyZjA2NGNmOGNkOTE0ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIw
IEBACitBbiBvcGVuIGNvbm5lY3Rpb24gYmxvY2tzIGEgc2VwYXJhdGUgY29ubmVjdGlvbidzIHNl
dFZlcnNpb24gY2FsbAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBJbmRl
eGVkREIgPT0gbnVsbCBpcyBmYWxzZQord2Via2l0SW5kZXhlZERCLm9wZW4oJ3NvbWUgZGIgbmFt
ZScpCit3ZWJraXRJbmRleGVkREIub3Blbignc29tZSBkYiBuYW1lJykKK2Nvbm5lY3Rpb25zWzBd
LnNldFZlcnNpb24oJ3ZlcnNpb24gMScpCitzZWVuX2Jsb2NrZWRfZXZlbnQgPSB0cnVlCitQQVNT
IGJsb2NrZWRfZXZlbnQudmVyc2lvbiBpcyAidmVyc2lvbiAxIgorUEFTUyByZXN1bHQucmVhZHlT
dGF0ZSBpcyAxCitjb25uZWN0aW9uc1sxXS5jbG9zZSgpCitpbiBzZXRWZXJzaW9uLm9uc3VjY2Vz
cworUEFTUyBzZWVuX2Jsb2NrZWRfZXZlbnQgaXMgdHJ1ZQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0
b3Jlcy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9i
bG9ja2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9i
bG9ja2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2I5OTI4MjBlMDgzZjFmZDVhZDhiYzc3ZmEyYTk2ZTU2
ZjgyMTQ0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3NldF92ZXJzaW9uX2Jsb2NrZWQuaHRtbApAQCAtMCwwICsxLDcyIEBACis8aHRtbD4NCis8aGVh
ZD4NCis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4NCis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pg0KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0Pg0KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4NCis8L2hlYWQ+DQorPGJvZHk+DQor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+DQorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+DQorPHNj
cmlwdD4NCisNCitkZXNjcmlwdGlvbigiQW4gb3BlbiBjb25uZWN0aW9uIGJsb2NrcyBhIHNlcGFy
YXRlIGNvbm5lY3Rpb24ncyBzZXRWZXJzaW9uIGNhbGwiKTsNCitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQ0KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
DQorDQorY29ubmVjdGlvbnMgPSBbXQ0KK2Z1bmN0aW9uIHRlc3QoKQ0KK3sNCisgICAgaWYgKCd3
ZWJraXRJbmRleGVkREInIGluIHdpbmRvdykNCisgICAgICAgIEluZGV4ZWREQiA9IHdlYmtpdElu
ZGV4ZWREQjsNCisgICAgZWxzZSBpZiAoJ21vekluZGV4ZWREQicgaW4gd2luZG93KQ0KKyAgICAg
ICAgSW5kZXhlZERCID0gbW96SW5kZXhlZERCOw0KKyAgICBzaG91bGRCZUZhbHNlKCJJbmRleGVk
REIgPT0gbnVsbCIpOw0KKyAgICBvcGVuREJDb25uZWN0aW9uKCk7DQorfQ0KKw0KK2Z1bmN0aW9u
IG9wZW5EQkNvbm5lY3Rpb24oKQ0KK3sNCisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygid2Via2l0
SW5kZXhlZERCLm9wZW4oJ3NvbWUgZGIgbmFtZScpIik7DQorICAgIHJlc3VsdC5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczsNCisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsNCit9DQorDQorZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQ0KK3sNCisgICAgY29ubmVjdGlv
biA9IGV2ZW50LnJlc3VsdDsNCisgICAgY29ubmVjdGlvbnMucHVzaChjb25uZWN0aW9uKTsNCisg
ICAgaWYgKGNvbm5lY3Rpb25zLmxlbmd0aCA8IDIpDQorICAgICAgICBvcGVuREJDb25uZWN0aW9u
KCk7DQorICAgIGVsc2Ugew0KKyAgICAgICAgcmVzdWx0ID0gZXZhbEFuZExvZygiY29ubmVjdGlv
bnNbMF0uc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsNCisgICAgICAgIHJlc3VsdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQorICAgICAgICByZXN1bHQub25zdWNjZXNzID0g
aW5TZXRWZXJzaW9uOw0KKyAgICAgICAgcmVzdWx0Lm9uYmxvY2tlZCA9IGJsb2NrZWQ7DQorICAg
IH0NCit9DQorDQorc2Vlbl9ibG9ja2VkX2V2ZW50ID0gZmFsc2U7DQorZnVuY3Rpb24gYmxvY2tl
ZChudW1fYmxvY2tlZF9ldmVudHMpDQorew0KKyAgICBldmFsQW5kTG9nKCJzZWVuX2Jsb2NrZWRf
ZXZlbnQgPSB0cnVlIik7DQorICAgIGJsb2NrZWRfZXZlbnQgPSBldmVudDsNCisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJibG9ja2VkX2V2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAxIik7DQor
ICAgIHNob3VsZEV2YWx1YXRlVG8oInJlc3VsdC5yZWFkeVN0YXRlIiwgMSk7DQorICAgIGV2YWxB
bmRMb2coImNvbm5lY3Rpb25zWzFdLmNsb3NlKCkiKTsNCit9DQorDQorZnVuY3Rpb24gaW5TZXRW
ZXJzaW9uKCkNCit7DQorICAgIGRlYnVnKCJpbiBzZXRWZXJzaW9uLm9uc3VjY2VzcyIpOw0KKyAg
ICBzaG91bGRCZVRydWUoInNlZW5fYmxvY2tlZF9ldmVudCIpOw0KKyAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoY29ubmVjdGlvbnNbMF0sIGRvbmUpOw0KK30NCisNCit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsNCisNCit0ZXN0KCk7DQorDQorPC9zY3JpcHQ+DQorPC9ib2R5Pg0KKzwv
aHRtbD4NCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVy
c2lvbl9xdWV1ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9z
ZXRfdmVyc2lvbl9xdWV1ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNmYjUxOTBiNTA0ODk3
ZjJlODkyNTA5ODRmMGJhNjBmNmFkOGMzYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX3F1ZXVlLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDI0IEBACitBbiBvcGVuIGNvbm5lY3Rpb24gYmxvY2tzIGEgc2VwYXJhdGUgY29ubmVjdGlv
bidzIHNldFZlcnNpb24gY2FsbAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBJbmRleGVkREIgPT0gbnVsbCBpcyBmYWxzZQord2Via2l0SW5kZXhlZERCLm9wZW4oJ3NvbWUg
ZGIgbmFtZScpCit3ZWJraXRJbmRleGVkREIub3Blbignc29tZSBkYiBuYW1lJykKK3dlYmtpdElu
ZGV4ZWREQi5vcGVuKCdzb21lIGRiIG5hbWUnKQorY29ubmVjdGlvbnNbMF0uc2V0VmVyc2lvbign
dmVyc2lvbiAxJykKK2Nvbm5lY3Rpb25zWzFdLnNldFZlcnNpb24oJ3ZlcnNpb24gMicpCitjb25u
ZWN0aW9uc1syXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDMnKQorCitjb25uZWN0aW9uc1syXS5jbG9z
ZSgpCitQQVNTIGJsb2NrZWQxZmlyZWQgaXMgdHJ1ZQorUEFTUyBibG9ja2VkM2ZpcmVkIGlzIGZh
bHNlCitjb25uZWN0aW9uc1swXS5jbG9zZSgpCitGSVhNRTogVGhlIGZpcnN0IHNldFZlcnNpb24g
c2hvdWxkbid0IGdldCBmaXJlZAorUEFTUyBpblNldFZlcnNpb24yCitGSVhNRTogVGhlIHRoaXJk
IHNldFZlcnNpb24gc2hvdWxkbid0IGdldCBmaXJlZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX3F1ZXVlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5ZWQxNDdkNjBh
OTBiOWFjZWJjYjkyMjY2ZWFkOTA1NDI0YzRiZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS5odG1sCkBAIC0wLDAgKzEs
OTkgQEAKKzxodG1sPg0KKzxoZWFkPg0KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPg0KKzxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+DQorPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+
PC9zY3JpcHQ+DQorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pg0K
KzwvaGVhZD4NCis8Ym9keT4NCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4NCis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4NCis8c2NyaXB0Pg0KKw0KK2Rlc2NyaXB0aW9uKCJBbiBvcGVuIGNvbm5l
Y3Rpb24gYmxvY2tzIGEgc2VwYXJhdGUgY29ubmVjdGlvbidzIHNldFZlcnNpb24gY2FsbCIpOw0K
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQorICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsNCisNCitjb25uZWN0aW9ucyA9IFtdDQorZnVuY3Rpb24gdGVz
dCgpDQorew0KKyAgICBpZiAoJ3dlYmtpdEluZGV4ZWREQicgaW4gd2luZG93KQ0KKyAgICAgICAg
SW5kZXhlZERCID0gd2Via2l0SW5kZXhlZERCOw0KKyAgICBlbHNlIGlmICgnbW96SW5kZXhlZERC
JyBpbiB3aW5kb3cpDQorICAgICAgICBJbmRleGVkREIgPSBtb3pJbmRleGVkREI7DQorICAgIHNo
b3VsZEJlRmFsc2UoIkluZGV4ZWREQiA9PSBudWxsIik7DQorICAgIG9wZW5EQkNvbm5lY3Rpb24o
KTsNCit9DQorDQorZnVuY3Rpb24gb3BlbkRCQ29ubmVjdGlvbigpDQorew0KKyAgICByZXN1bHQg
PSBldmFsQW5kTG9nKCJ3ZWJraXRJbmRleGVkREIub3Blbignc29tZSBkYiBuYW1lJykiKTsNCisg
ICAgcmVzdWx0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOw0KKyAgICByZXN1bHQub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KK30NCisNCitmdW5jdGlvbiBvcGVuU3VjY2Vzcygp
DQorew0KKyAgICBjb25uZWN0aW9uID0gZXZlbnQucmVzdWx0Ow0KKyAgICBjb25uZWN0aW9ucy5w
dXNoKGNvbm5lY3Rpb24pOw0KKyAgICBpZiAoY29ubmVjdGlvbnMubGVuZ3RoIDwgMykNCisgICAg
ICAgIG9wZW5EQkNvbm5lY3Rpb24oKTsNCisgICAgZWxzZSB7DQorICAgICAgICByZXN1bHQgPSBl
dmFsQW5kTG9nKCJjb25uZWN0aW9uc1swXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOw0KKyAg
ICAgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCisgICAgICAg
IHJlc3VsdC5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb247DQorICAgICAgICByZXN1bHQub25ibG9j
a2VkID0gYmxvY2tlZDE7DQorICAgICAgICByZXN1bHQyID0gZXZhbEFuZExvZygiY29ubmVjdGlv
bnNbMV0uc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsNCisgICAgICAgIHJlc3VsdDIub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KKyAgICAgICAgcmVzdWx0Mi5vbnN1Y2Nlc3Mg
PSBpblNldFZlcnNpb24yOw0KKyAgICAgICAgcmVzdWx0Mi5vbmJsb2NrZWQgPSBibG9ja2VkMjsN
CisgICAgICAgIHJlc3VsdDMgPSBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1syXS5zZXRWZXJzaW9u
KCd2ZXJzaW9uIDMnKSIpOw0KKyAgICAgICAgcmVzdWx0My5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7DQorICAgICAgICByZXN1bHQzLm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjM7
DQorICAgICAgICByZXN1bHQzLm9uYmxvY2tlZCA9IGJsb2NrZWQzOw0KKyAgICAgICAgZGVidWco
IiIpOw0KKyAgICB9DQorfQ0KKw0KK2Jsb2NrZWQxZmlyZWQgPSBmYWxzZTsNCitibG9ja2VkM2Zp
cmVkID0gZmFsc2U7DQorZnVuY3Rpb24gYmxvY2tlZDEoKQ0KK3sNCisgIGV2YWxBbmRMb2coImNv
bm5lY3Rpb25zWzJdLmNsb3NlKCkiKTsNCisgIGJsb2NrZWQxZmlyZWQgPSB0cnVlOw0KK30NCisN
CitmdW5jdGlvbiBibG9ja2VkMigpDQorew0KKyAgc2hvdWxkQmVUcnVlKCJibG9ja2VkMWZpcmVk
Iik7DQorICBzaG91bGRCZUZhbHNlKCJibG9ja2VkM2ZpcmVkIik7DQorfQ0KK2Z1bmN0aW9uIGJs
b2NrZWQzKCkNCit7DQorICBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1swXS5jbG9zZSgpIik7DQor
ICBibG9ja2VkM2ZpcmVkID0gdHJ1ZTsNCit9DQorDQorZnVuY3Rpb24gaW5TZXRWZXJzaW9uKCkN
Cit7DQorICAgIGRlYnVnKCJGSVhNRTogVGhlIGZpcnN0IHNldFZlcnNpb24gc2hvdWxkbid0IGdl
dCBmaXJlZCIpOw0KK30NCisNCitmdW5jdGlvbiBpblNldFZlcnNpb24yKCkNCit7DQorICAgIHRl
c3RQYXNzZWQoImluU2V0VmVyc2lvbjIiKTsNCit9DQorDQorZnVuY3Rpb24gaW5TZXRWZXJzaW9u
MygpDQorew0KKyAgICBkZWJ1ZygiRklYTUU6IFRoZSB0aGlyZCBzZXRWZXJzaW9uIHNob3VsZG4n
dCBnZXQgZmlyZWQiKTsNCisgICAgZG9uZSgpOw0KK30NCisNCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsNCisNCit0ZXN0KCk7DQorDQorPC9zY3JpcHQ+DQorPC9ib2R5Pg0KKzwvaHRt
bD4NCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNzQyYjk1NWQ2YWNjZTMzYjljMzUyOGRiYzA3YTVmNmY1MmZlZDZk
MC4uMmQ3MTcxNWU0MWQ1ZmFhN2UxNTVkMWRkNWJhYzM5NWUwY2Y3Yzg3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDYzIEBACisyMDExLTAyLTExICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBpbmRleGVkZGI6IG1ha2Ugc2V0VmVyc2lvbiBmaXJlIGJsb2NrZWQgZXZlbnQgaWYgb3RoZXIg
Y29ubmVjdGlvbnMgYXJlIG9wZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUzNzI4CisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvc2V0
X3ZlcnNpb25fYmxvY2tlZC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS5wcmk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBk
b20vRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6OmlzSURCQmxvY2tlZEV2ZW50
KToKKyAgICAgICAgKiBkb20vRXZlbnQuaDoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgor
ICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRh
cmdldDo6dG9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCk6CisgICAgICAgICogZG9tL0V2ZW50VGFy
Z2V0Lmg6CisgICAgICAgICogc3RvcmFnZS9JREJCbG9ja2VkRXZlbnQuY3BwOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmguCisgICAg
ICAgIChXZWJDb3JlOjpJREJCbG9ja2VkRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJCbG9ja2VkRXZlbnQ6OklEQkJsb2NrZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJCbG9ja2VkRXZlbnQ6On5JREJCbG9ja2VkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
QmxvY2tlZEV2ZW50Ojp2ZXJzaW9uKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkJsb2NrZWRFdmVu
dC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFj
a3NJbXBsLmguCisgICAgICAgIChXZWJDb3JlOjpJREJCbG9ja2VkRXZlbnQ6OmlzSURCQmxvY2tl
ZEV2ZW50KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkJsb2NrZWRFdmVudC5pZGw6IEFkZGVkLgor
ICAgICAgICAqIHN0b3JhZ2UvSURCQ2FsbGJhY2tzLmg6CisgICAgICAgICogc3RvcmFnZS9JREJE
YXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpzZXRWZXJzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZTo6c3RvcCk6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5oOgorICAgICAgICAq
IHN0b3JhZ2UvSURCRGF0YWJhc2UuaWRsOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6OnNldFZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpjbG9zZSk6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6
CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAg
ICAgKiBzdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4pOgorICAgICAgICAqIHN0b3JhZ2UvSURCUmVx
dWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpvbkJsb2NrZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJSZXF1ZXN0Ojpzb3VyY2UpOgorICAgICAgICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5o
OgorICAgICAgICAqIHN0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuY3BwOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmguCisg
ICAgICAgIChXZWJDb3JlOjpJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpJREJWZXJzaW9uQ2hhbmdlUmVx
dWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDo6fklEQlZl
cnNpb25DaGFuZ2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VS
ZXF1ZXN0OjpvbkJsb2NrZWQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJl
cXVlc3QuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2Fs
bGJhY2tzSW1wbC5oLgorICAgICAgICAqIHN0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qu
aWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFj
a3NJbXBsLmguCisKIDIwMTEtMDItMTEgIE1pa2UgUmVlZCAgPHJlZWRAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBl
YjgwMTZjNzkwODM3MmQ0ZmRlYWM2OGRlNDIzMWU2Zjk5NTY5ZGE5Li43Zjc3OWVhYmE4NWE3NjBm
ZWU3ODZjZjAxNGIwNDgzNzRiOGI3NzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNzMsNiArMjcz
LDcgQEAKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaWRsJywKICAgICAg
ICAgICAgICdzdG9yYWdlL0RhdGFiYXNlU3luYy5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2Uv
SURCQW55LmlkbCcsCisgICAgICAgICAgICAnc3RvcmFnZS9JREJCbG9ja2VkRXZlbnQuaWRsJywK
ICAgICAgICAgICAgICdzdG9yYWdlL0lEQkN1cnNvci5pZGwnLAogICAgICAgICAgICAgJ3N0b3Jh
Z2UvSURCRGF0YWJhc2VFcnJvci5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCRGF0YWJh
c2VFeGNlcHRpb24uaWRsJywKQEAgLTI4Nyw2ICsyODgsNyBAQAogICAgICAgICAgICAgJ3N0b3Jh
Z2UvSURCUmVxdWVzdC5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCU3VjY2Vzc0V2ZW50
LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5pZGwnLAorICAgICAg
ICAgICAgJ3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaWRsJywKICAgICAgICAgICAg
ICdzdG9yYWdlL1NRTEVycm9yLmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxFeGNlcHRp
b24uaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL1NRTFJlc3VsdFNldC5pZGwnLApAQCAtNDAy
Miw2ICs0MDI0LDggQEAKICAgICAgICAgICAgICdzdG9yYWdlL0lEQkFib3J0RXZlbnQuaCcsCiAg
ICAgICAgICAgICAnc3RvcmFnZS9JREJBbnkuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL0lE
QkFueS5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL0lEQkJsb2NrZWRFdmVudC5jcHAnLAorICAg
ICAgICAgICAgJ3N0b3JhZ2UvSURCQmxvY2tlZEV2ZW50LmgnLAogICAgICAgICAgICAgJ3N0b3Jh
Z2UvSURCQ2FsbGJhY2tzLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCQ29tcGxldGVFdmVu
dC5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCQ29tcGxldGVFdmVudC5oJywKQEAgLTQw
ODEsNiArNDA4NSw4IEBACiAgICAgICAgICAgICAnc3RvcmFnZS9JREJUcmFuc2FjdGlvbkNhbGxi
YWNrcy5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3Iu
Y3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCcs
CisgICAgICAgICAgICAnc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5jcHAnLAorICAg
ICAgICAgICAgJ3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaCcsCiAgICAgICAgICAg
ICAnc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUYXNrLmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9M
b2NhbFN0b3JhZ2VUYXNrLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGhy
ZWFkLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaSBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJpCmluZGV4IDUyZTI3MzhhNmVkMzljODE3OTE0ZDYxNWU1ZDVi
Zjc5NjkwOWY2MmEuLjVlNzhhZjgxOTNjYzdlYWQxMjI5ZTEzMmViMmU3ZWU3YTJkY2I1ZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJpCkBAIC0zMzYsNiArMzM2LDcgQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICBz
dG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaWRsIFwKICAgICBzdG9yYWdlL0RhdGFiYXNlU3luYy5p
ZGwgXAogICAgIHN0b3JhZ2UvSURCQW55LmlkbCBcCisgICAgc3RvcmFnZS9JREJCbG9ja2VkRXZl
bnQuaWRsIFwKICAgICBzdG9yYWdlL0lEQkN1cnNvci5pZGwgXAogICAgIHN0b3JhZ2UvSURCRGF0
YWJhc2VFcnJvci5pZGwgXAogICAgIHN0b3JhZ2UvSURCRGF0YWJhc2VFeGNlcHRpb24uaWRsIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAKaW5kZXggZmQ4
MDM2MGE3M2JlZTYyMTcxZTMyOTE2ZTA0MzZmMzVmYTI1OGQxNi4uN2ExYmFlMWU0ZDAxZDYxMDBh
OTg3ZjQ2MTkwNGEyZmVkNGU0M2YwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudEN1c3RvbS5jcHAKQEAgLTk0LDggKzk0LDEwIEBACiAjZW5kaWYKIAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQorI2luY2x1ZGUgIklEQkJsb2NrZWRFdmVudC5oIgogI2luY2x1
ZGUgIklEQkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJJREJTdWNjZXNzRXZlbnQuaCIKKyNpbmNs
dWRlICJKU0lEQkJsb2NrZWRFdmVudC5oIgogI2luY2x1ZGUgIkpTSURCRXJyb3JFdmVudC5oIgog
I2luY2x1ZGUgIkpTSURCU3VjY2Vzc0V2ZW50LmgiCiAjZW5kaWYKQEAgLTE2Niw2ICsxNjgsOCBA
QCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFdmVudCogZXZlbnQpCiAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX09CSkVD
VF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgU3RvcmFnZUV2ZW50LCBldmVudCk7CiAjZW5k
aWYKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBlbHNlIGlmIChldmVudC0+aXNJ
REJCbG9ja2VkRXZlbnQoKSkKKyAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fT0JKRUNUX1dS
QVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBJREJCbG9ja2VkRXZlbnQsIGV2ZW50KTsKICAgICBl
bHNlIGlmIChldmVudC0+aXNJREJFcnJvckV2ZW50KCkpCiAgICAgICAgIHdyYXBwZXIgPSBDUkVB
VEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgSURCRXJyb3JFdmVudCwg
ZXZlbnQpOwogICAgIGVsc2UgaWYgKGV2ZW50LT5pc0lEQlN1Y2Nlc3NFdmVudCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwCmlu
ZGV4IGZmOWI5OGIyMzFlNGU1YjEyM2IxNWUxNWE4ZDUzODQxNTRkYTZlMTYuLmQ0Mzg3ZGI4MmE5
YzhiMmI1MmJhYzk4OGFhOTNlMDUwOTYzMTVkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudEN1c3RvbS5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAK
ICNpbmNsdWRlICJWOERldmljZU9yaWVudGF0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJWOEVycm9y
RXZlbnQuaCIKICNpbmNsdWRlICJWOEhhc2hDaGFuZ2VFdmVudC5oIgorI2luY2x1ZGUgIlY4SURC
QmxvY2tlZEV2ZW50LmgiCiAjaW5jbHVkZSAiVjhJREJFcnJvckV2ZW50LmgiCiAjaW5jbHVkZSAi
VjhJREJTdWNjZXNzRXZlbnQuaCIKICNpbmNsdWRlICJWOEtleWJvYXJkRXZlbnQuaCIKQEAgLTE1
Niw2ICsxNTcsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChFdmVudCogaW1wbCkKICAg
ICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8U3RvcmFnZUV2ZW50Kj4oaW1wbCkpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisgICAgaWYgKGltcGwtPmlzSURCQmxv
Y2tlZEV2ZW50KCkpCisgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PElEQkJsb2NrZWRF
dmVudCo+KGltcGwpKTsKICAgICBpZiAoaW1wbC0+aXNJREJFcnJvckV2ZW50KCkpCiAgICAgICAg
IHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PElEQkVycm9yRXZlbnQqPihpbXBsKSk7CiAgICAgaWYg
KGltcGwtPmlzSURCU3VjY2Vzc0V2ZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAppbmRleCBiZGMxYzU4
MDc0OTA0NDAyMzE2OTllOTY3NDVhYWYyMzQ5M2E5NGFiLi40OWI3ZTgxYTkxNzA4OTAyODRlOTcy
ZDFiOThiYzdiMGRiZDAzNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKQEAgLTE5OCw2ICsxOTgsMTEg
QEAgYm9vbCBFdmVudDo6aXNJREJBYm9ydEV2ZW50KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKK2Jvb2wgRXZlbnQ6OmlzSURCQmxvY2tlZEV2ZW50KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIGJvb2wgRXZlbnQ6OmlzSURCQ29tcGxldGVFdmVudCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAppbmRleCA4MWY5ZTZiMjkwOGUxYmE4N2Yy
ODNmZjFmNmYxN2U1MjgwNzY0Mzc0Li4wNDgxN2EzN2UxNGVkYzY0YmIwYzdhNjEzNjk1MjQ0NDhk
YWJhNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnQuaApAQCAtMTI3LDYgKzEyNyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICNlbmRpZgogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNJREJBYm9ydEV2ZW50KCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBp
c0lEQkJsb2NrZWRFdmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNJREJDb21w
bGV0ZUV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0lEQkVycm9yRXZlbnQo
KSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzSURCU3VjY2Vzc0V2ZW50KCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA0MzllOWQ4YjU1OGI2ZTViMjJjNzY0MzA3NTUw
MDc3MzYzNjMxZGQxLi5hZGY0OGVkZGY3NmJlNDM1MDJhZmQxZjA2YjQ4MGU5NWIwNGQ5NmUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIG1hY3JvKGJlZm9yZXBhc3RlKSBcCiAgICAgbWFjcm8oYmVmb3JlcHJvY2Vzcykg
XAogICAgIG1hY3JvKGJlZm9yZXVubG9hZCkgXAorICAgIG1hY3JvKGJsb2NrZWQpIFwKICAgICBt
YWNybyhibHVyKSBcCiAgICAgbWFjcm8oY2FjaGVkKSBcCiAgICAgbWFjcm8oY2hhbmdlKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCBlZDU5OTVjZDBkMmNkOWI0NzVkNzU4NjNj
M2FjNDk5ZGVhZmIwZmZmLi5lMjdiMTViZDg4M2EwZGU5OWZkY2RkYmU3ZTg5YzU0MGE1MWZkODQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTE4OSw2ICsxODksMTAgQEAgSURC
UmVxdWVzdCogRXZlbnRUYXJnZXQ6OnRvSURCUmVxdWVzdCgpCiB7CiAgICAgcmV0dXJuIDA7CiB9
CitJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCogRXZlbnRUYXJnZXQ6OnRvSURCVmVyc2lvbkNoYW5n
ZVJlcXVlc3QoKQoreworICAgIHJldHVybiAwOworfQogSURCVHJhbnNhY3Rpb24qIEV2ZW50VGFy
Z2V0Ojp0b0lEQlRyYW5zYWN0aW9uKCkKIHsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0LmgKaW5kZXggYTAzODAxYmNiZDUwMGU0ZGJjZTg5NTFjZDQ3NmI0ZDNkNzA4YThiMy4u
YThkMTYwMGY5MTlmNjY0NzIyZDhiOWMzYTk0YWNkNDFhZWVkZjI1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0LmgKQEAgLTUyLDYgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIElEQkRhdGFiYXNlOwogICAgIGNsYXNzIElEQlJlcXVlc3Q7CiAgICAgY2xhc3MgSURCVHJh
bnNhY3Rpb247CisgICAgY2xhc3MgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q7CiAgICAgY2xhc3Mg
SmF2YVNjcmlwdEF1ZGlvTm9kZTsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBO
b2RlOwpAQCAtMTQyLDYgKzE0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCBJREJEYXRhYmFzZSogdG9JREJEYXRhYmFzZSgpOwogICAgICAgICB2aXJ0dWFsIElEQlJl
cXVlc3QqIHRvSURCUmVxdWVzdCgpOwogICAgICAgICB2aXJ0dWFsIElEQlRyYW5zYWN0aW9uKiB0
b0lEQlRyYW5zYWN0aW9uKCk7CisgICAgICAgIHZpcnR1YWwgSURCVmVyc2lvbkNoYW5nZVJlcXVl
c3QqIHRvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QoKTsKICNlbmRpZgogCiAgICAgICAgIHZpcnR1
YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmxvY2tlZEV2ZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmxvY2tlZEV2ZW50LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zMDUzMTEzOGVkZGQ0OTIxMWU5MjIwMTg5MWEwMDBiNzRiNjgxN2QyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCbG9ja2VkRXZlbnQuY3BwCkBAIC0w
LDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCQmxv
Y2tlZEV2ZW50LmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJJREJBbnkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitQYXNzUmVmUHRyPElEQkJsb2NrZWRFdmVudD4gSURCQmxvY2tlZEV2ZW50OjpjcmVhdGUo
UGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQoreworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSURCQmxvY2tlZEV2ZW50KHNvdXJjZSwgdmVyc2lvbikpOwor
fQorCitJREJCbG9ja2VkRXZlbnQ6OklEQkJsb2NrZWRFdmVudChQYXNzUmVmUHRyPElEQkFueT4g
c291cmNlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pCisgICAgOiBJREJFdmVudChldmVudE5hbWVz
KCkuYmxvY2tlZEV2ZW50LCBzb3VyY2UsIGZhbHNlIC8qY2FuQnViYmxlKi8pCisgICAgLCBtX3Zl
cnNpb24odmVyc2lvbikKK3sKK30KKworSURCQmxvY2tlZEV2ZW50Ojp+SURCQmxvY2tlZEV2ZW50
KCkKK3sKK30KKworU3RyaW5nIElEQkJsb2NrZWRFdmVudDo6dmVyc2lvbigpCit7CisgICAgcmV0
dXJuIG1fdmVyc2lvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmxvY2tlZEV2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJsb2NrZWRFdmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkNjA0MjQ3
YjYwYjM4NGMxNDAwNWNhNWMxNWI5NjdmYWJiZTU5YTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJsb2NrZWRFdmVudC5oCkBAIC0wLDAgKzEsNTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIElEQkJsb2NrZWRFdmVudF9oCisjZGVmaW5lIElEQkJsb2NrZWRFdmVudF9o
CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQkV2ZW50Lmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBJREJCbG9ja2VkRXZlbnQgOiBwdWJsaWMgSURCRXZlbnQgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQkJsb2NrZWRFdmVudD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQW55PiBz
b3VyY2UsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CisgICAgLy8gRklYTUU6IE5lZWQgdG8gYWxs
b3cgY3JlYXRpb24gb2YgdGhlc2UgZXZlbnRzIGZyb20gSlMuCisgICAgdmlydHVhbCB+SURCQmxv
Y2tlZEV2ZW50KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNJREJCbG9ja2VkRXZlbnQoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCk7CisKK3By
aXZhdGU6CisgICAgSURCQmxvY2tlZEV2ZW50KFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGNv
bnN0IFN0cmluZyYgdmVyc2lvbik7CisKKyAgICBTdHJpbmcgbV92ZXJzaW9uOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CisKKyNlbmRpZiAvLyBJREJCbG9ja2VkRXZlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJCbG9ja2VkRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJCbG9ja2VkRXZlbnQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyODJlMjYzZGQ0Y2QyZjVhNzMxOTcyYjQ4
OWEzYThiMDRlNjc0ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQkJsb2NrZWRFdmVudC5pZGwKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBzdG9y
YWdlIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUlOREVYRURfREFU
QUJBU0UKKyAgICBdIElEQkJsb2NrZWRFdmVudCA6IElEQkV2ZW50IHsKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyB2ZXJzaW9uOworICAgIH07Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJDYWxsYmFja3MuaAppbmRleCAyOWZiMWM0NjkzNTE5ODZiMWQ0Y2E2MmRiODlmY2Qw
NzVlMThmYjljLi5hNTAyZWQ2NjJlYWQ5MGQ2YWI1ZWMwZDc5ZTMwOWJkYTZmNDk1N2ExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbnRlcmZhY2U+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCmluZGV4IDlhNWViNmM2MmZj
ZTQ2NzhiZDRkZTlmYzdjNDE2NWMzMmZmNWE3NjAuLjU2YTg5MTQxOTU1ZGRiOTA3ZmIzOGU4YTdh
Zjc5YWJjNTI1YTkxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCkBA
IC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCIK
ICNpbmNsdWRlICJJREJJbmRleC5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCi0jaW5j
bHVkZSAiSURCUmVxdWVzdC5oIgorI2luY2x1ZGUgIklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCiAjaW5jbHVkZSA8bGltaXRzPgpAQCAtOTcsOSArOTcsOSBAQCB2b2lkIElEQkRh
dGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgIG1fYmFja2VuZC0+ZGVsZXRlT2JqZWN0U3RvcmUobmFtZSwgbV9zZXRWZXJz
aW9uVHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQkRhdGFiYXNlOjpzZXRWZXJzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRy
PElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBJREJEYXRhYmFzZTo6c2V0VmVyc2lvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewotICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVz
dDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCAwKTsKKyAgICBSZWZQdHI8
SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IHJlcXVlc3QgPSBJREJWZXJzaW9uQ2hhbmdlUmVxdWVz
dDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCB2ZXJzaW9uKTsKICAgICBt
X2JhY2tlbmQtPnNldFZlcnNpb24odmVyc2lvbiwgcmVxdWVzdCwgZWMpOwogICAgIHJldHVybiBy
ZXF1ZXN0OwogfQpAQCAtMTM2LDcgKzEzNiwxMCBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
PiBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udAog
CiB2b2lkIElEQkRhdGFiYXNlOjpjbG9zZSgpCiB7CisgICAgaWYgKG1fbm9OZXdUcmFuc2FjdGlv
bnMpCisgICAgICAgIHJldHVybjsKICAgICBtX25vTmV3VHJhbnNhY3Rpb25zID0gdHJ1ZTsKKyAg
ICBtX2JhY2tlbmQtPmNsb3NlKCk7CiB9CiAKIGJvb2wgSURCRGF0YWJhc2U6Omhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRh
dGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKaW5kZXggZjkw
ZGRkMzhiZmY1MDI1ZGZjN2EwNTMwYTUzMTBkMzg3NTIxZDUxOC4uNTFlN2E5OTIyNTg4ZWE3Yjc4
OGI5NGQ0OGFlZGMxYWU1MmM0YzA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2Uu
aApAQCAtNDMsOCArNDMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIElEQkFu
eTsKLWNsYXNzIElEQlJlcXVlc3Q7CitjbGFzcyBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDsKK2Ns
YXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIElEQkRhdGFiYXNlIDogcHVibGlj
IFJlZkNvdW50ZWQ8SURCRGF0YWJhc2U+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3Rp
dmVET01PYmplY3QgewogcHVibGljOgpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAKICAgICBQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IE9wdGlvbnNPYmplY3QmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBk
ZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHNldFZlcnNpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQ
dHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IHNldFZlcnNpb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQg
Y2xvc2UoKTsKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWJvcnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlkbAppbmRleCAzOTIyMTQ0NDllZWY5NzE5
MjA0OGM5YzM0ODcxODlhMjRiMjMxYWI1Li5lNmU4MTliYzJjZTIxZmYwMzMyMDE0YTc2MWFmNTgw
Yjg2NjViYmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNl
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlkbApAQCAtNDAs
NyArNDAsNyBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFi
YXNlRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShpbiBET01TdHJp
bmcgbmFtZSkKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwotICAg
ICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBzZXRWZXJz
aW9uKGluIERPTVN0cmluZyB2ZXJzaW9uKQorICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dF0gSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qgc2V0VmVyc2lvbihpbiBET01TdHJp
bmcgdmVyc2lvbikKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwog
ICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCVHJhbnNhY3Rpb24g
dHJhbnNhY3Rpb24oaW4gW09wdGlvbmFsXSBET01TdHJpbmdMaXN0IHN0b3JlTmFtZXMsIGluIFtP
cHRpb25hbF0gdW5zaWduZWQgc2hvcnQgbW9kZSkKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0
YWJhc2VFeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggMTMzYzVhZWI0MDQ1N2FlZDY2ZjQ4NjUwNDMyYTJkZWRl
Y2MzOGM3Yi4uMzg1ZWIzMmVlZjc0MjE0OTIzOTYyMWExMzdiNjUyMGVhMDlkYTI5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBA
IC00MSw2ICs0MSwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OlBlbmRpbmdTZXRWZXJzaW9uQ2FsbCA6IHB1YmxpYyBSZWZDb3VudGVk
PFBlbmRpbmdTZXRWZXJzaW9uQ2FsbD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFBlbmRpbmdTZXRWZXJzaW9uQ2FsbD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUGVuZGluZ1NldFZlcnNpb25DYWxsKHZlcnNpb24sIGNhbGxiYWNrcykpOwor
ICAgIH0KKyAgICBTdHJpbmcgdmVyc2lvbigpIHsgcmV0dXJuIG1fdmVyc2lvbjsgfQorICAgIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MoKSB7IHJldHVybiBtX2NhbGxiYWNrczsg
fQorcHJpdmF0ZToKKyAgICBQZW5kaW5nU2V0VmVyc2lvbkNhbGwoY29uc3QgU3RyaW5nJiB2ZXJz
aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgICAgICA6IG1fdmVy
c2lvbih2ZXJzaW9uKQorICAgICAgICAsIG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKKyAgICB7Cisg
ICAgfQorICAgIFN0cmluZyBtX3ZlcnNpb247CisgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9j
YWxsYmFja3M7Cit9OworCiBzdGF0aWMgYm9vbCBleHRyYWN0TWV0YURhdGEoU1FMaXRlRGF0YWJh
c2UmIHNxbGl0ZURhdGFiYXNlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRWZXJz
aW9uLCBpbnQ2NCYgZm91bmRJZCkKIHsKICAgICBTUUxpdGVTdGF0ZW1lbnQgZGF0YWJhc2VRdWVy
eShzcWxpdGVEYXRhYmFzZSwgIlNFTEVDVCBpZCwgdmVyc2lvbiBGUk9NIERhdGFiYXNlcyBXSEVS
RSBuYW1lID0gPyIpOwpAQCAtOTUsNiArMTEzLDcgQEAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQlNRTGl0ZURhdGEK
ICAgICAsIG1faWRlbnRpZmllcih1bmlxdWVJZGVudGlmaWVyKQogICAgICwgbV9mYWN0b3J5KGZh
Y3RvcnkpCiAgICAgLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IoY29vcmRpbmF0b3IpCisgICAg
LCBtX29wZW5Db25uZWN0aW9uQ291bnQoMCkKIHsKICAgICBBU1NFUlQoIW1fbmFtZS5pc051bGwo
KSk7CiAKQEAgLTIxMyw2ICsyMzIsMTUgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpz
ZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWwKIHsKICAg
ICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UgPSB0aGlzOwogICAgIFJl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKKworICAgIC8vIEZJ
WE1FOiBPbmx5IGNvbnRpbnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIHN0aWxsIG9wZW4uCisgICAg
aWYgKG1fb3BlbkNvbm5lY3Rpb25Db3VudCA+IDEpIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkJs
b2NrZWQoKTsKKyAgICAgICAgUmVmUHRyPFBlbmRpbmdTZXRWZXJzaW9uQ2FsbD4gcGVuZGluZ1Nl
dFZlcnNpb25DYWxsID0gUGVuZGluZ1NldFZlcnNpb25DYWxsOjpjcmVhdGUodmVyc2lvbiwgY2Fs
bGJhY2tzKTsKKyAgICAgICAgbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmFwcGVuZChwZW5kaW5n
U2V0VmVyc2lvbkNhbGwpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgUmVmUHRyPERP
TVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsK
ICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbiA9
IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0ZShvYmplY3RTdG9yZU5hbWVzLmdldCgp
LCBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UsIHRoaXMpOwogICAgIGlmICghdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OnNldFZlcnNpb25JbnRlcm5hbCwgZGF0YWJhc2UsIHZlcnNpb24sIGNhbGxiYWNrcywg
dHJhbnNhY3Rpb24pLApAQCAtMjQ3LDkgKzI3NSwyNCBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb24o
RAogICAgIHJldHVybiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUob2JqZWN0U3Rv
cmVOYW1lcywgbW9kZSwgdGhpcyk7CiB9CiAKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
b3BlbigpCit7CisgICAgbV9vcGVuQ29ubmVjdGlvbkNvdW50Kys7Cit9CisKIHZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UoKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisg
ICAgbV9vcGVuQ29ubmVjdGlvbkNvdW50LS07CisgICAgQVNTRVJUKG1fb3BlbkNvbm5lY3Rpb25D
b3VudCA+PSAwKTsKKyAgICBpZiAobV9vcGVuQ29ubmVjdGlvbkNvdW50ID4gMSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgd2hpbGUgKCFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgp
KSB7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgICAgIFJlZlB0cjxQZW5kaW5nU2V0
VmVyc2lvbkNhbGw+IHBlbmRpbmdTZXRWZXJzaW9uQ2FsbCA9IG1fcGVuZGluZ1NldFZlcnNpb25D
YWxscy50YWtlRmlyc3QoKTsKKyAgICAgICAgc2V0VmVyc2lvbihwZW5kaW5nU2V0VmVyc2lvbkNh
bGwtPnZlcnNpb24oKSwgcGVuZGluZ1NldFZlcnNpb25DYWxsLT5jYWxsYmFja3MoKSwgZWMpOwor
ICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICB9CiB9CiAKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6bG9hZE9iamVjdFN0b3JlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IDg5NDI5Njg1YmM4NDlmMTI1ODYxZDgzZmQ0OTU3
MThiNTM4OGUwOTAuLjIwMmIwNzIwN2EwMjQ4MDBkZjI1MTZkNzVjODQ1YzA1MDRjNzIwNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJ
REJEYXRhYmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC01Myw2ICs1NCw3
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IEludmFsaWRJZCA9IDA7CiAg
ICAgaW50NjRfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICB2b2lkIG9wZW4oKTsK
IAogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAg
ICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uOyB9CkBA
IC05NCw2ICs5NiwxMSBAQCBwcml2YXRlOgogICAgIE9iamVjdFN0b3JlTWFwIG1fb2JqZWN0U3Rv
cmVzOwogCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+IG1fdHJhbnNhY3Rp
b25Db29yZGluYXRvcjsKKworICAgIGludCBtX29wZW5Db25uZWN0aW9uQ291bnQ7CisKKyAgICBj
bGFzcyBQZW5kaW5nU2V0VmVyc2lvbkNhbGw7CisgICAgRGVxdWU8UmVmUHRyPFBlbmRpbmdTZXRW
ZXJzaW9uQ2FsbD4gPiBtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHM7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCA5Y2M3MjMwYWNkODA2MjhlMWY5MGJiNjQ0NjUwZTRj
ZDE2ZWU4NTgzLi5jNDk0MWRkYjBjMDVhMTZhN2QwNGNiZTM3ZDdmNmEzOWM1ODEyODdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlLmgKQEAgLTQwLDcgKzQwLDYgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBJREJDYWxsYmFja3M7
CiBjbGFzcyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2U7Ci1jbGFzcyBJREJUcmFuc2FjdGlvbkNhbGxiYWNrczsKIAog
Ly8gVGhpcyBjbGFzcyBpcyBzaGFyZWQgYnkgSURCRGF0YWJhc2UgKGFzeW5jKSBhbmQgSURCRGF0
YWJhc2VTeW5jIChzeW5jKS4KIC8vIFRoaXMgaXMgaW1wbGVtZW50ZWQgYnkgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbCBhbmQgb3B0aW9uYWxseSBvdGhlcnMgKGluIG9yZGVyIHRvIHByb3h5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKaW5kZXgg
MGU4ODNjZmUyZTQ1NjQ3ODZmOTQyMjFmODRjZmE1NWIzMmQxNzdiOS4uMzcyZDU0Yzc4OTFjZTQx
NzBjMDM3ZDhjYmQyMmJjNDliMjNiNGU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAtMjEzLDYgKzIxMyw3IEBAIHZvaWQgSURC
RmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhCiAgICAgU3RyaW5nIHVuaXF1ZUlkZW50aWZpZXIgPSBmaWxlSWRlbnRp
ZmllciArICJAIiArIG5hbWU7CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kTWFwOjppdGVyYXRvciBp
dCA9IG1fZGF0YWJhc2VCYWNrZW5kTWFwLmZpbmQodW5pcXVlSWRlbnRpZmllcik7CiAgICAgaWYg
KGl0ICE9IG1fZGF0YWJhc2VCYWNrZW5kTWFwLmVuZCgpKSB7CisgICAgICAgIGl0LT5zZWNvbmQt
Pm9wZW4oKTsKICAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoaXQtPnNlY29uZCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0yMzUsNiArMjM2LDcgQEAgdm9pZCBJREJGYWN0b3J5QmFj
a2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2EKICAgICB9CiAKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJh
c2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlKG5hbWUsIHNxbGl0ZURh
dGFiYXNlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCksIHRoaXMsIHVuaXF1
ZUlkZW50aWZpZXIpOworICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbigpOwogICAgIGNhbGxiYWNr
cy0+b25TdWNjZXNzKGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CiAgICAgbV9kYXRhYmFzZUJhY2tl
bmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAppbmRleCBlNzQ5OGVjZTVjZmQwMjQyMDQz
OTQyZTQ5M2VjYmM5M2Q1Njk3OGVhLi4xYjBhNWU1ZDM2MTk1MzA3NGFkYWUyYmRmMDBjMDBlZTQx
NjVlNzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKQEAgLTM2LDEwICsz
NiwxMSBAQAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgorI2luY2x1ZGUgIklEQkJsb2NrZWRFdmVudC5o
IgogI2luY2x1ZGUgIklEQkN1cnNvci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCi0jaW5j
bHVkZSAiSURCSW5kZXguaCIKICNpbmNsdWRlICJJREJFcnJvckV2ZW50LmgiCisjaW5jbHVkZSAi
SURCSW5kZXguaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIklEQlBl
bmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCIKICNpbmNsdWRlICJJREJTdWNjZXNzRXZlbnQuaCIK
QEAgLTE0MSw2ICsxNDIsMTEgQEAgYm9vbCBJREJSZXF1ZXN0OjpoYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdAogICAgIHJldHVybiAhbV9maW5pc2hlZCB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1Bl
bmRpbmdBY3Rpdml0eSgpOwogfQogCit2b2lkIElEQlJlcXVlc3Q6Om9uQmxvY2tlZCgpCit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIElE
QlJlcXVlc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBB
Y3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTE1Miw3ICsxNTgs
OCBAQCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZl
bnQpCiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKGV2
ZW50LT50YXJnZXQoKSA9PSB0aGlzKTsKICAgICBBU1NFUlQobV9yZWFkeVN0YXRlIDwgRE9ORSk7
Ci0gICAgbV9yZWFkeVN0YXRlID0gRE9ORTsKKyAgICBpZiAoIWV2ZW50LT5pc0lEQkJsb2NrZWRF
dmVudCgpKQorICAgICAgICBtX3JlYWR5U3RhdGUgPSBET05FOwogCiAgICAgVmVjdG9yPFJlZlB0
cjxFdmVudFRhcmdldD4gPiB0YXJnZXRzOwogICAgIHRhcmdldHMuYXBwZW5kKHRoaXMpOwpAQCAt
MTY1LDcgKzE3Miw3IEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRy
PEV2ZW50PiBldmVudCkKICAgICAgICAgdGFyZ2V0cy5hcHBlbmQobV90cmFuc2FjdGlvbi0+ZGIo
KSk7CiAgICAgfQogCi0gICAgQVNTRVJUKGV2ZW50LT5pc0lEQkVycm9yRXZlbnQoKSB8fCBldmVu
dC0+aXNJREJTdWNjZXNzRXZlbnQoKSk7CisgICAgQVNTRVJUKGV2ZW50LT5pc0lEQkVycm9yRXZl
bnQoKSB8fCBldmVudC0+aXNJREJTdWNjZXNzRXZlbnQoKSB8fCBldmVudC0+aXNJREJCbG9ja2Vk
RXZlbnQoKSk7CiAgICAgYm9vbCBkb250UHJldmVudERlZmF1bHQgPSBzdGF0aWNfY2FzdDxJREJF
dmVudCo+KGV2ZW50LmdldCgpKS0+ZGlzcGF0Y2godGFyZ2V0cyk7CiAKICAgICAvLyBJZiB0aGUg
ZXZlbnQncyByZXN1bHQgd2FzIG9mIHR5cGUgSURCQ3Vyc29yLCB0aGVuIGl0J3MgcG9zc2libGUg
Zm9yIHVzIHRvCkBAIC0xNzQsNyArMTgxLDcgQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgICAgICBSZWZQdHI8SURCQW55PiBhbnkg
PSBzdGF0aWNfY2FzdDxJREJTdWNjZXNzRXZlbnQqPihldmVudC5nZXQoKSktPnJlc3VsdCgpOwog
ICAgICAgICBpZiAoYW55LT50eXBlKCkgIT0gSURCQW55OjpJREJDdXJzb3JUeXBlKQogICAgICAg
ICAgICAgbV9maW5pc2hlZCA9IHRydWU7Ci0gICAgfSBlbHNlCisgICAgfSBlbHNlIGlmICghZXZl
bnQtPmlzSURCQmxvY2tlZEV2ZW50KCkpCiAgICAgICAgIG1fZmluaXNoZWQgPSB0cnVlOwogCiAg
ICAgaWYgKG1fdHJhbnNhY3Rpb24pIHsKQEAgLTE5OCw2ICsyMDUsMTEgQEAgdm9pZCBJREJSZXF1
ZXN0OjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgZXZlbnRRdWV1
ZS0+ZW5xdWV1ZUV2ZW50KGV2ZW50KTsKIH0KIAorSURCQW55KiBJREJSZXF1ZXN0Ojpzb3VyY2Uo
KQoreworICAgIHJldHVybiBtX3NvdXJjZS5nZXQoKTsKK30KKwogRXZlbnRUYXJnZXREYXRhKiBJ
REJSZXF1ZXN0OjpldmVudFRhcmdldERhdGEoKQogewogICAgIHJldHVybiAmbV9ldmVudFRhcmdl
dERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCmluZGV4IDVjMzEzMThhYmE0NTZi
ZGIyZWZmOWY2MGU1MTU2NDU5NDEyZjc3YzUuLjc3NDI4NjhmY2MzMzdiZjVmYjdlMDVjMzhmZjVl
YmFjZjZjOGZlYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCkBAIC01OSw2ICs1
OSw3IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVycm9y
KTsKIAogICAgIGJvb2wgcmVzZXRSZWFkeVN0YXRlKElEQlRyYW5zYWN0aW9uKik7CisgICAgSURC
QW55KiBzb3VyY2UoKTsKIAogICAgIC8vIElEQkNhbGxiYWNrcwogICAgIHZpcnR1YWwgdm9pZCBv
bkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pOwpAQCAtNjksNiArNzAsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CisgICAgdmlydHVh
bCB2b2lkIG9uQmxvY2tlZCgpOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CiAgICAgdmlydHVh
bCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwpAQCAtODIsMTEgKzg0LDExIEBAIHB1
YmxpYzoKICAgICB1c2luZyBUaHJlYWRTYWZlU2hhcmVkPElEQkNhbGxiYWNrcz46OnJlZjsKICAg
ICB1c2luZyBUaHJlYWRTYWZlU2hhcmVkPElEQkNhbGxiYWNrcz46OmRlcmVmOwogCi1wcml2YXRl
OgorcHJvdGVjdGVkOgogICAgIElEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7Ci0KICAgICB2b2lkIGVu
cXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAKK3ByaXZhdGU6CiAgICAgLy8gRXZlbnRU
YXJnZXQKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CiAgICAg
dmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjQ4NmM2NDU2MDMyNjI1YWM1YmFmZmNmMGY1ZTcwNWE5YWQ4MGU4MgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuY3Bw
CkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQorCisjaW5jbHVkZSAiSURCQmxvY2tlZEV2ZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8SURCVmVy
c2lvbkNoYW5nZVJlcXVlc3Q+IElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgY29u
c3QgU3RyaW5nJiB2ZXJzaW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCVmVyc2lv
bkNoYW5nZVJlcXVlc3QoY29udGV4dCwgc291cmNlLCB2ZXJzaW9uKSk7Cit9CisKK0lEQlZlcnNp
b25DaGFuZ2VSZXF1ZXN0OjpJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBjb25zdCBTdHJpbmcm
IHZlcnNpb24pCisgICAgOiBJREJSZXF1ZXN0KGNvbnRleHQsIHNvdXJjZSwgMCkKKyAgICAsIG1f
dmVyc2lvbih2ZXJzaW9uKQoreworfQorCitJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDo6fklEQlZl
cnNpb25DaGFuZ2VSZXF1ZXN0KCkKK3sKK30KKwordm9pZCBJREJWZXJzaW9uQ2hhbmdlUmVxdWVz
dDo6b25CbG9ja2VkKCkKK3sKKyAgICBlbnF1ZXVlRXZlbnQoSURCQmxvY2tlZEV2ZW50OjpjcmVh
dGUoc291cmNlKCksIG1fdmVyc2lvbikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hh
bmdlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVx
dWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjMyY2Y0YzAzNTFlYjUzODkwM2I1MWViNjQ5NWE5MTVhZjkzZjQx
MmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25D
aGFuZ2VSZXF1ZXN0LmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCVmVyc2lv
bkNoYW5nZVJlcXVlc3RfaAorI2RlZmluZSBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdF9oCisKKyNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCA6IHB1
YmxpYyBJREJSZXF1ZXN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJWZXJz
aW9uQ2hhbmdlUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPElEQkFueT4gc291cmNlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOworICAgIHZpcnR1YWwg
fklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2Vk
KCk7CisKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGJsb2NrZWQpOworCitw
cml2YXRlOgorICAgIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwor
CisgICAgU3RyaW5nIG1fdmVyc2lvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjZW5kaWYgLy8gSURCUmVxdWVz
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VS
ZXF1ZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVl
c3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmZmYWM3MzU0NzBhMmE5YjAwZDJkNDlhNzg2ZWYxNzZiYzlhOTdh
MzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25D
aGFuZ2VSZXF1ZXN0LmlkbApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHN0b3JhZ2Ug
eworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFT
RSwKKyAgICAgICAgRXZlbnRUYXJnZXQKKyAgICBdIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IDog
SURCUmVxdWVzdCB7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYmxvY2tlZDsK
KyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2MDNlZWFiOWVjYzY4MWIz
ZjkwN2NhY2MxY2YxY2ZlNjFiZTZiNTY0Li43NGE2MmZjNzJjZDZjYTdlZTgzZTdmMDMzNDNiMDJk
ZjcxZjIyYzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDExLTAyLTExICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBpbmRleGVkZGI6IG1ha2Ug
c2V0VmVyc2lvbiBmaXJlIGJsb2NrZWQgZXZlbnQgaWYgb3RoZXIgY29ubmVjdGlvbnMgYXJlIG9w
ZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNzI4
CisKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmg6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkNhbGxiYWNrczo6b25CbG9ja2VkKToKKyAgICAgICAgKiBzcmMvSURCQ2FsbGJhY2tz
UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2FsbGJhY2tzUHJveHk6Om9uQmxvY2tl
ZCk6CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5Lmg6CisgICAgICAgICogc3JjL1dl
YklEQkNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViSURCQ2FsbGJhY2tz
SW1wbDo6b25CbG9ja2VkKToKKyAgICAgICAgKiBzcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oOgor
CiAyMDExLTAyLTExICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCQ2FsbGJhY2tzLmgKaW5kZXggMTI0YjZiODBmNWY0ZjU5NmY4ZTljZjVkMTVh
MzZlZjIzNDIyNDZmYS4uMWViNmQzYTA5NmFlMDQ5YjYzY2FlYjE0MjRjNTQyNWFhNzFlNjRiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tz
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmgK
QEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2Vi
SURCT2JqZWN0U3RvcmUqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZp
cnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViSURCVHJhbnNhY3Rpb24qKSB7IFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3QgV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCmluZGV4IGRiYTI4ZDk0ZWFmZTYzYjg4MDky
MTBjNjhkZjljZGRmYzlmMjJjMGQuLjQ2NTQ5NTA2MzIyNGVmNDJhNTE1NTY1NzVlODBhZWZjZmYz
YzRmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNr
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQ
cm94eS5jcHAKQEAgLTk5LDYgKzk5LDExIEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjCiAgICAg
bV9jYWxsYmFja3MtPm9uU3VjY2VzcyhXZWJLaXQ6OldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShz
ZXJpYWxpemVkU2NyaXB0VmFsdWUpKTsKIH0KIAordm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25C
bG9ja2VkKCkKK3sKKyAgICBtX2NhbGxiYWNrcy0+b25CbG9ja2VkKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKaW5kZXggZTFk
YjIzZDQzOWY2YWE1Zjc2ODY4YTAyNzc0ZjY5ZDkwMDVjMDc4Zi4uN2RlZDhlYWU0ZTMyODA1ZGEx
NDQzMzg3N2Y1ZDc1MzAyODFiYjMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJDYWxsYmFja3NQcm94eS5oCkBAIC01NSw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2Vk
KCk7CiAKIHByaXZhdGU6CiAgICAgSURCQ2FsbGJhY2tzUHJveHkoUGFzc093blB0cjxXZWJLaXQ6
OldlYklEQkNhbGxiYWNrcz4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJDYWxsYmFja3NJbXBsLmNwcAppbmRleCBiYjdhMTliY2YyMTljZjIwNTNjOGM3ZDA1NGQw
YTkwZGFjZWUxM2U3Li41NzAzZjI3Yzk4NzM0Zjc3MTZjMmY0YmZiNzZlNjA0ZWM0MTIyZDA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBs
LmNwcApAQCAtOTYsNiArOTYsMTEgQEAgdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nl
c3MoY29uc3QgV2ViS2l0OjpXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmkKICAgICBtX2Nh
bGxiYWNrcy0+b25TdWNjZXNzKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CiB9CiAKK3ZvaWQgV2Vi
SURCQ2FsbGJhY2tzSW1wbDo6b25CbG9ja2VkKCkKK3sKKyAgICBtX2NhbGxiYWNrcy0+b25CbG9j
a2VkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCQ2FsbGJhY2tzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
Q2FsbGJhY2tzSW1wbC5oCmluZGV4IGQyYWUyNTU2MjlmYmEwMTgxODU0NzJlOTFiYjY2MWFiMjJi
MzM3OGIuLjFlNzZkZWNmMTkwOWJkYzc1M2MxYjIyMmZjYTViYWM4Y2RiZGMxY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgKQEAgLTQ5
LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViS2l0OjpX
ZWJJREJPYmplY3RTdG9yZSopOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViS2l0OjpX
ZWJJREJUcmFuc2FjdGlvbiopOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3QgV2Vi
S2l0OjpXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25CbG9j
a2VkKCk7CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82358</attachid>
            <date>2011-02-14 13:52:55 -0800</date>
            <delta_ts>2011-02-14 16:07:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53728-20110214135254.patch</filename>
            <type>text/plain</type>
            <size>49140</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzg1MDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0NjZlMmE4NjUzNTM3YzVmMGE4ZDEz
YzMzNWM5Y2IyNzg1NzIwMDRmLi5mYzBkZTBlMjQxMmYyNzQ0MjdlMGIyODc5ZWVlYmU5YjIzMTZi
ZjNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDItMTQgIERhdmlkIEdyb2dhbiAgPGRn
cm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4K
KworICAgICAgICBpbmRleGVkZGI6IG1ha2Ugc2V0VmVyc2lvbiBmaXJlIGJsb2NrZWQgZXZlbnQg
aWYgb3RoZXIgY29ubmVjdGlvbnMgYXJlIG9wZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNzI4CisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvc2hhcmVkLmpzOgorICAgICAgICAodW5leHBlY3RlZEJsb2NrZWRDYWxsYmFj
ayk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fYmxvY2tlZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9u
X2Jsb2NrZWQuaHRtbDogQWRkZWQuCisKIDIwMTEtMDItMTQgIFhpYW9tZWkgSmkgIDx4amlAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcwppbmRleCA4YzU2ODMyMTBkYmNjZTQ5
Zjk4MmRhMzNmN2RiZDlkOTkyN2FiYTNkLi4wODVkYjJlNjJjMWE1YWRmY2Q0ZGY5OTVmYmQzMjc0
M2NiYTNiZjIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvc2hhcmVkLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9zaGFyZWQuanMKQEAgLTg3LDYgKzg3LDExIEBAIGZ1bmN0aW9uIHVuZXhwZWN0ZWRDb21w
bGV0ZUNhbGxiYWNrKCkKICAgICBkb25lKCk7CiB9CiAKK2Z1bmN0aW9uIHVuZXhwZWN0ZWRCbG9j
a2VkQ2FsbGJhY2soKQoreworICAgIHRlc3RGYWlsZWQoIm9uYmxvY2tlZCBjYWxsZWQgdW5leHBl
Y3RlZGx5Iik7Cit9CisKIGZ1bmN0aW9uIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oY21kLCBleHBl
Y3RlZCkKIHsKICAgICBkZWJ1ZygiRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tICIgKyBjbWQpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fYmxv
Y2tlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVy
c2lvbl9ibG9ja2VkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTA4OTA3Njk3MWRkNGJmMTVk
NTM1YzYwMmYwNjRjZjhjZDkxNGRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fYmxvY2tlZC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwyMCBAQAorQW4gb3BlbiBjb25uZWN0aW9uIGJsb2NrcyBhIHNlcGFyYXRlIGNvbm5lY3Rpb24n
cyBzZXRWZXJzaW9uIGNhbGwKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
SW5kZXhlZERCID09IG51bGwgaXMgZmFsc2UKK3dlYmtpdEluZGV4ZWREQi5vcGVuKCdzb21lIGRi
IG5hbWUnKQord2Via2l0SW5kZXhlZERCLm9wZW4oJ3NvbWUgZGIgbmFtZScpCitjb25uZWN0aW9u
c1swXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKQorc2Vlbl9ibG9ja2VkX2V2ZW50ID0gdHJ1ZQor
UEFTUyBibG9ja2VkX2V2ZW50LnZlcnNpb24gaXMgInZlcnNpb24gMSIKK1BBU1MgcmVzdWx0LnJl
YWR5U3RhdGUgaXMgMQorY29ubmVjdGlvbnNbMV0uY2xvc2UoKQoraW4gc2V0VmVyc2lvbi5vbnN1
Y2Nlc3MKK1BBU1Mgc2Vlbl9ibG9ja2VkX2V2ZW50IGlzIHRydWUKK0RlbGV0ZWQgYWxsIG9iamVj
dCBzdG9yZXMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNp
b25fYmxvY2tlZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNp
b25fYmxvY2tlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiOTkyODIwZTA4M2YxZmQ1YWQ4YmM3N2ZhMmE5
NmU1NmY4MjE0NGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2VkLmh0bWwKQEAgLTAsMCArMSw3MiBAQAorPGh0bWw+DQor
PGhlYWQ+DQorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+DQorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4NCis8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4NCis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+DQorPC9oZWFkPg0KKzxib2R5
Pg0KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPg0KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pg0K
KzxzY3JpcHQ+DQorDQorZGVzY3JpcHRpb24oIkFuIG9wZW4gY29ubmVjdGlvbiBibG9ja3MgYSBz
ZXBhcmF0ZSBjb25uZWN0aW9uJ3Mgc2V0VmVyc2lvbiBjYWxsIik7DQoraWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikNCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOw0KKw0KK2Nvbm5lY3Rpb25zID0gW10NCitmdW5jdGlvbiB0ZXN0KCkNCit7DQorICAgIGlm
ICgnd2Via2l0SW5kZXhlZERCJyBpbiB3aW5kb3cpDQorICAgICAgICBJbmRleGVkREIgPSB3ZWJr
aXRJbmRleGVkREI7DQorICAgIGVsc2UgaWYgKCdtb3pJbmRleGVkREInIGluIHdpbmRvdykNCisg
ICAgICAgIEluZGV4ZWREQiA9IG1vekluZGV4ZWREQjsNCisgICAgc2hvdWxkQmVGYWxzZSgiSW5k
ZXhlZERCID09IG51bGwiKTsNCisgICAgb3BlbkRCQ29ubmVjdGlvbigpOw0KK30NCisNCitmdW5j
dGlvbiBvcGVuREJDb25uZWN0aW9uKCkNCit7DQorICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIndl
YmtpdEluZGV4ZWREQi5vcGVuKCdzb21lIGRiIG5hbWUnKSIpOw0KKyAgICByZXN1bHQub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7DQorICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7DQorfQ0KKw0KK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkNCit7DQorICAgIGNvbm5l
Y3Rpb24gPSBldmVudC5yZXN1bHQ7DQorICAgIGNvbm5lY3Rpb25zLnB1c2goY29ubmVjdGlvbik7
DQorICAgIGlmIChjb25uZWN0aW9ucy5sZW5ndGggPCAyKQ0KKyAgICAgICAgb3BlbkRCQ29ubmVj
dGlvbigpOw0KKyAgICBlbHNlIHsNCisgICAgICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImNvbm5l
Y3Rpb25zWzBdLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7DQorICAgICAgICByZXN1bHQub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KKyAgICAgICAgcmVzdWx0Lm9uc3VjY2Vz
cyA9IGluU2V0VmVyc2lvbjsNCisgICAgICAgIHJlc3VsdC5vbmJsb2NrZWQgPSBibG9ja2VkOw0K
KyAgICB9DQorfQ0KKw0KK3NlZW5fYmxvY2tlZF9ldmVudCA9IGZhbHNlOw0KK2Z1bmN0aW9uIGJs
b2NrZWQobnVtX2Jsb2NrZWRfZXZlbnRzKQ0KK3sNCisgICAgZXZhbEFuZExvZygic2Vlbl9ibG9j
a2VkX2V2ZW50ID0gdHJ1ZSIpOw0KKyAgICBibG9ja2VkX2V2ZW50ID0gZXZlbnQ7DQorICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiYmxvY2tlZF9ldmVudC52ZXJzaW9uIiwgInZlcnNpb24gMSIp
Ow0KKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyZXN1bHQucmVhZHlTdGF0ZSIsIDEpOw0KKyAgICBl
dmFsQW5kTG9nKCJjb25uZWN0aW9uc1sxXS5jbG9zZSgpIik7DQorfQ0KKw0KK2Z1bmN0aW9uIGlu
U2V0VmVyc2lvbigpDQorew0KKyAgICBkZWJ1ZygiaW4gc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiKTsN
CisgICAgc2hvdWxkQmVUcnVlKCJzZWVuX2Jsb2NrZWRfZXZlbnQiKTsNCisgICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGNvbm5lY3Rpb25zWzBdLCBkb25lKTsNCit9DQorDQordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7DQorDQordGVzdCgpOw0KKw0KKzwvc2NyaXB0Pg0KKzwvYm9keT4N
Cis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0
X3ZlcnNpb25fcXVldWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvc2V0X3ZlcnNpb25fcXVldWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzZmI1MTkwYjUw
NDg5N2YyZTg5MjUwOTg0ZjBiYTYwZjZhZDhjM2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyNCBAQAorQW4gb3BlbiBjb25uZWN0aW9uIGJsb2NrcyBhIHNlcGFyYXRlIGNvbm5l
Y3Rpb24ncyBzZXRWZXJzaW9uIGNhbGwKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgSW5kZXhlZERCID09IG51bGwgaXMgZmFsc2UKK3dlYmtpdEluZGV4ZWREQi5vcGVuKCdz
b21lIGRiIG5hbWUnKQord2Via2l0SW5kZXhlZERCLm9wZW4oJ3NvbWUgZGIgbmFtZScpCit3ZWJr
aXRJbmRleGVkREIub3Blbignc29tZSBkYiBuYW1lJykKK2Nvbm5lY3Rpb25zWzBdLnNldFZlcnNp
b24oJ3ZlcnNpb24gMScpCitjb25uZWN0aW9uc1sxXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDInKQor
Y29ubmVjdGlvbnNbMl0uc2V0VmVyc2lvbigndmVyc2lvbiAzJykKKworY29ubmVjdGlvbnNbMl0u
Y2xvc2UoKQorUEFTUyBibG9ja2VkMWZpcmVkIGlzIHRydWUKK1BBU1MgYmxvY2tlZDNmaXJlZCBp
cyBmYWxzZQorY29ubmVjdGlvbnNbMF0uY2xvc2UoKQorRklYTUU6IFRoZSBmaXJzdCBzZXRWZXJz
aW9uIHNob3VsZG4ndCBnZXQgZmlyZWQKK1BBU1MgaW5TZXRWZXJzaW9uMgorRklYTUU6IFRoZSB0
aGlyZCBzZXRWZXJzaW9uIHNob3VsZG4ndCBnZXQgZmlyZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fcXVldWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOWVkMTQ3
ZDYwYTkwYjlhY2ViY2I5MjI2NmVhZDkwNTQyNGM0YmZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fcXVldWUuaHRtbApAQCAtMCww
ICsxLDk5IEBACis8aHRtbD4NCis8aGVhZD4NCis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4NCis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pg0KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24u
anMiPjwvc2NyaXB0Pg0KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4NCis8L2hlYWQ+DQorPGJvZHk+DQorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+DQorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+DQorPHNjcmlwdD4NCisNCitkZXNjcmlwdGlvbigiQW4gb3BlbiBj
b25uZWN0aW9uIGJsb2NrcyBhIHNlcGFyYXRlIGNvbm5lY3Rpb24ncyBzZXRWZXJzaW9uIGNhbGwi
KTsNCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7DQorDQorY29ubmVjdGlvbnMgPSBbXQ0KK2Z1bmN0aW9u
IHRlc3QoKQ0KK3sNCisgICAgaWYgKCd3ZWJraXRJbmRleGVkREInIGluIHdpbmRvdykNCisgICAg
ICAgIEluZGV4ZWREQiA9IHdlYmtpdEluZGV4ZWREQjsNCisgICAgZWxzZSBpZiAoJ21vekluZGV4
ZWREQicgaW4gd2luZG93KQ0KKyAgICAgICAgSW5kZXhlZERCID0gbW96SW5kZXhlZERCOw0KKyAg
ICBzaG91bGRCZUZhbHNlKCJJbmRleGVkREIgPT0gbnVsbCIpOw0KKyAgICBvcGVuREJDb25uZWN0
aW9uKCk7DQorfQ0KKw0KK2Z1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQ0KK3sNCisgICAgcmVz
dWx0ID0gZXZhbEFuZExvZygid2Via2l0SW5kZXhlZERCLm9wZW4oJ3NvbWUgZGIgbmFtZScpIik7
DQorICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsNCisgICAgcmVzdWx0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCit9DQorDQorZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQ0KK3sNCisgICAgY29ubmVjdGlvbiA9IGV2ZW50LnJlc3VsdDsNCisgICAgY29ubmVjdGlv
bnMucHVzaChjb25uZWN0aW9uKTsNCisgICAgaWYgKGNvbm5lY3Rpb25zLmxlbmd0aCA8IDMpDQor
ICAgICAgICBvcGVuREJDb25uZWN0aW9uKCk7DQorICAgIGVsc2Ugew0KKyAgICAgICAgcmVzdWx0
ID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMF0uc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsN
CisgICAgICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQorICAg
ICAgICByZXN1bHQub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uOw0KKyAgICAgICAgcmVzdWx0Lm9u
YmxvY2tlZCA9IGJsb2NrZWQxOw0KKyAgICAgICAgcmVzdWx0MiA9IGV2YWxBbmRMb2coImNvbm5l
Y3Rpb25zWzFdLnNldFZlcnNpb24oJ3ZlcnNpb24gMicpIik7DQorICAgICAgICByZXN1bHQyLm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCisgICAgICAgIHJlc3VsdDIub25zdWNj
ZXNzID0gaW5TZXRWZXJzaW9uMjsNCisgICAgICAgIHJlc3VsdDIub25ibG9ja2VkID0gYmxvY2tl
ZDI7DQorICAgICAgICByZXN1bHQzID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMl0uc2V0VmVy
c2lvbigndmVyc2lvbiAzJykiKTsNCisgICAgICAgIHJlc3VsdDMub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOw0KKyAgICAgICAgcmVzdWx0My5vbnN1Y2Nlc3MgPSBpblNldFZlcnNp
b24zOw0KKyAgICAgICAgcmVzdWx0My5vbmJsb2NrZWQgPSBibG9ja2VkMzsNCisgICAgICAgIGRl
YnVnKCIiKTsNCisgICAgfQ0KK30NCisNCitibG9ja2VkMWZpcmVkID0gZmFsc2U7DQorYmxvY2tl
ZDNmaXJlZCA9IGZhbHNlOw0KK2Z1bmN0aW9uIGJsb2NrZWQxKCkNCit7DQorICBldmFsQW5kTG9n
KCJjb25uZWN0aW9uc1syXS5jbG9zZSgpIik7DQorICBibG9ja2VkMWZpcmVkID0gdHJ1ZTsNCit9
DQorDQorZnVuY3Rpb24gYmxvY2tlZDIoKQ0KK3sNCisgIHNob3VsZEJlVHJ1ZSgiYmxvY2tlZDFm
aXJlZCIpOw0KKyAgc2hvdWxkQmVGYWxzZSgiYmxvY2tlZDNmaXJlZCIpOw0KK30NCitmdW5jdGlv
biBibG9ja2VkMygpDQorew0KKyAgZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMF0uY2xvc2UoKSIp
Ow0KKyAgYmxvY2tlZDNmaXJlZCA9IHRydWU7DQorfQ0KKw0KK2Z1bmN0aW9uIGluU2V0VmVyc2lv
bigpDQorew0KKyAgICBkZWJ1ZygiRklYTUU6IFRoZSBmaXJzdCBzZXRWZXJzaW9uIHNob3VsZG4n
dCBnZXQgZmlyZWQiKTsNCit9DQorDQorZnVuY3Rpb24gaW5TZXRWZXJzaW9uMigpDQorew0KKyAg
ICB0ZXN0UGFzc2VkKCJpblNldFZlcnNpb24yIik7DQorfQ0KKw0KK2Z1bmN0aW9uIGluU2V0VmVy
c2lvbjMoKQ0KK3sNCisgICAgZGVidWcoIkZJWE1FOiBUaGUgdGhpcmQgc2V0VmVyc2lvbiBzaG91
bGRuJ3QgZ2V0IGZpcmVkIik7DQorICAgIGRvbmUoKTsNCit9DQorDQordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7DQorDQordGVzdCgpOw0KKw0KKzwvc2NyaXB0Pg0KKzwvYm9keT4NCis8
L2h0bWw+DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU3M2E4YzZlOTI3ZjdhMmY2N2UwZjg0NDA3OWJlY2UyMWNk
YTU2NDUuLjg5MTA2ZmNhM2Q3Nzk1Mjg3OTJjNzg2ZDFiYjVhOTJmMTU1MWFmNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2MyBAQAorMjAxMS0wMi0xNCAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgorCisgICAg
ICAgIGluZGV4ZWRkYjogbWFrZSBzZXRWZXJzaW9uIGZpcmUgYmxvY2tlZCBldmVudCBpZiBvdGhl
ciBjb25uZWN0aW9ucyBhcmUgb3BlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTM3MjgKKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9z
ZXRfdmVyc2lvbl9ibG9ja2VkLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAg
ICAgKiBXZWJDb3JlLnByaToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAq
IGRvbS9FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6aXNJREJCbG9ja2VkRXZl
bnQpOgorICAgICAgICAqIGRvbS9FdmVudC5oOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6
CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
VGFyZ2V0Ojp0b0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KToKKyAgICAgICAgKiBkb20vRXZlbnRU
YXJnZXQuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkJsb2NrZWRFdmVudC5jcHA6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaC4KKyAg
ICAgICAgKFdlYkNvcmU6OklEQkJsb2NrZWRFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkJsb2NrZWRFdmVudDo6SURCQmxvY2tlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkJsb2NrZWRFdmVudDo6fklEQkJsb2NrZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJCbG9ja2VkRXZlbnQ6OnZlcnNpb24pOgorICAgICAgICAqIHN0b3JhZ2UvSURCQmxvY2tlZEV2
ZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxi
YWNrc0ltcGwuaC4KKyAgICAgICAgKFdlYkNvcmU6OklEQkJsb2NrZWRFdmVudDo6aXNJREJCbG9j
a2VkRXZlbnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCQmxvY2tlZEV2ZW50LmlkbDogQWRkZWQu
CisgICAgICAgICogc3RvcmFnZS9JREJDYWxsYmFja3MuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lE
QkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp+SURCRGF0YWJh
c2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnNldFZlcnNpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlOjpzdG9wKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmg6CisgICAgICAg
ICogc3RvcmFnZS9JREJEYXRhYmFzZS5pZGw6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZElt
cGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmNsb3NlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
aDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbik6CisgICAgICAgICogc3RvcmFnZS9JREJS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uQmxvY2tlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlcXVlc3Q6OnNvdXJjZSk6CisgICAgICAgICogc3RvcmFnZS9JREJSZXF1ZXN0
Lmg6CisgICAgICAgICogc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaC4K
KyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6OklEQlZlcnNpb25DaGFuZ2VS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Ojp+SURC
VmVyc2lvbkNoYW5nZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCVmVyc2lvbkNoYW5n
ZVJlcXVlc3Q6Om9uQmxvY2tlZCk6CisgICAgICAgICogc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdl
UmVxdWVzdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJD
YWxsYmFja3NJbXBsLmguCisgICAgICAgICogc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVz
dC5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxi
YWNrc0ltcGwuaC4KKwogMjAxMS0wMi0xNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCBlYjgwMTZjNzkwODM3MmQ0ZmRlYWM2OGRlNDIzMWU2Zjk5NTY5ZGE5Li43Zjc3OWVh
YmE4NWE3NjBmZWU3ODZjZjAxNGIwNDgzNzRiOGI3NzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0y
NzMsNiArMjczLDcgQEAKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaWRs
JywKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlU3luYy5pZGwnLAogICAgICAgICAgICAg
J3N0b3JhZ2UvSURCQW55LmlkbCcsCisgICAgICAgICAgICAnc3RvcmFnZS9JREJCbG9ja2VkRXZl
bnQuaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQkN1cnNvci5pZGwnLAogICAgICAgICAg
ICAgJ3N0b3JhZ2UvSURCRGF0YWJhc2VFcnJvci5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2Uv
SURCRGF0YWJhc2VFeGNlcHRpb24uaWRsJywKQEAgLTI4Nyw2ICsyODgsNyBAQAogICAgICAgICAg
ICAgJ3N0b3JhZ2UvSURCUmVxdWVzdC5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCU3Vj
Y2Vzc0V2ZW50LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5pZGwn
LAorICAgICAgICAgICAgJ3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaWRsJywKICAg
ICAgICAgICAgICdzdG9yYWdlL1NRTEVycm9yLmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9T
UUxFeGNlcHRpb24uaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL1NRTFJlc3VsdFNldC5pZGwn
LApAQCAtNDAyMiw2ICs0MDI0LDggQEAKICAgICAgICAgICAgICdzdG9yYWdlL0lEQkFib3J0RXZl
bnQuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJBbnkuY3BwJywKICAgICAgICAgICAgICdz
dG9yYWdlL0lEQkFueS5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL0lEQkJsb2NrZWRFdmVudC5j
cHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvSURCQmxvY2tlZEV2ZW50LmgnLAogICAgICAgICAg
ICAgJ3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCQ29t
cGxldGVFdmVudC5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCQ29tcGxldGVFdmVudC5o
JywKQEAgLTQwODEsNiArNDA4NSw4IEBACiAgICAgICAgICAgICAnc3RvcmFnZS9JREJUcmFuc2Fj
dGlvbkNhbGxiYWNrcy5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQlRyYW5zYWN0aW9uQ29v
cmRpbmF0b3IuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQlRyYW5zYWN0aW9uQ29vcmRp
bmF0b3IuaCcsCisgICAgICAgICAgICAnc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5j
cHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaCcsCiAg
ICAgICAgICAgICAnc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUYXNrLmNwcCcsCiAgICAgICAgICAgICAn
c3RvcmFnZS9Mb2NhbFN0b3JhZ2VUYXNrLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvTG9jYWxT
dG9yYWdlVGhyZWFkLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCmluZGV4IDUyZTI3MzhhNmVkMzljODE3OTE0
ZDYxNWU1ZDViZjc5NjkwOWY2MmEuLjVlNzhhZjgxOTNjYzdlYWQxMjI5ZTEzMmViMmU3ZWU3YTJk
Y2I1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJpCkBAIC0zMzYsNiArMzM2LDcgQEAgSURMX0JJTkRJTkdTICs9
IFwKICAgICBzdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaWRsIFwKICAgICBzdG9yYWdlL0RhdGFi
YXNlU3luYy5pZGwgXAogICAgIHN0b3JhZ2UvSURCQW55LmlkbCBcCisgICAgc3RvcmFnZS9JREJC
bG9ja2VkRXZlbnQuaWRsIFwKICAgICBzdG9yYWdlL0lEQkN1cnNvci5pZGwgXAogICAgIHN0b3Jh
Z2UvSURCRGF0YWJhc2VFcnJvci5pZGwgXAogICAgIHN0b3JhZ2UvSURCRGF0YWJhc2VFeGNlcHRp
b24uaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAK
aW5kZXggZmQ4MDM2MGE3M2JlZTYyMTcxZTMyOTE2ZTA0MzZmMzVmYTI1OGQxNi4uN2ExYmFlMWU0
ZDAxZDYxMDBhOTg3ZjQ2MTkwNGEyZmVkNGU0M2YwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAKQEAgLTk0LDggKzk0LDEwIEBACiAjZW5kaWYKIAog
I2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2luY2x1ZGUgIklEQkJsb2NrZWRFdmVudC5o
IgogI2luY2x1ZGUgIklEQkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJJREJTdWNjZXNzRXZlbnQu
aCIKKyNpbmNsdWRlICJKU0lEQkJsb2NrZWRFdmVudC5oIgogI2luY2x1ZGUgIkpTSURCRXJyb3JF
dmVudC5oIgogI2luY2x1ZGUgIkpTSURCU3VjY2Vzc0V2ZW50LmgiCiAjZW5kaWYKQEAgLTE2Niw2
ICsxNjgsOCBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFdmVudCogZXZlbnQpCiAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVf
RE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgU3RvcmFnZUV2ZW50LCBldmVu
dCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBlbHNlIGlmIChl
dmVudC0+aXNJREJCbG9ja2VkRXZlbnQoKSkKKyAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01f
T0JKRUNUX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBJREJCbG9ja2VkRXZlbnQsIGV2ZW50
KTsKICAgICBlbHNlIGlmIChldmVudC0+aXNJREJFcnJvckV2ZW50KCkpCiAgICAgICAgIHdyYXBw
ZXIgPSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgSURCRXJy
b3JFdmVudCwgZXZlbnQpOwogICAgIGVsc2UgaWYgKGV2ZW50LT5pc0lEQlN1Y2Nlc3NFdmVudCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0
b20uY3BwCmluZGV4IGZmOWI5OGIyMzFlNGU1YjEyM2IxNWUxNWE4ZDUzODQxNTRkYTZlMTYuLmQ0
Mzg3ZGI4MmE5YzhiMmI1MmJhYzk4OGFhOTNlMDUwOTYzMTVkZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudEN1c3RvbS5jcHAKQEAgLTQ0LDYg
KzQ0LDcgQEAKICNpbmNsdWRlICJWOERldmljZU9yaWVudGF0aW9uRXZlbnQuaCIKICNpbmNsdWRl
ICJWOEVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJWOEhhc2hDaGFuZ2VFdmVudC5oIgorI2luY2x1
ZGUgIlY4SURCQmxvY2tlZEV2ZW50LmgiCiAjaW5jbHVkZSAiVjhJREJFcnJvckV2ZW50LmgiCiAj
aW5jbHVkZSAiVjhJREJTdWNjZXNzRXZlbnQuaCIKICNpbmNsdWRlICJWOEtleWJvYXJkRXZlbnQu
aCIKQEAgLTE1Niw2ICsxNTcsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChFdmVudCog
aW1wbCkKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8U3RvcmFnZUV2ZW50Kj4oaW1w
bCkpOwogI2VuZGlmCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisgICAgaWYgKGltcGwt
PmlzSURCQmxvY2tlZEV2ZW50KCkpCisgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PElE
QkJsb2NrZWRFdmVudCo+KGltcGwpKTsKICAgICBpZiAoaW1wbC0+aXNJREJFcnJvckV2ZW50KCkp
CiAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PElEQkVycm9yRXZlbnQqPihpbXBsKSk7
CiAgICAgaWYgKGltcGwtPmlzSURCU3VjY2Vzc0V2ZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAppbmRl
eCBiZGMxYzU4MDc0OTA0NDAyMzE2OTllOTY3NDVhYWYyMzQ5M2E5NGFiLi40OWI3ZTgxYTkxNzA4
OTAyODRlOTcyZDFiOThiYzdiMGRiZDAzNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKQEAgLTE5OCw2
ICsxOTgsMTEgQEAgYm9vbCBFdmVudDo6aXNJREJBYm9ydEV2ZW50KCkgY29uc3QKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKK2Jvb2wgRXZlbnQ6OmlzSURCQmxvY2tlZEV2ZW50KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgRXZlbnQ6OmlzSURCQ29tcGxldGVFdmVudCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAppbmRleCA4MWY5ZTZiMjkw
OGUxYmE4N2YyODNmZjFmNmYxN2U1MjgwNzY0Mzc0Li4wNDgxN2EzN2UxNGVkYzY0YmIwYzdhNjEz
Njk1MjQ0NDhkYWJhNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaApAQCAtMTI3LDYgKzEyNyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICNlbmRpZgogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNJREJBYm9ydEV2ZW50KCkgY29uc3Q7CisgICAgICAgIHZpcnR1
YWwgYm9vbCBpc0lEQkJsb2NrZWRFdmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNJREJDb21wbGV0ZUV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0lEQkVy
cm9yRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzSURCU3VjY2Vzc0V2ZW50
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA0MzllOWQ4YjU1OGI2ZTViMjJj
NzY0MzA3NTUwMDc3MzYzNjMxZGQxLi5hZGY0OGVkZGY3NmJlNDM1MDJhZmQxZjA2YjQ4MGU5NWIw
NGQ5NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIG1hY3JvKGJlZm9yZXBhc3RlKSBcCiAgICAgbWFjcm8oYmVmb3Jl
cHJvY2VzcykgXAogICAgIG1hY3JvKGJlZm9yZXVubG9hZCkgXAorICAgIG1hY3JvKGJsb2NrZWQp
IFwKICAgICBtYWNybyhibHVyKSBcCiAgICAgbWFjcm8oY2FjaGVkKSBcCiAgICAgbWFjcm8oY2hh
bmdlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCBlZDU5OTVjZDBkMmNkOWI0
NzVkNzU4NjNjM2FjNDk5ZGVhZmIwZmZmLi5lMjdiMTViZDg4M2EwZGU5OWZkY2RkYmU3ZTg5YzU0
MGE1MWZkODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTE4OSw2ICsxODks
MTAgQEAgSURCUmVxdWVzdCogRXZlbnRUYXJnZXQ6OnRvSURCUmVxdWVzdCgpCiB7CiAgICAgcmV0
dXJuIDA7CiB9CitJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCogRXZlbnRUYXJnZXQ6OnRvSURCVmVy
c2lvbkNoYW5nZVJlcXVlc3QoKQoreworICAgIHJldHVybiAwOworfQogSURCVHJhbnNhY3Rpb24q
IEV2ZW50VGFyZ2V0Ojp0b0lEQlRyYW5zYWN0aW9uKCkKIHsKICAgICByZXR1cm4gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggYTAzODAxYmNiZDUwMGU0ZGJjZTg5NTFjZDQ3NmI0ZDNk
NzA4YThiMy4uYThkMTYwMGY5MTlmNjY0NzIyZDhiOWMzYTk0YWNkNDFhZWVkZjI1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTUyLDYgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIElEQkRhdGFiYXNlOwogICAgIGNsYXNzIElEQlJlcXVlc3Q7CiAgICAgY2xh
c3MgSURCVHJhbnNhY3Rpb247CisgICAgY2xhc3MgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q7CiAg
ICAgY2xhc3MgSmF2YVNjcmlwdEF1ZGlvTm9kZTsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAg
ICBjbGFzcyBOb2RlOwpAQCAtMTQyLDYgKzE0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdmlydHVhbCBJREJEYXRhYmFzZSogdG9JREJEYXRhYmFzZSgpOwogICAgICAgICB2aXJ0
dWFsIElEQlJlcXVlc3QqIHRvSURCUmVxdWVzdCgpOwogICAgICAgICB2aXJ0dWFsIElEQlRyYW5z
YWN0aW9uKiB0b0lEQlRyYW5zYWN0aW9uKCk7CisgICAgICAgIHZpcnR1YWwgSURCVmVyc2lvbkNo
YW5nZVJlcXVlc3QqIHRvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QoKTsKICNlbmRpZgogCiAgICAg
ICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmxv
Y2tlZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmxvY2tlZEV2ZW50LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zMDUzMTEzOGVkZGQ0OTIxMWU5MjIwMTg5MWEwMDBiNzRiNjgxN2QyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCbG9ja2VkRXZlbnQu
Y3BwCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSURCQmxvY2tlZEV2ZW50LmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwor
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJJREJBbnkuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitQYXNzUmVmUHRyPElEQkJsb2NrZWRFdmVudD4gSURCQmxvY2tlZEV2ZW50
OjpjcmVhdGUoUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9u
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQmxvY2tlZEV2ZW50KHNvdXJjZSwgdmVy
c2lvbikpOworfQorCitJREJCbG9ja2VkRXZlbnQ6OklEQkJsb2NrZWRFdmVudChQYXNzUmVmUHRy
PElEQkFueT4gc291cmNlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pCisgICAgOiBJREJFdmVudChl
dmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50LCBzb3VyY2UsIGZhbHNlIC8qY2FuQnViYmxlKi8pCisg
ICAgLCBtX3ZlcnNpb24odmVyc2lvbikKK3sKK30KKworSURCQmxvY2tlZEV2ZW50Ojp+SURCQmxv
Y2tlZEV2ZW50KCkKK3sKK30KKworU3RyaW5nIElEQkJsb2NrZWRFdmVudDo6dmVyc2lvbigpCit7
CisgICAgcmV0dXJuIG1fdmVyc2lvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmxvY2tlZEV2ZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJsb2NrZWRFdmVudC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhkNjA0MjQ3YjYwYjM4NGMxNDAwNWNhNWMxNWI5NjdmYWJiZTU5YTIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJsb2NrZWRFdmVudC5oCkBAIC0wLDAgKzEs
NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIElEQkJsb2NrZWRFdmVudF9oCisjZGVmaW5lIElEQkJsb2Nr
ZWRFdmVudF9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklE
QkV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBJREJCbG9ja2VkRXZlbnQgOiBwdWJsaWMgSURCRXZlbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkJsb2NrZWRFdmVudD4gY3JlYXRlKFBhc3NSZWZQdHI8
SURCQW55PiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CisgICAgLy8gRklYTUU6IE5l
ZWQgdG8gYWxsb3cgY3JlYXRpb24gb2YgdGhlc2UgZXZlbnRzIGZyb20gSlMuCisgICAgdmlydHVh
bCB+SURCQmxvY2tlZEV2ZW50KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNJREJCbG9ja2VkRXZl
bnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9u
KCk7CisKK3ByaXZhdGU6CisgICAgSURCQmxvY2tlZEV2ZW50KFBhc3NSZWZQdHI8SURCQW55PiBz
b3VyY2UsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CisKKyAgICBTdHJpbmcgbV92ZXJzaW9uOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCisKKyNlbmRpZiAvLyBJREJCbG9ja2VkRXZlbnRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCbG9ja2VkRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJCbG9ja2VkRXZlbnQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyODJlMjYzZGQ0Y2QyZjVh
NzMxOTcyYjQ4OWEzYThiMDRlNjc0ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkJsb2NrZWRFdmVudC5pZGwKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21v
ZHVsZSBzdG9yYWdlIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUlO
REVYRURfREFUQUJBU0UKKyAgICBdIElEQkJsb2NrZWRFdmVudCA6IElEQkV2ZW50IHsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB2ZXJzaW9uOworICAgIH07Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJDYWxsYmFja3MuaAppbmRleCAyOWZiMWM0NjkzNTE5ODZiMWQ0Y2E2
MmRiODlmY2QwNzVlMThmYjljLi5hNTAyZWQ2NjJlYWQ5MGQ2YWI1ZWMwZDc5ZTMwOWJkYTZmNDk1
N2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgKQEAgLTU2LDYgKzU2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCmluZGV4IDlh
NWViNmM2MmZjZTQ2NzhiZDRkZTlmYzdjNDE2NWMzMmZmNWE3NjAuLjU2YTg5MTQxOTU1ZGRiOTA3
ZmIzOGU4YTdhZjc5YWJjNTI1YTkxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJh
c2UuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2UuaCIKICNpbmNsdWRlICJJREJJbmRleC5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3Jl
LmgiCi0jaW5jbHVkZSAiSURCUmVxdWVzdC5oIgorI2luY2x1ZGUgIklEQlZlcnNpb25DaGFuZ2VS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8bGltaXRzPgpAQCAtOTcsOSArOTcsOSBAQCB2
b2lkIElEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgIG1fYmFja2VuZC0+ZGVsZXRlT2JqZWN0U3RvcmUobmFtZSwg
bV9zZXRWZXJzaW9uVHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwogfQogCi1QYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQkRhdGFiYXNlOjpzZXRWZXJzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitQ
YXNzUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBJREJEYXRhYmFzZTo6c2V0VmVyc2lv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnNpb24s
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0g
SURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCAwKTsKKyAg
ICBSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IHJlcXVlc3QgPSBJREJWZXJzaW9uQ2hh
bmdlUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCB2ZXJzaW9u
KTsKICAgICBtX2JhY2tlbmQtPnNldFZlcnNpb24odmVyc2lvbiwgcmVxdWVzdCwgZWMpOwogICAg
IHJldHVybiByZXF1ZXN0OwogfQpAQCAtMTM2LDcgKzEzNiwxMCBAQCBQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uPiBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udAogCiB2b2lkIElEQkRhdGFiYXNlOjpjbG9zZSgpCiB7CisgICAgaWYgKG1fbm9OZXdU
cmFuc2FjdGlvbnMpCisgICAgICAgIHJldHVybjsKICAgICBtX25vTmV3VHJhbnNhY3Rpb25zID0g
dHJ1ZTsKKyAgICBtX2JhY2tlbmQtPmNsb3NlKCk7CiB9CiAKIGJvb2wgSURCRGF0YWJhc2U6Omhh
c1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgK
aW5kZXggZjkwZGRkMzhiZmY1MDI1ZGZjN2EwNTMwYTUzMTBkMzg3NTIxZDUxOC4uNTFlN2E5OTIy
NTg4ZWE3Yjc4OGI5NGQ0OGFlZGMxYWU1MmM0YzA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2UuaApAQCAtNDMsOCArNDMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIElEQkFueTsKLWNsYXNzIElEQlJlcXVlc3Q7CitjbGFzcyBJREJWZXJzaW9uQ2hhbmdlUmVx
dWVzdDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIElEQkRhdGFiYXNl
IDogcHVibGljIFJlZkNvdW50ZWQ8SURCRGF0YWJhc2U+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1
YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6
CiAKICAgICBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IE9wdGlvbnNPYmplY3QmLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHNldFZlcnNpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYpOworICAg
IFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IHNldFZlcnNpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgY2xvc2UoKTsKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
YWJvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlkbAppbmRleCAzOTIyMTQ0
NDllZWY5NzE5MjA0OGM5YzM0ODcxODlhMjRiMjMxYWI1Li5lNmU4MTliYzJjZTIxZmYwMzMyMDE0
YTc2MWFmNTgwYjg2NjViYmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkRhdGFiYXNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlk
bApAQCAtNDAsNyArNDAsNyBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgICAgICAgICByYWlzZXMg
KElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShp
biBET01TdHJpbmcgbmFtZSkKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRp
b24pOwotICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVz
dCBzZXRWZXJzaW9uKGluIERPTVN0cmluZyB2ZXJzaW9uKQorICAgICAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dF0gSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qgc2V0VmVyc2lvbihp
biBET01TdHJpbmcgdmVyc2lvbikKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNl
cHRpb24pOwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCVHJh
bnNhY3Rpb24gdHJhbnNhY3Rpb24oaW4gW09wdGlvbmFsXSBET01TdHJpbmdMaXN0IHN0b3JlTmFt
ZXMsIGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgbW9kZSkKICAgICAgICAgICAgIHJhaXNl
cyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggMTMzYzVhZWI0MDQ1N2FlZDY2ZjQ4NjUw
NDMyYTJkZWRlY2MzOGM3Yi4uMzg1ZWIzMmVlZjc0MjE0OTIzOTYyMWExMzdiNjUyMGVhMDlkYTI5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuY3BwCkBAIC00MSw2ICs0MSwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdTZXRWZXJzaW9uQ2FsbCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFBlbmRpbmdTZXRWZXJzaW9uQ2FsbD4geworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFBlbmRpbmdTZXRWZXJzaW9uQ2FsbD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdmVy
c2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUGVuZGluZ1NldFZlcnNpb25DYWxsKHZlcnNpb24sIGNhbGxi
YWNrcykpOworICAgIH0KKyAgICBTdHJpbmcgdmVyc2lvbigpIHsgcmV0dXJuIG1fdmVyc2lvbjsg
fQorICAgIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MoKSB7IHJldHVybiBtX2Nh
bGxiYWNrczsgfQorcHJpdmF0ZToKKyAgICBQZW5kaW5nU2V0VmVyc2lvbkNhbGwoY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgICAg
ICA6IG1fdmVyc2lvbih2ZXJzaW9uKQorICAgICAgICAsIG1fY2FsbGJhY2tzKGNhbGxiYWNrcykK
KyAgICB7CisgICAgfQorICAgIFN0cmluZyBtX3ZlcnNpb247CisgICAgUmVmUHRyPElEQkNhbGxi
YWNrcz4gbV9jYWxsYmFja3M7Cit9OworCiBzdGF0aWMgYm9vbCBleHRyYWN0TWV0YURhdGEoU1FM
aXRlRGF0YWJhc2UmIHNxbGl0ZURhdGFiYXNlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYg
Zm91bmRWZXJzaW9uLCBpbnQ2NCYgZm91bmRJZCkKIHsKICAgICBTUUxpdGVTdGF0ZW1lbnQgZGF0
YWJhc2VRdWVyeShzcWxpdGVEYXRhYmFzZSwgIlNFTEVDVCBpZCwgdmVyc2lvbiBGUk9NIERhdGFi
YXNlcyBXSEVSRSBuYW1lID0gPyIpOwpAQCAtOTUsNiArMTEzLDcgQEAgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQlNR
TGl0ZURhdGEKICAgICAsIG1faWRlbnRpZmllcih1bmlxdWVJZGVudGlmaWVyKQogICAgICwgbV9m
YWN0b3J5KGZhY3RvcnkpCiAgICAgLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IoY29vcmRpbmF0
b3IpCisgICAgLCBtX29wZW5Db25uZWN0aW9uQ291bnQoMCkKIHsKICAgICBBU1NFUlQoIW1fbmFt
ZS5pc051bGwoKSk7CiAKQEAgLTIxMyw2ICsyMzIsMTUgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJD
YWwKIHsKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UgPSB0aGlz
OwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKKwor
ICAgIC8vIEZJWE1FOiBPbmx5IGNvbnRpbnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIHN0aWxsIG9w
ZW4uCisgICAgaWYgKG1fb3BlbkNvbm5lY3Rpb25Db3VudCA+IDEpIHsKKyAgICAgICAgY2FsbGJh
Y2tzLT5vbkJsb2NrZWQoKTsKKyAgICAgICAgUmVmUHRyPFBlbmRpbmdTZXRWZXJzaW9uQ2FsbD4g
cGVuZGluZ1NldFZlcnNpb25DYWxsID0gUGVuZGluZ1NldFZlcnNpb25DYWxsOjpjcmVhdGUodmVy
c2lvbiwgY2FsbGJhY2tzKTsKKyAgICAgICAgbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmFwcGVu
ZChwZW5kaW5nU2V0VmVyc2lvbkNhbGwpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJpbmdMaXN0Ojpj
cmVhdGUoKTsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFu
c2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0ZShvYmplY3RTdG9yZU5h
bWVzLmdldCgpLCBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UsIHRoaXMpOwogICAgIGlm
ICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJklEQkRhdGFi
YXNlQmFja2VuZEltcGw6OnNldFZlcnNpb25JbnRlcm5hbCwgZGF0YWJhc2UsIHZlcnNpb24sIGNh
bGxiYWNrcywgdHJhbnNhY3Rpb24pLApAQCAtMjQ3LDkgKzI3NSwyNCBAQCBQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJh
bnNhY3Rpb24oRAogICAgIHJldHVybiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUo
b2JqZWN0U3RvcmVOYW1lcywgbW9kZSwgdGhpcyk7CiB9CiAKK3ZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6b3BlbigpCit7CisgICAgbV9vcGVuQ29ubmVjdGlvbkNvdW50Kys7Cit9CisKIHZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UoKQogewotICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQuCisgICAgbV9vcGVuQ29ubmVjdGlvbkNvdW50LS07CisgICAgQVNTRVJUKG1fb3BlbkNv
bm5lY3Rpb25Db3VudCA+PSAwKTsKKyAgICBpZiAobV9vcGVuQ29ubmVjdGlvbkNvdW50ID4gMSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgd2hpbGUgKCFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMu
aXNFbXB0eSgpKSB7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgICAgIFJlZlB0cjxQ
ZW5kaW5nU2V0VmVyc2lvbkNhbGw+IHBlbmRpbmdTZXRWZXJzaW9uQ2FsbCA9IG1fcGVuZGluZ1Nl
dFZlcnNpb25DYWxscy50YWtlRmlyc3QoKTsKKyAgICAgICAgc2V0VmVyc2lvbihwZW5kaW5nU2V0
VmVyc2lvbkNhbGwtPnZlcnNpb24oKSwgcGVuZGluZ1NldFZlcnNpb25DYWxsLT5jYWxsYmFja3Mo
KSwgZWMpOworICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICB9CiB9CiAKIHZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6bG9hZE9iamVjdFN0b3JlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IDg5NDI5Njg1YmM4NDlmMTI1ODYx
ZDgzZmQ0OTU3MThiNTM4OGUwOTAuLjIwMmIwNzIwN2EwMjQ4MDBkZjI1MTZkNzVjODQ1YzA1MDRj
NzIwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKICNp
bmNsdWRlICJJREJEYXRhYmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC01
Myw2ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IEludmFsaWRJ
ZCA9IDA7CiAgICAgaW50NjRfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICB2b2lk
IG9wZW4oKTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25h
bWU7IH0KICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZXJz
aW9uOyB9CkBAIC05NCw2ICs5NiwxMSBAQCBwcml2YXRlOgogICAgIE9iamVjdFN0b3JlTWFwIG1f
b2JqZWN0U3RvcmVzOwogCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+IG1f
dHJhbnNhY3Rpb25Db29yZGluYXRvcjsKKworICAgIGludCBtX29wZW5Db25uZWN0aW9uQ291bnQ7
CisKKyAgICBjbGFzcyBQZW5kaW5nU2V0VmVyc2lvbkNhbGw7CisgICAgRGVxdWU8UmVmUHRyPFBl
bmRpbmdTZXRWZXJzaW9uQ2FsbD4gPiBtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHM7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCA5Y2M3MjMwYWNkODA2MjhlMWY5MGJi
NjQ0NjUwZTRjZDE2ZWU4NTgzLi5jNDk0MWRkYjBjMDVhMTZhN2QwNGNiZTM3ZDdmNmEzOWM1ODEy
ODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlLmgKQEAgLTQwLDcgKzQwLDYgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBJREJD
YWxsYmFja3M7CiBjbGFzcyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U7Ci1jbGFzcyBJREJUcmFuc2FjdGlvbkNhbGxi
YWNrczsKIAogLy8gVGhpcyBjbGFzcyBpcyBzaGFyZWQgYnkgSURCRGF0YWJhc2UgKGFzeW5jKSBh
bmQgSURCRGF0YWJhc2VTeW5jIChzeW5jKS4KIC8vIFRoaXMgaXMgaW1wbGVtZW50ZWQgYnkgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbCBhbmQgb3B0aW9uYWxseSBvdGhlcnMgKGluIG9yZGVyIHRvIHBy
b3h5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5k
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5j
cHAKaW5kZXggMGU4ODNjZmUyZTQ1NjQ3ODZmOTQyMjFmODRjZmE1NWIzMmQxNzdiOS4uMzcyZDU0
Yzc4OTFjZTQxNzBjMDM3ZDhjYmQyMmJjNDliMjNiNGU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAtMjEzLDYgKzIxMyw3IEBA
IHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhCiAgICAgU3RyaW5nIHVuaXF1ZUlkZW50aWZpZXIgPSBm
aWxlSWRlbnRpZmllciArICJAIiArIG5hbWU7CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kTWFwOjpp
dGVyYXRvciBpdCA9IG1fZGF0YWJhc2VCYWNrZW5kTWFwLmZpbmQodW5pcXVlSWRlbnRpZmllcik7
CiAgICAgaWYgKGl0ICE9IG1fZGF0YWJhc2VCYWNrZW5kTWFwLmVuZCgpKSB7CisgICAgICAgIGl0
LT5zZWNvbmQtPm9wZW4oKTsKICAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoaXQtPnNlY29u
ZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMzUsNiArMjM2LDcgQEAgdm9pZCBJREJG
YWN0b3J5QmFja2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2EKICAgICB9CiAKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1w
bD4gZGF0YWJhc2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlKG5hbWUs
IHNxbGl0ZURhdGFiYXNlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCksIHRo
aXMsIHVuaXF1ZUlkZW50aWZpZXIpOworICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbigpOwogICAg
IGNhbGxiYWNrcy0+b25TdWNjZXNzKGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CiAgICAgbV9kYXRh
YmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAppbmRleCBlNzQ5OGVjZTVj
ZmQwMjQyMDQzOTQyZTQ5M2VjYmM5M2Q1Njk3OGVhLi4xYjBhNWU1ZDM2MTk1MzA3NGFkYWUyYmRm
MDBjMDBlZTQxNjVlNzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJl
cXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKQEAg
LTM2LDEwICszNiwxMSBAQAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgorI2luY2x1ZGUgIklEQkJsb2Nr
ZWRFdmVudC5oIgogI2luY2x1ZGUgIklEQkN1cnNvci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNl
LmgiCi0jaW5jbHVkZSAiSURCSW5kZXguaCIKICNpbmNsdWRlICJJREJFcnJvckV2ZW50LmgiCisj
aW5jbHVkZSAiSURCSW5kZXguaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1
ZGUgIklEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCIKICNpbmNsdWRlICJJREJTdWNjZXNz
RXZlbnQuaCIKQEAgLTE0MSw2ICsxNDIsMTEgQEAgYm9vbCBJREJSZXF1ZXN0OjpoYXNQZW5kaW5n
QWN0aXZpdHkoKSBjb25zdAogICAgIHJldHVybiAhbV9maW5pc2hlZCB8fCBBY3RpdmVET01PYmpl
Y3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCit2b2lkIElEQlJlcXVlc3Q6Om9uQmxvY2tl
ZCgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIElEQlJlcXVlc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAg
IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTE1
Miw3ICsxNTgsOCBAQCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxF
dmVudD4gZXZlbnQpCiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAg
QVNTRVJUKGV2ZW50LT50YXJnZXQoKSA9PSB0aGlzKTsKICAgICBBU1NFUlQobV9yZWFkeVN0YXRl
IDwgRE9ORSk7Ci0gICAgbV9yZWFkeVN0YXRlID0gRE9ORTsKKyAgICBpZiAoIWV2ZW50LT5pc0lE
QkJsb2NrZWRFdmVudCgpKQorICAgICAgICBtX3JlYWR5U3RhdGUgPSBET05FOwogCiAgICAgVmVj
dG9yPFJlZlB0cjxFdmVudFRhcmdldD4gPiB0YXJnZXRzOwogICAgIHRhcmdldHMuYXBwZW5kKHRo
aXMpOwpAQCAtMTY1LDcgKzE3Miw3IEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQ
YXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICAgICAgdGFyZ2V0cy5hcHBlbmQobV90cmFuc2Fj
dGlvbi0+ZGIoKSk7CiAgICAgfQogCi0gICAgQVNTRVJUKGV2ZW50LT5pc0lEQkVycm9yRXZlbnQo
KSB8fCBldmVudC0+aXNJREJTdWNjZXNzRXZlbnQoKSk7CisgICAgQVNTRVJUKGV2ZW50LT5pc0lE
QkVycm9yRXZlbnQoKSB8fCBldmVudC0+aXNJREJTdWNjZXNzRXZlbnQoKSB8fCBldmVudC0+aXNJ
REJCbG9ja2VkRXZlbnQoKSk7CiAgICAgYm9vbCBkb250UHJldmVudERlZmF1bHQgPSBzdGF0aWNf
Y2FzdDxJREJFdmVudCo+KGV2ZW50LmdldCgpKS0+ZGlzcGF0Y2godGFyZ2V0cyk7CiAKICAgICAv
LyBJZiB0aGUgZXZlbnQncyByZXN1bHQgd2FzIG9mIHR5cGUgSURCQ3Vyc29yLCB0aGVuIGl0J3Mg
cG9zc2libGUgZm9yIHVzIHRvCkBAIC0xNzQsNyArMTgxLDcgQEAgYm9vbCBJREJSZXF1ZXN0Ojpk
aXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgICAgICBSZWZQdHI8SURC
QW55PiBhbnkgPSBzdGF0aWNfY2FzdDxJREJTdWNjZXNzRXZlbnQqPihldmVudC5nZXQoKSktPnJl
c3VsdCgpOwogICAgICAgICBpZiAoYW55LT50eXBlKCkgIT0gSURCQW55OjpJREJDdXJzb3JUeXBl
KQogICAgICAgICAgICAgbV9maW5pc2hlZCA9IHRydWU7Ci0gICAgfSBlbHNlCisgICAgfSBlbHNl
IGlmICghZXZlbnQtPmlzSURCQmxvY2tlZEV2ZW50KCkpCiAgICAgICAgIG1fZmluaXNoZWQgPSB0
cnVlOwogCiAgICAgaWYgKG1fdHJhbnNhY3Rpb24pIHsKQEAgLTE5OCw2ICsyMDUsMTEgQEAgdm9p
ZCBJREJSZXF1ZXN0OjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAg
ZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KGV2ZW50KTsKIH0KIAorSURCQW55KiBJREJSZXF1ZXN0
Ojpzb3VyY2UoKQoreworICAgIHJldHVybiBtX3NvdXJjZS5nZXQoKTsKK30KKwogRXZlbnRUYXJn
ZXREYXRhKiBJREJSZXF1ZXN0OjpldmVudFRhcmdldERhdGEoKQogewogICAgIHJldHVybiAmbV9l
dmVudFRhcmdldERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJl
cXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCmluZGV4IDVjMzEz
MThhYmE0NTZiZGIyZWZmOWY2MGU1MTU2NDU5NDEyZjc3YzUuLjc3NDI4NjhmY2MzMzdiZjVmYjdl
MDVjMzhmZjVlYmFjZjZjOGZlYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCkBA
IC01OSw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RF
TkVSKGVycm9yKTsKIAogICAgIGJvb2wgcmVzZXRSZWFkeVN0YXRlKElEQlRyYW5zYWN0aW9uKik7
CisgICAgSURCQW55KiBzb3VyY2UoKTsKIAogICAgIC8vIElEQkNhbGxiYWNrcwogICAgIHZpcnR1
YWwgdm9pZCBvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pOwpAQCAtNjksNiAr
NzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nl
c3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7Cisg
ICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CiAg
ICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwpAQCAtODIsMTEgKzg0
LDExIEBAIHB1YmxpYzoKICAgICB1c2luZyBUaHJlYWRTYWZlU2hhcmVkPElEQkNhbGxiYWNrcz46
OnJlZjsKICAgICB1c2luZyBUaHJlYWRTYWZlU2hhcmVkPElEQkNhbGxiYWNrcz46OmRlcmVmOwog
Ci1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIElEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7Ci0KICAg
ICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAKK3ByaXZhdGU6CiAgICAg
Ly8gRXZlbnRUYXJnZXQKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigp
OyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjQ4NmM2NDU2MDMyNjI1YWM1YmFmZmNmMGY1ZTcwNWE5YWQ4MGU4MgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJl
cXVlc3QuY3BwCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaCIKKworI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCQmxvY2tlZEV2ZW50LmgiCisjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQ
dHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNv
dXJjZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SURCVmVyc2lvbkNoYW5nZVJlcXVlc3QoY29udGV4dCwgc291cmNlLCB2ZXJzaW9uKSk7Cit9CisK
K0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBjb25z
dCBTdHJpbmcmIHZlcnNpb24pCisgICAgOiBJREJSZXF1ZXN0KGNvbnRleHQsIHNvdXJjZSwgMCkK
KyAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQoreworfQorCitJREJWZXJzaW9uQ2hhbmdlUmVxdWVz
dDo6fklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KCkKK3sKK30KKwordm9pZCBJREJWZXJzaW9uQ2hh
bmdlUmVxdWVzdDo6b25CbG9ja2VkKCkKK3sKKyAgICBlbnF1ZXVlRXZlbnQoSURCQmxvY2tlZEV2
ZW50OjpjcmVhdGUoc291cmNlKCksIG1fdmVyc2lvbikpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJW
ZXJzaW9uQ2hhbmdlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9u
Q2hhbmdlUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyY2Y0YzAzNTFlYjUzODkwM2I1MWViNjQ5NWE5
MTVhZjkzZjQxMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
SURCVmVyc2lvbkNoYW5nZVJlcXVlc3RfaAorI2RlZmluZSBJREJWZXJzaW9uQ2hhbmdlUmVxdWVz
dF9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQlJlcXVl
c3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJWZXJzaW9uQ2hhbmdlUmVx
dWVzdCA6IHB1YmxpYyBJREJSZXF1ZXN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOworICAg
IHZpcnR1YWwgfklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQg
b25CbG9ja2VkKCk7CisKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGJsb2Nr
ZWQpOworCitwcml2YXRlOgorICAgIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBjb25zdCBTdHJpbmcmIHZl
cnNpb24pOworCisgICAgU3RyaW5nIG1fdmVyc2lvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjZW5kaWYgLy8g
SURCUmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNp
b25DaGFuZ2VSZXF1ZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNo
YW5nZVJlcXVlc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmYWM3MzU0NzBhMmE5YjAwZDJkNDlhNzg2ZWYx
NzZiYzlhOTdhMzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmlkbApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxl
IHN0b3JhZ2UgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9SU5ERVhF
RF9EQVRBQkFTRSwKKyAgICAgICAgRXZlbnRUYXJnZXQKKyAgICBdIElEQlZlcnNpb25DaGFuZ2VS
ZXF1ZXN0IDogSURCUmVxdWVzdCB7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
YmxvY2tlZDsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3ZmNmYjAy
NjA1MDc2OTMwN2NmOWNlZDFiZTRmNzM5ZTNlNGJiYTQ3Li40MmRkNGQ3MjM3MTBlZTY2MGZmMzgy
NTM4OThjNTI1ZGFjNTdiMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDExLTAyLTE0ICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCisKKyAgICAgICAgaW5kZXhlZGRi
OiBtYWtlIHNldFZlcnNpb24gZmlyZSBibG9ja2VkIGV2ZW50IGlmIG90aGVyIGNvbm5lY3Rpb25z
IGFyZSBvcGVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01MzcyOAorCisgICAgICAgICogcHVibGljL1dlYklEQkNhbGxiYWNrcy5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJDYWxsYmFja3M6Om9uQmxvY2tlZCk6CisgICAgICAgICogc3JjL0lEQkNh
bGxiYWNrc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNhbGxiYWNrc1Byb3h5Ojpv
bkJsb2NrZWQpOgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5oOgorICAgICAgICAq
IHNyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYklEQkNh
bGxiYWNrc0ltcGw6Om9uQmxvY2tlZCk6CisgICAgICAgICogc3JjL1dlYklEQkNhbGxiYWNrc0lt
cGwuaDoKKwogMjAxMS0wMi0xNCAgSmF5IFNvZmZpYW4gIDxqYXlzb2ZmaWFuQGdtYWlsLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKaW5kZXggZGJhMjhkOTRlYWZlNjNi
ODgwOTIxMGM2OGRmOWNkZGZjOWYyMmMwZC4uNDY1NDk1MDYzMjI0ZWY0MmE1MTU1NjU3NWU4MGFl
ZmNmZjNjNGY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2Fs
bGJhY2tzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxi
YWNrc1Byb3h5LmNwcApAQCAtOTksNiArOTksMTEgQEAgdm9pZCBJREJDYWxsYmFja3NQcm94eTo6
b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2MK
ICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFdlYktpdDo6V2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkpOwogfQogCit2b2lkIElEQkNhbGxiYWNrc1Byb3h5
OjpvbkJsb2NrZWQoKQoreworICAgIG1fY2FsbGJhY2tzLT5vbkJsb2NrZWQoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94
eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAppbmRl
eCBlMWRiMjNkNDM5ZjZhYTVmNzY4NjhhMDI3NzRmNjlkOTAwNWMwNzhmLi43ZGVkOGVhZTRlMzI4
MDVkYTE0NDMzODc3ZjVkNzUzMDI4MWJiMzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKQEAgLTU1LDYgKzU1LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bnRlcmZhY2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOworICAgIHZpcnR1YWwgdm9pZCBvbkJs
b2NrZWQoKTsKIAogcHJpdmF0ZToKICAgICBJREJDYWxsYmFja3NQcm94eShQYXNzT3duUHRyPFdl
YktpdDo6V2ViSURCQ2FsbGJhY2tzPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCmluZGV4IGJiN2ExOWJjZjIxOWNmMjA1M2M4Yzdk
MDU0ZDBhOTBkYWNlZTEzZTcuLjU3MDNmMjdjOTg3MzRmNzcxNmMyZjRiZmI3NmU2MDRlYzQxMjJk
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNr
c0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNr
c0ltcGwuY3BwCkBAIC05Niw2ICs5NiwxMSBAQCB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9u
U3VjY2Vzcyhjb25zdCBXZWJLaXQ6OldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaQogICAg
IG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKIH0KIAordm9p
ZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvbkJsb2NrZWQoKQoreworICAgIG1fY2FsbGJhY2tzLT5v
bkJsb2NrZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJDYWxsYmFja3NJbXBsLmgKaW5kZXggZDJhZTI1NTYyOWZiYTAxODE4NTQ3MmU5MWJiNjYx
YWIyMmIzMzc4Yi4uMWU3NmRlY2YxOTA5YmRjNzUzYzFiMjIyZmNhNWJhYzhjZGJkYzFjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaApA
QCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJL
aXQ6OldlYklEQk9iamVjdFN0b3JlKik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJL
aXQ6OldlYklEQlRyYW5zYWN0aW9uKik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25z
dCBXZWJLaXQ6OldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpOworICAgIHZpcnR1YWwgdm9pZCBv
bkJsb2NrZWQoKTsKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxi
YWNrczsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82378</attachid>
            <date>2011-02-14 16:07:59 -0800</date>
            <delta_ts>2011-02-16 14:39:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53728-20110214160758.patch</filename>
            <type>text/plain</type>
            <size>49056</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzg1MDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0NjZlMmE4NjUzNTM3YzVmMGE4ZDEz
YzMzNWM5Y2IyNzg1NzIwMDRmLi5mYzBkZTBlMjQxMmYyNzQ0MjdlMGIyODc5ZWVlYmU5YjIzMTZi
ZjNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDItMTQgIERhdmlkIEdyb2dhbiAgPGRn
cm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4K
KworICAgICAgICBpbmRleGVkZGI6IG1ha2Ugc2V0VmVyc2lvbiBmaXJlIGJsb2NrZWQgZXZlbnQg
aWYgb3RoZXIgY29ubmVjdGlvbnMgYXJlIG9wZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNzI4CisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvc2hhcmVkLmpzOgorICAgICAgICAodW5leHBlY3RlZEJsb2NrZWRDYWxsYmFj
ayk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fYmxvY2tlZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9u
X2Jsb2NrZWQuaHRtbDogQWRkZWQuCisKIDIwMTEtMDItMTQgIFhpYW9tZWkgSmkgIDx4amlAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcwppbmRleCA4YzU2ODMyMTBkYmNjZTQ5
Zjk4MmRhMzNmN2RiZDlkOTkyN2FiYTNkLi4wODVkYjJlNjJjMWE1YWRmY2Q0ZGY5OTVmYmQzMjc0
M2NiYTNiZjIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvc2hhcmVkLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9zaGFyZWQuanMKQEAgLTg3LDYgKzg3LDExIEBAIGZ1bmN0aW9uIHVuZXhwZWN0ZWRDb21w
bGV0ZUNhbGxiYWNrKCkKICAgICBkb25lKCk7CiB9CiAKK2Z1bmN0aW9uIHVuZXhwZWN0ZWRCbG9j
a2VkQ2FsbGJhY2soKQoreworICAgIHRlc3RGYWlsZWQoIm9uYmxvY2tlZCBjYWxsZWQgdW5leHBl
Y3RlZGx5Iik7Cit9CisKIGZ1bmN0aW9uIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oY21kLCBleHBl
Y3RlZCkKIHsKICAgICBkZWJ1ZygiRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tICIgKyBjbWQpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fYmxv
Y2tlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVy
c2lvbl9ibG9ja2VkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTA4OTA3Njk3MWRkNGJmMTVk
NTM1YzYwMmYwNjRjZjhjZDkxNGRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fYmxvY2tlZC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwyMCBAQAorQW4gb3BlbiBjb25uZWN0aW9uIGJsb2NrcyBhIHNlcGFyYXRlIGNvbm5lY3Rpb24n
cyBzZXRWZXJzaW9uIGNhbGwKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
SW5kZXhlZERCID09IG51bGwgaXMgZmFsc2UKK3dlYmtpdEluZGV4ZWREQi5vcGVuKCdzb21lIGRi
IG5hbWUnKQord2Via2l0SW5kZXhlZERCLm9wZW4oJ3NvbWUgZGIgbmFtZScpCitjb25uZWN0aW9u
c1swXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKQorc2Vlbl9ibG9ja2VkX2V2ZW50ID0gdHJ1ZQor
UEFTUyBibG9ja2VkX2V2ZW50LnZlcnNpb24gaXMgInZlcnNpb24gMSIKK1BBU1MgcmVzdWx0LnJl
YWR5U3RhdGUgaXMgMQorY29ubmVjdGlvbnNbMV0uY2xvc2UoKQoraW4gc2V0VmVyc2lvbi5vbnN1
Y2Nlc3MKK1BBU1Mgc2Vlbl9ibG9ja2VkX2V2ZW50IGlzIHRydWUKK0RlbGV0ZWQgYWxsIG9iamVj
dCBzdG9yZXMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNp
b25fYmxvY2tlZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNp
b25fYmxvY2tlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiOTkyODIwZTA4M2YxZmQ1YWQ4YmM3N2ZhMmE5
NmU1NmY4MjE0NGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2VkLmh0bWwKQEAgLTAsMCArMSw3MiBAQAorPGh0bWw+DQor
PGhlYWQ+DQorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+DQorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4NCis8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4NCis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+DQorPC9oZWFkPg0KKzxib2R5
Pg0KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPg0KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pg0K
KzxzY3JpcHQ+DQorDQorZGVzY3JpcHRpb24oIkFuIG9wZW4gY29ubmVjdGlvbiBibG9ja3MgYSBz
ZXBhcmF0ZSBjb25uZWN0aW9uJ3Mgc2V0VmVyc2lvbiBjYWxsIik7DQoraWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikNCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOw0KKw0KK2Nvbm5lY3Rpb25zID0gW10NCitmdW5jdGlvbiB0ZXN0KCkNCit7DQorICAgIGlm
ICgnd2Via2l0SW5kZXhlZERCJyBpbiB3aW5kb3cpDQorICAgICAgICBJbmRleGVkREIgPSB3ZWJr
aXRJbmRleGVkREI7DQorICAgIGVsc2UgaWYgKCdtb3pJbmRleGVkREInIGluIHdpbmRvdykNCisg
ICAgICAgIEluZGV4ZWREQiA9IG1vekluZGV4ZWREQjsNCisgICAgc2hvdWxkQmVGYWxzZSgiSW5k
ZXhlZERCID09IG51bGwiKTsNCisgICAgb3BlbkRCQ29ubmVjdGlvbigpOw0KK30NCisNCitmdW5j
dGlvbiBvcGVuREJDb25uZWN0aW9uKCkNCit7DQorICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIndl
YmtpdEluZGV4ZWREQi5vcGVuKCdzb21lIGRiIG5hbWUnKSIpOw0KKyAgICByZXN1bHQub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7DQorICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7DQorfQ0KKw0KK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkNCit7DQorICAgIGNvbm5l
Y3Rpb24gPSBldmVudC5yZXN1bHQ7DQorICAgIGNvbm5lY3Rpb25zLnB1c2goY29ubmVjdGlvbik7
DQorICAgIGlmIChjb25uZWN0aW9ucy5sZW5ndGggPCAyKQ0KKyAgICAgICAgb3BlbkRCQ29ubmVj
dGlvbigpOw0KKyAgICBlbHNlIHsNCisgICAgICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImNvbm5l
Y3Rpb25zWzBdLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7DQorICAgICAgICByZXN1bHQub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KKyAgICAgICAgcmVzdWx0Lm9uc3VjY2Vz
cyA9IGluU2V0VmVyc2lvbjsNCisgICAgICAgIHJlc3VsdC5vbmJsb2NrZWQgPSBibG9ja2VkOw0K
KyAgICB9DQorfQ0KKw0KK3NlZW5fYmxvY2tlZF9ldmVudCA9IGZhbHNlOw0KK2Z1bmN0aW9uIGJs
b2NrZWQobnVtX2Jsb2NrZWRfZXZlbnRzKQ0KK3sNCisgICAgZXZhbEFuZExvZygic2Vlbl9ibG9j
a2VkX2V2ZW50ID0gdHJ1ZSIpOw0KKyAgICBibG9ja2VkX2V2ZW50ID0gZXZlbnQ7DQorICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiYmxvY2tlZF9ldmVudC52ZXJzaW9uIiwgInZlcnNpb24gMSIp
Ow0KKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyZXN1bHQucmVhZHlTdGF0ZSIsIDEpOw0KKyAgICBl
dmFsQW5kTG9nKCJjb25uZWN0aW9uc1sxXS5jbG9zZSgpIik7DQorfQ0KKw0KK2Z1bmN0aW9uIGlu
U2V0VmVyc2lvbigpDQorew0KKyAgICBkZWJ1ZygiaW4gc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiKTsN
CisgICAgc2hvdWxkQmVUcnVlKCJzZWVuX2Jsb2NrZWRfZXZlbnQiKTsNCisgICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGNvbm5lY3Rpb25zWzBdLCBkb25lKTsNCit9DQorDQordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7DQorDQordGVzdCgpOw0KKw0KKzwvc2NyaXB0Pg0KKzwvYm9keT4N
Cis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0
X3ZlcnNpb25fcXVldWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvc2V0X3ZlcnNpb25fcXVldWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzZmI1MTkwYjUw
NDg5N2YyZTg5MjUwOTg0ZjBiYTYwZjZhZDhjM2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyNCBAQAorQW4gb3BlbiBjb25uZWN0aW9uIGJsb2NrcyBhIHNlcGFyYXRlIGNvbm5l
Y3Rpb24ncyBzZXRWZXJzaW9uIGNhbGwKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgSW5kZXhlZERCID09IG51bGwgaXMgZmFsc2UKK3dlYmtpdEluZGV4ZWREQi5vcGVuKCdz
b21lIGRiIG5hbWUnKQord2Via2l0SW5kZXhlZERCLm9wZW4oJ3NvbWUgZGIgbmFtZScpCit3ZWJr
aXRJbmRleGVkREIub3Blbignc29tZSBkYiBuYW1lJykKK2Nvbm5lY3Rpb25zWzBdLnNldFZlcnNp
b24oJ3ZlcnNpb24gMScpCitjb25uZWN0aW9uc1sxXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDInKQor
Y29ubmVjdGlvbnNbMl0uc2V0VmVyc2lvbigndmVyc2lvbiAzJykKKworY29ubmVjdGlvbnNbMl0u
Y2xvc2UoKQorUEFTUyBibG9ja2VkMWZpcmVkIGlzIHRydWUKK1BBU1MgYmxvY2tlZDNmaXJlZCBp
cyBmYWxzZQorY29ubmVjdGlvbnNbMF0uY2xvc2UoKQorRklYTUU6IFRoZSBmaXJzdCBzZXRWZXJz
aW9uIHNob3VsZG4ndCBnZXQgZmlyZWQKK1BBU1MgaW5TZXRWZXJzaW9uMgorRklYTUU6IFRoZSB0
aGlyZCBzZXRWZXJzaW9uIHNob3VsZG4ndCBnZXQgZmlyZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fcXVldWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOWVkMTQ3
ZDYwYTkwYjlhY2ViY2I5MjI2NmVhZDkwNTQyNGM0YmZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fcXVldWUuaHRtbApAQCAtMCww
ICsxLDk5IEBACis8aHRtbD4NCis8aGVhZD4NCis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4NCis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pg0KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24u
anMiPjwvc2NyaXB0Pg0KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4NCis8L2hlYWQ+DQorPGJvZHk+DQorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+DQorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+DQorPHNjcmlwdD4NCisNCitkZXNjcmlwdGlvbigiQW4gb3BlbiBj
b25uZWN0aW9uIGJsb2NrcyBhIHNlcGFyYXRlIGNvbm5lY3Rpb24ncyBzZXRWZXJzaW9uIGNhbGwi
KTsNCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7DQorDQorY29ubmVjdGlvbnMgPSBbXQ0KK2Z1bmN0aW9u
IHRlc3QoKQ0KK3sNCisgICAgaWYgKCd3ZWJraXRJbmRleGVkREInIGluIHdpbmRvdykNCisgICAg
ICAgIEluZGV4ZWREQiA9IHdlYmtpdEluZGV4ZWREQjsNCisgICAgZWxzZSBpZiAoJ21vekluZGV4
ZWREQicgaW4gd2luZG93KQ0KKyAgICAgICAgSW5kZXhlZERCID0gbW96SW5kZXhlZERCOw0KKyAg
ICBzaG91bGRCZUZhbHNlKCJJbmRleGVkREIgPT0gbnVsbCIpOw0KKyAgICBvcGVuREJDb25uZWN0
aW9uKCk7DQorfQ0KKw0KK2Z1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQ0KK3sNCisgICAgcmVz
dWx0ID0gZXZhbEFuZExvZygid2Via2l0SW5kZXhlZERCLm9wZW4oJ3NvbWUgZGIgbmFtZScpIik7
DQorICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsNCisgICAgcmVzdWx0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCit9DQorDQorZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQ0KK3sNCisgICAgY29ubmVjdGlvbiA9IGV2ZW50LnJlc3VsdDsNCisgICAgY29ubmVjdGlv
bnMucHVzaChjb25uZWN0aW9uKTsNCisgICAgaWYgKGNvbm5lY3Rpb25zLmxlbmd0aCA8IDMpDQor
ICAgICAgICBvcGVuREJDb25uZWN0aW9uKCk7DQorICAgIGVsc2Ugew0KKyAgICAgICAgcmVzdWx0
ID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMF0uc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsN
CisgICAgICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQorICAg
ICAgICByZXN1bHQub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uOw0KKyAgICAgICAgcmVzdWx0Lm9u
YmxvY2tlZCA9IGJsb2NrZWQxOw0KKyAgICAgICAgcmVzdWx0MiA9IGV2YWxBbmRMb2coImNvbm5l
Y3Rpb25zWzFdLnNldFZlcnNpb24oJ3ZlcnNpb24gMicpIik7DQorICAgICAgICByZXN1bHQyLm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCisgICAgICAgIHJlc3VsdDIub25zdWNj
ZXNzID0gaW5TZXRWZXJzaW9uMjsNCisgICAgICAgIHJlc3VsdDIub25ibG9ja2VkID0gYmxvY2tl
ZDI7DQorICAgICAgICByZXN1bHQzID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMl0uc2V0VmVy
c2lvbigndmVyc2lvbiAzJykiKTsNCisgICAgICAgIHJlc3VsdDMub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOw0KKyAgICAgICAgcmVzdWx0My5vbnN1Y2Nlc3MgPSBpblNldFZlcnNp
b24zOw0KKyAgICAgICAgcmVzdWx0My5vbmJsb2NrZWQgPSBibG9ja2VkMzsNCisgICAgICAgIGRl
YnVnKCIiKTsNCisgICAgfQ0KK30NCisNCitibG9ja2VkMWZpcmVkID0gZmFsc2U7DQorYmxvY2tl
ZDNmaXJlZCA9IGZhbHNlOw0KK2Z1bmN0aW9uIGJsb2NrZWQxKCkNCit7DQorICBldmFsQW5kTG9n
KCJjb25uZWN0aW9uc1syXS5jbG9zZSgpIik7DQorICBibG9ja2VkMWZpcmVkID0gdHJ1ZTsNCit9
DQorDQorZnVuY3Rpb24gYmxvY2tlZDIoKQ0KK3sNCisgIHNob3VsZEJlVHJ1ZSgiYmxvY2tlZDFm
aXJlZCIpOw0KKyAgc2hvdWxkQmVGYWxzZSgiYmxvY2tlZDNmaXJlZCIpOw0KK30NCitmdW5jdGlv
biBibG9ja2VkMygpDQorew0KKyAgZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMF0uY2xvc2UoKSIp
Ow0KKyAgYmxvY2tlZDNmaXJlZCA9IHRydWU7DQorfQ0KKw0KK2Z1bmN0aW9uIGluU2V0VmVyc2lv
bigpDQorew0KKyAgICBkZWJ1ZygiRklYTUU6IFRoZSBmaXJzdCBzZXRWZXJzaW9uIHNob3VsZG4n
dCBnZXQgZmlyZWQiKTsNCit9DQorDQorZnVuY3Rpb24gaW5TZXRWZXJzaW9uMigpDQorew0KKyAg
ICB0ZXN0UGFzc2VkKCJpblNldFZlcnNpb24yIik7DQorfQ0KKw0KK2Z1bmN0aW9uIGluU2V0VmVy
c2lvbjMoKQ0KK3sNCisgICAgZGVidWcoIkZJWE1FOiBUaGUgdGhpcmQgc2V0VmVyc2lvbiBzaG91
bGRuJ3QgZ2V0IGZpcmVkIik7DQorICAgIGRvbmUoKTsNCit9DQorDQordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7DQorDQordGVzdCgpOw0KKw0KKzwvc2NyaXB0Pg0KKzwvYm9keT4NCis8
L2h0bWw+DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU3M2E4YzZlOTI3ZjdhMmY2N2UwZjg0NDA3OWJlY2UyMWNk
YTU2NDUuLjg5MTA2ZmNhM2Q3Nzk1Mjg3OTJjNzg2ZDFiYjVhOTJmMTU1MWFmNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2MyBAQAorMjAxMS0wMi0xNCAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgorCisgICAg
ICAgIGluZGV4ZWRkYjogbWFrZSBzZXRWZXJzaW9uIGZpcmUgYmxvY2tlZCBldmVudCBpZiBvdGhl
ciBjb25uZWN0aW9ucyBhcmUgb3BlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTM3MjgKKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9z
ZXRfdmVyc2lvbl9ibG9ja2VkLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAg
ICAgKiBXZWJDb3JlLnByaToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAq
IGRvbS9FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6aXNJREJCbG9ja2VkRXZl
bnQpOgorICAgICAgICAqIGRvbS9FdmVudC5oOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6
CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
VGFyZ2V0Ojp0b0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KToKKyAgICAgICAgKiBkb20vRXZlbnRU
YXJnZXQuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkJsb2NrZWRFdmVudC5jcHA6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaC4KKyAg
ICAgICAgKFdlYkNvcmU6OklEQkJsb2NrZWRFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkJsb2NrZWRFdmVudDo6SURCQmxvY2tlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkJsb2NrZWRFdmVudDo6fklEQkJsb2NrZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJCbG9ja2VkRXZlbnQ6OnZlcnNpb24pOgorICAgICAgICAqIHN0b3JhZ2UvSURCQmxvY2tlZEV2
ZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxi
YWNrc0ltcGwuaC4KKyAgICAgICAgKFdlYkNvcmU6OklEQkJsb2NrZWRFdmVudDo6aXNJREJCbG9j
a2VkRXZlbnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCQmxvY2tlZEV2ZW50LmlkbDogQWRkZWQu
CisgICAgICAgICogc3RvcmFnZS9JREJDYWxsYmFja3MuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lE
QkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp+SURCRGF0YWJh
c2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnNldFZlcnNpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlOjpzdG9wKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmg6CisgICAgICAg
ICogc3RvcmFnZS9JREJEYXRhYmFzZS5pZGw6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZElt
cGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmNsb3NlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
aDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbik6CisgICAgICAgICogc3RvcmFnZS9JREJS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uQmxvY2tlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlcXVlc3Q6OnNvdXJjZSk6CisgICAgICAgICogc3RvcmFnZS9JREJSZXF1ZXN0
Lmg6CisgICAgICAgICogc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaC4K
KyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6OklEQlZlcnNpb25DaGFuZ2VS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Ojp+SURC
VmVyc2lvbkNoYW5nZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCVmVyc2lvbkNoYW5n
ZVJlcXVlc3Q6Om9uQmxvY2tlZCk6CisgICAgICAgICogc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdl
UmVxdWVzdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJD
YWxsYmFja3NJbXBsLmguCisgICAgICAgICogc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVz
dC5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxi
YWNrc0ltcGwuaC4KKwogMjAxMS0wMi0xNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCBlYjgwMTZjNzkwODM3MmQ0ZmRlYWM2OGRlNDIzMWU2Zjk5NTY5ZGE5Li43Zjc3OWVh
YmE4NWE3NjBmZWU3ODZjZjAxNGIwNDgzNzRiOGI3NzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0y
NzMsNiArMjczLDcgQEAKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaWRs
JywKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlU3luYy5pZGwnLAogICAgICAgICAgICAg
J3N0b3JhZ2UvSURCQW55LmlkbCcsCisgICAgICAgICAgICAnc3RvcmFnZS9JREJCbG9ja2VkRXZl
bnQuaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQkN1cnNvci5pZGwnLAogICAgICAgICAg
ICAgJ3N0b3JhZ2UvSURCRGF0YWJhc2VFcnJvci5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2Uv
SURCRGF0YWJhc2VFeGNlcHRpb24uaWRsJywKQEAgLTI4Nyw2ICsyODgsNyBAQAogICAgICAgICAg
ICAgJ3N0b3JhZ2UvSURCUmVxdWVzdC5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCU3Vj
Y2Vzc0V2ZW50LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5pZGwn
LAorICAgICAgICAgICAgJ3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaWRsJywKICAg
ICAgICAgICAgICdzdG9yYWdlL1NRTEVycm9yLmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9T
UUxFeGNlcHRpb24uaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL1NRTFJlc3VsdFNldC5pZGwn
LApAQCAtNDAyMiw2ICs0MDI0LDggQEAKICAgICAgICAgICAgICdzdG9yYWdlL0lEQkFib3J0RXZl
bnQuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJBbnkuY3BwJywKICAgICAgICAgICAgICdz
dG9yYWdlL0lEQkFueS5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL0lEQkJsb2NrZWRFdmVudC5j
cHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvSURCQmxvY2tlZEV2ZW50LmgnLAogICAgICAgICAg
ICAgJ3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCQ29t
cGxldGVFdmVudC5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCQ29tcGxldGVFdmVudC5o
JywKQEAgLTQwODEsNiArNDA4NSw4IEBACiAgICAgICAgICAgICAnc3RvcmFnZS9JREJUcmFuc2Fj
dGlvbkNhbGxiYWNrcy5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQlRyYW5zYWN0aW9uQ29v
cmRpbmF0b3IuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQlRyYW5zYWN0aW9uQ29vcmRp
bmF0b3IuaCcsCisgICAgICAgICAgICAnc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5j
cHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaCcsCiAg
ICAgICAgICAgICAnc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUYXNrLmNwcCcsCiAgICAgICAgICAgICAn
c3RvcmFnZS9Mb2NhbFN0b3JhZ2VUYXNrLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvTG9jYWxT
dG9yYWdlVGhyZWFkLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCmluZGV4IDUyZTI3MzhhNmVkMzljODE3OTE0
ZDYxNWU1ZDViZjc5NjkwOWY2MmEuLjVlNzhhZjgxOTNjYzdlYWQxMjI5ZTEzMmViMmU3ZWU3YTJk
Y2I1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJpCkBAIC0zMzYsNiArMzM2LDcgQEAgSURMX0JJTkRJTkdTICs9
IFwKICAgICBzdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaWRsIFwKICAgICBzdG9yYWdlL0RhdGFi
YXNlU3luYy5pZGwgXAogICAgIHN0b3JhZ2UvSURCQW55LmlkbCBcCisgICAgc3RvcmFnZS9JREJC
bG9ja2VkRXZlbnQuaWRsIFwKICAgICBzdG9yYWdlL0lEQkN1cnNvci5pZGwgXAogICAgIHN0b3Jh
Z2UvSURCRGF0YWJhc2VFcnJvci5pZGwgXAogICAgIHN0b3JhZ2UvSURCRGF0YWJhc2VFeGNlcHRp
b24uaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAK
aW5kZXggZmQ4MDM2MGE3M2JlZTYyMTcxZTMyOTE2ZTA0MzZmMzVmYTI1OGQxNi4uN2ExYmFlMWU0
ZDAxZDYxMDBhOTg3ZjQ2MTkwNGEyZmVkNGU0M2YwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAKQEAgLTk0LDggKzk0LDEwIEBACiAjZW5kaWYKIAog
I2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2luY2x1ZGUgIklEQkJsb2NrZWRFdmVudC5o
IgogI2luY2x1ZGUgIklEQkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJJREJTdWNjZXNzRXZlbnQu
aCIKKyNpbmNsdWRlICJKU0lEQkJsb2NrZWRFdmVudC5oIgogI2luY2x1ZGUgIkpTSURCRXJyb3JF
dmVudC5oIgogI2luY2x1ZGUgIkpTSURCU3VjY2Vzc0V2ZW50LmgiCiAjZW5kaWYKQEAgLTE2Niw2
ICsxNjgsOCBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFdmVudCogZXZlbnQpCiAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVf
RE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgU3RvcmFnZUV2ZW50LCBldmVu
dCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBlbHNlIGlmIChl
dmVudC0+aXNJREJCbG9ja2VkRXZlbnQoKSkKKyAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01f
T0JKRUNUX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBJREJCbG9ja2VkRXZlbnQsIGV2ZW50
KTsKICAgICBlbHNlIGlmIChldmVudC0+aXNJREJFcnJvckV2ZW50KCkpCiAgICAgICAgIHdyYXBw
ZXIgPSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgSURCRXJy
b3JFdmVudCwgZXZlbnQpOwogICAgIGVsc2UgaWYgKGV2ZW50LT5pc0lEQlN1Y2Nlc3NFdmVudCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0
b20uY3BwCmluZGV4IGZmOWI5OGIyMzFlNGU1YjEyM2IxNWUxNWE4ZDUzODQxNTRkYTZlMTYuLmQ0
Mzg3ZGI4MmE5YzhiMmI1MmJhYzk4OGFhOTNlMDUwOTYzMTVkZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudEN1c3RvbS5jcHAKQEAgLTQ0LDYg
KzQ0LDcgQEAKICNpbmNsdWRlICJWOERldmljZU9yaWVudGF0aW9uRXZlbnQuaCIKICNpbmNsdWRl
ICJWOEVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJWOEhhc2hDaGFuZ2VFdmVudC5oIgorI2luY2x1
ZGUgIlY4SURCQmxvY2tlZEV2ZW50LmgiCiAjaW5jbHVkZSAiVjhJREJFcnJvckV2ZW50LmgiCiAj
aW5jbHVkZSAiVjhJREJTdWNjZXNzRXZlbnQuaCIKICNpbmNsdWRlICJWOEtleWJvYXJkRXZlbnQu
aCIKQEAgLTE1Niw2ICsxNTcsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChFdmVudCog
aW1wbCkKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8U3RvcmFnZUV2ZW50Kj4oaW1w
bCkpOwogI2VuZGlmCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisgICAgaWYgKGltcGwt
PmlzSURCQmxvY2tlZEV2ZW50KCkpCisgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PElE
QkJsb2NrZWRFdmVudCo+KGltcGwpKTsKICAgICBpZiAoaW1wbC0+aXNJREJFcnJvckV2ZW50KCkp
CiAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PElEQkVycm9yRXZlbnQqPihpbXBsKSk7
CiAgICAgaWYgKGltcGwtPmlzSURCU3VjY2Vzc0V2ZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAppbmRl
eCBiZGMxYzU4MDc0OTA0NDAyMzE2OTllOTY3NDVhYWYyMzQ5M2E5NGFiLi40OWI3ZTgxYTkxNzA4
OTAyODRlOTcyZDFiOThiYzdiMGRiZDAzNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKQEAgLTE5OCw2
ICsxOTgsMTEgQEAgYm9vbCBFdmVudDo6aXNJREJBYm9ydEV2ZW50KCkgY29uc3QKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKK2Jvb2wgRXZlbnQ6OmlzSURCQmxvY2tlZEV2ZW50KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgRXZlbnQ6OmlzSURCQ29tcGxldGVFdmVudCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAppbmRleCA4MWY5ZTZiMjkw
OGUxYmE4N2YyODNmZjFmNmYxN2U1MjgwNzY0Mzc0Li4wNDgxN2EzN2UxNGVkYzY0YmIwYzdhNjEz
Njk1MjQ0NDhkYWJhNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaApAQCAtMTI3LDYgKzEyNyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICNlbmRpZgogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNJREJBYm9ydEV2ZW50KCkgY29uc3Q7CisgICAgICAgIHZpcnR1
YWwgYm9vbCBpc0lEQkJsb2NrZWRFdmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNJREJDb21wbGV0ZUV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0lEQkVy
cm9yRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzSURCU3VjY2Vzc0V2ZW50
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA0MzllOWQ4YjU1OGI2ZTViMjJj
NzY0MzA3NTUwMDc3MzYzNjMxZGQxLi5hZGY0OGVkZGY3NmJlNDM1MDJhZmQxZjA2YjQ4MGU5NWIw
NGQ5NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIG1hY3JvKGJlZm9yZXBhc3RlKSBcCiAgICAgbWFjcm8oYmVmb3Jl
cHJvY2VzcykgXAogICAgIG1hY3JvKGJlZm9yZXVubG9hZCkgXAorICAgIG1hY3JvKGJsb2NrZWQp
IFwKICAgICBtYWNybyhibHVyKSBcCiAgICAgbWFjcm8oY2FjaGVkKSBcCiAgICAgbWFjcm8oY2hh
bmdlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCBlZDU5OTVjZDBkMmNkOWI0
NzVkNzU4NjNjM2FjNDk5ZGVhZmIwZmZmLi5lMjdiMTViZDg4M2EwZGU5OWZkY2RkYmU3ZTg5YzU0
MGE1MWZkODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTE4OSw2ICsxODks
MTAgQEAgSURCUmVxdWVzdCogRXZlbnRUYXJnZXQ6OnRvSURCUmVxdWVzdCgpCiB7CiAgICAgcmV0
dXJuIDA7CiB9CitJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCogRXZlbnRUYXJnZXQ6OnRvSURCVmVy
c2lvbkNoYW5nZVJlcXVlc3QoKQoreworICAgIHJldHVybiAwOworfQogSURCVHJhbnNhY3Rpb24q
IEV2ZW50VGFyZ2V0Ojp0b0lEQlRyYW5zYWN0aW9uKCkKIHsKICAgICByZXR1cm4gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggYTAzODAxYmNiZDUwMGU0ZGJjZTg5NTFjZDQ3NmI0ZDNk
NzA4YThiMy4uYThkMTYwMGY5MTlmNjY0NzIyZDhiOWMzYTk0YWNkNDFhZWVkZjI1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTUyLDYgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIElEQkRhdGFiYXNlOwogICAgIGNsYXNzIElEQlJlcXVlc3Q7CiAgICAgY2xh
c3MgSURCVHJhbnNhY3Rpb247CisgICAgY2xhc3MgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q7CiAg
ICAgY2xhc3MgSmF2YVNjcmlwdEF1ZGlvTm9kZTsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAg
ICBjbGFzcyBOb2RlOwpAQCAtMTQyLDYgKzE0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdmlydHVhbCBJREJEYXRhYmFzZSogdG9JREJEYXRhYmFzZSgpOwogICAgICAgICB2aXJ0
dWFsIElEQlJlcXVlc3QqIHRvSURCUmVxdWVzdCgpOwogICAgICAgICB2aXJ0dWFsIElEQlRyYW5z
YWN0aW9uKiB0b0lEQlRyYW5zYWN0aW9uKCk7CisgICAgICAgIHZpcnR1YWwgSURCVmVyc2lvbkNo
YW5nZVJlcXVlc3QqIHRvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QoKTsKICNlbmRpZgogCiAgICAg
ICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmxv
Y2tlZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmxvY2tlZEV2ZW50LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zMDUzMTEzOGVkZGQ0OTIxMWU5MjIwMTg5MWEwMDBiNzRiNjgxN2QyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCbG9ja2VkRXZlbnQu
Y3BwCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSURCQmxvY2tlZEV2ZW50LmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwor
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJJREJBbnkuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitQYXNzUmVmUHRyPElEQkJsb2NrZWRFdmVudD4gSURCQmxvY2tlZEV2ZW50
OjpjcmVhdGUoUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9u
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQmxvY2tlZEV2ZW50KHNvdXJjZSwgdmVy
c2lvbikpOworfQorCitJREJCbG9ja2VkRXZlbnQ6OklEQkJsb2NrZWRFdmVudChQYXNzUmVmUHRy
PElEQkFueT4gc291cmNlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pCisgICAgOiBJREJFdmVudChl
dmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50LCBzb3VyY2UsIGZhbHNlIC8qY2FuQnViYmxlKi8pCisg
ICAgLCBtX3ZlcnNpb24odmVyc2lvbikKK3sKK30KKworSURCQmxvY2tlZEV2ZW50Ojp+SURCQmxv
Y2tlZEV2ZW50KCkKK3sKK30KKworU3RyaW5nIElEQkJsb2NrZWRFdmVudDo6dmVyc2lvbigpCit7
CisgICAgcmV0dXJuIG1fdmVyc2lvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmxvY2tlZEV2ZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJsb2NrZWRFdmVudC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhkNjA0MjQ3YjYwYjM4NGMxNDAwNWNhNWMxNWI5NjdmYWJiZTU5YTIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJsb2NrZWRFdmVudC5oCkBAIC0wLDAgKzEs
NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIElEQkJsb2NrZWRFdmVudF9oCisjZGVmaW5lIElEQkJsb2Nr
ZWRFdmVudF9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklE
QkV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBJREJCbG9ja2VkRXZlbnQgOiBwdWJsaWMgSURCRXZlbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkJsb2NrZWRFdmVudD4gY3JlYXRlKFBhc3NSZWZQdHI8
SURCQW55PiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CisgICAgLy8gRklYTUU6IE5l
ZWQgdG8gYWxsb3cgY3JlYXRpb24gb2YgdGhlc2UgZXZlbnRzIGZyb20gSlMuCisgICAgdmlydHVh
bCB+SURCQmxvY2tlZEV2ZW50KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNJREJCbG9ja2VkRXZl
bnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9u
KCk7CisKK3ByaXZhdGU6CisgICAgSURCQmxvY2tlZEV2ZW50KFBhc3NSZWZQdHI8SURCQW55PiBz
b3VyY2UsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CisKKyAgICBTdHJpbmcgbV92ZXJzaW9uOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCisKKyNlbmRpZiAvLyBJREJCbG9ja2VkRXZlbnRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCbG9ja2VkRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJCbG9ja2VkRXZlbnQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyODJlMjYzZGQ0Y2QyZjVh
NzMxOTcyYjQ4OWEzYThiMDRlNjc0ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkJsb2NrZWRFdmVudC5pZGwKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21v
ZHVsZSBzdG9yYWdlIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUlO
REVYRURfREFUQUJBU0UKKyAgICBdIElEQkJsb2NrZWRFdmVudCA6IElEQkV2ZW50IHsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB2ZXJzaW9uOworICAgIH07Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJDYWxsYmFja3MuaAppbmRleCAyOWZiMWM0NjkzNTE5ODZiMWQ0Y2E2
MmRiODlmY2QwNzVlMThmYjljLi5hNTAyZWQ2NjJlYWQ5MGQ2YWI1ZWMwZDc5ZTMwOWJkYTZmNDk1
N2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgKQEAgLTU2LDYgKzU2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCmluZGV4IDlh
NWViNmM2MmZjZTQ2NzhiZDRkZTlmYzdjNDE2NWMzMmZmNWE3NjAuLjU2YTg5MTQxOTU1ZGRiOTA3
ZmIzOGU4YTdhZjc5YWJjNTI1YTkxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJh
c2UuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2UuaCIKICNpbmNsdWRlICJJREJJbmRleC5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3Jl
LmgiCi0jaW5jbHVkZSAiSURCUmVxdWVzdC5oIgorI2luY2x1ZGUgIklEQlZlcnNpb25DaGFuZ2VS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8bGltaXRzPgpAQCAtOTcsOSArOTcsOSBAQCB2
b2lkIElEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgIG1fYmFja2VuZC0+ZGVsZXRlT2JqZWN0U3RvcmUobmFtZSwg
bV9zZXRWZXJzaW9uVHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwogfQogCi1QYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQkRhdGFiYXNlOjpzZXRWZXJzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitQ
YXNzUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBJREJEYXRhYmFzZTo6c2V0VmVyc2lv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnNpb24s
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0g
SURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCAwKTsKKyAg
ICBSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IHJlcXVlc3QgPSBJREJWZXJzaW9uQ2hh
bmdlUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCB2ZXJzaW9u
KTsKICAgICBtX2JhY2tlbmQtPnNldFZlcnNpb24odmVyc2lvbiwgcmVxdWVzdCwgZWMpOwogICAg
IHJldHVybiByZXF1ZXN0OwogfQpAQCAtMTM2LDcgKzEzNiwxMCBAQCBQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uPiBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udAogCiB2b2lkIElEQkRhdGFiYXNlOjpjbG9zZSgpCiB7CisgICAgaWYgKG1fbm9OZXdU
cmFuc2FjdGlvbnMpCisgICAgICAgIHJldHVybjsKICAgICBtX25vTmV3VHJhbnNhY3Rpb25zID0g
dHJ1ZTsKKyAgICBtX2JhY2tlbmQtPmNsb3NlKCk7CiB9CiAKIGJvb2wgSURCRGF0YWJhc2U6Omhh
c1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgK
aW5kZXggZjkwZGRkMzhiZmY1MDI1ZGZjN2EwNTMwYTUzMTBkMzg3NTIxZDUxOC4uNTFlN2E5OTIy
NTg4ZWE3Yjc4OGI5NGQ0OGFlZGMxYWU1MmM0YzA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2UuaApAQCAtNDMsOCArNDMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIElEQkFueTsKLWNsYXNzIElEQlJlcXVlc3Q7CitjbGFzcyBJREJWZXJzaW9uQ2hhbmdlUmVx
dWVzdDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIElEQkRhdGFiYXNl
IDogcHVibGljIFJlZkNvdW50ZWQ8SURCRGF0YWJhc2U+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1
YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6
CiAKICAgICBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IE9wdGlvbnNPYmplY3QmLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHNldFZlcnNpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYpOworICAg
IFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IHNldFZlcnNpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgY2xvc2UoKTsKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
YWJvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlkbAppbmRleCAzOTIyMTQ0
NDllZWY5NzE5MjA0OGM5YzM0ODcxODlhMjRiMjMxYWI1Li5lNmU4MTliYzJjZTIxZmYwMzMyMDE0
YTc2MWFmNTgwYjg2NjViYmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkRhdGFiYXNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlk
bApAQCAtNDAsNyArNDAsNyBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgICAgICAgICByYWlzZXMg
KElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShp
biBET01TdHJpbmcgbmFtZSkKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRp
b24pOwotICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVz
dCBzZXRWZXJzaW9uKGluIERPTVN0cmluZyB2ZXJzaW9uKQorICAgICAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dF0gSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qgc2V0VmVyc2lvbihp
biBET01TdHJpbmcgdmVyc2lvbikKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNl
cHRpb24pOwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCVHJh
bnNhY3Rpb24gdHJhbnNhY3Rpb24oaW4gW09wdGlvbmFsXSBET01TdHJpbmdMaXN0IHN0b3JlTmFt
ZXMsIGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgbW9kZSkKICAgICAgICAgICAgIHJhaXNl
cyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggMTMzYzVhZWI0MDQ1N2FlZDY2ZjQ4NjUw
NDMyYTJkZWRlY2MzOGM3Yi4uMzg1ZWIzMmVlZjc0MjE0OTIzOTYyMWExMzdiNjUyMGVhMDlkYTI5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuY3BwCkBAIC00MSw2ICs0MSwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdTZXRWZXJzaW9uQ2FsbCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFBlbmRpbmdTZXRWZXJzaW9uQ2FsbD4geworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFBlbmRpbmdTZXRWZXJzaW9uQ2FsbD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdmVy
c2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUGVuZGluZ1NldFZlcnNpb25DYWxsKHZlcnNpb24sIGNhbGxi
YWNrcykpOworICAgIH0KKyAgICBTdHJpbmcgdmVyc2lvbigpIHsgcmV0dXJuIG1fdmVyc2lvbjsg
fQorICAgIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MoKSB7IHJldHVybiBtX2Nh
bGxiYWNrczsgfQorcHJpdmF0ZToKKyAgICBQZW5kaW5nU2V0VmVyc2lvbkNhbGwoY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgICAg
ICA6IG1fdmVyc2lvbih2ZXJzaW9uKQorICAgICAgICAsIG1fY2FsbGJhY2tzKGNhbGxiYWNrcykK
KyAgICB7CisgICAgfQorICAgIFN0cmluZyBtX3ZlcnNpb247CisgICAgUmVmUHRyPElEQkNhbGxi
YWNrcz4gbV9jYWxsYmFja3M7Cit9OworCiBzdGF0aWMgYm9vbCBleHRyYWN0TWV0YURhdGEoU1FM
aXRlRGF0YWJhc2UmIHNxbGl0ZURhdGFiYXNlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYg
Zm91bmRWZXJzaW9uLCBpbnQ2NCYgZm91bmRJZCkKIHsKICAgICBTUUxpdGVTdGF0ZW1lbnQgZGF0
YWJhc2VRdWVyeShzcWxpdGVEYXRhYmFzZSwgIlNFTEVDVCBpZCwgdmVyc2lvbiBGUk9NIERhdGFi
YXNlcyBXSEVSRSBuYW1lID0gPyIpOwpAQCAtOTUsNiArMTEzLDcgQEAgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQlNR
TGl0ZURhdGEKICAgICAsIG1faWRlbnRpZmllcih1bmlxdWVJZGVudGlmaWVyKQogICAgICwgbV9m
YWN0b3J5KGZhY3RvcnkpCiAgICAgLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IoY29vcmRpbmF0
b3IpCisgICAgLCBtX29wZW5Db25uZWN0aW9uQ291bnQoMCkKIHsKICAgICBBU1NFUlQoIW1fbmFt
ZS5pc051bGwoKSk7CiAKQEAgLTIxMyw2ICsyMzIsMTUgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJD
YWwKIHsKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UgPSB0aGlz
OwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKKwor
ICAgIC8vIEZJWE1FOiBPbmx5IGNvbnRpbnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIHN0aWxsIG9w
ZW4uCisgICAgaWYgKG1fb3BlbkNvbm5lY3Rpb25Db3VudCA+IDEpIHsKKyAgICAgICAgY2FsbGJh
Y2tzLT5vbkJsb2NrZWQoKTsKKyAgICAgICAgUmVmUHRyPFBlbmRpbmdTZXRWZXJzaW9uQ2FsbD4g
cGVuZGluZ1NldFZlcnNpb25DYWxsID0gUGVuZGluZ1NldFZlcnNpb25DYWxsOjpjcmVhdGUodmVy
c2lvbiwgY2FsbGJhY2tzKTsKKyAgICAgICAgbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmFwcGVu
ZChwZW5kaW5nU2V0VmVyc2lvbkNhbGwpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJpbmdMaXN0Ojpj
cmVhdGUoKTsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFu
c2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0ZShvYmplY3RTdG9yZU5h
bWVzLmdldCgpLCBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UsIHRoaXMpOwogICAgIGlm
ICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJklEQkRhdGFi
YXNlQmFja2VuZEltcGw6OnNldFZlcnNpb25JbnRlcm5hbCwgZGF0YWJhc2UsIHZlcnNpb24sIGNh
bGxiYWNrcywgdHJhbnNhY3Rpb24pLApAQCAtMjQ3LDkgKzI3NSwyNCBAQCBQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJh
bnNhY3Rpb24oRAogICAgIHJldHVybiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUo
b2JqZWN0U3RvcmVOYW1lcywgbW9kZSwgdGhpcyk7CiB9CiAKK3ZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6b3BlbigpCit7CisgICAgbV9vcGVuQ29ubmVjdGlvbkNvdW50Kys7Cit9CisKIHZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UoKQogewotICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQuCisgICAgbV9vcGVuQ29ubmVjdGlvbkNvdW50LS07CisgICAgQVNTRVJUKG1fb3BlbkNv
bm5lY3Rpb25Db3VudCA+PSAwKTsKKyAgICBpZiAobV9vcGVuQ29ubmVjdGlvbkNvdW50ID4gMSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgd2hpbGUgKCFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMu
aXNFbXB0eSgpKSB7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgICAgIFJlZlB0cjxQ
ZW5kaW5nU2V0VmVyc2lvbkNhbGw+IHBlbmRpbmdTZXRWZXJzaW9uQ2FsbCA9IG1fcGVuZGluZ1Nl
dFZlcnNpb25DYWxscy50YWtlRmlyc3QoKTsKKyAgICAgICAgc2V0VmVyc2lvbihwZW5kaW5nU2V0
VmVyc2lvbkNhbGwtPnZlcnNpb24oKSwgcGVuZGluZ1NldFZlcnNpb25DYWxsLT5jYWxsYmFja3Mo
KSwgZWMpOworICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICB9CiB9CiAKIHZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6bG9hZE9iamVjdFN0b3JlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IDg5NDI5Njg1YmM4NDlmMTI1ODYx
ZDgzZmQ0OTU3MThiNTM4OGUwOTAuLjIwMmIwNzIwN2EwMjQ4MDBkZjI1MTZkNzVjODQ1YzA1MDRj
NzIwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKICNp
bmNsdWRlICJJREJEYXRhYmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC01
Myw2ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IEludmFsaWRJ
ZCA9IDA7CiAgICAgaW50NjRfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICB2b2lk
IG9wZW4oKTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25h
bWU7IH0KICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZXJz
aW9uOyB9CkBAIC05NCw2ICs5NiwxMSBAQCBwcml2YXRlOgogICAgIE9iamVjdFN0b3JlTWFwIG1f
b2JqZWN0U3RvcmVzOwogCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+IG1f
dHJhbnNhY3Rpb25Db29yZGluYXRvcjsKKworICAgIGludCBtX29wZW5Db25uZWN0aW9uQ291bnQ7
CisKKyAgICBjbGFzcyBQZW5kaW5nU2V0VmVyc2lvbkNhbGw7CisgICAgRGVxdWU8UmVmUHRyPFBl
bmRpbmdTZXRWZXJzaW9uQ2FsbD4gPiBtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHM7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCA5Y2M3MjMwYWNkODA2MjhlMWY5MGJi
NjQ0NjUwZTRjZDE2ZWU4NTgzLi5jNDk0MWRkYjBjMDVhMTZhN2QwNGNiZTM3ZDdmNmEzOWM1ODEy
ODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlLmgKQEAgLTQwLDcgKzQwLDYgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBJREJD
YWxsYmFja3M7CiBjbGFzcyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U7Ci1jbGFzcyBJREJUcmFuc2FjdGlvbkNhbGxi
YWNrczsKIAogLy8gVGhpcyBjbGFzcyBpcyBzaGFyZWQgYnkgSURCRGF0YWJhc2UgKGFzeW5jKSBh
bmQgSURCRGF0YWJhc2VTeW5jIChzeW5jKS4KIC8vIFRoaXMgaXMgaW1wbGVtZW50ZWQgYnkgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbCBhbmQgb3B0aW9uYWxseSBvdGhlcnMgKGluIG9yZGVyIHRvIHBy
b3h5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5k
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5j
cHAKaW5kZXggMGU4ODNjZmUyZTQ1NjQ3ODZmOTQyMjFmODRjZmE1NWIzMmQxNzdiOS4uMzcyZDU0
Yzc4OTFjZTQxNzBjMDM3ZDhjYmQyMmJjNDliMjNiNGU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAtMjEzLDYgKzIxMyw3IEBA
IHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhCiAgICAgU3RyaW5nIHVuaXF1ZUlkZW50aWZpZXIgPSBm
aWxlSWRlbnRpZmllciArICJAIiArIG5hbWU7CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kTWFwOjpp
dGVyYXRvciBpdCA9IG1fZGF0YWJhc2VCYWNrZW5kTWFwLmZpbmQodW5pcXVlSWRlbnRpZmllcik7
CiAgICAgaWYgKGl0ICE9IG1fZGF0YWJhc2VCYWNrZW5kTWFwLmVuZCgpKSB7CisgICAgICAgIGl0
LT5zZWNvbmQtPm9wZW4oKTsKICAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoaXQtPnNlY29u
ZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMzUsNiArMjM2LDcgQEAgdm9pZCBJREJG
YWN0b3J5QmFja2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2EKICAgICB9CiAKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1w
bD4gZGF0YWJhc2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlKG5hbWUs
IHNxbGl0ZURhdGFiYXNlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCksIHRo
aXMsIHVuaXF1ZUlkZW50aWZpZXIpOworICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbigpOwogICAg
IGNhbGxiYWNrcy0+b25TdWNjZXNzKGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CiAgICAgbV9kYXRh
YmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAppbmRleCBlNzQ5OGVjZTVj
ZmQwMjQyMDQzOTQyZTQ5M2VjYmM5M2Q1Njk3OGVhLi4xYjBhNWU1ZDM2MTk1MzA3NGFkYWUyYmRm
MDBjMDBlZTQxNjVlNzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJl
cXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKQEAg
LTM2LDEwICszNiwxMSBAQAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgorI2luY2x1ZGUgIklEQkJsb2Nr
ZWRFdmVudC5oIgogI2luY2x1ZGUgIklEQkN1cnNvci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNl
LmgiCi0jaW5jbHVkZSAiSURCSW5kZXguaCIKICNpbmNsdWRlICJJREJFcnJvckV2ZW50LmgiCisj
aW5jbHVkZSAiSURCSW5kZXguaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1
ZGUgIklEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCIKICNpbmNsdWRlICJJREJTdWNjZXNz
RXZlbnQuaCIKQEAgLTE0MSw2ICsxNDIsMTEgQEAgYm9vbCBJREJSZXF1ZXN0OjpoYXNQZW5kaW5n
QWN0aXZpdHkoKSBjb25zdAogICAgIHJldHVybiAhbV9maW5pc2hlZCB8fCBBY3RpdmVET01PYmpl
Y3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCit2b2lkIElEQlJlcXVlc3Q6Om9uQmxvY2tl
ZCgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIElEQlJlcXVlc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAg
IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTE1
Miw3ICsxNTgsOCBAQCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxF
dmVudD4gZXZlbnQpCiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAg
QVNTRVJUKGV2ZW50LT50YXJnZXQoKSA9PSB0aGlzKTsKICAgICBBU1NFUlQobV9yZWFkeVN0YXRl
IDwgRE9ORSk7Ci0gICAgbV9yZWFkeVN0YXRlID0gRE9ORTsKKyAgICBpZiAoIWV2ZW50LT5pc0lE
QkJsb2NrZWRFdmVudCgpKQorICAgICAgICBtX3JlYWR5U3RhdGUgPSBET05FOwogCiAgICAgVmVj
dG9yPFJlZlB0cjxFdmVudFRhcmdldD4gPiB0YXJnZXRzOwogICAgIHRhcmdldHMuYXBwZW5kKHRo
aXMpOwpAQCAtMTY1LDcgKzE3Miw3IEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQ
YXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICAgICAgdGFyZ2V0cy5hcHBlbmQobV90cmFuc2Fj
dGlvbi0+ZGIoKSk7CiAgICAgfQogCi0gICAgQVNTRVJUKGV2ZW50LT5pc0lEQkVycm9yRXZlbnQo
KSB8fCBldmVudC0+aXNJREJTdWNjZXNzRXZlbnQoKSk7CisgICAgQVNTRVJUKGV2ZW50LT5pc0lE
QkVycm9yRXZlbnQoKSB8fCBldmVudC0+aXNJREJTdWNjZXNzRXZlbnQoKSB8fCBldmVudC0+aXNJ
REJCbG9ja2VkRXZlbnQoKSk7CiAgICAgYm9vbCBkb250UHJldmVudERlZmF1bHQgPSBzdGF0aWNf
Y2FzdDxJREJFdmVudCo+KGV2ZW50LmdldCgpKS0+ZGlzcGF0Y2godGFyZ2V0cyk7CiAKICAgICAv
LyBJZiB0aGUgZXZlbnQncyByZXN1bHQgd2FzIG9mIHR5cGUgSURCQ3Vyc29yLCB0aGVuIGl0J3Mg
cG9zc2libGUgZm9yIHVzIHRvCkBAIC0xNzQsNyArMTgxLDcgQEAgYm9vbCBJREJSZXF1ZXN0Ojpk
aXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgICAgICBSZWZQdHI8SURC
QW55PiBhbnkgPSBzdGF0aWNfY2FzdDxJREJTdWNjZXNzRXZlbnQqPihldmVudC5nZXQoKSktPnJl
c3VsdCgpOwogICAgICAgICBpZiAoYW55LT50eXBlKCkgIT0gSURCQW55OjpJREJDdXJzb3JUeXBl
KQogICAgICAgICAgICAgbV9maW5pc2hlZCA9IHRydWU7Ci0gICAgfSBlbHNlCisgICAgfSBlbHNl
IGlmICghZXZlbnQtPmlzSURCQmxvY2tlZEV2ZW50KCkpCiAgICAgICAgIG1fZmluaXNoZWQgPSB0
cnVlOwogCiAgICAgaWYgKG1fdHJhbnNhY3Rpb24pIHsKQEAgLTE5OCw2ICsyMDUsMTEgQEAgdm9p
ZCBJREJSZXF1ZXN0OjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAg
ZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KGV2ZW50KTsKIH0KIAorSURCQW55KiBJREJSZXF1ZXN0
Ojpzb3VyY2UoKQoreworICAgIHJldHVybiBtX3NvdXJjZS5nZXQoKTsKK30KKwogRXZlbnRUYXJn
ZXREYXRhKiBJREJSZXF1ZXN0OjpldmVudFRhcmdldERhdGEoKQogewogICAgIHJldHVybiAmbV9l
dmVudFRhcmdldERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJl
cXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCmluZGV4IDVjMzEz
MThhYmE0NTZiZGIyZWZmOWY2MGU1MTU2NDU5NDEyZjc3YzUuLjc3NDI4NjhmY2MzMzdiZjVmYjdl
MDVjMzhmZjVlYmFjZjZjOGZlYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCkBA
IC01OSw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RF
TkVSKGVycm9yKTsKIAogICAgIGJvb2wgcmVzZXRSZWFkeVN0YXRlKElEQlRyYW5zYWN0aW9uKik7
CisgICAgSURCQW55KiBzb3VyY2UoKTsKIAogICAgIC8vIElEQkNhbGxiYWNrcwogICAgIHZpcnR1
YWwgdm9pZCBvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pOwpAQCAtNjksNiAr
NzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nl
c3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7Cisg
ICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CiAg
ICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwpAQCAtODIsMTEgKzg0
LDExIEBAIHB1YmxpYzoKICAgICB1c2luZyBUaHJlYWRTYWZlU2hhcmVkPElEQkNhbGxiYWNrcz46
OnJlZjsKICAgICB1c2luZyBUaHJlYWRTYWZlU2hhcmVkPElEQkNhbGxiYWNrcz46OmRlcmVmOwog
Ci1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIElEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7Ci0KICAg
ICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAKK3ByaXZhdGU6CiAgICAg
Ly8gRXZlbnRUYXJnZXQKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigp
OyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjQ4NmM2NDU2MDMyNjI1YWM1YmFmZmNmMGY1ZTcwNWE5YWQ4MGU4MgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJl
cXVlc3QuY3BwCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaCIKKworI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCQmxvY2tlZEV2ZW50LmgiCisjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQ
dHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNv
dXJjZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SURCVmVyc2lvbkNoYW5nZVJlcXVlc3QoY29udGV4dCwgc291cmNlLCB2ZXJzaW9uKSk7Cit9CisK
K0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBjb25z
dCBTdHJpbmcmIHZlcnNpb24pCisgICAgOiBJREJSZXF1ZXN0KGNvbnRleHQsIHNvdXJjZSwgMCkK
KyAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQoreworfQorCitJREJWZXJzaW9uQ2hhbmdlUmVxdWVz
dDo6fklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KCkKK3sKK30KKwordm9pZCBJREJWZXJzaW9uQ2hh
bmdlUmVxdWVzdDo6b25CbG9ja2VkKCkKK3sKKyAgICBlbnF1ZXVlRXZlbnQoSURCQmxvY2tlZEV2
ZW50OjpjcmVhdGUoc291cmNlKCksIG1fdmVyc2lvbikpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJW
ZXJzaW9uQ2hhbmdlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9u
Q2hhbmdlUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyY2Y0YzAzNTFlYjUzODkwM2I1MWViNjQ5NWE5
MTVhZjkzZjQxMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
SURCVmVyc2lvbkNoYW5nZVJlcXVlc3RfaAorI2RlZmluZSBJREJWZXJzaW9uQ2hhbmdlUmVxdWVz
dF9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQlJlcXVl
c3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJWZXJzaW9uQ2hhbmdlUmVx
dWVzdCA6IHB1YmxpYyBJREJSZXF1ZXN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOworICAg
IHZpcnR1YWwgfklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQg
b25CbG9ja2VkKCk7CisKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGJsb2Nr
ZWQpOworCitwcml2YXRlOgorICAgIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBjb25zdCBTdHJpbmcmIHZl
cnNpb24pOworCisgICAgU3RyaW5nIG1fdmVyc2lvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjZW5kaWYgLy8g
SURCUmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNp
b25DaGFuZ2VSZXF1ZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNo
YW5nZVJlcXVlc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmYWM3MzU0NzBhMmE5YjAwZDJkNDlhNzg2ZWYx
NzZiYzlhOTdhMzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmlkbApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxl
IHN0b3JhZ2UgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9SU5ERVhF
RF9EQVRBQkFTRSwKKyAgICAgICAgRXZlbnRUYXJnZXQKKyAgICBdIElEQlZlcnNpb25DaGFuZ2VS
ZXF1ZXN0IDogSURCUmVxdWVzdCB7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
YmxvY2tlZDsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3ZmNmYjAy
NjA1MDc2OTMwN2NmOWNlZDFiZTRmNzM5ZTNlNGJiYTQ3Li42NmI0YzUzZTc3OTlhNDlhNzZjNTI0
YWIxNGVmYzkxNDQwMGU1YWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDExLTAyLTE0ICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCisKKyAgICAgICAgaW5kZXhlZGRi
OiBtYWtlIHNldFZlcnNpb24gZmlyZSBibG9ja2VkIGV2ZW50IGlmIG90aGVyIGNvbm5lY3Rpb25z
IGFyZSBvcGVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01MzcyOAorCisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQkNhbGxiYWNrc1Byb3h5OjpvbkJsb2NrZWQpOgorICAgICAgICAqIHNyYy9J
REJDYWxsYmFja3NQcm94eS5oOgorICAgICAgICAqIHNyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYklEQkNhbGxiYWNrc0ltcGw6Om9uQmxvY2tlZCk6Cisg
ICAgICAgICogc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaDoKKwogMjAxMS0wMi0xNCAgSmF5IFNv
ZmZpYW4gIDxqYXlzb2ZmaWFuQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBGaXNoZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxs
YmFja3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQ
cm94eS5jcHAKaW5kZXggZGJhMjhkOTRlYWZlNjNiODgwOTIxMGM2OGRmOWNkZGZjOWYyMmMwZC4u
NDY1NDk1MDYzMjI0ZWY0MmE1MTU1NjU3NWU4MGFlZmNmZjNjNGY2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcApAQCAtOTksNiArOTks
MTEgQEAgdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2MKICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNz
KFdlYktpdDo6V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkp
OwogfQogCit2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvbkJsb2NrZWQoKQoreworICAgIG1fY2Fs
bGJhY2tzLT5vbkJsb2NrZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAppbmRleCBlMWRiMjNkNDM5ZjZhYTVmNzY4NjhhMDI3
NzRmNjlkOTAwNWMwNzhmLi43ZGVkOGVhZTRlMzI4MDVkYTE0NDMzODc3ZjVkNzUzMDI4MWJiMzNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgK
QEAgLTU1LDYgKzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4pOworICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKTsKIAogcHJpdmF0ZToKICAgICBJ
REJDYWxsYmFja3NQcm94eShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCQ2FsbGJhY2tzPik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3Bw
CmluZGV4IGJiN2ExOWJjZjIxOWNmMjA1M2M4YzdkMDU0ZDBhOTBkYWNlZTEzZTcuLjU3MDNmMjdj
OTg3MzRmNzcxNmMyZjRiZmI3NmU2MDRlYzQxMjJkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCkBAIC05Niw2ICs5NiwxMSBA
QCB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vzcyhjb25zdCBXZWJLaXQ6OldlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaQogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moc2Vy
aWFsaXplZFNjcmlwdFZhbHVlKTsKIH0KIAordm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvbkJs
b2NrZWQoKQoreworICAgIG1fY2FsbGJhY2tzLT5vbkJsb2NrZWQoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgKaW5kZXgg
ZDJhZTI1NTYyOWZiYTAxODE4NTQ3MmU5MWJiNjYxYWIyMmIzMzc4Yi4uMWU3NmRlY2YxOTA5YmRj
NzUzYzFiMjIyZmNhNWJhYzhjZGJkYzFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlKik7CiAg
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uKik7CiAg
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJLaXQ6OldlYlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSYpOworICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKTsKIAogcHJpdmF0ZToKICAg
ICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82700</attachid>
            <date>2011-02-16 14:39:05 -0800</date>
            <delta_ts>2011-02-16 16:45:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53728-20110216143903.patch</filename>
            <type>text/plain</type>
            <size>48622</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzg3MzQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlZDQzYWM3MzRhZDZjOGVjMTJhNmU4
MjI0NWExNDNmYWEwMWQ5NGM1Li40MWNjYmI0N2JmODAzMDE4Y2Q0NWQyNTVjZDcxMDBjMTg1ZTBh
ZTllIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDItMTYgIERhdmlkIEdyb2dhbiAgPGRn
cm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGluZGV4ZWRkYjogbWFrZSBzZXRWZXJzaW9uIGZpcmUgYmxvY2tlZCBldmVu
dCBpZiBvdGhlciBjb25uZWN0aW9ucyBhcmUgb3BlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MjgKKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9zaGFyZWQuanM6CisgICAgICAgICh1bmV4cGVjdGVkQmxvY2tlZENhbGxi
YWNrKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2VkLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNp
b25fYmxvY2tlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9zZXRf
dmVyc2lvbl9xdWV1ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL3NldF92ZXJzaW9uX3F1ZXVlLmh0bWw6IEFkZGVkLgorCiAyMDExLTAyLTE2ICBQZXRl
ciBLYXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBD
aHJvbWl1bSB0ZXN0IGV4cGVjdGF0aW9ucyB1cGRhdGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcwppbmRleCA1YWM5NmMwOTI3MTVhYTI2
OWZhZTU3ZmI3ZTUyZTEyZTI2NTgzNWE3Li5lYmQ1OGM4MjdkMWRiNGViOTc3YTM3M2FjMWEyMTBl
OTExMjE4MjkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvc2hhcmVkLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9zaGFyZWQuanMKQEAgLTI1LDYgKzI1LDExIEBAIGZ1bmN0aW9uIHVuZXhwZWN0ZWRDb21w
bGV0ZUNhbGxiYWNrKCkKICAgICB0ZXN0RmFpbGVkKCJvbmNvbXBsZXRlIGZ1bmN0aW9uIGNhbGxl
ZCB1bmV4cGVjdGVkbHkhIik7CiB9CiAKK2Z1bmN0aW9uIHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJh
Y2soKQoreworICAgIHRlc3RGYWlsZWQoIm9uYmxvY2tlZCBjYWxsZWQgdW5leHBlY3RlZGx5Iik7
Cit9CisKIGZ1bmN0aW9uIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oY21kLCBleHBlY3RlZCkKIHsK
ICAgICBkZWJ1ZygiRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tICIgKyBjbWQpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fYmxvY2tlZC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9j
a2VkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NzYwYjc1YjdiNmY0NGNlNTQ1ODAyYWNlNzVi
MjIyOWRkMDEyYmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvc2V0X3ZlcnNpb25fYmxvY2tlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAor
QW4gb3BlbiBjb25uZWN0aW9uIGJsb2NrcyBhIHNlcGFyYXRlIGNvbm5lY3Rpb24ncyBzZXRWZXJz
aW9uIGNhbGwKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgSW5kZXhlZERC
ID09IG51bGwgaXMgZmFsc2UKK0luZGV4ZWREQi5vcGVuKCdzb21lIGRiIG5hbWUnKQorSW5kZXhl
ZERCLm9wZW4oJ3NvbWUgZGIgbmFtZScpCitjb25uZWN0aW9uc1swXS5zZXRWZXJzaW9uKCd2ZXJz
aW9uIDEnKQorc2Vlbl9ibG9ja2VkX2V2ZW50ID0gdHJ1ZQorUEFTUyBibG9ja2VkX2V2ZW50LnZl
cnNpb24gaXMgInZlcnNpb24gMSIKK1BBU1MgYmxvY2tlZF9ldmVudC50YXJnZXQucmVhZHlTdGF0
ZSBpcyAxCitjb25uZWN0aW9uc1sxXS5jbG9zZSgpCitpbiBzZXRWZXJzaW9uLm9uc3VjY2Vzcwor
UEFTUyBzZWVuX2Jsb2NrZWRfZXZlbnQgaXMgdHJ1ZQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jl
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9j
a2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9j
a2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQyYjBlZTE3NzRiZmNhNDQ5N2IyNTk4MDU3ZjVjYTVkYjQx
ZmYyNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Nl
dF92ZXJzaW9uX2Jsb2NrZWQuaHRtbApAQCAtMCwwICsxLDc0IEBACis8aHRtbD4NCis8aGVhZD4N
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4NCis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pg0KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0Pg0KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4NCis8L2hlYWQ+DQorPGJvZHk+DQorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+DQorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+DQorPHNjcmlw
dD4NCisNCitkZXNjcmlwdGlvbigiQW4gb3BlbiBjb25uZWN0aW9uIGJsb2NrcyBhIHNlcGFyYXRl
IGNvbm5lY3Rpb24ncyBzZXRWZXJzaW9uIGNhbGwiKTsNCitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQ0KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7DQor
DQorY29ubmVjdGlvbnMgPSBbXQ0KK2Z1bmN0aW9uIHRlc3QoKQ0KK3sNCisgICAgaWYgKCd3ZWJr
aXRJbmRleGVkREInIGluIHdpbmRvdykNCisgICAgICAgIEluZGV4ZWREQiA9IHdlYmtpdEluZGV4
ZWREQjsNCisgICAgZWxzZSBpZiAoJ21vekluZGV4ZWREQicgaW4gd2luZG93KQ0KKyAgICAgICAg
SW5kZXhlZERCID0gbW96SW5kZXhlZERCOw0KKyAgICBzaG91bGRCZUZhbHNlKCJJbmRleGVkREIg
PT0gbnVsbCIpOw0KKyAgICBvcGVuREJDb25uZWN0aW9uKCk7DQorfQ0KKw0KK2Z1bmN0aW9uIG9w
ZW5EQkNvbm5lY3Rpb24oKQ0KK3sNCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIkluZGV4ZWRE
Qi5vcGVuKCdzb21lIGRiIG5hbWUnKSIpOw0KKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5T
dWNjZXNzOw0KKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsN
Cit9DQorDQorZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQ0KK3sNCisgICAgY29ubmVjdGlvbiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQ7DQorICAgIGNvbm5lY3Rpb25zLnB1c2goY29ubmVjdGlvbik7DQor
ICAgIG9yaWdpbmFsX3ZlcnNpb24gPSBjb25uZWN0aW9uLnZlcnNpb247DQorICAgIGlmIChjb25u
ZWN0aW9ucy5sZW5ndGggPCAyKQ0KKyAgICAgICAgb3BlbkRCQ29ubmVjdGlvbigpOw0KKyAgICBl
bHNlIHsNCisgICAgICAgIHZhciB2ZXJzaW9uQ2hhbmdlUmVxdWVzdCA9IGV2YWxBbmRMb2coImNv
bm5lY3Rpb25zWzBdLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7DQorICAgICAgICB2ZXJzaW9u
Q2hhbmdlUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQorICAgICAg
ICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb247DQorICAgICAg
ICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbmJsb2NrZWQgPSBibG9ja2VkOw0KKyAgICB9DQorfQ0K
Kw0KK3NlZW5fYmxvY2tlZF9ldmVudCA9IGZhbHNlOw0KK2Z1bmN0aW9uIGJsb2NrZWQoKQ0KK3sN
CisgICAgZXZhbEFuZExvZygic2Vlbl9ibG9ja2VkX2V2ZW50ID0gdHJ1ZSIpOw0KKyAgICBibG9j
a2VkX2V2ZW50ID0gZXZlbnQ7DQorICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiYmxvY2tlZF9l
dmVudC52ZXJzaW9uIiwgInZlcnNpb24gMSIpOw0KKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJibG9j
a2VkX2V2ZW50LnRhcmdldC5yZWFkeVN0YXRlIiwgMSk7DQorICAgIGV2YWxBbmRMb2coImNvbm5l
Y3Rpb25zWzFdLmNsb3NlKCkiKTsNCit9DQorDQorZnVuY3Rpb24gaW5TZXRWZXJzaW9uKCkNCit7
DQorICAgIGRlYnVnKCJpbiBzZXRWZXJzaW9uLm9uc3VjY2VzcyIpOw0KKyAgICBzaG91bGRCZVRy
dWUoInNlZW5fYmxvY2tlZF9ldmVudCIpOw0KKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoY29u
bmVjdGlvbnNbMF0pOw0KKyAgICBkb25lKCk7DQorfQ0KKw0KK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOw0KKw0KK3Rlc3QoKTsNCisNCis8L3NjcmlwdD4NCis8L2JvZHk+DQorPC9odG1s
Pg0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9u
X3F1ZXVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92
ZXJzaW9uX3F1ZXVlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Y2JmMmUzMGZlMjQ3ZTQxZjBm
MDQxYmU0ZGNlNWYxYTgxM2M0MzZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fcXVldWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjQgQEAKK0FuIG9wZW4gY29ubmVjdGlvbiBibG9ja3MgYSBzZXBhcmF0ZSBjb25uZWN0aW9uJ3Mg
c2V0VmVyc2lvbiBjYWxsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIElu
ZGV4ZWREQiA9PSBudWxsIGlzIGZhbHNlCitJbmRleGVkREIub3Blbignc29tZSBkYiBuYW1lJykK
K0luZGV4ZWREQi5vcGVuKCdzb21lIGRiIG5hbWUnKQorSW5kZXhlZERCLm9wZW4oJ3NvbWUgZGIg
bmFtZScpCitjb25uZWN0aW9uc1swXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKQorY29ubmVjdGlv
bnNbMV0uc2V0VmVyc2lvbigndmVyc2lvbiAyJykKK2Nvbm5lY3Rpb25zWzJdLnNldFZlcnNpb24o
J3ZlcnNpb24gMycpCisKK2Nvbm5lY3Rpb25zWzJdLmNsb3NlKCkKK1BBU1MgYmxvY2tlZDFmaXJl
ZCBpcyB0cnVlCitQQVNTIGJsb2NrZWQzZmlyZWQgaXMgZmFsc2UKK2Nvbm5lY3Rpb25zWzBdLmNs
b3NlKCkKK0ZJWE1FOiBUaGUgZmlyc3Qgc2V0VmVyc2lvbiBzaG91bGRuJ3QgZ2V0IGZpcmVkCitQ
QVNTIGluU2V0VmVyc2lvbjIKK0ZJWE1FOiBUaGUgdGhpcmQgc2V0VmVyc2lvbiBzaG91bGRuJ3Qg
Z2V0IGZpcmVkCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNp
b25fcXVldWUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9u
X3F1ZXVlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQwZmMwNTFiN2I0NzljYTU5NDhlNWFiOTExNmUxYzUx
ODc2ZTNlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3NldF92ZXJzaW9uX3F1ZXVlLmh0bWwKQEAgLTAsMCArMSwxMDAgQEAKKzxodG1sPg0KKzxoZWFk
Pg0KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiPg0KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+DQorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+DQorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pg0KKzwvaGVhZD4NCis8Ym9keT4NCis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4NCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4NCis8c2Ny
aXB0Pg0KKw0KK2Rlc2NyaXB0aW9uKCJBbiBvcGVuIGNvbm5lY3Rpb24gYmxvY2tzIGEgc2VwYXJh
dGUgY29ubmVjdGlvbidzIHNldFZlcnNpb24gY2FsbCIpOw0KK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpDQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsN
CisNCitjb25uZWN0aW9ucyA9IFtdDQorZnVuY3Rpb24gdGVzdCgpDQorew0KKyAgICBpZiAoJ3dl
YmtpdEluZGV4ZWREQicgaW4gd2luZG93KQ0KKyAgICAgICAgSW5kZXhlZERCID0gd2Via2l0SW5k
ZXhlZERCOw0KKyAgICBlbHNlIGlmICgnbW96SW5kZXhlZERCJyBpbiB3aW5kb3cpDQorICAgICAg
ICBJbmRleGVkREIgPSBtb3pJbmRleGVkREI7DQorICAgIHNob3VsZEJlRmFsc2UoIkluZGV4ZWRE
QiA9PSBudWxsIik7DQorICAgIG9wZW5EQkNvbm5lY3Rpb24oKTsNCit9DQorDQorZnVuY3Rpb24g
b3BlbkRCQ29ubmVjdGlvbigpDQorew0KKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJJbmRleGVk
REIub3Blbignc29tZSBkYiBuYW1lJykiKTsNCisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IG9wZW5T
dWNjZXNzOw0KKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0K
K30NCisNCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpDQorew0KKyAgICBjb25uZWN0aW9uID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsNCisgICAgY29ubmVjdGlvbnMucHVzaChjb25uZWN0aW9uKTsNCisg
ICAgaWYgKGNvbm5lY3Rpb25zLmxlbmd0aCA8IDMpDQorICAgICAgICBvcGVuREJDb25uZWN0aW9u
KCk7DQorICAgIGVsc2Ugew0KKyAgICAgICAgcmVzdWx0ID0gZXZhbEFuZExvZygiY29ubmVjdGlv
bnNbMF0uc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsNCisgICAgICAgIHJlc3VsdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQorICAgICAgICByZXN1bHQub25zdWNjZXNzID0g
aW5TZXRWZXJzaW9uOw0KKyAgICAgICAgcmVzdWx0Lm9uYmxvY2tlZCA9IGJsb2NrZWQxOw0KKyAg
ICAgICAgcmVzdWx0MiA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzFdLnNldFZlcnNpb24oJ3Zl
cnNpb24gMicpIik7DQorICAgICAgICByZXN1bHQyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsNCisgICAgICAgIHJlc3VsdDIub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uMjsNCisg
ICAgICAgIHJlc3VsdDIub25ibG9ja2VkID0gYmxvY2tlZDI7DQorICAgICAgICByZXN1bHQzID0g
ZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMl0uc2V0VmVyc2lvbigndmVyc2lvbiAzJykiKTsNCisg
ICAgICAgIHJlc3VsdDMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KKyAgICAg
ICAgcmVzdWx0My5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb24zOw0KKyAgICAgICAgcmVzdWx0My5v
bmJsb2NrZWQgPSBibG9ja2VkMzsNCisgICAgICAgIGRlYnVnKCIiKTsNCisgICAgfQ0KK30NCisN
CitibG9ja2VkMWZpcmVkID0gZmFsc2U7DQorYmxvY2tlZDNmaXJlZCA9IGZhbHNlOw0KK2Z1bmN0
aW9uIGJsb2NrZWQxKCkNCit7DQorICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzJdLmNsb3Nl
KCkiKTsNCisgICAgYmxvY2tlZDFmaXJlZCA9IHRydWU7DQorfQ0KKw0KK2Z1bmN0aW9uIGJsb2Nr
ZWQyKCkNCit7DQorICAgIHNob3VsZEJlVHJ1ZSgiYmxvY2tlZDFmaXJlZCIpOw0KKyAgICBzaG91
bGRCZUZhbHNlKCJibG9ja2VkM2ZpcmVkIik7DQorfQ0KKw0KK2Z1bmN0aW9uIGJsb2NrZWQzKCkN
Cit7DQorICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzBdLmNsb3NlKCkiKTsNCisgICAgYmxv
Y2tlZDNmaXJlZCA9IHRydWU7DQorfQ0KKw0KK2Z1bmN0aW9uIGluU2V0VmVyc2lvbigpDQorew0K
KyAgICBkZWJ1ZygiRklYTUU6IFRoZSBmaXJzdCBzZXRWZXJzaW9uIHNob3VsZG4ndCBnZXQgZmly
ZWQiKTsNCit9DQorDQorZnVuY3Rpb24gaW5TZXRWZXJzaW9uMigpDQorew0KKyAgICB0ZXN0UGFz
c2VkKCJpblNldFZlcnNpb24yIik7DQorfQ0KKw0KK2Z1bmN0aW9uIGluU2V0VmVyc2lvbjMoKQ0K
K3sNCisgICAgZGVidWcoIkZJWE1FOiBUaGUgdGhpcmQgc2V0VmVyc2lvbiBzaG91bGRuJ3QgZ2V0
IGZpcmVkIik7DQorICAgIGRvbmUoKTsNCit9DQorDQordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7DQorDQordGVzdCgpOw0KKw0KKzwvc2NyaXB0Pg0KKzwvYm9keT4NCis8L2h0bWw+DQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGY5YzMzM2M2ZjcxZmZlMzBiMGJjNWY5ZTU5MTg1NDdhNGI2NTMzNTcuLmJl
YzBmZTM2NzFmMDYxMDMyN2FlYWJkMmU2Nzk4N2FmZDRhMTE2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAxMS0wMi0xNiAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaW5k
ZXhlZGRiOiBtYWtlIHNldFZlcnNpb24gZmlyZSBibG9ja2VkIGV2ZW50IGlmIG90aGVyIGNvbm5l
Y3Rpb25zIGFyZSBvcGVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MzcyOAorCisgICAgICAgIFRlc3RzOiBzdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVy
c2lvbl9ibG9ja2VkLmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL3NldF92
ZXJzaW9uX3F1ZXVlLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGRvbS9FdmVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudDo6aXNJREJWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIGRvbS9FdmVu
dC5oOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgICogZG9tL0V2ZW50VGFy
Z2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Ojp0b0lEQlZlcnNpb25DaGFu
Z2VSZXF1ZXN0KToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiBzdG9y
YWdlL0lEQkNhbGxiYWNrcy5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnNldFZlcnNpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2U6OmNsb3NlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNl
Lmg6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5pZGw6CisgICAgICAgICogc3RvcmFn
ZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlQmFja2VuZEltcGw6OlBlbmRpbmdTZXRWZXJzaW9uQ2FsbDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdTZXRWZXJzaW9uQ2FsbDo6
dmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5k
aW5nU2V0VmVyc2lvbkNhbGw6OmNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nU2V0VmVyc2lvbkNhbGw6OlBlbmRpbmdTZXRWZXJzaW9u
Q2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRh
YmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZElt
cGw6OnNldFZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9z
ZSk6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAgICAg
ICogc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBzdG9y
YWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0
b3J5QmFja2VuZEltcGw6Om9wZW4pOgorICAgICAgICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpvbkJsb2NrZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJS
ZXF1ZXN0Ojpzb3VyY2UpOgorICAgICAgICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5oOgorICAgICAg
ICAqIHN0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oLgorICAgICAgICAoV2Vi
Q29yZTo6SURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCVmVyc2lvbkNoYW5nZUV2ZW50OjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCVmVyc2lvbkNoYW5nZUV2ZW50Ojp+SURCVmVyc2lvbkNoYW5nZUV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VFdmVudDo6dmVyc2lvbik6CisgICAg
ICAgICogc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oLgorICAgICAgICAoV2Vi
Q29yZTo6SURCVmVyc2lvbkNoYW5nZUV2ZW50Ojppc0lEQlZlcnNpb25DaGFuZ2VFdmVudCk6Cisg
ICAgICAgICogc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaWRsOiBBZGRlZC4KKyAgICAg
ICAgKiBzdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmNwcDogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oLgorICAgICAgICAo
V2ViQ29yZTo6SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDo6SURCVmVyc2lvbkNoYW5nZVJlcXVlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6On5JREJWZXJzaW9uQ2hh
bmdlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDo6
b25CbG9ja2VkKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Lmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0lt
cGwuaC4KKyAgICAgICAgKiBzdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmlkbDogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5o
LgorCiAyMDExLTAyLTE1ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRl
eCA3NmFiYzA4YmNhODRhYWYwNmE2MzY3M2EzMmJmYzVkODhkZGJhOWY4Li5hOTlmN2I5NjM1NTg3
M2VkMTNkODdiM2Y1MTQxMDAwMWFjOGRlYjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yODQsNiAr
Mjg0LDggQEAKICAgICAgICAgICAgICdzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmlkbCcsCiAgICAg
ICAgICAgICAnc3RvcmFnZS9JREJSZXF1ZXN0LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9J
REJUcmFuc2FjdGlvbi5pZGwnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5n
ZUV2ZW50LmlkbCcsCisgICAgICAgICAgICAnc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVz
dC5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMRXJyb3IuaWRsJywKICAgICAgICAgICAg
ICdzdG9yYWdlL1NRTEV4Y2VwdGlvbi5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMUmVz
dWx0U2V0LmlkbCcsCkBAIC00MDc0LDYgKzQwNzYsMTAgQEAKICAgICAgICAgICAgICdzdG9yYWdl
L0lEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCVHJh
bnNhY3Rpb25Db29yZGluYXRvci5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL0lEQlZlcnNpb25DaGFu
Z2VFdmVudC5jcHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2ZW50
LmgnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuY3BwJywK
KyAgICAgICAgICAgICdzdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmgnLAogICAgICAg
ICAgICAgJ3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGFzay5jcHAnLAogICAgICAgICAgICAgJ3N0b3Jh
Z2UvTG9jYWxTdG9yYWdlVGFzay5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0xvY2FsU3RvcmFn
ZVRocmVhZC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
dmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9t
LmNwcAppbmRleCAwZjQ3NTFiMDM0NDk4YjNhZWViYWZjZWQzOGVhYTBlZjBlNzE2NjU5Li45ZTk1
ZTc0NjNhYTc0ODQ4YTE0YWUzOTU4MWVmY2QwN2IzZjg2MThlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcApAQCAtOTMsNiArOTMsMTEgQEAKICNpbmNs
dWRlICJUb3VjaEV2ZW50LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQorI2luY2x1ZGUgIklEQlZlcnNpb25DaGFuZ2VFdmVudC5oIgorI2luY2x1ZGUgIkpTSURCVmVy
c2lvbkNoYW5nZUV2ZW50LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAjaW5j
bHVkZSAiQXVkaW9Qcm9jZXNzaW5nRXZlbnQuaCIKICNpbmNsdWRlICJKU0F1ZGlvUHJvY2Vzc2lu
Z0V2ZW50LmgiCkBAIC0xNTgsNiArMTYzLDEwIEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4
ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV2ZW50KiBldmVudCkKICAgICBl
bHNlIGlmIChldmVudC0+aXNTdG9yYWdlRXZlbnQoKSkKICAgICAgICAgd3JhcHBlciA9IENSRUFU
RV9ET01fT0JKRUNUX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBTdG9yYWdlRXZlbnQsIGV2
ZW50KTsKICNlbmRpZgorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorICAgIGVsc2UgaWYg
KGV2ZW50LT5pc0lEQlZlcnNpb25DaGFuZ2VFdmVudCgpKQorICAgICAgICB3cmFwcGVyID0gQ1JF
QVRFX0RPTV9PQkpFQ1RfV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIElEQlZlcnNpb25DaGFu
Z2VFdmVudCwgZXZlbnQpOworI2VuZGlmCiAgICAgZWxzZSBpZiAoZXZlbnQtPmlzV2ViS2l0QW5p
bWF0aW9uRXZlbnQoKSkKICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fT0JKRUNUX1dSQVBQ
RVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBXZWJLaXRBbmltYXRpb25FdmVudCwgZXZlbnQpOwogICAg
IGVsc2UgaWYgKGV2ZW50LT5pc1dlYktpdFRyYW5zaXRpb25FdmVudCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwCmluZGV4IDA3
NzBkNTEwNDJjNmJhOTQxZDk0MDg5ZTM1M2Y5MjNmNDZhYTY5MjcuLmFiYjdkNGNjODZhMDJmNzhk
OWJhZDNhOTA5MTY1ZjFmNmZkM2I2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhFdmVudEN1c3RvbS5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs
dWRlICJWOERldmljZU9yaWVudGF0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJWOEVycm9yRXZlbnQu
aCIKICNpbmNsdWRlICJWOEhhc2hDaGFuZ2VFdmVudC5oIgorI2luY2x1ZGUgIlY4SURCVmVyc2lv
bkNoYW5nZUV2ZW50LmgiCiAjaW5jbHVkZSAiVjhLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAi
VjhNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJWOE1vdXNlRXZlbnQuaCIKQEAgLTE1Myw2ICsx
NTQsMTAgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRXZlbnQqIGltcGwpCiAgICAgaWYg
KGltcGwtPmlzU3RvcmFnZUV2ZW50KCkpCiAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0
PFN0b3JhZ2VFdmVudCo+KGltcGwpKTsKICNlbmRpZgorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQorICAgIGlmIChpbXBsLT5pc0lEQlZlcnNpb25DaGFuZ2VFdmVudCgpKQorICAgICAgICBy
ZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxJREJWZXJzaW9uQ2hhbmdlRXZlbnQqPihpbXBsKSk7Cisj
ZW5kaWYKICAgICBpZiAoaW1wbC0+aXNCZWZvcmVMb2FkRXZlbnQoKSkKICAgICAgICAgcmV0dXJu
IHRvVjgoc3RhdGljX2Nhc3Q8QmVmb3JlTG9hZEV2ZW50Kj4oaW1wbCkpOwogI2lmIEVOQUJMRShE
RVZJQ0VfT1JJRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAppbmRleCA3ZWM1ZDZhMjg4Nzk1N2I4
YmE0YWMyZTU1MjNmMTY3MmNmMzQ4YWE5Li43OTVkYWNlMzRlY2EwNzQzNDU1ZjJiYThjMmZmYzI3
N2I4YzMyYTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKQEAgLTE5Miw2ICsxOTIsMTMgQEAgYm9vbCBF
dmVudDo6aXNTdG9yYWdlRXZlbnQoKSBjb25zdAogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKK2Jvb2wgRXZlbnQ6OmlzSURCVmVyc2lvbkNoYW5nZUV2ZW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogYm9vbCBFdmVudDo6aXNFcnJv
ckV2ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCmluZGV4IDc3
MmIxMDRmMjhiNmE5ZWYxMjZlNjE0Yjk5ZDA4YjZhMGFjZGZmNmEuLmJhOTU3NmI1NDNmM2RmOWI2
ZDk3ZDNlYjczOGQ4MmQwMTY5ZjdhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCkBAIC0xMjUsNiArMTI1LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAgICAgICAg
dmlydHVhbCBib29sIGlzU3RvcmFnZUV2ZW50KCkgY29uc3Q7CiAjZW5kaWYKKyNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKKyAgICAgICAgdmlydHVhbCBib29sIGlzSURCVmVyc2lvbkNoYW5n
ZUV2ZW50KCkgY29uc3Q7CisjZW5kaWYKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNBdWRpb1Byb2Nlc3NpbmdFdmVudCgpIGNvbnN0OwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaAppbmRleCA0MzllOWQ4YjU1OGI2ZTViMjJjNzY0MzA3NTUwMDc3MzYz
NjMxZGQxLi5hZGY0OGVkZGY3NmJlNDM1MDJhZmQxZjA2YjQ4MGU5NWIwNGQ5NmUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIG1hY3JvKGJlZm9yZXBhc3RlKSBcCiAgICAgbWFjcm8oYmVmb3JlcHJvY2VzcykgXAogICAg
IG1hY3JvKGJlZm9yZXVubG9hZCkgXAorICAgIG1hY3JvKGJsb2NrZWQpIFwKICAgICBtYWNybyhi
bHVyKSBcCiAgICAgbWFjcm8oY2FjaGVkKSBcCiAgICAgbWFjcm8oY2hhbmdlKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCBlZDU5OTVjZDBkMmNkOWI0NzVkNzU4NjNjM2FjNDk5
ZGVhZmIwZmZmLi5lMjdiMTViZDg4M2EwZGU5OWZkY2RkYmU3ZTg5YzU0MGE1MWZkODQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTE4OSw2ICsxODksMTAgQEAgSURCUmVxdWVz
dCogRXZlbnRUYXJnZXQ6OnRvSURCUmVxdWVzdCgpCiB7CiAgICAgcmV0dXJuIDA7CiB9CitJREJW
ZXJzaW9uQ2hhbmdlUmVxdWVzdCogRXZlbnRUYXJnZXQ6OnRvSURCVmVyc2lvbkNoYW5nZVJlcXVl
c3QoKQoreworICAgIHJldHVybiAwOworfQogSURCVHJhbnNhY3Rpb24qIEV2ZW50VGFyZ2V0Ojp0
b0lEQlRyYW5zYWN0aW9uKCkKIHsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmgKaW5kZXggZjE4OGMwZWQ3OTBlM2Y4ZDk2MjE1NDY5YzlkNGMzYjEwMTBjYTNjNC4uMWUyNjY0
MmQ5YWY0MzllNzdlMDZmMzUwNDZlOWQ4NWM0MTczYjdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmgKQEAgLTUyLDYgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIElE
QkRhdGFiYXNlOwogICAgIGNsYXNzIElEQlJlcXVlc3Q7CiAgICAgY2xhc3MgSURCVHJhbnNhY3Rp
b247CisgICAgY2xhc3MgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q7CiAgICAgY2xhc3MgSmF2YVNj
cmlwdEF1ZGlvTm9kZTsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBOb2RlOwpA
QCAtMTQyLDYgKzE0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBJ
REJEYXRhYmFzZSogdG9JREJEYXRhYmFzZSgpOwogICAgICAgICB2aXJ0dWFsIElEQlJlcXVlc3Qq
IHRvSURCUmVxdWVzdCgpOwogICAgICAgICB2aXJ0dWFsIElEQlRyYW5zYWN0aW9uKiB0b0lEQlRy
YW5zYWN0aW9uKCk7CisgICAgICAgIHZpcnR1YWwgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QqIHRv
SURCVmVyc2lvbkNoYW5nZVJlcXVlc3QoKTsKICNlbmRpZgogCiAgICAgICAgIHZpcnR1YWwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0ID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oCmluZGV4IDI5ZmIxYzQ2OTM1MTk4NmIx
ZDRjYTYyZGI4OWZjZDA3NWUxOGZiOWMuLmE1MDJlZDY2MmVhZDkwZDZhYjVlYzBkNzllMzA5YmRh
NmY0OTU3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDYWxsYmFja3MuaApAQCAtNTYsNiAr
NTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpID0gMDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKaW5k
ZXggNDM0Yjk3NTM2NmFhOTZjYmQxZjJkMWRmNzg5ZjRlMDdlOWViZjcxMi4uZjg5OTQwZWU0MGI5
YmYzYTY5MjkwN2Q2ZDA5MDMwNjc0MmVhN2I3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJE
YXRhYmFzZS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2Vu
ZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkluZGV4LmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0
U3RvcmUuaCIKLSNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCisjaW5jbHVkZSAiSURCVmVyc2lvbkNo
YW5nZVJlcXVlc3QuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxsaW1pdHM+CkBAIC05Niw5ICs5Niw5
IEBAIHZvaWQgSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgbV9iYWNrZW5kLT5kZWxldGVPYmplY3RTdG9yZShu
YW1lLCBtX3NldFZlcnNpb25UcmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7CiB9CiAKLVBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCRGF0YWJhc2U6OnNldFZlcnNpb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJiBl
YykKK1Bhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IElEQkRhdGFiYXNlOjpzZXRW
ZXJzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmVy
c2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVl
c3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIDAp
OworICAgIFJlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gcmVxdWVzdCA9IElEQlZlcnNp
b25DaGFuZ2VSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIHZl
cnNpb24pOwogICAgIG1fYmFja2VuZC0+c2V0VmVyc2lvbih2ZXJzaW9uLCByZXF1ZXN0LCBlYyk7
CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CkBAIC0xMzUsNyArMTM1LDEwIEBAIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb24+IElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250CiAKIHZvaWQgSURCRGF0YWJhc2U6OmNsb3NlKCkKIHsKKyAgICBpZiAobV9u
b05ld1RyYW5zYWN0aW9ucykKKyAgICAgICAgcmV0dXJuOwogICAgIG1fbm9OZXdUcmFuc2FjdGlv
bnMgPSB0cnVlOworICAgIG1fYmFja2VuZC0+Y2xvc2UoKTsKIH0KIAogYm9vbCBJREJEYXRhYmFz
ZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJh
c2UuaAppbmRleCBmOTBkZGQzOGJmZjUwMjVkZmM3YTA1MzBhNTMxMGQzODc1MjFkNTE4Li41MWU3
YTk5MjI1ODhlYTdiNzg4Yjk0ZDQ4YWVkYzFhZTUyYzRjMDc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJEYXRhYmFzZS5oCkBAIC00Myw4ICs0Myw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgSURCQW55OwotY2xhc3MgSURCUmVxdWVzdDsKK2NsYXNzIElEQlZlcnNpb25DaGFu
Z2VSZXF1ZXN0OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgSURCRGF0
YWJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJEYXRhYmFzZT4sIHB1YmxpYyBFdmVudFRhcmdl
dCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CkBAIC02Niw3ICs2Niw3IEBAIHB1
YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGNyZWF0ZU9iamVjdFN0b3Jl
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uc09iamVjdCYsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0
aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gc2V0VmVyc2lvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJik7
CisgICAgUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gc2V0VmVyc2lvbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdm9pZCBjbG9zZSgpOwogCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihhYm9ydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaWRsCmluZGV4IDM5
MjIxNDQ0OWVlZjk3MTkyMDQ4YzljMzQ4NzE4OWEyNGIyMzFhYjUuLmU2ZTgxOWJjMmNlMjFmZjAz
MzIwMTRhNzYxYWY1ODBiODY2NWJiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCRGF0YWJhc2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJh
c2UuaWRsCkBAIC00MCw3ICs0MCw3IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgICAgIHJh
aXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwogICAgICAgICB2b2lkIGRlbGV0ZU9iamVjdFN0
b3JlKGluIERPTVN0cmluZyBuYW1lKQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4
Y2VwdGlvbik7Ci0gICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJS
ZXF1ZXN0IHNldFZlcnNpb24oaW4gRE9NU3RyaW5nIHZlcnNpb24pCisgICAgICAgIFtDYWxsV2l0
aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCBzZXRWZXJz
aW9uKGluIERPTVN0cmluZyB2ZXJzaW9uKQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFz
ZUV4Y2VwdGlvbik7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJ
REJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihpbiBbT3B0aW9uYWxdIERPTVN0cmluZ0xpc3Qgc3Rv
cmVOYW1lcywgaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBtb2RlKQogICAgICAgICAgICAg
cmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCAxMzNjNWFlYjQwNDU3YWVkNjZm
NDg2NTA0MzJhMmRlZGVjYzM4YzdiLi4zODVlYjMyZWVmNzQyMTQ5MjM5NjIxYTEzN2I2NTIwZWEw
OWRhMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFj
a2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5jcHAKQEAgLTQxLDYgKzQxLDI0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ1NldFZlcnNpb25DYWxsIDogcHVi
bGljIFJlZkNvdW50ZWQ8UGVuZGluZ1NldFZlcnNpb25DYWxsPiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8UGVuZGluZ1NldFZlcnNpb25DYWxsPiBjcmVhdGUoY29uc3QgU3RyaW5n
JiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQZW5kaW5nU2V0VmVyc2lvbkNhbGwodmVyc2lvbiwg
Y2FsbGJhY2tzKSk7CisgICAgfQorICAgIFN0cmluZyB2ZXJzaW9uKCkgeyByZXR1cm4gbV92ZXJz
aW9uOyB9CisgICAgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcygpIHsgcmV0dXJu
IG1fY2FsbGJhY2tzOyB9Citwcml2YXRlOgorICAgIFBlbmRpbmdTZXRWZXJzaW9uQ2FsbChjb25z
dCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisg
ICAgICAgIDogbV92ZXJzaW9uKHZlcnNpb24pCisgICAgICAgICwgbV9jYWxsYmFja3MoY2FsbGJh
Y2tzKQorICAgIHsKKyAgICB9CisgICAgU3RyaW5nIG1fdmVyc2lvbjsKKyAgICBSZWZQdHI8SURC
Q2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKK307CisKIHN0YXRpYyBib29sIGV4dHJhY3RNZXRhRGF0
YShTUUxpdGVEYXRhYmFzZSYgc3FsaXRlRGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgbmFtZSwgU3Ry
aW5nJiBmb3VuZFZlcnNpb24sIGludDY0JiBmb3VuZElkKQogewogICAgIFNRTGl0ZVN0YXRlbWVu
dCBkYXRhYmFzZVF1ZXJ5KHNxbGl0ZURhdGFiYXNlLCAiU0VMRUNUIGlkLCB2ZXJzaW9uIEZST00g
RGF0YWJhc2VzIFdIRVJFIG5hbWUgPSA/Iik7CkBAIC05NSw2ICsxMTMsNyBAQCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwg
SURCU1FMaXRlRGF0YQogICAgICwgbV9pZGVudGlmaWVyKHVuaXF1ZUlkZW50aWZpZXIpCiAgICAg
LCBtX2ZhY3RvcnkoZmFjdG9yeSkKICAgICAsIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihjb29y
ZGluYXRvcikKKyAgICAsIG1fb3BlbkNvbm5lY3Rpb25Db3VudCgwKQogewogICAgIEFTU0VSVCgh
bV9uYW1lLmlzTnVsbCgpKTsKIApAQCAtMjEzLDYgKzIzMiwxNSBAQCB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OnNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRy
PElEQkNhbAogewogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSA9
IHRoaXM7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tz
OworCisgICAgLy8gRklYTUU6IE9ubHkgY29udGludWUgaWYgdGhlIGNvbm5lY3Rpb24gaXMgc3Rp
bGwgb3Blbi4KKyAgICBpZiAobV9vcGVuQ29ubmVjdGlvbkNvdW50ID4gMSkgeworICAgICAgICBj
YWxsYmFja3MtPm9uQmxvY2tlZCgpOworICAgICAgICBSZWZQdHI8UGVuZGluZ1NldFZlcnNpb25D
YWxsPiBwZW5kaW5nU2V0VmVyc2lvbkNhbGwgPSBQZW5kaW5nU2V0VmVyc2lvbkNhbGw6OmNyZWF0
ZSh2ZXJzaW9uLCBjYWxsYmFja3MpOworICAgICAgICBtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMu
YXBwZW5kKHBlbmRpbmdTZXRWZXJzaW9uQ2FsbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
ICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xp
c3Q6OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKG9iamVjdFN0
b3JlTmFtZXMuZ2V0KCksIElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSwgdGhpcyk7CiAg
ICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbkludGVybmFsLCBkYXRhYmFzZSwgdmVyc2lv
biwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbiksCkBAIC0yNDcsOSArMjc1LDI0IEBAIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
Ojp0cmFuc2FjdGlvbihECiAgICAgcmV0dXJuIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNy
ZWF0ZShvYmplY3RTdG9yZU5hbWVzLCBtb2RlLCB0aGlzKTsKIH0KIAordm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpvcGVuKCkKK3sKKyAgICBtX29wZW5Db25uZWN0aW9uQ291bnQrKzsKK30K
Kwogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZSgpCiB7Ci0gICAgLy8gRklYTUU6
IEltcGxlbWVudC4KKyAgICBtX29wZW5Db25uZWN0aW9uQ291bnQtLTsKKyAgICBBU1NFUlQobV9v
cGVuQ29ubmVjdGlvbkNvdW50ID49IDApOworICAgIGlmIChtX29wZW5Db25uZWN0aW9uQ291bnQg
PiAxKQorICAgICAgICByZXR1cm47CisKKyAgICB3aGlsZSAoIW1fcGVuZGluZ1NldFZlcnNpb25D
YWxscy5pc0VtcHR5KCkpIHsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgUmVm
UHRyPFBlbmRpbmdTZXRWZXJzaW9uQ2FsbD4gcGVuZGluZ1NldFZlcnNpb25DYWxsID0gbV9wZW5k
aW5nU2V0VmVyc2lvbkNhbGxzLnRha2VGaXJzdCgpOworICAgICAgICBzZXRWZXJzaW9uKHBlbmRp
bmdTZXRWZXJzaW9uQ2FsbC0+dmVyc2lvbigpLCBwZW5kaW5nU2V0VmVyc2lvbkNhbGwtPmNhbGxi
YWNrcygpLCBlYyk7CisgICAgICAgIEFTU0VSVCghZWMpOworICAgIH0KIH0KIAogdm9pZCBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpsb2FkT2JqZWN0U3RvcmVzKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggODk0Mjk2ODViYzg0OWYx
MjU4NjFkODNmZDQ5NTcxOGI1Mzg4ZTA5MC4uMjAyYjA3MjA3YTAyNDgwMGRmMjUxNmQ3NWM4NDVj
MDUwNGM3MjA1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5o
IgogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAK
QEAgLTUzLDYgKzU0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IGludDY0X3QgSW52
YWxpZElkID0gMDsKICAgICBpbnQ2NF90IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAg
IHZvaWQgb3BlbigpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbmFtZTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBt
X3ZlcnNpb247IH0KQEAgLTk0LDYgKzk2LDExIEBAIHByaXZhdGU6CiAgICAgT2JqZWN0U3RvcmVN
YXAgbV9vYmplY3RTdG9yZXM7CiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25Db29yZGluYXRv
cj4gbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yOworCisgICAgaW50IG1fb3BlbkNvbm5lY3Rpb25D
b3VudDsKKworICAgIGNsYXNzIFBlbmRpbmdTZXRWZXJzaW9uQ2FsbDsKKyAgICBEZXF1ZTxSZWZQ
dHI8UGVuZGluZ1NldFZlcnNpb25DYWxsPiA+IG1fcGVuZGluZ1NldFZlcnNpb25DYWxsczsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCmluZGV4IDljYzcyMzBhY2Q4MDYyOGUx
ZjkwYmI2NDQ2NTBlNGNkMTZlZTg1ODMuLmM0OTQxZGRiMGMwNWExNmE3ZDA0Y2JlMzdkN2Y2YTM5
YzU4MTI4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNDAsNyArNDAsNiBAQCBjbGFzcyBGcmFtZTsKIGNsYXNz
IElEQkNhbGxiYWNrczsKIGNsYXNzIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTsKIGNs
YXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTsKLWNsYXNzIElEQlRyYW5zYWN0aW9u
Q2FsbGJhY2tzOwogCiAvLyBUaGlzIGNsYXNzIGlzIHNoYXJlZCBieSBJREJEYXRhYmFzZSAoYXN5
bmMpIGFuZCBJREJEYXRhYmFzZVN5bmMgKHN5bmMpLgogLy8gVGhpcyBpcyBpbXBsZW1lbnRlZCBi
eSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsIGFuZCBvcHRpb25hbGx5IG90aGVycyAoaW4gb3JkZXIg
dG8gcHJveHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJh
Y2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJ
bXBsLmNwcAppbmRleCBjMWM0ZTZiYzAyZGFkMTM0OTM4MjhjNzRhNTZmNTAzOGVmNDVlM2UzLi40
NGQ2ZGFhODJmYjhkZjkyZmMxZTZjNTIzMTE3MmY1NzQzNWY2MWE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCkBAIC0yMTksNiArMjE5
LDcgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1l
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2EKICAgICBTdHJpbmcgdW5pcXVlSWRlbnRpZmll
ciA9IGZpbGVJZGVudGlmaWVyICsgIkAiICsgbmFtZTsKICAgICBJREJEYXRhYmFzZUJhY2tlbmRN
YXA6Oml0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZmluZCh1bmlxdWVJZGVudGlm
aWVyKTsKICAgICBpZiAoaXQgIT0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZW5kKCkpIHsKKyAgICAg
ICAgaXQtPnNlY29uZC0+b3BlbigpOwogICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhpdC0+
c2Vjb25kKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI0NSw2ICsyNDYsNyBAQCB2b2lk
IElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYQogICAgIH0KIAogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tl
bmRJbXBsPiBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUo
bmFtZSwgc3FsaXRlRGF0YWJhc2UuZ2V0KCksIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQo
KSwgdGhpcywgdW5pcXVlSWRlbnRpZmllcik7CisgICAgZGF0YWJhc2VCYWNrZW5kLT5vcGVuKCk7
CiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoZGF0YWJhc2VCYWNrZW5kLmdldCgpKTsKICAgICBt
X2RhdGFiYXNlQmFja2VuZE1hcC5zZXQodW5pcXVlSWRlbnRpZmllciwgZGF0YWJhc2VCYWNrZW5k
LmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCmluZGV4IDliYTI1
YjViOWI0NGM0ZTA2NjIzODM0Y2M4NjkwMjVhOWY3NjkyYzguLmEzZTVlYWE2MzgxNTdjZDVkZWIy
NzJiMjFjOGE1NTRjYmY3ZWJiNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNw
cApAQCAtMjA1LDYgKzIwNSwxMSBAQCBib29sIElEQlJlcXVlc3Q6Omhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2ZpbmlzaGVkIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFz
UGVuZGluZ0FjdGl2aXR5KCk7CiB9CiAKK3ZvaWQgSURCUmVxdWVzdDo6b25CbG9ja2VkKCkKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
SURCUmVxdWVzdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtMjE2LDcgKzIy
MSw4IEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBl
dmVudCkKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQo
ZXZlbnQtPnRhcmdldCgpID09IHRoaXMpOwogICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPCBET05F
KTsKLSAgICBtX3JlYWR5U3RhdGUgPSBET05FOworICAgIGlmIChldmVudC0+dHlwZSgpICE9IGV2
ZW50TmFtZXMoKS5ibG9ja2VkRXZlbnQpCisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IERPTkU7CiAK
ICAgICBWZWN0b3I8UmVmUHRyPEV2ZW50VGFyZ2V0PiA+IHRhcmdldHM7CiAgICAgdGFyZ2V0cy5h
cHBlbmQodGhpcyk7CkBAIC0yMzAsMTAgKzIzNiwxMSBAQCBib29sIElEQlJlcXVlc3Q6OmRpc3Bh
dGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgfQogCiAgICAgLy8gRklYTUU6
IFdoZW4gd2UgYWxsb3cgY3VzdG9tIGV2ZW50IGRpc3BhdGNoaW5nLCB0aGlzIHdpbGwgcHJvYmFi
bHkgbmVlZCB0byBjaGFuZ2UuCi0gICAgQVNTRVJUKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLnN1Y2Nlc3NFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5lcnJvckV2
ZW50KTsKKyAgICBBU1NFUlQoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2
ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgfHwgZXZlbnQt
PnR5cGUoKSA9PSBldmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50KTsKICAgICBib29sIGRvbnRQcmV2
ZW50RGVmYXVsdCA9IElEQkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2goZXZlbnQuZ2V0KCksIHRh
cmdldHMpOwogCiAgICAgLy8gSWYgdGhlIHJlc3VsdCB3YXMgb2YgdHlwZSBJREJDdXJzb3IsIHRo
ZW4gd2UnbGwgZmlyZSBhZ2Fpbi4KKy8vICAgIGlmIChtX3Jlc3VsdCAmJiBtX3Jlc3VsdC0+dHlw
ZSgpICE9IElEQkFueTo6SURCQ3Vyc29yVHlwZSAmJiBldmVudC0+dHlwZSgpICE9IGV2ZW50TmFt
ZXMuYmxvY2tlZEV2ZW50KQogICAgIGlmIChtX3Jlc3VsdCAmJiBtX3Jlc3VsdC0+dHlwZSgpICE9
IElEQkFueTo6SURCQ3Vyc29yVHlwZSkKICAgICAgICAgbV9maW5pc2hlZCA9IHRydWU7CiAKQEAg
LTI1OSw2ICsyNjYsMTEgQEAgdm9pZCBJREJSZXF1ZXN0OjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0
cjxFdmVudD4gZXZlbnQpCiAgICAgZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KGV2ZW50KTsKIH0K
IAorSURCQW55KiBJREJSZXF1ZXN0Ojpzb3VyY2UoKQoreworICAgIHJldHVybiBtX3NvdXJjZS5n
ZXQoKTsKK30KKwogRXZlbnRUYXJnZXREYXRhKiBJREJSZXF1ZXN0OjpldmVudFRhcmdldERhdGEo
KQogewogICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
UmVxdWVzdC5oCmluZGV4IDA5ZGJjZjk2NGQyMzYyM2IyOTkwZTFkMjA2ZTBhOGIwNzdjNzc4YzAu
LmZhMWFiYjc1MDhlYjZkYjJhYTIxM2ZkYzM0MzY1YzM1NGFlYmZkMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCUmVxdWVzdC5oCkBAIC02Niw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICBERUZJTkVf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsKIAogICAgIGJvb2wgcmVzZXRSZWFkeVN0
YXRlKElEQlRyYW5zYWN0aW9uKik7CisgICAgSURCQW55KiBzb3VyY2UoKTsKIAogICAgIC8vIElE
QkNhbGxiYWNrcwogICAgIHZpcnR1YWwgdm9pZCBvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VFcnJvcj4pOwpAQCAtNzYsNiArNzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9u
U3VjY2VzcyhQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4pOwogICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPik7CisgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpOwogCiAgICAg
Ly8gQWN0aXZlRE9NT2JqZWN0CiAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0OwpAQCAtODksMTEgKzkxLDExIEBAIHB1YmxpYzoKICAgICB1c2luZyBUaHJlYWRTYWZl
U2hhcmVkPElEQkNhbGxiYWNrcz46OnJlZjsKICAgICB1c2luZyBUaHJlYWRTYWZlU2hhcmVkPElE
QkNhbGxiYWNrcz46OmRlcmVmOwogCi1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIElEQlJlcXVl
c3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIElE
QlRyYW5zYWN0aW9uKik7Ci0KICAgICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50
Pik7CiAKK3ByaXZhdGU6CiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICB2aXJ0dWFsIHZvaWQgcmVm
RXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJn
ZXQoKSB7IGRlcmVmKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
VmVyc2lvbkNoYW5nZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lv
bkNoYW5nZUV2ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjIzZDhkNDlmMWFiZTM4YzA4ZDQzMWI1Zjcx
NDA1OTc5OGMzNWMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCVmVyc2lvbkNoYW5nZUV2ZW50LmgiCisKKyNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNs
dWRlICJJREJBbnkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPElEQlZl
cnNpb25DaGFuZ2VFdmVudD4gSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUoY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCVmVyc2lvbkNoYW5n
ZUV2ZW50KHZlcnNpb24pKTsKK30KKworSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpJREJWZXJzaW9u
Q2hhbmdlRXZlbnQoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQorICAgIDogRXZlbnQoZXZlbnROYW1l
cygpLmJsb2NrZWRFdmVudCwgZmFsc2UgLypjYW5CdWJibGUqLywgZmFsc2UgLypjYW5jZWxhYmxl
Ki8pCisgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKK3sKK30KKworSURCVmVyc2lvbkNoYW5nZUV2
ZW50Ojp+SURCVmVyc2lvbkNoYW5nZUV2ZW50KCkKK3sKK30KKworU3RyaW5nIElEQlZlcnNpb25D
aGFuZ2VFdmVudDo6dmVyc2lvbigpCit7CisgICAgcmV0dXJuIG1fdmVyc2lvbjsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3ODQyN2ZlNjczZDRjNWNiZmVl
YThjYTUyMTQ5NzJmNDVlYzMxZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIElEQlZlcnNpb25DaGFuZ2VFdmVudF9oCisjZGVmaW5lIElEQlZlcnNpb25DaGFuZ2VF
dmVudF9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkV2ZW50
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBJREJBbnk7CisKK2NsYXNzIElEQlZlcnNpb25DaGFuZ2VFdmVudCA6IHB1YmxpYyBFdmVu
dCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZUV2ZW50
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKKyAgICAvLyBGSVhNRTogTmVlZCB0byBh
bGxvdyBjcmVhdGlvbiBvZiB0aGVzZSBldmVudHMgZnJvbSBKUy4KKyAgICB2aXJ0dWFsIH5JREJW
ZXJzaW9uQ2hhbmdlRXZlbnQoKTsKKworICAgIHZpcnR1YWwgYm9vbCBpc0lEQlZlcnNpb25DaGFu
Z2VFdmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwgU3RyaW5nIHZl
cnNpb24oKTsKKworcHJpdmF0ZToKKyAgICBJREJWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uKTsKKworICAgIFN0cmluZyBtX3ZlcnNpb247Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2Vu
ZGlmIC8vIElEQlZlcnNpb25DaGFuZ2VFdmVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzZhNDE3MThmNjI1ZmMy
NDI0OTEyZTlkY2ZjMDRkYjA0Y2VjZGFjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmlkbApAQCAtMCwwICsxLDMzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworbW9kdWxlIHN0b3JhZ2UgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0
aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQorICAgIF0gSURCVmVyc2lvbkNoYW5nZUV2ZW50IDogRXZl
bnQgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZlcnNpb247CisgICAg
fTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5n
ZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVx
dWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjcwNDY5YmMyYjljYzBkNzIyNjIyNTU4YjYzNjk0ZjViZTU4
ZTQxZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lv
bkNoYW5nZVJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaCIKKworI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCVmVyc2lvbkNoYW5nZUV2ZW50Lmgi
CisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1Bhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IElEQlZlcnNpb25DaGFu
Z2VSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1Jl
ZlB0cjxJREJBbnk+IHNvdXJjZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQoreworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QoY29udGV4dCwgc291cmNlLCB2
ZXJzaW9uKSk7Cit9CisKK0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpJREJWZXJzaW9uQ2hhbmdl
UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFu
eT4gc291cmNlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pCisgICAgOiBJREJSZXF1ZXN0KGNvbnRl
eHQsIHNvdXJjZSwgMCkKKyAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQoreworfQorCitJREJWZXJz
aW9uQ2hhbmdlUmVxdWVzdDo6fklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KCkKK3sKK30KKwordm9p
ZCBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDo6b25CbG9ja2VkKCkKK3sKKyAgICBBU1NFUlQoIW1f
ZXJyb3JDb2RlICYmIG1fZXJyb3JNZXNzYWdlLmlzTnVsbCgpICYmICFtX3Jlc3VsdCk7CisgICAg
ZW5xdWV1ZUV2ZW50KElEQlZlcnNpb25DaGFuZ2VFdmVudDo6Y3JlYXRlKG1fdmVyc2lvbikpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyY2Y0YzAz
NTFlYjUzODkwM2I1MWViNjQ5NWE5MTVhZjkzZjQxMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmgKQEAgLTAsMCArMSw1
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3RfaAorI2RlZmluZSBJ
REJWZXJzaW9uQ2hhbmdlUmVxdWVzdF9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
KworI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCA6IHB1YmxpYyBJREJSZXF1ZXN0IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBjb25zdCBT
dHJpbmcmIHZlcnNpb24pOworICAgIHZpcnR1YWwgfklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KCk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCk7CisKKyAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKGJsb2NrZWQpOworCitwcml2YXRlOgorICAgIElEQlZlcnNpb25DaGFu
Z2VSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291
cmNlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOworCisgICAgU3RyaW5nIG1fdmVyc2lvbjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQorCisjZW5kaWYgLy8gSURCUmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmYWM3MzU0
NzBhMmE5YjAwZDJkNDlhNzg2ZWYxNzZiYzlhOTdhMzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmlkbApAQCAtMCwwICsx
LDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworbW9kdWxlIHN0b3JhZ2UgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAg
ICAgQ29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRSwKKyAgICAgICAgRXZlbnRUYXJnZXQKKyAg
ICBdIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IDogSURCUmVxdWVzdCB7CisgICAgICAgIGF0dHJp
YnV0ZSBFdmVudExpc3RlbmVyIG9uYmxvY2tlZDsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCBlYjVhODQyZTFkODk1YWFmZmM4ZWQyYjBkNDVmNTJlNTZjMjNhOGRjLi44
NWVkODljMGZmZGNjODBhMzdiZDU5M2IxZGJmODg0MTRkOTk4Zjg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTAyLTE2ICBEYXZpZCBHcm9nYW4gIDxk
Z3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBpbmRleGVkZGI6IG1ha2Ugc2V0VmVyc2lvbiBmaXJlIGJsb2NrZWQgZXZl
bnQgaWYgb3RoZXIgY29ubmVjdGlvbnMgYXJlIG9wZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNzI4CisKKyAgICAgICAgKiBzcmMvSURCQ2FsbGJh
Y2tzUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2FsbGJhY2tzUHJveHk6Om9uQmxv
Y2tlZCk6CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5Lmg6CisgICAgICAgICogc3Jj
L1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViSURCQ2FsbGJh
Y2tzSW1wbDo6b25CbG9ja2VkKToKKyAgICAgICAgKiBzcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5o
OgorCiAyMDExLTAyLTE2ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCmluZGV4IGRiYTI4ZDk0ZWFmZTYzYjg4MDky
MTBjNjhkZjljZGRmYzlmMjJjMGQuLjQ2NTQ5NTA2MzIyNGVmNDJhNTE1NTY1NzVlODBhZWZjZmYz
YzRmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNr
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQ
cm94eS5jcHAKQEAgLTk5LDYgKzk5LDExIEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjCiAgICAg
bV9jYWxsYmFja3MtPm9uU3VjY2VzcyhXZWJLaXQ6OldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShz
ZXJpYWxpemVkU2NyaXB0VmFsdWUpKTsKIH0KIAordm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25C
bG9ja2VkKCkKK3sKKyAgICBtX2NhbGxiYWNrcy0+b25CbG9ja2VkKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKaW5kZXggZTFk
YjIzZDQzOWY2YWE1Zjc2ODY4YTAyNzc0ZjY5ZDkwMDVjMDc4Zi4uN2RlZDhlYWU0ZTMyODA1ZGEx
NDQzMzg3N2Y1ZDc1MzAyODFiYjMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJDYWxsYmFja3NQcm94eS5oCkBAIC01NSw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2Vk
KCk7CiAKIHByaXZhdGU6CiAgICAgSURCQ2FsbGJhY2tzUHJveHkoUGFzc093blB0cjxXZWJLaXQ6
OldlYklEQkNhbGxiYWNrcz4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJDYWxsYmFja3NJbXBsLmNwcAppbmRleCBiYjdhMTliY2YyMTljZjIwNTNjOGM3ZDA1NGQw
YTkwZGFjZWUxM2U3Li41NzAzZjI3Yzk4NzM0Zjc3MTZjMmY0YmZiNzZlNjA0ZWM0MTIyZDA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBs
LmNwcApAQCAtOTYsNiArOTYsMTEgQEAgdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nl
c3MoY29uc3QgV2ViS2l0OjpXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmkKICAgICBtX2Nh
bGxiYWNrcy0+b25TdWNjZXNzKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CiB9CiAKK3ZvaWQgV2Vi
SURCQ2FsbGJhY2tzSW1wbDo6b25CbG9ja2VkKCkKK3sKKyAgICBtX2NhbGxiYWNrcy0+b25CbG9j
a2VkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCQ2FsbGJhY2tzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
Q2FsbGJhY2tzSW1wbC5oCmluZGV4IGQyYWUyNTU2MjlmYmEwMTgxODU0NzJlOTFiYjY2MWFiMjJi
MzM3OGIuLjFlNzZkZWNmMTkwOWJkYzc1M2MxYjIyMmZjYTViYWM4Y2RiZGMxY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgKQEAgLTQ5
LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViS2l0OjpX
ZWJJREJPYmplY3RTdG9yZSopOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViS2l0OjpX
ZWJJREJUcmFuc2FjdGlvbiopOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3QgV2Vi
S2l0OjpXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25CbG9j
a2VkKCk7CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7
Cg==
</data>
<flag name="review"
          id="74387"
          type_id="1"
          status="+"
          setter="jorlow"
    />
          </attachment>
      

    </bug>

</bugzilla>