<?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>99964</bug_id>
          
          <creation_ts>2012-10-22 00:32:35 -0700</creation_ts>
          <short_desc>[chromium] introduce WebTask to the TestRunner library</short_desc>
          <delta_ts>2012-10-22 14:38:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>jochen</reporter>
          <assigned_to>jochen</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>peter+ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>747270</commentid>
    <comment_count>0</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-10-22 00:32:35 -0700</bug_when>
    <thetext>[chromium] introduce WebTask to the TestRunner library</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747271</commentid>
    <comment_count>1</comment_count>
      <attachid>169837</attachid>
    <who name="">jochen</who>
    <bug_when>2012-10-22 00:33:06 -0700</bug_when>
    <thetext>Created attachment 169837
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747285</commentid>
    <comment_count>2</comment_count>
      <attachid>169837</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-10-22 01:00:55 -0700</bug_when>
    <thetext>Comment on attachment 169837
Patch

Attachment 169837 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14492357</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747286</commentid>
    <comment_count>3</comment_count>
      <attachid>169837</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-22 01:01:46 -0700</bug_when>
    <thetext>Comment on attachment 169837
Patch

Attachment 169837 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14490343</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747542</commentid>
    <comment_count>4</comment_count>
      <attachid>169908</attachid>
    <who name="">jochen</who>
    <bug_when>2012-10-22 08:00:45 -0700</bug_when>
    <thetext>Created attachment 169908
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747553</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-22 08:04:41 -0700</bug_when>
    <thetext>Attachment 169908 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/DumpRenderTree/D...&quot; exit_code: 1
Tools/DumpRenderTree/chromium/TestRunner/src/WebTask.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747558</commentid>
    <comment_count>6</comment_count>
      <attachid>169915</attachid>
    <who name="">jochen</who>
    <bug_when>2012-10-22 08:08:38 -0700</bug_when>
    <thetext>Created attachment 169915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747613</commentid>
    <comment_count>7</comment_count>
      <attachid>169915</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-22 09:29:48 -0700</bug_when>
    <thetext>Comment on attachment 169915
Patch

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

&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTask.h:36
&gt; +#include &quot;webkit/support/webkit_support.h&quot;
&gt; +
&gt; +#include &lt;vector&gt;

These seem like strange dependencies to have in the API.  Can we remove them?

&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTask.h:43
&gt; +// WebTask represents a task which can run by postTask() or postDelayedTask().
&gt; +// it is named &quot;WebTask&quot;, not &quot;Task&quot;, to avoid conflist with base/task.h.

conflist -&gt; conflicts

This doen&apos;t really apply now that we&apos;re using the WebTestRunner namespace.

&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTask.h:44
&gt; +class WebTask : public webkit_support::TaskAdaptor {

I hope we can avoid this base class here.  We might need to refactor things a bit so that we can have a cleaner API (i.e., that doesn&apos;t depend on webkit_support).  The TaskAdaptor class seems very simple...

&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTask.h:46
&gt; +    WebTask(WebTaskList*);

explicit ?

&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTask.h:69
&gt; +    std::vector&lt;WebTask*&gt; m_tasks;

Should this be a WebVector?  Maybe this class should have an m_private implementation.

&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTask.h:74
&gt; +// A task containing an object pointer of class T. Is is supposed that
&gt; +// runifValid() calls a member function of the object pointer.
&gt; +// Class T must have &quot;WebTaskList* taskList()&quot;.

&quot;Is is supposed&quot; isn&apos;t grammatically correct. I might re-write this comment to be clearer.

&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTask.h:75
&gt; +template&lt;class T&gt; class WebMethodTask: public WebTask {

This line isn&apos;t in correct style.

&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTask.h:77
&gt; +    WebMethodTask(T* object): WebTask(object-&gt;taskList()), m_object(object) { }

Bad style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747615</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-22 09:30:55 -0700</bug_when>
    <thetext>We need to think some more about how to turn this into a cleaner abstraction rather than just moving the code from Task.h to WebTask.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747616</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-22 09:31:34 -0700</bug_when>
    <thetext>Also, can you add this public directory to the watchlist file so that the other API reviewers will be automatically CCed on these changes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747748</commentid>
    <comment_count>10</comment_count>
      <attachid>169951</attachid>
    <who name="">jochen</who>
    <bug_when>2012-10-22 12:05:45 -0700</bug_when>
    <thetext>Created attachment 169951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747751</commentid>
    <comment_count>11</comment_count>
      <attachid>169915</attachid>
    <who name="">jochen</who>
    <bug_when>2012-10-22 12:07:24 -0700</bug_when>
    <thetext>Comment on attachment 169915
Patch

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

&gt;&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTask.h:36
&gt;&gt; +#include &lt;vector&gt;
&gt; 
&gt; These seem like strange dependencies to have in the API.  Can we remove them?

done

&gt;&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTask.h:43
&gt;&gt; +// it is named &quot;WebTask&quot;, not &quot;Task&quot;, to avoid conflist with base/task.h.
&gt; 
&gt; conflist -&gt; conflicts
&gt; 
&gt; This doen&apos;t really apply now that we&apos;re using the WebTestRunner namespace.

done

&gt;&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTask.h:44
&gt;&gt; +class WebTask : public webkit_support::TaskAdaptor {
&gt; 
&gt; I hope we can avoid this base class here.  We might need to refactor things a bit so that we can have a cleaner API (i.e., that doesn&apos;t depend on webkit_support).  The TaskAdaptor class seems very simple...

done.

I&apos;ve moved postTask and postDelayedTask to the WebTestRunner. DRT then forwards the tasks to webkit_support, wrapping it in a TaskAdaptor when needed.

&gt;&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTask.h:46
&gt;&gt; +    WebTask(WebTaskList*);
&gt; 
&gt; explicit ?

done

&gt;&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTask.h:69
&gt;&gt; +    std::vector&lt;WebTask*&gt; m_tasks;
&gt; 
&gt; Should this be a WebVector?  Maybe this class should have an m_private implementation.

done

&gt;&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTask.h:74
&gt;&gt; +// Class T must have &quot;WebTaskList* taskList()&quot;.
&gt; 
&gt; &quot;Is is supposed&quot; isn&apos;t grammatically correct. I might re-write this comment to be clearer.

done

&gt;&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTask.h:75
&gt;&gt; +template&lt;class T&gt; class WebMethodTask: public WebTask {
&gt; 
&gt; This line isn&apos;t in correct style.

done

&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTask.h:78
&gt; +    virtual void run()

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747758</commentid>
    <comment_count>12</comment_count>
      <attachid>169951</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-22 12:14:59 -0700</bug_when>
    <thetext>Comment on attachment 169951
Patch

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

Much better.  Thank you!

&gt; Tools/DumpRenderTree/chromium/Task.cpp:59
&gt; +        delete m_task;

We can&apos;t use OwnPtr here?

&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:56
&gt; +    virtual void postTask(WebTask*) = 0;
&gt; +    virtual void postDelayedTask(WebTask*, long long ms) = 0;

I would add a comment explaining that the delegate takes ownership of the task object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747795</commentid>
    <comment_count>13</comment_count>
      <attachid>169961</attachid>
    <who name="">jochen</who>
    <bug_when>2012-10-22 13:02:29 -0700</bug_when>
    <thetext>Created attachment 169961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747797</commentid>
    <comment_count>14</comment_count>
      <attachid>169951</attachid>
    <who name="">jochen</who>
    <bug_when>2012-10-22 13:02:58 -0700</bug_when>
    <thetext>Comment on attachment 169951
Patch

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

&gt;&gt; Tools/DumpRenderTree/chromium/Task.cpp:59
&gt;&gt; +        delete m_task;
&gt; 
&gt; We can&apos;t use OwnPtr here?

done

&gt;&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:56
&gt;&gt; +    virtual void postDelayedTask(WebTask*, long long ms) = 0;
&gt; 
&gt; I would add a comment explaining that the delegate takes ownership of the task object.

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747818</commentid>
    <comment_count>15</comment_count>
      <attachid>169961</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-22 13:21:39 -0700</bug_when>
    <thetext>Comment on attachment 169961
Patch

Rejecting attachment 169961 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
candidates are: WTF::OwnPtr&lt;T&gt;::OwnPtr(const WTF::OwnPtr&lt;typename WTF::RemovePointer&lt;T&gt;::Type&gt;&amp;) [with T = WebTestRunner::WebTask]
Source/WTF/wtf/OwnPtr.h:50: note:                 WTF::OwnPtr&lt;T&gt;::OwnPtr(std::nullptr_t) [with T = WebTestRunner::WebTask]
Source/WTF/wtf/OwnPtr.h:49: note:                 WTF::OwnPtr&lt;T&gt;::OwnPtr() [with T = WebTestRunner::WebTask]
make: *** [out/Release/obj.target/DumpRenderTree/Tools/DumpRenderTree/chromium/Task.o] Error 1
make: *** Waiting for unfinished jobs....

Full output: http://queues.webkit.org/results/14496371</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747823</commentid>
    <comment_count>16</comment_count>
      <attachid>169967</attachid>
    <who name="">jochen</who>
    <bug_when>2012-10-22 13:24:56 -0700</bug_when>
    <thetext>Created attachment 169967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747897</commentid>
    <comment_count>17</comment_count>
      <attachid>169967</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-22 14:38:40 -0700</bug_when>
    <thetext>Comment on attachment 169967
Patch

Clearing flags on attachment: 169967

Committed r132138: &lt;http://trac.webkit.org/changeset/132138&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747898</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-22 14:38:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169837</attachid>
            <date>2012-10-22 00:33:06 -0700</date>
            <delta_ts>2012-10-22 08:00:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99964-20121022093145.patch</filename>
            <type>text/plain</type>
            <size>43669</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMDMwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGRlYmFhNTIyMGNhOGZjZDRjZDI0OGRmYTA4NjljODgz
YTU1ZTM3ZC4uNjU4NzUyODE5NzkzZmRhNmM5Y2RiZjk3Nzk4ODg3ZGI0ZGRkYzdlMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcz
IEBACisyMDEyLTEwLTIyICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gaW50cm9kdWNlIFdlYlRhc2sgdG8gdGhlIFRlc3RSdW5uZXIg
bGlicmFyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTk5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5jcHA6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5oOgorICAgICAgICAoRFJURGV2VG9vbHNB
Z2VudDo6dGFza0xpc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERl
dlRvb2xzQ2xpZW50LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRE
ZXZUb29sc0NsaWVudC5oOgorICAgICAgICAoRFJURGV2VG9vbHNDbGllbnQ6OnRhc2tMaXN0KToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcDoKKyAg
ICAgICAgKEludm9rZUNhbGxiYWNrVGFzazo6SW52b2tlQ2FsbGJhY2tUYXNrKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmg6CisgICAgICAgIChEUlRU
ZXN0UnVubmVyOjp0YXNrTGlzdCk6CisgICAgICAgIChEUlRUZXN0UnVubmVyOjpXb3JrUXVldWU6
OnRhc2tMaXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcDoKKyAgICAgICAgKFJUQ1Nlc3Npb25EZXNjcmlwdGlv
blJlcXVlc3RTdWNjZWRlZFRhc2s6OlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RTdWNjZWRl
ZFRhc2spOgorICAgICAgICAoUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdEZhaWxlZFRhc2s6
OlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RGYWlsZWRUYXNrKToKKyAgICAgICAgKFJUQ1N0
YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2s6OlJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2spOgor
ICAgICAgICAoUlRDVm9pZFJlcXVlc3RUYXNrOjpSVENWb2lkUmVxdWVzdFRhc2spOgorICAgICAg
ICAoU3RyaW5nRGF0YVRhc2s6OlN0cmluZ0RhdGFUYXNrKToKKyAgICAgICAgKENoYXJQdHJEYXRh
VGFzazo6Q2hhclB0ckRhdGFUYXNrKToKKyAgICAgICAgKERhdGFDaGFubmVsUmVhZHlTdGF0ZVRh
c2s6OkRhdGFDaGFubmVsUmVhZHlTdGF0ZVRhc2spOgorICAgICAgICAoUlRDUGVlckNvbm5lY3Rp
b25SZWFkeVN0YXRlVGFzazo6UlRDUGVlckNvbm5lY3Rpb25SZWFkeVN0YXRlVGFzayk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlci5oOgorICAgICAgICAoTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcik6CisgICAg
ICAgIChNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjp0YXNrTGlzdCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOjpTcGVlY2hUYXNrOjpT
cGVlY2hUYXNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyLmg6CisgICAgICAgIChNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyOjp0YXNrTGlzdCk6CisgICAgICAgIChNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXpl
ci5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJl
Y29nbml6ZXIuaDoKKyAgICAgICAgKE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyOjp0YXNrTGlzdCk6
CisgICAgICAgIChNb2NrV2ViU3BlZWNoUmVjb2duaXplcik6CisgICAgICAgIChNb2NrV2ViU3Bl
ZWNoUmVjb2duaXplcjo6U3RlcFRhc2s6OlN0ZXBUYXNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUYXNrLmg6IFJlbmFtZWQgZnJvbSBU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UYXNrLmguCisgICAg
ICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRhc2spOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6V2ViVGFzazo6UnVuKToKKyAgICAgICAgKFdlYlRhc2tMaXN0KToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0OjpXZWJUYXNrTGlzdCk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpXZWJUYXNrTGlzdDo6fldlYlRhc2tMaXN0KToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OldlYlRhc2tMaXN0OjpyZWdpc3RlclRhc2spOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKFdl
YlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6S2V5RG93blRhc2s6OktleURv
d25UYXNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9FdmVudFNlbmRlci5oOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6OnRh
c2tMaXN0KToKKyAgICAgICAgKEV2ZW50U2VuZGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UYXNrLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmg6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcDoKKyAgICAgICAgKFRl
c3RTaGVsbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHA6CisgICAgICAgIChVc2VyTWVkaWFSZXF1ZXN0VGFz
azo6VXNlck1lZGlhUmVxdWVzdFRhc2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaDoKKyAgICAgICAgKFdlYlVzZXJNZWRpYUNsaWVu
dE1vY2s6OnRhc2tMaXN0KToKKyAgICAgICAgKFdlYlVzZXJNZWRpYUNsaWVudE1vY2spOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorICAgICAgICAoV2ViVmll
d0hvc3QpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnRhc2tMaXN0KToKKyAgICAgICAgKFdlYlZp
ZXdIb3N0OjpIb3N0TWV0aG9kVGFzazo6SG9zdE1ldGhvZFRhc2spOgorCiAyMDEyLTEwLTIxICBK
b2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gaW50cm9kdWNlIGEgcHVibGljIEFQSSBmb3IgdGhlIFRlc3RSdW5uZXIgbGlicmFyeQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKaW5kZXggN2U3ZDY5YmFkYmY1ZDY4
NDRmOGI4ZTM1ZmMxOThhMmFmMmJjMzQ0ZS4uMTBhZjQyNGYyYmU2NzYzN2JmN2Q4NTg2N2QzNTJm
ZmY5ZjkzOGExOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRy
ZWUuZ3lwaQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBA
IC02Nyw2ICs2Nyw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMv
V2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGVzdERlbGVnYXRlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L1Rlc3RSdW5uZXIvcHVibGljL1dlYkV2ZW50U2VuZGVyLmgnLAorICAgICAgICAgICAgJ2Nocm9t
aXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRhc2suaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
VGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5jcHAn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyQ2hyb21pdW0uaCcsCkBAIC04MCw4ICs4MSw2IEBACiAgICAgICAgICAgICAnY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvR2FtZXBhZENvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9HYW1lcGFkQ29udHJvbGxlci5oJywKLSAgICAgICAgICAgICdj
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UYXNrLmNwcCcsCi0gICAgICAgICAgICAnY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvVGFzay5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwJywKQEAgLTkwLDYgKzg5LDcgQEAKICAgICAg
ICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNw
cCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViRXZlbnRTZW5kZXIu
Y3BwJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUYXNrLmNwcCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMu
Y3BwJywKICAgICAgICAgXSwKICAgICAgICAgJ3Rlc3RfcGx1Z2luX2ZpbGVzJzogWwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmNwcAppbmRl
eCBiNjY1OWE0N2ZjODAzYWVhYWNiNzEyZTNmYmUzMTM5OTY5NjRjN2QzLi4xOGFlODdlZWZlMzUx
Yzc2Y2ZiMGJkMDU0ZjNmYzFjMjcyNDY0ZGE1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmNwcApAQCAtMzksNiArMzksNyBAQAogI2lu
Y2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lcjsKIAogRFJURGV2VG9vbHNB
Z2VudDo6RFJURGV2VG9vbHNBZ2VudCgpCiAgICAgOiBtX2RydERldlRvb2xzQ2xpZW50KDApCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmgKaW5k
ZXggZDA2NmI3YTcxOGZkMjg4ZWIzOWUyNjViY2NmMTk2NTZmZDg2OGU5Ny4uYzEzYWVmN2ZhMDA4
OTI5OTc2M2RmY2M3Yzc5YWUwYzYyNzYxYjhmZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0RSVERldlRvb2xzQWdlbnQuaApAQCAtMzEsOCArMzEsOCBAQAogI2lmbmRl
ZiBEUlREZXZUb29sc0FnZW50X2gKICNkZWZpbmUgRFJURGV2VG9vbHNBZ2VudF9oCiAKLSNpbmNs
dWRlICJUZXN0UnVubmVyL3NyYy9UYXNrLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudENs
aWVudC5oIgorI2luY2x1ZGUgIldlYlRhc2suaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJp
bmcuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgpAQCAtNjksMjMgKzY5LDIzIEBAIHB1YmxpYzoKICAgICB2b2lkIGRldGFjaCgpOwogCiAg
ICAgYm9vbCBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGxvbmcgY2FsbElELCBjb25zdCBzdGQ6OnN0
cmluZyYgc2NyaXB0KTsKLSAgICBUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNr
TGlzdDsgfQorICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0
dXJuICZtX3Rhc2tMaXN0OyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjYWxsKGNvbnN0IFdlYktp
dDo6V2ViU3RyaW5nJiBhcmdzKTsKICAgICBXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnQqIHdlYkRl
dlRvb2xzQWdlbnQoKTsKIAotICAgIGNsYXNzIEFzeW5jQ2FsbFRhc2s6IHB1YmxpYyBNZXRob2RU
YXNrPERSVERldlRvb2xzQWdlbnQ+IHsKKyAgICBjbGFzcyBBc3luY0NhbGxUYXNrOiBwdWJsaWMg
V2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazxEUlREZXZUb29sc0FnZW50PiB7CiAgICAgcHVi
bGljOgogICAgICAgICBBc3luY0NhbGxUYXNrKERSVERldlRvb2xzQWdlbnQqIG9iamVjdCwgY29u
c3QgV2ViS2l0OjpXZWJTdHJpbmcmIGFyZ3MpCi0gICAgICAgICAgICA6IE1ldGhvZFRhc2s8RFJU
RGV2VG9vbHNBZ2VudD4ob2JqZWN0KSwgbV9hcmdzKGFyZ3MpIHsgfQorICAgICAgICAgICAgOiBX
ZWJUZXN0UnVubmVyOjpXZWJNZXRob2RUYXNrPERSVERldlRvb2xzQWdlbnQ+KG9iamVjdCksIG1f
YXJncyhhcmdzKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSB7IG1fb2Jq
ZWN0LT5jYWxsKG1fYXJncyk7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIFdlYktpdDo6V2Vi
U3RyaW5nIG1fYXJnczsKICAgICB9OwogCi0gICAgVGFza0xpc3QgbV90YXNrTGlzdDsKKyAgICBX
ZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwogICAgIERSVERldlRvb2xzQ2xp
ZW50KiBtX2RydERldlRvb2xzQ2xpZW50OwogICAgIGludCBtX3JvdXRpbmdJRDsKICAgICBXZWJL
aXQ6OldlYlZpZXcqIG1fd2ViVmlldzsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmNwcAppbmRleCBhN2ZjNGQwNDg2ZjI4ZDMyYjFlZWZk
NDRhMGZmNzQ2Y2E0ZWFmOTU1Li45YWFmMmMyMWNkNmMzNDFiY2VmYmYyMjZjMmI4YWU5Y2YxMWE0
MDYzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29s
c0NsaWVudC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9v
bHNDbGllbnQuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJUZXN0UnVu
bmVyOwogCiBEUlREZXZUb29sc0NsaWVudDo6RFJURGV2VG9vbHNDbGllbnQoRFJURGV2VG9vbHNB
Z2VudCogYWdlbnQsIFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2xp
ZW50LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NsaWVudC5o
CmluZGV4IGVhZDM5NjM3OWI0YmU3ZTIxODkyNzUyYWFhMzhiMTkyNTlkOWY2NzEuLjVmNDg2ZGRk
MGQ1OWNhM2JmYTlmNzgxNTY4OTgzNDAzYzUyN2JiNTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmgKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuaApAQCAtMzEsOCArMzEsOCBAQAog
I2lmbmRlZiBEUlREZXZUb29sc0NsaWVudF9oCiAjZGVmaW5lIERSVERldlRvb2xzQ2xpZW50X2gK
IAotI2luY2x1ZGUgIlRlc3RSdW5uZXIvc3JjL1Rhc2suaCIKICNpbmNsdWRlICJXZWJEZXZUb29s
c0Zyb250ZW5kQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViVGFzay5oIgogI2luY2x1ZGUgInBsYXRm
b3JtL1dlYlN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KQEAgLTY0LDIxICs2NCwyMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhc3lu
Y0NhbGwoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGFyZ3MpOwogCiAgICAgdm9pZCBhbGxNZXNz
YWdlc1Byb2Nlc3NlZCgpOwotICAgIFRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rh
c2tMaXN0OyB9CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QqIHRhc2tMaXN0KCkgeyBy
ZXR1cm4gJm1fdGFza0xpc3Q7IH0KIAogIHByaXZhdGU6CiAgICAgdm9pZCBjYWxsKGNvbnN0IFdl
YktpdDo6V2ViU3RyaW5nJiBhcmdzKTsKLSAgICBjbGFzcyBBc3luY0NhbGxUYXNrOiBwdWJsaWMg
TWV0aG9kVGFzazxEUlREZXZUb29sc0NsaWVudD4geworICAgIGNsYXNzIEFzeW5jQ2FsbFRhc2s6
IHB1YmxpYyBXZWJUZXN0UnVubmVyOjpXZWJNZXRob2RUYXNrPERSVERldlRvb2xzQ2xpZW50PiB7
CiAgICAgcHVibGljOgogICAgICAgICBBc3luY0NhbGxUYXNrKERSVERldlRvb2xzQ2xpZW50KiBv
YmplY3QsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBhcmdzKQotICAgICAgICAgICAgOiBNZXRo
b2RUYXNrPERSVERldlRvb2xzQ2xpZW50PihvYmplY3QpLCBtX2FyZ3MoYXJncykgeyB9CisgICAg
ICAgICAgICA6IFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8RFJURGV2VG9vbHNDbGllbnQ+
KG9iamVjdCksIG1fYXJncyhhcmdzKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFs
aWQoKSB7IG1fb2JqZWN0LT5jYWxsKG1fYXJncyk7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAg
IFdlYktpdDo6V2ViU3RyaW5nIG1fYXJnczsKICAgICB9OwogCi0gICAgVGFza0xpc3QgbV90YXNr
TGlzdDsKKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwogICAgIFdl
YktpdDo6V2ViVmlldyogbV93ZWJWaWV3OwogICAgIERSVERldlRvb2xzQWdlbnQqIG1fZHJ0RGV2
VG9vbHNBZ2VudDsKICAgICBXVEY6Ok93blB0cjxXZWJLaXQ6OldlYkRldlRvb2xzRnJvbnRlbmQ+
IG1fd2ViRGV2VG9vbHNGcm9udGVuZDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vRFJUVGVzdFJ1bm5lci5jcHAKaW5kZXggMDgyNTk3YTExN2I5MmQ1OTcyODA3ZTlmMGUzYTM3
MjM0ZWQ5YzJhMy4uNDc4ZGQ5YTYzZmZkZDVhZWViMzBhODRmNzhiMTBiYjVkZGFkNzdlOSAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKQEAg
LTgzLDYgKzgzLDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXI7CiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCiBjbGFzcyBFbXB0eVdlYkRlbGl2ZXJlZEludGVudENsaWVudCA6IHB1YmxpYyBX
ZWJLaXQ6OldlYkRlbGl2ZXJlZEludGVudENsaWVudCB7CkBAIC0yMTE0LDEwICsyMTE1LDEwIEBA
IHZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0VGV4dFN1YnBpeGVsUG9zaXRpb25pbmcoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLWNs
YXNzIEludm9rZUNhbGxiYWNrVGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPERSVFRlc3RSdW5uZXI+
IHsKK2NsYXNzIEludm9rZUNhbGxiYWNrVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPERSVFRl
c3RSdW5uZXI+IHsKIHB1YmxpYzoKICAgICBJbnZva2VDYWxsYmFja1Rhc2soRFJUVGVzdFJ1bm5l
ciogb2JqZWN0LCBQYXNzT3duQXJyYXlQdHI8Q3BwVmFyaWFudD4gY2FsbGJhY2tBcmd1bWVudHMs
IHVpbnQzMl90IG51bWJlck9mQXJndW1lbnRzKQotICAgICAgICA6IE1ldGhvZFRhc2s8RFJUVGVz
dFJ1bm5lcj4ob2JqZWN0KQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8RFJUVGVzdFJ1bm5lcj4o
b2JqZWN0KQogICAgICAgICAsIG1fY2FsbGJhY2tBcmd1bWVudHMoY2FsbGJhY2tBcmd1bWVudHMp
CiAgICAgICAgICwgbV9udW1iZXJPZkFyZ3VtZW50cyhudW1iZXJPZkFyZ3VtZW50cykKICAgICB7
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVy
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmgKaW5kZXgg
NjBhMDM4YTI3ZGQ4OTRjYTFkNDQ3MTA5YmViYWQ3OGFlMmZlMDYxOS4uZWM0Nzc4ZmQ1YzQ2Zjhm
MzI4NzU4YTE1N2EzMjgyMTQ1NGI1YjIyMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0RSVFRlc3RSdW5uZXIuaApAQCAtNDMsNiArNDMsNyBAQAogI2RlZmluZSBEUlRUZXN0
UnVubmVyX2gKIAogI2luY2x1ZGUgIlRlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaCIKKyNpbmNs
dWRlICJXZWJUYXNrLmgiCiAKIGNsYXNzIFRlc3RTaGVsbDsKIApAQCAtNTExLDcgKzUxMiw3IEBA
IHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBib29sIHJ1bihUZXN0U2hlbGwqKSA9IDA7CiAgICAg
fTsKIAotICAgIFRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9Cisg
ICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFz
a0xpc3Q7IH0KIAogICAgIGJvb2wgc2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVV
bmxvYWQoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVm
b3JlVW5sb2FkOyB9CiAKQEAgLTUzNCwxNyArNTM1LDE3IEBAIHByaXZhdGU6CiAKICAgICAgICAg
dm9pZCBzZXRGcm96ZW4oYm9vbCBmcm96ZW4pIHsgbV9mcm96ZW4gPSBmcm96ZW47IH0KICAgICAg
ICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gbV9xdWV1ZS5pc0VtcHR5KCk7IH0KLSAgICAgICAg
VGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAgICAgICAgV2Vi
VGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7
IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgcHJvY2Vzc1dvcmsoKTsKLSAgICAgICAg
Y2xhc3MgV29ya1F1ZXVlVGFzazogcHVibGljIE1ldGhvZFRhc2s8V29ya1F1ZXVlPiB7CisgICAg
ICAgIGNsYXNzIFdvcmtRdWV1ZVRhc2s6IHB1YmxpYyBXZWJUZXN0UnVubmVyOjpXZWJNZXRob2RU
YXNrPFdvcmtRdWV1ZT4gewogICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBXb3JrUXVldWVU
YXNrKFdvcmtRdWV1ZSogb2JqZWN0KTogTWV0aG9kVGFzazxXb3JrUXVldWU+KG9iamVjdCkgeyB9
CisgICAgICAgICAgICBXb3JrUXVldWVUYXNrKFdvcmtRdWV1ZSogb2JqZWN0KTogV2ViVGVzdFJ1
bm5lcjo6V2ViTWV0aG9kVGFzazxXb3JrUXVldWU+KG9iamVjdCkgeyB9CiAgICAgICAgICAgICB2
aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIHsgbV9vYmplY3QtPnByb2Nlc3NXb3JrKCk7IH0KICAg
ICAgICAgfTsKIAotICAgICAgICBUYXNrTGlzdCBtX3Rhc2tMaXN0OworICAgICAgICBXZWJUZXN0
UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwogICAgICAgICBEZXF1ZTxXb3JrSXRlbSo+
IG1fcXVldWU7CiAgICAgICAgIGJvb2wgbV9mcm96ZW47CiAgICAgICAgIERSVFRlc3RSdW5uZXIq
IG1fY29udHJvbGxlcjsKQEAgLTU1OCw5ICs1NTksOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBs
b2dFcnJvclRvQ29uc29sZShjb25zdCBzdGQ6OnN0cmluZyYpOwogICAgIHZvaWQgY29tcGxldGVO
b3RpZnlEb25lKGJvb2wgaXNUaW1lb3V0KTsKLSAgICBjbGFzcyBOb3RpZnlEb25lVGltZWRPdXRU
YXNrOiBwdWJsaWMgTWV0aG9kVGFzazxEUlRUZXN0UnVubmVyPiB7CisgICAgY2xhc3MgTm90aWZ5
RG9uZVRpbWVkT3V0VGFzazogcHVibGljIFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8RFJU
VGVzdFJ1bm5lcj4gewogICAgIHB1YmxpYzoKLSAgICAgICAgTm90aWZ5RG9uZVRpbWVkT3V0VGFz
ayhEUlRUZXN0UnVubmVyKiBvYmplY3QpOiBNZXRob2RUYXNrPERSVFRlc3RSdW5uZXI+KG9iamVj
dCkgeyB9CisgICAgICAgIE5vdGlmeURvbmVUaW1lZE91dFRhc2soRFJUVGVzdFJ1bm5lciogb2Jq
ZWN0KTogV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazxEUlRUZXN0UnVubmVyPihvYmplY3Qp
IHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIHsgbV9vYmplY3QtPmNvbXBs
ZXRlTm90aWZ5RG9uZSh0cnVlKTsgfQogICAgIH07CiAKQEAgLTU3MSw3ICs1NzIsNyBAQCBwcml2
YXRlOgogICAgIGludCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKTsKIAogICAgIC8vIFVzZWQg
Zm9yIHRlc3QgdGltZW91dHMuCi0gICAgVGFza0xpc3QgbV90YXNrTGlzdDsKKyAgICBXZWJUZXN0
UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwogCiAgICAgLy8gTm9uLW93bmluZyBwb2lu
dGVyLiBUaGUgRFJUVGVzdFJ1bm5lciBpcyBvd25lZCBieSB0aGUgaG9zdC4KICAgICBUZXN0U2hl
bGwqIG1fc2hlbGw7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9N
b2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCmluZGV4IGQ2ZTVl
N2YwNWUxMmRiYzcyYjAxMGE3YmQ5MTBlY2QxY2ExZTk1MTMuLjkwZTkzNjgwOTdmMTFkMjEyNWFk
ZDU1OGQ5Mjg2NjdkNjAwN2I1OTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3Bw
CkBAIC00OCwxMSArNDgsMTIgQEAKICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyOwogCi1jbGFz
cyBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0U3VjY2VkZWRUYXNrIDogcHVibGljIE1ldGhv
ZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4geworY2xhc3MgUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uUmVxdWVzdFN1Y2NlZGVkVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPE1v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKIHB1YmxpYzoKICAgICBSVENTZXNzaW9u
RGVzY3JpcHRpb25SZXF1ZXN0U3VjY2VkZWRUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXIqIG9iamVjdCwgY29uc3QgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiByZXN1bHQpCi0gICAgICAgIDog
TWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCisgICAg
ICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmpl
Y3QpCiAgICAgICAgICwgbV9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgICAgICwgbV9yZXN1bHQocmVz
dWx0KQogICAgIHsKQEAgLTY4LDEwICs2OSwxMCBAQCBwcml2YXRlOgogICAgIFdlYlJUQ1Nlc3Np
b25EZXNjcmlwdGlvbiBtX3Jlc3VsdDsKIH07CiAKLWNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlwdGlv
blJlcXVlc3RGYWlsZWRUYXNrIDogcHVibGljIE1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlcj4geworY2xhc3MgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdEZhaWxl
ZFRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyPiB7CiBwdWJsaWM6CiAgICAgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdEZhaWxlZFRh
c2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBXZWJSVENT
ZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0JiByZXF1ZXN0KQotICAgICAgICA6IE1ldGhvZFRhc2s8
TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQorICAgICAgICA6IFdlYk1l
dGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQogICAgICAg
ICAsIG1fcmVxdWVzdChyZXF1ZXN0KQogICAgIHsKICAgICB9CkBAIC04NSwxMCArODYsMTAgQEAg
cHJpdmF0ZToKICAgICBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0IG1fcmVxdWVzdDsK
IH07CiAKLWNsYXNzIFJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2sgOiBwdWJsaWMgTWV0aG9k
VGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CitjbGFzcyBSVENTdGF0c1Jl
cXVlc3RTdWNjZWVkZWRUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlcj4gewogcHVibGljOgogICAgIFJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRl
ZFRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBXZWJL
aXQ6OldlYlJUQ1N0YXRzUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViS2l0OjpXZWJSVENTdGF0
c1Jlc3BvbnNlJiByZXNwb25zZSkKLSAgICAgICAgOiBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKKyAgICAgICAgOiBXZWJNZXRob2RUYXNrPE1vY2tX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKICAgICAgICAgLCBtX3JlcXVlc3Qo
cmVxdWVzdCkKICAgICAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQogICAgIHsKQEAgLTEwNCwx
MCArMTA1LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViS2l0OjpXZWJSVENTdGF0c1Jlc3BvbnNlIG1f
cmVzcG9uc2U7CiB9OwogCi1jbGFzcyBSVENWb2lkUmVxdWVzdFRhc2sgOiBwdWJsaWMgTWV0aG9k
VGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CitjbGFzcyBSVENWb2lkUmVx
dWVzdFRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyPiB7CiBwdWJsaWM6CiAgICAgUlRDVm9pZFJlcXVlc3RUYXNrKE1vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgY29uc3QgV2ViUlRDVm9pZFJlcXVlc3QmIHJlcXVl
c3QsIGJvb2wgc3VjY2VlZGVkKQotICAgICAgICA6IE1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8TW9ja1dl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQogICAgICAgICAsIG1fcmVxdWVzdChy
ZXF1ZXN0KQogICAgICAgICAsIG1fc3VjY2VlZGVkKHN1Y2NlZWRlZCkKICAgICB7CkBAIC0xMjYs
MTAgKzEyNywxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zdWNjZWVkZWQ7CiB9OwogCi1jbGFz
cyBTdHJpbmdEYXRhVGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXI+IHsKK2NsYXNzIFN0cmluZ0RhdGFUYXNrIDogcHVibGljIFdlYk1ldGhvZFRh
c2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4gewogcHVibGljOgogICAgIFN0cmlu
Z0RhdGFUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgY29uc3Qg
V2ViUlRDRGF0YUNoYW5uZWwmIGRhdGFDaGFubmVsLCBjb25zdCBXZWJTdHJpbmcmIGRhdGEpCi0g
ICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmpl
Y3QpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyPihvYmplY3QpCiAgICAgICAgICwgbV9kYXRhQ2hhbm5lbChkYXRhQ2hhbm5lbCkKICAgICAg
ICAgLCBtX2RhdGEoZGF0YSkKICAgICB7CkBAIC0xNDUsMTAgKzE0NiwxMCBAQCBwcml2YXRlOgog
ICAgIFdlYlN0cmluZyBtX2RhdGE7CiB9OwogCi1jbGFzcyBDaGFyUHRyRGF0YVRhc2sgOiBwdWJs
aWMgTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CitjbGFzcyBD
aGFyUHRyRGF0YVRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyPiB7CiBwdWJsaWM6CiAgICAgQ2hhclB0ckRhdGFUYXNrKE1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgY29uc3QgV2ViUlRDRGF0YUNoYW5uZWwmIGRh
dGFDaGFubmVsLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQotICAgICAgICA6IE1l
dGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQorICAgICAg
ICA6IFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0
KQogICAgICAgICAsIG1fZGF0YUNoYW5uZWwoZGF0YUNoYW5uZWwpCiAgICAgICAgICwgbV9sZW5n
dGgobGVuZ3RoKQogICAgIHsKQEAgLTE2OCwxMCArMTY5LDEwIEBAIHByaXZhdGU6CiAgICAgc2l6
ZV90IG1fbGVuZ3RoOwogfTsKIAotY2xhc3MgRGF0YUNoYW5uZWxSZWFkeVN0YXRlVGFzayA6IHB1
YmxpYyBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKK2NsYXNz
IERhdGFDaGFubmVsUmVhZHlTdGF0ZVRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CiBwdWJsaWM6CiAgICAgRGF0YUNoYW5uZWxSZWFk
eVN0YXRlVGFzayhNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIGNvbnN0
IFdlYlJUQ0RhdGFDaGFubmVsJiBkYXRhQ2hhbm5lbCwgV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5
U3RhdGUgc3RhdGUpCi0gICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyPihvYmplY3QpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCiAgICAgICAgICwgbV9kYXRhQ2hhbm5lbChkYXRh
Q2hhbm5lbCkKICAgICAgICAgLCBtX3N0YXRlKHN0YXRlKQogICAgIHsKQEAgLTE4NywxMCArMTg4
LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3RhdGUgbV9zdGF0
ZTsKIH07CiAKLWNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uUmVhZHlTdGF0ZVRhc2sgOiBwdWJsaWMg
TWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CitjbGFzcyBSVENQ
ZWVyQ29ubmVjdGlvblJlYWR5U3RhdGVUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4gewogcHVibGljOgogICAgIFJUQ1BlZXJDb25uZWN0
aW9uUmVhZHlTdGF0ZVRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0
LCBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqIGNsaWVudCwgV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRlIHN0YXRlKQotICAgICAgICA6IE1ldGhv
ZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQorICAgICAgICA6
IFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQog
ICAgICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAgICAgLCBtX3N0YXRlKHN0YXRlKQogICAg
IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAppbmRleCA1ZGRkMmZjNDU1ZTdjZWE4OTQ2
OTU5NGYxODU4OTc3N2IzZmQwNmMzLi5hMTUyMmY0ZmJlNmZlM2I1ZmE0NDIyZDVlZDcwOThmMGIz
MjhhYzA1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCkBAIC0zMyw3ICszMyw3IEBA
CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAiVGVzdFJ1bm5lci9zcmMv
VGFzay5oIgorI2luY2x1ZGUgIldlYlRhc2suaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDRGF0
YUNoYW5uZWwuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oPgpAQCAtNjgs
MTUgKzY4LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoY29uc3Qg
V2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbCYsIGNvbnN0IGNoYXIqLCBzaXplX3QpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZURhdGFDaGFubmVsKGNvbnN0IFdlYktpdDo6V2ViUlRD
RGF0YUNoYW5uZWwmKSBPVkVSUklERTsKIAotICAgIC8vIFRhc2sgcmVsYXRlZCBtZXRob2RzCi0g
ICAgVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAgICAvLyBX
ZWJUYXNrIHJlbGF0ZWQgbWV0aG9kcworICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0KiB0
YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CiAKIHByaXZhdGU6CiAgICAgTW9ja1dl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcigpIHsgfQogCiAgICAgV2ViS2l0OjpXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDbGllbnQqIG1fY2xpZW50OwogICAgIGJvb2wgbV9zdG9wcGVkOwot
ICAgIFRhc2tMaXN0IG1fdGFza0xpc3Q7CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3Qg
bV90YXNrTGlzdDsKICAgICBXZWJLaXQ6OldlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiBtX2xvY2Fs
RGVzY3JpcHRpb247CiAgICAgV2ViS2l0OjpXZWJSVENTZXNzaW9uRGVzY3JpcHRpb24gbV9yZW1v
dGVEZXNjcmlwdGlvbjsKICAgICBpbnQgbV9zdHJlYW1Db3VudDsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJv
bGxlci5jcHAKaW5kZXggMTNjOGZmMWVjNGMxY2RlNTUwNzY2OThkZmNmZTVlODcxMjZhODJlYi4u
ZDdkNTg5MjY0MjcxYjY5MDMyOWZhMjgzZGY3NzdkYWZkMTVjODdmNiAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0
Q29udHJvbGxlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNI
KQogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYlRlc3RSdW5u
ZXI7CiAKIFBhc3NPd25QdHI8TW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlcj4gTW9ja1dlYlNw
ZWVjaElucHV0Q29udHJvbGxlcjo6Y3JlYXRlKFdlYlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3Rl
bmVyKQogewpAQCAtMTgyLDcgKzE4Myw3IEBAIHZvaWQgTW9ja1dlYlNwZWVjaElucHV0Q29udHJv
bGxlcjo6c3BlZWNoVGFza0ZpcmVkKCkKIH0KIAogTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxl
cjo6U3BlZWNoVGFzazo6U3BlZWNoVGFzayhNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBt
b2NrKQotICAgIDogTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyPjo6TWV0
aG9kVGFzayhtb2NrKQorICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyPjo6V2ViTWV0aG9kVGFzayhtb2NrKQogewogfQogCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
LmgKaW5kZXggNjQ5NGE3ZjI1YmFiYjNjYzNhOTE3YjU5ZjUwZDhhOWQ4NzljYjEyYy4uMDc1ZjI1
NDFmOWEyODJhY2I0Y2Q5YzQ5ZDIzMzJmYWNiMjJmYjM3OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXIuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKIAotI2lu
Y2x1ZGUgIlRlc3RSdW5uZXIvc3JjL1Rhc2suaCIKKyNpbmNsdWRlICJXZWJUYXNrLmgiCiAjaW5j
bHVkZSAicGxhdGZvcm0vV2ViUmVjdC5oIgogI2luY2x1ZGUgIldlYlNwZWVjaElucHV0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIldlYlNwZWVjaElucHV0UmVzdWx0LmgiCkBAIC01OCwxMyArNTgs
MTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQgcmVx
dWVzdElkKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFJlY29yZGluZyhpbnQgcmVx
dWVzdElkKSBPVkVSUklERTsKIAotICAgIFRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZt
X3Rhc2tMaXN0OyB9CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QqIHRhc2tMaXN0KCkg
eyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KIAogcHJpdmF0ZToKICAgICBNb2NrV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0ZW5lciopOwogICAgIHZvaWQg
c3BlZWNoVGFza0ZpcmVkKCk7CiAKLSAgICBjbGFzcyBTcGVlY2hUYXNrIDogcHVibGljIE1ldGhv
ZFRhc2s8TW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlcj4geworICAgIGNsYXNzIFNwZWVjaFRh
c2sgOiBwdWJsaWMgV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyPiB7CiAgICAgcHVibGljOgogICAgICAgICBTcGVlY2hUYXNrKE1vY2tXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXIqKTsKICAgICAgICAgdm9pZCBzdG9wKCk7CkBAIC03NSw3ICs3
NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXIqIG1f
bGlzdGVuZXI7CiAKLSAgICBUYXNrTGlzdCBtX3Rhc2tMaXN0OworICAgIFdlYlRlc3RSdW5uZXI6
OldlYlRhc2tMaXN0IG1fdGFza0xpc3Q7CiAgICAgU3BlZWNoVGFzayogbV9zcGVlY2hUYXNrOwog
CiAgICAgYm9vbCBtX3JlY29yZGluZzsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmNwcAppbmRleCA1MDJhZGRlYTky
NTYyZDRjNzJhMDJkZmZjZThlNGYxYTEzYWUxNzUyLi4xYjViMWNhODk4NTk2ODc1MWE5YTdkYzM5
NzZiZDRhN2Y2ZmEwZDk5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiV2ViU3BlZWNoUmVjb2duaXplckNsaWVudC5oIgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXI7CiAKIG5hbWVzcGFjZSB7CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hS
ZWNvZ25pemVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNo
UmVjb2duaXplci5oCmluZGV4IDRjYzA0NTY2OWZhZjAxNTI4YTZkNWY1YjVmYjUyYjZkMWRlMjJi
ZGQuLjQxOWM1ZTUwNDlmYWFmOWZiMjVhNjExZWM3MTQwMDk0MDdkY2Y0ZjYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmgK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6
ZXIuaApAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKIAot
I2luY2x1ZGUgIlRlc3RSdW5uZXIvc3JjL1Rhc2suaCIKICNpbmNsdWRlICJXZWJTcGVlY2hSZWNv
Z25pemVyLmgiCisjaW5jbHVkZSAiV2ViVGFzay5oIgogI2luY2x1ZGUgPHd0Zi9Db21waWxlci5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpA
QCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgLy8gTWV0aG9kcyBhY2Nlc3NlZCBmcm9tIFRh
c2sgb2JqZWN0czoKICAgICBXZWJLaXQ6OldlYlNwZWVjaFJlY29nbml6ZXJDbGllbnQqIGNsaWVu
dCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CiAgICAgV2ViS2l0OjpXZWJTcGVlY2hSZWNvZ25pdGlv
bkhhbmRsZSYgaGFuZGxlKCkgeyByZXR1cm4gbV9oYW5kbGU7IH0KLSAgICBUYXNrTGlzdCogdGFz
a0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQorICAgIFdlYlRlc3RSdW5uZXI6OldlYlRh
c2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CiAKICAgICBjbGFzcyBU
YXNrIHsKICAgICBwdWJsaWM6CkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
dGFydFRhc2tRdWV1ZSgpOwogICAgIHZvaWQgY2xlYXJUYXNrUXVldWUoKTsKIAotICAgIFRhc2tM
aXN0IG1fdGFza0xpc3Q7CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QgbV90YXNrTGlz
dDsKICAgICBXZWJLaXQ6OldlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlIG1faGFuZGxlOwogICAg
IFdlYktpdDo6V2ViU3BlZWNoUmVjb2duaXplckNsaWVudCogbV9jbGllbnQ7CiAgICAgVmVjdG9y
PFdlYktpdDo6V2ViU3RyaW5nPiBtX21vY2tUcmFuc2NyaXB0czsKQEAgLTg2LDkgKzg2LDkgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fdGFza1F1ZXVlUnVubmluZzsKIAogICAgIC8vIFRhc2sgZm9y
IHN0ZXBwaW5nIHRoZSBxdWV1ZS4KLSAgICBjbGFzcyBTdGVwVGFzayA6IHB1YmxpYyBNZXRob2RU
YXNrPE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyPiB7CisgICAgY2xhc3MgU3RlcFRhc2sgOiBwdWJs
aWMgV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoUmVjb2duaXplcj4g
ewogICAgIHB1YmxpYzoKLSAgICAgICAgU3RlcFRhc2soTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIq
IG9iamVjdCkgOiBNZXRob2RUYXNrPE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyPihvYmplY3QpIHsg
fQorICAgICAgICBTdGVwVGFzayhNb2NrV2ViU3BlZWNoUmVjb2duaXplciogb2JqZWN0KSA6IFdl
YlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8TW9ja1dlYlNwZWVjaFJlY29nbml6ZXI+KG9iamVj
dCkgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgT1ZFUlJJREU7CiAgICAg
fTsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUYXNrLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJUYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDhkN2ZhZDk4MzJiOGYyNzg3YzRh
NDg3ZjFiYmY1YWM1OTJlZmU5MAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRhc2suaApAQCAtMCwwICsxLDEwMCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViVGFza19oCisjZGVmaW5lIFdlYlRhc2tfaAorCisjaW5jbHVkZSAid2Via2l0
L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKKworI2luY2x1ZGUgPHZlY3Rvcj4KKworbmFtZXNw
YWNlIFdlYlRlc3RSdW5uZXIgeworCitjbGFzcyBXZWJUYXNrTGlzdDsKKworLy8gV2ViVGFzayBy
ZXByZXNlbnRzIGEgdGFzayB3aGljaCBjYW4gcnVuIGJ5IHBvc3RUYXNrKCkgb3IgcG9zdERlbGF5
ZWRUYXNrKCkuCisvLyBpdCBpcyBuYW1lZCAiV2ViVGFzayIsIG5vdCAiVGFzayIsIHRvIGF2b2lk
IGNvbmZsaXN0IHdpdGggYmFzZS90YXNrLmguCitjbGFzcyBXZWJUYXNrIDogcHVibGljIHdlYmtp
dF9zdXBwb3J0OjpUYXNrQWRhcHRvciB7CitwdWJsaWM6CisgICAgV2ViVGFzayhXZWJUYXNrTGlz
dCopOworICAgIC8vIFRoZSBtYWluIGNvZGUgb2YgdGhpcyB0YXNrLgorICAgIC8vIEFuIGltcGxl
bWVudGF0aW9uIG9mIHJ1bigpIHNob3VsZCByZXR1cm4gaW1tZWRpYXRlbHkgaWYgY2FuY2VsKCkg
d2FzIGNhbGxlZC4KKyAgICB2aXJ0dWFsIHZvaWQgcnVuKCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjYW5jZWwoKSA9IDA7CisgICAgdmlydHVhbCB+V2ViVGFzaygpOworCitwcml2YXRlOgorICAg
IHZpcnR1YWwgdm9pZCBSdW4oKSB7IHJ1bigpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBXZWJUYXNr
TGlzdCogbV90YXNrTGlzdDsKK307CisKK2NsYXNzIFdlYlRhc2tMaXN0IHsKK3B1YmxpYzoKKyAg
ICBXZWJUYXNrTGlzdCgpIHsgfQorICAgIH5XZWJUYXNrTGlzdCgpIHsgcmV2b2tlQWxsKCk7IH0K
KyAgICB2b2lkIHJlZ2lzdGVyVGFzayhXZWJUYXNrKiB0YXNrKSB7IG1fdGFza3MucHVzaF9iYWNr
KHRhc2spOyB9CisgICAgdm9pZCB1bnJlZ2lzdGVyVGFzayhXZWJUYXNrKik7CisgICAgdm9pZCBy
ZXZva2VBbGwoKTsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnZlY3RvcjxXZWJUYXNrKj4gbV90YXNr
czsKK307CisKKy8vIEEgdGFzayBjb250YWluaW5nIGFuIG9iamVjdCBwb2ludGVyIG9mIGNsYXNz
IFQuIElzIGlzIHN1cHBvc2VkIHRoYXQKKy8vIHJ1bmlmVmFsaWQoKSBjYWxscyBhIG1lbWJlciBm
dW5jdGlvbiBvZiB0aGUgb2JqZWN0IHBvaW50ZXIuCisvLyBDbGFzcyBUIG11c3QgaGF2ZSAiV2Vi
VGFza0xpc3QqIHRhc2tMaXN0KCkiLgordGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgV2ViTWV0aG9k
VGFzazogcHVibGljIFdlYlRhc2sgeworcHVibGljOgorICAgIFdlYk1ldGhvZFRhc2soVCogb2Jq
ZWN0KTogV2ViVGFzayhvYmplY3QtPnRhc2tMaXN0KCkpLCBtX29iamVjdChvYmplY3QpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgaWYgKG1fb2JqZWN0KQorICAg
ICAgICAgICAgcnVuSWZWYWxpZCgpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkK
KyAgICB7CisgICAgICAgIG1fb2JqZWN0ID0gMDsKKyAgICAgICAgbV90YXNrTGlzdC0+dW5yZWdp
c3RlclRhc2sodGhpcyk7CisgICAgICAgIG1fdGFza0xpc3QgPSAwOworICAgIH0KKyAgICB2aXJ0
dWFsIHZvaWQgcnVuSWZWYWxpZCgpID0gMDsKKworcHJvdGVjdGVkOgorICAgIFQqIG1fb2JqZWN0
OworfTsKKwordm9pZCBwb3N0VGFzayhXZWJUYXNrKik7Cit2b2lkIHBvc3REZWxheWVkVGFzayhX
ZWJUYXNrKiwgaW50NjRfdCBtcyk7CisKK30KKworI2VuZGlmIC8vIFdlYlRhc2tfaApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRT
ZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
RXZlbnRTZW5kZXIuY3BwCmluZGV4IDMxMGFlNmM0OGJkNGU4ZmYzNjkxN2FmODIzMTBkNjlmZTVm
MWE0OGQuLmRlYjhiYTcwZjBjMjk4YzU2YTY2ZTU2NjVjNDJkNDM4NDQ3ZDRkMTYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2Vu
ZGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9FdmVudFNlbmRlci5jcHAKQEAgLTg1NCwyMCArODU0LDIwIEBAIHZvaWQgRXZlbnRTZW5kZXI6
OmNvbnRleHRDbGljayhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFu
dCogcmVzCiAgICAgcmVzdWx0LT5zZXQoV2ViQmluZGluZ3M6Om1ha2VTdHJpbmdBcnJheShtYWtl
TWVudUl0ZW1TdHJpbmdzRm9yKGxhc3RDb250ZXh0TWVudSwgbV9kZWxlZ2F0ZSkpKTsKIH0KIAot
Y2xhc3MgTW91c2VEb3duVGFzazogcHVibGljIE1ldGhvZFRhc2s8RXZlbnRTZW5kZXI+IHsKK2Ns
YXNzIE1vdXNlRG93blRhc2s6IHB1YmxpYyBXZWJNZXRob2RUYXNrPEV2ZW50U2VuZGVyPiB7CiBw
dWJsaWM6CiAgICAgTW91c2VEb3duVGFzayhFdmVudFNlbmRlciogb2JqLCBjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZykKLSAgICAgICAgOiBNZXRob2RUYXNrPEV2ZW50U2VuZGVyPihvYmopLCBt
X2FyZ3VtZW50cyhhcmcpIHsgfQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8RXZlbnRTZW5kZXI+
KG9iaiksIG1fYXJndW1lbnRzKGFyZykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQo
KSB7IG1fb2JqZWN0LT5tb3VzZURvd24obV9hcmd1bWVudHMsIDApOyB9CiAKIHByaXZhdGU6CiAg
ICAgQ3BwQXJndW1lbnRMaXN0IG1fYXJndW1lbnRzOwogfTsKIAotY2xhc3MgTW91c2VVcFRhc2s6
IHB1YmxpYyBNZXRob2RUYXNrPEV2ZW50U2VuZGVyPiB7CitjbGFzcyBNb3VzZVVwVGFzazogcHVi
bGljIFdlYk1ldGhvZFRhc2s8RXZlbnRTZW5kZXI+IHsKIHB1YmxpYzoKICAgICBNb3VzZVVwVGFz
ayhFdmVudFNlbmRlciogb2JqLCBjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZykKLSAgICAgICAg
OiBNZXRob2RUYXNrPEV2ZW50U2VuZGVyPihvYmopLCBtX2FyZ3VtZW50cyhhcmcpIHsgfQorICAg
ICAgICA6IFdlYk1ldGhvZFRhc2s8RXZlbnRTZW5kZXI+KG9iaiksIG1fYXJndW1lbnRzKGFyZykg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSB7IG1fb2JqZWN0LT5tb3VzZVVwKG1f
YXJndW1lbnRzLCAwKTsgfQogCiBwcml2YXRlOgpAQCAtODgxLDEwICs4ODEsMTAgQEAgdm9pZCBF
dmVudFNlbmRlcjo6c2NoZWR1bGVBc3luY2hyb25vdXNDbGljayhjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3AKICAgICBwb3N0VGFzayhuZXcgTW91c2VVcFRhc2sodGhpcywgYXJn
dW1lbnRzKSk7CiB9CiAKLWNsYXNzIEtleURvd25UYXNrIDogcHVibGljIE1ldGhvZFRhc2s8RXZl
bnRTZW5kZXI+IHsKK2NsYXNzIEtleURvd25UYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8RXZl
bnRTZW5kZXI+IHsKIHB1YmxpYzoKICAgICBLZXlEb3duVGFzayhFdmVudFNlbmRlciogb2JqLCBj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZykKLSAgICAgICAgOiBNZXRob2RUYXNrPEV2ZW50U2Vu
ZGVyPihvYmopLCBtX2FyZ3VtZW50cyhhcmcpIHsgfQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8
RXZlbnRTZW5kZXI+KG9iaiksIG1fYXJndW1lbnRzKGFyZykgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHJ1bklmVmFsaWQoKSB7IG1fb2JqZWN0LT5rZXlEb3duKG1fYXJndW1lbnRzLCAwKTsgfQogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvRXZlbnRTZW5kZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmgKaW5kZXggNjVkZmNjYjhjMTU1ZTI1NDg4Mjg2ODYx
MmJhODIyYzQwMWRlYTExOS4uZDA3ZTE0Y2M2ZjJkMDY3NDQ5OWNkZDdkMjg5YmRiMjRmYmU2NjZi
MSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvRXZlbnRTZW5kZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9FdmVudFNlbmRlci5oCkBAIC0zOCw5ICszOCw5IEBACiAjZGVmaW5lIEV2ZW50
U2VuZGVyX2gKIAogI2luY2x1ZGUgIkNwcEJvdW5kQ2xhc3MuaCIKLSNpbmNsdWRlICJUYXNrLmgi
CiAjaW5jbHVkZSAiV2ViRHJhZ09wZXJhdGlvbi5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnQu
aCIKKyNpbmNsdWRlICJXZWJUYXNrLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIK
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMzEsNyArMTMxLDcgQEAgcHVibGljOgogICAgIENw
cFZhcmlhbnQgd21TeXNEZWFkQ2hhcjsKICNlbmRpZgogCi0gICAgVGFza0xpc3QqIHRhc2tMaXN0
KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAgICBXZWJUYXNrTGlzdCogdGFza0xpc3QoKSB7
IHJldHVybiAmbV90YXNrTGlzdDsgfQogCiBwcml2YXRlOgogICAgIFdlYktpdDo6V2ViVmlldyog
d2VidmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQpAQCAtMTY1LDcgKzE2NSw3IEBAIHByaXZh
dGU6CiAgICAgLy8gSGFuZGxlIGEgcmVxdWVzdCB0byBzZW5kIGEgd2hlZWwgZXZlbnQuCiAgICAg
dm9pZCBoYW5kbGVNb3VzZVdoZWVsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
LCBib29sIGNvbnRpbnVvdXMpOwogCi0gICAgVGFza0xpc3QgbV90YXNrTGlzdDsKKyAgICBXZWJU
YXNrTGlzdCBtX3Rhc2tMaXN0OwogCiAgICAgVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRlOwogICAg
IFdlYktpdDo6V2ViVmlldyogbV93ZWJWaWV3OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGFzay5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UYXNrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDgwYmVlZjM0OTkzN2Q2MzU0MGRlZmE5MDY1MzFmNjEwOGQ3NWE1MS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UYXNrLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGFzay5oIgotCi0j
aW5jbHVkZSAiV2ViS2l0LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBw
b3J0LmgiCi0KLVdlYlRhc2s6OldlYlRhc2soVGFza0xpc3QqIGxpc3QpCi0gICAgOiBtX3Rhc2tM
aXN0KGxpc3QpCi17Ci0gICAgbV90YXNrTGlzdC0+cmVnaXN0ZXJUYXNrKHRoaXMpOwotfQotCi1X
ZWJUYXNrOjp+V2ViVGFzaygpCi17Ci0gICAgaWYgKG1fdGFza0xpc3QpCi0gICAgICAgIG1fdGFz
a0xpc3QtPnVucmVnaXN0ZXJUYXNrKHRoaXMpOwotfQotCi12b2lkIFRhc2tMaXN0Ojp1bnJlZ2lz
dGVyVGFzayhXZWJUYXNrKiB0YXNrKQotewotICAgIHNpemVfdCBpbmRleCA9IG1fdGFza3MuZmlu
ZCh0YXNrKTsKLSAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCi0gICAgICAgIG1fdGFza3MucmVt
b3ZlKGluZGV4KTsKLX0KLQotdm9pZCBUYXNrTGlzdDo6cmV2b2tlQWxsKCkKLXsKLSAgICB3aGls
ZSAoIW1fdGFza3MuaXNFbXB0eSgpKQotICAgICAgICBtX3Rhc2tzWzBdLT5jYW5jZWwoKTsKLX0K
LQotc3RhdGljIHZvaWQgaW52b2tlVGFzayh2b2lkKiBjb250ZXh0KQotewotICAgIFdlYlRhc2sq
IHRhc2sgPSBzdGF0aWNfY2FzdDxXZWJUYXNrKj4oY29udGV4dCk7Ci0gICAgdGFzay0+cnVuKCk7
Ci0gICAgZGVsZXRlIHRhc2s7Ci19Ci0KLXZvaWQgcG9zdFRhc2soV2ViVGFzayogdGFzaykKLXsK
LSAgICBXZWJLaXQ6OndlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jYWxsT25NYWluVGhyZWFkKGlu
dm9rZVRhc2ssIHN0YXRpY19jYXN0PHZvaWQqPih0YXNrKSk7Ci19Ci0KLXZvaWQgcG9zdERlbGF5
ZWRUYXNrKFdlYlRhc2sqIHRhc2ssIGludDY0X3QgbXMpCi17Ci0gICAgd2Via2l0X3N1cHBvcnQ6
OlBvc3REZWxheWVkVGFzayh0YXNrLCBtcyk7Ci19Ci0KLQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGFzay5oIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGFzay5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwYjMyYzQ3MmIyNzUwNGU1ZmI2MDhkNmJlNDAxZmRhNjg4MGI5NzQwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rhc2suaAorKysgL2Rldi9udWxsCkBA
IC0xLDk2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFRhc2tfaAotI2RlZmluZSBUYXNrX2gKLQotI2luY2x1ZGUg
IndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotY2xhc3MgVGFza0xpc3Q7Ci0KLS8vIFdlYlRh
c2sgcmVwcmVzZW50cyBhIHRhc2sgd2hpY2ggY2FuIHJ1biBieSBwb3N0VGFzaygpIG9yIHBvc3RE
ZWxheWVkVGFzaygpLgotLy8gaXQgaXMgbmFtZWQgIldlYlRhc2siLCBub3QgIlRhc2siLCB0byBh
dm9pZCBjb25mbGlzdCB3aXRoIGJhc2UvdGFzay5oLgotY2xhc3MgV2ViVGFzayA6IHB1YmxpYyB3
ZWJraXRfc3VwcG9ydDo6VGFza0FkYXB0b3IgewotcHVibGljOgotICAgIFdlYlRhc2soVGFza0xp
c3QqKTsKLSAgICAvLyBUaGUgbWFpbiBjb2RlIG9mIHRoaXMgdGFzay4KLSAgICAvLyBBbiBpbXBs
ZW1lbnRhdGlvbiBvZiBydW4oKSBzaG91bGQgcmV0dXJuIGltbWVkaWF0ZWx5IGlmIGNhbmNlbCgp
IHdhcyBjYWxsZWQuCi0gICAgdmlydHVhbCB2b2lkIHJ1bigpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsKCkgPSAwOwotICAgIHZpcnR1YWwgfldlYlRhc2soKTsKLQotcHJpdmF0ZToKLSAg
ICB2aXJ0dWFsIHZvaWQgUnVuKCkgeyBydW4oKTsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgVGFza0xp
c3QqIG1fdGFza0xpc3Q7Ci19OwotCi1jbGFzcyBUYXNrTGlzdCB7Ci1wdWJsaWM6Ci0gICAgVGFz
a0xpc3QoKSB7IH0KLSAgICB+VGFza0xpc3QoKSB7IHJldm9rZUFsbCgpOyB9Ci0gICAgdm9pZCBy
ZWdpc3RlclRhc2soV2ViVGFzayogdGFzaykgeyBtX3Rhc2tzLmFwcGVuZCh0YXNrKTsgfQotICAg
IHZvaWQgdW5yZWdpc3RlclRhc2soV2ViVGFzayopOwotICAgIHZvaWQgcmV2b2tlQWxsKCk7Ci0K
LXByaXZhdGU6Ci0gICAgVmVjdG9yPFdlYlRhc2sqPiBtX3Rhc2tzOwotfTsKLQotLy8gQSB0YXNr
IGNvbnRhaW5pbmcgYW4gb2JqZWN0IHBvaW50ZXIgb2YgY2xhc3MgVC4gSXMgaXMgc3VwcG9zZWQg
dGhhdAotLy8gcnVuaWZWYWxpZCgpIGNhbGxzIGEgbWVtYmVyIGZ1bmN0aW9uIG9mIHRoZSBvYmpl
Y3QgcG9pbnRlci4KLS8vIENsYXNzIFQgbXVzdCBoYXZlICJUYXNrTGlzdCogdGFza0xpc3QoKSIu
Ci10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBNZXRob2RUYXNrOiBwdWJsaWMgV2ViVGFzayB7Ci1w
dWJsaWM6Ci0gICAgTWV0aG9kVGFzayhUKiBvYmplY3QpOiBXZWJUYXNrKG9iamVjdC0+dGFza0xp
c3QoKSksIG1fb2JqZWN0KG9iamVjdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJ1bigpCi0gICAg
ewotICAgICAgICBpZiAobV9vYmplY3QpCi0gICAgICAgICAgICBydW5JZlZhbGlkKCk7Ci0gICAg
fQotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKQotICAgIHsKLSAgICAgICAgbV9vYmplY3QgPSAw
OwotICAgICAgICBtX3Rhc2tMaXN0LT51bnJlZ2lzdGVyVGFzayh0aGlzKTsKLSAgICAgICAgbV90
YXNrTGlzdCA9IDA7Ci0gICAgfQotICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgPSAwOwot
Ci1wcm90ZWN0ZWQ6Ci0gICAgVCogbV9vYmplY3Q7Ci19OwotCi12b2lkIHBvc3RUYXNrKFdlYlRh
c2sqKTsKLXZvaWQgcG9zdERlbGF5ZWRUYXNrKFdlYlRhc2sqLCBpbnQ2NF90IG1zKTsKLQotI2Vu
ZGlmIC8vIFRhc2tfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCmluZGV4IGY3MDY5NDAxYThmMDA0M2NmM2Yy
N2I3YzFhMTg0ZGZhOTYwZWVjZWMuLjM5ZTE5ZDU3MzY1ZDAzYzY2ODQxZjg3ZjI2YWNmNDU0MWVl
MDdkN2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKQEAgLTMzLDcgKzMzLDYgQEAKICNkZWZpbmUgVGVz
dFJ1bm5lcl9oCiAKICNpbmNsdWRlICJDcHBCb3VuZENsYXNzLmgiCi0jaW5jbHVkZSAiVGFzay5o
IgogI2luY2x1ZGUgIldlYkRlbGl2ZXJlZEludGVudENsaWVudC5oIgogI2luY2x1ZGUgIldlYlRl
eHREaXJlY3Rpb24uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJBcnJheUJ1ZmZlclZpZXcuaCIK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCmluZGV4IDQ4NTRm
NWVhMzFiZDBhNDNiZjgzY2I3ZDVkNWEwZTZkODRlYWRlOTQuLjI2OTJlNzQ1ODYwZWIzMzliMzkw
ZmFmOTU0NDUyOTg5YmYwNWU3ZjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RTaGVsbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFNoZWxsLmNwcApAQCAtNjgsNiArNjgsNyBAQAogCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lcjsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7
CiAKIC8vIENvbnRlbnQgYXJlYSBzaXplIGZvciBuZXdseSBjcmVhdGVkIHdpbmRvd3MuCkBAIC0x
NTQsNyArMTU1LDcgQEAgVGVzdFNoZWxsOjpUZXN0U2hlbGwoKQogdm9pZCBUZXN0U2hlbGw6Omlu
aXRpYWxpemUoKQogewogICAgIG1fd2ViUGVybWlzc2lvbnMgPSBhZG9wdFB0cihuZXcgV2ViUGVy
bWlzc2lvbnModGhpcykpOwotICAgIG1fdGVzdEludGVyZmFjZXMgPSBhZG9wdFB0cihuZXcgV2Vi
VGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFjZXMoKSk7CisgICAgbV90ZXN0SW50ZXJmYWNlcyA9
IGFkb3B0UHRyKG5ldyBXZWJUZXN0SW50ZXJmYWNlcygpKTsKICAgICBtX3Rlc3RSdW5uZXIgPSBh
ZG9wdFB0cihuZXcgRFJUVGVzdFJ1bm5lcih0aGlzKSk7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICBtX25vdGlmaWNhdGlvblBy
ZXNlbnRlciA9IGFkb3B0UHRyKG5ldyBOb3RpZmljYXRpb25QcmVzZW50ZXIodGhpcykpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50
TW9jay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGll
bnRNb2NrLmNwcAppbmRleCBlZDEzZmZhNTg2OWUyNTY0YmJlMjMxNzlmYWRmZWQxZDI5NDRiODZk
Li44N2NhMTU2ZjZkMGU0NGE2ODBkMmFkOTM2ZDY0MDE1NTQ3MzQwYWE1IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2Nr
LmNwcApAQCAtNDQsMTEgKzQ0LDEyIEBACiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyOwog
Ci1jbGFzcyBVc2VyTWVkaWFSZXF1ZXN0VGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPFdlYlVzZXJN
ZWRpYUNsaWVudE1vY2s+IHsKK2NsYXNzIFVzZXJNZWRpYVJlcXVlc3RUYXNrIDogcHVibGljIFdl
Yk1ldGhvZFRhc2s8V2ViVXNlck1lZGlhQ2xpZW50TW9jaz4gewogcHVibGljOgogICAgIFVzZXJN
ZWRpYVJlcXVlc3RUYXNrKFdlYlVzZXJNZWRpYUNsaWVudE1vY2sqIG9iamVjdCwgY29uc3QgV2Vi
VXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9y
IHJlc3VsdCkKLSAgICAgICAgOiBNZXRob2RUYXNrPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+KG9i
amVjdCkKKyAgICAgICAgOiBXZWJNZXRob2RUYXNrPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+KG9i
amVjdCkKICAgICAgICAgLCBtX3JlcXVlc3QocmVxdWVzdCkKICAgICAgICAgLCBtX3Jlc3VsdChy
ZXN1bHQpCiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVXNlck1lZGlhQ2xpZW50TW9jay5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVXNlck1lZGlhQ2xpZW50TW9jay5oCmluZGV4IGY0Mzg3NTk3NjY2MWYyYjdlMDc2YjI2MWY1
ZjJlMGFmYjM2ZTI5ODguLmVmNGNiNTFkMWFmY2ZkZjNmMDUyMjVkNzgwYjYyNWEwOWEyNDQ1NGQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNs
aWVudE1vY2suaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVk
aWFDbGllbnRNb2NrLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAKLSNpbmNsdWRlICJUZXN0UnVubmVyL3NyYy9UYXNrLmgiCisjaW5jbHVkZSAiV2ViVGFz
ay5oIgogI2luY2x1ZGUgIldlYlVzZXJNZWRpYUNsaWVudC5oIgogI2luY2x1ZGUgIndlYmtpdC9z
dXBwb3J0L3Rlc3RfbWVkaWFfc3RyZWFtX2NsaWVudC5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJD
b21tb24uaD4KQEAgLTUwLDEyICs1MCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNh
bmNlbFVzZXJNZWRpYVJlcXVlc3QoY29uc3QgV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0Jik7
CiAKICAgICAvLyBUYXNrIHJlbGF0ZWQgbWV0aG9kcwotICAgIFRhc2tMaXN0KiB0YXNrTGlzdCgp
IHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3Qq
IHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KIAogcHJpdmF0ZToKICAgICBXZWJV
c2VyTWVkaWFDbGllbnRNb2NrKCkgeyB9CiAKLSAgICBUYXNrTGlzdCBtX3Rhc2tMaXN0OworICAg
IFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0IG1fdGFza0xpc3Q7CiB9OwogCiAjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlZpZXdIb3N0LmNwcAppbmRleCAxMDZjYWE5Nzg1ZjUzY2I3MjJiYzBmNmFjMTIxZjQzM2IzMzA4
OWZmLi4wYTE5ZTYyODE0ODU2ZWU0ZTljNjgzMGE1Y2VkYmY2Y2Q0OWU0OTU5IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC04OCw2ICs4OCw3
IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAog
c3RhdGljIGNvbnN0IGludCBzY3JlZW5XaWR0aCA9IDE5MjA7CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAppbmRleCBiYTc2MzUwM2FhZTZkNjY4MTA1YThkOTUw
OWVkYWM5MDViZGVlOTQ3Li5iY2EwYmQ2Nzg5ZmE2NmFiZGUyMzMwNzRlZTk2NWY0ZTQ4YmU1ODJj
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5o
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTMz
LDEzICszMywxMyBAQAogCiAjaW5jbHVkZSAiTW9ja1NwZWxsQ2hlY2suaCIKICNpbmNsdWRlICJU
ZXN0TmF2aWdhdGlvbkNvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJUZXN0UnVubmVyL3NyYy9UYXNr
LmgiCiAjaW5jbHVkZSAiV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUg
IldlYkN1cnNvckluZm8uaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUg
IldlYkludGVudFJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJQcmVyZW5kZXJlckNsaWVudC5oIgog
I2luY2x1ZGUgIldlYlNwZWxsQ2hlY2tDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJUYXNrLmgiCiAj
aW5jbHVkZSAiV2ViVGVzdERlbGVnYXRlLmgiCiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0yODYsMTkgKzI4NiwxOSBAQCBjbGFzcyBXZWJW
aWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1YmxpYyBXZWJLaXQ6Oldl
YkZyYW1lQ2xpZW50LAogICAgIC8vIEdlb2xvY2F0aW9uIGNsaWVudCBtb2NrcyBmb3IgRFJUVGVz
dFJ1bm5lcgogICAgIFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrKiBnZW9sb2NhdGlv
bkNsaWVudE1vY2soKTsKIAotICAgIC8vIFBlbmRpbmcgdGFzayBsaXN0LCBOb3RlIHRhaHQgdGhl
IG1ldGhvZCBpcyByZWZlcnJlZCBmcm9tIE1ldGhvZFRhc2sgY2xhc3MuCi0gICAgVGFza0xpc3Qq
IHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAgICAvLyBQZW5kaW5nIHRhc2sg
bGlzdCwgTm90ZSB0YWh0IHRoZSBtZXRob2QgaXMgcmVmZXJyZWQgZnJvbSBXZWJNZXRob2RUYXNr
IGNsYXNzLgorICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0
dXJuICZtX3Rhc2tMaXN0OyB9CiAKICAgICAvLyBUaGUgY3VycmVudCB3ZWIgaW50ZW50cyByZXF1
ZXN0LgogICAgIFdlYktpdDo6V2ViSW50ZW50UmVxdWVzdCogY3VycmVudEludGVudFJlcXVlc3Qo
KSB7IHJldHVybiAmbV9jdXJyZW50UmVxdWVzdDsgfQogCiBwcml2YXRlOgogCi0gICAgY2xhc3Mg
SG9zdE1ldGhvZFRhc2sgOiBwdWJsaWMgTWV0aG9kVGFzazxXZWJWaWV3SG9zdD4geworICAgIGNs
YXNzIEhvc3RNZXRob2RUYXNrIDogcHVibGljIFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8
V2ViVmlld0hvc3Q+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgdm9pZCAoV2ViVmll
d0hvc3Q6OipDYWxsYmFja01ldGhvZFR5cGUpKCk7CiAgICAgICAgIEhvc3RNZXRob2RUYXNrKFdl
YlZpZXdIb3N0KiBvYmplY3QsIENhbGxiYWNrTWV0aG9kVHlwZSBjYWxsYmFjaykKLSAgICAgICAg
ICAgIDogTWV0aG9kVGFzazxXZWJWaWV3SG9zdD4ob2JqZWN0KQorICAgICAgICAgICAgOiBXZWJU
ZXN0UnVubmVyOjpXZWJNZXRob2RUYXNrPFdlYlZpZXdIb3N0PihvYmplY3QpCiAgICAgICAgICAg
ICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgICAgIHsgfQogCkBAIC00NDEsNyArNDQxLDcg
QEAgcHJpdmF0ZToKICAgICBXZWJLaXQ6OldlYlN0cmluZyBtX2xhc3RSZXF1ZXN0ZWRUZXh0Q2hl
Y2tTdHJpbmc7CiAgICAgV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uKiBtX2xhc3RS
ZXF1ZXN0ZWRUZXh0Q2hlY2tpbmdDb21wbGV0aW9uOwogCi0gICAgVGFza0xpc3QgbV90YXNrTGlz
dDsKKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwogICAgIFZlY3Rv
cjxXZWJLaXQ6OldlYldpZGdldCo+IG1fcG9wdXBtZW51czsKIAogI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169908</attachid>
            <date>2012-10-22 08:00:45 -0700</date>
            <delta_ts>2012-10-22 08:08:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99964-20121022165923.patch</filename>
            <type>text/plain</type>
            <size>47045</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMDMwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGRlYmFhNTIyMGNhOGZjZDRjZDI0OGRmYTA4NjljODgz
YTU1ZTM3ZC4uODRhYzM5Y2UzYmI4NDNmYWM2OGFmMGU2YWRjMzgyYjkxMjVhMGQ2YSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgx
IEBACisyMDEyLTEwLTIyICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gaW50cm9kdWNlIFdlYlRhc2sgdG8gdGhlIFRlc3RSdW5uZXIg
bGlicmFyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTk5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5jcHA6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5oOgorICAgICAgICAoRFJURGV2VG9vbHNB
Z2VudDo6dGFza0xpc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERl
dlRvb2xzQ2xpZW50LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRE
ZXZUb29sc0NsaWVudC5oOgorICAgICAgICAoRFJURGV2VG9vbHNDbGllbnQ6OnRhc2tMaXN0KToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcDoKKyAg
ICAgICAgKEludm9rZUNhbGxiYWNrVGFzazo6SW52b2tlQ2FsbGJhY2tUYXNrKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmg6CisgICAgICAgIChEUlRU
ZXN0UnVubmVyOjp0YXNrTGlzdCk6CisgICAgICAgIChEUlRUZXN0UnVubmVyOjpXb3JrUXVldWU6
OnRhc2tMaXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcDoKKyAgICAgICAgKFJUQ1Nlc3Npb25EZXNjcmlwdGlv
blJlcXVlc3RTdWNjZWRlZFRhc2s6OlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RTdWNjZWRl
ZFRhc2spOgorICAgICAgICAoUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdEZhaWxlZFRhc2s6
OlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RGYWlsZWRUYXNrKToKKyAgICAgICAgKFJUQ1N0
YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2s6OlJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2spOgor
ICAgICAgICAoUlRDVm9pZFJlcXVlc3RUYXNrOjpSVENWb2lkUmVxdWVzdFRhc2spOgorICAgICAg
ICAoU3RyaW5nRGF0YVRhc2s6OlN0cmluZ0RhdGFUYXNrKToKKyAgICAgICAgKENoYXJQdHJEYXRh
VGFzazo6Q2hhclB0ckRhdGFUYXNrKToKKyAgICAgICAgKERhdGFDaGFubmVsUmVhZHlTdGF0ZVRh
c2s6OkRhdGFDaGFubmVsUmVhZHlTdGF0ZVRhc2spOgorICAgICAgICAoUlRDUGVlckNvbm5lY3Rp
b25SZWFkeVN0YXRlVGFzazo6UlRDUGVlckNvbm5lY3Rpb25SZWFkeVN0YXRlVGFzayk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlci5oOgorICAgICAgICAoTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcik6CisgICAg
ICAgIChNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjp0YXNrTGlzdCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOjpTcGVlY2hUYXNrOjpT
cGVlY2hUYXNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyLmg6CisgICAgICAgIChNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyOjp0YXNrTGlzdCk6CisgICAgICAgIChNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXpl
ci5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJl
Y29nbml6ZXIuaDoKKyAgICAgICAgKE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyOjp0YXNrTGlzdCk6
CisgICAgICAgIChNb2NrV2ViU3BlZWNoUmVjb2duaXplcik6CisgICAgICAgIChNb2NrV2ViU3Bl
ZWNoUmVjb2duaXplcjo6U3RlcFRhc2s6OlN0ZXBUYXNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUYXNrLmg6IFJlbmFtZWQgZnJvbSBU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UYXNrLmguCisgICAg
ICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRhc2spOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6V2ViVGFzazo6UnVuKToKKyAgICAgICAgKFdlYlRhc2tMaXN0KToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0OjpXZWJUYXNrTGlzdCk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpXZWJUYXNrTGlzdDo6fldlYlRhc2tMaXN0KToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OldlYlRhc2tMaXN0OjpyZWdpc3RlclRhc2spOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKFdl
YlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6S2V5RG93blRhc2s6OktleURv
d25UYXNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9FdmVudFNlbmRlci5oOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6OnRh
c2tMaXN0KToKKyAgICAgICAgKEV2ZW50U2VuZGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmg6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGFzay5jcHA6IFJlbmFtZWQgZnJv
bSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UYXNrLmNwcC4K
KyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGFz
azo6V2ViVGFzayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUYXNrOjp+V2ViVGFzayk6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdDo6dW5yZWdpc3RlclRhc2spOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3Q6OnJldm9rZUFsbCk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjppbnZva2VUYXNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OnBv
c3RUYXNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OnBvc3REZWxheWVkVGFzayk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcDoKKyAgICAgICAgKFRl
c3RTaGVsbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHA6CisgICAgICAgIChVc2VyTWVkaWFSZXF1ZXN0VGFz
azo6VXNlck1lZGlhUmVxdWVzdFRhc2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaDoKKyAgICAgICAgKFdlYlVzZXJNZWRpYUNsaWVu
dE1vY2s6OnRhc2tMaXN0KToKKyAgICAgICAgKFdlYlVzZXJNZWRpYUNsaWVudE1vY2spOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorICAgICAgICAoV2ViVmll
d0hvc3QpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnRhc2tMaXN0KToKKyAgICAgICAgKFdlYlZp
ZXdIb3N0OjpIb3N0TWV0aG9kVGFzazo6SG9zdE1ldGhvZFRhc2spOgorCiAyMDEyLTEwLTIxICBK
b2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gaW50cm9kdWNlIGEgcHVibGljIEFQSSBmb3IgdGhlIFRlc3RSdW5uZXIgbGlicmFyeQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKaW5kZXggN2U3ZDY5YmFkYmY1ZDY4
NDRmOGI4ZTM1ZmMxOThhMmFmMmJjMzQ0ZS4uMTBhZjQyNGYyYmU2NzYzN2JmN2Q4NTg2N2QzNTJm
ZmY5ZjkzOGExOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRy
ZWUuZ3lwaQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBA
IC02Nyw2ICs2Nyw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMv
V2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGVzdERlbGVnYXRlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L1Rlc3RSdW5uZXIvcHVibGljL1dlYkV2ZW50U2VuZGVyLmgnLAorICAgICAgICAgICAgJ2Nocm9t
aXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRhc2suaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
VGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5jcHAn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyQ2hyb21pdW0uaCcsCkBAIC04MCw4ICs4MSw2IEBACiAgICAgICAgICAgICAnY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvR2FtZXBhZENvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9HYW1lcGFkQ29udHJvbGxlci5oJywKLSAgICAgICAgICAgICdj
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UYXNrLmNwcCcsCi0gICAgICAgICAgICAnY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvVGFzay5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwJywKQEAgLTkwLDYgKzg5LDcgQEAKICAgICAg
ICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNw
cCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViRXZlbnRTZW5kZXIu
Y3BwJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUYXNrLmNwcCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMu
Y3BwJywKICAgICAgICAgXSwKICAgICAgICAgJ3Rlc3RfcGx1Z2luX2ZpbGVzJzogWwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmNwcAppbmRl
eCBiNjY1OWE0N2ZjODAzYWVhYWNiNzEyZTNmYmUzMTM5OTY5NjRjN2QzLi4xOGFlODdlZWZlMzUx
Yzc2Y2ZiMGJkMDU0ZjNmYzFjMjcyNDY0ZGE1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmNwcApAQCAtMzksNiArMzksNyBAQAogI2lu
Y2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lcjsKIAogRFJURGV2VG9vbHNB
Z2VudDo6RFJURGV2VG9vbHNBZ2VudCgpCiAgICAgOiBtX2RydERldlRvb2xzQ2xpZW50KDApCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmgKaW5k
ZXggZDA2NmI3YTcxOGZkMjg4ZWIzOWUyNjViY2NmMTk2NTZmZDg2OGU5Ny4uYzEzYWVmN2ZhMDA4
OTI5OTc2M2RmY2M3Yzc5YWUwYzYyNzYxYjhmZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0RSVERldlRvb2xzQWdlbnQuaApAQCAtMzEsOCArMzEsOCBAQAogI2lmbmRl
ZiBEUlREZXZUb29sc0FnZW50X2gKICNkZWZpbmUgRFJURGV2VG9vbHNBZ2VudF9oCiAKLSNpbmNs
dWRlICJUZXN0UnVubmVyL3NyYy9UYXNrLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudENs
aWVudC5oIgorI2luY2x1ZGUgIldlYlRhc2suaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJp
bmcuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgpAQCAtNjksMjMgKzY5LDIzIEBAIHB1YmxpYzoKICAgICB2b2lkIGRldGFjaCgpOwogCiAg
ICAgYm9vbCBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGxvbmcgY2FsbElELCBjb25zdCBzdGQ6OnN0
cmluZyYgc2NyaXB0KTsKLSAgICBUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNr
TGlzdDsgfQorICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0
dXJuICZtX3Rhc2tMaXN0OyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjYWxsKGNvbnN0IFdlYktp
dDo6V2ViU3RyaW5nJiBhcmdzKTsKICAgICBXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnQqIHdlYkRl
dlRvb2xzQWdlbnQoKTsKIAotICAgIGNsYXNzIEFzeW5jQ2FsbFRhc2s6IHB1YmxpYyBNZXRob2RU
YXNrPERSVERldlRvb2xzQWdlbnQ+IHsKKyAgICBjbGFzcyBBc3luY0NhbGxUYXNrOiBwdWJsaWMg
V2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazxEUlREZXZUb29sc0FnZW50PiB7CiAgICAgcHVi
bGljOgogICAgICAgICBBc3luY0NhbGxUYXNrKERSVERldlRvb2xzQWdlbnQqIG9iamVjdCwgY29u
c3QgV2ViS2l0OjpXZWJTdHJpbmcmIGFyZ3MpCi0gICAgICAgICAgICA6IE1ldGhvZFRhc2s8RFJU
RGV2VG9vbHNBZ2VudD4ob2JqZWN0KSwgbV9hcmdzKGFyZ3MpIHsgfQorICAgICAgICAgICAgOiBX
ZWJUZXN0UnVubmVyOjpXZWJNZXRob2RUYXNrPERSVERldlRvb2xzQWdlbnQ+KG9iamVjdCksIG1f
YXJncyhhcmdzKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSB7IG1fb2Jq
ZWN0LT5jYWxsKG1fYXJncyk7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIFdlYktpdDo6V2Vi
U3RyaW5nIG1fYXJnczsKICAgICB9OwogCi0gICAgVGFza0xpc3QgbV90YXNrTGlzdDsKKyAgICBX
ZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwogICAgIERSVERldlRvb2xzQ2xp
ZW50KiBtX2RydERldlRvb2xzQ2xpZW50OwogICAgIGludCBtX3JvdXRpbmdJRDsKICAgICBXZWJL
aXQ6OldlYlZpZXcqIG1fd2ViVmlldzsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmNwcAppbmRleCBhN2ZjNGQwNDg2ZjI4ZDMyYjFlZWZk
NDRhMGZmNzQ2Y2E0ZWFmOTU1Li45YWFmMmMyMWNkNmMzNDFiY2VmYmYyMjZjMmI4YWU5Y2YxMWE0
MDYzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29s
c0NsaWVudC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9v
bHNDbGllbnQuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJUZXN0UnVu
bmVyOwogCiBEUlREZXZUb29sc0NsaWVudDo6RFJURGV2VG9vbHNDbGllbnQoRFJURGV2VG9vbHNB
Z2VudCogYWdlbnQsIFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2xp
ZW50LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NsaWVudC5o
CmluZGV4IGVhZDM5NjM3OWI0YmU3ZTIxODkyNzUyYWFhMzhiMTkyNTlkOWY2NzEuLjVmNDg2ZGRk
MGQ1OWNhM2JmYTlmNzgxNTY4OTgzNDAzYzUyN2JiNTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmgKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuaApAQCAtMzEsOCArMzEsOCBAQAog
I2lmbmRlZiBEUlREZXZUb29sc0NsaWVudF9oCiAjZGVmaW5lIERSVERldlRvb2xzQ2xpZW50X2gK
IAotI2luY2x1ZGUgIlRlc3RSdW5uZXIvc3JjL1Rhc2suaCIKICNpbmNsdWRlICJXZWJEZXZUb29s
c0Zyb250ZW5kQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViVGFzay5oIgogI2luY2x1ZGUgInBsYXRm
b3JtL1dlYlN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KQEAgLTY0LDIxICs2NCwyMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhc3lu
Y0NhbGwoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGFyZ3MpOwogCiAgICAgdm9pZCBhbGxNZXNz
YWdlc1Byb2Nlc3NlZCgpOwotICAgIFRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rh
c2tMaXN0OyB9CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QqIHRhc2tMaXN0KCkgeyBy
ZXR1cm4gJm1fdGFza0xpc3Q7IH0KIAogIHByaXZhdGU6CiAgICAgdm9pZCBjYWxsKGNvbnN0IFdl
YktpdDo6V2ViU3RyaW5nJiBhcmdzKTsKLSAgICBjbGFzcyBBc3luY0NhbGxUYXNrOiBwdWJsaWMg
TWV0aG9kVGFzazxEUlREZXZUb29sc0NsaWVudD4geworICAgIGNsYXNzIEFzeW5jQ2FsbFRhc2s6
IHB1YmxpYyBXZWJUZXN0UnVubmVyOjpXZWJNZXRob2RUYXNrPERSVERldlRvb2xzQ2xpZW50PiB7
CiAgICAgcHVibGljOgogICAgICAgICBBc3luY0NhbGxUYXNrKERSVERldlRvb2xzQ2xpZW50KiBv
YmplY3QsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBhcmdzKQotICAgICAgICAgICAgOiBNZXRo
b2RUYXNrPERSVERldlRvb2xzQ2xpZW50PihvYmplY3QpLCBtX2FyZ3MoYXJncykgeyB9CisgICAg
ICAgICAgICA6IFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8RFJURGV2VG9vbHNDbGllbnQ+
KG9iamVjdCksIG1fYXJncyhhcmdzKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFs
aWQoKSB7IG1fb2JqZWN0LT5jYWxsKG1fYXJncyk7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAg
IFdlYktpdDo6V2ViU3RyaW5nIG1fYXJnczsKICAgICB9OwogCi0gICAgVGFza0xpc3QgbV90YXNr
TGlzdDsKKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwogICAgIFdl
YktpdDo6V2ViVmlldyogbV93ZWJWaWV3OwogICAgIERSVERldlRvb2xzQWdlbnQqIG1fZHJ0RGV2
VG9vbHNBZ2VudDsKICAgICBXVEY6Ok93blB0cjxXZWJLaXQ6OldlYkRldlRvb2xzRnJvbnRlbmQ+
IG1fd2ViRGV2VG9vbHNGcm9udGVuZDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vRFJUVGVzdFJ1bm5lci5jcHAKaW5kZXggMDgyNTk3YTExN2I5MmQ1OTcyODA3ZTlmMGUzYTM3
MjM0ZWQ5YzJhMy4uNDc4ZGQ5YTYzZmZkZDVhZWViMzBhODRmNzhiMTBiYjVkZGFkNzdlOSAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKQEAg
LTgzLDYgKzgzLDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXI7CiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCiBjbGFzcyBFbXB0eVdlYkRlbGl2ZXJlZEludGVudENsaWVudCA6IHB1YmxpYyBX
ZWJLaXQ6OldlYkRlbGl2ZXJlZEludGVudENsaWVudCB7CkBAIC0yMTE0LDEwICsyMTE1LDEwIEBA
IHZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0VGV4dFN1YnBpeGVsUG9zaXRpb25pbmcoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLWNs
YXNzIEludm9rZUNhbGxiYWNrVGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPERSVFRlc3RSdW5uZXI+
IHsKK2NsYXNzIEludm9rZUNhbGxiYWNrVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPERSVFRl
c3RSdW5uZXI+IHsKIHB1YmxpYzoKICAgICBJbnZva2VDYWxsYmFja1Rhc2soRFJUVGVzdFJ1bm5l
ciogb2JqZWN0LCBQYXNzT3duQXJyYXlQdHI8Q3BwVmFyaWFudD4gY2FsbGJhY2tBcmd1bWVudHMs
IHVpbnQzMl90IG51bWJlck9mQXJndW1lbnRzKQotICAgICAgICA6IE1ldGhvZFRhc2s8RFJUVGVz
dFJ1bm5lcj4ob2JqZWN0KQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8RFJUVGVzdFJ1bm5lcj4o
b2JqZWN0KQogICAgICAgICAsIG1fY2FsbGJhY2tBcmd1bWVudHMoY2FsbGJhY2tBcmd1bWVudHMp
CiAgICAgICAgICwgbV9udW1iZXJPZkFyZ3VtZW50cyhudW1iZXJPZkFyZ3VtZW50cykKICAgICB7
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVy
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmgKaW5kZXgg
NjBhMDM4YTI3ZGQ4OTRjYTFkNDQ3MTA5YmViYWQ3OGFlMmZlMDYxOS4uZWM0Nzc4ZmQ1YzQ2Zjhm
MzI4NzU4YTE1N2EzMjgyMTQ1NGI1YjIyMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0RSVFRlc3RSdW5uZXIuaApAQCAtNDMsNiArNDMsNyBAQAogI2RlZmluZSBEUlRUZXN0
UnVubmVyX2gKIAogI2luY2x1ZGUgIlRlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaCIKKyNpbmNs
dWRlICJXZWJUYXNrLmgiCiAKIGNsYXNzIFRlc3RTaGVsbDsKIApAQCAtNTExLDcgKzUxMiw3IEBA
IHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBib29sIHJ1bihUZXN0U2hlbGwqKSA9IDA7CiAgICAg
fTsKIAotICAgIFRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9Cisg
ICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFz
a0xpc3Q7IH0KIAogICAgIGJvb2wgc2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVV
bmxvYWQoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVm
b3JlVW5sb2FkOyB9CiAKQEAgLTUzNCwxNyArNTM1LDE3IEBAIHByaXZhdGU6CiAKICAgICAgICAg
dm9pZCBzZXRGcm96ZW4oYm9vbCBmcm96ZW4pIHsgbV9mcm96ZW4gPSBmcm96ZW47IH0KICAgICAg
ICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gbV9xdWV1ZS5pc0VtcHR5KCk7IH0KLSAgICAgICAg
VGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAgICAgICAgV2Vi
VGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7
IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgcHJvY2Vzc1dvcmsoKTsKLSAgICAgICAg
Y2xhc3MgV29ya1F1ZXVlVGFzazogcHVibGljIE1ldGhvZFRhc2s8V29ya1F1ZXVlPiB7CisgICAg
ICAgIGNsYXNzIFdvcmtRdWV1ZVRhc2s6IHB1YmxpYyBXZWJUZXN0UnVubmVyOjpXZWJNZXRob2RU
YXNrPFdvcmtRdWV1ZT4gewogICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBXb3JrUXVldWVU
YXNrKFdvcmtRdWV1ZSogb2JqZWN0KTogTWV0aG9kVGFzazxXb3JrUXVldWU+KG9iamVjdCkgeyB9
CisgICAgICAgICAgICBXb3JrUXVldWVUYXNrKFdvcmtRdWV1ZSogb2JqZWN0KTogV2ViVGVzdFJ1
bm5lcjo6V2ViTWV0aG9kVGFzazxXb3JrUXVldWU+KG9iamVjdCkgeyB9CiAgICAgICAgICAgICB2
aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIHsgbV9vYmplY3QtPnByb2Nlc3NXb3JrKCk7IH0KICAg
ICAgICAgfTsKIAotICAgICAgICBUYXNrTGlzdCBtX3Rhc2tMaXN0OworICAgICAgICBXZWJUZXN0
UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwogICAgICAgICBEZXF1ZTxXb3JrSXRlbSo+
IG1fcXVldWU7CiAgICAgICAgIGJvb2wgbV9mcm96ZW47CiAgICAgICAgIERSVFRlc3RSdW5uZXIq
IG1fY29udHJvbGxlcjsKQEAgLTU1OCw5ICs1NTksOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBs
b2dFcnJvclRvQ29uc29sZShjb25zdCBzdGQ6OnN0cmluZyYpOwogICAgIHZvaWQgY29tcGxldGVO
b3RpZnlEb25lKGJvb2wgaXNUaW1lb3V0KTsKLSAgICBjbGFzcyBOb3RpZnlEb25lVGltZWRPdXRU
YXNrOiBwdWJsaWMgTWV0aG9kVGFzazxEUlRUZXN0UnVubmVyPiB7CisgICAgY2xhc3MgTm90aWZ5
RG9uZVRpbWVkT3V0VGFzazogcHVibGljIFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8RFJU
VGVzdFJ1bm5lcj4gewogICAgIHB1YmxpYzoKLSAgICAgICAgTm90aWZ5RG9uZVRpbWVkT3V0VGFz
ayhEUlRUZXN0UnVubmVyKiBvYmplY3QpOiBNZXRob2RUYXNrPERSVFRlc3RSdW5uZXI+KG9iamVj
dCkgeyB9CisgICAgICAgIE5vdGlmeURvbmVUaW1lZE91dFRhc2soRFJUVGVzdFJ1bm5lciogb2Jq
ZWN0KTogV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazxEUlRUZXN0UnVubmVyPihvYmplY3Qp
IHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIHsgbV9vYmplY3QtPmNvbXBs
ZXRlTm90aWZ5RG9uZSh0cnVlKTsgfQogICAgIH07CiAKQEAgLTU3MSw3ICs1NzIsNyBAQCBwcml2
YXRlOgogICAgIGludCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKTsKIAogICAgIC8vIFVzZWQg
Zm9yIHRlc3QgdGltZW91dHMuCi0gICAgVGFza0xpc3QgbV90YXNrTGlzdDsKKyAgICBXZWJUZXN0
UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwogCiAgICAgLy8gTm9uLW93bmluZyBwb2lu
dGVyLiBUaGUgRFJUVGVzdFJ1bm5lciBpcyBvd25lZCBieSB0aGUgaG9zdC4KICAgICBUZXN0U2hl
bGwqIG1fc2hlbGw7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9N
b2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCmluZGV4IGQ2ZTVl
N2YwNWUxMmRiYzcyYjAxMGE3YmQ5MTBlY2QxY2ExZTk1MTMuLjkwZTkzNjgwOTdmMTFkMjEyNWFk
ZDU1OGQ5Mjg2NjdkNjAwN2I1OTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3Bw
CkBAIC00OCwxMSArNDgsMTIgQEAKICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyOwogCi1jbGFz
cyBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0U3VjY2VkZWRUYXNrIDogcHVibGljIE1ldGhv
ZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4geworY2xhc3MgUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uUmVxdWVzdFN1Y2NlZGVkVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPE1v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKIHB1YmxpYzoKICAgICBSVENTZXNzaW9u
RGVzY3JpcHRpb25SZXF1ZXN0U3VjY2VkZWRUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXIqIG9iamVjdCwgY29uc3QgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiByZXN1bHQpCi0gICAgICAgIDog
TWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCisgICAg
ICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmpl
Y3QpCiAgICAgICAgICwgbV9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgICAgICwgbV9yZXN1bHQocmVz
dWx0KQogICAgIHsKQEAgLTY4LDEwICs2OSwxMCBAQCBwcml2YXRlOgogICAgIFdlYlJUQ1Nlc3Np
b25EZXNjcmlwdGlvbiBtX3Jlc3VsdDsKIH07CiAKLWNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlwdGlv
blJlcXVlc3RGYWlsZWRUYXNrIDogcHVibGljIE1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlcj4geworY2xhc3MgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdEZhaWxl
ZFRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyPiB7CiBwdWJsaWM6CiAgICAgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdEZhaWxlZFRh
c2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBXZWJSVENT
ZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0JiByZXF1ZXN0KQotICAgICAgICA6IE1ldGhvZFRhc2s8
TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQorICAgICAgICA6IFdlYk1l
dGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQogICAgICAg
ICAsIG1fcmVxdWVzdChyZXF1ZXN0KQogICAgIHsKICAgICB9CkBAIC04NSwxMCArODYsMTAgQEAg
cHJpdmF0ZToKICAgICBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0IG1fcmVxdWVzdDsK
IH07CiAKLWNsYXNzIFJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2sgOiBwdWJsaWMgTWV0aG9k
VGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CitjbGFzcyBSVENTdGF0c1Jl
cXVlc3RTdWNjZWVkZWRUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlcj4gewogcHVibGljOgogICAgIFJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRl
ZFRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBXZWJL
aXQ6OldlYlJUQ1N0YXRzUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViS2l0OjpXZWJSVENTdGF0
c1Jlc3BvbnNlJiByZXNwb25zZSkKLSAgICAgICAgOiBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKKyAgICAgICAgOiBXZWJNZXRob2RUYXNrPE1vY2tX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKICAgICAgICAgLCBtX3JlcXVlc3Qo
cmVxdWVzdCkKICAgICAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQogICAgIHsKQEAgLTEwNCwx
MCArMTA1LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViS2l0OjpXZWJSVENTdGF0c1Jlc3BvbnNlIG1f
cmVzcG9uc2U7CiB9OwogCi1jbGFzcyBSVENWb2lkUmVxdWVzdFRhc2sgOiBwdWJsaWMgTWV0aG9k
VGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CitjbGFzcyBSVENWb2lkUmVx
dWVzdFRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyPiB7CiBwdWJsaWM6CiAgICAgUlRDVm9pZFJlcXVlc3RUYXNrKE1vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgY29uc3QgV2ViUlRDVm9pZFJlcXVlc3QmIHJlcXVl
c3QsIGJvb2wgc3VjY2VlZGVkKQotICAgICAgICA6IE1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8TW9ja1dl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQogICAgICAgICAsIG1fcmVxdWVzdChy
ZXF1ZXN0KQogICAgICAgICAsIG1fc3VjY2VlZGVkKHN1Y2NlZWRlZCkKICAgICB7CkBAIC0xMjYs
MTAgKzEyNywxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zdWNjZWVkZWQ7CiB9OwogCi1jbGFz
cyBTdHJpbmdEYXRhVGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXI+IHsKK2NsYXNzIFN0cmluZ0RhdGFUYXNrIDogcHVibGljIFdlYk1ldGhvZFRh
c2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4gewogcHVibGljOgogICAgIFN0cmlu
Z0RhdGFUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgY29uc3Qg
V2ViUlRDRGF0YUNoYW5uZWwmIGRhdGFDaGFubmVsLCBjb25zdCBXZWJTdHJpbmcmIGRhdGEpCi0g
ICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmpl
Y3QpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyPihvYmplY3QpCiAgICAgICAgICwgbV9kYXRhQ2hhbm5lbChkYXRhQ2hhbm5lbCkKICAgICAg
ICAgLCBtX2RhdGEoZGF0YSkKICAgICB7CkBAIC0xNDUsMTAgKzE0NiwxMCBAQCBwcml2YXRlOgog
ICAgIFdlYlN0cmluZyBtX2RhdGE7CiB9OwogCi1jbGFzcyBDaGFyUHRyRGF0YVRhc2sgOiBwdWJs
aWMgTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CitjbGFzcyBD
aGFyUHRyRGF0YVRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyPiB7CiBwdWJsaWM6CiAgICAgQ2hhclB0ckRhdGFUYXNrKE1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgY29uc3QgV2ViUlRDRGF0YUNoYW5uZWwmIGRh
dGFDaGFubmVsLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQotICAgICAgICA6IE1l
dGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQorICAgICAg
ICA6IFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0
KQogICAgICAgICAsIG1fZGF0YUNoYW5uZWwoZGF0YUNoYW5uZWwpCiAgICAgICAgICwgbV9sZW5n
dGgobGVuZ3RoKQogICAgIHsKQEAgLTE2OCwxMCArMTY5LDEwIEBAIHByaXZhdGU6CiAgICAgc2l6
ZV90IG1fbGVuZ3RoOwogfTsKIAotY2xhc3MgRGF0YUNoYW5uZWxSZWFkeVN0YXRlVGFzayA6IHB1
YmxpYyBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKK2NsYXNz
IERhdGFDaGFubmVsUmVhZHlTdGF0ZVRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CiBwdWJsaWM6CiAgICAgRGF0YUNoYW5uZWxSZWFk
eVN0YXRlVGFzayhNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIGNvbnN0
IFdlYlJUQ0RhdGFDaGFubmVsJiBkYXRhQ2hhbm5lbCwgV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5
U3RhdGUgc3RhdGUpCi0gICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyPihvYmplY3QpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCiAgICAgICAgICwgbV9kYXRhQ2hhbm5lbChkYXRh
Q2hhbm5lbCkKICAgICAgICAgLCBtX3N0YXRlKHN0YXRlKQogICAgIHsKQEAgLTE4NywxMCArMTg4
LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3RhdGUgbV9zdGF0
ZTsKIH07CiAKLWNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uUmVhZHlTdGF0ZVRhc2sgOiBwdWJsaWMg
TWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CitjbGFzcyBSVENQ
ZWVyQ29ubmVjdGlvblJlYWR5U3RhdGVUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4gewogcHVibGljOgogICAgIFJUQ1BlZXJDb25uZWN0
aW9uUmVhZHlTdGF0ZVRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0
LCBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqIGNsaWVudCwgV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRlIHN0YXRlKQotICAgICAgICA6IE1ldGhv
ZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQorICAgICAgICA6
IFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQog
ICAgICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAgICAgLCBtX3N0YXRlKHN0YXRlKQogICAg
IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAppbmRleCA1ZGRkMmZjNDU1ZTdjZWE4OTQ2
OTU5NGYxODU4OTc3N2IzZmQwNmMzLi5hMTUyMmY0ZmJlNmZlM2I1ZmE0NDIyZDVlZDcwOThmMGIz
MjhhYzA1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCkBAIC0zMyw3ICszMyw3IEBA
CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAiVGVzdFJ1bm5lci9zcmMv
VGFzay5oIgorI2luY2x1ZGUgIldlYlRhc2suaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDRGF0
YUNoYW5uZWwuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oPgpAQCAtNjgs
MTUgKzY4LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoY29uc3Qg
V2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbCYsIGNvbnN0IGNoYXIqLCBzaXplX3QpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZURhdGFDaGFubmVsKGNvbnN0IFdlYktpdDo6V2ViUlRD
RGF0YUNoYW5uZWwmKSBPVkVSUklERTsKIAotICAgIC8vIFRhc2sgcmVsYXRlZCBtZXRob2RzCi0g
ICAgVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAgICAvLyBX
ZWJUYXNrIHJlbGF0ZWQgbWV0aG9kcworICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0KiB0
YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CiAKIHByaXZhdGU6CiAgICAgTW9ja1dl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcigpIHsgfQogCiAgICAgV2ViS2l0OjpXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDbGllbnQqIG1fY2xpZW50OwogICAgIGJvb2wgbV9zdG9wcGVkOwot
ICAgIFRhc2tMaXN0IG1fdGFza0xpc3Q7CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3Qg
bV90YXNrTGlzdDsKICAgICBXZWJLaXQ6OldlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiBtX2xvY2Fs
RGVzY3JpcHRpb247CiAgICAgV2ViS2l0OjpXZWJSVENTZXNzaW9uRGVzY3JpcHRpb24gbV9yZW1v
dGVEZXNjcmlwdGlvbjsKICAgICBpbnQgbV9zdHJlYW1Db3VudDsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJv
bGxlci5jcHAKaW5kZXggMTNjOGZmMWVjNGMxY2RlNTUwNzY2OThkZmNmZTVlODcxMjZhODJlYi4u
ZDdkNTg5MjY0MjcxYjY5MDMyOWZhMjgzZGY3NzdkYWZkMTVjODdmNiAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0
Q29udHJvbGxlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNI
KQogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYlRlc3RSdW5u
ZXI7CiAKIFBhc3NPd25QdHI8TW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlcj4gTW9ja1dlYlNw
ZWVjaElucHV0Q29udHJvbGxlcjo6Y3JlYXRlKFdlYlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3Rl
bmVyKQogewpAQCAtMTgyLDcgKzE4Myw3IEBAIHZvaWQgTW9ja1dlYlNwZWVjaElucHV0Q29udHJv
bGxlcjo6c3BlZWNoVGFza0ZpcmVkKCkKIH0KIAogTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxl
cjo6U3BlZWNoVGFzazo6U3BlZWNoVGFzayhNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBt
b2NrKQotICAgIDogTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyPjo6TWV0
aG9kVGFzayhtb2NrKQorICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyPjo6V2ViTWV0aG9kVGFzayhtb2NrKQogewogfQogCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
LmgKaW5kZXggNjQ5NGE3ZjI1YmFiYjNjYzNhOTE3YjU5ZjUwZDhhOWQ4NzljYjEyYy4uMDc1ZjI1
NDFmOWEyODJhY2I0Y2Q5YzQ5ZDIzMzJmYWNiMjJmYjM3OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXIuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKIAotI2lu
Y2x1ZGUgIlRlc3RSdW5uZXIvc3JjL1Rhc2suaCIKKyNpbmNsdWRlICJXZWJUYXNrLmgiCiAjaW5j
bHVkZSAicGxhdGZvcm0vV2ViUmVjdC5oIgogI2luY2x1ZGUgIldlYlNwZWVjaElucHV0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIldlYlNwZWVjaElucHV0UmVzdWx0LmgiCkBAIC01OCwxMyArNTgs
MTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQgcmVx
dWVzdElkKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFJlY29yZGluZyhpbnQgcmVx
dWVzdElkKSBPVkVSUklERTsKIAotICAgIFRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZt
X3Rhc2tMaXN0OyB9CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QqIHRhc2tMaXN0KCkg
eyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KIAogcHJpdmF0ZToKICAgICBNb2NrV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0ZW5lciopOwogICAgIHZvaWQg
c3BlZWNoVGFza0ZpcmVkKCk7CiAKLSAgICBjbGFzcyBTcGVlY2hUYXNrIDogcHVibGljIE1ldGhv
ZFRhc2s8TW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlcj4geworICAgIGNsYXNzIFNwZWVjaFRh
c2sgOiBwdWJsaWMgV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyPiB7CiAgICAgcHVibGljOgogICAgICAgICBTcGVlY2hUYXNrKE1vY2tXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXIqKTsKICAgICAgICAgdm9pZCBzdG9wKCk7CkBAIC03NSw3ICs3
NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXIqIG1f
bGlzdGVuZXI7CiAKLSAgICBUYXNrTGlzdCBtX3Rhc2tMaXN0OworICAgIFdlYlRlc3RSdW5uZXI6
OldlYlRhc2tMaXN0IG1fdGFza0xpc3Q7CiAgICAgU3BlZWNoVGFzayogbV9zcGVlY2hUYXNrOwog
CiAgICAgYm9vbCBtX3JlY29yZGluZzsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmNwcAppbmRleCA1MDJhZGRlYTky
NTYyZDRjNzJhMDJkZmZjZThlNGYxYTEzYWUxNzUyLi4xYjViMWNhODk4NTk2ODc1MWE5YTdkYzM5
NzZiZDRhN2Y2ZmEwZDk5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiV2ViU3BlZWNoUmVjb2duaXplckNsaWVudC5oIgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXI7CiAKIG5hbWVzcGFjZSB7CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hS
ZWNvZ25pemVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNo
UmVjb2duaXplci5oCmluZGV4IDRjYzA0NTY2OWZhZjAxNTI4YTZkNWY1YjVmYjUyYjZkMWRlMjJi
ZGQuLjQxOWM1ZTUwNDlmYWFmOWZiMjVhNjExZWM3MTQwMDk0MDdkY2Y0ZjYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmgK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6
ZXIuaApAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKIAot
I2luY2x1ZGUgIlRlc3RSdW5uZXIvc3JjL1Rhc2suaCIKICNpbmNsdWRlICJXZWJTcGVlY2hSZWNv
Z25pemVyLmgiCisjaW5jbHVkZSAiV2ViVGFzay5oIgogI2luY2x1ZGUgPHd0Zi9Db21waWxlci5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpA
QCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgLy8gTWV0aG9kcyBhY2Nlc3NlZCBmcm9tIFRh
c2sgb2JqZWN0czoKICAgICBXZWJLaXQ6OldlYlNwZWVjaFJlY29nbml6ZXJDbGllbnQqIGNsaWVu
dCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CiAgICAgV2ViS2l0OjpXZWJTcGVlY2hSZWNvZ25pdGlv
bkhhbmRsZSYgaGFuZGxlKCkgeyByZXR1cm4gbV9oYW5kbGU7IH0KLSAgICBUYXNrTGlzdCogdGFz
a0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQorICAgIFdlYlRlc3RSdW5uZXI6OldlYlRh
c2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CiAKICAgICBjbGFzcyBU
YXNrIHsKICAgICBwdWJsaWM6CkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
dGFydFRhc2tRdWV1ZSgpOwogICAgIHZvaWQgY2xlYXJUYXNrUXVldWUoKTsKIAotICAgIFRhc2tM
aXN0IG1fdGFza0xpc3Q7CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QgbV90YXNrTGlz
dDsKICAgICBXZWJLaXQ6OldlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlIG1faGFuZGxlOwogICAg
IFdlYktpdDo6V2ViU3BlZWNoUmVjb2duaXplckNsaWVudCogbV9jbGllbnQ7CiAgICAgVmVjdG9y
PFdlYktpdDo6V2ViU3RyaW5nPiBtX21vY2tUcmFuc2NyaXB0czsKQEAgLTg2LDkgKzg2LDkgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fdGFza1F1ZXVlUnVubmluZzsKIAogICAgIC8vIFRhc2sgZm9y
IHN0ZXBwaW5nIHRoZSBxdWV1ZS4KLSAgICBjbGFzcyBTdGVwVGFzayA6IHB1YmxpYyBNZXRob2RU
YXNrPE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyPiB7CisgICAgY2xhc3MgU3RlcFRhc2sgOiBwdWJs
aWMgV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoUmVjb2duaXplcj4g
ewogICAgIHB1YmxpYzoKLSAgICAgICAgU3RlcFRhc2soTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIq
IG9iamVjdCkgOiBNZXRob2RUYXNrPE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyPihvYmplY3QpIHsg
fQorICAgICAgICBTdGVwVGFzayhNb2NrV2ViU3BlZWNoUmVjb2duaXplciogb2JqZWN0KSA6IFdl
YlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8TW9ja1dlYlNwZWVjaFJlY29nbml6ZXI+KG9iamVj
dCkgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgT1ZFUlJJREU7CiAgICAg
fTsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUYXNrLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJUYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDhkN2ZhZDk4MzJiOGYyNzg3YzRh
NDg3ZjFiYmY1YWM1OTJlZmU5MAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRhc2suaApAQCAtMCwwICsxLDEwMCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViVGFza19oCisjZGVmaW5lIFdlYlRhc2tfaAorCisjaW5jbHVkZSAid2Via2l0
L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKKworI2luY2x1ZGUgPHZlY3Rvcj4KKworbmFtZXNw
YWNlIFdlYlRlc3RSdW5uZXIgeworCitjbGFzcyBXZWJUYXNrTGlzdDsKKworLy8gV2ViVGFzayBy
ZXByZXNlbnRzIGEgdGFzayB3aGljaCBjYW4gcnVuIGJ5IHBvc3RUYXNrKCkgb3IgcG9zdERlbGF5
ZWRUYXNrKCkuCisvLyBpdCBpcyBuYW1lZCAiV2ViVGFzayIsIG5vdCAiVGFzayIsIHRvIGF2b2lk
IGNvbmZsaXN0IHdpdGggYmFzZS90YXNrLmguCitjbGFzcyBXZWJUYXNrIDogcHVibGljIHdlYmtp
dF9zdXBwb3J0OjpUYXNrQWRhcHRvciB7CitwdWJsaWM6CisgICAgV2ViVGFzayhXZWJUYXNrTGlz
dCopOworICAgIC8vIFRoZSBtYWluIGNvZGUgb2YgdGhpcyB0YXNrLgorICAgIC8vIEFuIGltcGxl
bWVudGF0aW9uIG9mIHJ1bigpIHNob3VsZCByZXR1cm4gaW1tZWRpYXRlbHkgaWYgY2FuY2VsKCkg
d2FzIGNhbGxlZC4KKyAgICB2aXJ0dWFsIHZvaWQgcnVuKCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjYW5jZWwoKSA9IDA7CisgICAgdmlydHVhbCB+V2ViVGFzaygpOworCitwcml2YXRlOgorICAg
IHZpcnR1YWwgdm9pZCBSdW4oKSB7IHJ1bigpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBXZWJUYXNr
TGlzdCogbV90YXNrTGlzdDsKK307CisKK2NsYXNzIFdlYlRhc2tMaXN0IHsKK3B1YmxpYzoKKyAg
ICBXZWJUYXNrTGlzdCgpIHsgfQorICAgIH5XZWJUYXNrTGlzdCgpIHsgcmV2b2tlQWxsKCk7IH0K
KyAgICB2b2lkIHJlZ2lzdGVyVGFzayhXZWJUYXNrKiB0YXNrKSB7IG1fdGFza3MucHVzaF9iYWNr
KHRhc2spOyB9CisgICAgdm9pZCB1bnJlZ2lzdGVyVGFzayhXZWJUYXNrKik7CisgICAgdm9pZCBy
ZXZva2VBbGwoKTsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnZlY3RvcjxXZWJUYXNrKj4gbV90YXNr
czsKK307CisKKy8vIEEgdGFzayBjb250YWluaW5nIGFuIG9iamVjdCBwb2ludGVyIG9mIGNsYXNz
IFQuIElzIGlzIHN1cHBvc2VkIHRoYXQKKy8vIHJ1bmlmVmFsaWQoKSBjYWxscyBhIG1lbWJlciBm
dW5jdGlvbiBvZiB0aGUgb2JqZWN0IHBvaW50ZXIuCisvLyBDbGFzcyBUIG11c3QgaGF2ZSAiV2Vi
VGFza0xpc3QqIHRhc2tMaXN0KCkiLgordGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgV2ViTWV0aG9k
VGFzazogcHVibGljIFdlYlRhc2sgeworcHVibGljOgorICAgIFdlYk1ldGhvZFRhc2soVCogb2Jq
ZWN0KTogV2ViVGFzayhvYmplY3QtPnRhc2tMaXN0KCkpLCBtX29iamVjdChvYmplY3QpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgaWYgKG1fb2JqZWN0KQorICAg
ICAgICAgICAgcnVuSWZWYWxpZCgpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkK
KyAgICB7CisgICAgICAgIG1fb2JqZWN0ID0gMDsKKyAgICAgICAgbV90YXNrTGlzdC0+dW5yZWdp
c3RlclRhc2sodGhpcyk7CisgICAgICAgIG1fdGFza0xpc3QgPSAwOworICAgIH0KKyAgICB2aXJ0
dWFsIHZvaWQgcnVuSWZWYWxpZCgpID0gMDsKKworcHJvdGVjdGVkOgorICAgIFQqIG1fb2JqZWN0
OworfTsKKwordm9pZCBwb3N0VGFzayhXZWJUYXNrKik7Cit2b2lkIHBvc3REZWxheWVkVGFzayhX
ZWJUYXNrKiwgaW50NjRfdCBtcyk7CisKK30KKworI2VuZGlmIC8vIFdlYlRhc2tfaApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRT
ZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
RXZlbnRTZW5kZXIuY3BwCmluZGV4IDMxMGFlNmM0OGJkNGU4ZmYzNjkxN2FmODIzMTBkNjlmZTVm
MWE0OGQuLmRlYjhiYTcwZjBjMjk4YzU2YTY2ZTU2NjVjNDJkNDM4NDQ3ZDRkMTYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2Vu
ZGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9FdmVudFNlbmRlci5jcHAKQEAgLTg1NCwyMCArODU0LDIwIEBAIHZvaWQgRXZlbnRTZW5kZXI6
OmNvbnRleHRDbGljayhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFu
dCogcmVzCiAgICAgcmVzdWx0LT5zZXQoV2ViQmluZGluZ3M6Om1ha2VTdHJpbmdBcnJheShtYWtl
TWVudUl0ZW1TdHJpbmdzRm9yKGxhc3RDb250ZXh0TWVudSwgbV9kZWxlZ2F0ZSkpKTsKIH0KIAot
Y2xhc3MgTW91c2VEb3duVGFzazogcHVibGljIE1ldGhvZFRhc2s8RXZlbnRTZW5kZXI+IHsKK2Ns
YXNzIE1vdXNlRG93blRhc2s6IHB1YmxpYyBXZWJNZXRob2RUYXNrPEV2ZW50U2VuZGVyPiB7CiBw
dWJsaWM6CiAgICAgTW91c2VEb3duVGFzayhFdmVudFNlbmRlciogb2JqLCBjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZykKLSAgICAgICAgOiBNZXRob2RUYXNrPEV2ZW50U2VuZGVyPihvYmopLCBt
X2FyZ3VtZW50cyhhcmcpIHsgfQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8RXZlbnRTZW5kZXI+
KG9iaiksIG1fYXJndW1lbnRzKGFyZykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQo
KSB7IG1fb2JqZWN0LT5tb3VzZURvd24obV9hcmd1bWVudHMsIDApOyB9CiAKIHByaXZhdGU6CiAg
ICAgQ3BwQXJndW1lbnRMaXN0IG1fYXJndW1lbnRzOwogfTsKIAotY2xhc3MgTW91c2VVcFRhc2s6
IHB1YmxpYyBNZXRob2RUYXNrPEV2ZW50U2VuZGVyPiB7CitjbGFzcyBNb3VzZVVwVGFzazogcHVi
bGljIFdlYk1ldGhvZFRhc2s8RXZlbnRTZW5kZXI+IHsKIHB1YmxpYzoKICAgICBNb3VzZVVwVGFz
ayhFdmVudFNlbmRlciogb2JqLCBjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZykKLSAgICAgICAg
OiBNZXRob2RUYXNrPEV2ZW50U2VuZGVyPihvYmopLCBtX2FyZ3VtZW50cyhhcmcpIHsgfQorICAg
ICAgICA6IFdlYk1ldGhvZFRhc2s8RXZlbnRTZW5kZXI+KG9iaiksIG1fYXJndW1lbnRzKGFyZykg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSB7IG1fb2JqZWN0LT5tb3VzZVVwKG1f
YXJndW1lbnRzLCAwKTsgfQogCiBwcml2YXRlOgpAQCAtODgxLDEwICs4ODEsMTAgQEAgdm9pZCBF
dmVudFNlbmRlcjo6c2NoZWR1bGVBc3luY2hyb25vdXNDbGljayhjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3AKICAgICBwb3N0VGFzayhuZXcgTW91c2VVcFRhc2sodGhpcywgYXJn
dW1lbnRzKSk7CiB9CiAKLWNsYXNzIEtleURvd25UYXNrIDogcHVibGljIE1ldGhvZFRhc2s8RXZl
bnRTZW5kZXI+IHsKK2NsYXNzIEtleURvd25UYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8RXZl
bnRTZW5kZXI+IHsKIHB1YmxpYzoKICAgICBLZXlEb3duVGFzayhFdmVudFNlbmRlciogb2JqLCBj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZykKLSAgICAgICAgOiBNZXRob2RUYXNrPEV2ZW50U2Vu
ZGVyPihvYmopLCBtX2FyZ3VtZW50cyhhcmcpIHsgfQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8
RXZlbnRTZW5kZXI+KG9iaiksIG1fYXJndW1lbnRzKGFyZykgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHJ1bklmVmFsaWQoKSB7IG1fb2JqZWN0LT5rZXlEb3duKG1fYXJndW1lbnRzLCAwKTsgfQogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvRXZlbnRTZW5kZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmgKaW5kZXggNjVkZmNjYjhjMTU1ZTI1NDg4Mjg2ODYx
MmJhODIyYzQwMWRlYTExOS4uZDA3ZTE0Y2M2ZjJkMDY3NDQ5OWNkZDdkMjg5YmRiMjRmYmU2NjZi
MSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvRXZlbnRTZW5kZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9FdmVudFNlbmRlci5oCkBAIC0zOCw5ICszOCw5IEBACiAjZGVmaW5lIEV2ZW50
U2VuZGVyX2gKIAogI2luY2x1ZGUgIkNwcEJvdW5kQ2xhc3MuaCIKLSNpbmNsdWRlICJUYXNrLmgi
CiAjaW5jbHVkZSAiV2ViRHJhZ09wZXJhdGlvbi5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnQu
aCIKKyNpbmNsdWRlICJXZWJUYXNrLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIK
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMzEsNyArMTMxLDcgQEAgcHVibGljOgogICAgIENw
cFZhcmlhbnQgd21TeXNEZWFkQ2hhcjsKICNlbmRpZgogCi0gICAgVGFza0xpc3QqIHRhc2tMaXN0
KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAgICBXZWJUYXNrTGlzdCogdGFza0xpc3QoKSB7
IHJldHVybiAmbV90YXNrTGlzdDsgfQogCiBwcml2YXRlOgogICAgIFdlYktpdDo6V2ViVmlldyog
d2VidmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQpAQCAtMTY1LDcgKzE2NSw3IEBAIHByaXZh
dGU6CiAgICAgLy8gSGFuZGxlIGEgcmVxdWVzdCB0byBzZW5kIGEgd2hlZWwgZXZlbnQuCiAgICAg
dm9pZCBoYW5kbGVNb3VzZVdoZWVsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
LCBib29sIGNvbnRpbnVvdXMpOwogCi0gICAgVGFza0xpc3QgbV90YXNrTGlzdDsKKyAgICBXZWJU
YXNrTGlzdCBtX3Rhc2tMaXN0OwogCiAgICAgVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRlOwogICAg
IFdlYktpdDo6V2ViVmlldyogbV93ZWJWaWV3OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGFzay5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UYXNrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDgwYmVlZjM0OTkzN2Q2MzU0MGRlZmE5MDY1MzFmNjEwOGQ3NWE1MS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UYXNrLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGFzay5oIgotCi0j
aW5jbHVkZSAiV2ViS2l0LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBw
b3J0LmgiCi0KLVdlYlRhc2s6OldlYlRhc2soVGFza0xpc3QqIGxpc3QpCi0gICAgOiBtX3Rhc2tM
aXN0KGxpc3QpCi17Ci0gICAgbV90YXNrTGlzdC0+cmVnaXN0ZXJUYXNrKHRoaXMpOwotfQotCi1X
ZWJUYXNrOjp+V2ViVGFzaygpCi17Ci0gICAgaWYgKG1fdGFza0xpc3QpCi0gICAgICAgIG1fdGFz
a0xpc3QtPnVucmVnaXN0ZXJUYXNrKHRoaXMpOwotfQotCi12b2lkIFRhc2tMaXN0Ojp1bnJlZ2lz
dGVyVGFzayhXZWJUYXNrKiB0YXNrKQotewotICAgIHNpemVfdCBpbmRleCA9IG1fdGFza3MuZmlu
ZCh0YXNrKTsKLSAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCi0gICAgICAgIG1fdGFza3MucmVt
b3ZlKGluZGV4KTsKLX0KLQotdm9pZCBUYXNrTGlzdDo6cmV2b2tlQWxsKCkKLXsKLSAgICB3aGls
ZSAoIW1fdGFza3MuaXNFbXB0eSgpKQotICAgICAgICBtX3Rhc2tzWzBdLT5jYW5jZWwoKTsKLX0K
LQotc3RhdGljIHZvaWQgaW52b2tlVGFzayh2b2lkKiBjb250ZXh0KQotewotICAgIFdlYlRhc2sq
IHRhc2sgPSBzdGF0aWNfY2FzdDxXZWJUYXNrKj4oY29udGV4dCk7Ci0gICAgdGFzay0+cnVuKCk7
Ci0gICAgZGVsZXRlIHRhc2s7Ci19Ci0KLXZvaWQgcG9zdFRhc2soV2ViVGFzayogdGFzaykKLXsK
LSAgICBXZWJLaXQ6OndlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jYWxsT25NYWluVGhyZWFkKGlu
dm9rZVRhc2ssIHN0YXRpY19jYXN0PHZvaWQqPih0YXNrKSk7Ci19Ci0KLXZvaWQgcG9zdERlbGF5
ZWRUYXNrKFdlYlRhc2sqIHRhc2ssIGludDY0X3QgbXMpCi17Ci0gICAgd2Via2l0X3N1cHBvcnQ6
OlBvc3REZWxheWVkVGFzayh0YXNrLCBtcyk7Ci19Ci0KLQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGFzay5oIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGFzay5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwYjMyYzQ3MmIyNzUwNGU1ZmI2MDhkNmJlNDAxZmRhNjg4MGI5NzQwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rhc2suaAorKysgL2Rldi9udWxsCkBA
IC0xLDk2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFRhc2tfaAotI2RlZmluZSBUYXNrX2gKLQotI2luY2x1ZGUg
IndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotY2xhc3MgVGFza0xpc3Q7Ci0KLS8vIFdlYlRh
c2sgcmVwcmVzZW50cyBhIHRhc2sgd2hpY2ggY2FuIHJ1biBieSBwb3N0VGFzaygpIG9yIHBvc3RE
ZWxheWVkVGFzaygpLgotLy8gaXQgaXMgbmFtZWQgIldlYlRhc2siLCBub3QgIlRhc2siLCB0byBh
dm9pZCBjb25mbGlzdCB3aXRoIGJhc2UvdGFzay5oLgotY2xhc3MgV2ViVGFzayA6IHB1YmxpYyB3
ZWJraXRfc3VwcG9ydDo6VGFza0FkYXB0b3IgewotcHVibGljOgotICAgIFdlYlRhc2soVGFza0xp
c3QqKTsKLSAgICAvLyBUaGUgbWFpbiBjb2RlIG9mIHRoaXMgdGFzay4KLSAgICAvLyBBbiBpbXBs
ZW1lbnRhdGlvbiBvZiBydW4oKSBzaG91bGQgcmV0dXJuIGltbWVkaWF0ZWx5IGlmIGNhbmNlbCgp
IHdhcyBjYWxsZWQuCi0gICAgdmlydHVhbCB2b2lkIHJ1bigpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsKCkgPSAwOwotICAgIHZpcnR1YWwgfldlYlRhc2soKTsKLQotcHJpdmF0ZToKLSAg
ICB2aXJ0dWFsIHZvaWQgUnVuKCkgeyBydW4oKTsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgVGFza0xp
c3QqIG1fdGFza0xpc3Q7Ci19OwotCi1jbGFzcyBUYXNrTGlzdCB7Ci1wdWJsaWM6Ci0gICAgVGFz
a0xpc3QoKSB7IH0KLSAgICB+VGFza0xpc3QoKSB7IHJldm9rZUFsbCgpOyB9Ci0gICAgdm9pZCBy
ZWdpc3RlclRhc2soV2ViVGFzayogdGFzaykgeyBtX3Rhc2tzLmFwcGVuZCh0YXNrKTsgfQotICAg
IHZvaWQgdW5yZWdpc3RlclRhc2soV2ViVGFzayopOwotICAgIHZvaWQgcmV2b2tlQWxsKCk7Ci0K
LXByaXZhdGU6Ci0gICAgVmVjdG9yPFdlYlRhc2sqPiBtX3Rhc2tzOwotfTsKLQotLy8gQSB0YXNr
IGNvbnRhaW5pbmcgYW4gb2JqZWN0IHBvaW50ZXIgb2YgY2xhc3MgVC4gSXMgaXMgc3VwcG9zZWQg
dGhhdAotLy8gcnVuaWZWYWxpZCgpIGNhbGxzIGEgbWVtYmVyIGZ1bmN0aW9uIG9mIHRoZSBvYmpl
Y3QgcG9pbnRlci4KLS8vIENsYXNzIFQgbXVzdCBoYXZlICJUYXNrTGlzdCogdGFza0xpc3QoKSIu
Ci10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBNZXRob2RUYXNrOiBwdWJsaWMgV2ViVGFzayB7Ci1w
dWJsaWM6Ci0gICAgTWV0aG9kVGFzayhUKiBvYmplY3QpOiBXZWJUYXNrKG9iamVjdC0+dGFza0xp
c3QoKSksIG1fb2JqZWN0KG9iamVjdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJ1bigpCi0gICAg
ewotICAgICAgICBpZiAobV9vYmplY3QpCi0gICAgICAgICAgICBydW5JZlZhbGlkKCk7Ci0gICAg
fQotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKQotICAgIHsKLSAgICAgICAgbV9vYmplY3QgPSAw
OwotICAgICAgICBtX3Rhc2tMaXN0LT51bnJlZ2lzdGVyVGFzayh0aGlzKTsKLSAgICAgICAgbV90
YXNrTGlzdCA9IDA7Ci0gICAgfQotICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgPSAwOwot
Ci1wcm90ZWN0ZWQ6Ci0gICAgVCogbV9vYmplY3Q7Ci19OwotCi12b2lkIHBvc3RUYXNrKFdlYlRh
c2sqKTsKLXZvaWQgcG9zdERlbGF5ZWRUYXNrKFdlYlRhc2sqLCBpbnQ2NF90IG1zKTsKLQotI2Vu
ZGlmIC8vIFRhc2tfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCmluZGV4IGY3MDY5NDAxYThmMDA0M2NmM2Yy
N2I3YzFhMTg0ZGZhOTYwZWVjZWMuLjM5ZTE5ZDU3MzY1ZDAzYzY2ODQxZjg3ZjI2YWNmNDU0MWVl
MDdkN2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKQEAgLTMzLDcgKzMzLDYgQEAKICNkZWZpbmUgVGVz
dFJ1bm5lcl9oCiAKICNpbmNsdWRlICJDcHBCb3VuZENsYXNzLmgiCi0jaW5jbHVkZSAiVGFzay5o
IgogI2luY2x1ZGUgIldlYkRlbGl2ZXJlZEludGVudENsaWVudC5oIgogI2luY2x1ZGUgIldlYlRl
eHREaXJlY3Rpb24uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJBcnJheUJ1ZmZlclZpZXcuaCIK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYlRhc2suY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvV2ViVGFzay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQ5YTc1ZDc0ZTExZDFhYzAxMmRhMGU2MjA1ODM2
ZDUyNzNhOWEwMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRhc2suY3BwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVGFzay5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgor
CisjaW5jbHVkZSAiV2ViS2l0LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1T
dXBwb3J0LmgiCisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKKworV2ViVGFzazo6V2ViVGFz
ayhXZWJUYXNrTGlzdCogbGlzdCkKKyAgICA6IG1fdGFza0xpc3QobGlzdCkKK3sKKyAgICBtX3Rh
c2tMaXN0LT5yZWdpc3RlclRhc2sodGhpcyk7Cit9CisKK1dlYlRhc2s6On5XZWJUYXNrKCkKK3sK
KyAgICBpZiAobV90YXNrTGlzdCkKKyAgICAgICAgbV90YXNrTGlzdC0+dW5yZWdpc3RlclRhc2so
dGhpcyk7Cit9CisKK3ZvaWQgV2ViVGFza0xpc3Q6OnVucmVnaXN0ZXJUYXNrKFdlYlRhc2sqIHRh
c2spCit7CisgICAgc3RkOjp2ZWN0b3I8V2ViVGFzayo+OjppdGVyYXRvciBwb3MgPSBzdGQ6OmZp
bmQobV90YXNrcy5iZWdpbigpLCBtX3Rhc2tzLmVuZCgpLCB0YXNrKTsKKyAgICBpZiAocG9zICE9
IG1fdGFza3MuZW5kKCkpCisgICAgICAgIG1fdGFza3MuZXJhc2UocG9zKTsKK30KKwordm9pZCBX
ZWJUYXNrTGlzdDo6cmV2b2tlQWxsKCkKK3sKKyAgICB3aGlsZSAoIW1fdGFza3MuZW1wdHkoKSkK
KyAgICAgICAgbV90YXNrc1swXS0+Y2FuY2VsKCk7Cit9CisKK3N0YXRpYyB2b2lkIGludm9rZVRh
c2sodm9pZCogY29udGV4dCkKK3sKKyAgICBXZWJUYXNrKiB0YXNrID0gc3RhdGljX2Nhc3Q8V2Vi
VGFzayo+KGNvbnRleHQpOworICAgIHRhc2stPnJ1bigpOworICAgIGRlbGV0ZSB0YXNrOworfQor
Cit2b2lkIHBvc3RUYXNrKFdlYlRhc2sqIHRhc2spCit7CisgICAgV2ViS2l0Ojp3ZWJLaXRQbGF0
Zm9ybVN1cHBvcnQoKS0+Y2FsbE9uTWFpblRocmVhZChpbnZva2VUYXNrLCBzdGF0aWNfY2FzdDx2
b2lkKj4odGFzaykpOworfQorCit2b2lkIHBvc3REZWxheWVkVGFzayhXZWJUYXNrKiB0YXNrLCBp
bnQ2NF90IG1zKQoreworICAgIHdlYmtpdF9zdXBwb3J0OjpQb3N0RGVsYXllZFRhc2sodGFzaywg
bXMpOworfQorCit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0U2hlbGwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNw
cAppbmRleCA0ODU0ZjVlYTMxYmQwYTQzYmY4M2NiN2Q1ZDVhMGU2ZDg0ZWFkZTk0Li4yNjkyZTc0
NTg2MGViMzM5YjM5MGZhZjk1NDQ1Mjk4OWJmMDVlN2YyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTY4LDYgKzY4LDcgQEAKIAogCiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXI7CiB1c2luZyBu
YW1lc3BhY2Ugc3RkOwogCiAvLyBDb250ZW50IGFyZWEgc2l6ZSBmb3IgbmV3bHkgY3JlYXRlZCB3
aW5kb3dzLgpAQCAtMTU0LDcgKzE1NSw3IEBAIFRlc3RTaGVsbDo6VGVzdFNoZWxsKCkKIHZvaWQg
VGVzdFNoZWxsOjppbml0aWFsaXplKCkKIHsKICAgICBtX3dlYlBlcm1pc3Npb25zID0gYWRvcHRQ
dHIobmV3IFdlYlBlcm1pc3Npb25zKHRoaXMpKTsKLSAgICBtX3Rlc3RJbnRlcmZhY2VzID0gYWRv
cHRQdHIobmV3IFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2VzKCkpOworICAgIG1fdGVz
dEludGVyZmFjZXMgPSBhZG9wdFB0cihuZXcgV2ViVGVzdEludGVyZmFjZXMoKSk7CiAgICAgbV90
ZXN0UnVubmVyID0gYWRvcHRQdHIobmV3IERSVFRlc3RSdW5uZXIodGhpcykpOwogI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAgICAgbV9u
b3RpZmljYXRpb25QcmVzZW50ZXIgPSBhZG9wdFB0cihuZXcgTm90aWZpY2F0aW9uUHJlc2VudGVy
KHRoaXMpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVz
ZXJNZWRpYUNsaWVudE1vY2suY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
VXNlck1lZGlhQ2xpZW50TW9jay5jcHAKaW5kZXggZWQxM2ZmYTU4NjllMjU2NGJiZTIzMTc5ZmFk
ZmVkMWQyOTQ0Yjg2ZC4uODdjYTE1NmY2ZDBlNDRhNjgwZDJhZDkzNmQ2NDAxNTU0NzM0MGFhNSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xp
ZW50TW9jay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1l
ZGlhQ2xpZW50TW9jay5jcHAKQEAgLTQ0LDExICs0NCwxMiBAQAogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2Vi
VGVzdFJ1bm5lcjsKIAotY2xhc3MgVXNlck1lZGlhUmVxdWVzdFRhc2sgOiBwdWJsaWMgTWV0aG9k
VGFzazxXZWJVc2VyTWVkaWFDbGllbnRNb2NrPiB7CitjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0VGFz
ayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+IHsKIHB1Ymxp
YzoKICAgICBVc2VyTWVkaWFSZXF1ZXN0VGFzayhXZWJVc2VyTWVkaWFDbGllbnRNb2NrKiBvYmpl
Y3QsIGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYk1lZGlhU3Ry
ZWFtRGVzY3JpcHRvciByZXN1bHQpCi0gICAgICAgIDogTWV0aG9kVGFzazxXZWJVc2VyTWVkaWFD
bGllbnRNb2NrPihvYmplY3QpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxXZWJVc2VyTWVkaWFD
bGllbnRNb2NrPihvYmplY3QpCiAgICAgICAgICwgbV9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgICAg
ICwgbV9yZXN1bHQocmVzdWx0KQogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaAppbmRleCBmNDM4NzU5NzY2NjFm
MmI3ZTA3NmIyNjFmNWYyZTBhZmIzNmUyOTg4Li5lZjRjYjUxZDFhZmNmZGYzZjA1MjI1ZDc4MGI2
MjVhMDlhMjQ0NTRkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oCkBAIC0zMyw3ICszMyw3IEBACiAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAiVGVzdFJ1bm5lci9zcmMvVGFzay5oIgorI2lu
Y2x1ZGUgIldlYlRhc2suaCIKICNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnQuaCIKICNpbmNs
dWRlICJ3ZWJraXQvc3VwcG9ydC90ZXN0X21lZGlhX3N0cmVhbV9jbGllbnQuaCIKICNpbmNsdWRl
IDxwdWJsaWMvV2ViQ29tbW9uLmg+CkBAIC01MCwxMiArNTAsMTIgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFdlYktpdDo6V2ViVXNlck1l
ZGlhUmVxdWVzdCYpOwogCiAgICAgLy8gVGFzayByZWxhdGVkIG1ldGhvZHMKLSAgICBUYXNrTGlz
dCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQorICAgIFdlYlRlc3RSdW5uZXI6
OldlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CiAKIHByaXZh
dGU6CiAgICAgV2ViVXNlck1lZGlhQ2xpZW50TW9jaygpIHsgfQogCi0gICAgVGFza0xpc3QgbV90
YXNrTGlzdDsKKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwogfTsK
IAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggMTA2Y2FhOTc4NWY1M2NiNzIyYmMwZjZh
YzEyMWY0MzNiMzMwODlmZi4uMGExOWU2MjgxNDg1NmVlNGU5YzY4MzBhNWNlZGJmNmNkNDllNDk1
OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApA
QCAtODgsNiArODgsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lcjsKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CiAKIHN0YXRpYyBjb25zdCBpbnQgc2NyZWVuV2lkdGggPSAxOTIwOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXggYmE3NjM1MDNhYWU2
ZDY2ODEwNWE4ZDk1MDllZGFjOTA1YmRlZTk0Ny4uYmNhMGJkNjc4OWZhNjZhYmRlMjMzMDc0ZWU5
NjVmNGU0OGJlNTgyYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5oCkBAIC0zMywxMyArMzMsMTMgQEAKIAogI2luY2x1ZGUgIk1vY2tTcGVsbENoZWNrLmgi
CiAjaW5jbHVkZSAiVGVzdE5hdmlnYXRpb25Db250cm9sbGVyLmgiCi0jaW5jbHVkZSAiVGVzdFJ1
bm5lci9zcmMvVGFzay5oIgogI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24u
aCIKICNpbmNsdWRlICJXZWJDdXJzb3JJbmZvLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQu
aCIKICNpbmNsdWRlICJXZWJJbnRlbnRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViUHJlcmVuZGVy
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJTcGVsbENoZWNrQ2xpZW50LmgiCisjaW5jbHVkZSAi
V2ViVGFzay5oIgogI2luY2x1ZGUgIldlYlRlc3REZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIldlYlZp
ZXdDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMjg2LDE5ICsyODYsMTkg
QEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJs
aWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICAvLyBHZW9sb2NhdGlvbiBjbGllbnQgbW9j
a3MgZm9yIERSVFRlc3RSdW5uZXIKICAgICBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9j
ayogZ2VvbG9jYXRpb25DbGllbnRNb2NrKCk7CiAKLSAgICAvLyBQZW5kaW5nIHRhc2sgbGlzdCwg
Tm90ZSB0YWh0IHRoZSBtZXRob2QgaXMgcmVmZXJyZWQgZnJvbSBNZXRob2RUYXNrIGNsYXNzLgot
ICAgIFRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CisgICAgLy8g
UGVuZGluZyB0YXNrIGxpc3QsIE5vdGUgdGFodCB0aGUgbWV0aG9kIGlzIHJlZmVycmVkIGZyb20g
V2ViTWV0aG9kVGFzayBjbGFzcy4KKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCogdGFz
a0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQogCiAgICAgLy8gVGhlIGN1cnJlbnQgd2Vi
IGludGVudHMgcmVxdWVzdC4KICAgICBXZWJLaXQ6OldlYkludGVudFJlcXVlc3QqIGN1cnJlbnRJ
bnRlbnRSZXF1ZXN0KCkgeyByZXR1cm4gJm1fY3VycmVudFJlcXVlc3Q7IH0KIAogcHJpdmF0ZToK
IAotICAgIGNsYXNzIEhvc3RNZXRob2RUYXNrIDogcHVibGljIE1ldGhvZFRhc2s8V2ViVmlld0hv
c3Q+IHsKKyAgICBjbGFzcyBIb3N0TWV0aG9kVGFzayA6IHB1YmxpYyBXZWJUZXN0UnVubmVyOjpX
ZWJNZXRob2RUYXNrPFdlYlZpZXdIb3N0PiB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVm
IHZvaWQgKFdlYlZpZXdIb3N0OjoqQ2FsbGJhY2tNZXRob2RUeXBlKSgpOwogICAgICAgICBIb3N0
TWV0aG9kVGFzayhXZWJWaWV3SG9zdCogb2JqZWN0LCBDYWxsYmFja01ldGhvZFR5cGUgY2FsbGJh
Y2spCi0gICAgICAgICAgICA6IE1ldGhvZFRhc2s8V2ViVmlld0hvc3Q+KG9iamVjdCkKKyAgICAg
ICAgICAgIDogV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazxXZWJWaWV3SG9zdD4ob2JqZWN0
KQogICAgICAgICAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQogICAgICAgICB7IH0KIApAQCAt
NDQxLDcgKzQ0MSw3IEBAIHByaXZhdGU6CiAgICAgV2ViS2l0OjpXZWJTdHJpbmcgbV9sYXN0UmVx
dWVzdGVkVGV4dENoZWNrU3RyaW5nOwogICAgIFdlYktpdDo6V2ViVGV4dENoZWNraW5nQ29tcGxl
dGlvbiogbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNraW5nQ29tcGxldGlvbjsKIAotICAgIFRhc2tM
aXN0IG1fdGFza0xpc3Q7CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QgbV90YXNrTGlz
dDsKICAgICBWZWN0b3I8V2ViS2l0OjpXZWJXaWRnZXQqPiBtX3BvcHVwbWVudXM7CiAKICNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169915</attachid>
            <date>2012-10-22 08:08:38 -0700</date>
            <delta_ts>2012-10-22 13:02:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99964-20121022170716.patch</filename>
            <type>text/plain</type>
            <size>47045</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMDMwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGRlYmFhNTIyMGNhOGZjZDRjZDI0OGRmYTA4NjljODgz
YTU1ZTM3ZC4uODRhYzM5Y2UzYmI4NDNmYWM2OGFmMGU2YWRjMzgyYjkxMjVhMGQ2YSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgx
IEBACisyMDEyLTEwLTIyICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gaW50cm9kdWNlIFdlYlRhc2sgdG8gdGhlIFRlc3RSdW5uZXIg
bGlicmFyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTk5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5jcHA6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5oOgorICAgICAgICAoRFJURGV2VG9vbHNB
Z2VudDo6dGFza0xpc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERl
dlRvb2xzQ2xpZW50LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRE
ZXZUb29sc0NsaWVudC5oOgorICAgICAgICAoRFJURGV2VG9vbHNDbGllbnQ6OnRhc2tMaXN0KToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcDoKKyAg
ICAgICAgKEludm9rZUNhbGxiYWNrVGFzazo6SW52b2tlQ2FsbGJhY2tUYXNrKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmg6CisgICAgICAgIChEUlRU
ZXN0UnVubmVyOjp0YXNrTGlzdCk6CisgICAgICAgIChEUlRUZXN0UnVubmVyOjpXb3JrUXVldWU6
OnRhc2tMaXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcDoKKyAgICAgICAgKFJUQ1Nlc3Npb25EZXNjcmlwdGlv
blJlcXVlc3RTdWNjZWRlZFRhc2s6OlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RTdWNjZWRl
ZFRhc2spOgorICAgICAgICAoUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdEZhaWxlZFRhc2s6
OlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RGYWlsZWRUYXNrKToKKyAgICAgICAgKFJUQ1N0
YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2s6OlJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2spOgor
ICAgICAgICAoUlRDVm9pZFJlcXVlc3RUYXNrOjpSVENWb2lkUmVxdWVzdFRhc2spOgorICAgICAg
ICAoU3RyaW5nRGF0YVRhc2s6OlN0cmluZ0RhdGFUYXNrKToKKyAgICAgICAgKENoYXJQdHJEYXRh
VGFzazo6Q2hhclB0ckRhdGFUYXNrKToKKyAgICAgICAgKERhdGFDaGFubmVsUmVhZHlTdGF0ZVRh
c2s6OkRhdGFDaGFubmVsUmVhZHlTdGF0ZVRhc2spOgorICAgICAgICAoUlRDUGVlckNvbm5lY3Rp
b25SZWFkeVN0YXRlVGFzazo6UlRDUGVlckNvbm5lY3Rpb25SZWFkeVN0YXRlVGFzayk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlci5oOgorICAgICAgICAoTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcik6CisgICAg
ICAgIChNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjp0YXNrTGlzdCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOjpTcGVlY2hUYXNrOjpT
cGVlY2hUYXNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyLmg6CisgICAgICAgIChNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyOjp0YXNrTGlzdCk6CisgICAgICAgIChNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXpl
ci5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJl
Y29nbml6ZXIuaDoKKyAgICAgICAgKE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyOjp0YXNrTGlzdCk6
CisgICAgICAgIChNb2NrV2ViU3BlZWNoUmVjb2duaXplcik6CisgICAgICAgIChNb2NrV2ViU3Bl
ZWNoUmVjb2duaXplcjo6U3RlcFRhc2s6OlN0ZXBUYXNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUYXNrLmg6IFJlbmFtZWQgZnJvbSBU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UYXNrLmguCisgICAg
ICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRhc2spOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6V2ViVGFzazo6UnVuKToKKyAgICAgICAgKFdlYlRhc2tMaXN0KToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0OjpXZWJUYXNrTGlzdCk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpXZWJUYXNrTGlzdDo6fldlYlRhc2tMaXN0KToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OldlYlRhc2tMaXN0OjpyZWdpc3RlclRhc2spOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKFdl
YlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6S2V5RG93blRhc2s6OktleURv
d25UYXNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9FdmVudFNlbmRlci5oOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6OnRh
c2tMaXN0KToKKyAgICAgICAgKEV2ZW50U2VuZGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmg6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGFzay5jcHA6IFJlbmFtZWQgZnJv
bSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UYXNrLmNwcC4K
KyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGFz
azo6V2ViVGFzayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUYXNrOjp+V2ViVGFzayk6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdDo6dW5yZWdpc3RlclRhc2spOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3Q6OnJldm9rZUFsbCk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjppbnZva2VUYXNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OnBv
c3RUYXNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OnBvc3REZWxheWVkVGFzayk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcDoKKyAgICAgICAgKFRl
c3RTaGVsbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHA6CisgICAgICAgIChVc2VyTWVkaWFSZXF1ZXN0VGFz
azo6VXNlck1lZGlhUmVxdWVzdFRhc2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaDoKKyAgICAgICAgKFdlYlVzZXJNZWRpYUNsaWVu
dE1vY2s6OnRhc2tMaXN0KToKKyAgICAgICAgKFdlYlVzZXJNZWRpYUNsaWVudE1vY2spOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorICAgICAgICAoV2ViVmll
d0hvc3QpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnRhc2tMaXN0KToKKyAgICAgICAgKFdlYlZp
ZXdIb3N0OjpIb3N0TWV0aG9kVGFzazo6SG9zdE1ldGhvZFRhc2spOgorCiAyMDEyLTEwLTIxICBK
b2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gaW50cm9kdWNlIGEgcHVibGljIEFQSSBmb3IgdGhlIFRlc3RSdW5uZXIgbGlicmFyeQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKaW5kZXggN2U3ZDY5YmFkYmY1ZDY4
NDRmOGI4ZTM1ZmMxOThhMmFmMmJjMzQ0ZS4uMTBhZjQyNGYyYmU2NzYzN2JmN2Q4NTg2N2QzNTJm
ZmY5ZjkzOGExOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRy
ZWUuZ3lwaQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBA
IC02Nyw2ICs2Nyw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMv
V2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGVzdERlbGVnYXRlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L1Rlc3RSdW5uZXIvcHVibGljL1dlYkV2ZW50U2VuZGVyLmgnLAorICAgICAgICAgICAgJ2Nocm9t
aXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRhc2suaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
VGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5jcHAn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyQ2hyb21pdW0uaCcsCkBAIC04MCw4ICs4MSw2IEBACiAgICAgICAgICAgICAnY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvR2FtZXBhZENvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9HYW1lcGFkQ29udHJvbGxlci5oJywKLSAgICAgICAgICAgICdj
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UYXNrLmNwcCcsCi0gICAgICAgICAgICAnY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvVGFzay5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwJywKQEAgLTkwLDYgKzg5LDcgQEAKICAgICAg
ICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNw
cCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViRXZlbnRTZW5kZXIu
Y3BwJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUYXNrLmNwcCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMu
Y3BwJywKICAgICAgICAgXSwKICAgICAgICAgJ3Rlc3RfcGx1Z2luX2ZpbGVzJzogWwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmNwcAppbmRl
eCBiNjY1OWE0N2ZjODAzYWVhYWNiNzEyZTNmYmUzMTM5OTY5NjRjN2QzLi4xOGFlODdlZWZlMzUx
Yzc2Y2ZiMGJkMDU0ZjNmYzFjMjcyNDY0ZGE1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmNwcApAQCAtMzksNiArMzksNyBAQAogI2lu
Y2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lcjsKIAogRFJURGV2VG9vbHNB
Z2VudDo6RFJURGV2VG9vbHNBZ2VudCgpCiAgICAgOiBtX2RydERldlRvb2xzQ2xpZW50KDApCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmgKaW5k
ZXggZDA2NmI3YTcxOGZkMjg4ZWIzOWUyNjViY2NmMTk2NTZmZDg2OGU5Ny4uYzEzYWVmN2ZhMDA4
OTI5OTc2M2RmY2M3Yzc5YWUwYzYyNzYxYjhmZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0RSVERldlRvb2xzQWdlbnQuaApAQCAtMzEsOCArMzEsOCBAQAogI2lmbmRl
ZiBEUlREZXZUb29sc0FnZW50X2gKICNkZWZpbmUgRFJURGV2VG9vbHNBZ2VudF9oCiAKLSNpbmNs
dWRlICJUZXN0UnVubmVyL3NyYy9UYXNrLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudENs
aWVudC5oIgorI2luY2x1ZGUgIldlYlRhc2suaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJp
bmcuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgpAQCAtNjksMjMgKzY5LDIzIEBAIHB1YmxpYzoKICAgICB2b2lkIGRldGFjaCgpOwogCiAg
ICAgYm9vbCBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGxvbmcgY2FsbElELCBjb25zdCBzdGQ6OnN0
cmluZyYgc2NyaXB0KTsKLSAgICBUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNr
TGlzdDsgfQorICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0
dXJuICZtX3Rhc2tMaXN0OyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjYWxsKGNvbnN0IFdlYktp
dDo6V2ViU3RyaW5nJiBhcmdzKTsKICAgICBXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnQqIHdlYkRl
dlRvb2xzQWdlbnQoKTsKIAotICAgIGNsYXNzIEFzeW5jQ2FsbFRhc2s6IHB1YmxpYyBNZXRob2RU
YXNrPERSVERldlRvb2xzQWdlbnQ+IHsKKyAgICBjbGFzcyBBc3luY0NhbGxUYXNrOiBwdWJsaWMg
V2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazxEUlREZXZUb29sc0FnZW50PiB7CiAgICAgcHVi
bGljOgogICAgICAgICBBc3luY0NhbGxUYXNrKERSVERldlRvb2xzQWdlbnQqIG9iamVjdCwgY29u
c3QgV2ViS2l0OjpXZWJTdHJpbmcmIGFyZ3MpCi0gICAgICAgICAgICA6IE1ldGhvZFRhc2s8RFJU
RGV2VG9vbHNBZ2VudD4ob2JqZWN0KSwgbV9hcmdzKGFyZ3MpIHsgfQorICAgICAgICAgICAgOiBX
ZWJUZXN0UnVubmVyOjpXZWJNZXRob2RUYXNrPERSVERldlRvb2xzQWdlbnQ+KG9iamVjdCksIG1f
YXJncyhhcmdzKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSB7IG1fb2Jq
ZWN0LT5jYWxsKG1fYXJncyk7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIFdlYktpdDo6V2Vi
U3RyaW5nIG1fYXJnczsKICAgICB9OwogCi0gICAgVGFza0xpc3QgbV90YXNrTGlzdDsKKyAgICBX
ZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwogICAgIERSVERldlRvb2xzQ2xp
ZW50KiBtX2RydERldlRvb2xzQ2xpZW50OwogICAgIGludCBtX3JvdXRpbmdJRDsKICAgICBXZWJL
aXQ6OldlYlZpZXcqIG1fd2ViVmlldzsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmNwcAppbmRleCBhN2ZjNGQwNDg2ZjI4ZDMyYjFlZWZk
NDRhMGZmNzQ2Y2E0ZWFmOTU1Li45YWFmMmMyMWNkNmMzNDFiY2VmYmYyMjZjMmI4YWU5Y2YxMWE0
MDYzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29s
c0NsaWVudC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9v
bHNDbGllbnQuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJUZXN0UnVu
bmVyOwogCiBEUlREZXZUb29sc0NsaWVudDo6RFJURGV2VG9vbHNDbGllbnQoRFJURGV2VG9vbHNB
Z2VudCogYWdlbnQsIFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2xp
ZW50LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NsaWVudC5o
CmluZGV4IGVhZDM5NjM3OWI0YmU3ZTIxODkyNzUyYWFhMzhiMTkyNTlkOWY2NzEuLjVmNDg2ZGRk
MGQ1OWNhM2JmYTlmNzgxNTY4OTgzNDAzYzUyN2JiNTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmgKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuaApAQCAtMzEsOCArMzEsOCBAQAog
I2lmbmRlZiBEUlREZXZUb29sc0NsaWVudF9oCiAjZGVmaW5lIERSVERldlRvb2xzQ2xpZW50X2gK
IAotI2luY2x1ZGUgIlRlc3RSdW5uZXIvc3JjL1Rhc2suaCIKICNpbmNsdWRlICJXZWJEZXZUb29s
c0Zyb250ZW5kQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViVGFzay5oIgogI2luY2x1ZGUgInBsYXRm
b3JtL1dlYlN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KQEAgLTY0LDIxICs2NCwyMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhc3lu
Y0NhbGwoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGFyZ3MpOwogCiAgICAgdm9pZCBhbGxNZXNz
YWdlc1Byb2Nlc3NlZCgpOwotICAgIFRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rh
c2tMaXN0OyB9CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QqIHRhc2tMaXN0KCkgeyBy
ZXR1cm4gJm1fdGFza0xpc3Q7IH0KIAogIHByaXZhdGU6CiAgICAgdm9pZCBjYWxsKGNvbnN0IFdl
YktpdDo6V2ViU3RyaW5nJiBhcmdzKTsKLSAgICBjbGFzcyBBc3luY0NhbGxUYXNrOiBwdWJsaWMg
TWV0aG9kVGFzazxEUlREZXZUb29sc0NsaWVudD4geworICAgIGNsYXNzIEFzeW5jQ2FsbFRhc2s6
IHB1YmxpYyBXZWJUZXN0UnVubmVyOjpXZWJNZXRob2RUYXNrPERSVERldlRvb2xzQ2xpZW50PiB7
CiAgICAgcHVibGljOgogICAgICAgICBBc3luY0NhbGxUYXNrKERSVERldlRvb2xzQ2xpZW50KiBv
YmplY3QsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBhcmdzKQotICAgICAgICAgICAgOiBNZXRo
b2RUYXNrPERSVERldlRvb2xzQ2xpZW50PihvYmplY3QpLCBtX2FyZ3MoYXJncykgeyB9CisgICAg
ICAgICAgICA6IFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8RFJURGV2VG9vbHNDbGllbnQ+
KG9iamVjdCksIG1fYXJncyhhcmdzKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFs
aWQoKSB7IG1fb2JqZWN0LT5jYWxsKG1fYXJncyk7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAg
IFdlYktpdDo6V2ViU3RyaW5nIG1fYXJnczsKICAgICB9OwogCi0gICAgVGFza0xpc3QgbV90YXNr
TGlzdDsKKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwogICAgIFdl
YktpdDo6V2ViVmlldyogbV93ZWJWaWV3OwogICAgIERSVERldlRvb2xzQWdlbnQqIG1fZHJ0RGV2
VG9vbHNBZ2VudDsKICAgICBXVEY6Ok93blB0cjxXZWJLaXQ6OldlYkRldlRvb2xzRnJvbnRlbmQ+
IG1fd2ViRGV2VG9vbHNGcm9udGVuZDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vRFJUVGVzdFJ1bm5lci5jcHAKaW5kZXggMDgyNTk3YTExN2I5MmQ1OTcyODA3ZTlmMGUzYTM3
MjM0ZWQ5YzJhMy4uNDc4ZGQ5YTYzZmZkZDVhZWViMzBhODRmNzhiMTBiYjVkZGFkNzdlOSAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKQEAg
LTgzLDYgKzgzLDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXI7CiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCiBjbGFzcyBFbXB0eVdlYkRlbGl2ZXJlZEludGVudENsaWVudCA6IHB1YmxpYyBX
ZWJLaXQ6OldlYkRlbGl2ZXJlZEludGVudENsaWVudCB7CkBAIC0yMTE0LDEwICsyMTE1LDEwIEBA
IHZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0VGV4dFN1YnBpeGVsUG9zaXRpb25pbmcoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLWNs
YXNzIEludm9rZUNhbGxiYWNrVGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPERSVFRlc3RSdW5uZXI+
IHsKK2NsYXNzIEludm9rZUNhbGxiYWNrVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPERSVFRl
c3RSdW5uZXI+IHsKIHB1YmxpYzoKICAgICBJbnZva2VDYWxsYmFja1Rhc2soRFJUVGVzdFJ1bm5l
ciogb2JqZWN0LCBQYXNzT3duQXJyYXlQdHI8Q3BwVmFyaWFudD4gY2FsbGJhY2tBcmd1bWVudHMs
IHVpbnQzMl90IG51bWJlck9mQXJndW1lbnRzKQotICAgICAgICA6IE1ldGhvZFRhc2s8RFJUVGVz
dFJ1bm5lcj4ob2JqZWN0KQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8RFJUVGVzdFJ1bm5lcj4o
b2JqZWN0KQogICAgICAgICAsIG1fY2FsbGJhY2tBcmd1bWVudHMoY2FsbGJhY2tBcmd1bWVudHMp
CiAgICAgICAgICwgbV9udW1iZXJPZkFyZ3VtZW50cyhudW1iZXJPZkFyZ3VtZW50cykKICAgICB7
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVy
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmgKaW5kZXgg
NjBhMDM4YTI3ZGQ4OTRjYTFkNDQ3MTA5YmViYWQ3OGFlMmZlMDYxOS4uZWM0Nzc4ZmQ1YzQ2Zjhm
MzI4NzU4YTE1N2EzMjgyMTQ1NGI1YjIyMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0RSVFRlc3RSdW5uZXIuaApAQCAtNDMsNiArNDMsNyBAQAogI2RlZmluZSBEUlRUZXN0
UnVubmVyX2gKIAogI2luY2x1ZGUgIlRlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaCIKKyNpbmNs
dWRlICJXZWJUYXNrLmgiCiAKIGNsYXNzIFRlc3RTaGVsbDsKIApAQCAtNTExLDcgKzUxMiw3IEBA
IHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBib29sIHJ1bihUZXN0U2hlbGwqKSA9IDA7CiAgICAg
fTsKIAotICAgIFRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9Cisg
ICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFz
a0xpc3Q7IH0KIAogICAgIGJvb2wgc2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVV
bmxvYWQoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVm
b3JlVW5sb2FkOyB9CiAKQEAgLTUzNCwxNyArNTM1LDE3IEBAIHByaXZhdGU6CiAKICAgICAgICAg
dm9pZCBzZXRGcm96ZW4oYm9vbCBmcm96ZW4pIHsgbV9mcm96ZW4gPSBmcm96ZW47IH0KICAgICAg
ICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gbV9xdWV1ZS5pc0VtcHR5KCk7IH0KLSAgICAgICAg
VGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAgICAgICAgV2Vi
VGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7
IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgcHJvY2Vzc1dvcmsoKTsKLSAgICAgICAg
Y2xhc3MgV29ya1F1ZXVlVGFzazogcHVibGljIE1ldGhvZFRhc2s8V29ya1F1ZXVlPiB7CisgICAg
ICAgIGNsYXNzIFdvcmtRdWV1ZVRhc2s6IHB1YmxpYyBXZWJUZXN0UnVubmVyOjpXZWJNZXRob2RU
YXNrPFdvcmtRdWV1ZT4gewogICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBXb3JrUXVldWVU
YXNrKFdvcmtRdWV1ZSogb2JqZWN0KTogTWV0aG9kVGFzazxXb3JrUXVldWU+KG9iamVjdCkgeyB9
CisgICAgICAgICAgICBXb3JrUXVldWVUYXNrKFdvcmtRdWV1ZSogb2JqZWN0KTogV2ViVGVzdFJ1
bm5lcjo6V2ViTWV0aG9kVGFzazxXb3JrUXVldWU+KG9iamVjdCkgeyB9CiAgICAgICAgICAgICB2
aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIHsgbV9vYmplY3QtPnByb2Nlc3NXb3JrKCk7IH0KICAg
ICAgICAgfTsKIAotICAgICAgICBUYXNrTGlzdCBtX3Rhc2tMaXN0OworICAgICAgICBXZWJUZXN0
UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwogICAgICAgICBEZXF1ZTxXb3JrSXRlbSo+
IG1fcXVldWU7CiAgICAgICAgIGJvb2wgbV9mcm96ZW47CiAgICAgICAgIERSVFRlc3RSdW5uZXIq
IG1fY29udHJvbGxlcjsKQEAgLTU1OCw5ICs1NTksOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBs
b2dFcnJvclRvQ29uc29sZShjb25zdCBzdGQ6OnN0cmluZyYpOwogICAgIHZvaWQgY29tcGxldGVO
b3RpZnlEb25lKGJvb2wgaXNUaW1lb3V0KTsKLSAgICBjbGFzcyBOb3RpZnlEb25lVGltZWRPdXRU
YXNrOiBwdWJsaWMgTWV0aG9kVGFzazxEUlRUZXN0UnVubmVyPiB7CisgICAgY2xhc3MgTm90aWZ5
RG9uZVRpbWVkT3V0VGFzazogcHVibGljIFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8RFJU
VGVzdFJ1bm5lcj4gewogICAgIHB1YmxpYzoKLSAgICAgICAgTm90aWZ5RG9uZVRpbWVkT3V0VGFz
ayhEUlRUZXN0UnVubmVyKiBvYmplY3QpOiBNZXRob2RUYXNrPERSVFRlc3RSdW5uZXI+KG9iamVj
dCkgeyB9CisgICAgICAgIE5vdGlmeURvbmVUaW1lZE91dFRhc2soRFJUVGVzdFJ1bm5lciogb2Jq
ZWN0KTogV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazxEUlRUZXN0UnVubmVyPihvYmplY3Qp
IHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIHsgbV9vYmplY3QtPmNvbXBs
ZXRlTm90aWZ5RG9uZSh0cnVlKTsgfQogICAgIH07CiAKQEAgLTU3MSw3ICs1NzIsNyBAQCBwcml2
YXRlOgogICAgIGludCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKTsKIAogICAgIC8vIFVzZWQg
Zm9yIHRlc3QgdGltZW91dHMuCi0gICAgVGFza0xpc3QgbV90YXNrTGlzdDsKKyAgICBXZWJUZXN0
UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwogCiAgICAgLy8gTm9uLW93bmluZyBwb2lu
dGVyLiBUaGUgRFJUVGVzdFJ1bm5lciBpcyBvd25lZCBieSB0aGUgaG9zdC4KICAgICBUZXN0U2hl
bGwqIG1fc2hlbGw7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9N
b2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCmluZGV4IGQ2ZTVl
N2YwNWUxMmRiYzcyYjAxMGE3YmQ5MTBlY2QxY2ExZTk1MTMuLjkwZTkzNjgwOTdmMTFkMjEyNWFk
ZDU1OGQ5Mjg2NjdkNjAwN2I1OTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3Bw
CkBAIC00OCwxMSArNDgsMTIgQEAKICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyOwogCi1jbGFz
cyBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0U3VjY2VkZWRUYXNrIDogcHVibGljIE1ldGhv
ZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4geworY2xhc3MgUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uUmVxdWVzdFN1Y2NlZGVkVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPE1v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKIHB1YmxpYzoKICAgICBSVENTZXNzaW9u
RGVzY3JpcHRpb25SZXF1ZXN0U3VjY2VkZWRUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXIqIG9iamVjdCwgY29uc3QgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiByZXN1bHQpCi0gICAgICAgIDog
TWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCisgICAg
ICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmpl
Y3QpCiAgICAgICAgICwgbV9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgICAgICwgbV9yZXN1bHQocmVz
dWx0KQogICAgIHsKQEAgLTY4LDEwICs2OSwxMCBAQCBwcml2YXRlOgogICAgIFdlYlJUQ1Nlc3Np
b25EZXNjcmlwdGlvbiBtX3Jlc3VsdDsKIH07CiAKLWNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlwdGlv
blJlcXVlc3RGYWlsZWRUYXNrIDogcHVibGljIE1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlcj4geworY2xhc3MgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdEZhaWxl
ZFRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyPiB7CiBwdWJsaWM6CiAgICAgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdEZhaWxlZFRh
c2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBXZWJSVENT
ZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0JiByZXF1ZXN0KQotICAgICAgICA6IE1ldGhvZFRhc2s8
TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQorICAgICAgICA6IFdlYk1l
dGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQogICAgICAg
ICAsIG1fcmVxdWVzdChyZXF1ZXN0KQogICAgIHsKICAgICB9CkBAIC04NSwxMCArODYsMTAgQEAg
cHJpdmF0ZToKICAgICBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0IG1fcmVxdWVzdDsK
IH07CiAKLWNsYXNzIFJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2sgOiBwdWJsaWMgTWV0aG9k
VGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CitjbGFzcyBSVENTdGF0c1Jl
cXVlc3RTdWNjZWVkZWRUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlcj4gewogcHVibGljOgogICAgIFJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRl
ZFRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBXZWJL
aXQ6OldlYlJUQ1N0YXRzUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViS2l0OjpXZWJSVENTdGF0
c1Jlc3BvbnNlJiByZXNwb25zZSkKLSAgICAgICAgOiBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKKyAgICAgICAgOiBXZWJNZXRob2RUYXNrPE1vY2tX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKICAgICAgICAgLCBtX3JlcXVlc3Qo
cmVxdWVzdCkKICAgICAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQogICAgIHsKQEAgLTEwNCwx
MCArMTA1LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViS2l0OjpXZWJSVENTdGF0c1Jlc3BvbnNlIG1f
cmVzcG9uc2U7CiB9OwogCi1jbGFzcyBSVENWb2lkUmVxdWVzdFRhc2sgOiBwdWJsaWMgTWV0aG9k
VGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CitjbGFzcyBSVENWb2lkUmVx
dWVzdFRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyPiB7CiBwdWJsaWM6CiAgICAgUlRDVm9pZFJlcXVlc3RUYXNrKE1vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgY29uc3QgV2ViUlRDVm9pZFJlcXVlc3QmIHJlcXVl
c3QsIGJvb2wgc3VjY2VlZGVkKQotICAgICAgICA6IE1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8TW9ja1dl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQogICAgICAgICAsIG1fcmVxdWVzdChy
ZXF1ZXN0KQogICAgICAgICAsIG1fc3VjY2VlZGVkKHN1Y2NlZWRlZCkKICAgICB7CkBAIC0xMjYs
MTAgKzEyNywxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zdWNjZWVkZWQ7CiB9OwogCi1jbGFz
cyBTdHJpbmdEYXRhVGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXI+IHsKK2NsYXNzIFN0cmluZ0RhdGFUYXNrIDogcHVibGljIFdlYk1ldGhvZFRh
c2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4gewogcHVibGljOgogICAgIFN0cmlu
Z0RhdGFUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgY29uc3Qg
V2ViUlRDRGF0YUNoYW5uZWwmIGRhdGFDaGFubmVsLCBjb25zdCBXZWJTdHJpbmcmIGRhdGEpCi0g
ICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmpl
Y3QpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyPihvYmplY3QpCiAgICAgICAgICwgbV9kYXRhQ2hhbm5lbChkYXRhQ2hhbm5lbCkKICAgICAg
ICAgLCBtX2RhdGEoZGF0YSkKICAgICB7CkBAIC0xNDUsMTAgKzE0NiwxMCBAQCBwcml2YXRlOgog
ICAgIFdlYlN0cmluZyBtX2RhdGE7CiB9OwogCi1jbGFzcyBDaGFyUHRyRGF0YVRhc2sgOiBwdWJs
aWMgTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CitjbGFzcyBD
aGFyUHRyRGF0YVRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyPiB7CiBwdWJsaWM6CiAgICAgQ2hhclB0ckRhdGFUYXNrKE1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgY29uc3QgV2ViUlRDRGF0YUNoYW5uZWwmIGRh
dGFDaGFubmVsLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQotICAgICAgICA6IE1l
dGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQorICAgICAg
ICA6IFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0
KQogICAgICAgICAsIG1fZGF0YUNoYW5uZWwoZGF0YUNoYW5uZWwpCiAgICAgICAgICwgbV9sZW5n
dGgobGVuZ3RoKQogICAgIHsKQEAgLTE2OCwxMCArMTY5LDEwIEBAIHByaXZhdGU6CiAgICAgc2l6
ZV90IG1fbGVuZ3RoOwogfTsKIAotY2xhc3MgRGF0YUNoYW5uZWxSZWFkeVN0YXRlVGFzayA6IHB1
YmxpYyBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKK2NsYXNz
IERhdGFDaGFubmVsUmVhZHlTdGF0ZVRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CiBwdWJsaWM6CiAgICAgRGF0YUNoYW5uZWxSZWFk
eVN0YXRlVGFzayhNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIGNvbnN0
IFdlYlJUQ0RhdGFDaGFubmVsJiBkYXRhQ2hhbm5lbCwgV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5
U3RhdGUgc3RhdGUpCi0gICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyPihvYmplY3QpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCiAgICAgICAgICwgbV9kYXRhQ2hhbm5lbChkYXRh
Q2hhbm5lbCkKICAgICAgICAgLCBtX3N0YXRlKHN0YXRlKQogICAgIHsKQEAgLTE4NywxMCArMTg4
LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3RhdGUgbV9zdGF0
ZTsKIH07CiAKLWNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uUmVhZHlTdGF0ZVRhc2sgOiBwdWJsaWMg
TWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CitjbGFzcyBSVENQ
ZWVyQ29ubmVjdGlvblJlYWR5U3RhdGVUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4gewogcHVibGljOgogICAgIFJUQ1BlZXJDb25uZWN0
aW9uUmVhZHlTdGF0ZVRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0
LCBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqIGNsaWVudCwgV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRlIHN0YXRlKQotICAgICAgICA6IE1ldGhv
ZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQorICAgICAgICA6
IFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQog
ICAgICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAgICAgLCBtX3N0YXRlKHN0YXRlKQogICAg
IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAppbmRleCA1ZGRkMmZjNDU1ZTdjZWE4OTQ2
OTU5NGYxODU4OTc3N2IzZmQwNmMzLi5hMTUyMmY0ZmJlNmZlM2I1ZmE0NDIyZDVlZDcwOThmMGIz
MjhhYzA1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCkBAIC0zMyw3ICszMyw3IEBA
CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAiVGVzdFJ1bm5lci9zcmMv
VGFzay5oIgorI2luY2x1ZGUgIldlYlRhc2suaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDRGF0
YUNoYW5uZWwuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oPgpAQCAtNjgs
MTUgKzY4LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoY29uc3Qg
V2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbCYsIGNvbnN0IGNoYXIqLCBzaXplX3QpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZURhdGFDaGFubmVsKGNvbnN0IFdlYktpdDo6V2ViUlRD
RGF0YUNoYW5uZWwmKSBPVkVSUklERTsKIAotICAgIC8vIFRhc2sgcmVsYXRlZCBtZXRob2RzCi0g
ICAgVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAgICAvLyBX
ZWJUYXNrIHJlbGF0ZWQgbWV0aG9kcworICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0KiB0
YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CiAKIHByaXZhdGU6CiAgICAgTW9ja1dl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcigpIHsgfQogCiAgICAgV2ViS2l0OjpXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDbGllbnQqIG1fY2xpZW50OwogICAgIGJvb2wgbV9zdG9wcGVkOwot
ICAgIFRhc2tMaXN0IG1fdGFza0xpc3Q7CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3Qg
bV90YXNrTGlzdDsKICAgICBXZWJLaXQ6OldlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiBtX2xvY2Fs
RGVzY3JpcHRpb247CiAgICAgV2ViS2l0OjpXZWJSVENTZXNzaW9uRGVzY3JpcHRpb24gbV9yZW1v
dGVEZXNjcmlwdGlvbjsKICAgICBpbnQgbV9zdHJlYW1Db3VudDsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJv
bGxlci5jcHAKaW5kZXggMTNjOGZmMWVjNGMxY2RlNTUwNzY2OThkZmNmZTVlODcxMjZhODJlYi4u
ZDdkNTg5MjY0MjcxYjY5MDMyOWZhMjgzZGY3NzdkYWZkMTVjODdmNiAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0
Q29udHJvbGxlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNI
KQogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYlRlc3RSdW5u
ZXI7CiAKIFBhc3NPd25QdHI8TW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlcj4gTW9ja1dlYlNw
ZWVjaElucHV0Q29udHJvbGxlcjo6Y3JlYXRlKFdlYlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3Rl
bmVyKQogewpAQCAtMTgyLDcgKzE4Myw3IEBAIHZvaWQgTW9ja1dlYlNwZWVjaElucHV0Q29udHJv
bGxlcjo6c3BlZWNoVGFza0ZpcmVkKCkKIH0KIAogTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxl
cjo6U3BlZWNoVGFzazo6U3BlZWNoVGFzayhNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBt
b2NrKQotICAgIDogTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyPjo6TWV0
aG9kVGFzayhtb2NrKQorICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyPjo6V2ViTWV0aG9kVGFzayhtb2NrKQogewogfQogCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
LmgKaW5kZXggNjQ5NGE3ZjI1YmFiYjNjYzNhOTE3YjU5ZjUwZDhhOWQ4NzljYjEyYy4uMDc1ZjI1
NDFmOWEyODJhY2I0Y2Q5YzQ5ZDIzMzJmYWNiMjJmYjM3OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXIuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKIAotI2lu
Y2x1ZGUgIlRlc3RSdW5uZXIvc3JjL1Rhc2suaCIKKyNpbmNsdWRlICJXZWJUYXNrLmgiCiAjaW5j
bHVkZSAicGxhdGZvcm0vV2ViUmVjdC5oIgogI2luY2x1ZGUgIldlYlNwZWVjaElucHV0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIldlYlNwZWVjaElucHV0UmVzdWx0LmgiCkBAIC01OCwxMyArNTgs
MTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQgcmVx
dWVzdElkKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFJlY29yZGluZyhpbnQgcmVx
dWVzdElkKSBPVkVSUklERTsKIAotICAgIFRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZt
X3Rhc2tMaXN0OyB9CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QqIHRhc2tMaXN0KCkg
eyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KIAogcHJpdmF0ZToKICAgICBNb2NrV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0ZW5lciopOwogICAgIHZvaWQg
c3BlZWNoVGFza0ZpcmVkKCk7CiAKLSAgICBjbGFzcyBTcGVlY2hUYXNrIDogcHVibGljIE1ldGhv
ZFRhc2s8TW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlcj4geworICAgIGNsYXNzIFNwZWVjaFRh
c2sgOiBwdWJsaWMgV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyPiB7CiAgICAgcHVibGljOgogICAgICAgICBTcGVlY2hUYXNrKE1vY2tXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXIqKTsKICAgICAgICAgdm9pZCBzdG9wKCk7CkBAIC03NSw3ICs3
NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXIqIG1f
bGlzdGVuZXI7CiAKLSAgICBUYXNrTGlzdCBtX3Rhc2tMaXN0OworICAgIFdlYlRlc3RSdW5uZXI6
OldlYlRhc2tMaXN0IG1fdGFza0xpc3Q7CiAgICAgU3BlZWNoVGFzayogbV9zcGVlY2hUYXNrOwog
CiAgICAgYm9vbCBtX3JlY29yZGluZzsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmNwcAppbmRleCA1MDJhZGRlYTky
NTYyZDRjNzJhMDJkZmZjZThlNGYxYTEzYWUxNzUyLi4xYjViMWNhODk4NTk2ODc1MWE5YTdkYzM5
NzZiZDRhN2Y2ZmEwZDk5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiV2ViU3BlZWNoUmVjb2duaXplckNsaWVudC5oIgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXI7CiAKIG5hbWVzcGFjZSB7CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hS
ZWNvZ25pemVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNo
UmVjb2duaXplci5oCmluZGV4IDRjYzA0NTY2OWZhZjAxNTI4YTZkNWY1YjVmYjUyYjZkMWRlMjJi
ZGQuLjQxOWM1ZTUwNDlmYWFmOWZiMjVhNjExZWM3MTQwMDk0MDdkY2Y0ZjYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmgK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6
ZXIuaApAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKIAot
I2luY2x1ZGUgIlRlc3RSdW5uZXIvc3JjL1Rhc2suaCIKICNpbmNsdWRlICJXZWJTcGVlY2hSZWNv
Z25pemVyLmgiCisjaW5jbHVkZSAiV2ViVGFzay5oIgogI2luY2x1ZGUgPHd0Zi9Db21waWxlci5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpA
QCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgLy8gTWV0aG9kcyBhY2Nlc3NlZCBmcm9tIFRh
c2sgb2JqZWN0czoKICAgICBXZWJLaXQ6OldlYlNwZWVjaFJlY29nbml6ZXJDbGllbnQqIGNsaWVu
dCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CiAgICAgV2ViS2l0OjpXZWJTcGVlY2hSZWNvZ25pdGlv
bkhhbmRsZSYgaGFuZGxlKCkgeyByZXR1cm4gbV9oYW5kbGU7IH0KLSAgICBUYXNrTGlzdCogdGFz
a0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQorICAgIFdlYlRlc3RSdW5uZXI6OldlYlRh
c2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CiAKICAgICBjbGFzcyBU
YXNrIHsKICAgICBwdWJsaWM6CkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
dGFydFRhc2tRdWV1ZSgpOwogICAgIHZvaWQgY2xlYXJUYXNrUXVldWUoKTsKIAotICAgIFRhc2tM
aXN0IG1fdGFza0xpc3Q7CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QgbV90YXNrTGlz
dDsKICAgICBXZWJLaXQ6OldlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlIG1faGFuZGxlOwogICAg
IFdlYktpdDo6V2ViU3BlZWNoUmVjb2duaXplckNsaWVudCogbV9jbGllbnQ7CiAgICAgVmVjdG9y
PFdlYktpdDo6V2ViU3RyaW5nPiBtX21vY2tUcmFuc2NyaXB0czsKQEAgLTg2LDkgKzg2LDkgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fdGFza1F1ZXVlUnVubmluZzsKIAogICAgIC8vIFRhc2sgZm9y
IHN0ZXBwaW5nIHRoZSBxdWV1ZS4KLSAgICBjbGFzcyBTdGVwVGFzayA6IHB1YmxpYyBNZXRob2RU
YXNrPE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyPiB7CisgICAgY2xhc3MgU3RlcFRhc2sgOiBwdWJs
aWMgV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoUmVjb2duaXplcj4g
ewogICAgIHB1YmxpYzoKLSAgICAgICAgU3RlcFRhc2soTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIq
IG9iamVjdCkgOiBNZXRob2RUYXNrPE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyPihvYmplY3QpIHsg
fQorICAgICAgICBTdGVwVGFzayhNb2NrV2ViU3BlZWNoUmVjb2duaXplciogb2JqZWN0KSA6IFdl
YlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8TW9ja1dlYlNwZWVjaFJlY29nbml6ZXI+KG9iamVj
dCkgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgT1ZFUlJJREU7CiAgICAg
fTsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUYXNrLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJUYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDhkN2ZhZDk4MzJiOGYyNzg3YzRh
NDg3ZjFiYmY1YWM1OTJlZmU5MAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRhc2suaApAQCAtMCwwICsxLDEwMCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViVGFza19oCisjZGVmaW5lIFdlYlRhc2tfaAorCisjaW5jbHVkZSAid2Via2l0
L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKKworI2luY2x1ZGUgPHZlY3Rvcj4KKworbmFtZXNw
YWNlIFdlYlRlc3RSdW5uZXIgeworCitjbGFzcyBXZWJUYXNrTGlzdDsKKworLy8gV2ViVGFzayBy
ZXByZXNlbnRzIGEgdGFzayB3aGljaCBjYW4gcnVuIGJ5IHBvc3RUYXNrKCkgb3IgcG9zdERlbGF5
ZWRUYXNrKCkuCisvLyBpdCBpcyBuYW1lZCAiV2ViVGFzayIsIG5vdCAiVGFzayIsIHRvIGF2b2lk
IGNvbmZsaXN0IHdpdGggYmFzZS90YXNrLmguCitjbGFzcyBXZWJUYXNrIDogcHVibGljIHdlYmtp
dF9zdXBwb3J0OjpUYXNrQWRhcHRvciB7CitwdWJsaWM6CisgICAgV2ViVGFzayhXZWJUYXNrTGlz
dCopOworICAgIC8vIFRoZSBtYWluIGNvZGUgb2YgdGhpcyB0YXNrLgorICAgIC8vIEFuIGltcGxl
bWVudGF0aW9uIG9mIHJ1bigpIHNob3VsZCByZXR1cm4gaW1tZWRpYXRlbHkgaWYgY2FuY2VsKCkg
d2FzIGNhbGxlZC4KKyAgICB2aXJ0dWFsIHZvaWQgcnVuKCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjYW5jZWwoKSA9IDA7CisgICAgdmlydHVhbCB+V2ViVGFzaygpOworCitwcml2YXRlOgorICAg
IHZpcnR1YWwgdm9pZCBSdW4oKSB7IHJ1bigpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBXZWJUYXNr
TGlzdCogbV90YXNrTGlzdDsKK307CisKK2NsYXNzIFdlYlRhc2tMaXN0IHsKK3B1YmxpYzoKKyAg
ICBXZWJUYXNrTGlzdCgpIHsgfQorICAgIH5XZWJUYXNrTGlzdCgpIHsgcmV2b2tlQWxsKCk7IH0K
KyAgICB2b2lkIHJlZ2lzdGVyVGFzayhXZWJUYXNrKiB0YXNrKSB7IG1fdGFza3MucHVzaF9iYWNr
KHRhc2spOyB9CisgICAgdm9pZCB1bnJlZ2lzdGVyVGFzayhXZWJUYXNrKik7CisgICAgdm9pZCBy
ZXZva2VBbGwoKTsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnZlY3RvcjxXZWJUYXNrKj4gbV90YXNr
czsKK307CisKKy8vIEEgdGFzayBjb250YWluaW5nIGFuIG9iamVjdCBwb2ludGVyIG9mIGNsYXNz
IFQuIElzIGlzIHN1cHBvc2VkIHRoYXQKKy8vIHJ1bmlmVmFsaWQoKSBjYWxscyBhIG1lbWJlciBm
dW5jdGlvbiBvZiB0aGUgb2JqZWN0IHBvaW50ZXIuCisvLyBDbGFzcyBUIG11c3QgaGF2ZSAiV2Vi
VGFza0xpc3QqIHRhc2tMaXN0KCkiLgordGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgV2ViTWV0aG9k
VGFzazogcHVibGljIFdlYlRhc2sgeworcHVibGljOgorICAgIFdlYk1ldGhvZFRhc2soVCogb2Jq
ZWN0KTogV2ViVGFzayhvYmplY3QtPnRhc2tMaXN0KCkpLCBtX29iamVjdChvYmplY3QpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgaWYgKG1fb2JqZWN0KQorICAg
ICAgICAgICAgcnVuSWZWYWxpZCgpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkK
KyAgICB7CisgICAgICAgIG1fb2JqZWN0ID0gMDsKKyAgICAgICAgbV90YXNrTGlzdC0+dW5yZWdp
c3RlclRhc2sodGhpcyk7CisgICAgICAgIG1fdGFza0xpc3QgPSAwOworICAgIH0KKyAgICB2aXJ0
dWFsIHZvaWQgcnVuSWZWYWxpZCgpID0gMDsKKworcHJvdGVjdGVkOgorICAgIFQqIG1fb2JqZWN0
OworfTsKKwordm9pZCBwb3N0VGFzayhXZWJUYXNrKik7Cit2b2lkIHBvc3REZWxheWVkVGFzayhX
ZWJUYXNrKiwgaW50NjRfdCBtcyk7CisKK30KKworI2VuZGlmIC8vIFdlYlRhc2tfaApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRT
ZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
RXZlbnRTZW5kZXIuY3BwCmluZGV4IDMxMGFlNmM0OGJkNGU4ZmYzNjkxN2FmODIzMTBkNjlmZTVm
MWE0OGQuLmRlYjhiYTcwZjBjMjk4YzU2YTY2ZTU2NjVjNDJkNDM4NDQ3ZDRkMTYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2Vu
ZGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9FdmVudFNlbmRlci5jcHAKQEAgLTg1NCwyMCArODU0LDIwIEBAIHZvaWQgRXZlbnRTZW5kZXI6
OmNvbnRleHRDbGljayhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFu
dCogcmVzCiAgICAgcmVzdWx0LT5zZXQoV2ViQmluZGluZ3M6Om1ha2VTdHJpbmdBcnJheShtYWtl
TWVudUl0ZW1TdHJpbmdzRm9yKGxhc3RDb250ZXh0TWVudSwgbV9kZWxlZ2F0ZSkpKTsKIH0KIAot
Y2xhc3MgTW91c2VEb3duVGFzazogcHVibGljIE1ldGhvZFRhc2s8RXZlbnRTZW5kZXI+IHsKK2Ns
YXNzIE1vdXNlRG93blRhc2s6IHB1YmxpYyBXZWJNZXRob2RUYXNrPEV2ZW50U2VuZGVyPiB7CiBw
dWJsaWM6CiAgICAgTW91c2VEb3duVGFzayhFdmVudFNlbmRlciogb2JqLCBjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZykKLSAgICAgICAgOiBNZXRob2RUYXNrPEV2ZW50U2VuZGVyPihvYmopLCBt
X2FyZ3VtZW50cyhhcmcpIHsgfQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8RXZlbnRTZW5kZXI+
KG9iaiksIG1fYXJndW1lbnRzKGFyZykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQo
KSB7IG1fb2JqZWN0LT5tb3VzZURvd24obV9hcmd1bWVudHMsIDApOyB9CiAKIHByaXZhdGU6CiAg
ICAgQ3BwQXJndW1lbnRMaXN0IG1fYXJndW1lbnRzOwogfTsKIAotY2xhc3MgTW91c2VVcFRhc2s6
IHB1YmxpYyBNZXRob2RUYXNrPEV2ZW50U2VuZGVyPiB7CitjbGFzcyBNb3VzZVVwVGFzazogcHVi
bGljIFdlYk1ldGhvZFRhc2s8RXZlbnRTZW5kZXI+IHsKIHB1YmxpYzoKICAgICBNb3VzZVVwVGFz
ayhFdmVudFNlbmRlciogb2JqLCBjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZykKLSAgICAgICAg
OiBNZXRob2RUYXNrPEV2ZW50U2VuZGVyPihvYmopLCBtX2FyZ3VtZW50cyhhcmcpIHsgfQorICAg
ICAgICA6IFdlYk1ldGhvZFRhc2s8RXZlbnRTZW5kZXI+KG9iaiksIG1fYXJndW1lbnRzKGFyZykg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSB7IG1fb2JqZWN0LT5tb3VzZVVwKG1f
YXJndW1lbnRzLCAwKTsgfQogCiBwcml2YXRlOgpAQCAtODgxLDEwICs4ODEsMTAgQEAgdm9pZCBF
dmVudFNlbmRlcjo6c2NoZWR1bGVBc3luY2hyb25vdXNDbGljayhjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3AKICAgICBwb3N0VGFzayhuZXcgTW91c2VVcFRhc2sodGhpcywgYXJn
dW1lbnRzKSk7CiB9CiAKLWNsYXNzIEtleURvd25UYXNrIDogcHVibGljIE1ldGhvZFRhc2s8RXZl
bnRTZW5kZXI+IHsKK2NsYXNzIEtleURvd25UYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8RXZl
bnRTZW5kZXI+IHsKIHB1YmxpYzoKICAgICBLZXlEb3duVGFzayhFdmVudFNlbmRlciogb2JqLCBj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZykKLSAgICAgICAgOiBNZXRob2RUYXNrPEV2ZW50U2Vu
ZGVyPihvYmopLCBtX2FyZ3VtZW50cyhhcmcpIHsgfQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8
RXZlbnRTZW5kZXI+KG9iaiksIG1fYXJndW1lbnRzKGFyZykgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHJ1bklmVmFsaWQoKSB7IG1fb2JqZWN0LT5rZXlEb3duKG1fYXJndW1lbnRzLCAwKTsgfQogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvRXZlbnRTZW5kZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmgKaW5kZXggNjVkZmNjYjhjMTU1ZTI1NDg4Mjg2ODYx
MmJhODIyYzQwMWRlYTExOS4uZDA3ZTE0Y2M2ZjJkMDY3NDQ5OWNkZDdkMjg5YmRiMjRmYmU2NjZi
MSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvRXZlbnRTZW5kZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9FdmVudFNlbmRlci5oCkBAIC0zOCw5ICszOCw5IEBACiAjZGVmaW5lIEV2ZW50
U2VuZGVyX2gKIAogI2luY2x1ZGUgIkNwcEJvdW5kQ2xhc3MuaCIKLSNpbmNsdWRlICJUYXNrLmgi
CiAjaW5jbHVkZSAiV2ViRHJhZ09wZXJhdGlvbi5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnQu
aCIKKyNpbmNsdWRlICJXZWJUYXNrLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIK
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMzEsNyArMTMxLDcgQEAgcHVibGljOgogICAgIENw
cFZhcmlhbnQgd21TeXNEZWFkQ2hhcjsKICNlbmRpZgogCi0gICAgVGFza0xpc3QqIHRhc2tMaXN0
KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAgICBXZWJUYXNrTGlzdCogdGFza0xpc3QoKSB7
IHJldHVybiAmbV90YXNrTGlzdDsgfQogCiBwcml2YXRlOgogICAgIFdlYktpdDo6V2ViVmlldyog
d2VidmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQpAQCAtMTY1LDcgKzE2NSw3IEBAIHByaXZh
dGU6CiAgICAgLy8gSGFuZGxlIGEgcmVxdWVzdCB0byBzZW5kIGEgd2hlZWwgZXZlbnQuCiAgICAg
dm9pZCBoYW5kbGVNb3VzZVdoZWVsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
LCBib29sIGNvbnRpbnVvdXMpOwogCi0gICAgVGFza0xpc3QgbV90YXNrTGlzdDsKKyAgICBXZWJU
YXNrTGlzdCBtX3Rhc2tMaXN0OwogCiAgICAgVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRlOwogICAg
IFdlYktpdDo6V2ViVmlldyogbV93ZWJWaWV3OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGFzay5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UYXNrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDgwYmVlZjM0OTkzN2Q2MzU0MGRlZmE5MDY1MzFmNjEwOGQ3NWE1MS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UYXNrLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGFzay5oIgotCi0j
aW5jbHVkZSAiV2ViS2l0LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBw
b3J0LmgiCi0KLVdlYlRhc2s6OldlYlRhc2soVGFza0xpc3QqIGxpc3QpCi0gICAgOiBtX3Rhc2tM
aXN0KGxpc3QpCi17Ci0gICAgbV90YXNrTGlzdC0+cmVnaXN0ZXJUYXNrKHRoaXMpOwotfQotCi1X
ZWJUYXNrOjp+V2ViVGFzaygpCi17Ci0gICAgaWYgKG1fdGFza0xpc3QpCi0gICAgICAgIG1fdGFz
a0xpc3QtPnVucmVnaXN0ZXJUYXNrKHRoaXMpOwotfQotCi12b2lkIFRhc2tMaXN0Ojp1bnJlZ2lz
dGVyVGFzayhXZWJUYXNrKiB0YXNrKQotewotICAgIHNpemVfdCBpbmRleCA9IG1fdGFza3MuZmlu
ZCh0YXNrKTsKLSAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCi0gICAgICAgIG1fdGFza3MucmVt
b3ZlKGluZGV4KTsKLX0KLQotdm9pZCBUYXNrTGlzdDo6cmV2b2tlQWxsKCkKLXsKLSAgICB3aGls
ZSAoIW1fdGFza3MuaXNFbXB0eSgpKQotICAgICAgICBtX3Rhc2tzWzBdLT5jYW5jZWwoKTsKLX0K
LQotc3RhdGljIHZvaWQgaW52b2tlVGFzayh2b2lkKiBjb250ZXh0KQotewotICAgIFdlYlRhc2sq
IHRhc2sgPSBzdGF0aWNfY2FzdDxXZWJUYXNrKj4oY29udGV4dCk7Ci0gICAgdGFzay0+cnVuKCk7
Ci0gICAgZGVsZXRlIHRhc2s7Ci19Ci0KLXZvaWQgcG9zdFRhc2soV2ViVGFzayogdGFzaykKLXsK
LSAgICBXZWJLaXQ6OndlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jYWxsT25NYWluVGhyZWFkKGlu
dm9rZVRhc2ssIHN0YXRpY19jYXN0PHZvaWQqPih0YXNrKSk7Ci19Ci0KLXZvaWQgcG9zdERlbGF5
ZWRUYXNrKFdlYlRhc2sqIHRhc2ssIGludDY0X3QgbXMpCi17Ci0gICAgd2Via2l0X3N1cHBvcnQ6
OlBvc3REZWxheWVkVGFzayh0YXNrLCBtcyk7Ci19Ci0KLQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGFzay5oIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGFzay5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwYjMyYzQ3MmIyNzUwNGU1ZmI2MDhkNmJlNDAxZmRhNjg4MGI5NzQwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rhc2suaAorKysgL2Rldi9udWxsCkBA
IC0xLDk2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFRhc2tfaAotI2RlZmluZSBUYXNrX2gKLQotI2luY2x1ZGUg
IndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotY2xhc3MgVGFza0xpc3Q7Ci0KLS8vIFdlYlRh
c2sgcmVwcmVzZW50cyBhIHRhc2sgd2hpY2ggY2FuIHJ1biBieSBwb3N0VGFzaygpIG9yIHBvc3RE
ZWxheWVkVGFzaygpLgotLy8gaXQgaXMgbmFtZWQgIldlYlRhc2siLCBub3QgIlRhc2siLCB0byBh
dm9pZCBjb25mbGlzdCB3aXRoIGJhc2UvdGFzay5oLgotY2xhc3MgV2ViVGFzayA6IHB1YmxpYyB3
ZWJraXRfc3VwcG9ydDo6VGFza0FkYXB0b3IgewotcHVibGljOgotICAgIFdlYlRhc2soVGFza0xp
c3QqKTsKLSAgICAvLyBUaGUgbWFpbiBjb2RlIG9mIHRoaXMgdGFzay4KLSAgICAvLyBBbiBpbXBs
ZW1lbnRhdGlvbiBvZiBydW4oKSBzaG91bGQgcmV0dXJuIGltbWVkaWF0ZWx5IGlmIGNhbmNlbCgp
IHdhcyBjYWxsZWQuCi0gICAgdmlydHVhbCB2b2lkIHJ1bigpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsKCkgPSAwOwotICAgIHZpcnR1YWwgfldlYlRhc2soKTsKLQotcHJpdmF0ZToKLSAg
ICB2aXJ0dWFsIHZvaWQgUnVuKCkgeyBydW4oKTsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgVGFza0xp
c3QqIG1fdGFza0xpc3Q7Ci19OwotCi1jbGFzcyBUYXNrTGlzdCB7Ci1wdWJsaWM6Ci0gICAgVGFz
a0xpc3QoKSB7IH0KLSAgICB+VGFza0xpc3QoKSB7IHJldm9rZUFsbCgpOyB9Ci0gICAgdm9pZCBy
ZWdpc3RlclRhc2soV2ViVGFzayogdGFzaykgeyBtX3Rhc2tzLmFwcGVuZCh0YXNrKTsgfQotICAg
IHZvaWQgdW5yZWdpc3RlclRhc2soV2ViVGFzayopOwotICAgIHZvaWQgcmV2b2tlQWxsKCk7Ci0K
LXByaXZhdGU6Ci0gICAgVmVjdG9yPFdlYlRhc2sqPiBtX3Rhc2tzOwotfTsKLQotLy8gQSB0YXNr
IGNvbnRhaW5pbmcgYW4gb2JqZWN0IHBvaW50ZXIgb2YgY2xhc3MgVC4gSXMgaXMgc3VwcG9zZWQg
dGhhdAotLy8gcnVuaWZWYWxpZCgpIGNhbGxzIGEgbWVtYmVyIGZ1bmN0aW9uIG9mIHRoZSBvYmpl
Y3QgcG9pbnRlci4KLS8vIENsYXNzIFQgbXVzdCBoYXZlICJUYXNrTGlzdCogdGFza0xpc3QoKSIu
Ci10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBNZXRob2RUYXNrOiBwdWJsaWMgV2ViVGFzayB7Ci1w
dWJsaWM6Ci0gICAgTWV0aG9kVGFzayhUKiBvYmplY3QpOiBXZWJUYXNrKG9iamVjdC0+dGFza0xp
c3QoKSksIG1fb2JqZWN0KG9iamVjdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJ1bigpCi0gICAg
ewotICAgICAgICBpZiAobV9vYmplY3QpCi0gICAgICAgICAgICBydW5JZlZhbGlkKCk7Ci0gICAg
fQotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKQotICAgIHsKLSAgICAgICAgbV9vYmplY3QgPSAw
OwotICAgICAgICBtX3Rhc2tMaXN0LT51bnJlZ2lzdGVyVGFzayh0aGlzKTsKLSAgICAgICAgbV90
YXNrTGlzdCA9IDA7Ci0gICAgfQotICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgPSAwOwot
Ci1wcm90ZWN0ZWQ6Ci0gICAgVCogbV9vYmplY3Q7Ci19OwotCi12b2lkIHBvc3RUYXNrKFdlYlRh
c2sqKTsKLXZvaWQgcG9zdERlbGF5ZWRUYXNrKFdlYlRhc2sqLCBpbnQ2NF90IG1zKTsKLQotI2Vu
ZGlmIC8vIFRhc2tfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCmluZGV4IGY3MDY5NDAxYThmMDA0M2NmM2Yy
N2I3YzFhMTg0ZGZhOTYwZWVjZWMuLjM5ZTE5ZDU3MzY1ZDAzYzY2ODQxZjg3ZjI2YWNmNDU0MWVl
MDdkN2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKQEAgLTMzLDcgKzMzLDYgQEAKICNkZWZpbmUgVGVz
dFJ1bm5lcl9oCiAKICNpbmNsdWRlICJDcHBCb3VuZENsYXNzLmgiCi0jaW5jbHVkZSAiVGFzay5o
IgogI2luY2x1ZGUgIldlYkRlbGl2ZXJlZEludGVudENsaWVudC5oIgogI2luY2x1ZGUgIldlYlRl
eHREaXJlY3Rpb24uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJBcnJheUJ1ZmZlclZpZXcuaCIK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYlRhc2suY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvV2ViVGFzay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmMzMDM5NjYyMDBmYTdlYWI3MDhiNGZhODdmMWU1
MWVkZTZlYzkzOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRhc2suY3BwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVGFzay5oIgorCisjaW5jbHVkZSAiV2ViS2l0LmgiCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCisKKyNpbmNsdWRlIDxh
bGdvcml0aG0+CisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKKworV2ViVGFzazo6V2ViVGFz
ayhXZWJUYXNrTGlzdCogbGlzdCkKKyAgICA6IG1fdGFza0xpc3QobGlzdCkKK3sKKyAgICBtX3Rh
c2tMaXN0LT5yZWdpc3RlclRhc2sodGhpcyk7Cit9CisKK1dlYlRhc2s6On5XZWJUYXNrKCkKK3sK
KyAgICBpZiAobV90YXNrTGlzdCkKKyAgICAgICAgbV90YXNrTGlzdC0+dW5yZWdpc3RlclRhc2so
dGhpcyk7Cit9CisKK3ZvaWQgV2ViVGFza0xpc3Q6OnVucmVnaXN0ZXJUYXNrKFdlYlRhc2sqIHRh
c2spCit7CisgICAgc3RkOjp2ZWN0b3I8V2ViVGFzayo+OjppdGVyYXRvciBwb3MgPSBzdGQ6OmZp
bmQobV90YXNrcy5iZWdpbigpLCBtX3Rhc2tzLmVuZCgpLCB0YXNrKTsKKyAgICBpZiAocG9zICE9
IG1fdGFza3MuZW5kKCkpCisgICAgICAgIG1fdGFza3MuZXJhc2UocG9zKTsKK30KKwordm9pZCBX
ZWJUYXNrTGlzdDo6cmV2b2tlQWxsKCkKK3sKKyAgICB3aGlsZSAoIW1fdGFza3MuZW1wdHkoKSkK
KyAgICAgICAgbV90YXNrc1swXS0+Y2FuY2VsKCk7Cit9CisKK3N0YXRpYyB2b2lkIGludm9rZVRh
c2sodm9pZCogY29udGV4dCkKK3sKKyAgICBXZWJUYXNrKiB0YXNrID0gc3RhdGljX2Nhc3Q8V2Vi
VGFzayo+KGNvbnRleHQpOworICAgIHRhc2stPnJ1bigpOworICAgIGRlbGV0ZSB0YXNrOworfQor
Cit2b2lkIHBvc3RUYXNrKFdlYlRhc2sqIHRhc2spCit7CisgICAgV2ViS2l0Ojp3ZWJLaXRQbGF0
Zm9ybVN1cHBvcnQoKS0+Y2FsbE9uTWFpblRocmVhZChpbnZva2VUYXNrLCBzdGF0aWNfY2FzdDx2
b2lkKj4odGFzaykpOworfQorCit2b2lkIHBvc3REZWxheWVkVGFzayhXZWJUYXNrKiB0YXNrLCBp
bnQ2NF90IG1zKQoreworICAgIHdlYmtpdF9zdXBwb3J0OjpQb3N0RGVsYXllZFRhc2sodGFzaywg
bXMpOworfQorCit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0U2hlbGwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNw
cAppbmRleCA0ODU0ZjVlYTMxYmQwYTQzYmY4M2NiN2Q1ZDVhMGU2ZDg0ZWFkZTk0Li4yNjkyZTc0
NTg2MGViMzM5YjM5MGZhZjk1NDQ1Mjk4OWJmMDVlN2YyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTY4LDYgKzY4LDcgQEAKIAogCiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXI7CiB1c2luZyBu
YW1lc3BhY2Ugc3RkOwogCiAvLyBDb250ZW50IGFyZWEgc2l6ZSBmb3IgbmV3bHkgY3JlYXRlZCB3
aW5kb3dzLgpAQCAtMTU0LDcgKzE1NSw3IEBAIFRlc3RTaGVsbDo6VGVzdFNoZWxsKCkKIHZvaWQg
VGVzdFNoZWxsOjppbml0aWFsaXplKCkKIHsKICAgICBtX3dlYlBlcm1pc3Npb25zID0gYWRvcHRQ
dHIobmV3IFdlYlBlcm1pc3Npb25zKHRoaXMpKTsKLSAgICBtX3Rlc3RJbnRlcmZhY2VzID0gYWRv
cHRQdHIobmV3IFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2VzKCkpOworICAgIG1fdGVz
dEludGVyZmFjZXMgPSBhZG9wdFB0cihuZXcgV2ViVGVzdEludGVyZmFjZXMoKSk7CiAgICAgbV90
ZXN0UnVubmVyID0gYWRvcHRQdHIobmV3IERSVFRlc3RSdW5uZXIodGhpcykpOwogI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAgICAgbV9u
b3RpZmljYXRpb25QcmVzZW50ZXIgPSBhZG9wdFB0cihuZXcgTm90aWZpY2F0aW9uUHJlc2VudGVy
KHRoaXMpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVz
ZXJNZWRpYUNsaWVudE1vY2suY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
VXNlck1lZGlhQ2xpZW50TW9jay5jcHAKaW5kZXggZWQxM2ZmYTU4NjllMjU2NGJiZTIzMTc5ZmFk
ZmVkMWQyOTQ0Yjg2ZC4uODdjYTE1NmY2ZDBlNDRhNjgwZDJhZDkzNmQ2NDAxNTU0NzM0MGFhNSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xp
ZW50TW9jay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1l
ZGlhQ2xpZW50TW9jay5jcHAKQEAgLTQ0LDExICs0NCwxMiBAQAogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2Vi
VGVzdFJ1bm5lcjsKIAotY2xhc3MgVXNlck1lZGlhUmVxdWVzdFRhc2sgOiBwdWJsaWMgTWV0aG9k
VGFzazxXZWJVc2VyTWVkaWFDbGllbnRNb2NrPiB7CitjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0VGFz
ayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+IHsKIHB1Ymxp
YzoKICAgICBVc2VyTWVkaWFSZXF1ZXN0VGFzayhXZWJVc2VyTWVkaWFDbGllbnRNb2NrKiBvYmpl
Y3QsIGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYk1lZGlhU3Ry
ZWFtRGVzY3JpcHRvciByZXN1bHQpCi0gICAgICAgIDogTWV0aG9kVGFzazxXZWJVc2VyTWVkaWFD
bGllbnRNb2NrPihvYmplY3QpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxXZWJVc2VyTWVkaWFD
bGllbnRNb2NrPihvYmplY3QpCiAgICAgICAgICwgbV9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgICAg
ICwgbV9yZXN1bHQocmVzdWx0KQogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaAppbmRleCBmNDM4NzU5NzY2NjFm
MmI3ZTA3NmIyNjFmNWYyZTBhZmIzNmUyOTg4Li5lZjRjYjUxZDFhZmNmZGYzZjA1MjI1ZDc4MGI2
MjVhMDlhMjQ0NTRkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oCkBAIC0zMyw3ICszMyw3IEBACiAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAiVGVzdFJ1bm5lci9zcmMvVGFzay5oIgorI2lu
Y2x1ZGUgIldlYlRhc2suaCIKICNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnQuaCIKICNpbmNs
dWRlICJ3ZWJraXQvc3VwcG9ydC90ZXN0X21lZGlhX3N0cmVhbV9jbGllbnQuaCIKICNpbmNsdWRl
IDxwdWJsaWMvV2ViQ29tbW9uLmg+CkBAIC01MCwxMiArNTAsMTIgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFdlYktpdDo6V2ViVXNlck1l
ZGlhUmVxdWVzdCYpOwogCiAgICAgLy8gVGFzayByZWxhdGVkIG1ldGhvZHMKLSAgICBUYXNrTGlz
dCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQorICAgIFdlYlRlc3RSdW5uZXI6
OldlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CiAKIHByaXZh
dGU6CiAgICAgV2ViVXNlck1lZGlhQ2xpZW50TW9jaygpIHsgfQogCi0gICAgVGFza0xpc3QgbV90
YXNrTGlzdDsKKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwogfTsK
IAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggMTA2Y2FhOTc4NWY1M2NiNzIyYmMwZjZh
YzEyMWY0MzNiMzMwODlmZi4uMGExOWU2MjgxNDg1NmVlNGU5YzY4MzBhNWNlZGJmNmNkNDllNDk1
OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApA
QCAtODgsNiArODgsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lcjsKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CiAKIHN0YXRpYyBjb25zdCBpbnQgc2NyZWVuV2lkdGggPSAxOTIwOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXggYmE3NjM1MDNhYWU2
ZDY2ODEwNWE4ZDk1MDllZGFjOTA1YmRlZTk0Ny4uYmNhMGJkNjc4OWZhNjZhYmRlMjMzMDc0ZWU5
NjVmNGU0OGJlNTgyYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5oCkBAIC0zMywxMyArMzMsMTMgQEAKIAogI2luY2x1ZGUgIk1vY2tTcGVsbENoZWNrLmgi
CiAjaW5jbHVkZSAiVGVzdE5hdmlnYXRpb25Db250cm9sbGVyLmgiCi0jaW5jbHVkZSAiVGVzdFJ1
bm5lci9zcmMvVGFzay5oIgogI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24u
aCIKICNpbmNsdWRlICJXZWJDdXJzb3JJbmZvLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQu
aCIKICNpbmNsdWRlICJXZWJJbnRlbnRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViUHJlcmVuZGVy
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJTcGVsbENoZWNrQ2xpZW50LmgiCisjaW5jbHVkZSAi
V2ViVGFzay5oIgogI2luY2x1ZGUgIldlYlRlc3REZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIldlYlZp
ZXdDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMjg2LDE5ICsyODYsMTkg
QEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJs
aWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICAvLyBHZW9sb2NhdGlvbiBjbGllbnQgbW9j
a3MgZm9yIERSVFRlc3RSdW5uZXIKICAgICBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9j
ayogZ2VvbG9jYXRpb25DbGllbnRNb2NrKCk7CiAKLSAgICAvLyBQZW5kaW5nIHRhc2sgbGlzdCwg
Tm90ZSB0YWh0IHRoZSBtZXRob2QgaXMgcmVmZXJyZWQgZnJvbSBNZXRob2RUYXNrIGNsYXNzLgot
ICAgIFRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CisgICAgLy8g
UGVuZGluZyB0YXNrIGxpc3QsIE5vdGUgdGFodCB0aGUgbWV0aG9kIGlzIHJlZmVycmVkIGZyb20g
V2ViTWV0aG9kVGFzayBjbGFzcy4KKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCogdGFz
a0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQogCiAgICAgLy8gVGhlIGN1cnJlbnQgd2Vi
IGludGVudHMgcmVxdWVzdC4KICAgICBXZWJLaXQ6OldlYkludGVudFJlcXVlc3QqIGN1cnJlbnRJ
bnRlbnRSZXF1ZXN0KCkgeyByZXR1cm4gJm1fY3VycmVudFJlcXVlc3Q7IH0KIAogcHJpdmF0ZToK
IAotICAgIGNsYXNzIEhvc3RNZXRob2RUYXNrIDogcHVibGljIE1ldGhvZFRhc2s8V2ViVmlld0hv
c3Q+IHsKKyAgICBjbGFzcyBIb3N0TWV0aG9kVGFzayA6IHB1YmxpYyBXZWJUZXN0UnVubmVyOjpX
ZWJNZXRob2RUYXNrPFdlYlZpZXdIb3N0PiB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVm
IHZvaWQgKFdlYlZpZXdIb3N0OjoqQ2FsbGJhY2tNZXRob2RUeXBlKSgpOwogICAgICAgICBIb3N0
TWV0aG9kVGFzayhXZWJWaWV3SG9zdCogb2JqZWN0LCBDYWxsYmFja01ldGhvZFR5cGUgY2FsbGJh
Y2spCi0gICAgICAgICAgICA6IE1ldGhvZFRhc2s8V2ViVmlld0hvc3Q+KG9iamVjdCkKKyAgICAg
ICAgICAgIDogV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazxXZWJWaWV3SG9zdD4ob2JqZWN0
KQogICAgICAgICAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQogICAgICAgICB7IH0KIApAQCAt
NDQxLDcgKzQ0MSw3IEBAIHByaXZhdGU6CiAgICAgV2ViS2l0OjpXZWJTdHJpbmcgbV9sYXN0UmVx
dWVzdGVkVGV4dENoZWNrU3RyaW5nOwogICAgIFdlYktpdDo6V2ViVGV4dENoZWNraW5nQ29tcGxl
dGlvbiogbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNraW5nQ29tcGxldGlvbjsKIAotICAgIFRhc2tM
aXN0IG1fdGFza0xpc3Q7CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QgbV90YXNrTGlz
dDsKICAgICBWZWN0b3I8V2ViS2l0OjpXZWJXaWRnZXQqPiBtX3BvcHVwbWVudXM7CiAKICNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169951</attachid>
            <date>2012-10-22 12:05:45 -0700</date>
            <delta_ts>2012-10-22 13:24:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99964-20121022210422.patch</filename>
            <type>text/plain</type>
            <size>59707</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMTEyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGFmOWE2MDQxZTY3ZjYxMWMyYzcyMjRmYTgzMGRmNWZh
NWViYTQyMC4uN2U2NTEyZGVhMWViMmJjMjY2YTFhNzNkNzBhZTE2OTM5YTU2MDhlNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEx
MSBAQAorMjAxMi0xMC0yMiAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIGludHJvZHVjZSBXZWJUYXNrIHRvIHRoZSBUZXN0UnVubmVy
IGxpYnJhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk5OTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SSdtIGFsc28gcmVtb3ZpbmcgdGhlIGRlcGVuZGVuY3kgb24gd2Via2l0X3N1cHBvcnQsIGFuZCBp
bnN0ZWFkIGdvCisgICAgICAgIHRocm91Z2ggdGhlIFdlYlRlc3REZWxlZ2F0ZSBpbnRlcmZhY2Uu
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQWdlbnQuY3BwOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQWdlbnQuaDoKKyAgICAgICAg
KERSVERldlRvb2xzQWdlbnQ6OnRhc2tMaXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9EUlREZXZUb29sc0NsaWVudC5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuaDoKKyAgICAgICAgKERSVERldlRvb2xzQ2xpZW50
Ojp0YXNrTGlzdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1
bm5lci5jcHA6CisgICAgICAgIChJbnZva2VDYWxsYmFja1Rhc2s6Okludm9rZUNhbGxiYWNrVGFz
ayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5oOgor
ICAgICAgICAoRFJUVGVzdFJ1bm5lcjo6dGFza0xpc3QpOgorICAgICAgICAoRFJUVGVzdFJ1bm5l
cjo6V29ya1F1ZXVlOjp0YXNrTGlzdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHA6CisgICAgICAgIChSVENTZXNz
aW9uRGVzY3JpcHRpb25SZXF1ZXN0U3VjY2VkZWRUYXNrOjpSVENTZXNzaW9uRGVzY3JpcHRpb25S
ZXF1ZXN0U3VjY2VkZWRUYXNrKToKKyAgICAgICAgKFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVl
c3RGYWlsZWRUYXNrOjpSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0RmFpbGVkVGFzayk6Cisg
ICAgICAgIChSVENTdGF0c1JlcXVlc3RTdWNjZWVkZWRUYXNrOjpSVENTdGF0c1JlcXVlc3RTdWNj
ZWVkZWRUYXNrKToKKyAgICAgICAgKFJUQ1ZvaWRSZXF1ZXN0VGFzazo6UlRDVm9pZFJlcXVlc3RU
YXNrKToKKyAgICAgICAgKFN0cmluZ0RhdGFUYXNrOjpTdHJpbmdEYXRhVGFzayk6CisgICAgICAg
IChDaGFyUHRyRGF0YVRhc2s6OkNoYXJQdHJEYXRhVGFzayk6CisgICAgICAgIChEYXRhQ2hhbm5l
bFJlYWR5U3RhdGVUYXNrOjpEYXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNrKToKKyAgICAgICAgKFJU
Q1BlZXJDb25uZWN0aW9uUmVhZHlTdGF0ZVRhc2s6OlJUQ1BlZXJDb25uZWN0aW9uUmVhZHlTdGF0
ZVRhc2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIuaDoKKyAgICAgICAgKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXIpOgorICAgICAgICAoTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6dGFza0xp
c3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlcjo6
U3BlZWNoVGFzazo6U3BlZWNoVGFzayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oOgorICAgICAgICAoTW9ja1dlYlNwZWVj
aElucHV0Q29udHJvbGxlcjo6dGFza0xpc3QpOgorICAgICAgICAoTW9ja1dlYlNwZWVjaElucHV0
Q29udHJvbGxlcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNw
ZWVjaFJlY29nbml6ZXIuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01v
Y2tXZWJTcGVlY2hSZWNvZ25pemVyLmg6CisgICAgICAgIChNb2NrV2ViU3BlZWNoUmVjb2duaXpl
cjo6dGFza0xpc3QpOgorICAgICAgICAoTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIpOgorICAgICAg
ICAoTW9ja1dlYlNwZWVjaFJlY29nbml6ZXI6OlN0ZXBUYXNrOjpTdGVwVGFzayk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGFzay5jcHA6IENvcGllZCBmcm9tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rhc2suY3BwLgorICAgICAgICAo
V2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjppbnZva2VUYXNrKToKKyAg
ICAgICAgKFRhc2tXcmFwcGVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRhc2tXcmFwcGVy
OjpUYXNrV3JhcHBlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUYXNrV3JhcHBlcjo6flRh
c2tXcmFwcGVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRhc2tXcmFwcGVyOjpSdW4pOgor
ICAgICAgICAocG9zdFRhc2spOgorICAgICAgICAocG9zdERlbGF5ZWRUYXNrKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UYXNrLmg6IENvcGllZCBmcm9tIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaC4KKyAgICAgICAg
KFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvcHVibGljL1dlYlRhc2suaDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rhc2suaC4KKyAgICAgICAgKFdlYlRlc3RSdW5uZXIp
OgorICAgICAgICAoV2ViVGFzayk6CisgICAgICAgIChXZWJUYXNrTGlzdCk6CisgICAgICAgIChX
ZWJNZXRob2RUYXNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s6Oldl
Yk1ldGhvZFRhc2spOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazo6fldl
Yk1ldGhvZFRhc2spOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazo6cnVu
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s6OmNhbmNlbCk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdERl
bGVnYXRlLmg6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3REZWxl
Z2F0ZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
RXZlbnRTZW5kZXIuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6c2NoZWR1bGVBc3luY2hyb25vdXNDbGljayk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpLZXlEb3duVGFzazo6S2V5RG93blRhc2spOgorICAgICAgICAo
V2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6OnNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bik6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRT
ZW5kZXIuaDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjp0YXNrTGlzdCk6
CisgICAgICAgIChFdmVudFNlbmRlcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvVGVzdERlbGVnYXRlLmg6CisgICAgICAgIChXZWJUZXN0UnVubmVy
KToKKyAgICAgICAgKFRlc3REZWxlZ2F0ZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRhc2suY3BwOiBSZW5hbWVkIGZyb20gVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGFzay5jcHAuCisgICAg
ICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRhc2s6Oldl
YlRhc2spOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGFzazo6fldlYlRhc2spOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3Q6OldlYlRhc2tMaXN0KToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0Ojp+V2ViVGFza0xpc3QpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6V2ViVGFza0xpc3Q6OnJlZ2lzdGVyVGFzayk6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpXZWJUYXNrTGlzdDo6dW5yZWdpc3RlclRhc2spOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6V2ViVGFza0xpc3Q6OnJldm9rZUFsbCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwOgorICAgICAgICAo
V2ViVGVzdEludGVyZmFjZXM6OkludGVybmFsKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Oldl
YlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbDo6cG9zdFRhc2spOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNlczo6SW50ZXJu
YWw6OnBvc3REZWxheWVkVGFzayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFNoZWxsLmNwcDoKKyAgICAgICAgKFRlc3RTaGVsbDo6aW5pdGlhbGl6ZSk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHA6Cisg
ICAgICAgIChVc2VyTWVkaWFSZXF1ZXN0VGFzazo6VXNlck1lZGlhUmVxdWVzdFRhc2spOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaDoK
KyAgICAgICAgKFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6OnRhc2tMaXN0KToKKyAgICAgICAgKFdl
YlVzZXJNZWRpYUNsaWVudE1vY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdIb3N0Ojpwb3N0VGFzayk6CisgICAg
ICAgIChXZWJWaWV3SG9zdDo6cG9zdERlbGF5ZWRUYXNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorICAgICAgICAoV2ViVmlld0hvc3QpOgorICAg
ICAgICAoV2ViVmlld0hvc3Q6OnRhc2tMaXN0KToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpIb3N0
TWV0aG9kVGFzazo6SG9zdE1ldGhvZFRhc2spOgorCiAyMDEyLTEwLTIyICBPamFuIFZhZmFpICA8
b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXBkYXRlIGZsYWtpbmVzcyBkYXNoYm9hcmQg
dG8gbWF0Y2ggdGhlIHN0YXRlIG9mIHRoZSBidWlsZGVycy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9E
dW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IDdlN2Q2OWJhZGJmNWQ2ODQ0ZjhiOGUzNWZjMTk4YTJh
ZjJiYzM0NGUuLjI2NzIyZWNlNzI5NmVlZWY4YjFjOGZmMzgwZjZjODRhNmU0ODBlZTAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQpAQCAtMzAsNiArMzAsOCBAQAog
ICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmgnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL05vdGlmaWNhdGlvblByZXNlbnRlci5oJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9Ob3RpZmljYXRpb25QcmVzZW50ZXIuY3BwJywKKyAgICAgICAgICAgICdjaHJvbWl1
bS9UYXNrLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rhc2suY3BwJywKICAgICAgICAgICAg
ICdjaHJvbWl1bS9UZXN0RXZlbnRQcmludGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rl
c3RFdmVudFByaW50ZXIuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0TmF2aWdhdGlv
bkNvbnRyb2xsZXIuY3BwJywKQEAgLTY3LDYgKzY5LDcgQEAKICAgICAgICAgICAgICdjaHJvbWl1
bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oJywKICAgICAg
ICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaCcsCiAg
ICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViRXZlbnRTZW5kZXIuaCcs
CisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGFzay5oJywKICAg
ICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5o
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5oJywKQEAgLTgwLDggKzgzLDYgQEAK
ICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5oJywKICAg
ICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9HYW1lcGFkQ29udHJvbGxlci5jcHAn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0dhbWVwYWRDb250cm9sbGVy
LmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rhc2suY3BwJywKLSAg
ICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UYXNrLmgnLAogICAgICAgICAgICAg
J2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNwcCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGV4dElucHV0Q29udHJvbGxlci5jcHAnLApAQCAt
OTAsNiArOTEsNyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RS
dW5uZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9XZWJFdmVudFNlbmRlci5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1dlYlRhc2suY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAnLAogICAgICAgICBdLAogICAgICAgICAndGVzdF9wbHVn
aW5fZmlsZXMnOiBbCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9E
UlREZXZUb29sc0FnZW50LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERl
dlRvb2xzQWdlbnQuY3BwCmluZGV4IGI2NjU5YTQ3ZmM4MDNhZWFhY2I3MTJlM2ZiZTMxMzk5Njk2
NGM3ZDMuLmViMjFiMmM4NTFmNTJhNDU3YThiYzAwNzAyZGQyYzc0MzJiYmM2OGMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQWdlbnQuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQWdlbnQuY3BwCkBA
IC0zMywxMiArMzMsMTQgQEAKIAogI2luY2x1ZGUgIkRSVERldlRvb2xzQ2xpZW50LmgiCiAKKyNp
bmNsdWRlICJUYXNrLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ1N0cmluZy5oIgogI2luY2x1
ZGUgIldlYkRldlRvb2xzQWdlbnQuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSAi
d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyOwogCiBEUlREZXZUb29sc0FnZW50OjpE
UlREZXZUb29sc0FnZW50KCkKICAgICA6IG1fZHJ0RGV2VG9vbHNDbGllbnQoMCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQWdlbnQuaCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQWdlbnQuaAppbmRleCBkMDY2
YjdhNzE4ZmQyODhlYjM5ZTI2NWJjY2YxOTY1NmZkODY4ZTk3Li5jMTNhZWY3ZmEwMDg5Mjk5NzYz
ZGZjYzdjNzlhZTBjNjI3NjFiOGZmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vRFJURGV2VG9vbHNBZ2VudC5oCkBAIC0zMSw4ICszMSw4IEBACiAjaWZuZGVmIERSVERl
dlRvb2xzQWdlbnRfaAogI2RlZmluZSBEUlREZXZUb29sc0FnZW50X2gKIAotI2luY2x1ZGUgIlRl
c3RSdW5uZXIvc3JjL1Rhc2suaCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0FnZW50Q2xpZW50Lmgi
CisjaW5jbHVkZSAiV2ViVGFzay5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBA
IC02OSwyMyArNjksMjMgQEAgcHVibGljOgogICAgIHZvaWQgZGV0YWNoKCk7CiAKICAgICBib29s
IGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IobG9uZyBjYWxsSUQsIGNvbnN0IHN0ZDo6c3RyaW5nJiBz
Y3JpcHQpOwotICAgIFRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9
CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1f
dGFza0xpc3Q7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGNhbGwoY29uc3QgV2ViS2l0OjpXZWJT
dHJpbmcmIGFyZ3MpOwogICAgIFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudCogd2ViRGV2VG9vbHNB
Z2VudCgpOwogCi0gICAgY2xhc3MgQXN5bmNDYWxsVGFzazogcHVibGljIE1ldGhvZFRhc2s8RFJU
RGV2VG9vbHNBZ2VudD4geworICAgIGNsYXNzIEFzeW5jQ2FsbFRhc2s6IHB1YmxpYyBXZWJUZXN0
UnVubmVyOjpXZWJNZXRob2RUYXNrPERSVERldlRvb2xzQWdlbnQ+IHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIEFzeW5jQ2FsbFRhc2soRFJURGV2VG9vbHNBZ2VudCogb2JqZWN0LCBjb25zdCBXZWJL
aXQ6OldlYlN0cmluZyYgYXJncykKLSAgICAgICAgICAgIDogTWV0aG9kVGFzazxEUlREZXZUb29s
c0FnZW50PihvYmplY3QpLCBtX2FyZ3MoYXJncykgeyB9CisgICAgICAgICAgICA6IFdlYlRlc3RS
dW5uZXI6OldlYk1ldGhvZFRhc2s8RFJURGV2VG9vbHNBZ2VudD4ob2JqZWN0KSwgbV9hcmdzKGFy
Z3MpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIHsgbV9vYmplY3QtPmNh
bGwobV9hcmdzKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgV2ViS2l0OjpXZWJTdHJpbmcg
bV9hcmdzOwogICAgIH07CiAKLSAgICBUYXNrTGlzdCBtX3Rhc2tMaXN0OworICAgIFdlYlRlc3RS
dW5uZXI6OldlYlRhc2tMaXN0IG1fdGFza0xpc3Q7CiAgICAgRFJURGV2VG9vbHNDbGllbnQqIG1f
ZHJ0RGV2VG9vbHNDbGllbnQ7CiAgICAgaW50IG1fcm91dGluZ0lEOwogICAgIFdlYktpdDo6V2Vi
VmlldyogbV93ZWJWaWV3OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vRFJURGV2VG9vbHNDbGllbnQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
RFJURGV2VG9vbHNDbGllbnQuY3BwCmluZGV4IGE3ZmM0ZDA0ODZmMjhkMzJiMWVlZmQ0NGEwZmY3
NDZjYTRlYWY5NTUuLjA4ZGYxZDUyYWExNDQ3ZWI3YTUzMjE3MGMwN2ViOWQwZDYyZjVmNzUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NsaWVu
dC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJEUlREZXZUb29sc0NsaWVudC5oIgog
CiAjaW5jbHVkZSAiRFJURGV2VG9vbHNBZ2VudC5oIgorI2luY2x1ZGUgIlRhc2suaCIKICNpbmNs
dWRlICJXZWJEZXZUb29sc0FnZW50LmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNGcm9udGVuZC5o
IgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCkBAIC00MSw2ICs0Miw3IEBACiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJUZXN0UnVubmVyOwogCiBEUlREZXZUb29sc0NsaWVudDo6RFJURGV2VG9vbHNDbGllbnQo
RFJURGV2VG9vbHNBZ2VudCogYWdlbnQsIFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX3dlYlZp
ZXcod2ViVmlldykKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RS
VERldlRvb2xzQ2xpZW50LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZU
b29sc0NsaWVudC5oCmluZGV4IGVhZDM5NjM3OWI0YmU3ZTIxODkyNzUyYWFhMzhiMTkyNTlkOWY2
NzEuLjVmNDg2ZGRkMGQ1OWNhM2JmYTlmNzgxNTY4OTgzNDAzYzUyN2JiNTggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmgKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuaApAQCAtMzEs
OCArMzEsOCBAQAogI2lmbmRlZiBEUlREZXZUb29sc0NsaWVudF9oCiAjZGVmaW5lIERSVERldlRv
b2xzQ2xpZW50X2gKIAotI2luY2x1ZGUgIlRlc3RSdW5uZXIvc3JjL1Rhc2suaCIKICNpbmNsdWRl
ICJXZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViVGFzay5oIgogI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTY0LDIxICs2NCwyMSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhc3luY0NhbGwoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGFyZ3MpOwogCiAgICAg
dm9pZCBhbGxNZXNzYWdlc1Byb2Nlc3NlZCgpOwotICAgIFRhc2tMaXN0KiB0YXNrTGlzdCgpIHsg
cmV0dXJuICZtX3Rhc2tMaXN0OyB9CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QqIHRh
c2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KIAogIHByaXZhdGU6CiAgICAgdm9pZCBj
YWxsKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBhcmdzKTsKLSAgICBjbGFzcyBBc3luY0NhbGxU
YXNrOiBwdWJsaWMgTWV0aG9kVGFzazxEUlREZXZUb29sc0NsaWVudD4geworICAgIGNsYXNzIEFz
eW5jQ2FsbFRhc2s6IHB1YmxpYyBXZWJUZXN0UnVubmVyOjpXZWJNZXRob2RUYXNrPERSVERldlRv
b2xzQ2xpZW50PiB7CiAgICAgcHVibGljOgogICAgICAgICBBc3luY0NhbGxUYXNrKERSVERldlRv
b2xzQ2xpZW50KiBvYmplY3QsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBhcmdzKQotICAgICAg
ICAgICAgOiBNZXRob2RUYXNrPERSVERldlRvb2xzQ2xpZW50PihvYmplY3QpLCBtX2FyZ3MoYXJn
cykgeyB9CisgICAgICAgICAgICA6IFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8RFJURGV2
VG9vbHNDbGllbnQ+KG9iamVjdCksIG1fYXJncyhhcmdzKSB7IH0KICAgICAgICAgdmlydHVhbCB2
b2lkIHJ1bklmVmFsaWQoKSB7IG1fb2JqZWN0LT5jYWxsKG1fYXJncyk7IH0KIAogICAgIHByaXZh
dGU6CiAgICAgICAgIFdlYktpdDo6V2ViU3RyaW5nIG1fYXJnczsKICAgICB9OwogCi0gICAgVGFz
a0xpc3QgbV90YXNrTGlzdDsKKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tM
aXN0OwogICAgIFdlYktpdDo6V2ViVmlldyogbV93ZWJWaWV3OwogICAgIERSVERldlRvb2xzQWdl
bnQqIG1fZHJ0RGV2VG9vbHNBZ2VudDsKICAgICBXVEY6Ok93blB0cjxXZWJLaXQ6OldlYkRldlRv
b2xzRnJvbnRlbmQ+IG1fd2ViRGV2VG9vbHNGcm9udGVuZDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKaW5kZXggMDgyNTk3YTExN2I5MmQ1OTcy
ODA3ZTlmMGUzYTM3MjM0ZWQ5YzJhMy4uYjMxZDdkYTcwZmY1OGJlNDE2NGE4ZGIwZmIyNDlkMWJh
MjBmZTkyMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVz
dFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1
bm5lci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJEUlREZXZUb29sc0FnZW50Lmgi
CiAjaW5jbHVkZSAiTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIk1v
Y2tXZWJTcGVlY2hSZWNvZ25pemVyLmgiCisjaW5jbHVkZSAiVGFzay5oIgogI2luY2x1ZGUgIlRl
c3RTaGVsbC5oIgogI2luY2x1ZGUgIldlYkFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJXZWJCaW5kaW5ncy5oIgpAQCAtODMsNiArODQsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViVGVzdFJ1
bm5lcjsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIGNsYXNzIEVtcHR5V2ViRGVsaXZlcmVkSW50
ZW50Q2xpZW50IDogcHVibGljIFdlYktpdDo6V2ViRGVsaXZlcmVkSW50ZW50Q2xpZW50IHsKQEAg
LTIxMTQsMTAgKzIxMTYsMTAgQEAgdm9pZCBEUlRUZXN0UnVubmVyOjpzZXRUZXh0U3VicGl4ZWxQ
b3NpdGlvbmluZyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywKICAgICByZXN1bHQt
PnNldE51bGwoKTsKIH0KIAotY2xhc3MgSW52b2tlQ2FsbGJhY2tUYXNrIDogcHVibGljIE1ldGhv
ZFRhc2s8RFJUVGVzdFJ1bm5lcj4geworY2xhc3MgSW52b2tlQ2FsbGJhY2tUYXNrIDogcHVibGlj
IFdlYk1ldGhvZFRhc2s8RFJUVGVzdFJ1bm5lcj4gewogcHVibGljOgogICAgIEludm9rZUNhbGxi
YWNrVGFzayhEUlRUZXN0UnVubmVyKiBvYmplY3QsIFBhc3NPd25BcnJheVB0cjxDcHBWYXJpYW50
PiBjYWxsYmFja0FyZ3VtZW50cywgdWludDMyX3QgbnVtYmVyT2ZBcmd1bWVudHMpCi0gICAgICAg
IDogTWV0aG9kVGFzazxEUlRUZXN0UnVubmVyPihvYmplY3QpCisgICAgICAgIDogV2ViTWV0aG9k
VGFzazxEUlRUZXN0UnVubmVyPihvYmplY3QpCiAgICAgICAgICwgbV9jYWxsYmFja0FyZ3VtZW50
cyhjYWxsYmFja0FyZ3VtZW50cykKICAgICAgICAgLCBtX251bWJlck9mQXJndW1lbnRzKG51bWJl
ck9mQXJndW1lbnRzKQogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0RSVFRlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RS
VFRlc3RSdW5uZXIuaAppbmRleCA2MGEwMzhhMjdkZDg5NGNhMWQ0NDcxMDliZWJhZDc4YWUyZmUw
NjE5Li5lYzQ3NzhmZDVjNDZmOGYzMjg3NThhMTU3YTMyODIxNDU0YjViMjIxIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5oCkBAIC00Myw2ICs0Myw3
IEBACiAjZGVmaW5lIERSVFRlc3RSdW5uZXJfaAogCiAjaW5jbHVkZSAiVGVzdFJ1bm5lci9zcmMv
VGVzdFJ1bm5lci5oIgorI2luY2x1ZGUgIldlYlRhc2suaCIKIAogY2xhc3MgVGVzdFNoZWxsOwog
CkBAIC01MTEsNyArNTEyLDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIGJvb2wgcnVuKFRl
c3RTaGVsbCopID0gMDsKICAgICB9OwogCi0gICAgVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1
cm4gJm1fdGFza0xpc3Q7IH0KKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCogdGFza0xp
c3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQogCiAgICAgYm9vbCBzaG91bGRTdGF5T25QYWdl
QWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU3RheU9u
UGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQ7IH0KIApAQCAtNTM0LDE3ICs1MzUsMTcgQEAg
cHJpdmF0ZToKIAogICAgICAgICB2b2lkIHNldEZyb3plbihib29sIGZyb3plbikgeyBtX2Zyb3pl
biA9IGZyb3plbjsgfQogICAgICAgICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBtX3F1ZXVlLmlz
RW1wdHkoKTsgfQotICAgICAgICBUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNr
TGlzdDsgfQorICAgICAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCogdGFza0xpc3QoKSB7
IHJldHVybiAmbV90YXNrTGlzdDsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBwcm9j
ZXNzV29yaygpOwotICAgICAgICBjbGFzcyBXb3JrUXVldWVUYXNrOiBwdWJsaWMgTWV0aG9kVGFz
azxXb3JrUXVldWU+IHsKKyAgICAgICAgY2xhc3MgV29ya1F1ZXVlVGFzazogcHVibGljIFdlYlRl
c3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8V29ya1F1ZXVlPiB7CiAgICAgICAgIHB1YmxpYzoKLSAg
ICAgICAgICAgIFdvcmtRdWV1ZVRhc2soV29ya1F1ZXVlKiBvYmplY3QpOiBNZXRob2RUYXNrPFdv
cmtRdWV1ZT4ob2JqZWN0KSB7IH0KKyAgICAgICAgICAgIFdvcmtRdWV1ZVRhc2soV29ya1F1ZXVl
KiBvYmplY3QpOiBXZWJUZXN0UnVubmVyOjpXZWJNZXRob2RUYXNrPFdvcmtRdWV1ZT4ob2JqZWN0
KSB7IH0KICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgeyBtX29iamVjdC0+
cHJvY2Vzc1dvcmsoKTsgfQogICAgICAgICB9OwogCi0gICAgICAgIFRhc2tMaXN0IG1fdGFza0xp
c3Q7CisgICAgICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0IG1fdGFza0xpc3Q7CiAgICAg
ICAgIERlcXVlPFdvcmtJdGVtKj4gbV9xdWV1ZTsKICAgICAgICAgYm9vbCBtX2Zyb3plbjsKICAg
ICAgICAgRFJUVGVzdFJ1bm5lciogbV9jb250cm9sbGVyOwpAQCAtNTU4LDkgKzU1OSw5IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGxvZ0Vycm9yVG9Db25zb2xlKGNvbnN0IHN0ZDo6c3RyaW5nJik7
CiAgICAgdm9pZCBjb21wbGV0ZU5vdGlmeURvbmUoYm9vbCBpc1RpbWVvdXQpOwotICAgIGNsYXNz
IE5vdGlmeURvbmVUaW1lZE91dFRhc2s6IHB1YmxpYyBNZXRob2RUYXNrPERSVFRlc3RSdW5uZXI+
IHsKKyAgICBjbGFzcyBOb3RpZnlEb25lVGltZWRPdXRUYXNrOiBwdWJsaWMgV2ViVGVzdFJ1bm5l
cjo6V2ViTWV0aG9kVGFzazxEUlRUZXN0UnVubmVyPiB7CiAgICAgcHVibGljOgotICAgICAgICBO
b3RpZnlEb25lVGltZWRPdXRUYXNrKERSVFRlc3RSdW5uZXIqIG9iamVjdCk6IE1ldGhvZFRhc2s8
RFJUVGVzdFJ1bm5lcj4ob2JqZWN0KSB7IH0KKyAgICAgICAgTm90aWZ5RG9uZVRpbWVkT3V0VGFz
ayhEUlRUZXN0UnVubmVyKiBvYmplY3QpOiBXZWJUZXN0UnVubmVyOjpXZWJNZXRob2RUYXNrPERS
VFRlc3RSdW5uZXI+KG9iamVjdCkgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlk
KCkgeyBtX29iamVjdC0+Y29tcGxldGVOb3RpZnlEb25lKHRydWUpOyB9CiAgICAgfTsKIApAQCAt
NTcxLDcgKzU3Miw3IEBAIHByaXZhdGU6CiAgICAgaW50IG51bWJlck9mQWN0aXZlQW5pbWF0aW9u
cygpOwogCiAgICAgLy8gVXNlZCBmb3IgdGVzdCB0aW1lb3V0cy4KLSAgICBUYXNrTGlzdCBtX3Rh
c2tMaXN0OworICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0IG1fdGFza0xpc3Q7CiAKICAg
ICAvLyBOb24tb3duaW5nIHBvaW50ZXIuIFRoZSBEUlRUZXN0UnVubmVyIGlzIG93bmVkIGJ5IHRo
ZSBob3N0LgogICAgIFRlc3RTaGVsbCogbV9zaGVsbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlci5jcHAKaW5kZXggZDZlNWU3ZjA1ZTEyZGJjNzJiMDEwYTdiZDkxMGVjZDFjYTFlOTUxMy4u
NmVhZjlkNjAzYWFkNWUzYTNiODdiZDM4NzFkMjNjMTBjZjVjMzRhNSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJNb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgiCiAKICNpbmNsdWRlICJNb2NrQ29uc3RyYWludHMu
aCIKKyNpbmNsdWRlICJUYXNrLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhQ29uc3RyYWlu
dHMuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFTdHJlYW1Db21wb25lbnQuaD4KICNpbmNs
dWRlIDxwdWJsaWMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmg+CkBAIC00OCwxMSArNDksMTIg
QEAKICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyOwogCi1jbGFzcyBSVENTZXNzaW9uRGVzY3Jp
cHRpb25SZXF1ZXN0U3VjY2VkZWRUYXNrIDogcHVibGljIE1ldGhvZFRhc2s8TW9ja1dlYlJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlcj4geworY2xhc3MgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVz
dFN1Y2NlZGVkVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXI+IHsKIHB1YmxpYzoKICAgICBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0
U3VjY2VkZWRUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgY29u
c3QgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViUlRD
U2Vzc2lvbkRlc2NyaXB0aW9uJiByZXN1bHQpCi0gICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCisgICAgICAgIDogV2ViTWV0aG9kVGFz
azxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCiAgICAgICAgICwgbV9y
ZXF1ZXN0KHJlcXVlc3QpCiAgICAgICAgICwgbV9yZXN1bHQocmVzdWx0KQogICAgIHsKQEAgLTY4
LDEwICs3MCwxMCBAQCBwcml2YXRlOgogICAgIFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiBtX3Jl
c3VsdDsKIH07CiAKLWNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RGYWlsZWRUYXNr
IDogcHVibGljIE1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4gewor
Y2xhc3MgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdEZhaWxlZFRhc2sgOiBwdWJsaWMgV2Vi
TWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CiBwdWJsaWM6CiAg
ICAgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdEZhaWxlZFRhc2soTW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25S
ZXF1ZXN0JiByZXF1ZXN0KQotICAgICAgICA6IE1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQogICAgICAgICAsIG1fcmVxdWVzdChyZXF1
ZXN0KQogICAgIHsKICAgICB9CkBAIC04NSwxMCArODcsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJS
VENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0IG1fcmVxdWVzdDsKIH07CiAKLWNsYXNzIFJUQ1N0
YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2sgOiBwdWJsaWMgTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyPiB7CitjbGFzcyBSVENTdGF0c1JlcXVlc3RTdWNjZWVkZWRUYXNr
IDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4g
ewogcHVibGljOgogICAgIFJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2soTW9ja1dlYlJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBXZWJLaXQ6OldlYlJUQ1N0YXRzUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViS2l0OjpXZWJSVENTdGF0c1Jlc3BvbnNlJiByZXNwb25z
ZSkKLSAgICAgICAgOiBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+
KG9iamVjdCkKKyAgICAgICAgOiBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXI+KG9iamVjdCkKICAgICAgICAgLCBtX3JlcXVlc3QocmVxdWVzdCkKICAgICAgICAg
LCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQogICAgIHsKQEAgLTEwNCwxMCArMTA2LDEwIEBAIHByaXZh
dGU6CiAgICAgV2ViS2l0OjpXZWJSVENTdGF0c1Jlc3BvbnNlIG1fcmVzcG9uc2U7CiB9OwogCi1j
bGFzcyBSVENWb2lkUmVxdWVzdFRhc2sgOiBwdWJsaWMgTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyPiB7CitjbGFzcyBSVENWb2lkUmVxdWVzdFRhc2sgOiBwdWJsaWMg
V2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CiBwdWJsaWM6
CiAgICAgUlRDVm9pZFJlcXVlc3RUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIq
IG9iamVjdCwgY29uc3QgV2ViUlRDVm9pZFJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgc3VjY2VlZGVk
KQotICAgICAgICA6IE1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4o
b2JqZWN0KQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlcj4ob2JqZWN0KQogICAgICAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQogICAgICAgICAs
IG1fc3VjY2VlZGVkKHN1Y2NlZWRlZCkKICAgICB7CkBAIC0xMjYsMTAgKzEyOCwxMCBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9zdWNjZWVkZWQ7CiB9OwogCi1jbGFzcyBTdHJpbmdEYXRhVGFzayA6
IHB1YmxpYyBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKK2Ns
YXNzIFN0cmluZ0RhdGFUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlcj4gewogcHVibGljOgogICAgIFN0cmluZ0RhdGFUYXNrKE1vY2tXZWJS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgY29uc3QgV2ViUlRDRGF0YUNoYW5uZWwm
IGRhdGFDaGFubmVsLCBjb25zdCBXZWJTdHJpbmcmIGRhdGEpCi0gICAgICAgIDogTWV0aG9kVGFz
azxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCisgICAgICAgIDogV2Vi
TWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCiAgICAg
ICAgICwgbV9kYXRhQ2hhbm5lbChkYXRhQ2hhbm5lbCkKICAgICAgICAgLCBtX2RhdGEoZGF0YSkK
ICAgICB7CkBAIC0xNDUsMTAgKzE0NywxMCBAQCBwcml2YXRlOgogICAgIFdlYlN0cmluZyBtX2Rh
dGE7CiB9OwogCi1jbGFzcyBDaGFyUHRyRGF0YVRhc2sgOiBwdWJsaWMgTWV0aG9kVGFzazxNb2Nr
V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CitjbGFzcyBDaGFyUHRyRGF0YVRhc2sgOiBw
dWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CiBw
dWJsaWM6CiAgICAgQ2hhclB0ckRhdGFUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXIqIG9iamVjdCwgY29uc3QgV2ViUlRDRGF0YUNoYW5uZWwmIGRhdGFDaGFubmVsLCBjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQotICAgICAgICA6IE1ldGhvZFRhc2s8TW9ja1dlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8
TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQogICAgICAgICAsIG1fZGF0
YUNoYW5uZWwoZGF0YUNoYW5uZWwpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgIHsK
QEAgLTE2OCwxMCArMTcwLDEwIEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fbGVuZ3RoOwogfTsK
IAotY2xhc3MgRGF0YUNoYW5uZWxSZWFkeVN0YXRlVGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPE1v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKK2NsYXNzIERhdGFDaGFubmVsUmVhZHlT
dGF0ZVRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyPiB7CiBwdWJsaWM6CiAgICAgRGF0YUNoYW5uZWxSZWFkeVN0YXRlVGFzayhNb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIGNvbnN0IFdlYlJUQ0RhdGFDaGFubmVs
JiBkYXRhQ2hhbm5lbCwgV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3RhdGUgc3RhdGUpCi0gICAg
ICAgIDogTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3Qp
CisgICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
PihvYmplY3QpCiAgICAgICAgICwgbV9kYXRhQ2hhbm5lbChkYXRhQ2hhbm5lbCkKICAgICAgICAg
LCBtX3N0YXRlKHN0YXRlKQogICAgIHsKQEAgLTE4NywxMCArMTg5LDEwIEBAIHByaXZhdGU6CiAg
ICAgV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3RhdGUgbV9zdGF0ZTsKIH07CiAKLWNsYXNzIFJU
Q1BlZXJDb25uZWN0aW9uUmVhZHlTdGF0ZVRhc2sgOiBwdWJsaWMgTWV0aG9kVGFzazxNb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CitjbGFzcyBSVENQZWVyQ29ubmVjdGlvblJlYWR5
U3RhdGVUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlcj4gewogcHVibGljOgogICAgIFJUQ1BlZXJDb25uZWN0aW9uUmVhZHlTdGF0ZVRhc2so
TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBXZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDbGllbnQqIGNsaWVudCwgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xp
ZW50OjpSZWFkeVN0YXRlIHN0YXRlKQotICAgICAgICA6IE1ldGhvZFRhc2s8TW9ja1dlYlJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8TW9j
a1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQogICAgICAgICAsIG1fY2xpZW50
KGNsaWVudCkKICAgICAgICAgLCBtX3N0YXRlKHN0YXRlKQogICAgIHsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXIuaAppbmRleCA1ZGRkMmZjNDU1ZTdjZWE4OTQ2OTU5NGYxODU4OTc3N2IzZmQw
NmMzLi5hMTUyMmY0ZmJlNmZlM2I1ZmE0NDIyZDVlZDcwOThmMGIzMjhhYzA1IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlci5oCkBAIC0zMyw3ICszMyw3IEBACiAKICNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogCi0jaW5jbHVkZSAiVGVzdFJ1bm5lci9zcmMvVGFzay5oIgorI2luY2x1ZGUg
IldlYlRhc2suaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDRGF0YUNoYW5uZWwuaD4KICNpbmNs
dWRlIDxwdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8cHVi
bGljL1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oPgpAQCAtNjgsMTUgKzY4LDE1IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgV2ViS2l0OjpXZWJSVENEYXRh
Q2hhbm5lbCYsIGNvbnN0IGNoYXIqLCBzaXplX3QpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZURhdGFDaGFubmVsKGNvbnN0IFdlYktpdDo6V2ViUlRDRGF0YUNoYW5uZWwmKSBPVkVS
UklERTsKIAotICAgIC8vIFRhc2sgcmVsYXRlZCBtZXRob2RzCi0gICAgVGFza0xpc3QqIHRhc2tM
aXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAgICAvLyBXZWJUYXNrIHJlbGF0ZWQgbWV0
aG9kcworICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJu
ICZtX3Rhc2tMaXN0OyB9CiAKIHByaXZhdGU6CiAgICAgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlcigpIHsgfQogCiAgICAgV2ViS2l0OjpXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJD
bGllbnQqIG1fY2xpZW50OwogICAgIGJvb2wgbV9zdG9wcGVkOwotICAgIFRhc2tMaXN0IG1fdGFz
a0xpc3Q7CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QgbV90YXNrTGlzdDsKICAgICBX
ZWJLaXQ6OldlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiBtX2xvY2FsRGVzY3JpcHRpb247CiAgICAg
V2ViS2l0OjpXZWJSVENTZXNzaW9uRGVzY3JpcHRpb24gbV9yZW1vdGVEZXNjcmlwdGlvbjsKICAg
ICBpbnQgbV9zdHJlYW1Db3VudDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL01vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5jcHAKaW5kZXggMTNj
OGZmMWVjNGMxY2RlNTUwNzY2OThkZmNmZTVlODcxMjZhODJlYi4uNTI4NDU1YmQ2MDc5MjM2ODY3
YmQyZDY2YzA4ZmVjODVlYTA5MzFhYSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5jcHAKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNb2NrV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJUYXNrLmgiCiAjaW5jbHVkZSAiV2Vi
U3BlZWNoSW5wdXRMaXN0ZW5lci5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNTdHJpbmcuaCIK
ICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKQEAgLTM1LDYgKzM2LDcgQEAKICNpZiBF
TkFCTEUoSU5QVVRfU1BFRUNIKQogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFt
ZXNwYWNlIFdlYlRlc3RSdW5uZXI7CiAKIFBhc3NPd25QdHI8TW9ja1dlYlNwZWVjaElucHV0Q29u
dHJvbGxlcj4gTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlcjo6Y3JlYXRlKFdlYlNwZWVjaElu
cHV0TGlzdGVuZXIqIGxpc3RlbmVyKQogewpAQCAtMTgyLDcgKzE4NCw3IEBAIHZvaWQgTW9ja1dl
YlNwZWVjaElucHV0Q29udHJvbGxlcjo6c3BlZWNoVGFza0ZpcmVkKCkKIH0KIAogTW9ja1dlYlNw
ZWVjaElucHV0Q29udHJvbGxlcjo6U3BlZWNoVGFzazo6U3BlZWNoVGFzayhNb2NrV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyKiBtb2NrKQotICAgIDogTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyPjo6TWV0aG9kVGFzayhtb2NrKQorICAgIDogV2ViTWV0aG9kVGFzazxNb2Nr
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyPjo6V2ViTWV0aG9kVGFzayhtb2NrKQogewogfQogCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyLmgKaW5kZXggNjQ5NGE3ZjI1YmFiYjNjYzNhOTE3YjU5ZjUwZDhh
OWQ4NzljYjEyYy4uMDc1ZjI1NDFmOWEyODJhY2I0Y2Q5YzQ5ZDIzMzJmYWNiMjJmYjM3OSAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0
Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXIuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKElO
UFVUX1NQRUVDSCkKIAotI2luY2x1ZGUgIlRlc3RSdW5uZXIvc3JjL1Rhc2suaCIKKyNpbmNsdWRl
ICJXZWJUYXNrLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViUmVjdC5oIgogI2luY2x1ZGUgIldl
YlNwZWVjaElucHV0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldlYlNwZWVjaElucHV0UmVzdWx0
LmgiCkBAIC01OCwxMyArNTgsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxS
ZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3Rv
cFJlY29yZGluZyhpbnQgcmVxdWVzdElkKSBPVkVSUklERTsKIAotICAgIFRhc2tMaXN0KiB0YXNr
TGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFz
a0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KIAogcHJpdmF0ZToKICAg
ICBNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0
ZW5lciopOwogICAgIHZvaWQgc3BlZWNoVGFza0ZpcmVkKCk7CiAKLSAgICBjbGFzcyBTcGVlY2hU
YXNrIDogcHVibGljIE1ldGhvZFRhc2s8TW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlcj4gewor
ICAgIGNsYXNzIFNwZWVjaFRhc2sgOiBwdWJsaWMgV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFz
azxNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyPiB7CiAgICAgcHVibGljOgogICAgICAgICBT
cGVlY2hUYXNrKE1vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqKTsKICAgICAgICAgdm9pZCBz
dG9wKCk7CkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJLaXQ6OldlYlNwZWVj
aElucHV0TGlzdGVuZXIqIG1fbGlzdGVuZXI7CiAKLSAgICBUYXNrTGlzdCBtX3Rhc2tMaXN0Owor
ICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0IG1fdGFza0xpc3Q7CiAgICAgU3BlZWNoVGFz
ayogbV9zcGVlY2hUYXNrOwogCiAgICAgYm9vbCBtX3JlY29yZGluZzsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmNw
cAppbmRleCA1MDJhZGRlYTkyNTYyZDRjNzJhMDJkZmZjZThlNGYxYTEzYWUxNzUyLi44ODE0M2Mw
YmE4ODRiMzNmZGU0OTBiZTFjM2E2NWJhZWUxNzZlZDQ2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5jcHAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuY3BwCkBA
IC0yOCwxMCArMjgsMTIgQEAKIAogI2lmIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCiAKKyNpbmNs
dWRlICJUYXNrLmgiCiAjaW5jbHVkZSAiV2ViU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuaCIKICNp
bmNsdWRlICJXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lcjsKIAogbmFtZXNwYWNlIHsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJl
Y29nbml6ZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hS
ZWNvZ25pemVyLmgKaW5kZXggNGNjMDQ1NjY5ZmFmMDE1MjhhNmQ1ZjViNWZiNTJiNmQxZGUyMmJk
ZC4uNDE5YzVlNTA0OWZhYWY5ZmIyNWE2MTFlYzcxNDAwOTQwN2RjZjRmNiAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXpl
ci5oCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQogCi0j
aW5jbHVkZSAiVGVzdFJ1bm5lci9zcmMvVGFzay5oIgogI2luY2x1ZGUgIldlYlNwZWVjaFJlY29n
bml6ZXIuaCIKKyNpbmNsdWRlICJXZWJUYXNrLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBA
IC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICAvLyBNZXRob2RzIGFjY2Vzc2VkIGZyb20gVGFz
ayBvYmplY3RzOgogICAgIFdlYktpdDo6V2ViU3BlZWNoUmVjb2duaXplckNsaWVudCogY2xpZW50
KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KICAgICBXZWJLaXQ6OldlYlNwZWVjaFJlY29nbml0aW9u
SGFuZGxlJiBoYW5kbGUoKSB7IHJldHVybiBtX2hhbmRsZTsgfQotICAgIFRhc2tMaXN0KiB0YXNr
TGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFz
a0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KIAogICAgIGNsYXNzIFRh
c2sgewogICAgIHB1YmxpYzoKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0
YXJ0VGFza1F1ZXVlKCk7CiAgICAgdm9pZCBjbGVhclRhc2tRdWV1ZSgpOwogCi0gICAgVGFza0xp
c3QgbV90YXNrTGlzdDsKKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0
OwogICAgIFdlYktpdDo6V2ViU3BlZWNoUmVjb2duaXRpb25IYW5kbGUgbV9oYW5kbGU7CiAgICAg
V2ViS2l0OjpXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50KiBtX2NsaWVudDsKICAgICBWZWN0b3I8
V2ViS2l0OjpXZWJTdHJpbmc+IG1fbW9ja1RyYW5zY3JpcHRzOwpAQCAtODYsOSArODYsOSBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV90YXNrUXVldWVSdW5uaW5nOwogCiAgICAgLy8gVGFzayBmb3Ig
c3RlcHBpbmcgdGhlIHF1ZXVlLgotICAgIGNsYXNzIFN0ZXBUYXNrIDogcHVibGljIE1ldGhvZFRh
c2s8TW9ja1dlYlNwZWVjaFJlY29nbml6ZXI+IHsKKyAgICBjbGFzcyBTdGVwVGFzayA6IHB1Ymxp
YyBXZWJUZXN0UnVubmVyOjpXZWJNZXRob2RUYXNrPE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyPiB7
CiAgICAgcHVibGljOgotICAgICAgICBTdGVwVGFzayhNb2NrV2ViU3BlZWNoUmVjb2duaXplciog
b2JqZWN0KSA6IE1ldGhvZFRhc2s8TW9ja1dlYlNwZWVjaFJlY29nbml6ZXI+KG9iamVjdCkgeyB9
CisgICAgICAgIFN0ZXBUYXNrKE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyKiBvYmplY3QpIDogV2Vi
VGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoUmVjb2duaXplcj4ob2JqZWN0
KSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERTsKICAgICB9
OwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rhc2suY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGFzay5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzRj
MzEzMjUwYzczZjUyMGNkNzNkMDNiMDA0NmU1NTUyZGM1NTgxMgotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rhc2suY3BwCkBAIC0wLDAgKzEsODAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGFzay5oIgorCisjaW5jbHVkZSAiV2ViS2l0
LmgiCisjaW5jbHVkZSAiV2ViVGFzay5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYktpdFBsYXRm
b3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5l
cjsKKworbmFtZXNwYWNlIHsKKwordm9pZCBpbnZva2VUYXNrKHZvaWQqIGNvbnRleHQpCit7Cisg
ICAgV2ViVGFzayogdGFzayA9IHN0YXRpY19jYXN0PFdlYlRhc2sqPihjb250ZXh0KTsKKyAgICB0
YXNrLT5ydW4oKTsKKyAgICBkZWxldGUgdGFzazsKK30KKworY2xhc3MgVGFza1dyYXBwZXIgOiBw
dWJsaWMgd2Via2l0X3N1cHBvcnQ6OlRhc2tBZGFwdG9yIHsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBUYXNrV3JhcHBlcihXZWJUYXNrKiB0YXNrKQorICAgICAgICA6IG1fdGFzayh0YXNrKQorICAg
IHsKKyAgICB9CisgICAgdmlydHVhbCB+VGFza1dyYXBwZXIoKQorICAgIHsKKyAgICAgICAgZGVs
ZXRlIG1fdGFzazsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIFJ1bigpCisgICAgeworICAgICAg
ICBtX3Rhc2stPnJ1bigpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXZWJUYXNrKiBtX3Rhc2s7
Cit9OworCit9CisKK3ZvaWQgcG9zdFRhc2soV2ViVGFzayogdGFzaykKK3sKKyAgICB3ZWJLaXRQ
bGF0Zm9ybVN1cHBvcnQoKS0+Y2FsbE9uTWFpblRocmVhZChpbnZva2VUYXNrLCBzdGF0aWNfY2Fz
dDx2b2lkKj4odGFzaykpOworfQorCit2b2lkIHBvc3REZWxheWVkVGFzayhXZWJUYXNrKiB0YXNr
LCBsb25nIGxvbmcgbXMpCit7CisgICAgd2Via2l0X3N1cHBvcnQ6OlBvc3REZWxheWVkVGFzayhu
ZXcgVGFza1dyYXBwZXIodGFzayksIG1zKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rhc2suaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rh
c2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jODc1NWE4M2NiODI2NzY4ZDczZDA1MDZhN2ZmZGM0YzdhY2YwNmY5
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGFzay5o
CkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRhc2tfaAorI2RlZmluZSBUYXNrX2gKKworbmFtZXNw
YWNlIFdlYlRlc3RSdW5uZXIgeworY2xhc3MgV2ViVGFzazsKK30KKwordm9pZCBwb3N0VGFzayhX
ZWJUZXN0UnVubmVyOjpXZWJUYXNrKik7Cit2b2lkIHBvc3REZWxheWVkVGFzayhXZWJUZXN0UnVu
bmVyOjpXZWJUYXNrKiwgbG9uZyBsb25nIG1zKTsKKworI2VuZGlmIC8vIFRhc2tfaApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2Vi
VGFzay5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMv
V2ViVGFzay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmNzNlMTc3ZTA0MTBlNmZlNmRhNjE4YzBlMWQ2ZWI3NDQ0
NzMwYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3B1YmxpYy9XZWJUYXNrLmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlRh
c2tfaAorI2RlZmluZSBXZWJUYXNrX2gKKworbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworCitj
bGFzcyBXZWJUYXNrTGlzdDsKKworLy8gV2ViVGFzayByZXByZXNlbnRzIGEgdGFzayB3aGljaCBj
YW4gcnVuIGJ5IFdlYlRlc3REZWxlZ2F0ZTo6cG9zdFRhc2soKSBvcgorLy8gV2ViVGVzdERlbGVn
YXRlOjpwb3N0RGVsYXllZFRhc2soKS4KK2NsYXNzIFdlYlRhc2sgeworcHVibGljOgorICAgIGV4
cGxpY2l0IFdlYlRhc2soV2ViVGFza0xpc3QqKTsKKyAgICB2aXJ0dWFsIH5XZWJUYXNrKCk7CisK
KyAgICAvLyBUaGUgbWFpbiBjb2RlIG9mIHRoaXMgdGFzay4KKyAgICAvLyBBbiBpbXBsZW1lbnRh
dGlvbiBvZiBydW4oKSBzaG91bGQgcmV0dXJuIGltbWVkaWF0ZWx5IGlmIGNhbmNlbCgpIHdhcyBj
YWxsZWQuCisgICAgdmlydHVhbCB2b2lkIHJ1bigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsKCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgV2ViVGFza0xpc3QqIG1fdGFza0xpc3Q7Cit9
OworCitjbGFzcyBXZWJUYXNrTGlzdCB7CitwdWJsaWM6CisgICAgV2ViVGFza0xpc3QoKTsKKyAg
ICB+V2ViVGFza0xpc3QoKTsKKyAgICB2b2lkIHJlZ2lzdGVyVGFzayhXZWJUYXNrKik7CisgICAg
dm9pZCB1bnJlZ2lzdGVyVGFzayhXZWJUYXNrKik7CisgICAgdm9pZCByZXZva2VBbGwoKTsKKwor
cHJpdmF0ZToKKyAgICBjbGFzcyBQcml2YXRlOworICAgIFByaXZhdGUqIG1fcHJpdmF0ZTsKK307
CisKKy8vIEEgdGFzayBjb250YWluaW5nIGFuIG9iamVjdCBwb2ludGVyIG9mIGNsYXNzIFQuIERl
cml2ZWQgY2xhc3NlcyBzaG91bGQKKy8vIG92ZXJyaWRlIHJ1bklmVmFsaWQoKSB3aGljaCBpbiB0
dXJuIGNhbiBzYWZlbHkgaW52b2tlIG1ldGhvZHMgb24gdGhlCisvLyBtX29iamVjdC4gVGhlIENs
YXNzIFQgbXVzdCBoYXZlICJXZWJUYXNrTGlzdCogdGFza0xpc3QoKSIuCit0ZW1wbGF0ZTxjbGFz
cyBUPgorY2xhc3MgV2ViTWV0aG9kVGFzayA6IHB1YmxpYyBXZWJUYXNrIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBXZWJNZXRob2RUYXNrKFQqIG9iamVjdCkKKyAgICAgICAgOiBXZWJUYXNrKG9i
amVjdC0+dGFza0xpc3QoKSkKKyAgICAgICAgLCBtX29iamVjdChvYmplY3QpCisgICAgeworICAg
IH0KKworICAgIHZpcnR1YWwgfldlYk1ldGhvZFRhc2soKSB7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCBydW4oKQorICAgIHsKKyAgICAgICAgaWYgKG1fb2JqZWN0KQorICAgICAgICAgICAgcnVuSWZW
YWxpZCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKQorICAgIHsKKyAgICAg
ICAgbV9vYmplY3QgPSAwOworICAgICAgICBtX3Rhc2tMaXN0LT51bnJlZ2lzdGVyVGFzayh0aGlz
KTsKKyAgICAgICAgbV90YXNrTGlzdCA9IDA7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHJ1
bklmVmFsaWQoKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBUKiBtX29iamVjdDsKK307CisKK30K
KworI2VuZGlmIC8vIFdlYlRhc2tfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdERlbGVnYXRlLmggYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaApp
bmRleCA1MzZiYzU3MGE5NjdlYjRjYmM5NjJhMTZiM2QzN2M2NmFmYWRjNjM0Li5jNGE2ODE5ODY3
Y2M4YTE0NTE5OTQ5NTcwZGMxMzk0Y2YyOTIwZTA2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0
RGVsZWdhdGUuaApAQCAtNDEsNiArNDEsOCBAQCBjbGFzcyBXZWJHYW1lcGFkczsKIAogbmFtZXNw
YWNlIFdlYlRlc3RSdW5uZXIgewogCitjbGFzcyBXZWJUYXNrOworCiBjbGFzcyBXZWJUZXN0RGVs
ZWdhdGUgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNvbnRleHRNZW51RGF0YSgp
ID0gMDsKQEAgLTUwLDYgKzUyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJD
b250ZXh0TWVudURhdGEqIGxhc3RDb250ZXh0TWVudURhdGEoKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldEdhbWVwYWREYXRhKGNvbnN0IFdlYktpdDo6V2ViR2FtZXBhZHMmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHByaW50TWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2Fn
ZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhXZWJUYXNrKikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBwb3N0RGVsYXllZFRhc2soV2ViVGFzayosIGxvbmcgbG9uZyBtcykg
PSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwCmluZGV4IGQ2ZjcyZjBkZTk0Yjhl
NWI3MWU4YTg3NzlmZWNkODQyZmI2MmUzYjAuLmM0ZGFhODczOGEwYjQzNzNiZDA5MjJhNDdjZWUz
ZDJjNDQzYTVkNWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAKQEAgLTg1NCwyMCArODU0LDIw
IEBAIHZvaWQgRXZlbnRTZW5kZXI6OmNvbnRleHRDbGljayhjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzCiAgICAgcmVzdWx0LT5zZXQoV2ViQmluZGluZ3M6
Om1ha2VTdHJpbmdBcnJheShtYWtlTWVudUl0ZW1TdHJpbmdzRm9yKGxhc3RDb250ZXh0TWVudSwg
bV9kZWxlZ2F0ZSkpKTsKIH0KIAotY2xhc3MgTW91c2VEb3duVGFzazogcHVibGljIE1ldGhvZFRh
c2s8RXZlbnRTZW5kZXI+IHsKK2NsYXNzIE1vdXNlRG93blRhc2s6IHB1YmxpYyBXZWJNZXRob2RU
YXNrPEV2ZW50U2VuZGVyPiB7CiBwdWJsaWM6CiAgICAgTW91c2VEb3duVGFzayhFdmVudFNlbmRl
ciogb2JqLCBjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZykKLSAgICAgICAgOiBNZXRob2RUYXNr
PEV2ZW50U2VuZGVyPihvYmopLCBtX2FyZ3VtZW50cyhhcmcpIHsgfQorICAgICAgICA6IFdlYk1l
dGhvZFRhc2s8RXZlbnRTZW5kZXI+KG9iaiksIG1fYXJndW1lbnRzKGFyZykgeyB9CiAgICAgdmly
dHVhbCB2b2lkIHJ1bklmVmFsaWQoKSB7IG1fb2JqZWN0LT5tb3VzZURvd24obV9hcmd1bWVudHMs
IDApOyB9CiAKIHByaXZhdGU6CiAgICAgQ3BwQXJndW1lbnRMaXN0IG1fYXJndW1lbnRzOwogfTsK
IAotY2xhc3MgTW91c2VVcFRhc2s6IHB1YmxpYyBNZXRob2RUYXNrPEV2ZW50U2VuZGVyPiB7Citj
bGFzcyBNb3VzZVVwVGFzazogcHVibGljIFdlYk1ldGhvZFRhc2s8RXZlbnRTZW5kZXI+IHsKIHB1
YmxpYzoKICAgICBNb3VzZVVwVGFzayhFdmVudFNlbmRlciogb2JqLCBjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZykKLSAgICAgICAgOiBNZXRob2RUYXNrPEV2ZW50U2VuZGVyPihvYmopLCBtX2Fy
Z3VtZW50cyhhcmcpIHsgfQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8RXZlbnRTZW5kZXI+KG9i
aiksIG1fYXJndW1lbnRzKGFyZykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSB7
IG1fb2JqZWN0LT5tb3VzZVVwKG1fYXJndW1lbnRzLCAwKTsgfQogCiBwcml2YXRlOgpAQCAtODc3
LDE0ICs4NzcsMTQgQEAgcHJpdmF0ZToKIHZvaWQgRXZlbnRTZW5kZXI6OnNjaGVkdWxlQXN5bmNo
cm9ub3VzQ2xpY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQq
IHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKLSAgICBwb3N0VGFzayhuZXcgTW91
c2VEb3duVGFzayh0aGlzLCBhcmd1bWVudHMpKTsKLSAgICBwb3N0VGFzayhuZXcgTW91c2VVcFRh
c2sodGhpcywgYXJndW1lbnRzKSk7CisgICAgbV9kZWxlZ2F0ZS0+cG9zdFRhc2sobmV3IE1vdXNl
RG93blRhc2sodGhpcywgYXJndW1lbnRzKSk7CisgICAgbV9kZWxlZ2F0ZS0+cG9zdFRhc2sobmV3
IE1vdXNlVXBUYXNrKHRoaXMsIGFyZ3VtZW50cykpOwogfQogCi1jbGFzcyBLZXlEb3duVGFzayA6
IHB1YmxpYyBNZXRob2RUYXNrPEV2ZW50U2VuZGVyPiB7CitjbGFzcyBLZXlEb3duVGFzayA6IHB1
YmxpYyBXZWJNZXRob2RUYXNrPEV2ZW50U2VuZGVyPiB7CiBwdWJsaWM6CiAgICAgS2V5RG93blRh
c2soRXZlbnRTZW5kZXIqIG9iaiwgY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmcpCi0gICAgICAg
IDogTWV0aG9kVGFzazxFdmVudFNlbmRlcj4ob2JqKSwgbV9hcmd1bWVudHMoYXJnKSB7IH0KKyAg
ICAgICAgOiBXZWJNZXRob2RUYXNrPEV2ZW50U2VuZGVyPihvYmopLCBtX2FyZ3VtZW50cyhhcmcp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgeyBtX29iamVjdC0+a2V5RG93biht
X2FyZ3VtZW50cywgMCk7IH0KIAogcHJpdmF0ZToKQEAgLTg5NCw3ICs4OTQsNyBAQCBwcml2YXRl
Ogogdm9pZCBFdmVudFNlbmRlcjo6c2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVz
dWx0LT5zZXROdWxsKCk7Ci0gICAgcG9zdFRhc2sobmV3IEtleURvd25UYXNrKHRoaXMsIGFyZ3Vt
ZW50cykpOworICAgIG1fZGVsZWdhdGUtPnBvc3RUYXNrKG5ldyBLZXlEb3duVGFzayh0aGlzLCBh
cmd1bWVudHMpKTsKIH0KIAogdm9pZCBFdmVudFNlbmRlcjo6YmVnaW5EcmFnV2l0aEZpbGVzKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVu
dFNlbmRlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
RXZlbnRTZW5kZXIuaAppbmRleCA2NWRmY2NiOGMxNTVlMjU0ODgyODY4NjEyYmE4MjJjNDAxZGVh
MTE5Li5kMDdlMTRjYzZmMmQwNjc0NDk5Y2RkN2QyODliZGIyNGZiZTY2NmIxIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRl
ci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2
ZW50U2VuZGVyLmgKQEAgLTM4LDkgKzM4LDkgQEAKICNkZWZpbmUgRXZlbnRTZW5kZXJfaAogCiAj
aW5jbHVkZSAiQ3BwQm91bmRDbGFzcy5oIgotI2luY2x1ZGUgIlRhc2suaCIKICNpbmNsdWRlICJX
ZWJEcmFnT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgorI2luY2x1ZGUg
IldlYlRhc2suaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQb2ludC5oIgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTEzMSw3ICsxMzEsNyBAQCBwdWJsaWM6CiAgICAgQ3BwVmFyaWFudCB3bVN5
c0RlYWRDaGFyOwogI2VuZGlmCiAKLSAgICBUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAm
bV90YXNrTGlzdDsgfQorICAgIFdlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rh
c2tMaXN0OyB9CiAKIHByaXZhdGU6CiAgICAgV2ViS2l0OjpXZWJWaWV3KiB3ZWJ2aWV3KCkgeyBy
ZXR1cm4gbV93ZWJWaWV3OyB9CkBAIC0xNjUsNyArMTY1LDcgQEAgcHJpdmF0ZToKICAgICAvLyBI
YW5kbGUgYSByZXF1ZXN0IHRvIHNlbmQgYSB3aGVlbCBldmVudC4KICAgICB2b2lkIGhhbmRsZU1v
dXNlV2hlZWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCosIGJvb2wgY29udGlu
dW91cyk7CiAKLSAgICBUYXNrTGlzdCBtX3Rhc2tMaXN0OworICAgIFdlYlRhc2tMaXN0IG1fdGFz
a0xpc3Q7CiAKICAgICBUZXN0RGVsZWdhdGUqIG1fZGVsZWdhdGU7CiAgICAgV2ViS2l0OjpXZWJW
aWV3KiBtX3dlYlZpZXc7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9UYXNrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rhc2suY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk
ODBiZWVmMzQ5OTM3ZDYzNTQwZGVmYTkwNjUzMWY2MTA4ZDc1YTUxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1Rhc2suY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUYXNrLmgiCi0KLSNpbmNsdWRlICJXZWJL
aXQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKLQotV2Vi
VGFzazo6V2ViVGFzayhUYXNrTGlzdCogbGlzdCkKLSAgICA6IG1fdGFza0xpc3QobGlzdCkKLXsK
LSAgICBtX3Rhc2tMaXN0LT5yZWdpc3RlclRhc2sodGhpcyk7Ci19Ci0KLVdlYlRhc2s6On5XZWJU
YXNrKCkKLXsKLSAgICBpZiAobV90YXNrTGlzdCkKLSAgICAgICAgbV90YXNrTGlzdC0+dW5yZWdp
c3RlclRhc2sodGhpcyk7Ci19Ci0KLXZvaWQgVGFza0xpc3Q6OnVucmVnaXN0ZXJUYXNrKFdlYlRh
c2sqIHRhc2spCi17Ci0gICAgc2l6ZV90IGluZGV4ID0gbV90YXNrcy5maW5kKHRhc2spOwotICAg
IGlmIChpbmRleCAhPSBub3RGb3VuZCkKLSAgICAgICAgbV90YXNrcy5yZW1vdmUoaW5kZXgpOwot
fQotCi12b2lkIFRhc2tMaXN0OjpyZXZva2VBbGwoKQotewotICAgIHdoaWxlICghbV90YXNrcy5p
c0VtcHR5KCkpCi0gICAgICAgIG1fdGFza3NbMF0tPmNhbmNlbCgpOwotfQotCi1zdGF0aWMgdm9p
ZCBpbnZva2VUYXNrKHZvaWQqIGNvbnRleHQpCi17Ci0gICAgV2ViVGFzayogdGFzayA9IHN0YXRp
Y19jYXN0PFdlYlRhc2sqPihjb250ZXh0KTsKLSAgICB0YXNrLT5ydW4oKTsKLSAgICBkZWxldGUg
dGFzazsKLX0KLQotdm9pZCBwb3N0VGFzayhXZWJUYXNrKiB0YXNrKQotewotICAgIFdlYktpdDo6
d2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmNhbGxPbk1haW5UaHJlYWQoaW52b2tlVGFzaywgc3Rh
dGljX2Nhc3Q8dm9pZCo+KHRhc2spKTsKLX0KLQotdm9pZCBwb3N0RGVsYXllZFRhc2soV2ViVGFz
ayogdGFzaywgaW50NjRfdCBtcykKLXsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UG9zdERlbGF5ZWRU
YXNrKHRhc2ssIG1zKTsKLX0KLQotCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UYXNrLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UYXNrLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDBiMzJjNDcyYjI3NTA0ZTVmYjYwOGQ2YmU0MDFmZGE2ODgwYjk3NDAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvVGFzay5oCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgVGFza19oCi0jZGVmaW5lIFRhc2tfaAotCi0jaW5jbHVkZSAid2Via2l0L3N1cHBv
cnQvd2Via2l0X3N1cHBvcnQuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgotCi1jbGFzcyBUYXNrTGlzdDsKLQotLy8gV2ViVGFzayByZXByZXNlbnRz
IGEgdGFzayB3aGljaCBjYW4gcnVuIGJ5IHBvc3RUYXNrKCkgb3IgcG9zdERlbGF5ZWRUYXNrKCku
Ci0vLyBpdCBpcyBuYW1lZCAiV2ViVGFzayIsIG5vdCAiVGFzayIsIHRvIGF2b2lkIGNvbmZsaXN0
IHdpdGggYmFzZS90YXNrLmguCi1jbGFzcyBXZWJUYXNrIDogcHVibGljIHdlYmtpdF9zdXBwb3J0
OjpUYXNrQWRhcHRvciB7Ci1wdWJsaWM6Ci0gICAgV2ViVGFzayhUYXNrTGlzdCopOwotICAgIC8v
IFRoZSBtYWluIGNvZGUgb2YgdGhpcyB0YXNrLgotICAgIC8vIEFuIGltcGxlbWVudGF0aW9uIG9m
IHJ1bigpIHNob3VsZCByZXR1cm4gaW1tZWRpYXRlbHkgaWYgY2FuY2VsKCkgd2FzIGNhbGxlZC4K
LSAgICB2aXJ0dWFsIHZvaWQgcnVuKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSA9
IDA7Ci0gICAgdmlydHVhbCB+V2ViVGFzaygpOwotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9p
ZCBSdW4oKSB7IHJ1bigpOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBUYXNrTGlzdCogbV90YXNrTGlz
dDsKLX07Ci0KLWNsYXNzIFRhc2tMaXN0IHsKLXB1YmxpYzoKLSAgICBUYXNrTGlzdCgpIHsgfQot
ICAgIH5UYXNrTGlzdCgpIHsgcmV2b2tlQWxsKCk7IH0KLSAgICB2b2lkIHJlZ2lzdGVyVGFzayhX
ZWJUYXNrKiB0YXNrKSB7IG1fdGFza3MuYXBwZW5kKHRhc2spOyB9Ci0gICAgdm9pZCB1bnJlZ2lz
dGVyVGFzayhXZWJUYXNrKik7Ci0gICAgdm9pZCByZXZva2VBbGwoKTsKLQotcHJpdmF0ZToKLSAg
ICBWZWN0b3I8V2ViVGFzayo+IG1fdGFza3M7Ci19OwotCi0vLyBBIHRhc2sgY29udGFpbmluZyBh
biBvYmplY3QgcG9pbnRlciBvZiBjbGFzcyBULiBJcyBpcyBzdXBwb3NlZCB0aGF0Ci0vLyBydW5p
ZlZhbGlkKCkgY2FsbHMgYSBtZW1iZXIgZnVuY3Rpb24gb2YgdGhlIG9iamVjdCBwb2ludGVyLgot
Ly8gQ2xhc3MgVCBtdXN0IGhhdmUgIlRhc2tMaXN0KiB0YXNrTGlzdCgpIi4KLXRlbXBsYXRlPGNs
YXNzIFQ+IGNsYXNzIE1ldGhvZFRhc2s6IHB1YmxpYyBXZWJUYXNrIHsKLXB1YmxpYzoKLSAgICBN
ZXRob2RUYXNrKFQqIG9iamVjdCk6IFdlYlRhc2sob2JqZWN0LT50YXNrTGlzdCgpKSwgbV9vYmpl
Y3Qob2JqZWN0KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcnVuKCkKLSAgICB7Ci0gICAgICAgIGlm
IChtX29iamVjdCkKLSAgICAgICAgICAgIHJ1bklmVmFsaWQoKTsKLSAgICB9Ci0gICAgdmlydHVh
bCB2b2lkIGNhbmNlbCgpCi0gICAgewotICAgICAgICBtX29iamVjdCA9IDA7Ci0gICAgICAgIG1f
dGFza0xpc3QtPnVucmVnaXN0ZXJUYXNrKHRoaXMpOwotICAgICAgICBtX3Rhc2tMaXN0ID0gMDsK
LSAgICB9Ci0gICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSA9IDA7Ci0KLXByb3RlY3RlZDoK
LSAgICBUKiBtX29iamVjdDsKLX07Ci0KLXZvaWQgcG9zdFRhc2soV2ViVGFzayopOwotdm9pZCBw
b3N0RGVsYXllZFRhc2soV2ViVGFzayosIGludDY0X3QgbXMpOwotCi0jZW5kaWYgLy8gVGFza19o
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0RGVsZWdhdGUuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3REZWxlZ2F0ZS5oCmluZGV4IDA0YWUxODIxMTg5MDcwMzk0MDExNjA5ZjE1ZWI5
NTA0MGZkMTQ3ZmEuLjljNmNhZWQyYjI5YzgyZWU5NWYxMDZmNTA5NTZhZjhmOGM4MjE2YjcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rl
c3REZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3REZWxlZ2F0ZS5oCkBAIC0zOSw2ICszOSwxMCBAQCBzdHJ1Y3QgV2ViQ29udGV4
dE1lbnVEYXRhOwogY2xhc3MgV2ViR2FtZXBhZHM7CiB9CiAKK25hbWVzcGFjZSBXZWJUZXN0UnVu
bmVyIHsKK2NsYXNzIFdlYlRhc2s7Cit9CisKIGNsYXNzIFRlc3REZWxlZ2F0ZSB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ29udGV4dE1lbnVEYXRhKCkgPSAwOwpAQCAtNDgsNiAr
NTIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYkNvbnRleHRNZW51RGF0YSog
bGFzdENvbnRleHRNZW51RGF0YSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0R2Ft
ZXBhZERhdGEoY29uc3QgV2ViS2l0OjpXZWJHYW1lcGFkcyYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcHJpbnRNZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKFdlYlRlc3RSdW5uZXI6OldlYlRhc2sqKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHBvc3REZWxheWVkVGFzayhXZWJUZXN0UnVubmVyOjpXZWJUYXNrKiwg
bG9uZyBsb25nIG1zKSA9IDA7CiB9OwogCiAjZW5kaWYgLy8gVGVzdERlbGVnYXRlX2gKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RS
dW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rl
c3RSdW5uZXIuaAppbmRleCBmNzA2OTQwMWE4ZjAwNDNjZjNmMjdiN2MxYTE4NGRmYTk2MGVlY2Vj
Li4zOWUxOWQ1NzM2NWQwM2M2Njg0MWY4N2YyNmFjZjQ1NDFlZTA3ZDdhIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1
bm5lci5oCkBAIC0zMyw3ICszMyw2IEBACiAjZGVmaW5lIFRlc3RSdW5uZXJfaAogCiAjaW5jbHVk
ZSAiQ3BwQm91bmRDbGFzcy5oIgotI2luY2x1ZGUgIlRhc2suaCIKICNpbmNsdWRlICJXZWJEZWxp
dmVyZWRJbnRlbnRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJUZXh0RGlyZWN0aW9uLmgiCiAjaW5j
bHVkZSAicGxhdGZvcm0vV2ViQXJyYXlCdWZmZXJWaWV3LmgiCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUYXNrLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRhc2suY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk3NTMxYzgwZGUxNDU0OWVjMGZhMWMwNTFjYzVkMDgxMGYyYmQ0ZjgKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9X
ZWJUYXNrLmNwcApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYlRhc2suaCIKKworI2luY2x1ZGUgIldlYktpdC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworCitXZWJUYXNrOjpXZWJUYXNrKFdlYlRh
c2tMaXN0KiBsaXN0KQorICAgIDogbV90YXNrTGlzdChsaXN0KQoreworICAgIG1fdGFza0xpc3Qt
PnJlZ2lzdGVyVGFzayh0aGlzKTsKK30KKworV2ViVGFzazo6fldlYlRhc2soKQoreworICAgIGlm
IChtX3Rhc2tMaXN0KQorICAgICAgICBtX3Rhc2tMaXN0LT51bnJlZ2lzdGVyVGFzayh0aGlzKTsK
K30KKworY2xhc3MgV2ViVGFza0xpc3Q6OlByaXZhdGUgOiBwdWJsaWMgVmVjdG9yPFdlYlRhc2sq
PiB7Cit9OworCitXZWJUYXNrTGlzdDo6V2ViVGFza0xpc3QoKQorICAgIDogbV9wcml2YXRlKG5l
dyBQcml2YXRlKQoreworfQorCitXZWJUYXNrTGlzdDo6fldlYlRhc2tMaXN0KCkKK3sKKyAgICBy
ZXZva2VBbGwoKTsKKyAgICBkZWxldGUgbV9wcml2YXRlOworfQorCit2b2lkIFdlYlRhc2tMaXN0
OjpyZWdpc3RlclRhc2soV2ViVGFzayogdGFzaykKK3sKKyAgICBtX3ByaXZhdGUtPmFwcGVuZCh0
YXNrKTsKK30KKwordm9pZCBXZWJUYXNrTGlzdDo6dW5yZWdpc3RlclRhc2soV2ViVGFzayogdGFz
aykKK3sKKyAgICBzaXplX3QgaW5kZXggPSBtX3ByaXZhdGUtPmZpbmQodGFzayk7CisgICAgaWYg
KGluZGV4ICE9IG5vdEZvdW5kKQorICAgICAgICBtX3ByaXZhdGUtPnJlbW92ZShpbmRleCk7Cit9
CisKK3ZvaWQgV2ViVGFza0xpc3Q6OnJldm9rZUFsbCgpCit7CisgICAgd2hpbGUgKCFtX3ByaXZh
dGUtPmlzRW1wdHkoKSkKKyAgICAgICAgKCptX3ByaXZhdGUpWzBdLT5jYW5jZWwoKTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvV2ViVGVzdEludGVyZmFjZXMuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwCmluZGV4IDk0OTBkMTgxMzZiYzQx
YWFhMTM2NTBlYTRjYWNjYzkyODJhM2MzNmYuLjI3ZjMwNjRhNTk2NDEzMmU2M2RjY2JmODc2NjFi
YmEzMGVmOGJiZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAKQEAgLTY0
LDYgKzY0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViQ29udGV4dE1lbnVEYXRhKiBsYXN0
Q29udGV4dE1lbnVEYXRhKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldEdhbWVwYWREYXRh
KGNvbnN0IFdlYkdhbWVwYWRzJik7CiAgICAgdmlydHVhbCB2b2lkIHByaW50TWVzc2FnZShjb25z
dCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNr
KFdlYlRhc2sqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdERlbGF5ZWRUYXNrKFdlYlRhc2sqLCBs
b25nIGxvbmcgbXMpOwogCiBwcml2YXRlOgogICAgIFRlc3RJbnRlcmZhY2VzIG1faW50ZXJmYWNl
czsKQEAgLTEyOSw2ICsxMzEsMTYgQEAgdm9pZCBXZWJUZXN0SW50ZXJmYWNlczo6SW50ZXJuYWw6
OnByaW50TWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgY29uc3QKICAgICBtX2Rl
bGVnYXRlLT5wcmludE1lc3NhZ2UobWVzc2FnZSk7CiB9CiAKK3ZvaWQgV2ViVGVzdEludGVyZmFj
ZXM6OkludGVybmFsOjpwb3N0VGFzayhXZWJUYXNrKiB0YXNrKQoreworICAgIG1fZGVsZWdhdGUt
PnBvc3RUYXNrKHRhc2spOworfQorCit2b2lkIFdlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbDo6
cG9zdERlbGF5ZWRUYXNrKFdlYlRhc2sqIHRhc2ssIGxvbmcgbG9uZyBtcykKK3sKKyAgICBtX2Rl
bGVnYXRlLT5wb3N0RGVsYXllZFRhc2sodGFzaywgbXMpOworfQorCiBXZWJUZXN0SW50ZXJmYWNl
czo6V2ViVGVzdEludGVyZmFjZXMoKQogewogICAgIG1faW50ZXJuYWwgPSBuZXcgSW50ZXJuYWw7
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAppbmRleCA0ODU0
ZjVlYTMxYmQwYTQzYmY4M2NiN2Q1ZDVhMGU2ZDg0ZWFkZTk0Li4yNjkyZTc0NTg2MGViMzM5YjM5
MGZhZjk1NDQ1Mjk4OWJmMDVlN2YyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0U2hlbGwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RTaGVsbC5jcHAKQEAgLTY4LDYgKzY4LDcgQEAKIAogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXI7CiB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwogCiAvLyBDb250ZW50IGFyZWEgc2l6ZSBmb3IgbmV3bHkgY3JlYXRlZCB3aW5kb3dzLgpAQCAt
MTU0LDcgKzE1NSw3IEBAIFRlc3RTaGVsbDo6VGVzdFNoZWxsKCkKIHZvaWQgVGVzdFNoZWxsOjpp
bml0aWFsaXplKCkKIHsKICAgICBtX3dlYlBlcm1pc3Npb25zID0gYWRvcHRQdHIobmV3IFdlYlBl
cm1pc3Npb25zKHRoaXMpKTsKLSAgICBtX3Rlc3RJbnRlcmZhY2VzID0gYWRvcHRQdHIobmV3IFdl
YlRlc3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2VzKCkpOworICAgIG1fdGVzdEludGVyZmFjZXMg
PSBhZG9wdFB0cihuZXcgV2ViVGVzdEludGVyZmFjZXMoKSk7CiAgICAgbV90ZXN0UnVubmVyID0g
YWRvcHRQdHIobmV3IERSVFRlc3RSdW5uZXIodGhpcykpOwogI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAgICAgbV9ub3RpZmljYXRpb25Q
cmVzZW50ZXIgPSBhZG9wdFB0cihuZXcgTm90aWZpY2F0aW9uUHJlc2VudGVyKHRoaXMpKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVu
dE1vY2suY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xp
ZW50TW9jay5jcHAKaW5kZXggZWQxM2ZmYTU4NjllMjU2NGJiZTIzMTc5ZmFkZmVkMWQyOTQ0Yjg2
ZC4uMzg3OGZmMTY3N2E5YzZmYmUwOGE0ZjFiYTA0ZTk1OTZmMzQ4N2U2MyAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9j
ay5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnRNb2Nr
LmgiCiAKICNpbmNsdWRlICJNb2NrQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlICJUYXNrLmgiCiAj
aW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIKICNpbmNsdWRlICJXZWJNZWRpYVN0cmVhbVJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiV2ViVXNlck1lZGlhUmVxdWVzdC5oIgpAQCAtNDQsMTEgKzQ1LDEyIEBA
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyOwogCi1jbGFzcyBVc2VyTWVkaWFSZXF1ZXN0
VGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+IHsKK2NsYXNz
IFVzZXJNZWRpYVJlcXVlc3RUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8V2ViVXNlck1lZGlh
Q2xpZW50TW9jaz4gewogcHVibGljOgogICAgIFVzZXJNZWRpYVJlcXVlc3RUYXNrKFdlYlVzZXJN
ZWRpYUNsaWVudE1vY2sqIG9iamVjdCwgY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yIHJlc3VsdCkKLSAgICAgICAgOiBNZXRo
b2RUYXNrPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+KG9iamVjdCkKKyAgICAgICAgOiBXZWJNZXRo
b2RUYXNrPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+KG9iamVjdCkKICAgICAgICAgLCBtX3JlcXVl
c3QocmVxdWVzdCkKICAgICAgICAgLCBtX3Jlc3VsdChyZXN1bHQpCiAgICAgewpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5o
CmluZGV4IGY0Mzg3NTk3NjY2MWYyYjdlMDc2YjI2MWY1ZjJlMGFmYjM2ZTI5ODguLmVmNGNiNTFk
MWFmY2ZkZjNmMDUyMjVkNzgwYjYyNWEwOWEyNDQ1NGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgKQEAgLTMzLDcg
KzMzLDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKLSNpbmNsdWRlICJUZXN0UnVu
bmVyL3NyYy9UYXNrLmgiCisjaW5jbHVkZSAiV2ViVGFzay5oIgogI2luY2x1ZGUgIldlYlVzZXJN
ZWRpYUNsaWVudC5oIgogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3Rlc3RfbWVkaWFfc3RyZWFt
X2NsaWVudC5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21tb24uaD4KQEAgLTUwLDEyICs1MCwx
MiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoY29u
c3QgV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0Jik7CiAKICAgICAvLyBUYXNrIHJlbGF0ZWQg
bWV0aG9kcwotICAgIFRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9
CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1f
dGFza0xpc3Q7IH0KIAogcHJpdmF0ZToKICAgICBXZWJVc2VyTWVkaWFDbGllbnRNb2NrKCkgeyB9
CiAKLSAgICBUYXNrTGlzdCBtX3Rhc2tMaXN0OworICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tM
aXN0IG1fdGFza0xpc3Q7CiB9OwogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCA4NThj
MDYyNmUzOGJlOTEyMWMwN2I4MmQzNjJlMDgyNzE5MjUyOThhLi42ZjQ3ZjA4NzEyNWNiNjBjNWEw
M2M4Zjk0Nzg4MDc5MWRjOGNlMDVlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiTW9ja0dyYW1t
YXJDaGVjay5oIgogI2luY2x1ZGUgIk1vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJNb2NrV2ViU3BlZWNoUmVjb2duaXplci5oIgorI2luY2x1ZGUgIlRhc2suaCIKICNp
bmNsdWRlICJUZXN0TmF2aWdhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJUZXN0U2hlbGwu
aCIKICNpbmNsdWRlICJUZXN0V2ViUGx1Z2luLmgiCkBAIC04OCw2ICs4OSw3IEBACiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVz
cGFjZSBXZWJUZXN0UnVubmVyOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogc3RhdGljIGNvbnN0
IGludCBzY3JlZW5XaWR0aCA9IDE5MjA7CkBAIC0xNDgzLDYgKzE0ODUsMTYgQEAgdm9pZCBXZWJW
aWV3SG9zdDo6cHJpbnRNZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSBjb25zdAog
ICAgIHByaW50ZigiJXMiLCBtZXNzYWdlLmNfc3RyKCkpOwogfQogCit2b2lkIFdlYlZpZXdIb3N0
Ojpwb3N0VGFzayhXZWJUYXNrKiB0YXNrKQoreworICAgIDo6cG9zdFRhc2sodGFzayk7Cit9CisK
K3ZvaWQgV2ViVmlld0hvc3Q6OnBvc3REZWxheWVkVGFzayhXZWJUYXNrKiB0YXNrLCBsb25nIGxv
bmcgbXMpCit7CisgICAgOjpwb3N0RGVsYXllZFRhc2sodGFzaywgbXMpOworfQorCiAvLyBQdWJs
aWMgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKIFdlYlZpZXdIb3N0OjpXZWJWaWV3SG9zdChUZXN0U2hlbGwqIHNo
ZWxsKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXgg
NDEwZDE5ZGY2MDk2NGJlY2MzODcyM2RmNWQ0MDUzYTkyYzg5NjE4Ni4uNGQ2YzUyZWFlMGMzZDNl
MmQ3OTc5YTdlMjdlZDhhNTcxMjI1OTQ1MyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5oCkBAIC0zMywxMyArMzMsMTMgQEAKIAogI2luY2x1ZGUgIk1vY2tT
cGVsbENoZWNrLmgiCiAjaW5jbHVkZSAiVGVzdE5hdmlnYXRpb25Db250cm9sbGVyLmgiCi0jaW5j
bHVkZSAiVGVzdFJ1bm5lci9zcmMvVGFzay5oIgogI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJXZWJDdXJzb3JJbmZvLmgiCiAjaW5jbHVkZSAiV2Vi
RnJhbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJJbnRlbnRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
V2ViUHJlcmVuZGVyZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJTcGVsbENoZWNrQ2xpZW50Lmgi
CisjaW5jbHVkZSAiV2ViVGFzay5oIgogI2luY2x1ZGUgIldlYlRlc3REZWxlZ2F0ZS5oIgogI2lu
Y2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMTM2
LDYgKzEzNiw4IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViVmlld0Ns
aWVudCwgcHVibGljIFdlYktpdDo6V2ViRnJhbWVDbGllbnQsCiAgICAgdmlydHVhbCB2b2lkIGZp
bGxTcGVsbGluZ1N1Z2dlc3Rpb25MaXN0KGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiB3b3JkLCBX
ZWJLaXQ6OldlYlZlY3RvcjxXZWJLaXQ6OldlYlN0cmluZz4qIHN1Z2dlc3Rpb25zKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0R2FtZXBhZERhdGEoY29uc3QgV2ViS2l0OjpXZWJHYW1l
cGFkcyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwcmludE1lc3NhZ2UoY29uc3Qgc3Rk
OjpzdHJpbmcmIG1lc3NhZ2UpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwb3N0
VGFzayhXZWJUZXN0UnVubmVyOjpXZWJUYXNrKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHBvc3REZWxheWVkVGFzayhXZWJUZXN0UnVubmVyOjpXZWJUYXNrKiwgbG9uZyBsb25nIG1zKSBP
VkVSUklERTsKIAogICAgIC8vIE5hdmlnYXRpb25Ib3N0CiAgICAgdmlydHVhbCBib29sIG5hdmln
YXRlKGNvbnN0IFRlc3ROYXZpZ2F0aW9uRW50cnkmLCBib29sIHJlbG9hZCk7CkBAIC0yODcsMTkg
KzI4OSwxOSBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGll
bnQsIHB1YmxpYyBXZWJLaXQ6OldlYkZyYW1lQ2xpZW50LAogICAgIC8vIEdlb2xvY2F0aW9uIGNs
aWVudCBtb2NrcyBmb3IgRFJUVGVzdFJ1bm5lcgogICAgIFdlYktpdDo6V2ViR2VvbG9jYXRpb25D
bGllbnRNb2NrKiBnZW9sb2NhdGlvbkNsaWVudE1vY2soKTsKIAotICAgIC8vIFBlbmRpbmcgdGFz
ayBsaXN0LCBOb3RlIHRhaHQgdGhlIG1ldGhvZCBpcyByZWZlcnJlZCBmcm9tIE1ldGhvZFRhc2sg
Y2xhc3MuCi0gICAgVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0K
KyAgICAvLyBQZW5kaW5nIHRhc2sgbGlzdCwgTm90ZSB0YWh0IHRoZSBtZXRob2QgaXMgcmVmZXJy
ZWQgZnJvbSBXZWJNZXRob2RUYXNrIGNsYXNzLgorICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tM
aXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CiAKICAgICAvLyBUaGUgY3Vy
cmVudCB3ZWIgaW50ZW50cyByZXF1ZXN0LgogICAgIFdlYktpdDo6V2ViSW50ZW50UmVxdWVzdCog
Y3VycmVudEludGVudFJlcXVlc3QoKSB7IHJldHVybiAmbV9jdXJyZW50UmVxdWVzdDsgfQogCiBw
cml2YXRlOgogCi0gICAgY2xhc3MgSG9zdE1ldGhvZFRhc2sgOiBwdWJsaWMgTWV0aG9kVGFzazxX
ZWJWaWV3SG9zdD4geworICAgIGNsYXNzIEhvc3RNZXRob2RUYXNrIDogcHVibGljIFdlYlRlc3RS
dW5uZXI6OldlYk1ldGhvZFRhc2s8V2ViVmlld0hvc3Q+IHsKICAgICBwdWJsaWM6CiAgICAgICAg
IHR5cGVkZWYgdm9pZCAoV2ViVmlld0hvc3Q6OipDYWxsYmFja01ldGhvZFR5cGUpKCk7CiAgICAg
ICAgIEhvc3RNZXRob2RUYXNrKFdlYlZpZXdIb3N0KiBvYmplY3QsIENhbGxiYWNrTWV0aG9kVHlw
ZSBjYWxsYmFjaykKLSAgICAgICAgICAgIDogTWV0aG9kVGFzazxXZWJWaWV3SG9zdD4ob2JqZWN0
KQorICAgICAgICAgICAgOiBXZWJUZXN0UnVubmVyOjpXZWJNZXRob2RUYXNrPFdlYlZpZXdIb3N0
PihvYmplY3QpCiAgICAgICAgICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgICAgIHsg
fQogCkBAIC00NDIsNyArNDQ0LDcgQEAgcHJpdmF0ZToKICAgICBXZWJLaXQ6OldlYlN0cmluZyBt
X2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tTdHJpbmc7CiAgICAgV2ViS2l0OjpXZWJUZXh0Q2hlY2tp
bmdDb21wbGV0aW9uKiBtX2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tpbmdDb21wbGV0aW9uOwogCi0g
ICAgVGFza0xpc3QgbV90YXNrTGlzdDsKKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCBt
X3Rhc2tMaXN0OwogICAgIFZlY3RvcjxXZWJLaXQ6OldlYldpZGdldCo+IG1fcG9wdXBtZW51czsK
IAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169961</attachid>
            <date>2012-10-22 13:02:29 -0700</date>
            <delta_ts>2012-10-22 13:24:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99964-20121022220107.patch</filename>
            <type>text/plain</type>
            <size>59810</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMTEyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGFmOWE2MDQxZTY3ZjYxMWMyYzcyMjRmYTgzMGRmNWZh
NWViYTQyMC4uMTg5NTE4NjAxODliODgzYzI4NjcyMTI4NDBkMjBlZDg4MTRmOTc1MiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEx
MSBAQAorMjAxMi0xMC0yMiAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIGludHJvZHVjZSBXZWJUYXNrIHRvIHRoZSBUZXN0UnVubmVy
IGxpYnJhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk5OTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBJJ20g
YWxzbyByZW1vdmluZyB0aGUgZGVwZW5kZW5jeSBvbiB3ZWJraXRfc3VwcG9ydCwgYW5kIGluc3Rl
YWQgZ28KKyAgICAgICAgdGhyb3VnaCB0aGUgV2ViVGVzdERlbGVnYXRlIGludGVyZmFjZS4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5jcHA6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5oOgorICAgICAgICAoRFJU
RGV2VG9vbHNBZ2VudDo6dGFza0xpc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0RSVERldlRvb2xzQ2xpZW50LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9EUlREZXZUb29sc0NsaWVudC5oOgorICAgICAgICAoRFJURGV2VG9vbHNDbGllbnQ6OnRh
c2tMaXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVy
LmNwcDoKKyAgICAgICAgKEludm9rZUNhbGxiYWNrVGFzazo6SW52b2tlQ2FsbGJhY2tUYXNrKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmg6CisgICAg
ICAgIChEUlRUZXN0UnVubmVyOjp0YXNrTGlzdCk6CisgICAgICAgIChEUlRUZXN0UnVubmVyOjpX
b3JrUXVldWU6OnRhc2tMaXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9N
b2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcDoKKyAgICAgICAgKFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvblJlcXVlc3RTdWNjZWRlZFRhc2s6OlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVl
c3RTdWNjZWRlZFRhc2spOgorICAgICAgICAoUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdEZh
aWxlZFRhc2s6OlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RGYWlsZWRUYXNrKToKKyAgICAg
ICAgKFJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2s6OlJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRl
ZFRhc2spOgorICAgICAgICAoUlRDVm9pZFJlcXVlc3RUYXNrOjpSVENWb2lkUmVxdWVzdFRhc2sp
OgorICAgICAgICAoU3RyaW5nRGF0YVRhc2s6OlN0cmluZ0RhdGFUYXNrKToKKyAgICAgICAgKENo
YXJQdHJEYXRhVGFzazo6Q2hhclB0ckRhdGFUYXNrKToKKyAgICAgICAgKERhdGFDaGFubmVsUmVh
ZHlTdGF0ZVRhc2s6OkRhdGFDaGFubmVsUmVhZHlTdGF0ZVRhc2spOgorICAgICAgICAoUlRDUGVl
ckNvbm5lY3Rpb25SZWFkeVN0YXRlVGFzazo6UlRDUGVlckNvbm5lY3Rpb25SZWFkeVN0YXRlVGFz
ayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlci5oOgorICAgICAgICAoTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
cik6CisgICAgICAgIChNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjp0YXNrTGlzdCk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOjpTcGVl
Y2hUYXNrOjpTcGVlY2hUYXNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9N
b2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmg6CisgICAgICAgIChNb2NrV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyOjp0YXNrTGlzdCk6CisgICAgICAgIChNb2NrV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNo
UmVjb2duaXplci5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dl
YlNwZWVjaFJlY29nbml6ZXIuaDoKKyAgICAgICAgKE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyOjp0
YXNrTGlzdCk6CisgICAgICAgIChNb2NrV2ViU3BlZWNoUmVjb2duaXplcik6CisgICAgICAgIChN
b2NrV2ViU3BlZWNoUmVjb2duaXplcjo6U3RlcFRhc2s6OlN0ZXBUYXNrKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UYXNrLmNwcDogQ29waWVkIGZyb20gVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGFzay5jcHAuCisgICAgICAgIChXZWJU
ZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Omludm9rZVRhc2spOgorICAgICAg
ICAoVGFza1dyYXBwZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGFza1dyYXBwZXI6OlRh
c2tXcmFwcGVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRhc2tXcmFwcGVyOjp+VGFza1dy
YXBwZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGFza1dyYXBwZXI6OlJ1bik6CisgICAg
ICAgIChwb3N0VGFzayk6CisgICAgICAgIChwb3N0RGVsYXllZFRhc2spOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rhc2suaDogQ29waWVkIGZyb20gVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oLgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9wdWJsaWMvV2ViVGFzay5oOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvVGFzay5oLgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6Cisg
ICAgICAgIChXZWJUYXNrKToKKyAgICAgICAgKFdlYlRhc2tMaXN0KToKKyAgICAgICAgKFdlYk1l
dGhvZFRhc2spOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazo6V2ViTWV0
aG9kVGFzayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJNZXRob2RUYXNrOjp+V2ViTWV0
aG9kVGFzayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJNZXRob2RUYXNrOjpydW4pOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazo6Y2FuY2VsKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdh
dGUuaDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdERlbGVnYXRl
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVu
dFNlbmRlci5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OkV2ZW50U2VuZGVyOjpzY2hlZHVsZUFzeW5jaHJvbm91c0NsaWNrKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OktleURvd25UYXNrOjpLZXlEb3duVGFzayk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6c2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRl
ci5oOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6OnRhc2tMaXN0KToKKyAg
ICAgICAgKEV2ZW50U2VuZGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9UZXN0RGVsZWdhdGUuaDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgor
ICAgICAgICAoVGVzdERlbGVnYXRlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGFzay5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UYXNrLmNwcC4KKyAgICAgICAg
KFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGFzazo6V2ViVGFz
ayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUYXNrOjp+V2ViVGFzayk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdDo6V2ViVGFza0xpc3QpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6V2ViVGFza0xpc3Q6On5XZWJUYXNrTGlzdCk6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpXZWJUYXNrTGlzdDo6cmVnaXN0ZXJUYXNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OldlYlRhc2tMaXN0Ojp1bnJlZ2lzdGVyVGFzayk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpXZWJUYXNrTGlzdDo6cmV2b2tlQWxsKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHA6CisgICAgICAgIChXZWJU
ZXN0SW50ZXJmYWNlczo6SW50ZXJuYWwpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVz
dEludGVyZmFjZXM6OkludGVybmFsOjpwb3N0VGFzayk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbDo6
cG9zdERlbGF5ZWRUYXNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGwuY3BwOgorICAgICAgICAoVGVzdFNoZWxsOjppbml0aWFsaXplKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcDoKKyAgICAg
ICAgKFVzZXJNZWRpYVJlcXVlc3RUYXNrOjpVc2VyTWVkaWFSZXF1ZXN0VGFzayk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oOgorICAg
ICAgICAoV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6dGFza0xpc3QpOgorICAgICAgICAoV2ViVXNl
ck1lZGlhQ2xpZW50TW9jayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnBvc3RUYXNrKToKKyAgICAgICAg
KFdlYlZpZXdIb3N0Ojpwb3N0RGVsYXllZFRhc2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6CisgICAgICAgIChXZWJWaWV3SG9zdCk6CisgICAgICAg
IChXZWJWaWV3SG9zdDo6dGFza0xpc3QpOgorICAgICAgICAoV2ViVmlld0hvc3Q6Okhvc3RNZXRo
b2RUYXNrOjpIb3N0TWV0aG9kVGFzayk6CisKIDIwMTItMTAtMjIgIE9qYW4gVmFmYWkgIDxvamFu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVcGRhdGUgZmxha2luZXNzIGRhc2hib2FyZCB0byBt
YXRjaCB0aGUgc3RhdGUgb2YgdGhlIGJ1aWxkZXJzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLmd5cGkKaW5kZXggN2U3ZDY5YmFkYmY1ZDY4NDRmOGI4ZTM1ZmMxOThhMmFmMmJj
MzQ0ZS4uMjY3MjJlY2U3Mjk2ZWVlZjhiMWM4ZmYzODBmNmM4NGE2ZTQ4MGVlMCAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBAIC0zMCw2ICszMCw4IEBACiAgICAg
ICAgICAgICAnY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuaCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vTm90aWZpY2F0aW9uUHJlc2VudGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9t
aXVtL05vdGlmaWNhdGlvblByZXNlbnRlci5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rh
c2suaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGFzay5jcHAnLAogICAgICAgICAgICAgJ2No
cm9taXVtL1Rlc3RFdmVudFByaW50ZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdEV2
ZW50UHJpbnRlci5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3ROYXZpZ2F0aW9uQ29u
dHJvbGxlci5jcHAnLApAQCAtNjcsNiArNjksNyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rl
c3RSdW5uZXIvcHVibGljL1dlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oJywKICAgICAg
ICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJFdmVudFNlbmRlci5oJywKKyAg
ICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUYXNrLmgnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgnLAog
ICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9B
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlckNocm9taXVtLmgnLApAQCAtODAsOCArODMsNiBAQAogICAg
ICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmgnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0dhbWVwYWRDb250cm9sbGVyLmNwcCcsCiAg
ICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvR2FtZXBhZENvbnRyb2xsZXIuaCcs
Ci0gICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGFzay5jcHAnLAotICAgICAg
ICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rhc2suaCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3BwJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXh0SW5wdXRDb250cm9sbGVyLmNwcCcsCkBAIC05MCw2
ICs5MSw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5l
ci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJBY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYkV2ZW50U2VuZGVyLmNwcCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvV2ViVGFzay5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dl
YlRlc3RJbnRlcmZhY2VzLmNwcCcsCiAgICAgICAgIF0sCiAgICAgICAgICd0ZXN0X3BsdWdpbl9m
aWxlcyc6IFsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERl
dlRvb2xzQWdlbnQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9v
bHNBZ2VudC5jcHAKaW5kZXggYjY2NTlhNDdmYzgwM2FlYWFjYjcxMmUzZmJlMzEzOTk2OTY0Yzdk
My4uZWIyMWIyYzg1MWY1MmE0NTdhOGJjMDA3MDJkZDJjNzQzMmJiYzY4YyAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5jcHAKQEAgLTMz
LDEyICszMywxNCBAQAogCiAjaW5jbHVkZSAiRFJURGV2VG9vbHNDbGllbnQuaCIKIAorI2luY2x1
ZGUgIlRhc2suaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDU3RyaW5nLmgiCiAjaW5jbHVkZSAi
V2ViRGV2VG9vbHNBZ2VudC5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlICJ3ZWJr
aXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owor
dXNpbmcgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXI7CiAKIERSVERldlRvb2xzQWdlbnQ6OkRSVERl
dlRvb2xzQWdlbnQoKQogICAgIDogbV9kcnREZXZUb29sc0NsaWVudCgwKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5oIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5oCmluZGV4IGQwNjZiN2E3
MThmZDI4OGViMzllMjY1YmNjZjE5NjU2ZmQ4NjhlOTcuLmMxM2FlZjdmYTAwODkyOTk3NjNkZmNj
N2M3OWFlMGM2Mjc2MWI4ZmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0RSVERldlRvb2xzQWdlbnQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9EUlREZXZUb29sc0FnZW50LmgKQEAgLTMxLDggKzMxLDggQEAKICNpZm5kZWYgRFJURGV2VG9v
bHNBZ2VudF9oCiAjZGVmaW5lIERSVERldlRvb2xzQWdlbnRfaAogCi0jaW5jbHVkZSAiVGVzdFJ1
bm5lci9zcmMvVGFzay5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRDbGllbnQuaCIKKyNp
bmNsdWRlICJXZWJUYXNrLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTY5
LDIzICs2OSwyMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRhY2goKTsKIAogICAgIGJvb2wgZXZh
bHVhdGVJbldlYkluc3BlY3Rvcihsb25nIGNhbGxJRCwgY29uc3Qgc3RkOjpzdHJpbmcmIHNjcmlw
dCk7Ci0gICAgVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAg
ICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNr
TGlzdDsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgY2FsbChjb25zdCBXZWJLaXQ6OldlYlN0cmlu
ZyYgYXJncyk7CiAgICAgV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50KiB3ZWJEZXZUb29sc0FnZW50
KCk7CiAKLSAgICBjbGFzcyBBc3luY0NhbGxUYXNrOiBwdWJsaWMgTWV0aG9kVGFzazxEUlREZXZU
b29sc0FnZW50PiB7CisgICAgY2xhc3MgQXN5bmNDYWxsVGFzazogcHVibGljIFdlYlRlc3RSdW5u
ZXI6OldlYk1ldGhvZFRhc2s8RFJURGV2VG9vbHNBZ2VudD4gewogICAgIHB1YmxpYzoKICAgICAg
ICAgQXN5bmNDYWxsVGFzayhEUlREZXZUb29sc0FnZW50KiBvYmplY3QsIGNvbnN0IFdlYktpdDo6
V2ViU3RyaW5nJiBhcmdzKQotICAgICAgICAgICAgOiBNZXRob2RUYXNrPERSVERldlRvb2xzQWdl
bnQ+KG9iamVjdCksIG1fYXJncyhhcmdzKSB7IH0KKyAgICAgICAgICAgIDogV2ViVGVzdFJ1bm5l
cjo6V2ViTWV0aG9kVGFzazxEUlREZXZUb29sc0FnZW50PihvYmplY3QpLCBtX2FyZ3MoYXJncykg
eyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgeyBtX29iamVjdC0+Y2FsbCht
X2FyZ3MpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBXZWJLaXQ6OldlYlN0cmluZyBtX2Fy
Z3M7CiAgICAgfTsKIAotICAgIFRhc2tMaXN0IG1fdGFza0xpc3Q7CisgICAgV2ViVGVzdFJ1bm5l
cjo6V2ViVGFza0xpc3QgbV90YXNrTGlzdDsKICAgICBEUlREZXZUb29sc0NsaWVudCogbV9kcnRE
ZXZUb29sc0NsaWVudDsKICAgICBpbnQgbV9yb3V0aW5nSUQ7CiAgICAgV2ViS2l0OjpXZWJWaWV3
KiBtX3dlYlZpZXc7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9E
UlREZXZUb29sc0NsaWVudC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRE
ZXZUb29sc0NsaWVudC5jcHAKaW5kZXggYTdmYzRkMDQ4NmYyOGQzMmIxZWVmZDQ0YTBmZjc0NmNh
NGVhZjk1NS4uMDhkZjFkNTJhYTE0NDdlYjdhNTMyMTcwYzA3ZWI5ZDBkNjJmNWY3NSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmNw
cApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRSVERldlRvb2xzQ2xpZW50LmgiCiAKICNp
bmNsdWRlICJEUlREZXZUb29sc0FnZW50LmgiCisjaW5jbHVkZSAiVGFzay5oIgogI2luY2x1ZGUg
IldlYkRldlRvb2xzQWdlbnQuaCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0Zyb250ZW5kLmgiCiAj
aW5jbHVkZSAiV2ViRnJhbWUuaCIKQEAgLTQxLDYgKzQyLDcgQEAKICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdl
YlRlc3RSdW5uZXI7CiAKIERSVERldlRvb2xzQ2xpZW50OjpEUlREZXZUb29sc0NsaWVudChEUlRE
ZXZUb29sc0FnZW50KiBhZ2VudCwgV2ViVmlldyogd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3
ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2
VG9vbHNDbGllbnQuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xz
Q2xpZW50LmgKaW5kZXggZWFkMzk2Mzc5YjRiZTdlMjE4OTI3NTJhYWEzOGIxOTI1OWQ5ZjY3MS4u
NWY0ODZkZGQwZDU5Y2EzYmZhOWY3ODE1Njg5ODM0MDNjNTI3YmI1OCAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuaAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NsaWVudC5oCkBAIC0zMSw4ICsz
MSw4IEBACiAjaWZuZGVmIERSVERldlRvb2xzQ2xpZW50X2gKICNkZWZpbmUgRFJURGV2VG9vbHND
bGllbnRfaAogCi0jaW5jbHVkZSAiVGVzdFJ1bm5lci9zcmMvVGFzay5oIgogI2luY2x1ZGUgIldl
YkRldlRvb2xzRnJvbnRlbmRDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJUYXNrLmgiCiAjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNjQsMjEgKzY0LDIxIEBAIHB1YmxpYzoKICAgICB2
b2lkIGFzeW5jQ2FsbChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgYXJncyk7CiAKICAgICB2b2lk
IGFsbE1lc3NhZ2VzUHJvY2Vzc2VkKCk7Ci0gICAgVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1
cm4gJm1fdGFza0xpc3Q7IH0KKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCogdGFza0xp
c3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQogCiAgcHJpdmF0ZToKICAgICB2b2lkIGNhbGwo
Y29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGFyZ3MpOwotICAgIGNsYXNzIEFzeW5jQ2FsbFRhc2s6
IHB1YmxpYyBNZXRob2RUYXNrPERSVERldlRvb2xzQ2xpZW50PiB7CisgICAgY2xhc3MgQXN5bmND
YWxsVGFzazogcHVibGljIFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8RFJURGV2VG9vbHND
bGllbnQ+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIEFzeW5jQ2FsbFRhc2soRFJURGV2VG9vbHND
bGllbnQqIG9iamVjdCwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGFyZ3MpCi0gICAgICAgICAg
ICA6IE1ldGhvZFRhc2s8RFJURGV2VG9vbHNDbGllbnQ+KG9iamVjdCksIG1fYXJncyhhcmdzKSB7
IH0KKyAgICAgICAgICAgIDogV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazxEUlREZXZUb29s
c0NsaWVudD4ob2JqZWN0KSwgbV9hcmdzKGFyZ3MpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQg
cnVuSWZWYWxpZCgpIHsgbV9vYmplY3QtPmNhbGwobV9hcmdzKTsgfQogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgV2ViS2l0OjpXZWJTdHJpbmcgbV9hcmdzOwogICAgIH07CiAKLSAgICBUYXNrTGlz
dCBtX3Rhc2tMaXN0OworICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0IG1fdGFza0xpc3Q7
CiAgICAgV2ViS2l0OjpXZWJWaWV3KiBtX3dlYlZpZXc7CiAgICAgRFJURGV2VG9vbHNBZ2VudCog
bV9kcnREZXZUb29sc0FnZW50OwogICAgIFdURjo6T3duUHRyPFdlYktpdDo6V2ViRGV2VG9vbHNG
cm9udGVuZD4gbV93ZWJEZXZUb29sc0Zyb250ZW5kOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcAppbmRleCAwODI1OTdhMTE3YjkyZDU5NzI4MDdl
OWYwZTNhMzcyMzRlZDljMmEzLi5iMzFkN2RhNzBmZjU4YmU0MTY0YThkYjBmYjI0OWQxYmEyMGZl
OTIwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVu
bmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVy
LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkRSVERldlRvb2xzQWdlbnQuaCIKICNp
bmNsdWRlICJNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTW9ja1dl
YlNwZWVjaFJlY29nbml6ZXIuaCIKKyNpbmNsdWRlICJUYXNrLmgiCiAjaW5jbHVkZSAiVGVzdFNo
ZWxsLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIldl
YkJpbmRpbmdzLmgiCkBAIC04Myw2ICs4NCw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVy
OwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogY2xhc3MgRW1wdHlXZWJEZWxpdmVyZWRJbnRlbnRD
bGllbnQgOiBwdWJsaWMgV2ViS2l0OjpXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQgewpAQCAtMjEx
NCwxMCArMjExNiwxMCBAQCB2b2lkIERSVFRlc3RSdW5uZXI6OnNldFRleHRTdWJwaXhlbFBvc2l0
aW9uaW5nKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLAogICAgIHJlc3VsdC0+c2V0
TnVsbCgpOwogfQogCi1jbGFzcyBJbnZva2VDYWxsYmFja1Rhc2sgOiBwdWJsaWMgTWV0aG9kVGFz
azxEUlRUZXN0UnVubmVyPiB7CitjbGFzcyBJbnZva2VDYWxsYmFja1Rhc2sgOiBwdWJsaWMgV2Vi
TWV0aG9kVGFzazxEUlRUZXN0UnVubmVyPiB7CiBwdWJsaWM6CiAgICAgSW52b2tlQ2FsbGJhY2tU
YXNrKERSVFRlc3RSdW5uZXIqIG9iamVjdCwgUGFzc093bkFycmF5UHRyPENwcFZhcmlhbnQ+IGNh
bGxiYWNrQXJndW1lbnRzLCB1aW50MzJfdCBudW1iZXJPZkFyZ3VtZW50cykKLSAgICAgICAgOiBN
ZXRob2RUYXNrPERSVFRlc3RSdW5uZXI+KG9iamVjdCkKKyAgICAgICAgOiBXZWJNZXRob2RUYXNr
PERSVFRlc3RSdW5uZXI+KG9iamVjdCkKICAgICAgICAgLCBtX2NhbGxiYWNrQXJndW1lbnRzKGNh
bGxiYWNrQXJndW1lbnRzKQogICAgICAgICAsIG1fbnVtYmVyT2ZBcmd1bWVudHMobnVtYmVyT2ZB
cmd1bWVudHMpCiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vRFJUVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVz
dFJ1bm5lci5oCmluZGV4IDYwYTAzOGEyN2RkODk0Y2ExZDQ0NzEwOWJlYmFkNzhhZTJmZTA2MTku
LmVjNDc3OGZkNWM0NmY4ZjMyODc1OGExNTdhMzI4MjE0NTRiNWIyMjEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmgKQEAgLTQzLDYgKzQzLDcgQEAK
ICNkZWZpbmUgRFJUVGVzdFJ1bm5lcl9oCiAKICNpbmNsdWRlICJUZXN0UnVubmVyL3NyYy9UZXN0
UnVubmVyLmgiCisjaW5jbHVkZSAiV2ViVGFzay5oIgogCiBjbGFzcyBUZXN0U2hlbGw7CiAKQEAg
LTUxMSw3ICs1MTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBydW4oVGVzdFNo
ZWxsKikgPSAwOwogICAgIH07CiAKLSAgICBUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAm
bV90YXNrTGlzdDsgfQorICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0KiB0YXNrTGlzdCgp
IHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CiAKICAgICBib29sIHNob3VsZFN0YXlPblBhZ2VBZnRl
ckhhbmRsaW5nQmVmb3JlVW5sb2FkKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRTdGF5T25QYWdl
QWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZDsgfQogCkBAIC01MzQsMTcgKzUzNSwxNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIHZvaWQgc2V0RnJvemVuKGJvb2wgZnJvemVuKSB7IG1fZnJvemVuID0g
ZnJvemVuOyB9CiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIG1fcXVldWUuaXNFbXB0
eSgpOyB9Ci0gICAgICAgIFRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0
OyB9CisgICAgICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0
dXJuICZtX3Rhc2tMaXN0OyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHByb2Nlc3NX
b3JrKCk7Ci0gICAgICAgIGNsYXNzIFdvcmtRdWV1ZVRhc2s6IHB1YmxpYyBNZXRob2RUYXNrPFdv
cmtRdWV1ZT4geworICAgICAgICBjbGFzcyBXb3JrUXVldWVUYXNrOiBwdWJsaWMgV2ViVGVzdFJ1
bm5lcjo6V2ViTWV0aG9kVGFzazxXb3JrUXVldWU+IHsKICAgICAgICAgcHVibGljOgotICAgICAg
ICAgICAgV29ya1F1ZXVlVGFzayhXb3JrUXVldWUqIG9iamVjdCk6IE1ldGhvZFRhc2s8V29ya1F1
ZXVlPihvYmplY3QpIHsgfQorICAgICAgICAgICAgV29ya1F1ZXVlVGFzayhXb3JrUXVldWUqIG9i
amVjdCk6IFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8V29ya1F1ZXVlPihvYmplY3QpIHsg
fQogICAgICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSB7IG1fb2JqZWN0LT5wcm9j
ZXNzV29yaygpOyB9CiAgICAgICAgIH07CiAKLSAgICAgICAgVGFza0xpc3QgbV90YXNrTGlzdDsK
KyAgICAgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QgbV90YXNrTGlzdDsKICAgICAgICAg
RGVxdWU8V29ya0l0ZW0qPiBtX3F1ZXVlOwogICAgICAgICBib29sIG1fZnJvemVuOwogICAgICAg
ICBEUlRUZXN0UnVubmVyKiBtX2NvbnRyb2xsZXI7CkBAIC01NTgsOSArNTU5LDkgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgbG9nRXJyb3JUb0NvbnNvbGUoY29uc3Qgc3RkOjpzdHJpbmcmKTsKICAg
ICB2b2lkIGNvbXBsZXRlTm90aWZ5RG9uZShib29sIGlzVGltZW91dCk7Ci0gICAgY2xhc3MgTm90
aWZ5RG9uZVRpbWVkT3V0VGFzazogcHVibGljIE1ldGhvZFRhc2s8RFJUVGVzdFJ1bm5lcj4gewor
ICAgIGNsYXNzIE5vdGlmeURvbmVUaW1lZE91dFRhc2s6IHB1YmxpYyBXZWJUZXN0UnVubmVyOjpX
ZWJNZXRob2RUYXNrPERSVFRlc3RSdW5uZXI+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE5vdGlm
eURvbmVUaW1lZE91dFRhc2soRFJUVGVzdFJ1bm5lciogb2JqZWN0KTogTWV0aG9kVGFzazxEUlRU
ZXN0UnVubmVyPihvYmplY3QpIHsgfQorICAgICAgICBOb3RpZnlEb25lVGltZWRPdXRUYXNrKERS
VFRlc3RSdW5uZXIqIG9iamVjdCk6IFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8RFJUVGVz
dFJ1bm5lcj4ob2JqZWN0KSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSB7
IG1fb2JqZWN0LT5jb21wbGV0ZU5vdGlmeURvbmUodHJ1ZSk7IH0KICAgICB9OwogCkBAIC01NzEs
NyArNTcyLDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7
CiAKICAgICAvLyBVc2VkIGZvciB0ZXN0IHRpbWVvdXRzLgotICAgIFRhc2tMaXN0IG1fdGFza0xp
c3Q7CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QgbV90YXNrTGlzdDsKIAogICAgIC8v
IE5vbi1vd25pbmcgcG9pbnRlci4gVGhlIERSVFRlc3RSdW5uZXIgaXMgb3duZWQgYnkgdGhlIGhv
c3QuCiAgICAgVGVzdFNoZWxsKiBtX3NoZWxsOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
LmNwcAppbmRleCBkNmU1ZTdmMDVlMTJkYmM3MmIwMTBhN2JkOTEwZWNkMWNhMWU5NTEzLi42ZWFm
OWQ2MDNhYWQ1ZTNhM2I4N2JkMzg3MWQyM2MxMGNmNWMzNGE1IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCIKIAogI2luY2x1ZGUgIk1vY2tDb25zdHJhaW50cy5oIgor
I2luY2x1ZGUgIlRhc2suaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFDb25zdHJhaW50cy5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5oPgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaD4KQEAgLTQ4LDExICs0OSwxMiBAQAog
I2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNp
bmcgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXI7CiAKLWNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlwdGlv
blJlcXVlc3RTdWNjZWRlZFRhc2sgOiBwdWJsaWMgTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyPiB7CitjbGFzcyBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0U3Vj
Y2VkZWRUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlcj4gewogcHVibGljOgogICAgIFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RTdWNj
ZWRlZFRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBX
ZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJSVENTZXNz
aW9uRGVzY3JpcHRpb24mIHJlc3VsdCkKLSAgICAgICAgOiBNZXRob2RUYXNrPE1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKKyAgICAgICAgOiBXZWJNZXRob2RUYXNrPE1v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKICAgICAgICAgLCBtX3JlcXVl
c3QocmVxdWVzdCkKICAgICAgICAgLCBtX3Jlc3VsdChyZXN1bHQpCiAgICAgewpAQCAtNjgsMTAg
KzcwLDEwIEBAIHByaXZhdGU6CiAgICAgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIG1fcmVzdWx0
OwogfTsKIAotY2xhc3MgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdEZhaWxlZFRhc2sgOiBw
dWJsaWMgTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CitjbGFz
cyBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0RmFpbGVkVGFzayA6IHB1YmxpYyBXZWJNZXRo
b2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKIHB1YmxpYzoKICAgICBS
VENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0RmFpbGVkVGFzayhNb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyKiBvYmplY3QsIGNvbnN0IFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVl
c3QmIHJlcXVlc3QpCi0gICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyPihvYmplY3QpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCiAgICAgICAgICwgbV9yZXF1ZXN0KHJlcXVlc3Qp
CiAgICAgewogICAgIH0KQEAgLTg1LDEwICs4NywxMCBAQCBwcml2YXRlOgogICAgIFdlYlJUQ1Nl
c3Npb25EZXNjcmlwdGlvblJlcXVlc3QgbV9yZXF1ZXN0OwogfTsKIAotY2xhc3MgUlRDU3RhdHNS
ZXF1ZXN0U3VjY2VlZGVkVGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXI+IHsKK2NsYXNzIFJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2sgOiBw
dWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CiBw
dWJsaWM6CiAgICAgUlRDU3RhdHNSZXF1ZXN0U3VjY2VlZGVkVGFzayhNb2NrV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIGNvbnN0IFdlYktpdDo6V2ViUlRDU3RhdHNSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBXZWJLaXQ6OldlYlJUQ1N0YXRzUmVzcG9uc2UmIHJlc3BvbnNlKQot
ICAgICAgICA6IE1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2Jq
ZWN0KQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlcj4ob2JqZWN0KQogICAgICAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQogICAgICAgICAsIG1f
cmVzcG9uc2UocmVzcG9uc2UpCiAgICAgewpAQCAtMTA0LDEwICsxMDYsMTAgQEAgcHJpdmF0ZToK
ICAgICBXZWJLaXQ6OldlYlJUQ1N0YXRzUmVzcG9uc2UgbV9yZXNwb25zZTsKIH07CiAKLWNsYXNz
IFJUQ1ZvaWRSZXF1ZXN0VGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXI+IHsKK2NsYXNzIFJUQ1ZvaWRSZXF1ZXN0VGFzayA6IHB1YmxpYyBXZWJN
ZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKIHB1YmxpYzoKICAg
ICBSVENWb2lkUmVxdWVzdFRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2Jq
ZWN0LCBjb25zdCBXZWJSVENWb2lkUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBzdWNjZWVkZWQpCi0g
ICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmpl
Y3QpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyPihvYmplY3QpCiAgICAgICAgICwgbV9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgICAgICwgbV9z
dWNjZWVkZWQoc3VjY2VlZGVkKQogICAgIHsKQEAgLTEyNiwxMCArMTI4LDEwIEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX3N1Y2NlZWRlZDsKIH07CiAKLWNsYXNzIFN0cmluZ0RhdGFUYXNrIDogcHVi
bGljIE1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4geworY2xhc3Mg
U3RyaW5nRGF0YVRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyPiB7CiBwdWJsaWM6CiAgICAgU3RyaW5nRGF0YVRhc2soTW9ja1dlYlJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBXZWJSVENEYXRhQ2hhbm5lbCYgZGF0
YUNoYW5uZWwsIGNvbnN0IFdlYlN0cmluZyYgZGF0YSkKLSAgICAgICAgOiBNZXRob2RUYXNrPE1v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKKyAgICAgICAgOiBXZWJNZXRo
b2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKICAgICAgICAg
LCBtX2RhdGFDaGFubmVsKGRhdGFDaGFubmVsKQogICAgICAgICAsIG1fZGF0YShkYXRhKQogICAg
IHsKQEAgLTE0NSwxMCArMTQ3LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViU3RyaW5nIG1fZGF0YTsK
IH07CiAKLWNsYXNzIENoYXJQdHJEYXRhVGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPE1vY2tXZWJS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKK2NsYXNzIENoYXJQdHJEYXRhVGFzayA6IHB1Ymxp
YyBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKIHB1Ymxp
YzoKICAgICBDaGFyUHRyRGF0YVRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciog
b2JqZWN0LCBjb25zdCBXZWJSVENEYXRhQ2hhbm5lbCYgZGF0YUNoYW5uZWwsIGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgpCi0gICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2Nr
V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCiAgICAgICAgICwgbV9kYXRhQ2hh
bm5lbChkYXRhQ2hhbm5lbCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgewpAQCAt
MTY4LDEwICsxNzAsMTAgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9sZW5ndGg7CiB9OwogCi1j
bGFzcyBEYXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNrIDogcHVibGljIE1ldGhvZFRhc2s8TW9ja1dl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4geworY2xhc3MgRGF0YUNoYW5uZWxSZWFkeVN0YXRl
VGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXI+IHsKIHB1YmxpYzoKICAgICBEYXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNrKE1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgY29uc3QgV2ViUlRDRGF0YUNoYW5uZWwmIGRh
dGFDaGFubmVsLCBXZWJSVENEYXRhQ2hhbm5lbDo6UmVhZHlTdGF0ZSBzdGF0ZSkKLSAgICAgICAg
OiBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKKyAg
ICAgICAgOiBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9i
amVjdCkKICAgICAgICAgLCBtX2RhdGFDaGFubmVsKGRhdGFDaGFubmVsKQogICAgICAgICAsIG1f
c3RhdGUoc3RhdGUpCiAgICAgewpAQCAtMTg3LDEwICsxODksMTAgQEAgcHJpdmF0ZToKICAgICBX
ZWJSVENEYXRhQ2hhbm5lbDo6UmVhZHlTdGF0ZSBtX3N0YXRlOwogfTsKIAotY2xhc3MgUlRDUGVl
ckNvbm5lY3Rpb25SZWFkeVN0YXRlVGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPE1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKK2NsYXNzIFJUQ1BlZXJDb25uZWN0aW9uUmVhZHlTdGF0
ZVRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyPiB7CiBwdWJsaWM6CiAgICAgUlRDUGVlckNvbm5lY3Rpb25SZWFkeVN0YXRlVGFzayhNb2Nr
V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIFdlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlckNsaWVudCogY2xpZW50LCBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ6
OlJlYWR5U3RhdGUgc3RhdGUpCi0gICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCiAgICAgICAgICwgbV9jbGllbnQoY2xp
ZW50KQogICAgICAgICAsIG1fc3RhdGUoc3RhdGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlci5oCmluZGV4IDVkZGQyZmM0NTVlN2NlYTg5NDY5NTk0ZjE4NTg5Nzc3YjNmZDA2YzMu
LmExNTIyZjRmYmU2ZmUzYjVmYTQ0MjJkNWVkNzA5OGYwYjMyOGFjMDUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAKLSNpbmNsdWRlICJUZXN0UnVubmVyL3NyYy9UYXNrLmgiCisjaW5jbHVkZSAiV2Vi
VGFzay5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbC5oPgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmg+CkBAIC02OCwxNSArNjgsMTUgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShjb25zdCBXZWJLaXQ6OldlYlJUQ0RhdGFDaGFu
bmVsJiwgY29uc3QgY2hhciosIHNpemVfdCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNs
b3NlRGF0YUNoYW5uZWwoY29uc3QgV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbCYpIE9WRVJSSURF
OwogCi0gICAgLy8gVGFzayByZWxhdGVkIG1ldGhvZHMKLSAgICBUYXNrTGlzdCogdGFza0xpc3Qo
KSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQorICAgIC8vIFdlYlRhc2sgcmVsYXRlZCBtZXRob2Rz
CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1f
dGFza0xpc3Q7IH0KIAogcHJpdmF0ZToKICAgICBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyKCkgeyB9CiAKICAgICBXZWJLaXQ6OldlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVu
dCogbV9jbGllbnQ7CiAgICAgYm9vbCBtX3N0b3BwZWQ7Ci0gICAgVGFza0xpc3QgbV90YXNrTGlz
dDsKKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwogICAgIFdlYktp
dDo6V2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIG1fbG9jYWxEZXNjcmlwdGlvbjsKICAgICBXZWJL
aXQ6OldlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiBtX3JlbW90ZURlc2NyaXB0aW9uOwogICAgIGlu
dCBtX3N0cmVhbUNvdW50OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmNwcAppbmRleCAxM2M4ZmYx
ZWM0YzFjZGU1NTA3NjY5OGRmY2ZlNWU4NzEyNmE4MmViLi41Mjg0NTViZDYwNzkyMzY4NjdiZDJk
NjZjMDhmZWM4NWVhMDkzMWFhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmNwcApAQCAtMjYs
NiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1vY2tXZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXIuaCIKIAorI2luY2x1ZGUgIlRhc2suaCIKICNpbmNsdWRlICJXZWJTcGVl
Y2hJbnB1dExpc3RlbmVyLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ1N0cmluZy5oIgogI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgpAQCAtMzUsNiArMzYsNyBAQAogI2lmIEVOQUJM
RShJTlBVVF9TUEVFQ0gpCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3Bh
Y2UgV2ViVGVzdFJ1bm5lcjsKIAogUGFzc093blB0cjxNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyPiBNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOjpjcmVhdGUoV2ViU3BlZWNoSW5wdXRM
aXN0ZW5lciogbGlzdGVuZXIpCiB7CkBAIC0xODIsNyArMTg0LDcgQEAgdm9pZCBNb2NrV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyOjpzcGVlY2hUYXNrRmlyZWQoKQogfQogCiBNb2NrV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyOjpTcGVlY2hUYXNrOjpTcGVlY2hUYXNrKE1vY2tXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXIqIG1vY2spCi0gICAgOiBNZXRob2RUYXNrPE1vY2tXZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXI+OjpNZXRob2RUYXNrKG1vY2spCisgICAgOiBXZWJNZXRob2RUYXNrPE1vY2tXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXI+OjpXZWJNZXRob2RUYXNrKG1vY2spCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXIuaAppbmRleCA2NDk0YTdmMjViYWJiM2NjM2E5MTdiNTlmNTBkOGE5ZDg3
OWNiMTJjLi4wNzVmMjU0MWY5YTI4MmFjYjRjZDljNDlkMjMzMmZhY2IyMmZiMzc5IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVj
aElucHV0Q29udHJvbGxlci5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSU5QVVRf
U1BFRUNIKQogCi0jaW5jbHVkZSAiVGVzdFJ1bm5lci9zcmMvVGFzay5oIgorI2luY2x1ZGUgIldl
YlRhc2suaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0LmgiCiAjaW5jbHVkZSAiV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViU3BlZWNoSW5wdXRSZXN1bHQuaCIK
QEAgLTU4LDEzICs1OCwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFJlY29n
bml0aW9uKGludCByZXF1ZXN0SWQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wUmVj
b3JkaW5nKGludCByZXF1ZXN0SWQpIE9WRVJSSURFOwogCi0gICAgVGFza0xpc3QqIHRhc2tMaXN0
KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlz
dCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQogCiBwcml2YXRlOgogICAgIE1v
Y2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dExpc3RlbmVy
Kik7CiAgICAgdm9pZCBzcGVlY2hUYXNrRmlyZWQoKTsKIAotICAgIGNsYXNzIFNwZWVjaFRhc2sg
OiBwdWJsaWMgTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyPiB7CisgICAg
Y2xhc3MgU3BlZWNoVGFzayA6IHB1YmxpYyBXZWJUZXN0UnVubmVyOjpXZWJNZXRob2RUYXNrPE1v
Y2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNwZWVj
aFRhc2soTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlciopOwogICAgICAgICB2b2lkIHN0b3Ao
KTsKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYktpdDo6V2ViU3BlZWNoSW5w
dXRMaXN0ZW5lciogbV9saXN0ZW5lcjsKIAotICAgIFRhc2tMaXN0IG1fdGFza0xpc3Q7CisgICAg
V2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QgbV90YXNrTGlzdDsKICAgICBTcGVlY2hUYXNrKiBt
X3NwZWVjaFRhc2s7CiAKICAgICBib29sIG1fcmVjb3JkaW5nOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuY3BwCmlu
ZGV4IDUwMmFkZGVhOTI1NjJkNGM3MmEwMmRmZmNlOGU0ZjFhMTNhZTE3NTIuLjg4MTQzYzBiYTg4
NGIzM2ZkZTQ5MGJlMWMzYTY1YmFlZTE3NmVkNDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5jcHAKQEAgLTI4
LDEwICsyOCwxMiBAQAogCiAjaWYgRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKIAorI2luY2x1ZGUg
IlRhc2suaCIKICNpbmNsdWRlICJXZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdC5oIgogI2luY2x1
ZGUgIldlYlNwZWVjaFJlY29nbml6ZXJDbGllbnQuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyOwogCiBuYW1lc3BhY2UgewogCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2du
aXplci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29n
bml6ZXIuaAppbmRleCA0Y2MwNDU2NjlmYWYwMTUyOGE2ZDVmNWI1ZmI1MmI2ZDFkZTIyYmRkLi40
MTljNWU1MDQ5ZmFhZjlmYjI1YTYxMWVjNzE0MDA5NDA3ZGNmNGY2IDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmgK
QEAgLTI4LDggKzI4LDggQEAKIAogI2lmIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCiAKLSNpbmNs
dWRlICJUZXN0UnVubmVyL3NyYy9UYXNrLmgiCiAjaW5jbHVkZSAiV2ViU3BlZWNoUmVjb2duaXpl
ci5oIgorI2luY2x1ZGUgIldlYlRhc2suaCIKICNpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTU4
LDcgKzU4LDcgQEAgcHVibGljOgogICAgIC8vIE1ldGhvZHMgYWNjZXNzZWQgZnJvbSBUYXNrIG9i
amVjdHM6CiAgICAgV2ViS2l0OjpXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50KiBjbGllbnQoKSB7
IHJldHVybiBtX2NsaWVudDsgfQogICAgIFdlYktpdDo6V2ViU3BlZWNoUmVjb2duaXRpb25IYW5k
bGUmIGhhbmRsZSgpIHsgcmV0dXJuIG1faGFuZGxlOyB9Ci0gICAgVGFza0xpc3QqIHRhc2tMaXN0
KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlz
dCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQogCiAgICAgY2xhc3MgVGFzayB7
CiAgICAgcHVibGljOgpAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRU
YXNrUXVldWUoKTsKICAgICB2b2lkIGNsZWFyVGFza1F1ZXVlKCk7CiAKLSAgICBUYXNrTGlzdCBt
X3Rhc2tMaXN0OworICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0IG1fdGFza0xpc3Q7CiAg
ICAgV2ViS2l0OjpXZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSBtX2hhbmRsZTsKICAgICBXZWJL
aXQ6OldlYlNwZWVjaFJlY29nbml6ZXJDbGllbnQqIG1fY2xpZW50OwogICAgIFZlY3RvcjxXZWJL
aXQ6OldlYlN0cmluZz4gbV9tb2NrVHJhbnNjcmlwdHM7CkBAIC04Niw5ICs4Niw5IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX3Rhc2tRdWV1ZVJ1bm5pbmc7CiAKICAgICAvLyBUYXNrIGZvciBzdGVw
cGluZyB0aGUgcXVldWUuCi0gICAgY2xhc3MgU3RlcFRhc2sgOiBwdWJsaWMgTWV0aG9kVGFzazxN
b2NrV2ViU3BlZWNoUmVjb2duaXplcj4geworICAgIGNsYXNzIFN0ZXBUYXNrIDogcHVibGljIFdl
YlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8TW9ja1dlYlNwZWVjaFJlY29nbml6ZXI+IHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFN0ZXBUYXNrKE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyKiBvYmpl
Y3QpIDogTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoUmVjb2duaXplcj4ob2JqZWN0KSB7IH0KKyAg
ICAgICAgU3RlcFRhc2soTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIqIG9iamVjdCkgOiBXZWJUZXN0
UnVubmVyOjpXZWJNZXRob2RUYXNrPE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyPihvYmplY3QpIHsg
fQogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIE9WRVJSSURFOwogICAgIH07CiB9
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGFzay5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UYXNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWJjZjJj
NDc0Y2I4NTMxMjQwOTM4M2JhMTllYWI2YWZmM2Q4NDA5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGFzay5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUYXNrLmgiCisKKyNpbmNsdWRlICJXZWJLaXQuaCIK
KyNpbmNsdWRlICJXZWJUYXNrLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1T
dXBwb3J0LmgiCisjaW5jbHVkZSAid2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKKyNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBu
YW1lc3BhY2UgV2ViVGVzdFJ1bm5lcjsKKworbmFtZXNwYWNlIHsKKwordm9pZCBpbnZva2VUYXNr
KHZvaWQqIGNvbnRleHQpCit7CisgICAgV2ViVGFzayogdGFzayA9IHN0YXRpY19jYXN0PFdlYlRh
c2sqPihjb250ZXh0KTsKKyAgICB0YXNrLT5ydW4oKTsKKyAgICBkZWxldGUgdGFzazsKK30KKwor
Y2xhc3MgVGFza1dyYXBwZXIgOiBwdWJsaWMgd2Via2l0X3N1cHBvcnQ6OlRhc2tBZGFwdG9yIHsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBUYXNrV3JhcHBlcihXZWJUYXNrKiB0YXNrKQorICAgICAg
ICA6IG1fdGFzayh0YXNrKQorICAgIHsKKyAgICB9CisgICAgdmlydHVhbCB+VGFza1dyYXBwZXIo
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgUnVuKCkKKyAgICB7CisgICAgICAgIG1fdGFzay0+cnVu
KCk7CisgICAgfQorCitwcml2YXRlOgorICAgIE93blB0cjxXZWJUYXNrPiBtX3Rhc2s7Cit9Owor
Cit9CisKK3ZvaWQgcG9zdFRhc2soV2ViVGFzayogdGFzaykKK3sKKyAgICB3ZWJLaXRQbGF0Zm9y
bVN1cHBvcnQoKS0+Y2FsbE9uTWFpblRocmVhZChpbnZva2VUYXNrLCBzdGF0aWNfY2FzdDx2b2lk
Kj4odGFzaykpOworfQorCit2b2lkIHBvc3REZWxheWVkVGFzayhXZWJUYXNrKiB0YXNrLCBsb25n
IGxvbmcgbXMpCit7CisgICAgd2Via2l0X3N1cHBvcnQ6OlBvc3REZWxheWVkVGFzayhuZXcgVGFz
a1dyYXBwZXIodGFzayksIG1zKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rhc2suaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rhc2suaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jODc1NWE4M2NiODI2NzY4ZDczZDA1MDZhN2ZmZGM0YzdhY2YwNmY5Ci0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGFzay5oCkBAIC0w
LDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFRhc2tfaAorI2RlZmluZSBUYXNrX2gKKworbmFtZXNwYWNlIFdl
YlRlc3RSdW5uZXIgeworY2xhc3MgV2ViVGFzazsKK30KKwordm9pZCBwb3N0VGFzayhXZWJUZXN0
UnVubmVyOjpXZWJUYXNrKik7Cit2b2lkIHBvc3REZWxheWVkVGFzayhXZWJUZXN0UnVubmVyOjpX
ZWJUYXNrKiwgbG9uZyBsb25nIG1zKTsKKworI2VuZGlmIC8vIFRhc2tfaApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGFzay5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGFz
ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmVmNzNlMTc3ZTA0MTBlNmZlNmRhNjE4YzBlMWQ2ZWI3NDQ0NzMwYTQK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUYXNrLmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlRhc2tfaAor
I2RlZmluZSBXZWJUYXNrX2gKKworbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworCitjbGFzcyBX
ZWJUYXNrTGlzdDsKKworLy8gV2ViVGFzayByZXByZXNlbnRzIGEgdGFzayB3aGljaCBjYW4gcnVu
IGJ5IFdlYlRlc3REZWxlZ2F0ZTo6cG9zdFRhc2soKSBvcgorLy8gV2ViVGVzdERlbGVnYXRlOjpw
b3N0RGVsYXllZFRhc2soKS4KK2NsYXNzIFdlYlRhc2sgeworcHVibGljOgorICAgIGV4cGxpY2l0
IFdlYlRhc2soV2ViVGFza0xpc3QqKTsKKyAgICB2aXJ0dWFsIH5XZWJUYXNrKCk7CisKKyAgICAv
LyBUaGUgbWFpbiBjb2RlIG9mIHRoaXMgdGFzay4KKyAgICAvLyBBbiBpbXBsZW1lbnRhdGlvbiBv
ZiBydW4oKSBzaG91bGQgcmV0dXJuIGltbWVkaWF0ZWx5IGlmIGNhbmNlbCgpIHdhcyBjYWxsZWQu
CisgICAgdmlydHVhbCB2b2lkIHJ1bigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkg
PSAwOworCitwcm90ZWN0ZWQ6CisgICAgV2ViVGFza0xpc3QqIG1fdGFza0xpc3Q7Cit9OworCitj
bGFzcyBXZWJUYXNrTGlzdCB7CitwdWJsaWM6CisgICAgV2ViVGFza0xpc3QoKTsKKyAgICB+V2Vi
VGFza0xpc3QoKTsKKyAgICB2b2lkIHJlZ2lzdGVyVGFzayhXZWJUYXNrKik7CisgICAgdm9pZCB1
bnJlZ2lzdGVyVGFzayhXZWJUYXNrKik7CisgICAgdm9pZCByZXZva2VBbGwoKTsKKworcHJpdmF0
ZToKKyAgICBjbGFzcyBQcml2YXRlOworICAgIFByaXZhdGUqIG1fcHJpdmF0ZTsKK307CisKKy8v
IEEgdGFzayBjb250YWluaW5nIGFuIG9iamVjdCBwb2ludGVyIG9mIGNsYXNzIFQuIERlcml2ZWQg
Y2xhc3NlcyBzaG91bGQKKy8vIG92ZXJyaWRlIHJ1bklmVmFsaWQoKSB3aGljaCBpbiB0dXJuIGNh
biBzYWZlbHkgaW52b2tlIG1ldGhvZHMgb24gdGhlCisvLyBtX29iamVjdC4gVGhlIENsYXNzIFQg
bXVzdCBoYXZlICJXZWJUYXNrTGlzdCogdGFza0xpc3QoKSIuCit0ZW1wbGF0ZTxjbGFzcyBUPgor
Y2xhc3MgV2ViTWV0aG9kVGFzayA6IHB1YmxpYyBXZWJUYXNrIHsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBXZWJNZXRob2RUYXNrKFQqIG9iamVjdCkKKyAgICAgICAgOiBXZWJUYXNrKG9iamVjdC0+
dGFza0xpc3QoKSkKKyAgICAgICAgLCBtX29iamVjdChvYmplY3QpCisgICAgeworICAgIH0KKwor
ICAgIHZpcnR1YWwgfldlYk1ldGhvZFRhc2soKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBydW4o
KQorICAgIHsKKyAgICAgICAgaWYgKG1fb2JqZWN0KQorICAgICAgICAgICAgcnVuSWZWYWxpZCgp
OworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKQorICAgIHsKKyAgICAgICAgbV9v
YmplY3QgPSAwOworICAgICAgICBtX3Rhc2tMaXN0LT51bnJlZ2lzdGVyVGFzayh0aGlzKTsKKyAg
ICAgICAgbV90YXNrTGlzdCA9IDA7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFs
aWQoKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBUKiBtX29iamVjdDsKK307CisKK30KKworI2Vu
ZGlmIC8vIFdlYlRhc2tfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdERlbGVnYXRlLmggYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaAppbmRleCA1
MzZiYzU3MGE5NjdlYjRjYmM5NjJhMTZiM2QzN2M2NmFmYWRjNjM0Li4yZDE3YTJlYjY2Yjk1OWQ3
M2I0YWFkM2NiM2I2ZDkzMzVmZjEzZTYzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdh
dGUuaApAQCAtNDEsNiArNDEsOCBAQCBjbGFzcyBXZWJHYW1lcGFkczsKIAogbmFtZXNwYWNlIFdl
YlRlc3RSdW5uZXIgewogCitjbGFzcyBXZWJUYXNrOworCiBjbGFzcyBXZWJUZXN0RGVsZWdhdGUg
ewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNvbnRleHRNZW51RGF0YSgpID0gMDsK
QEAgLTUwLDYgKzUyLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViQ29udGV4
dE1lbnVEYXRhKiBsYXN0Q29udGV4dE1lbnVEYXRhKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRHYW1lcGFkRGF0YShjb25zdCBXZWJLaXQ6OldlYkdhbWVwYWRzJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBwcmludE1lc3NhZ2UoY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIGNv
bnN0ID0gMDsKKworICAgIC8vIFRoZSBkZWxlZ2F0ZSB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIFdl
YlRhc2sgb2JqZWN0cyBhbmQgaXMgcmVzcG9uc2libGUKKyAgICAvLyBmb3IgZGVsZXRpbmcgdGhl
bS4KKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soV2ViVGFzayopID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgcG9zdERlbGF5ZWRUYXNrKFdlYlRhc2sqLCBsb25nIGxvbmcgbXMpID0gMDsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL0V2ZW50U2VuZGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcAppbmRleCBkNmY3MmYwZGU5NGI4ZTViNzFlOGE4Nzc5
ZmVjZDg0MmZiNjJlM2IwLi5jNGRhYTg3MzhhMGI0MzczYmQwOTIyYTQ3Y2VlM2QyYzQ0M2E1ZDVk
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwCkBAIC04NTQsMjAgKzg1NCwyMCBAQCB2b2lkIEV2
ZW50U2VuZGVyOjpjb250ZXh0Q2xpY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMs
IENwcFZhcmlhbnQqIHJlcwogICAgIHJlc3VsdC0+c2V0KFdlYkJpbmRpbmdzOjptYWtlU3RyaW5n
QXJyYXkobWFrZU1lbnVJdGVtU3RyaW5nc0ZvcihsYXN0Q29udGV4dE1lbnUsIG1fZGVsZWdhdGUp
KSk7CiB9CiAKLWNsYXNzIE1vdXNlRG93blRhc2s6IHB1YmxpYyBNZXRob2RUYXNrPEV2ZW50U2Vu
ZGVyPiB7CitjbGFzcyBNb3VzZURvd25UYXNrOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxFdmVudFNl
bmRlcj4gewogcHVibGljOgogICAgIE1vdXNlRG93blRhc2soRXZlbnRTZW5kZXIqIG9iaiwgY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiBhcmcpCi0gICAgICAgIDogTWV0aG9kVGFzazxFdmVudFNlbmRl
cj4ob2JqKSwgbV9hcmd1bWVudHMoYXJnKSB7IH0KKyAgICAgICAgOiBXZWJNZXRob2RUYXNrPEV2
ZW50U2VuZGVyPihvYmopLCBtX2FyZ3VtZW50cyhhcmcpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBy
dW5JZlZhbGlkKCkgeyBtX29iamVjdC0+bW91c2VEb3duKG1fYXJndW1lbnRzLCAwKTsgfQogCiBw
cml2YXRlOgogICAgIENwcEFyZ3VtZW50TGlzdCBtX2FyZ3VtZW50czsKIH07CiAKLWNsYXNzIE1v
dXNlVXBUYXNrOiBwdWJsaWMgTWV0aG9kVGFzazxFdmVudFNlbmRlcj4geworY2xhc3MgTW91c2VV
cFRhc2s6IHB1YmxpYyBXZWJNZXRob2RUYXNrPEV2ZW50U2VuZGVyPiB7CiBwdWJsaWM6CiAgICAg
TW91c2VVcFRhc2soRXZlbnRTZW5kZXIqIG9iaiwgY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmcp
Ci0gICAgICAgIDogTWV0aG9kVGFzazxFdmVudFNlbmRlcj4ob2JqKSwgbV9hcmd1bWVudHMoYXJn
KSB7IH0KKyAgICAgICAgOiBXZWJNZXRob2RUYXNrPEV2ZW50U2VuZGVyPihvYmopLCBtX2FyZ3Vt
ZW50cyhhcmcpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgeyBtX29iamVjdC0+
bW91c2VVcChtX2FyZ3VtZW50cywgMCk7IH0KIAogcHJpdmF0ZToKQEAgLTg3NywxNCArODc3LDE0
IEBAIHByaXZhdGU6CiB2b2lkIEV2ZW50U2VuZGVyOjpzY2hlZHVsZUFzeW5jaHJvbm91c0NsaWNr
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7
CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7Ci0gICAgcG9zdFRhc2sobmV3IE1vdXNlRG93blRhc2so
dGhpcywgYXJndW1lbnRzKSk7Ci0gICAgcG9zdFRhc2sobmV3IE1vdXNlVXBUYXNrKHRoaXMsIGFy
Z3VtZW50cykpOworICAgIG1fZGVsZWdhdGUtPnBvc3RUYXNrKG5ldyBNb3VzZURvd25UYXNrKHRo
aXMsIGFyZ3VtZW50cykpOworICAgIG1fZGVsZWdhdGUtPnBvc3RUYXNrKG5ldyBNb3VzZVVwVGFz
ayh0aGlzLCBhcmd1bWVudHMpKTsKIH0KIAotY2xhc3MgS2V5RG93blRhc2sgOiBwdWJsaWMgTWV0
aG9kVGFzazxFdmVudFNlbmRlcj4geworY2xhc3MgS2V5RG93blRhc2sgOiBwdWJsaWMgV2ViTWV0
aG9kVGFzazxFdmVudFNlbmRlcj4gewogcHVibGljOgogICAgIEtleURvd25UYXNrKEV2ZW50U2Vu
ZGVyKiBvYmosIGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJnKQotICAgICAgICA6IE1ldGhvZFRh
c2s8RXZlbnRTZW5kZXI+KG9iaiksIG1fYXJndW1lbnRzKGFyZykgeyB9CisgICAgICAgIDogV2Vi
TWV0aG9kVGFzazxFdmVudFNlbmRlcj4ob2JqKSwgbV9hcmd1bWVudHMoYXJnKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIHsgbV9vYmplY3QtPmtleURvd24obV9hcmd1bWVudHMs
IDApOyB9CiAKIHByaXZhdGU6CkBAIC04OTQsNyArODk0LDcgQEAgcHJpdmF0ZToKIHZvaWQgRXZl
bnRTZW5kZXI6OnNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bihjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVs
bCgpOwotICAgIHBvc3RUYXNrKG5ldyBLZXlEb3duVGFzayh0aGlzLCBhcmd1bWVudHMpKTsKKyAg
ICBtX2RlbGVnYXRlLT5wb3N0VGFzayhuZXcgS2V5RG93blRhc2sodGhpcywgYXJndW1lbnRzKSk7
CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXI6OmJlZ2luRHJhZ1dpdGhGaWxlcyhjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVy
LmgKaW5kZXggNjVkZmNjYjhjMTU1ZTI1NDg4Mjg2ODYxMmJhODIyYzQwMWRlYTExOS4uZDA3ZTE0
Y2M2ZjJkMDY3NDQ5OWNkZDdkMjg5YmRiMjRmYmU2NjZiMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuaAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5o
CkBAIC0zOCw5ICszOCw5IEBACiAjZGVmaW5lIEV2ZW50U2VuZGVyX2gKIAogI2luY2x1ZGUgIkNw
cEJvdW5kQ2xhc3MuaCIKLSNpbmNsdWRlICJUYXNrLmgiCiAjaW5jbHVkZSAiV2ViRHJhZ09wZXJh
dGlvbi5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKKyNpbmNsdWRlICJXZWJUYXNrLmgi
CiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC0xMzEsNyArMTMxLDcgQEAgcHVibGljOgogICAgIENwcFZhcmlhbnQgd21TeXNEZWFkQ2hhcjsK
ICNlbmRpZgogCi0gICAgVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7
IH0KKyAgICBXZWJUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQog
CiBwcml2YXRlOgogICAgIFdlYktpdDo6V2ViVmlldyogd2VidmlldygpIHsgcmV0dXJuIG1fd2Vi
VmlldzsgfQpAQCAtMTY1LDcgKzE2NSw3IEBAIHByaXZhdGU6CiAgICAgLy8gSGFuZGxlIGEgcmVx
dWVzdCB0byBzZW5kIGEgd2hlZWwgZXZlbnQuCiAgICAgdm9pZCBoYW5kbGVNb3VzZVdoZWVsKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqLCBib29sIGNvbnRpbnVvdXMpOwogCi0g
ICAgVGFza0xpc3QgbV90YXNrTGlzdDsKKyAgICBXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwogCiAg
ICAgVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRlOwogICAgIFdlYktpdDo6V2ViVmlldyogbV93ZWJW
aWV3OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvVGFzay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9UYXNrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDgwYmVlZjM0OTkz
N2Q2MzU0MGRlZmE5MDY1MzFmNjEwOGQ3NWE1MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9UYXNrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiVGFzay5oIgotCi0jaW5jbHVkZSAiV2ViS2l0LmgiCi0jaW5j
bHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCi0KLVdlYlRhc2s6OldlYlRh
c2soVGFza0xpc3QqIGxpc3QpCi0gICAgOiBtX3Rhc2tMaXN0KGxpc3QpCi17Ci0gICAgbV90YXNr
TGlzdC0+cmVnaXN0ZXJUYXNrKHRoaXMpOwotfQotCi1XZWJUYXNrOjp+V2ViVGFzaygpCi17Ci0g
ICAgaWYgKG1fdGFza0xpc3QpCi0gICAgICAgIG1fdGFza0xpc3QtPnVucmVnaXN0ZXJUYXNrKHRo
aXMpOwotfQotCi12b2lkIFRhc2tMaXN0Ojp1bnJlZ2lzdGVyVGFzayhXZWJUYXNrKiB0YXNrKQot
ewotICAgIHNpemVfdCBpbmRleCA9IG1fdGFza3MuZmluZCh0YXNrKTsKLSAgICBpZiAoaW5kZXgg
IT0gbm90Rm91bmQpCi0gICAgICAgIG1fdGFza3MucmVtb3ZlKGluZGV4KTsKLX0KLQotdm9pZCBU
YXNrTGlzdDo6cmV2b2tlQWxsKCkKLXsKLSAgICB3aGlsZSAoIW1fdGFza3MuaXNFbXB0eSgpKQot
ICAgICAgICBtX3Rhc2tzWzBdLT5jYW5jZWwoKTsKLX0KLQotc3RhdGljIHZvaWQgaW52b2tlVGFz
ayh2b2lkKiBjb250ZXh0KQotewotICAgIFdlYlRhc2sqIHRhc2sgPSBzdGF0aWNfY2FzdDxXZWJU
YXNrKj4oY29udGV4dCk7Ci0gICAgdGFzay0+cnVuKCk7Ci0gICAgZGVsZXRlIHRhc2s7Ci19Ci0K
LXZvaWQgcG9zdFRhc2soV2ViVGFzayogdGFzaykKLXsKLSAgICBXZWJLaXQ6OndlYktpdFBsYXRm
b3JtU3VwcG9ydCgpLT5jYWxsT25NYWluVGhyZWFkKGludm9rZVRhc2ssIHN0YXRpY19jYXN0PHZv
aWQqPih0YXNrKSk7Ci19Ci0KLXZvaWQgcG9zdERlbGF5ZWRUYXNrKFdlYlRhc2sqIHRhc2ssIGlu
dDY0X3QgbXMpCi17Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlBvc3REZWxheWVkVGFzayh0YXNrLCBt
cyk7Ci19Ci0KLQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvVGFzay5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvVGFzay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjMyYzQ3MmIy
NzUwNGU1ZmI2MDhkNmJlNDAxZmRhNjg4MGI5NzQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1Rhc2suaAorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFRh
c2tfaAotI2RlZmluZSBUYXNrX2gKLQotI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9z
dXBwb3J0LmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KLQotY2xhc3MgVGFza0xpc3Q7Ci0KLS8vIFdlYlRhc2sgcmVwcmVzZW50cyBhIHRhc2sgd2hp
Y2ggY2FuIHJ1biBieSBwb3N0VGFzaygpIG9yIHBvc3REZWxheWVkVGFzaygpLgotLy8gaXQgaXMg
bmFtZWQgIldlYlRhc2siLCBub3QgIlRhc2siLCB0byBhdm9pZCBjb25mbGlzdCB3aXRoIGJhc2Uv
dGFzay5oLgotY2xhc3MgV2ViVGFzayA6IHB1YmxpYyB3ZWJraXRfc3VwcG9ydDo6VGFza0FkYXB0
b3IgewotcHVibGljOgotICAgIFdlYlRhc2soVGFza0xpc3QqKTsKLSAgICAvLyBUaGUgbWFpbiBj
b2RlIG9mIHRoaXMgdGFzay4KLSAgICAvLyBBbiBpbXBsZW1lbnRhdGlvbiBvZiBydW4oKSBzaG91
bGQgcmV0dXJuIGltbWVkaWF0ZWx5IGlmIGNhbmNlbCgpIHdhcyBjYWxsZWQuCi0gICAgdmlydHVh
bCB2b2lkIHJ1bigpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgPSAwOwotICAgIHZp
cnR1YWwgfldlYlRhc2soKTsKLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgUnVuKCkgeyBy
dW4oKTsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgVGFza0xpc3QqIG1fdGFza0xpc3Q7Ci19OwotCi1j
bGFzcyBUYXNrTGlzdCB7Ci1wdWJsaWM6Ci0gICAgVGFza0xpc3QoKSB7IH0KLSAgICB+VGFza0xp
c3QoKSB7IHJldm9rZUFsbCgpOyB9Ci0gICAgdm9pZCByZWdpc3RlclRhc2soV2ViVGFzayogdGFz
aykgeyBtX3Rhc2tzLmFwcGVuZCh0YXNrKTsgfQotICAgIHZvaWQgdW5yZWdpc3RlclRhc2soV2Vi
VGFzayopOwotICAgIHZvaWQgcmV2b2tlQWxsKCk7Ci0KLXByaXZhdGU6Ci0gICAgVmVjdG9yPFdl
YlRhc2sqPiBtX3Rhc2tzOwotfTsKLQotLy8gQSB0YXNrIGNvbnRhaW5pbmcgYW4gb2JqZWN0IHBv
aW50ZXIgb2YgY2xhc3MgVC4gSXMgaXMgc3VwcG9zZWQgdGhhdAotLy8gcnVuaWZWYWxpZCgpIGNh
bGxzIGEgbWVtYmVyIGZ1bmN0aW9uIG9mIHRoZSBvYmplY3QgcG9pbnRlci4KLS8vIENsYXNzIFQg
bXVzdCBoYXZlICJUYXNrTGlzdCogdGFza0xpc3QoKSIuCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFz
cyBNZXRob2RUYXNrOiBwdWJsaWMgV2ViVGFzayB7Ci1wdWJsaWM6Ci0gICAgTWV0aG9kVGFzayhU
KiBvYmplY3QpOiBXZWJUYXNrKG9iamVjdC0+dGFza0xpc3QoKSksIG1fb2JqZWN0KG9iamVjdCkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIHJ1bigpCi0gICAgewotICAgICAgICBpZiAobV9vYmplY3Qp
Ci0gICAgICAgICAgICBydW5JZlZhbGlkKCk7Ci0gICAgfQotICAgIHZpcnR1YWwgdm9pZCBjYW5j
ZWwoKQotICAgIHsKLSAgICAgICAgbV9vYmplY3QgPSAwOwotICAgICAgICBtX3Rhc2tMaXN0LT51
bnJlZ2lzdGVyVGFzayh0aGlzKTsKLSAgICAgICAgbV90YXNrTGlzdCA9IDA7Ci0gICAgfQotICAg
IHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgVCogbV9v
YmplY3Q7Ci19OwotCi12b2lkIHBvc3RUYXNrKFdlYlRhc2sqKTsKLXZvaWQgcG9zdERlbGF5ZWRU
YXNrKFdlYlRhc2sqLCBpbnQ2NF90IG1zKTsKLQotI2VuZGlmIC8vIFRhc2tfaApkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdERlbGVn
YXRlLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0
RGVsZWdhdGUuaAppbmRleCAwNGFlMTgyMTE4OTA3MDM5NDAxMTYwOWYxNWViOTUwNDBmZDE0N2Zh
Li45YzZjYWVkMmIyOWM4MmVlOTVmMTA2ZjUwOTU2YWY4ZjhjODIxNmI3IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0RGVsZWdhdGUu
aAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0
RGVsZWdhdGUuaApAQCAtMzksNiArMzksMTAgQEAgc3RydWN0IFdlYkNvbnRleHRNZW51RGF0YTsK
IGNsYXNzIFdlYkdhbWVwYWRzOwogfQogCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CitjbGFz
cyBXZWJUYXNrOworfQorCiBjbGFzcyBUZXN0RGVsZWdhdGUgewogcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBjbGVhckNvbnRleHRNZW51RGF0YSgpID0gMDsKQEAgLTQ4LDYgKzUyLDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJDb250ZXh0TWVudURhdGEqIGxhc3RDb250ZXh0
TWVudURhdGEoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEdhbWVwYWREYXRhKGNv
bnN0IFdlYktpdDo6V2ViR2FtZXBhZHMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByaW50TWVz
c2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBwb3N0VGFzayhXZWJUZXN0UnVubmVyOjpXZWJUYXNrKikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBwb3N0RGVsYXllZFRhc2soV2ViVGVzdFJ1bm5lcjo6V2ViVGFzayosIGxvbmcgbG9uZyBt
cykgPSAwOwogfTsKIAogI2VuZGlmIC8vIFRlc3REZWxlZ2F0ZV9oCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgK
aW5kZXggZjcwNjk0MDFhOGYwMDQzY2YzZjI3YjdjMWExODRkZmE5NjBlZWNlYy4uMzllMTlkNTcz
NjVkMDNjNjY4NDFmODdmMjZhY2Y0NTQxZWUwN2Q3YSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaApAQCAt
MzMsNyArMzMsNiBAQAogI2RlZmluZSBUZXN0UnVubmVyX2gKIAogI2luY2x1ZGUgIkNwcEJvdW5k
Q2xhc3MuaCIKLSNpbmNsdWRlICJUYXNrLmgiCiAjaW5jbHVkZSAiV2ViRGVsaXZlcmVkSW50ZW50
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViVGV4dERpcmVjdGlvbi5oIgogI2luY2x1ZGUgInBsYXRm
b3JtL1dlYkFycmF5QnVmZmVyVmlldy5oIgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGFzay5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUYXNrLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NzUz
MWM4MGRlMTQ1NDllYzBmYTFjMDUxY2M1ZDA4MTBmMmJkNGY4Ci0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGFzay5jcHAK
QEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJUYXNrLmgi
CisKKyNpbmNsdWRlICJXZWJLaXQuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVz
cGFjZSBXZWJUZXN0UnVubmVyIHsKKworV2ViVGFzazo6V2ViVGFzayhXZWJUYXNrTGlzdCogbGlz
dCkKKyAgICA6IG1fdGFza0xpc3QobGlzdCkKK3sKKyAgICBtX3Rhc2tMaXN0LT5yZWdpc3RlclRh
c2sodGhpcyk7Cit9CisKK1dlYlRhc2s6On5XZWJUYXNrKCkKK3sKKyAgICBpZiAobV90YXNrTGlz
dCkKKyAgICAgICAgbV90YXNrTGlzdC0+dW5yZWdpc3RlclRhc2sodGhpcyk7Cit9CisKK2NsYXNz
IFdlYlRhc2tMaXN0OjpQcml2YXRlIDogcHVibGljIFZlY3RvcjxXZWJUYXNrKj4geworfTsKKwor
V2ViVGFza0xpc3Q6OldlYlRhc2tMaXN0KCkKKyAgICA6IG1fcHJpdmF0ZShuZXcgUHJpdmF0ZSkK
K3sKK30KKworV2ViVGFza0xpc3Q6On5XZWJUYXNrTGlzdCgpCit7CisgICAgcmV2b2tlQWxsKCk7
CisgICAgZGVsZXRlIG1fcHJpdmF0ZTsKK30KKwordm9pZCBXZWJUYXNrTGlzdDo6cmVnaXN0ZXJU
YXNrKFdlYlRhc2sqIHRhc2spCit7CisgICAgbV9wcml2YXRlLT5hcHBlbmQodGFzayk7Cit9CisK
K3ZvaWQgV2ViVGFza0xpc3Q6OnVucmVnaXN0ZXJUYXNrKFdlYlRhc2sqIHRhc2spCit7CisgICAg
c2l6ZV90IGluZGV4ID0gbV9wcml2YXRlLT5maW5kKHRhc2spOworICAgIGlmIChpbmRleCAhPSBu
b3RGb3VuZCkKKyAgICAgICAgbV9wcml2YXRlLT5yZW1vdmUoaW5kZXgpOworfQorCit2b2lkIFdl
YlRhc2tMaXN0OjpyZXZva2VBbGwoKQoreworICAgIHdoaWxlICghbV9wcml2YXRlLT5pc0VtcHR5
KCkpCisgICAgICAgICgqbV9wcml2YXRlKVswXS0+Y2FuY2VsKCk7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJ
bnRlcmZhY2VzLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcAppbmRleCA5NDkwZDE4MTM2YmM0MWFhYTEzNjUwZWE0
Y2FjY2M5MjgyYTNjMzZmLi4yN2YzMDY0YTU5NjQxMzJlNjNkY2NiZjg3NjYxYmJhMzBlZjhiYmZh
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwCkBAIC02NCw2ICs2NCw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYkNvbnRleHRNZW51RGF0YSogbGFzdENvbnRleHRNZW51
RGF0YSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRHYW1lcGFkRGF0YShjb25zdCBXZWJH
YW1lcGFkcyYpOwogICAgIHZpcnR1YWwgdm9pZCBwcmludE1lc3NhZ2UoY29uc3Qgc3RkOjpzdHJp
bmcmIG1lc3NhZ2UpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhXZWJUYXNrKik7
CisgICAgdmlydHVhbCB2b2lkIHBvc3REZWxheWVkVGFzayhXZWJUYXNrKiwgbG9uZyBsb25nIG1z
KTsKIAogcHJpdmF0ZToKICAgICBUZXN0SW50ZXJmYWNlcyBtX2ludGVyZmFjZXM7CkBAIC0xMjks
NiArMTMxLDE2IEBAIHZvaWQgV2ViVGVzdEludGVyZmFjZXM6OkludGVybmFsOjpwcmludE1lc3Nh
Z2UoY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIGNvbnN0CiAgICAgbV9kZWxlZ2F0ZS0+cHJp
bnRNZXNzYWdlKG1lc3NhZ2UpOwogfQogCit2b2lkIFdlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5h
bDo6cG9zdFRhc2soV2ViVGFzayogdGFzaykKK3sKKyAgICBtX2RlbGVnYXRlLT5wb3N0VGFzayh0
YXNrKTsKK30KKwordm9pZCBXZWJUZXN0SW50ZXJmYWNlczo6SW50ZXJuYWw6OnBvc3REZWxheWVk
VGFzayhXZWJUYXNrKiB0YXNrLCBsb25nIGxvbmcgbXMpCit7CisgICAgbV9kZWxlZ2F0ZS0+cG9z
dERlbGF5ZWRUYXNrKHRhc2ssIG1zKTsKK30KKwogV2ViVGVzdEludGVyZmFjZXM6OldlYlRlc3RJ
bnRlcmZhY2VzKCkKIHsKICAgICBtX2ludGVybmFsID0gbmV3IEludGVybmFsOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKaW5kZXggNDg1NGY1ZWEzMWJkMGE0
M2JmODNjYjdkNWQ1YTBlNmQ4NGVhZGU5NC4uMjY5MmU3NDU4NjBlYjMzOWIzOTBmYWY5NTQ0NTI5
ODliZjA1ZTdmMiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFNoZWxsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwu
Y3BwCkBAIC02OCw2ICs2OCw3IEBACiAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5n
IG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogLy8gQ29u
dGVudCBhcmVhIHNpemUgZm9yIG5ld2x5IGNyZWF0ZWQgd2luZG93cy4KQEAgLTE1NCw3ICsxNTUs
NyBAQCBUZXN0U2hlbGw6OlRlc3RTaGVsbCgpCiB2b2lkIFRlc3RTaGVsbDo6aW5pdGlhbGl6ZSgp
CiB7CiAgICAgbV93ZWJQZXJtaXNzaW9ucyA9IGFkb3B0UHRyKG5ldyBXZWJQZXJtaXNzaW9ucyh0
aGlzKSk7Ci0gICAgbV90ZXN0SW50ZXJmYWNlcyA9IGFkb3B0UHRyKG5ldyBXZWJUZXN0UnVubmVy
OjpXZWJUZXN0SW50ZXJmYWNlcygpKTsKKyAgICBtX3Rlc3RJbnRlcmZhY2VzID0gYWRvcHRQdHIo
bmV3IFdlYlRlc3RJbnRlcmZhY2VzKCkpOwogICAgIG1fdGVzdFJ1bm5lciA9IGFkb3B0UHRyKG5l
dyBEUlRUZXN0UnVubmVyKHRoaXMpKTsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5B
QkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogICAgIG1fbm90aWZpY2F0aW9uUHJlc2VudGVyID0g
YWRvcHRQdHIobmV3IE5vdGlmaWNhdGlvblByZXNlbnRlcih0aGlzKSk7CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3Bw
CmluZGV4IGVkMTNmZmE1ODY5ZTI1NjRiYmUyMzE3OWZhZGZlZDFkMjk0NGI4NmQuLjM4NzhmZjE2
NzdhOWM2ZmJlMDhhNGYxYmEwNGU5NTk2ZjM0ODdlNjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oIgogCiAjaW5j
bHVkZSAiTW9ja0NvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiVGFzay5oIgogI2luY2x1ZGUgIldl
YkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5oIgogI2luY2x1
ZGUgIldlYlVzZXJNZWRpYVJlcXVlc3QuaCIKQEAgLTQ0LDExICs0NSwxMiBAQAogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1l
c3BhY2UgV2ViVGVzdFJ1bm5lcjsKIAotY2xhc3MgVXNlck1lZGlhUmVxdWVzdFRhc2sgOiBwdWJs
aWMgTWV0aG9kVGFzazxXZWJVc2VyTWVkaWFDbGllbnRNb2NrPiB7CitjbGFzcyBVc2VyTWVkaWFS
ZXF1ZXN0VGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+
IHsKIHB1YmxpYzoKICAgICBVc2VyTWVkaWFSZXF1ZXN0VGFzayhXZWJVc2VyTWVkaWFDbGllbnRN
b2NrKiBvYmplY3QsIGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdl
Yk1lZGlhU3RyZWFtRGVzY3JpcHRvciByZXN1bHQpCi0gICAgICAgIDogTWV0aG9kVGFzazxXZWJV
c2VyTWVkaWFDbGllbnRNb2NrPihvYmplY3QpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxXZWJV
c2VyTWVkaWFDbGllbnRNb2NrPihvYmplY3QpCiAgICAgICAgICwgbV9yZXF1ZXN0KHJlcXVlc3Qp
CiAgICAgICAgICwgbV9yZXN1bHQocmVzdWx0KQogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaAppbmRleCBmNDM4
NzU5NzY2NjFmMmI3ZTA3NmIyNjFmNWYyZTBhZmIzNmUyOTg4Li5lZjRjYjUxZDFhZmNmZGYzZjA1
MjI1ZDc4MGI2MjVhMDlhMjQ0NTRkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oCkBAIC0zMyw3ICszMyw3IEBACiAK
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAiVGVzdFJ1bm5lci9zcmMvVGFz
ay5oIgorI2luY2x1ZGUgIldlYlRhc2suaCIKICNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnQu
aCIKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC90ZXN0X21lZGlhX3N0cmVhbV9jbGllbnQuaCIK
ICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tbW9uLmg+CkBAIC01MCwxMiArNTAsMTIgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFdlYktpdDo6
V2ViVXNlck1lZGlhUmVxdWVzdCYpOwogCiAgICAgLy8gVGFzayByZWxhdGVkIG1ldGhvZHMKLSAg
ICBUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQorICAgIFdlYlRl
c3RSdW5uZXI6OldlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9
CiAKIHByaXZhdGU6CiAgICAgV2ViVXNlck1lZGlhQ2xpZW50TW9jaygpIHsgfQogCi0gICAgVGFz
a0xpc3QgbV90YXNrTGlzdDsKKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tM
aXN0OwogfTsKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggODU4YzA2MjZlMzhiZTkx
MjFjMDdiODJkMzYyZTA4MjcxOTI1Mjk4YS4uNmY0N2YwODcxMjVjYjYwYzVhMDNjOGY5NDc4ODA3
OTFkYzhjZTA1ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk1vY2tHcmFtbWFyQ2hlY2suaCIK
ICNpbmNsdWRlICJNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTW9j
a1dlYlNwZWVjaFJlY29nbml6ZXIuaCIKKyNpbmNsdWRlICJUYXNrLmgiCiAjaW5jbHVkZSAiVGVz
dE5hdmlnYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVGVzdFNoZWxsLmgiCiAjaW5jbHVk
ZSAiVGVzdFdlYlBsdWdpbi5oIgpAQCAtODgsNiArODksNyBAQAogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViVGVz
dFJ1bm5lcjsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIHN0YXRpYyBjb25zdCBpbnQgc2NyZWVu
V2lkdGggPSAxOTIwOwpAQCAtMTQ4Myw2ICsxNDg1LDE2IEBAIHZvaWQgV2ViVmlld0hvc3Q6OnBy
aW50TWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgY29uc3QKICAgICBwcmludGYo
IiVzIiwgbWVzc2FnZS5jX3N0cigpKTsKIH0KIAordm9pZCBXZWJWaWV3SG9zdDo6cG9zdFRhc2so
V2ViVGFzayogdGFzaykKK3sKKyAgICA6OnBvc3RUYXNrKHRhc2spOworfQorCit2b2lkIFdlYlZp
ZXdIb3N0Ojpwb3N0RGVsYXllZFRhc2soV2ViVGFzayogdGFzaywgbG9uZyBsb25nIG1zKQorewor
ICAgIDo6cG9zdERlbGF5ZWRUYXNrKHRhc2ssIG1zKTsKK30KKwogLy8gUHVibGljIGZ1bmN0aW9u
cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCiBXZWJWaWV3SG9zdDo6V2ViVmlld0hvc3QoVGVzdFNoZWxsKiBzaGVsbCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmggYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCmluZGV4IDQxMGQxOWRmNjA5
NjRiZWNjMzg3MjNkZjVkNDA1M2E5MmM4OTYxODYuLjRkNmM1MmVhZTBjM2QzZTJkNzk3OWE3ZTI3
ZWQ4YTU3MTIyNTk0NTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlZpZXdIb3N0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuaApAQCAtMzMsMTMgKzMzLDEzIEBACiAKICNpbmNsdWRlICJNb2NrU3BlbGxDaGVjay5o
IgogI2luY2x1ZGUgIlRlc3ROYXZpZ2F0aW9uQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIlRlc3RS
dW5uZXIvc3JjL1Rhc2suaCIKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
LmgiCiAjaW5jbHVkZSAiV2ViQ3Vyc29ySW5mby5oIgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50
LmgiCiAjaW5jbHVkZSAiV2ViSW50ZW50UmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYlByZXJlbmRl
cmVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViU3BlbGxDaGVja0NsaWVudC5oIgorI2luY2x1ZGUg
IldlYlRhc2suaCIKICNpbmNsdWRlICJXZWJUZXN0RGVsZWdhdGUuaCIKICNpbmNsdWRlICJXZWJW
aWV3Q2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTEzNiw2ICsxMzYsOCBA
QCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1Ymxp
YyBXZWJLaXQ6OldlYkZyYW1lQ2xpZW50LAogICAgIHZpcnR1YWwgdm9pZCBmaWxsU3BlbGxpbmdT
dWdnZXN0aW9uTGlzdChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgd29yZCwgV2ViS2l0OjpXZWJW
ZWN0b3I8V2ViS2l0OjpXZWJTdHJpbmc+KiBzdWdnZXN0aW9ucykgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHNldEdhbWVwYWREYXRhKGNvbnN0IFdlYktpdDo6V2ViR2FtZXBhZHMmKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgcHJpbnRNZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBt
ZXNzYWdlKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soV2ViVGVz
dFJ1bm5lcjo6V2ViVGFzayopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwb3N0RGVsYXll
ZFRhc2soV2ViVGVzdFJ1bm5lcjo6V2ViVGFzayosIGxvbmcgbG9uZyBtcykgT1ZFUlJJREU7CiAK
ICAgICAvLyBOYXZpZ2F0aW9uSG9zdAogICAgIHZpcnR1YWwgYm9vbCBuYXZpZ2F0ZShjb25zdCBU
ZXN0TmF2aWdhdGlvbkVudHJ5JiwgYm9vbCByZWxvYWQpOwpAQCAtMjg3LDE5ICsyODksMTkgQEAg
Y2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMg
V2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICAvLyBHZW9sb2NhdGlvbiBjbGllbnQgbW9ja3Mg
Zm9yIERSVFRlc3RSdW5uZXIKICAgICBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayog
Z2VvbG9jYXRpb25DbGllbnRNb2NrKCk7CiAKLSAgICAvLyBQZW5kaW5nIHRhc2sgbGlzdCwgTm90
ZSB0YWh0IHRoZSBtZXRob2QgaXMgcmVmZXJyZWQgZnJvbSBNZXRob2RUYXNrIGNsYXNzLgotICAg
IFRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CisgICAgLy8gUGVu
ZGluZyB0YXNrIGxpc3QsIE5vdGUgdGFodCB0aGUgbWV0aG9kIGlzIHJlZmVycmVkIGZyb20gV2Vi
TWV0aG9kVGFzayBjbGFzcy4KKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCogdGFza0xp
c3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQogCiAgICAgLy8gVGhlIGN1cnJlbnQgd2ViIGlu
dGVudHMgcmVxdWVzdC4KICAgICBXZWJLaXQ6OldlYkludGVudFJlcXVlc3QqIGN1cnJlbnRJbnRl
bnRSZXF1ZXN0KCkgeyByZXR1cm4gJm1fY3VycmVudFJlcXVlc3Q7IH0KIAogcHJpdmF0ZToKIAot
ICAgIGNsYXNzIEhvc3RNZXRob2RUYXNrIDogcHVibGljIE1ldGhvZFRhc2s8V2ViVmlld0hvc3Q+
IHsKKyAgICBjbGFzcyBIb3N0TWV0aG9kVGFzayA6IHB1YmxpYyBXZWJUZXN0UnVubmVyOjpXZWJN
ZXRob2RUYXNrPFdlYlZpZXdIb3N0PiB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIHZv
aWQgKFdlYlZpZXdIb3N0OjoqQ2FsbGJhY2tNZXRob2RUeXBlKSgpOwogICAgICAgICBIb3N0TWV0
aG9kVGFzayhXZWJWaWV3SG9zdCogb2JqZWN0LCBDYWxsYmFja01ldGhvZFR5cGUgY2FsbGJhY2sp
Ci0gICAgICAgICAgICA6IE1ldGhvZFRhc2s8V2ViVmlld0hvc3Q+KG9iamVjdCkKKyAgICAgICAg
ICAgIDogV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazxXZWJWaWV3SG9zdD4ob2JqZWN0KQog
ICAgICAgICAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQogICAgICAgICB7IH0KIApAQCAtNDQy
LDcgKzQ0NCw3IEBAIHByaXZhdGU6CiAgICAgV2ViS2l0OjpXZWJTdHJpbmcgbV9sYXN0UmVxdWVz
dGVkVGV4dENoZWNrU3RyaW5nOwogICAgIFdlYktpdDo6V2ViVGV4dENoZWNraW5nQ29tcGxldGlv
biogbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNraW5nQ29tcGxldGlvbjsKIAotICAgIFRhc2tMaXN0
IG1fdGFza0xpc3Q7CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QgbV90YXNrTGlzdDsK
ICAgICBWZWN0b3I8V2ViS2l0OjpXZWJXaWRnZXQqPiBtX3BvcHVwbWVudXM7CiAKICNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169967</attachid>
            <date>2012-10-22 13:24:56 -0700</date>
            <delta_ts>2012-10-22 14:38:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99964-20121022222333.patch</filename>
            <type>text/plain</type>
            <size>59849</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMTEyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGFmOWE2MDQxZTY3ZjYxMWMyYzcyMjRmYTgzMGRmNWZh
NWViYTQyMC4uMTg5NTE4NjAxODliODgzYzI4NjcyMTI4NDBkMjBlZDg4MTRmOTc1MiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEx
MSBAQAorMjAxMi0xMC0yMiAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIGludHJvZHVjZSBXZWJUYXNrIHRvIHRoZSBUZXN0UnVubmVy
IGxpYnJhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk5OTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBJJ20g
YWxzbyByZW1vdmluZyB0aGUgZGVwZW5kZW5jeSBvbiB3ZWJraXRfc3VwcG9ydCwgYW5kIGluc3Rl
YWQgZ28KKyAgICAgICAgdGhyb3VnaCB0aGUgV2ViVGVzdERlbGVnYXRlIGludGVyZmFjZS4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5jcHA6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5oOgorICAgICAgICAoRFJU
RGV2VG9vbHNBZ2VudDo6dGFza0xpc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0RSVERldlRvb2xzQ2xpZW50LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9EUlREZXZUb29sc0NsaWVudC5oOgorICAgICAgICAoRFJURGV2VG9vbHNDbGllbnQ6OnRh
c2tMaXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVy
LmNwcDoKKyAgICAgICAgKEludm9rZUNhbGxiYWNrVGFzazo6SW52b2tlQ2FsbGJhY2tUYXNrKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmg6CisgICAg
ICAgIChEUlRUZXN0UnVubmVyOjp0YXNrTGlzdCk6CisgICAgICAgIChEUlRUZXN0UnVubmVyOjpX
b3JrUXVldWU6OnRhc2tMaXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9N
b2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcDoKKyAgICAgICAgKFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvblJlcXVlc3RTdWNjZWRlZFRhc2s6OlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVl
c3RTdWNjZWRlZFRhc2spOgorICAgICAgICAoUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdEZh
aWxlZFRhc2s6OlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RGYWlsZWRUYXNrKToKKyAgICAg
ICAgKFJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2s6OlJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRl
ZFRhc2spOgorICAgICAgICAoUlRDVm9pZFJlcXVlc3RUYXNrOjpSVENWb2lkUmVxdWVzdFRhc2sp
OgorICAgICAgICAoU3RyaW5nRGF0YVRhc2s6OlN0cmluZ0RhdGFUYXNrKToKKyAgICAgICAgKENo
YXJQdHJEYXRhVGFzazo6Q2hhclB0ckRhdGFUYXNrKToKKyAgICAgICAgKERhdGFDaGFubmVsUmVh
ZHlTdGF0ZVRhc2s6OkRhdGFDaGFubmVsUmVhZHlTdGF0ZVRhc2spOgorICAgICAgICAoUlRDUGVl
ckNvbm5lY3Rpb25SZWFkeVN0YXRlVGFzazo6UlRDUGVlckNvbm5lY3Rpb25SZWFkeVN0YXRlVGFz
ayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlci5oOgorICAgICAgICAoTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
cik6CisgICAgICAgIChNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjp0YXNrTGlzdCk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOjpTcGVl
Y2hUYXNrOjpTcGVlY2hUYXNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9N
b2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmg6CisgICAgICAgIChNb2NrV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyOjp0YXNrTGlzdCk6CisgICAgICAgIChNb2NrV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNo
UmVjb2duaXplci5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dl
YlNwZWVjaFJlY29nbml6ZXIuaDoKKyAgICAgICAgKE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyOjp0
YXNrTGlzdCk6CisgICAgICAgIChNb2NrV2ViU3BlZWNoUmVjb2duaXplcik6CisgICAgICAgIChN
b2NrV2ViU3BlZWNoUmVjb2duaXplcjo6U3RlcFRhc2s6OlN0ZXBUYXNrKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UYXNrLmNwcDogQ29waWVkIGZyb20gVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGFzay5jcHAuCisgICAgICAgIChXZWJU
ZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Omludm9rZVRhc2spOgorICAgICAg
ICAoVGFza1dyYXBwZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGFza1dyYXBwZXI6OlRh
c2tXcmFwcGVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRhc2tXcmFwcGVyOjp+VGFza1dy
YXBwZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGFza1dyYXBwZXI6OlJ1bik6CisgICAg
ICAgIChwb3N0VGFzayk6CisgICAgICAgIChwb3N0RGVsYXllZFRhc2spOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rhc2suaDogQ29waWVkIGZyb20gVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oLgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9wdWJsaWMvV2ViVGFzay5oOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvVGFzay5oLgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6Cisg
ICAgICAgIChXZWJUYXNrKToKKyAgICAgICAgKFdlYlRhc2tMaXN0KToKKyAgICAgICAgKFdlYk1l
dGhvZFRhc2spOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazo6V2ViTWV0
aG9kVGFzayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJNZXRob2RUYXNrOjp+V2ViTWV0
aG9kVGFzayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJNZXRob2RUYXNrOjpydW4pOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazo6Y2FuY2VsKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdh
dGUuaDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdERlbGVnYXRl
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVu
dFNlbmRlci5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OkV2ZW50U2VuZGVyOjpzY2hlZHVsZUFzeW5jaHJvbm91c0NsaWNrKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OktleURvd25UYXNrOjpLZXlEb3duVGFzayk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6c2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRl
ci5oOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6OnRhc2tMaXN0KToKKyAg
ICAgICAgKEV2ZW50U2VuZGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9UZXN0RGVsZWdhdGUuaDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgor
ICAgICAgICAoVGVzdERlbGVnYXRlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGFzay5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UYXNrLmNwcC4KKyAgICAgICAg
KFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGFzazo6V2ViVGFz
ayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUYXNrOjp+V2ViVGFzayk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdDo6V2ViVGFza0xpc3QpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6V2ViVGFza0xpc3Q6On5XZWJUYXNrTGlzdCk6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpXZWJUYXNrTGlzdDo6cmVnaXN0ZXJUYXNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OldlYlRhc2tMaXN0Ojp1bnJlZ2lzdGVyVGFzayk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpXZWJUYXNrTGlzdDo6cmV2b2tlQWxsKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHA6CisgICAgICAgIChXZWJU
ZXN0SW50ZXJmYWNlczo6SW50ZXJuYWwpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVz
dEludGVyZmFjZXM6OkludGVybmFsOjpwb3N0VGFzayk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbDo6
cG9zdERlbGF5ZWRUYXNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGwuY3BwOgorICAgICAgICAoVGVzdFNoZWxsOjppbml0aWFsaXplKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcDoKKyAgICAg
ICAgKFVzZXJNZWRpYVJlcXVlc3RUYXNrOjpVc2VyTWVkaWFSZXF1ZXN0VGFzayk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oOgorICAg
ICAgICAoV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6dGFza0xpc3QpOgorICAgICAgICAoV2ViVXNl
ck1lZGlhQ2xpZW50TW9jayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnBvc3RUYXNrKToKKyAgICAgICAg
KFdlYlZpZXdIb3N0Ojpwb3N0RGVsYXllZFRhc2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6CisgICAgICAgIChXZWJWaWV3SG9zdCk6CisgICAgICAg
IChXZWJWaWV3SG9zdDo6dGFza0xpc3QpOgorICAgICAgICAoV2ViVmlld0hvc3Q6Okhvc3RNZXRo
b2RUYXNrOjpIb3N0TWV0aG9kVGFzayk6CisKIDIwMTItMTAtMjIgIE9qYW4gVmFmYWkgIDxvamFu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVcGRhdGUgZmxha2luZXNzIGRhc2hib2FyZCB0byBt
YXRjaCB0aGUgc3RhdGUgb2YgdGhlIGJ1aWxkZXJzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLmd5cGkKaW5kZXggN2U3ZDY5YmFkYmY1ZDY4NDRmOGI4ZTM1ZmMxOThhMmFmMmJj
MzQ0ZS4uMjY3MjJlY2U3Mjk2ZWVlZjhiMWM4ZmYzODBmNmM4NGE2ZTQ4MGVlMCAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBAIC0zMCw2ICszMCw4IEBACiAgICAg
ICAgICAgICAnY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuaCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vTm90aWZpY2F0aW9uUHJlc2VudGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9t
aXVtL05vdGlmaWNhdGlvblByZXNlbnRlci5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rh
c2suaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGFzay5jcHAnLAogICAgICAgICAgICAgJ2No
cm9taXVtL1Rlc3RFdmVudFByaW50ZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdEV2
ZW50UHJpbnRlci5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3ROYXZpZ2F0aW9uQ29u
dHJvbGxlci5jcHAnLApAQCAtNjcsNiArNjksNyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rl
c3RSdW5uZXIvcHVibGljL1dlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oJywKICAgICAg
ICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJFdmVudFNlbmRlci5oJywKKyAg
ICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUYXNrLmgnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgnLAog
ICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9B
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlckNocm9taXVtLmgnLApAQCAtODAsOCArODMsNiBAQAogICAg
ICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmgnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0dhbWVwYWRDb250cm9sbGVyLmNwcCcsCiAg
ICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvR2FtZXBhZENvbnRyb2xsZXIuaCcs
Ci0gICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGFzay5jcHAnLAotICAgICAg
ICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rhc2suaCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3BwJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXh0SW5wdXRDb250cm9sbGVyLmNwcCcsCkBAIC05MCw2
ICs5MSw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5l
ci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJBY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYkV2ZW50U2VuZGVyLmNwcCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvV2ViVGFzay5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dl
YlRlc3RJbnRlcmZhY2VzLmNwcCcsCiAgICAgICAgIF0sCiAgICAgICAgICd0ZXN0X3BsdWdpbl9m
aWxlcyc6IFsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERl
dlRvb2xzQWdlbnQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9v
bHNBZ2VudC5jcHAKaW5kZXggYjY2NTlhNDdmYzgwM2FlYWFjYjcxMmUzZmJlMzEzOTk2OTY0Yzdk
My4uZWIyMWIyYzg1MWY1MmE0NTdhOGJjMDA3MDJkZDJjNzQzMmJiYzY4YyAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5jcHAKQEAgLTMz
LDEyICszMywxNCBAQAogCiAjaW5jbHVkZSAiRFJURGV2VG9vbHNDbGllbnQuaCIKIAorI2luY2x1
ZGUgIlRhc2suaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDU3RyaW5nLmgiCiAjaW5jbHVkZSAi
V2ViRGV2VG9vbHNBZ2VudC5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlICJ3ZWJr
aXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owor
dXNpbmcgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXI7CiAKIERSVERldlRvb2xzQWdlbnQ6OkRSVERl
dlRvb2xzQWdlbnQoKQogICAgIDogbV9kcnREZXZUb29sc0NsaWVudCgwKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5oIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5oCmluZGV4IGQwNjZiN2E3
MThmZDI4OGViMzllMjY1YmNjZjE5NjU2ZmQ4NjhlOTcuLmMxM2FlZjdmYTAwODkyOTk3NjNkZmNj
N2M3OWFlMGM2Mjc2MWI4ZmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0RSVERldlRvb2xzQWdlbnQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9EUlREZXZUb29sc0FnZW50LmgKQEAgLTMxLDggKzMxLDggQEAKICNpZm5kZWYgRFJURGV2VG9v
bHNBZ2VudF9oCiAjZGVmaW5lIERSVERldlRvb2xzQWdlbnRfaAogCi0jaW5jbHVkZSAiVGVzdFJ1
bm5lci9zcmMvVGFzay5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRDbGllbnQuaCIKKyNp
bmNsdWRlICJXZWJUYXNrLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTY5
LDIzICs2OSwyMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRhY2goKTsKIAogICAgIGJvb2wgZXZh
bHVhdGVJbldlYkluc3BlY3Rvcihsb25nIGNhbGxJRCwgY29uc3Qgc3RkOjpzdHJpbmcmIHNjcmlw
dCk7Ci0gICAgVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAg
ICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNr
TGlzdDsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgY2FsbChjb25zdCBXZWJLaXQ6OldlYlN0cmlu
ZyYgYXJncyk7CiAgICAgV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50KiB3ZWJEZXZUb29sc0FnZW50
KCk7CiAKLSAgICBjbGFzcyBBc3luY0NhbGxUYXNrOiBwdWJsaWMgTWV0aG9kVGFzazxEUlREZXZU
b29sc0FnZW50PiB7CisgICAgY2xhc3MgQXN5bmNDYWxsVGFzazogcHVibGljIFdlYlRlc3RSdW5u
ZXI6OldlYk1ldGhvZFRhc2s8RFJURGV2VG9vbHNBZ2VudD4gewogICAgIHB1YmxpYzoKICAgICAg
ICAgQXN5bmNDYWxsVGFzayhEUlREZXZUb29sc0FnZW50KiBvYmplY3QsIGNvbnN0IFdlYktpdDo6
V2ViU3RyaW5nJiBhcmdzKQotICAgICAgICAgICAgOiBNZXRob2RUYXNrPERSVERldlRvb2xzQWdl
bnQ+KG9iamVjdCksIG1fYXJncyhhcmdzKSB7IH0KKyAgICAgICAgICAgIDogV2ViVGVzdFJ1bm5l
cjo6V2ViTWV0aG9kVGFzazxEUlREZXZUb29sc0FnZW50PihvYmplY3QpLCBtX2FyZ3MoYXJncykg
eyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgeyBtX29iamVjdC0+Y2FsbCht
X2FyZ3MpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBXZWJLaXQ6OldlYlN0cmluZyBtX2Fy
Z3M7CiAgICAgfTsKIAotICAgIFRhc2tMaXN0IG1fdGFza0xpc3Q7CisgICAgV2ViVGVzdFJ1bm5l
cjo6V2ViVGFza0xpc3QgbV90YXNrTGlzdDsKICAgICBEUlREZXZUb29sc0NsaWVudCogbV9kcnRE
ZXZUb29sc0NsaWVudDsKICAgICBpbnQgbV9yb3V0aW5nSUQ7CiAgICAgV2ViS2l0OjpXZWJWaWV3
KiBtX3dlYlZpZXc7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9E
UlREZXZUb29sc0NsaWVudC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRE
ZXZUb29sc0NsaWVudC5jcHAKaW5kZXggYTdmYzRkMDQ4NmYyOGQzMmIxZWVmZDQ0YTBmZjc0NmNh
NGVhZjk1NS4uMDhkZjFkNTJhYTE0NDdlYjdhNTMyMTcwYzA3ZWI5ZDBkNjJmNWY3NSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmNw
cApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRSVERldlRvb2xzQ2xpZW50LmgiCiAKICNp
bmNsdWRlICJEUlREZXZUb29sc0FnZW50LmgiCisjaW5jbHVkZSAiVGFzay5oIgogI2luY2x1ZGUg
IldlYkRldlRvb2xzQWdlbnQuaCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0Zyb250ZW5kLmgiCiAj
aW5jbHVkZSAiV2ViRnJhbWUuaCIKQEAgLTQxLDYgKzQyLDcgQEAKICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdl
YlRlc3RSdW5uZXI7CiAKIERSVERldlRvb2xzQ2xpZW50OjpEUlREZXZUb29sc0NsaWVudChEUlRE
ZXZUb29sc0FnZW50KiBhZ2VudCwgV2ViVmlldyogd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3
ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2
VG9vbHNDbGllbnQuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xz
Q2xpZW50LmgKaW5kZXggZWFkMzk2Mzc5YjRiZTdlMjE4OTI3NTJhYWEzOGIxOTI1OWQ5ZjY3MS4u
NWY0ODZkZGQwZDU5Y2EzYmZhOWY3ODE1Njg5ODM0MDNjNTI3YmI1OCAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuaAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NsaWVudC5oCkBAIC0zMSw4ICsz
MSw4IEBACiAjaWZuZGVmIERSVERldlRvb2xzQ2xpZW50X2gKICNkZWZpbmUgRFJURGV2VG9vbHND
bGllbnRfaAogCi0jaW5jbHVkZSAiVGVzdFJ1bm5lci9zcmMvVGFzay5oIgogI2luY2x1ZGUgIldl
YkRldlRvb2xzRnJvbnRlbmRDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJUYXNrLmgiCiAjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNjQsMjEgKzY0LDIxIEBAIHB1YmxpYzoKICAgICB2
b2lkIGFzeW5jQ2FsbChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgYXJncyk7CiAKICAgICB2b2lk
IGFsbE1lc3NhZ2VzUHJvY2Vzc2VkKCk7Ci0gICAgVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1
cm4gJm1fdGFza0xpc3Q7IH0KKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCogdGFza0xp
c3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQogCiAgcHJpdmF0ZToKICAgICB2b2lkIGNhbGwo
Y29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGFyZ3MpOwotICAgIGNsYXNzIEFzeW5jQ2FsbFRhc2s6
IHB1YmxpYyBNZXRob2RUYXNrPERSVERldlRvb2xzQ2xpZW50PiB7CisgICAgY2xhc3MgQXN5bmND
YWxsVGFzazogcHVibGljIFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8RFJURGV2VG9vbHND
bGllbnQ+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIEFzeW5jQ2FsbFRhc2soRFJURGV2VG9vbHND
bGllbnQqIG9iamVjdCwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGFyZ3MpCi0gICAgICAgICAg
ICA6IE1ldGhvZFRhc2s8RFJURGV2VG9vbHNDbGllbnQ+KG9iamVjdCksIG1fYXJncyhhcmdzKSB7
IH0KKyAgICAgICAgICAgIDogV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazxEUlREZXZUb29s
c0NsaWVudD4ob2JqZWN0KSwgbV9hcmdzKGFyZ3MpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQg
cnVuSWZWYWxpZCgpIHsgbV9vYmplY3QtPmNhbGwobV9hcmdzKTsgfQogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgV2ViS2l0OjpXZWJTdHJpbmcgbV9hcmdzOwogICAgIH07CiAKLSAgICBUYXNrTGlz
dCBtX3Rhc2tMaXN0OworICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0IG1fdGFza0xpc3Q7
CiAgICAgV2ViS2l0OjpXZWJWaWV3KiBtX3dlYlZpZXc7CiAgICAgRFJURGV2VG9vbHNBZ2VudCog
bV9kcnREZXZUb29sc0FnZW50OwogICAgIFdURjo6T3duUHRyPFdlYktpdDo6V2ViRGV2VG9vbHNG
cm9udGVuZD4gbV93ZWJEZXZUb29sc0Zyb250ZW5kOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcAppbmRleCAwODI1OTdhMTE3YjkyZDU5NzI4MDdl
OWYwZTNhMzcyMzRlZDljMmEzLi5iMzFkN2RhNzBmZjU4YmU0MTY0YThkYjBmYjI0OWQxYmEyMGZl
OTIwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVu
bmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVy
LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkRSVERldlRvb2xzQWdlbnQuaCIKICNp
bmNsdWRlICJNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTW9ja1dl
YlNwZWVjaFJlY29nbml6ZXIuaCIKKyNpbmNsdWRlICJUYXNrLmgiCiAjaW5jbHVkZSAiVGVzdFNo
ZWxsLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIldl
YkJpbmRpbmdzLmgiCkBAIC04Myw2ICs4NCw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVy
OwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogY2xhc3MgRW1wdHlXZWJEZWxpdmVyZWRJbnRlbnRD
bGllbnQgOiBwdWJsaWMgV2ViS2l0OjpXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQgewpAQCAtMjEx
NCwxMCArMjExNiwxMCBAQCB2b2lkIERSVFRlc3RSdW5uZXI6OnNldFRleHRTdWJwaXhlbFBvc2l0
aW9uaW5nKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLAogICAgIHJlc3VsdC0+c2V0
TnVsbCgpOwogfQogCi1jbGFzcyBJbnZva2VDYWxsYmFja1Rhc2sgOiBwdWJsaWMgTWV0aG9kVGFz
azxEUlRUZXN0UnVubmVyPiB7CitjbGFzcyBJbnZva2VDYWxsYmFja1Rhc2sgOiBwdWJsaWMgV2Vi
TWV0aG9kVGFzazxEUlRUZXN0UnVubmVyPiB7CiBwdWJsaWM6CiAgICAgSW52b2tlQ2FsbGJhY2tU
YXNrKERSVFRlc3RSdW5uZXIqIG9iamVjdCwgUGFzc093bkFycmF5UHRyPENwcFZhcmlhbnQ+IGNh
bGxiYWNrQXJndW1lbnRzLCB1aW50MzJfdCBudW1iZXJPZkFyZ3VtZW50cykKLSAgICAgICAgOiBN
ZXRob2RUYXNrPERSVFRlc3RSdW5uZXI+KG9iamVjdCkKKyAgICAgICAgOiBXZWJNZXRob2RUYXNr
PERSVFRlc3RSdW5uZXI+KG9iamVjdCkKICAgICAgICAgLCBtX2NhbGxiYWNrQXJndW1lbnRzKGNh
bGxiYWNrQXJndW1lbnRzKQogICAgICAgICAsIG1fbnVtYmVyT2ZBcmd1bWVudHMobnVtYmVyT2ZB
cmd1bWVudHMpCiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vRFJUVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVz
dFJ1bm5lci5oCmluZGV4IDYwYTAzOGEyN2RkODk0Y2ExZDQ0NzEwOWJlYmFkNzhhZTJmZTA2MTku
LmVjNDc3OGZkNWM0NmY4ZjMyODc1OGExNTdhMzI4MjE0NTRiNWIyMjEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmgKQEAgLTQzLDYgKzQzLDcgQEAK
ICNkZWZpbmUgRFJUVGVzdFJ1bm5lcl9oCiAKICNpbmNsdWRlICJUZXN0UnVubmVyL3NyYy9UZXN0
UnVubmVyLmgiCisjaW5jbHVkZSAiV2ViVGFzay5oIgogCiBjbGFzcyBUZXN0U2hlbGw7CiAKQEAg
LTUxMSw3ICs1MTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBydW4oVGVzdFNo
ZWxsKikgPSAwOwogICAgIH07CiAKLSAgICBUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAm
bV90YXNrTGlzdDsgfQorICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0KiB0YXNrTGlzdCgp
IHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CiAKICAgICBib29sIHNob3VsZFN0YXlPblBhZ2VBZnRl
ckhhbmRsaW5nQmVmb3JlVW5sb2FkKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRTdGF5T25QYWdl
QWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZDsgfQogCkBAIC01MzQsMTcgKzUzNSwxNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIHZvaWQgc2V0RnJvemVuKGJvb2wgZnJvemVuKSB7IG1fZnJvemVuID0g
ZnJvemVuOyB9CiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIG1fcXVldWUuaXNFbXB0
eSgpOyB9Ci0gICAgICAgIFRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0
OyB9CisgICAgICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0
dXJuICZtX3Rhc2tMaXN0OyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHByb2Nlc3NX
b3JrKCk7Ci0gICAgICAgIGNsYXNzIFdvcmtRdWV1ZVRhc2s6IHB1YmxpYyBNZXRob2RUYXNrPFdv
cmtRdWV1ZT4geworICAgICAgICBjbGFzcyBXb3JrUXVldWVUYXNrOiBwdWJsaWMgV2ViVGVzdFJ1
bm5lcjo6V2ViTWV0aG9kVGFzazxXb3JrUXVldWU+IHsKICAgICAgICAgcHVibGljOgotICAgICAg
ICAgICAgV29ya1F1ZXVlVGFzayhXb3JrUXVldWUqIG9iamVjdCk6IE1ldGhvZFRhc2s8V29ya1F1
ZXVlPihvYmplY3QpIHsgfQorICAgICAgICAgICAgV29ya1F1ZXVlVGFzayhXb3JrUXVldWUqIG9i
amVjdCk6IFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8V29ya1F1ZXVlPihvYmplY3QpIHsg
fQogICAgICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSB7IG1fb2JqZWN0LT5wcm9j
ZXNzV29yaygpOyB9CiAgICAgICAgIH07CiAKLSAgICAgICAgVGFza0xpc3QgbV90YXNrTGlzdDsK
KyAgICAgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QgbV90YXNrTGlzdDsKICAgICAgICAg
RGVxdWU8V29ya0l0ZW0qPiBtX3F1ZXVlOwogICAgICAgICBib29sIG1fZnJvemVuOwogICAgICAg
ICBEUlRUZXN0UnVubmVyKiBtX2NvbnRyb2xsZXI7CkBAIC01NTgsOSArNTU5LDkgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgbG9nRXJyb3JUb0NvbnNvbGUoY29uc3Qgc3RkOjpzdHJpbmcmKTsKICAg
ICB2b2lkIGNvbXBsZXRlTm90aWZ5RG9uZShib29sIGlzVGltZW91dCk7Ci0gICAgY2xhc3MgTm90
aWZ5RG9uZVRpbWVkT3V0VGFzazogcHVibGljIE1ldGhvZFRhc2s8RFJUVGVzdFJ1bm5lcj4gewor
ICAgIGNsYXNzIE5vdGlmeURvbmVUaW1lZE91dFRhc2s6IHB1YmxpYyBXZWJUZXN0UnVubmVyOjpX
ZWJNZXRob2RUYXNrPERSVFRlc3RSdW5uZXI+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE5vdGlm
eURvbmVUaW1lZE91dFRhc2soRFJUVGVzdFJ1bm5lciogb2JqZWN0KTogTWV0aG9kVGFzazxEUlRU
ZXN0UnVubmVyPihvYmplY3QpIHsgfQorICAgICAgICBOb3RpZnlEb25lVGltZWRPdXRUYXNrKERS
VFRlc3RSdW5uZXIqIG9iamVjdCk6IFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8RFJUVGVz
dFJ1bm5lcj4ob2JqZWN0KSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSB7
IG1fb2JqZWN0LT5jb21wbGV0ZU5vdGlmeURvbmUodHJ1ZSk7IH0KICAgICB9OwogCkBAIC01NzEs
NyArNTcyLDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7
CiAKICAgICAvLyBVc2VkIGZvciB0ZXN0IHRpbWVvdXRzLgotICAgIFRhc2tMaXN0IG1fdGFza0xp
c3Q7CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QgbV90YXNrTGlzdDsKIAogICAgIC8v
IE5vbi1vd25pbmcgcG9pbnRlci4gVGhlIERSVFRlc3RSdW5uZXIgaXMgb3duZWQgYnkgdGhlIGhv
c3QuCiAgICAgVGVzdFNoZWxsKiBtX3NoZWxsOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
LmNwcAppbmRleCBkNmU1ZTdmMDVlMTJkYmM3MmIwMTBhN2JkOTEwZWNkMWNhMWU5NTEzLi42ZWFm
OWQ2MDNhYWQ1ZTNhM2I4N2JkMzg3MWQyM2MxMGNmNWMzNGE1IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCIKIAogI2luY2x1ZGUgIk1vY2tDb25zdHJhaW50cy5oIgor
I2luY2x1ZGUgIlRhc2suaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFDb25zdHJhaW50cy5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5oPgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaD4KQEAgLTQ4LDExICs0OSwxMiBAQAog
I2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNp
bmcgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXI7CiAKLWNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlwdGlv
blJlcXVlc3RTdWNjZWRlZFRhc2sgOiBwdWJsaWMgTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyPiB7CitjbGFzcyBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0U3Vj
Y2VkZWRUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlcj4gewogcHVibGljOgogICAgIFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RTdWNj
ZWRlZFRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBX
ZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJSVENTZXNz
aW9uRGVzY3JpcHRpb24mIHJlc3VsdCkKLSAgICAgICAgOiBNZXRob2RUYXNrPE1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKKyAgICAgICAgOiBXZWJNZXRob2RUYXNrPE1v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKICAgICAgICAgLCBtX3JlcXVl
c3QocmVxdWVzdCkKICAgICAgICAgLCBtX3Jlc3VsdChyZXN1bHQpCiAgICAgewpAQCAtNjgsMTAg
KzcwLDEwIEBAIHByaXZhdGU6CiAgICAgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIG1fcmVzdWx0
OwogfTsKIAotY2xhc3MgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdEZhaWxlZFRhc2sgOiBw
dWJsaWMgTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CitjbGFz
cyBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0RmFpbGVkVGFzayA6IHB1YmxpYyBXZWJNZXRo
b2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKIHB1YmxpYzoKICAgICBS
VENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0RmFpbGVkVGFzayhNb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyKiBvYmplY3QsIGNvbnN0IFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVl
c3QmIHJlcXVlc3QpCi0gICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyPihvYmplY3QpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCiAgICAgICAgICwgbV9yZXF1ZXN0KHJlcXVlc3Qp
CiAgICAgewogICAgIH0KQEAgLTg1LDEwICs4NywxMCBAQCBwcml2YXRlOgogICAgIFdlYlJUQ1Nl
c3Npb25EZXNjcmlwdGlvblJlcXVlc3QgbV9yZXF1ZXN0OwogfTsKIAotY2xhc3MgUlRDU3RhdHNS
ZXF1ZXN0U3VjY2VlZGVkVGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXI+IHsKK2NsYXNzIFJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2sgOiBw
dWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CiBw
dWJsaWM6CiAgICAgUlRDU3RhdHNSZXF1ZXN0U3VjY2VlZGVkVGFzayhNb2NrV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIGNvbnN0IFdlYktpdDo6V2ViUlRDU3RhdHNSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBXZWJLaXQ6OldlYlJUQ1N0YXRzUmVzcG9uc2UmIHJlc3BvbnNlKQot
ICAgICAgICA6IE1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2Jq
ZWN0KQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlcj4ob2JqZWN0KQogICAgICAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQogICAgICAgICAsIG1f
cmVzcG9uc2UocmVzcG9uc2UpCiAgICAgewpAQCAtMTA0LDEwICsxMDYsMTAgQEAgcHJpdmF0ZToK
ICAgICBXZWJLaXQ6OldlYlJUQ1N0YXRzUmVzcG9uc2UgbV9yZXNwb25zZTsKIH07CiAKLWNsYXNz
IFJUQ1ZvaWRSZXF1ZXN0VGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXI+IHsKK2NsYXNzIFJUQ1ZvaWRSZXF1ZXN0VGFzayA6IHB1YmxpYyBXZWJN
ZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKIHB1YmxpYzoKICAg
ICBSVENWb2lkUmVxdWVzdFRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2Jq
ZWN0LCBjb25zdCBXZWJSVENWb2lkUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBzdWNjZWVkZWQpCi0g
ICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmpl
Y3QpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyPihvYmplY3QpCiAgICAgICAgICwgbV9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgICAgICwgbV9z
dWNjZWVkZWQoc3VjY2VlZGVkKQogICAgIHsKQEAgLTEyNiwxMCArMTI4LDEwIEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX3N1Y2NlZWRlZDsKIH07CiAKLWNsYXNzIFN0cmluZ0RhdGFUYXNrIDogcHVi
bGljIE1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4geworY2xhc3Mg
U3RyaW5nRGF0YVRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyPiB7CiBwdWJsaWM6CiAgICAgU3RyaW5nRGF0YVRhc2soTW9ja1dlYlJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBXZWJSVENEYXRhQ2hhbm5lbCYgZGF0
YUNoYW5uZWwsIGNvbnN0IFdlYlN0cmluZyYgZGF0YSkKLSAgICAgICAgOiBNZXRob2RUYXNrPE1v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKKyAgICAgICAgOiBXZWJNZXRo
b2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKICAgICAgICAg
LCBtX2RhdGFDaGFubmVsKGRhdGFDaGFubmVsKQogICAgICAgICAsIG1fZGF0YShkYXRhKQogICAg
IHsKQEAgLTE0NSwxMCArMTQ3LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViU3RyaW5nIG1fZGF0YTsK
IH07CiAKLWNsYXNzIENoYXJQdHJEYXRhVGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPE1vY2tXZWJS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKK2NsYXNzIENoYXJQdHJEYXRhVGFzayA6IHB1Ymxp
YyBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKIHB1Ymxp
YzoKICAgICBDaGFyUHRyRGF0YVRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciog
b2JqZWN0LCBjb25zdCBXZWJSVENEYXRhQ2hhbm5lbCYgZGF0YUNoYW5uZWwsIGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgpCi0gICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2Nr
V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCiAgICAgICAgICwgbV9kYXRhQ2hh
bm5lbChkYXRhQ2hhbm5lbCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgewpAQCAt
MTY4LDEwICsxNzAsMTAgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9sZW5ndGg7CiB9OwogCi1j
bGFzcyBEYXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNrIDogcHVibGljIE1ldGhvZFRhc2s8TW9ja1dl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4geworY2xhc3MgRGF0YUNoYW5uZWxSZWFkeVN0YXRl
VGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXI+IHsKIHB1YmxpYzoKICAgICBEYXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNrKE1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgY29uc3QgV2ViUlRDRGF0YUNoYW5uZWwmIGRh
dGFDaGFubmVsLCBXZWJSVENEYXRhQ2hhbm5lbDo6UmVhZHlTdGF0ZSBzdGF0ZSkKLSAgICAgICAg
OiBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKKyAg
ICAgICAgOiBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9i
amVjdCkKICAgICAgICAgLCBtX2RhdGFDaGFubmVsKGRhdGFDaGFubmVsKQogICAgICAgICAsIG1f
c3RhdGUoc3RhdGUpCiAgICAgewpAQCAtMTg3LDEwICsxODksMTAgQEAgcHJpdmF0ZToKICAgICBX
ZWJSVENEYXRhQ2hhbm5lbDo6UmVhZHlTdGF0ZSBtX3N0YXRlOwogfTsKIAotY2xhc3MgUlRDUGVl
ckNvbm5lY3Rpb25SZWFkeVN0YXRlVGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPE1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKK2NsYXNzIFJUQ1BlZXJDb25uZWN0aW9uUmVhZHlTdGF0
ZVRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyPiB7CiBwdWJsaWM6CiAgICAgUlRDUGVlckNvbm5lY3Rpb25SZWFkeVN0YXRlVGFzayhNb2Nr
V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIFdlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlckNsaWVudCogY2xpZW50LCBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ6
OlJlYWR5U3RhdGUgc3RhdGUpCi0gICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCiAgICAgICAgICwgbV9jbGllbnQoY2xp
ZW50KQogICAgICAgICAsIG1fc3RhdGUoc3RhdGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlci5oCmluZGV4IDVkZGQyZmM0NTVlN2NlYTg5NDY5NTk0ZjE4NTg5Nzc3YjNmZDA2YzMu
LmExNTIyZjRmYmU2ZmUzYjVmYTQ0MjJkNWVkNzA5OGYwYjMyOGFjMDUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAKLSNpbmNsdWRlICJUZXN0UnVubmVyL3NyYy9UYXNrLmgiCisjaW5jbHVkZSAiV2Vi
VGFzay5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbC5oPgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmg+CkBAIC02OCwxNSArNjgsMTUgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShjb25zdCBXZWJLaXQ6OldlYlJUQ0RhdGFDaGFu
bmVsJiwgY29uc3QgY2hhciosIHNpemVfdCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNs
b3NlRGF0YUNoYW5uZWwoY29uc3QgV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbCYpIE9WRVJSSURF
OwogCi0gICAgLy8gVGFzayByZWxhdGVkIG1ldGhvZHMKLSAgICBUYXNrTGlzdCogdGFza0xpc3Qo
KSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQorICAgIC8vIFdlYlRhc2sgcmVsYXRlZCBtZXRob2Rz
CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1f
dGFza0xpc3Q7IH0KIAogcHJpdmF0ZToKICAgICBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyKCkgeyB9CiAKICAgICBXZWJLaXQ6OldlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVu
dCogbV9jbGllbnQ7CiAgICAgYm9vbCBtX3N0b3BwZWQ7Ci0gICAgVGFza0xpc3QgbV90YXNrTGlz
dDsKKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwogICAgIFdlYktp
dDo6V2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIG1fbG9jYWxEZXNjcmlwdGlvbjsKICAgICBXZWJL
aXQ6OldlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiBtX3JlbW90ZURlc2NyaXB0aW9uOwogICAgIGlu
dCBtX3N0cmVhbUNvdW50OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmNwcAppbmRleCAxM2M4ZmYx
ZWM0YzFjZGU1NTA3NjY5OGRmY2ZlNWU4NzEyNmE4MmViLi41Mjg0NTViZDYwNzkyMzY4NjdiZDJk
NjZjMDhmZWM4NWVhMDkzMWFhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmNwcApAQCAtMjYs
NiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1vY2tXZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXIuaCIKIAorI2luY2x1ZGUgIlRhc2suaCIKICNpbmNsdWRlICJXZWJTcGVl
Y2hJbnB1dExpc3RlbmVyLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ1N0cmluZy5oIgogI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgpAQCAtMzUsNiArMzYsNyBAQAogI2lmIEVOQUJM
RShJTlBVVF9TUEVFQ0gpCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3Bh
Y2UgV2ViVGVzdFJ1bm5lcjsKIAogUGFzc093blB0cjxNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyPiBNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOjpjcmVhdGUoV2ViU3BlZWNoSW5wdXRM
aXN0ZW5lciogbGlzdGVuZXIpCiB7CkBAIC0xODIsNyArMTg0LDcgQEAgdm9pZCBNb2NrV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyOjpzcGVlY2hUYXNrRmlyZWQoKQogfQogCiBNb2NrV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyOjpTcGVlY2hUYXNrOjpTcGVlY2hUYXNrKE1vY2tXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXIqIG1vY2spCi0gICAgOiBNZXRob2RUYXNrPE1vY2tXZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXI+OjpNZXRob2RUYXNrKG1vY2spCisgICAgOiBXZWJNZXRob2RUYXNrPE1vY2tXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXI+OjpXZWJNZXRob2RUYXNrKG1vY2spCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXIuaAppbmRleCA2NDk0YTdmMjViYWJiM2NjM2E5MTdiNTlmNTBkOGE5ZDg3
OWNiMTJjLi4wNzVmMjU0MWY5YTI4MmFjYjRjZDljNDlkMjMzMmZhY2IyMmZiMzc5IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVj
aElucHV0Q29udHJvbGxlci5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSU5QVVRf
U1BFRUNIKQogCi0jaW5jbHVkZSAiVGVzdFJ1bm5lci9zcmMvVGFzay5oIgorI2luY2x1ZGUgIldl
YlRhc2suaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0LmgiCiAjaW5jbHVkZSAiV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViU3BlZWNoSW5wdXRSZXN1bHQuaCIK
QEAgLTU4LDEzICs1OCwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFJlY29n
bml0aW9uKGludCByZXF1ZXN0SWQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wUmVj
b3JkaW5nKGludCByZXF1ZXN0SWQpIE9WRVJSSURFOwogCi0gICAgVGFza0xpc3QqIHRhc2tMaXN0
KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlz
dCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQogCiBwcml2YXRlOgogICAgIE1v
Y2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dExpc3RlbmVy
Kik7CiAgICAgdm9pZCBzcGVlY2hUYXNrRmlyZWQoKTsKIAotICAgIGNsYXNzIFNwZWVjaFRhc2sg
OiBwdWJsaWMgTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyPiB7CisgICAg
Y2xhc3MgU3BlZWNoVGFzayA6IHB1YmxpYyBXZWJUZXN0UnVubmVyOjpXZWJNZXRob2RUYXNrPE1v
Y2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNwZWVj
aFRhc2soTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlciopOwogICAgICAgICB2b2lkIHN0b3Ao
KTsKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYktpdDo6V2ViU3BlZWNoSW5w
dXRMaXN0ZW5lciogbV9saXN0ZW5lcjsKIAotICAgIFRhc2tMaXN0IG1fdGFza0xpc3Q7CisgICAg
V2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QgbV90YXNrTGlzdDsKICAgICBTcGVlY2hUYXNrKiBt
X3NwZWVjaFRhc2s7CiAKICAgICBib29sIG1fcmVjb3JkaW5nOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuY3BwCmlu
ZGV4IDUwMmFkZGVhOTI1NjJkNGM3MmEwMmRmZmNlOGU0ZjFhMTNhZTE3NTIuLjg4MTQzYzBiYTg4
NGIzM2ZkZTQ5MGJlMWMzYTY1YmFlZTE3NmVkNDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5jcHAKQEAgLTI4
LDEwICsyOCwxMiBAQAogCiAjaWYgRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKIAorI2luY2x1ZGUg
IlRhc2suaCIKICNpbmNsdWRlICJXZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdC5oIgogI2luY2x1
ZGUgIldlYlNwZWVjaFJlY29nbml6ZXJDbGllbnQuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyOwogCiBuYW1lc3BhY2UgewogCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2du
aXplci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29n
bml6ZXIuaAppbmRleCA0Y2MwNDU2NjlmYWYwMTUyOGE2ZDVmNWI1ZmI1MmI2ZDFkZTIyYmRkLi40
MTljNWU1MDQ5ZmFhZjlmYjI1YTYxMWVjNzE0MDA5NDA3ZGNmNGY2IDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmgK
QEAgLTI4LDggKzI4LDggQEAKIAogI2lmIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCiAKLSNpbmNs
dWRlICJUZXN0UnVubmVyL3NyYy9UYXNrLmgiCiAjaW5jbHVkZSAiV2ViU3BlZWNoUmVjb2duaXpl
ci5oIgorI2luY2x1ZGUgIldlYlRhc2suaCIKICNpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTU4
LDcgKzU4LDcgQEAgcHVibGljOgogICAgIC8vIE1ldGhvZHMgYWNjZXNzZWQgZnJvbSBUYXNrIG9i
amVjdHM6CiAgICAgV2ViS2l0OjpXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50KiBjbGllbnQoKSB7
IHJldHVybiBtX2NsaWVudDsgfQogICAgIFdlYktpdDo6V2ViU3BlZWNoUmVjb2duaXRpb25IYW5k
bGUmIGhhbmRsZSgpIHsgcmV0dXJuIG1faGFuZGxlOyB9Ci0gICAgVGFza0xpc3QqIHRhc2tMaXN0
KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlz
dCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQogCiAgICAgY2xhc3MgVGFzayB7
CiAgICAgcHVibGljOgpAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRU
YXNrUXVldWUoKTsKICAgICB2b2lkIGNsZWFyVGFza1F1ZXVlKCk7CiAKLSAgICBUYXNrTGlzdCBt
X3Rhc2tMaXN0OworICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0IG1fdGFza0xpc3Q7CiAg
ICAgV2ViS2l0OjpXZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSBtX2hhbmRsZTsKICAgICBXZWJL
aXQ6OldlYlNwZWVjaFJlY29nbml6ZXJDbGllbnQqIG1fY2xpZW50OwogICAgIFZlY3RvcjxXZWJL
aXQ6OldlYlN0cmluZz4gbV9tb2NrVHJhbnNjcmlwdHM7CkBAIC04Niw5ICs4Niw5IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX3Rhc2tRdWV1ZVJ1bm5pbmc7CiAKICAgICAvLyBUYXNrIGZvciBzdGVw
cGluZyB0aGUgcXVldWUuCi0gICAgY2xhc3MgU3RlcFRhc2sgOiBwdWJsaWMgTWV0aG9kVGFzazxN
b2NrV2ViU3BlZWNoUmVjb2duaXplcj4geworICAgIGNsYXNzIFN0ZXBUYXNrIDogcHVibGljIFdl
YlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8TW9ja1dlYlNwZWVjaFJlY29nbml6ZXI+IHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFN0ZXBUYXNrKE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyKiBvYmpl
Y3QpIDogTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoUmVjb2duaXplcj4ob2JqZWN0KSB7IH0KKyAg
ICAgICAgU3RlcFRhc2soTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIqIG9iamVjdCkgOiBXZWJUZXN0
UnVubmVyOjpXZWJNZXRob2RUYXNrPE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyPihvYmplY3QpIHsg
fQogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIE9WRVJSSURFOwogICAgIH07CiB9
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGFzay5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UYXNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjE5MDE3
ZjU3NzVjNDIwYjgyN2IxOTQyMjY0NzEwNTJlOTg3ODQzCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGFzay5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUYXNrLmgiCisKKyNpbmNsdWRlICJXZWJLaXQuaCIK
KyNpbmNsdWRlICJXZWJUYXNrLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1T
dXBwb3J0LmgiCisjaW5jbHVkZSAid2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKKyNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyOworCitu
YW1lc3BhY2UgeworCit2b2lkIGludm9rZVRhc2sodm9pZCogY29udGV4dCkKK3sKKyAgICBXZWJU
YXNrKiB0YXNrID0gc3RhdGljX2Nhc3Q8V2ViVGFzayo+KGNvbnRleHQpOworICAgIHRhc2stPnJ1
bigpOworICAgIGRlbGV0ZSB0YXNrOworfQorCitjbGFzcyBUYXNrV3JhcHBlciA6IHB1YmxpYyB3
ZWJraXRfc3VwcG9ydDo6VGFza0FkYXB0b3IgeworcHVibGljOgorICAgIGV4cGxpY2l0IFRhc2tX
cmFwcGVyKFdlYlRhc2sqIHRhc2spCisgICAgICAgIDogbV90YXNrKGFkb3B0UHRyKHRhc2spKQor
ICAgIHsKKyAgICB9CisgICAgdmlydHVhbCB+VGFza1dyYXBwZXIoKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgUnVuKCkKKyAgICB7CisgICAgICAgIG1fdGFzay0+cnVuKCk7CisgICAgfQorCitwcml2
YXRlOgorICAgIE93blB0cjxXZWJUYXNrPiBtX3Rhc2s7Cit9OworCit9CisKK3ZvaWQgcG9zdFRh
c2soV2ViVGFzayogdGFzaykKK3sKKyAgICB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y2FsbE9u
TWFpblRocmVhZChpbnZva2VUYXNrLCBzdGF0aWNfY2FzdDx2b2lkKj4odGFzaykpOworfQorCit2
b2lkIHBvc3REZWxheWVkVGFzayhXZWJUYXNrKiB0YXNrLCBsb25nIGxvbmcgbXMpCit7CisgICAg
d2Via2l0X3N1cHBvcnQ6OlBvc3REZWxheWVkVGFzayhuZXcgVGFza1dyYXBwZXIodGFzayksIG1z
KTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rhc2suaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rhc2suaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODc1NWE4
M2NiODI2NzY4ZDczZDA1MDZhN2ZmZGM0YzdhY2YwNmY5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGFzay5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFRhc2tfaAorI2RlZmluZSBUYXNrX2gKKworbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworY2xh
c3MgV2ViVGFzazsKK30KKwordm9pZCBwb3N0VGFzayhXZWJUZXN0UnVubmVyOjpXZWJUYXNrKik7
Cit2b2lkIHBvc3REZWxheWVkVGFzayhXZWJUZXN0UnVubmVyOjpXZWJUYXNrKiwgbG9uZyBsb25n
IG1zKTsKKworI2VuZGlmIC8vIFRhc2tfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGFzay5oIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGFzay5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVm
NzNlMTc3ZTA0MTBlNmZlNmRhNjE4YzBlMWQ2ZWI3NDQ0NzMwYTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUYXNr
LmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlRhc2tfaAorI2RlZmluZSBXZWJUYXNrX2gK
KworbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworCitjbGFzcyBXZWJUYXNrTGlzdDsKKworLy8g
V2ViVGFzayByZXByZXNlbnRzIGEgdGFzayB3aGljaCBjYW4gcnVuIGJ5IFdlYlRlc3REZWxlZ2F0
ZTo6cG9zdFRhc2soKSBvcgorLy8gV2ViVGVzdERlbGVnYXRlOjpwb3N0RGVsYXllZFRhc2soKS4K
K2NsYXNzIFdlYlRhc2sgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlRhc2soV2ViVGFza0xp
c3QqKTsKKyAgICB2aXJ0dWFsIH5XZWJUYXNrKCk7CisKKyAgICAvLyBUaGUgbWFpbiBjb2RlIG9m
IHRoaXMgdGFzay4KKyAgICAvLyBBbiBpbXBsZW1lbnRhdGlvbiBvZiBydW4oKSBzaG91bGQgcmV0
dXJuIGltbWVkaWF0ZWx5IGlmIGNhbmNlbCgpIHdhcyBjYWxsZWQuCisgICAgdmlydHVhbCB2b2lk
IHJ1bigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgPSAwOworCitwcm90ZWN0ZWQ6
CisgICAgV2ViVGFza0xpc3QqIG1fdGFza0xpc3Q7Cit9OworCitjbGFzcyBXZWJUYXNrTGlzdCB7
CitwdWJsaWM6CisgICAgV2ViVGFza0xpc3QoKTsKKyAgICB+V2ViVGFza0xpc3QoKTsKKyAgICB2
b2lkIHJlZ2lzdGVyVGFzayhXZWJUYXNrKik7CisgICAgdm9pZCB1bnJlZ2lzdGVyVGFzayhXZWJU
YXNrKik7CisgICAgdm9pZCByZXZva2VBbGwoKTsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBQcml2
YXRlOworICAgIFByaXZhdGUqIG1fcHJpdmF0ZTsKK307CisKKy8vIEEgdGFzayBjb250YWluaW5n
IGFuIG9iamVjdCBwb2ludGVyIG9mIGNsYXNzIFQuIERlcml2ZWQgY2xhc3NlcyBzaG91bGQKKy8v
IG92ZXJyaWRlIHJ1bklmVmFsaWQoKSB3aGljaCBpbiB0dXJuIGNhbiBzYWZlbHkgaW52b2tlIG1l
dGhvZHMgb24gdGhlCisvLyBtX29iamVjdC4gVGhlIENsYXNzIFQgbXVzdCBoYXZlICJXZWJUYXNr
TGlzdCogdGFza0xpc3QoKSIuCit0ZW1wbGF0ZTxjbGFzcyBUPgorY2xhc3MgV2ViTWV0aG9kVGFz
ayA6IHB1YmxpYyBXZWJUYXNrIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJNZXRob2RUYXNr
KFQqIG9iamVjdCkKKyAgICAgICAgOiBXZWJUYXNrKG9iamVjdC0+dGFza0xpc3QoKSkKKyAgICAg
ICAgLCBtX29iamVjdChvYmplY3QpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfldlYk1l
dGhvZFRhc2soKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAg
aWYgKG1fb2JqZWN0KQorICAgICAgICAgICAgcnVuSWZWYWxpZCgpOworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWwoKQorICAgIHsKKyAgICAgICAgbV9vYmplY3QgPSAwOworICAgICAg
ICBtX3Rhc2tMaXN0LT51bnJlZ2lzdGVyVGFzayh0aGlzKTsKKyAgICAgICAgbV90YXNrTGlzdCA9
IDA7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSA9IDA7CisKK3Byb3Rl
Y3RlZDoKKyAgICBUKiBtX29iamVjdDsKK307CisKK30KKworI2VuZGlmIC8vIFdlYlRhc2tfaApk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJs
aWMvV2ViVGVzdERlbGVnYXRlLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaAppbmRleCA1MzZiYzU3MGE5NjdlYjRjYmM5
NjJhMTZiM2QzN2M2NmFmYWRjNjM0Li4yZDE3YTJlYjY2Yjk1OWQ3M2I0YWFkM2NiM2I2ZDkzMzVm
ZjEzZTYzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaApAQCAtNDEsNiArNDEs
OCBAQCBjbGFzcyBXZWJHYW1lcGFkczsKIAogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCitj
bGFzcyBXZWJUYXNrOworCiBjbGFzcyBXZWJUZXN0RGVsZWdhdGUgewogcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBjbGVhckNvbnRleHRNZW51RGF0YSgpID0gMDsKQEAgLTUwLDYgKzUyLDExIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViQ29udGV4dE1lbnVEYXRhKiBsYXN0Q29u
dGV4dE1lbnVEYXRhKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRHYW1lcGFkRGF0
YShjb25zdCBXZWJLaXQ6OldlYkdhbWVwYWRzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmlu
dE1lc3NhZ2UoY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIGNvbnN0ID0gMDsKKworICAgIC8v
IFRoZSBkZWxlZ2F0ZSB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIFdlYlRhc2sgb2JqZWN0cyBhbmQg
aXMgcmVzcG9uc2libGUKKyAgICAvLyBmb3IgZGVsZXRpbmcgdGhlbS4KKyAgICB2aXJ0dWFsIHZv
aWQgcG9zdFRhc2soV2ViVGFzayopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdERlbGF5ZWRU
YXNrKFdlYlRhc2sqLCBsb25nIGxvbmcgbXMpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2Vu
ZGVyLmNwcAppbmRleCBkNmY3MmYwZGU5NGI4ZTViNzFlOGE4Nzc5ZmVjZDg0MmZiNjJlM2IwLi5j
NGRhYTg3MzhhMGI0MzczYmQwOTIyYTQ3Y2VlM2QyYzQ0M2E1ZDVkIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRT
ZW5kZXIuY3BwCkBAIC04NTQsMjAgKzg1NCwyMCBAQCB2b2lkIEV2ZW50U2VuZGVyOjpjb250ZXh0
Q2xpY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlcwog
ICAgIHJlc3VsdC0+c2V0KFdlYkJpbmRpbmdzOjptYWtlU3RyaW5nQXJyYXkobWFrZU1lbnVJdGVt
U3RyaW5nc0ZvcihsYXN0Q29udGV4dE1lbnUsIG1fZGVsZWdhdGUpKSk7CiB9CiAKLWNsYXNzIE1v
dXNlRG93blRhc2s6IHB1YmxpYyBNZXRob2RUYXNrPEV2ZW50U2VuZGVyPiB7CitjbGFzcyBNb3Vz
ZURvd25UYXNrOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxFdmVudFNlbmRlcj4gewogcHVibGljOgog
ICAgIE1vdXNlRG93blRhc2soRXZlbnRTZW5kZXIqIG9iaiwgY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmcpCi0gICAgICAgIDogTWV0aG9kVGFzazxFdmVudFNlbmRlcj4ob2JqKSwgbV9hcmd1bWVu
dHMoYXJnKSB7IH0KKyAgICAgICAgOiBXZWJNZXRob2RUYXNrPEV2ZW50U2VuZGVyPihvYmopLCBt
X2FyZ3VtZW50cyhhcmcpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgeyBtX29i
amVjdC0+bW91c2VEb3duKG1fYXJndW1lbnRzLCAwKTsgfQogCiBwcml2YXRlOgogICAgIENwcEFy
Z3VtZW50TGlzdCBtX2FyZ3VtZW50czsKIH07CiAKLWNsYXNzIE1vdXNlVXBUYXNrOiBwdWJsaWMg
TWV0aG9kVGFzazxFdmVudFNlbmRlcj4geworY2xhc3MgTW91c2VVcFRhc2s6IHB1YmxpYyBXZWJN
ZXRob2RUYXNrPEV2ZW50U2VuZGVyPiB7CiBwdWJsaWM6CiAgICAgTW91c2VVcFRhc2soRXZlbnRT
ZW5kZXIqIG9iaiwgY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmcpCi0gICAgICAgIDogTWV0aG9k
VGFzazxFdmVudFNlbmRlcj4ob2JqKSwgbV9hcmd1bWVudHMoYXJnKSB7IH0KKyAgICAgICAgOiBX
ZWJNZXRob2RUYXNrPEV2ZW50U2VuZGVyPihvYmopLCBtX2FyZ3VtZW50cyhhcmcpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgeyBtX29iamVjdC0+bW91c2VVcChtX2FyZ3VtZW50
cywgMCk7IH0KIAogcHJpdmF0ZToKQEAgLTg3NywxNCArODc3LDE0IEBAIHByaXZhdGU6CiB2b2lk
IEV2ZW50U2VuZGVyOjpzY2hlZHVsZUFzeW5jaHJvbm91c0NsaWNrKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXRO
dWxsKCk7Ci0gICAgcG9zdFRhc2sobmV3IE1vdXNlRG93blRhc2sodGhpcywgYXJndW1lbnRzKSk7
Ci0gICAgcG9zdFRhc2sobmV3IE1vdXNlVXBUYXNrKHRoaXMsIGFyZ3VtZW50cykpOworICAgIG1f
ZGVsZWdhdGUtPnBvc3RUYXNrKG5ldyBNb3VzZURvd25UYXNrKHRoaXMsIGFyZ3VtZW50cykpOwor
ICAgIG1fZGVsZWdhdGUtPnBvc3RUYXNrKG5ldyBNb3VzZVVwVGFzayh0aGlzLCBhcmd1bWVudHMp
KTsKIH0KIAotY2xhc3MgS2V5RG93blRhc2sgOiBwdWJsaWMgTWV0aG9kVGFzazxFdmVudFNlbmRl
cj4geworY2xhc3MgS2V5RG93blRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxFdmVudFNlbmRl
cj4gewogcHVibGljOgogICAgIEtleURvd25UYXNrKEV2ZW50U2VuZGVyKiBvYmosIGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJnKQotICAgICAgICA6IE1ldGhvZFRhc2s8RXZlbnRTZW5kZXI+KG9i
aiksIG1fYXJndW1lbnRzKGFyZykgeyB9CisgICAgICAgIDogV2ViTWV0aG9kVGFzazxFdmVudFNl
bmRlcj4ob2JqKSwgbV9hcmd1bWVudHMoYXJnKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcnVuSWZW
YWxpZCgpIHsgbV9vYmplY3QtPmtleURvd24obV9hcmd1bWVudHMsIDApOyB9CiAKIHByaXZhdGU6
CkBAIC04OTQsNyArODk0LDcgQEAgcHJpdmF0ZToKIHZvaWQgRXZlbnRTZW5kZXI6OnNjaGVkdWxl
QXN5bmNocm9ub3VzS2V5RG93bihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3Bw
VmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotICAgIHBvc3RUYXNr
KG5ldyBLZXlEb3duVGFzayh0aGlzLCBhcmd1bWVudHMpKTsKKyAgICBtX2RlbGVnYXRlLT5wb3N0
VGFzayhuZXcgS2V5RG93blRhc2sodGhpcywgYXJndW1lbnRzKSk7CiB9CiAKIHZvaWQgRXZlbnRT
ZW5kZXI6OmJlZ2luRHJhZ1dpdGhGaWxlcyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50
cywgQ3BwVmFyaWFudCogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmgKaW5kZXggNjVkZmNjYjhj
MTU1ZTI1NDg4Mjg2ODYxMmJhODIyYzQwMWRlYTExOS4uZDA3ZTE0Y2M2ZjJkMDY3NDQ5OWNkZDdk
Mjg5YmRiMjRmYmU2NjZiMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5oCkBAIC0zOCw5ICszOCw5IEBA
CiAjZGVmaW5lIEV2ZW50U2VuZGVyX2gKIAogI2luY2x1ZGUgIkNwcEJvdW5kQ2xhc3MuaCIKLSNp
bmNsdWRlICJUYXNrLmgiCiAjaW5jbHVkZSAiV2ViRHJhZ09wZXJhdGlvbi5oIgogI2luY2x1ZGUg
IldlYklucHV0RXZlbnQuaCIKKyNpbmNsdWRlICJXZWJUYXNrLmgiCiAjaW5jbHVkZSAicGxhdGZv
cm0vV2ViUG9pbnQuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMzEsNyArMTMxLDcgQEAg
cHVibGljOgogICAgIENwcFZhcmlhbnQgd21TeXNEZWFkQ2hhcjsKICNlbmRpZgogCi0gICAgVGFz
a0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAgICBXZWJUYXNrTGlz
dCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQogCiBwcml2YXRlOgogICAgIFdl
YktpdDo6V2ViVmlldyogd2VidmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQpAQCAtMTY1LDcg
KzE2NSw3IEBAIHByaXZhdGU6CiAgICAgLy8gSGFuZGxlIGEgcmVxdWVzdCB0byBzZW5kIGEgd2hl
ZWwgZXZlbnQuCiAgICAgdm9pZCBoYW5kbGVNb3VzZVdoZWVsKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqLCBib29sIGNvbnRpbnVvdXMpOwogCi0gICAgVGFza0xpc3QgbV90YXNr
TGlzdDsKKyAgICBXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwogCiAgICAgVGVzdERlbGVnYXRlKiBt
X2RlbGVnYXRlOwogICAgIFdlYktpdDo6V2ViVmlldyogbV93ZWJWaWV3OwpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGFzay5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UYXNrLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDgwYmVlZjM0OTkzN2Q2MzU0MGRlZmE5MDY1MzFm
NjEwOGQ3NWE1MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UYXNrLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiVGFzay5oIgotCi0jaW5jbHVkZSAiV2ViS2l0LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2Vi
S2l0UGxhdGZvcm1TdXBwb3J0LmgiCi0KLVdlYlRhc2s6OldlYlRhc2soVGFza0xpc3QqIGxpc3Qp
Ci0gICAgOiBtX3Rhc2tMaXN0KGxpc3QpCi17Ci0gICAgbV90YXNrTGlzdC0+cmVnaXN0ZXJUYXNr
KHRoaXMpOwotfQotCi1XZWJUYXNrOjp+V2ViVGFzaygpCi17Ci0gICAgaWYgKG1fdGFza0xpc3Qp
Ci0gICAgICAgIG1fdGFza0xpc3QtPnVucmVnaXN0ZXJUYXNrKHRoaXMpOwotfQotCi12b2lkIFRh
c2tMaXN0Ojp1bnJlZ2lzdGVyVGFzayhXZWJUYXNrKiB0YXNrKQotewotICAgIHNpemVfdCBpbmRl
eCA9IG1fdGFza3MuZmluZCh0YXNrKTsKLSAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCi0gICAg
ICAgIG1fdGFza3MucmVtb3ZlKGluZGV4KTsKLX0KLQotdm9pZCBUYXNrTGlzdDo6cmV2b2tlQWxs
KCkKLXsKLSAgICB3aGlsZSAoIW1fdGFza3MuaXNFbXB0eSgpKQotICAgICAgICBtX3Rhc2tzWzBd
LT5jYW5jZWwoKTsKLX0KLQotc3RhdGljIHZvaWQgaW52b2tlVGFzayh2b2lkKiBjb250ZXh0KQot
ewotICAgIFdlYlRhc2sqIHRhc2sgPSBzdGF0aWNfY2FzdDxXZWJUYXNrKj4oY29udGV4dCk7Ci0g
ICAgdGFzay0+cnVuKCk7Ci0gICAgZGVsZXRlIHRhc2s7Ci19Ci0KLXZvaWQgcG9zdFRhc2soV2Vi
VGFzayogdGFzaykKLXsKLSAgICBXZWJLaXQ6OndlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jYWxs
T25NYWluVGhyZWFkKGludm9rZVRhc2ssIHN0YXRpY19jYXN0PHZvaWQqPih0YXNrKSk7Ci19Ci0K
LXZvaWQgcG9zdERlbGF5ZWRUYXNrKFdlYlRhc2sqIHRhc2ssIGludDY0X3QgbXMpCi17Ci0gICAg
d2Via2l0X3N1cHBvcnQ6OlBvc3REZWxheWVkVGFzayh0YXNrLCBtcyk7Ci19Ci0KLQpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGFzay5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGFzay5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjMyYzQ3MmIyNzUwNGU1ZmI2MDhkNmJlNDAx
ZmRhNjg4MGI5NzQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rhc2suaAor
KysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFRhc2tfaAotI2RlZmluZSBUYXNr
X2gKLQotI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCi0jaW5jbHVk
ZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotY2xhc3MgVGFza0xp
c3Q7Ci0KLS8vIFdlYlRhc2sgcmVwcmVzZW50cyBhIHRhc2sgd2hpY2ggY2FuIHJ1biBieSBwb3N0
VGFzaygpIG9yIHBvc3REZWxheWVkVGFzaygpLgotLy8gaXQgaXMgbmFtZWQgIldlYlRhc2siLCBu
b3QgIlRhc2siLCB0byBhdm9pZCBjb25mbGlzdCB3aXRoIGJhc2UvdGFzay5oLgotY2xhc3MgV2Vi
VGFzayA6IHB1YmxpYyB3ZWJraXRfc3VwcG9ydDo6VGFza0FkYXB0b3IgewotcHVibGljOgotICAg
IFdlYlRhc2soVGFza0xpc3QqKTsKLSAgICAvLyBUaGUgbWFpbiBjb2RlIG9mIHRoaXMgdGFzay4K
LSAgICAvLyBBbiBpbXBsZW1lbnRhdGlvbiBvZiBydW4oKSBzaG91bGQgcmV0dXJuIGltbWVkaWF0
ZWx5IGlmIGNhbmNlbCgpIHdhcyBjYWxsZWQuCi0gICAgdmlydHVhbCB2b2lkIHJ1bigpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgPSAwOwotICAgIHZpcnR1YWwgfldlYlRhc2soKTsK
LQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgUnVuKCkgeyBydW4oKTsgfQotCi1wcm90ZWN0
ZWQ6Ci0gICAgVGFza0xpc3QqIG1fdGFza0xpc3Q7Ci19OwotCi1jbGFzcyBUYXNrTGlzdCB7Ci1w
dWJsaWM6Ci0gICAgVGFza0xpc3QoKSB7IH0KLSAgICB+VGFza0xpc3QoKSB7IHJldm9rZUFsbCgp
OyB9Ci0gICAgdm9pZCByZWdpc3RlclRhc2soV2ViVGFzayogdGFzaykgeyBtX3Rhc2tzLmFwcGVu
ZCh0YXNrKTsgfQotICAgIHZvaWQgdW5yZWdpc3RlclRhc2soV2ViVGFzayopOwotICAgIHZvaWQg
cmV2b2tlQWxsKCk7Ci0KLXByaXZhdGU6Ci0gICAgVmVjdG9yPFdlYlRhc2sqPiBtX3Rhc2tzOwot
fTsKLQotLy8gQSB0YXNrIGNvbnRhaW5pbmcgYW4gb2JqZWN0IHBvaW50ZXIgb2YgY2xhc3MgVC4g
SXMgaXMgc3VwcG9zZWQgdGhhdAotLy8gcnVuaWZWYWxpZCgpIGNhbGxzIGEgbWVtYmVyIGZ1bmN0
aW9uIG9mIHRoZSBvYmplY3QgcG9pbnRlci4KLS8vIENsYXNzIFQgbXVzdCBoYXZlICJUYXNrTGlz
dCogdGFza0xpc3QoKSIuCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBNZXRob2RUYXNrOiBwdWJs
aWMgV2ViVGFzayB7Ci1wdWJsaWM6Ci0gICAgTWV0aG9kVGFzayhUKiBvYmplY3QpOiBXZWJUYXNr
KG9iamVjdC0+dGFza0xpc3QoKSksIG1fb2JqZWN0KG9iamVjdCkgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIHJ1bigpCi0gICAgewotICAgICAgICBpZiAobV9vYmplY3QpCi0gICAgICAgICAgICBydW5J
ZlZhbGlkKCk7Ci0gICAgfQotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKQotICAgIHsKLSAgICAg
ICAgbV9vYmplY3QgPSAwOwotICAgICAgICBtX3Rhc2tMaXN0LT51bnJlZ2lzdGVyVGFzayh0aGlz
KTsKLSAgICAgICAgbV90YXNrTGlzdCA9IDA7Ci0gICAgfQotICAgIHZpcnR1YWwgdm9pZCBydW5J
ZlZhbGlkKCkgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgVCogbV9vYmplY3Q7Ci19OwotCi12b2lk
IHBvc3RUYXNrKFdlYlRhc2sqKTsKLXZvaWQgcG9zdERlbGF5ZWRUYXNrKFdlYlRhc2sqLCBpbnQ2
NF90IG1zKTsKLQotI2VuZGlmIC8vIFRhc2tfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdERlbGVnYXRlLmggYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0RGVsZWdhdGUuaAppbmRleCAw
NGFlMTgyMTE4OTA3MDM5NDAxMTYwOWYxNWViOTUwNDBmZDE0N2ZhLi45YzZjYWVkMmIyOWM4MmVl
OTVmMTA2ZjUwOTU2YWY4ZjhjODIxNmI3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0RGVsZWdhdGUuaAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0RGVsZWdhdGUuaApAQCAtMzks
NiArMzksMTAgQEAgc3RydWN0IFdlYkNvbnRleHRNZW51RGF0YTsKIGNsYXNzIFdlYkdhbWVwYWRz
OwogfQogCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CitjbGFzcyBXZWJUYXNrOworfQorCiBj
bGFzcyBUZXN0RGVsZWdhdGUgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNvbnRl
eHRNZW51RGF0YSgpID0gMDsKQEAgLTQ4LDYgKzUyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
V2ViS2l0OjpXZWJDb250ZXh0TWVudURhdGEqIGxhc3RDb250ZXh0TWVudURhdGEoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEdhbWVwYWREYXRhKGNvbnN0IFdlYktpdDo6V2ViR2Ft
ZXBhZHMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByaW50TWVzc2FnZShjb25zdCBzdGQ6OnN0
cmluZyYgbWVzc2FnZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhXZWJU
ZXN0UnVubmVyOjpXZWJUYXNrKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwb3N0RGVsYXllZFRh
c2soV2ViVGVzdFJ1bm5lcjo6V2ViVGFzayosIGxvbmcgbG9uZyBtcykgPSAwOwogfTsKIAogI2Vu
ZGlmIC8vIFRlc3REZWxlZ2F0ZV9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKaW5kZXggZjcwNjk0MDFhOGYw
MDQzY2YzZjI3YjdjMWExODRkZmE5NjBlZWNlYy4uMzllMTlkNTczNjVkMDNjNjY4NDFmODdmMjZh
Y2Y0NTQxZWUwN2Q3YSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaApAQCAtMzMsNyArMzMsNiBAQAogI2Rl
ZmluZSBUZXN0UnVubmVyX2gKIAogI2luY2x1ZGUgIkNwcEJvdW5kQ2xhc3MuaCIKLSNpbmNsdWRl
ICJUYXNrLmgiCiAjaW5jbHVkZSAiV2ViRGVsaXZlcmVkSW50ZW50Q2xpZW50LmgiCiAjaW5jbHVk
ZSAiV2ViVGV4dERpcmVjdGlvbi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkFycmF5QnVmZmVy
Vmlldy5oIgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvV2ViVGFzay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9XZWJUYXNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NzUzMWM4MGRlMTQ1NDllYzBmYTFj
MDUxY2M1ZDA4MTBmMmJkNGY4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGFzay5jcHAKQEAgLTAsMCArMSw4MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJUYXNrLmgiCisKKyNpbmNsdWRlICJXZWJL
aXQuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVy
IHsKKworV2ViVGFzazo6V2ViVGFzayhXZWJUYXNrTGlzdCogbGlzdCkKKyAgICA6IG1fdGFza0xp
c3QobGlzdCkKK3sKKyAgICBtX3Rhc2tMaXN0LT5yZWdpc3RlclRhc2sodGhpcyk7Cit9CisKK1dl
YlRhc2s6On5XZWJUYXNrKCkKK3sKKyAgICBpZiAobV90YXNrTGlzdCkKKyAgICAgICAgbV90YXNr
TGlzdC0+dW5yZWdpc3RlclRhc2sodGhpcyk7Cit9CisKK2NsYXNzIFdlYlRhc2tMaXN0OjpQcml2
YXRlIDogcHVibGljIFZlY3RvcjxXZWJUYXNrKj4geworfTsKKworV2ViVGFza0xpc3Q6OldlYlRh
c2tMaXN0KCkKKyAgICA6IG1fcHJpdmF0ZShuZXcgUHJpdmF0ZSkKK3sKK30KKworV2ViVGFza0xp
c3Q6On5XZWJUYXNrTGlzdCgpCit7CisgICAgcmV2b2tlQWxsKCk7CisgICAgZGVsZXRlIG1fcHJp
dmF0ZTsKK30KKwordm9pZCBXZWJUYXNrTGlzdDo6cmVnaXN0ZXJUYXNrKFdlYlRhc2sqIHRhc2sp
Cit7CisgICAgbV9wcml2YXRlLT5hcHBlbmQodGFzayk7Cit9CisKK3ZvaWQgV2ViVGFza0xpc3Q6
OnVucmVnaXN0ZXJUYXNrKFdlYlRhc2sqIHRhc2spCit7CisgICAgc2l6ZV90IGluZGV4ID0gbV9w
cml2YXRlLT5maW5kKHRhc2spOworICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKKyAgICAgICAg
bV9wcml2YXRlLT5yZW1vdmUoaW5kZXgpOworfQorCit2b2lkIFdlYlRhc2tMaXN0OjpyZXZva2VB
bGwoKQoreworICAgIHdoaWxlICghbV9wcml2YXRlLT5pc0VtcHR5KCkpCisgICAgICAgICgqbV9w
cml2YXRlKVswXS0+Y2FuY2VsKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZh
Y2VzLmNwcAppbmRleCA5NDkwZDE4MTM2YmM0MWFhYTEzNjUwZWE0Y2FjY2M5MjgyYTNjMzZmLi4y
N2YzMDY0YTU5NjQxMzJlNjNkY2NiZjg3NjYxYmJhMzBlZjhiYmZhIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNl
cy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
V2ViVGVzdEludGVyZmFjZXMuY3BwCkBAIC02NCw2ICs2NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFdlYkNvbnRleHRNZW51RGF0YSogbGFzdENvbnRleHRNZW51RGF0YSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgdm9pZCBzZXRHYW1lcGFkRGF0YShjb25zdCBXZWJHYW1lcGFkcyYpOwogICAgIHZp
cnR1YWwgdm9pZCBwcmludE1lc3NhZ2UoY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhXZWJUYXNrKik7CisgICAgdmlydHVhbCB2b2lk
IHBvc3REZWxheWVkVGFzayhXZWJUYXNrKiwgbG9uZyBsb25nIG1zKTsKIAogcHJpdmF0ZToKICAg
ICBUZXN0SW50ZXJmYWNlcyBtX2ludGVyZmFjZXM7CkBAIC0xMjksNiArMTMxLDE2IEBAIHZvaWQg
V2ViVGVzdEludGVyZmFjZXM6OkludGVybmFsOjpwcmludE1lc3NhZ2UoY29uc3Qgc3RkOjpzdHJp
bmcmIG1lc3NhZ2UpIGNvbnN0CiAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKG1lc3NhZ2Up
OwogfQogCit2b2lkIFdlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbDo6cG9zdFRhc2soV2ViVGFz
ayogdGFzaykKK3sKKyAgICBtX2RlbGVnYXRlLT5wb3N0VGFzayh0YXNrKTsKK30KKwordm9pZCBX
ZWJUZXN0SW50ZXJmYWNlczo6SW50ZXJuYWw6OnBvc3REZWxheWVkVGFzayhXZWJUYXNrKiB0YXNr
LCBsb25nIGxvbmcgbXMpCit7CisgICAgbV9kZWxlZ2F0ZS0+cG9zdERlbGF5ZWRUYXNrKHRhc2ss
IG1zKTsKK30KKwogV2ViVGVzdEludGVyZmFjZXM6OldlYlRlc3RJbnRlcmZhY2VzKCkKIHsKICAg
ICBtX2ludGVybmFsID0gbmV3IEludGVybmFsOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RTaGVsbC5jcHAKaW5kZXggNDg1NGY1ZWEzMWJkMGE0M2JmODNjYjdkNWQ1YTBlNmQ4
NGVhZGU5NC4uMjY5MmU3NDU4NjBlYjMzOWIzOTBmYWY5NTQ0NTI5ODliZjA1ZTdmMiAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCkBAIC02OCw2ICs2OCw3
IEBACiAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJUZXN0
UnVubmVyOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogLy8gQ29udGVudCBhcmVhIHNpemUgZm9y
IG5ld2x5IGNyZWF0ZWQgd2luZG93cy4KQEAgLTE1NCw3ICsxNTUsNyBAQCBUZXN0U2hlbGw6OlRl
c3RTaGVsbCgpCiB2b2lkIFRlc3RTaGVsbDo6aW5pdGlhbGl6ZSgpCiB7CiAgICAgbV93ZWJQZXJt
aXNzaW9ucyA9IGFkb3B0UHRyKG5ldyBXZWJQZXJtaXNzaW9ucyh0aGlzKSk7Ci0gICAgbV90ZXN0
SW50ZXJmYWNlcyA9IGFkb3B0UHRyKG5ldyBXZWJUZXN0UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNl
cygpKTsKKyAgICBtX3Rlc3RJbnRlcmZhY2VzID0gYWRvcHRQdHIobmV3IFdlYlRlc3RJbnRlcmZh
Y2VzKCkpOwogICAgIG1fdGVzdFJ1bm5lciA9IGFkb3B0UHRyKG5ldyBEUlRUZXN0UnVubmVyKHRo
aXMpKTsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklD
QVRJT05TKQogICAgIG1fbm90aWZpY2F0aW9uUHJlc2VudGVyID0gYWRvcHRQdHIobmV3IE5vdGlm
aWNhdGlvblByZXNlbnRlcih0aGlzKSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwCmluZGV4IGVkMTNmZmE1ODY5
ZTI1NjRiYmUyMzE3OWZhZGZlZDFkMjk0NGI4NmQuLjM4NzhmZjE2NzdhOWM2ZmJlMDhhNGYxYmEw
NGU5NTk2ZjM0ODdlNjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oIgogCiAjaW5jbHVkZSAiTW9ja0NvbnN0cmFp
bnRzLmgiCisjaW5jbHVkZSAiVGFzay5oIgogI2luY2x1ZGUgIldlYkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5oIgogI2luY2x1ZGUgIldlYlVzZXJNZWRpYVJl
cXVlc3QuaCIKQEAgLTQ0LDExICs0NSwxMiBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5l
cjsKIAotY2xhc3MgVXNlck1lZGlhUmVxdWVzdFRhc2sgOiBwdWJsaWMgTWV0aG9kVGFzazxXZWJV
c2VyTWVkaWFDbGllbnRNb2NrPiB7CitjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0VGFzayA6IHB1Ymxp
YyBXZWJNZXRob2RUYXNrPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+IHsKIHB1YmxpYzoKICAgICBV
c2VyTWVkaWFSZXF1ZXN0VGFzayhXZWJVc2VyTWVkaWFDbGllbnRNb2NrKiBvYmplY3QsIGNvbnN0
IFdlYlVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVzY3Jp
cHRvciByZXN1bHQpCi0gICAgICAgIDogTWV0aG9kVGFzazxXZWJVc2VyTWVkaWFDbGllbnRNb2Nr
PihvYmplY3QpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxXZWJVc2VyTWVkaWFDbGllbnRNb2Nr
PihvYmplY3QpCiAgICAgICAgICwgbV9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgICAgICwgbV9yZXN1
bHQocmVzdWx0KQogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaAppbmRleCBmNDM4NzU5NzY2NjFmMmI3ZTA3NmIy
NjFmNWYyZTBhZmIzNmUyOTg4Li5lZjRjYjUxZDFhZmNmZGYzZjA1MjI1ZDc4MGI2MjVhMDlhMjQ0
NTRkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVk
aWFDbGllbnRNb2NrLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNl
ck1lZGlhQ2xpZW50TW9jay5oCkBAIC0zMyw3ICszMyw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogCi0jaW5jbHVkZSAiVGVzdFJ1bm5lci9zcmMvVGFzay5oIgorI2luY2x1ZGUgIldl
YlRhc2suaCIKICNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnQuaCIKICNpbmNsdWRlICJ3ZWJr
aXQvc3VwcG9ydC90ZXN0X21lZGlhX3N0cmVhbV9jbGllbnQuaCIKICNpbmNsdWRlIDxwdWJsaWMv
V2ViQ29tbW9uLmg+CkBAIC01MCwxMiArNTAsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVz
dCYpOwogCiAgICAgLy8gVGFzayByZWxhdGVkIG1ldGhvZHMKLSAgICBUYXNrTGlzdCogdGFza0xp
c3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQorICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tM
aXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CiAKIHByaXZhdGU6CiAgICAg
V2ViVXNlck1lZGlhQ2xpZW50TW9jaygpIHsgfQogCi0gICAgVGFza0xpc3QgbV90YXNrTGlzdDsK
KyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwogfTsKIAogI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggODU4YzA2MjZlMzhiZTkxMjFjMDdiODJkMzYyZTA4Mjcx
OTI1Mjk4YS4uNmY0N2YwODcxMjVjYjYwYzVhMDNjOGY5NDc4ODA3OTFkYzhjZTA1ZSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgIk1vY2tHcmFtbWFyQ2hlY2suaCIKICNpbmNsdWRlICJNb2NrV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTW9ja1dlYlNwZWVjaFJlY29nbml6
ZXIuaCIKKyNpbmNsdWRlICJUYXNrLmgiCiAjaW5jbHVkZSAiVGVzdE5hdmlnYXRpb25Db250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiVGVzdFNoZWxsLmgiCiAjaW5jbHVkZSAiVGVzdFdlYlBsdWdpbi5o
IgpAQCAtODgsNiArODksNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lcjsKIHVzaW5nIG5h
bWVzcGFjZSBzdGQ7CiAKIHN0YXRpYyBjb25zdCBpbnQgc2NyZWVuV2lkdGggPSAxOTIwOwpAQCAt
MTQ4Myw2ICsxNDg1LDE2IEBAIHZvaWQgV2ViVmlld0hvc3Q6OnByaW50TWVzc2FnZShjb25zdCBz
dGQ6OnN0cmluZyYgbWVzc2FnZSkgY29uc3QKICAgICBwcmludGYoIiVzIiwgbWVzc2FnZS5jX3N0
cigpKTsKIH0KIAordm9pZCBXZWJWaWV3SG9zdDo6cG9zdFRhc2soV2ViVGFzayogdGFzaykKK3sK
KyAgICA6OnBvc3RUYXNrKHRhc2spOworfQorCit2b2lkIFdlYlZpZXdIb3N0Ojpwb3N0RGVsYXll
ZFRhc2soV2ViVGFzayogdGFzaywgbG9uZyBsb25nIG1zKQoreworICAgIDo6cG9zdERlbGF5ZWRU
YXNrKHRhc2ssIG1zKTsKK30KKwogLy8gUHVibGljIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBXZWJWaWV3SG9z
dDo6V2ViVmlld0hvc3QoVGVzdFNoZWxsKiBzaGVsbCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5oCmluZGV4IDQxMGQxOWRmNjA5NjRiZWNjMzg3MjNkZjVkNDA1
M2E5MmM4OTYxODYuLjRkNmM1MmVhZTBjM2QzZTJkNzk3OWE3ZTI3ZWQ4YTU3MTIyNTk0NTMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtMzMsMTMg
KzMzLDEzIEBACiAKICNpbmNsdWRlICJNb2NrU3BlbGxDaGVjay5oIgogI2luY2x1ZGUgIlRlc3RO
YXZpZ2F0aW9uQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIlRlc3RSdW5uZXIvc3JjL1Rhc2suaCIK
ICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiV2Vi
Q3Vyc29ySW5mby5oIgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
SW50ZW50UmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYlByZXJlbmRlcmVyQ2xpZW50LmgiCiAjaW5j
bHVkZSAiV2ViU3BlbGxDaGVja0NsaWVudC5oIgorI2luY2x1ZGUgIldlYlRhc2suaCIKICNpbmNs
dWRlICJXZWJUZXN0RGVsZWdhdGUuaCIKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTEzNiw2ICsxMzYsOCBAQCBjbGFzcyBXZWJWaWV3SG9z
dCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYkZyYW1l
Q2xpZW50LAogICAgIHZpcnR1YWwgdm9pZCBmaWxsU3BlbGxpbmdTdWdnZXN0aW9uTGlzdChjb25z
dCBXZWJLaXQ6OldlYlN0cmluZyYgd29yZCwgV2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjpXZWJT
dHJpbmc+KiBzdWdnZXN0aW9ucykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldEdhbWVw
YWREYXRhKGNvbnN0IFdlYktpdDo6V2ViR2FtZXBhZHMmKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgcHJpbnRNZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soV2ViVGVzdFJ1bm5lcjo6V2ViVGFzayop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwb3N0RGVsYXllZFRhc2soV2ViVGVzdFJ1bm5l
cjo6V2ViVGFzayosIGxvbmcgbG9uZyBtcykgT1ZFUlJJREU7CiAKICAgICAvLyBOYXZpZ2F0aW9u
SG9zdAogICAgIHZpcnR1YWwgYm9vbCBuYXZpZ2F0ZShjb25zdCBUZXN0TmF2aWdhdGlvbkVudHJ5
JiwgYm9vbCByZWxvYWQpOwpAQCAtMjg3LDE5ICsyODksMTkgQEAgY2xhc3MgV2ViVmlld0hvc3Qg
OiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNs
aWVudCwKICAgICAvLyBHZW9sb2NhdGlvbiBjbGllbnQgbW9ja3MgZm9yIERSVFRlc3RSdW5uZXIK
ICAgICBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayogZ2VvbG9jYXRpb25DbGllbnRN
b2NrKCk7CiAKLSAgICAvLyBQZW5kaW5nIHRhc2sgbGlzdCwgTm90ZSB0YWh0IHRoZSBtZXRob2Qg
aXMgcmVmZXJyZWQgZnJvbSBNZXRob2RUYXNrIGNsYXNzLgotICAgIFRhc2tMaXN0KiB0YXNrTGlz
dCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CisgICAgLy8gUGVuZGluZyB0YXNrIGxpc3QsIE5v
dGUgdGFodCB0aGUgbWV0aG9kIGlzIHJlZmVycmVkIGZyb20gV2ViTWV0aG9kVGFzayBjbGFzcy4K
KyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90
YXNrTGlzdDsgfQogCiAgICAgLy8gVGhlIGN1cnJlbnQgd2ViIGludGVudHMgcmVxdWVzdC4KICAg
ICBXZWJLaXQ6OldlYkludGVudFJlcXVlc3QqIGN1cnJlbnRJbnRlbnRSZXF1ZXN0KCkgeyByZXR1
cm4gJm1fY3VycmVudFJlcXVlc3Q7IH0KIAogcHJpdmF0ZToKIAotICAgIGNsYXNzIEhvc3RNZXRo
b2RUYXNrIDogcHVibGljIE1ldGhvZFRhc2s8V2ViVmlld0hvc3Q+IHsKKyAgICBjbGFzcyBIb3N0
TWV0aG9kVGFzayA6IHB1YmxpYyBXZWJUZXN0UnVubmVyOjpXZWJNZXRob2RUYXNrPFdlYlZpZXdI
b3N0PiB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIHZvaWQgKFdlYlZpZXdIb3N0Ojoq
Q2FsbGJhY2tNZXRob2RUeXBlKSgpOwogICAgICAgICBIb3N0TWV0aG9kVGFzayhXZWJWaWV3SG9z
dCogb2JqZWN0LCBDYWxsYmFja01ldGhvZFR5cGUgY2FsbGJhY2spCi0gICAgICAgICAgICA6IE1l
dGhvZFRhc2s8V2ViVmlld0hvc3Q+KG9iamVjdCkKKyAgICAgICAgICAgIDogV2ViVGVzdFJ1bm5l
cjo6V2ViTWV0aG9kVGFzazxXZWJWaWV3SG9zdD4ob2JqZWN0KQogICAgICAgICAgICAgLCBtX2Nh
bGxiYWNrKGNhbGxiYWNrKQogICAgICAgICB7IH0KIApAQCAtNDQyLDcgKzQ0NCw3IEBAIHByaXZh
dGU6CiAgICAgV2ViS2l0OjpXZWJTdHJpbmcgbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5n
OwogICAgIFdlYktpdDo6V2ViVGV4dENoZWNraW5nQ29tcGxldGlvbiogbV9sYXN0UmVxdWVzdGVk
VGV4dENoZWNraW5nQ29tcGxldGlvbjsKIAotICAgIFRhc2tMaXN0IG1fdGFza0xpc3Q7CisgICAg
V2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QgbV90YXNrTGlzdDsKICAgICBWZWN0b3I8V2ViS2l0
OjpXZWJXaWRnZXQqPiBtX3BvcHVwbWVudXM7CiAKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>