<?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>117523</bug_id>
          
          <creation_ts>2013-06-11 15:04:41 -0700</creation_ts>
          <short_desc>[WK2] Proof of concept to inject custom JavaScript objects on WebWorker context.</short_desc>
          <delta_ts>2013-11-29 10:58:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>UNCONFIRMED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Tullio Lucena">tullio.lucena</reporter>
          <assigned_to name="Tullio Lucena">tullio.lucena</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hugo.lima</cc>
    
    <cc>kenneth</cc>
    
    <cc>lauro.neto</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>marcelo.lira</cc>
    
    <cc>philn</cc>
    
    <cc>rafael.lobo</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tullio.lucena</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>899312</commentid>
    <comment_count>0</comment_count>
    <who name="Tullio Lucena">tullio.lucena</who>
    <bug_when>2013-06-11 15:04:41 -0700</bug_when>
    <thetext>Were added callbacks of initialize and terminate for WebWorkers.
An API test was added to check the these callbacks. It verifies the two types of workers, dedicated and shared.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899313</commentid>
    <comment_count>1</comment_count>
      <attachid>204363</attachid>
    <who name="Tullio Lucena">tullio.lucena</who>
    <bug_when>2013-06-11 15:07:16 -0700</bug_when>
    <thetext>Created attachment 204363
Patch with the changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899315</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-11 15:10:22 -0700</bug_when>
    <thetext>Attachment 204363 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/bindings/js/WorkerScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/js/WorkerScriptController.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFrame.h&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/TestWebKitAPI/PlatformEfl.cmake&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/WebWorker.cpp&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/WebWorkerSharedTest.html&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/WebWorkerSharedTest.js&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/WebWorkerTest.html&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/WebWorkerTest.js&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/WebWorker_Bundle.cpp&apos;]&quot; exit_code: 1
Source/WebKit2/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:41:  Alphabetical sorting problem.  [build/include_order] [4]
Tools/TestWebKitAPI/Tests/WebKit2/WebWorker.cpp:53:  Missing space before ( in if(  [whitespace/parens] [5]
Tools/TestWebKitAPI/Tests/WebKit2/WebWorker.cpp:57:  Missing space before ( in if(  [whitespace/parens] [5]
Tools/TestWebKitAPI/Tests/WebKit2/WebWorker_Bundle.cpp:67:  Missing space before ( in if(  [whitespace/parens] [5]
Source/WebCore/bindings/js/WorkerScriptController.h:87:  The parameter name &quot;callback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/WorkerScriptController.h:89:  The parameter name &quot;callback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Tools/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 9 in 14 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>899318</commentid>
    <comment_count>3</comment_count>
      <attachid>204364</attachid>
    <who name="Tullio Lucena">tullio.lucena</who>
    <bug_when>2013-06-11 15:30:24 -0700</bug_when>
    <thetext>Created attachment 204364
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899330</commentid>
    <comment_count>4</comment_count>
      <attachid>204364</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-11 16:09:19 -0700</bug_when>
    <thetext>Comment on attachment 204364
Patch

Attachment 204364 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/660923</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899346</commentid>
    <comment_count>5</comment_count>
      <attachid>204364</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-06-11 17:55:30 -0700</bug_when>
    <thetext>Comment on attachment 204364
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        [WK2][EFL] Proof of concept to inject custom JavaScript objects on WebWorker context.

I think this patch is for common WK2 ports rather than EFL WK2 port.

&gt; Source/WebCore/ChangeLog:7
&gt; +

Missing description.

&gt; Source/WebKit2/ChangeLog:7
&gt; +

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899386</commentid>
    <comment_count>6</comment_count>
      <attachid>204364</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-11 19:58:41 -0700</bug_when>
    <thetext>Comment on attachment 204364
Patch

Attachment 204364 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/738583</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900175</commentid>
    <comment_count>7</comment_count>
    <who name="Tullio Lucena">tullio.lucena</who>
    <bug_when>2013-06-13 10:20:07 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to comment #5)
&gt; (From update of attachment 204364 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=204364&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        [WK2][EFL] Proof of concept to inject custom JavaScript objects on WebWorker context.
&gt; 
&gt; I think this patch is for common WK2 ports rather than EFL WK2 port.
&gt; 
I put the [EFL] because I changed a build file from EFL to run the API test. But I agreed with you, this is a change for all WK2, and removed this tag from summary.
&gt; &gt; Source/WebCore/ChangeLog:7
&gt; &gt; +
&gt; 
&gt; Missing description.
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:7
&gt; &gt; +
&gt; 
&gt; ditto.
I will put a description of the bug on a next patch.


I&apos;m working on fix the error at mac/mac-wk2 ews error to submit a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900270</commentid>
    <comment_count>8</comment_count>
      <attachid>204638</attachid>
    <who name="Tullio Lucena">tullio.lucena</who>
    <bug_when>2013-06-13 13:27:25 -0700</bug_when>
    <thetext>Created attachment 204638
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900278</commentid>
    <comment_count>9</comment_count>
      <attachid>204638</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-13 14:03:37 -0700</bug_when>
    <thetext>Comment on attachment 204638
Patch

Attachment 204638 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/899052</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900290</commentid>
    <comment_count>10</comment_count>
      <attachid>204638</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-06-13 14:43:49 -0700</bug_when>
    <thetext>Comment on attachment 204638
Patch

Attachment 204638 did not pass gtk-wk2-ews (gtk-wk2):
Output: http://webkit-queues.appspot.com/results/874066</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900302</commentid>
    <comment_count>11</comment_count>
      <attachid>204638</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-13 15:34:49 -0700</bug_when>
    <thetext>Comment on attachment 204638
Patch

Attachment 204638 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/905006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902667</commentid>
    <comment_count>12</comment_count>
      <attachid>205214</attachid>
    <who name="Tullio Lucena">tullio.lucena</who>
    <bug_when>2013-06-21 14:11:42 -0700</bug_when>
    <thetext>Created attachment 205214
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902673</commentid>
    <comment_count>13</comment_count>
      <attachid>205214</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-21 14:21:33 -0700</bug_when>
    <thetext>Comment on attachment 205214
Patch

Attachment 205214 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/963075</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902680</commentid>
    <comment_count>14</comment_count>
      <attachid>205214</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-21 14:38:00 -0700</bug_when>
    <thetext>Comment on attachment 205214
Patch

Attachment 205214 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/884619</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909542</commentid>
    <comment_count>15</comment_count>
      <attachid>206940</attachid>
    <who name="Tullio Lucena">tullio.lucena</who>
    <bug_when>2013-07-17 18:08:50 -0700</bug_when>
    <thetext>Created attachment 206940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909547</commentid>
    <comment_count>16</comment_count>
      <attachid>206940</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-07-17 18:16:57 -0700</bug_when>
    <thetext>Comment on attachment 206940
Patch

Attachment 206940 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1100328</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909550</commentid>
    <comment_count>17</comment_count>
      <attachid>206940</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-07-17 18:38:19 -0700</bug_when>
    <thetext>Comment on attachment 206940
Patch

Attachment 206940 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1090709</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909551</commentid>
    <comment_count>18</comment_count>
    <who name="Tullio Lucena">tullio.lucena</who>
    <bug_when>2013-07-17 18:49:52 -0700</bug_when>
    <thetext>The API test is running and passing on GTK and EFL ports.

I don&apos;t have a mac build system available, so could someone help me with this build problem and run the test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954826</commentid>
    <comment_count>19</comment_count>
      <attachid>218024</attachid>
    <who name="Tullio Lucena">tullio.lucena</who>
    <bug_when>2013-11-28 14:01:42 -0800</bug_when>
    <thetext>Created attachment 218024
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954830</commentid>
    <comment_count>20</comment_count>
      <attachid>218024</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-28 14:31:26 -0800</bug_when>
    <thetext>Comment on attachment 218024
Patch

Attachment 218024 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/39228028</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954832</commentid>
    <comment_count>21</comment_count>
      <attachid>218024</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-11-28 14:41:44 -0800</bug_when>
    <thetext>Comment on attachment 218024
Patch

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

&gt; Tools/TestWebKitAPI/PlatformEfl.cmake:57
&gt; +    ${TESTWEBKITAPI_DIR}/Tests/WebKit2/WebWorker_Bundle.cpp

Wrong alphabetical order.

&gt; Tools/TestWebKitAPI/PlatformEfl.cmake:100
&gt; +    WebWorker

Generally, lower case is placed below upper case.

&gt; Tools/TestWebKitAPI/Tests/WebKit2/WebWorker_Bundle.cpp:35
&gt; +#include &lt;cstdio&gt;

Add a new line.

&gt; Tools/TestWebKitAPI/Tests/WebKit2/WebWorker_Bundle.cpp:76
&gt; +    WebWorkerTest(const std::string&amp; identifier)

explicit ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954833</commentid>
    <comment_count>22</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-11-28 14:42:30 -0800</bug_when>
    <thetext>This patch need to be reviewed by WK2 owner. Probably, Sam or Benjamin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954836</commentid>
    <comment_count>23</comment_count>
      <attachid>218024</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-28 14:54:42 -0800</bug_when>
    <thetext>Comment on attachment 218024
Patch

Attachment 218024 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/39258032</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954855</commentid>
    <comment_count>24</comment_count>
      <attachid>218024</attachid>
    <who name="Tullio Lucena">tullio.lucena</who>
    <bug_when>2013-11-28 17:52:12 -0800</bug_when>
    <thetext>Comment on attachment 218024
Patch

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

Thanks for your comments and for have added others reviewers.
I will fix these mistakes now.

&gt;&gt; Tools/TestWebKitAPI/PlatformEfl.cmake:57
&gt;&gt; +    ${TESTWEBKITAPI_DIR}/Tests/WebKit2/WebWorker_Bundle.cpp
&gt; 
&gt; Wrong alphabetical order.

When I run the webkit-check-style, the way it is, there&apos;s no alphabetical order error.

In the other place I have these errors:

Tools/TestWebKitAPI/PlatformEfl.cmake:58:  Alphabetical sorting problem. &quot;${TESTWEBKITAPI_DIR}/Tests/WebKit2/WebWorker_Bundle.cpp&quot; should be before &quot;${TESTWEBKITAPI_DIR}/Tests/WebKit2/CoordinatedGraphics/WKViewIsActiveSetIsActive_Bundle.cpp&quot;.  [list/order] [5]

Tools/TestWebKitAPI/PlatformEfl.cmake:59:  Alphabetical sorting problem. &quot;${TESTWEBKITAPI_DIR}/Tests/WebKit2/WebWorker_Bundle.cpp&quot; should be before &quot;${TESTWEBKITAPI_DIR}/Tests/WebKit2/efl/WKViewClientWebProcessCallbacks_Bundle.cpp&quot;.  [list/order] [5]

&gt;&gt; Tools/TestWebKitAPI/PlatformEfl.cmake:100
&gt;&gt; +    WebWorker
&gt; 
&gt; Generally, lower case is placed below upper case.

Ok.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKit2/WebWorker_Bundle.cpp:35
&gt;&gt; +#include &lt;cstdio&gt;
&gt; 
&gt; Add a new line.

Ok.

&gt; Tools/TestWebKitAPI/Tests/WebKit2/WebWorker_Bundle.cpp:36
&gt; +using namespace std;

This using is useless, I will remove it too.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKit2/WebWorker_Bundle.cpp:76
&gt;&gt; +    WebWorkerTest(const std::string&amp; identifier)
&gt; 
&gt; explicit ?

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954857</commentid>
    <comment_count>25</comment_count>
      <attachid>218029</attachid>
    <who name="Tullio Lucena">tullio.lucena</who>
    <bug_when>2013-11-28 18:05:28 -0800</bug_when>
    <thetext>Created attachment 218029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954859</commentid>
    <comment_count>26</comment_count>
      <attachid>218029</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-28 18:39:50 -0800</bug_when>
    <thetext>Comment on attachment 218029
Patch

Attachment 218029 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/39318061</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954861</commentid>
    <comment_count>27</comment_count>
      <attachid>218029</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-28 19:03:31 -0800</bug_when>
    <thetext>Comment on attachment 218029
Patch

Attachment 218029 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/39368014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955003</commentid>
    <comment_count>28</comment_count>
      <attachid>218029</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-11-29 10:58:11 -0800</bug_when>
    <thetext>Comment on attachment 218029
Patch

I am not completely sure of the utility of this, so please add use cases.

Some general concerns:
- Use of global callback functions is a bad design.  Please use a per-object client interface.
- I am not clear on how this would work for SharedWorkers since the InjectedBundle will probably not run in shared worker processes (at least as currently designed).
- The use of a boolean to indicate Dedicated/Shared should be avoided. Please use an enum to allow for more types of workers in the future.
- The callbacks need more contextual information.  For instance, in the non-worker versions of these, we pass a WebFrame, which includes things like the URL.
- This should be modeled on the DOMWindowExtension concept, so that it can deal with being the page cache. 
- Perhaps Workers should have their own separate bundle they load. That would allow for a clear threading model and work for Shared workers.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204363</attachid>
            <date>2013-06-11 15:07:16 -0700</date>
            <delta_ts>2013-06-11 15:30:16 -0700</delta_ts>
            <desc>Patch with the changes.</desc>
            <filename>a.diff</filename>
            <type>text/plain</type>
            <size>22137</size>
            <attacher name="Tullio Lucena">tullio.lucena</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjMWE3YjA0Li41ZjE2YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTMtMDYtMTEgIFR1bGxpbyBMdWNlbmEgIDx0dWxsaW8ubHVjZW5hQG9wZW5ib3NzYS5v
cmc+CisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIChPT1BTISkuCisgICAgICAg
IE5lZWQgdGhlIGJ1ZyBVUkwgKE9PUFMhKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6fldvcmtlclNjcmlwdENvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRJbml0U2NyaXB0Q2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdENh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldFRl
cm1pbmF0ZVNjcmlwdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENv
bnRyb2xsZXI6OnRlcm1pbmF0ZVNjcmlwdENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmg6CisKIDIwMTMtMDYtMTEgIEVyaWMgQ2FybHNvbiAg
PGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gVXBkYXRlIHRleHQgdHJh
Y2sgbWVudQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3Jp
cHRDb250cm9sbGVyLmNwcAppbmRleCBjM2FkNThjLi5lNzZlOWRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAt
NjYsNiArNjYsOSBAQCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJTY3JpcHRDb250cm9s
bGVyKFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQpCiAKIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXI6On5Xb3JrZXJTY3JpcHRDb250cm9sbGVyKCkKIHsKKyAgICBpZiAodGVybWluYXRlU2NyaXB0
Q2FsbGJhY2soKSkKKyAgICAgICAgdGVybWluYXRlU2NyaXB0Q2FsbGJhY2soKShtX3dvcmtlckNv
bnRleHRXcmFwcGVyLT5nbG9iYWxFeGVjKCksIG1fd29ya2VyQ29udGV4dC0+aXNEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0KCkpOworCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0oKSk7CiAgICAgbV93
b3JrZXJDb250ZXh0V3JhcHBlci5jbGVhcigpOwogICAgIG1fdm0uY2xlYXIoKTsKQEAgLTEwOSw2
ICsxMTIsOSBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoKQogICAg
IH0KICAgICBBU1NFUlQobV93b3JrZXJDb250ZXh0V3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkgPT0g
bV93b3JrZXJDb250ZXh0V3JhcHBlcik7CiAgICAgQVNTRVJUKGFzT2JqZWN0KG1fd29ya2VyQ29u
dGV4dFdyYXBwZXItPnByb3RvdHlwZSgpKS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJDb250
ZXh0V3JhcHBlcik7CisKKyAgICBpZiAoaW5pdFNjcmlwdENhbGxiYWNrKCkpCisgICAgICAgIGlu
aXRTY3JpcHRDYWxsYmFjaygpKG1fd29ya2VyQ29udGV4dFdyYXBwZXItPmdsb2JhbEV4ZWMoKSwg
bV93b3JrZXJDb250ZXh0LT5pc0RlZGljYXRlZFdvcmtlckNvbnRleHQoKSk7CiB9CiAKIHZvaWQg
V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYg
c291cmNlQ29kZSkKQEAgLTIwNSw2ICsyMTEsMjkgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9s
bGVyOjpkZXRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKICAgICBkZWJ1Z2dl
ci0+ZGV0YWNoKG1fd29ya2VyQ29udGV4dFdyYXBwZXItPmdsb2JhbE9iamVjdCgpKTsKIH0KIAor
V29ya2VyU2NyaXB0Q2FsbGJhY2sgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6bV9pbml0U2NyaXB0
Q2FsbGJhY2sgPSAwOworV29ya2VyU2NyaXB0Q2FsbGJhY2sgV29ya2VyU2NyaXB0Q29udHJvbGxl
cjo6bV90ZXJtaW5hdGVTY3JpcHRDYWxsYmFjayA9IDA7CisKK3ZvaWQgV29ya2VyU2NyaXB0Q29u
dHJvbGxlcjo6c2V0SW5pdFNjcmlwdENhbGxiYWNrKFdvcmtlclNjcmlwdENhbGxiYWNrIGNhbGxi
YWNrKQoreworICAgIG1faW5pdFNjcmlwdENhbGxiYWNrID0gY2FsbGJhY2s7Cit9CisKK1dvcmtl
clNjcmlwdENhbGxiYWNrIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRDYWxsYmFj
aygpCit7CisgICAgcmV0dXJuIG1faW5pdFNjcmlwdENhbGxiYWNrOworfQorCit2b2lkIFdvcmtl
clNjcmlwdENvbnRyb2xsZXI6OnNldFRlcm1pbmF0ZVNjcmlwdENhbGxiYWNrKFdvcmtlclNjcmlw
dENhbGxiYWNrIGNhbGxiYWNrKQoreworICAgIG1fdGVybWluYXRlU2NyaXB0Q2FsbGJhY2sgPSBj
YWxsYmFjazsKK30KKworV29ya2VyU2NyaXB0Q2FsbGJhY2sgV29ya2VyU2NyaXB0Q29udHJvbGxl
cjo6dGVybWluYXRlU2NyaXB0Q2FsbGJhY2soKQoreworICAgIHJldHVybiBtX3Rlcm1pbmF0ZVNj
cmlwdENhbGxiYWNrOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuaAppbmRleCBjZmYwY2I1Li5hNmIyYWNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCkBAIC00
MCw2ICs0MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAg
ICB0eXBlZGVmIHZvaWQgKCpXb3JrZXJTY3JpcHRDYWxsYmFjaykoSlNDOjpFeGVjU3RhdGUqLCBi
b29sKTsKKwogICAgIGNsYXNzIEpTV29ya2VyQ29udGV4dDsKICAgICBjbGFzcyBTY3JpcHRTb3Vy
Y2VDb2RlOwogICAgIGNsYXNzIFNjcmlwdFZhbHVlOwpAQCAtODIsNiArODQsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIq
KTsKICAgICAgICAgdm9pZCBkZXRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKik7CiAKKyAgICAg
ICAgc3RhdGljIHZvaWQgc2V0SW5pdFNjcmlwdENhbGxiYWNrKFdvcmtlclNjcmlwdENhbGxiYWNr
IGNhbGxiYWNrKTsKKyAgICAgICAgc3RhdGljIFdvcmtlclNjcmlwdENhbGxiYWNrIGluaXRTY3Jp
cHRDYWxsYmFjaygpOworICAgICAgICBzdGF0aWMgdm9pZCBzZXRUZXJtaW5hdGVTY3JpcHRDYWxs
YmFjayhXb3JrZXJTY3JpcHRDYWxsYmFjayBjYWxsYmFjayk7CisgICAgICAgIHN0YXRpYyBXb3Jr
ZXJTY3JpcHRDYWxsYmFjayB0ZXJtaW5hdGVTY3JpcHRDYWxsYmFjaygpOwogICAgIHByaXZhdGU6
CiAgICAgICAgIHZvaWQgaW5pdFNjcmlwdElmTmVlZGVkKCkKICAgICAgICAgewpAQCAtOTUsNiAr
MTAxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBKU0M6OlN0cm9uZzxKU1dvcmtl
ckNvbnRleHQ+IG1fd29ya2VyQ29udGV4dFdyYXBwZXI7CiAgICAgICAgIGJvb2wgbV9leGVjdXRp
b25Gb3JiaWRkZW47CiAgICAgICAgIG11dGFibGUgTXV0ZXggbV9zY2hlZHVsZWRUZXJtaW5hdGlv
bk11dGV4OworCisgICAgICAgIHN0YXRpYyBXb3JrZXJTY3JpcHRDYWxsYmFjayBtX2luaXRTY3Jp
cHRDYWxsYmFjazsKKyAgICAgICAgc3RhdGljIFdvcmtlclNjcmlwdENhbGxiYWNrIG1fdGVybWlu
YXRlU2NyaXB0Q2FsbGJhY2s7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IGExZjEzYzIuLmNiNTg3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxMy0wNi0xMSAgVHVsbGlvIEx1Y2VuYSAgPHR1bGxpby5sdWNlbmFAb3BlbmJvc3NhLm9yZz4K
KworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gKE9PUFMhKS4KKyAgICAgICAgTmVl
ZCB0aGUgYnVnIFVSTCAoT09QUyEpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUZyYW1lLmNwcDoKKyAgICAgICAgKGxvY2FsV29ya2VyU2NyaXB0SW5pdENhbGxiYWNrKToKKyAg
ICAgICAgKFdLQnVuZGxlRnJhbWVTZXRXb3JrZXJJbml0aWFsaXplQ2FsbGJhY2spOgorICAgICAg
ICAobG9jYWxXb3JrZXJTY3JpcHRUZXJtaW5hdGVDYWxsYmFjayk6CisgICAgICAgIChXS0J1bmRs
ZUZyYW1lU2V0V29ya2VyVGVybWluYXRlQ2FsbGJhY2spOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5oOgorCiAyMDEzLTA2LTA2ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgdGhlIGZy
YW1ld29yayBidW5kbGUgaWRlbnRpZmllciBmb3IgdGhlIFdlYiBJbnNwZWN0b3IuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZUZyYW1lLmNwcAppbmRleCA2MWIzODA4Li5jZTc0MTNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKQEAgLTM4LDYgKzM4LDkgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KIAorI2lu
Y2x1ZGUgIkphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuaD4KKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCkBAIC0xMTQsNiArMTE3LDQyIEBAIEpTVmFsdWVSZWYgV0tCdW5k
bGVGcmFtZUdldEphdmFTY3JpcHRXcmFwcGVyRm9yTm9kZUZvcldvcmxkKFdLQnVuZGxlRnJhbWVS
ZWYgZnJhCiAgICAgcmV0dXJuIHRvSW1wbChmcmFtZVJlZiktPmpzV3JhcHBlckZvcldvcmxkKHRv
SW1wbChub2RlSGFuZGxlUmVmKSwgdG9JbXBsKHdvcmxkUmVmKSk7CiB9CiAKK3N0YXRpYyBXS0J1
bmRsZUZyYW1lV29ya2VyU2NyaXB0Q2FsbGJhY2sgc19sb2NhbFdvcmtlclNjcmlwdEluaXRDYWxs
YmFjazsKKworc3RhdGljIHZvaWQgbG9jYWxXb3JrZXJTY3JpcHRJbml0Q2FsbGJhY2soSlNDOjpF
eGVjU3RhdGUqIGV4ZWNTdGF0ZSwgYm9vbCBpc0RlZGljYXRlZCkKK3sKKyAgICBzX2xvY2FsV29y
a2VyU2NyaXB0SW5pdENhbGxiYWNrKHRvUmVmKGV4ZWNTdGF0ZSksIGlzRGVkaWNhdGVkKTsKK30K
Kwordm9pZCBXS0J1bmRsZUZyYW1lU2V0V29ya2VySW5pdGlhbGl6ZUNhbGxiYWNrKFdLQnVuZGxl
RnJhbWVXb3JrZXJTY3JpcHRDYWxsYmFjayBjYWxsYmFjaykKK3sKKyNpZiBFTkFCTEUoV09SS0VS
UykKKyAgICBpZiAoY2FsbGJhY2spIHsKKyAgICAgICAgc19sb2NhbFdvcmtlclNjcmlwdEluaXRD
YWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRJ
bml0U2NyaXB0Q2FsbGJhY2sobG9jYWxXb3JrZXJTY3JpcHRJbml0Q2FsbGJhY2spOworICAgIH0g
ZWxzZQorICAgICAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRJbml0U2NyaXB0Q2FsbGJh
Y2soMCk7CisjZW5kaWYKK30KKworc3RhdGljIFdLQnVuZGxlRnJhbWVXb3JrZXJTY3JpcHRDYWxs
YmFjayBzX2xvY2FsV29ya2VyU2NyaXB0VGVybWluYXRlQ2FsbGJhY2s7CisKK3N0YXRpYyB2b2lk
IGxvY2FsV29ya2VyU2NyaXB0VGVybWluYXRlQ2FsbGJhY2soSlNDOjpFeGVjU3RhdGUqIGV4ZWNT
dGF0ZSwgYm9vbCBpc0RlZGljYXRlZCkKK3sKKyAgICBzX2xvY2FsV29ya2VyU2NyaXB0VGVybWlu
YXRlQ2FsbGJhY2sodG9SZWYoZXhlY1N0YXRlKSwgaXNEZWRpY2F0ZWQpOworfQorCit2b2lkIFdL
QnVuZGxlRnJhbWVTZXRXb3JrZXJUZXJtaW5hdGVDYWxsYmFjayhXS0J1bmRsZUZyYW1lV29ya2Vy
U2NyaXB0Q2FsbGJhY2sgY2FsbGJhY2spCit7CisjaWYgRU5BQkxFKFdPUktFUlMpCisgICAgaWYg
KGNhbGxiYWNrKSB7CisgICAgICAgIHNfbG9jYWxXb3JrZXJTY3JpcHRUZXJtaW5hdGVDYWxsYmFj
ayA9IGNhbGxiYWNrOworICAgICAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRUZXJtaW5h
dGVTY3JpcHRDYWxsYmFjayhsb2NhbFdvcmtlclNjcmlwdFRlcm1pbmF0ZUNhbGxiYWNrKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0VGVybWluYXRlU2Ny
aXB0Q2FsbGJhY2soMCk7CisjZW5kaWYKK30KKwogSlNWYWx1ZVJlZiBXS0J1bmRsZUZyYW1lR2V0
SmF2YVNjcmlwdFdyYXBwZXJGb3JSYW5nZUZvcldvcmxkKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVS
ZWYsIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2VIYW5kbGVSZWYsIFdLQnVuZGxlU2NyaXB0
V29ybGRSZWYgd29ybGRSZWYpCiB7CiAgICAgcmV0dXJuIHRvSW1wbChmcmFtZVJlZiktPmpzV3Jh
cHBlckZvcldvcmxkKHRvSW1wbChyYW5nZUhhbmRsZVJlZiksIHRvSW1wbCh3b3JsZFJlZikpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuaAppbmRleCA4YzJiODc1Li41Mzk3MThkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlRnJhbWUuaApAQCAtNTEsNiArNTEsMTAgQEAgV0tfRVhQT1JUIFdLRnJh
bWVMb2FkU3RhdGUgV0tCdW5kbGVGcmFtZUdldEZyYW1lTG9hZFN0YXRlKFdLQnVuZGxlRnJhbWVS
ZWYgZnJhbWUKIFdLX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgV0tCdW5kbGVGcmFtZUdldEph
dmFTY3JpcHRDb250ZXh0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpOwogV0tfRVhQT1JUIEpTR2xv
YmFsQ29udGV4dFJlZiBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHRGb3JXb3JsZChX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHdvcmxkKTsKIAor
dHlwZWRlZiB2b2lkICgqV0tCdW5kbGVGcmFtZVdvcmtlclNjcmlwdENhbGxiYWNrKShKU0NvbnRl
eHRSZWYgY29udGV4dCwgaW50IGlzRGVkaWNhdGVkKTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxl
RnJhbWVTZXRXb3JrZXJJbml0aWFsaXplQ2FsbGJhY2soV0tCdW5kbGVGcmFtZVdvcmtlclNjcmlw
dENhbGxiYWNrIGNhbGxiYWNrKTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlRnJhbWVTZXRXb3Jr
ZXJUZXJtaW5hdGVDYWxsYmFjayhXS0J1bmRsZUZyYW1lV29ya2VyU2NyaXB0Q2FsbGJhY2sgY2Fs
bGJhY2spOworCiBXS19FWFBPUlQgV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZUZyYW1lRm9ySmF2
YVNjcmlwdENvbnRleHQoSlNDb250ZXh0UmVmIGNvbnRleHQpOwogCiBXS19FWFBPUlQgSlNWYWx1
ZVJlZiBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdFdyYXBwZXJGb3JOb2RlRm9yV29ybGQoV0tC
dW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIG5vZGVIYW5kbGUsIFdL
QnVuZGxlU2NyaXB0V29ybGRSZWYgd29ybGQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDllOTAzMWUuLmU1MDg5NmUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAx
My0wNi0xMSAgVHVsbGlvIEx1Y2VuYSAgPHR1bGxpby5sdWNlbmFAb3BlbmJvc3NhLm9yZz4KKwor
ICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gKE9PUFMhKS4KKyAgICAgICAgTmVlZCB0
aGUgYnVnIFVSTCAoT09QUyEpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyLmNwcDogQWRkZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvV2ViV29ya2VyU2hhcmVkVGVzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyU2hhcmVkVGVzdC5qczogQWRkZWQuCisg
ICAgICAgIChvbmNvbm5lY3QpOgorICAgICAgICAobGlzdGVuRm9yTWVzc2FnZSk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlclRlc3QuaHRtbDogQWRkZWQu
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlclRlc3QuanM6
IEFkZGVkLgorICAgICAgICAoc2VsZi5vbm1lc3NhZ2UpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJfQnVuZGxlLmNwcDogQWRkZWQuCisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpmb28pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6YmFyKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OndlYldvcmtlckluaXRpYWxpemUpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6d2ViV29ya2VyVGVybWluYXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Oldl
YldvcmtlclRlc3Q6OldlYldvcmtlclRlc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6V2Vi
V29ya2VyVGVzdDo6aW5pdGlhbGl6ZSk6CisKIDIwMTMtMDYtMTEgIFRpbW90aHkgSGF0Y2hlciAg
PHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgYnVpbGQtd2Via2l0IGJ1aWxkIHRo
ZSBXZWJJbnNwZWN0b3JVSSBwcm9qZWN0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1FZmwuY21h
a2UKaW5kZXggODcwZGMxYi4uOTc5M2U4OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZs
LmNtYWtlCkBAIC01NSw2ICs1NSw3IEBAIHNldCh0ZXN0X3dlYmNvcmVfQklOQVJJRVMKICMgSW4g
aGVyZSB3ZSBsaXN0IHRoZSBidW5kbGVzIHRoYXQgYXJlIHVzZWQgYnkgb3VyIHNwZWNpZmljIFdL
MiBBUEkgVGVzdHMKIGxpc3QoQVBQRU5EIGJ1bmRsZV9oYXJuZXNzX1NPVVJDRVMKICAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJLaXQyL2VmbC9XS1ZpZXdDbGllbnRXZWJQcm9jZXNz
Q2FsbGJhY2tzX0J1bmRsZS5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJL
aXQyL1dlYldvcmtlcl9CdW5kbGUuY3BwCiApCiAKIHNldCh0ZXN0X3dlYmtpdDJfYXBpX0JJTkFS
SUVTCkBAIC04OCw2ICs4OSw3IEBAIHNldCh0ZXN0X3dlYmtpdDJfYXBpX0JJTkFSSUVTCiAgICAg
UHJldmVudEVtcHR5VXNlckFnZW50CiAgICAgUHJpdmF0ZUJyb3dzaW5nUHVzaFN0YXRlTm9IaXN0
b3J5Q2FsbGJhY2sKICAgICBVc2VyTWVzc2FnZQorICAgIFdlYldvcmtlcgogICAgIFdLQ29ubmVj
dGlvbgogICAgIFdLUHJlZmVyZW5jZXMKICAgICBXS1N0cmluZwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlci5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4zMDg3MTBkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlci5jcHAKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgSU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lh
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQ29udGV4dC5oPgor
I2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1ByZWZlcmVu
Y2VzUHJpdmF0ZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tWaWV3Lmg+CisKK25hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKK3N0YXRp
YyBib29sIHRlcm1pbmF0ZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIGNoYW5nZWRUaXRsZSA9IGZh
bHNlOworc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWRTaGFyZWQgPSBmYWxzZTsKK3N0YXRpYyBib29s
IHRlcm1pbmF0ZWRTaGFyZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIGNoYW5nZWRUaXRsZVNoYXJl
ZCA9IGZhbHNlOworCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYsIGNv
bnN0IHZvaWQqKQoreworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3Nh
Z2VOYW1lLCAiV2ViV29ya2VySW5pdE1lc3NhZ2UiKSkKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0
cnVlOworICAgIGVsc2UgaWYoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFt
ZSwgIldlYldvcmtlclRlcm1pbmF0ZU1lc3NhZ2UiKSkKKyAgICAgICAgdGVybWluYXRlZCA9IHRy
dWU7CisgICAgZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFt
ZSwgIldlYldvcmtlclNoYXJlZEluaXRNZXNzYWdlIikpCisgICAgICAgIGluaXRpYWxpemVkU2hh
cmVkID0gdHJ1ZTsKKyAgICBlbHNlIGlmKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVz
c2FnZU5hbWUsICJXZWJXb3JrZXJTaGFyZWRUZXJtaW5hdGVNZXNzYWdlIikpCisgICAgICAgIHRl
cm1pbmF0ZWRTaGFyZWQgPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZlVGl0bGVG
b3JGcmFtZShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIHRpdGxlLCBXS0ZyYW1lUmVmLCBXS1R5cGVS
ZWYsIGNvbnN0IHZvaWQgKikKK3sKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
Zyh0aXRsZSwgIldlYldvcmtlclRpdGxlIikpCisgICAgICAgIGNoYW5nZWRUaXRsZSA9IHRydWU7
CisgICAgZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyh0aXRsZSwgIldlYldv
cmtlclNoYXJlZFRpdGxlIikpCisgICAgICAgIGNoYW5nZWRUaXRsZVNoYXJlZCA9IHRydWU7Cit9
CisKK1RFU1QoV2ViS2l0MiwgV2ViV29ya2VyKQoreworICAgIC8vIFRoaXMgdGVzdCBjb3ZlciB0
aGUgYmluZGluZyBiZXR3ZWVuIGZ1bmN0aW9ucyBvZiBKYXZhU2NyaXB0IFdvcmtlcnMgYW5kCisg
ICAgLy8gZnVuY3Rpb25zIGRlZmluZWQgYXQgYSBwcmV2aW91c2x5IGxvYWRlZCBidW5kbGUuIEl0
IHZlcmlmaWVzIHRoZSB0d28KKyAgICAvLyB0eXBlcyBvZiBXb3JrZXJzLCBkZWRpY2F0ZWQgYW5k
IHNoYXJlZC4KKworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0
V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiV2ViV29ya2VyVGVz
dCIpKTsKKyAgICBXS1JldGFpblB0cjxXS1ZpZXdSZWY+IHZpZXcoQWRvcHRXSywgV0tWaWV3Q3Jl
YXRlKGNvbnRleHQuZ2V0KCksIDApKTsKKworICAgIFdLVmlld0luaXRpYWxpemUodmlldy5nZXQo
KSk7CisKKworICAgIFdLUGFnZUxvYWRlckNsaWVudCBwYWdlTG9hZGVyQ2xpZW50OworICAgIG1l
bXNldCgmcGFnZUxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKFdLUGFnZUxvYWRlckNsaWVudCkpOwor
ICAgIHBhZ2VMb2FkZXJDbGllbnQudmVyc2lvbiA9IGtXS1BhZ2VMb2FkZXJDbGllbnRDdXJyZW50
VmVyc2lvbjsKKyAgICBwYWdlTG9hZGVyQ2xpZW50LmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lID0g
ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWU7CisgICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChX
S1ZpZXdHZXRQYWdlKHZpZXcuZ2V0KCkpLCAmcGFnZUxvYWRlckNsaWVudCk7CisKKyAgICBXS0Nv
bnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCBpbmplY3RlZEJ1bmRsZUNsaWVudDsKKyAgICBtZW1z
ZXQoJmluamVjdGVkQnVuZGxlQ2xpZW50LCAwLCBzaXplb2YoaW5qZWN0ZWRCdW5kbGVDbGllbnQp
KTsKKyAgICBpbmplY3RlZEJ1bmRsZUNsaWVudC5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZSA9IGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOworICAgIFdLQ29u
dGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCksICZpbmplY3RlZEJ1bmRs
ZUNsaWVudCk7CisKKyAgICBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXAgPSBXS1BhZ2VHZXRQYWdl
R3JvdXAoV0tWaWV3R2V0UGFnZSh2aWV3LmdldCgpKSk7CisgICAgV0tQcmVmZXJlbmNlc1JlZiBw
cmVmZXJlbmNlcyA9IFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMocGFnZUdyb3VwKTsKKyAgICBX
S1ByZWZlcmVuY2VzU2V0RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc0FsbG93ZWQocHJlZmVyZW5jZXMs
IHRydWUpOworCisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHVybCA9IGFkb3B0V0soVXRpbDo6
Y3JlYXRlVVJMRm9yUmVzb3VyY2UoIi4uL1dlYktpdDIvV2ViV29ya2VyVGVzdCIsICJodG1sIikp
OworICAgIFdLUGFnZUxvYWRVUkwoV0tWaWV3R2V0UGFnZSh2aWV3LmdldCgpKSwgdXJsLmdldCgp
KTsKKyAgICBVdGlsOjpydW4oJmluaXRpYWxpemVkKTsKKyAgICBVdGlsOjpydW4oJnRlcm1pbmF0
ZWQpOworICAgIFV0aWw6OnJ1bigmY2hhbmdlZFRpdGxlKTsKKworICAgIHVybCA9IGFkb3B0V0so
VXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoIi4uL1dlYktpdDIvV2ViV29ya2VyU2hhcmVkVGVz
dCIsICJodG1sIikpOworICAgIFdLUGFnZUxvYWRVUkwoV0tWaWV3R2V0UGFnZSh2aWV3LmdldCgp
KSwgdXJsLmdldCgpKTsKKyAgICBVdGlsOjpydW4oJmluaXRpYWxpemVkU2hhcmVkKTsKKyAgICBV
dGlsOjpydW4oJnRlcm1pbmF0ZWRTaGFyZWQpOworICAgIFV0aWw6OnJ1bigmY2hhbmdlZFRpdGxl
U2hhcmVkKTsKK30KKworfSAvLyBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyU2hhcmVkVGVzdC5odG1sIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlclNoYXJlZFRlc3QuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzc1MzA3Ci0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlclNoYXJlZFRlc3Qu
aHRtbApAQCAtMCwwICsxLDEyIEBACis8aHRtbD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHNjcmlw
dD4KKyAgICAgICAgICAgIHZhciB3b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCJXZWJXb3JrZXJT
aGFyZWRUZXN0LmpzIik7CisgICAgICAgICAgICB3b3JrZXIucG9ydC5hZGRFdmVudExpc3RlbmVy
KCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC50
aXRsZSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICB9LCBmYWxzZSk7CisgICAgICAgICAgICB3
b3JrZXIucG9ydC5zdGFydCgpOworICAgICAgICAgICAgd29ya2VyLnBvcnQucG9zdE1lc3NhZ2Uo
IldlYldvcmtlclNoYXJlZE1lc3NhZ2UiKTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L1dlYldvcmtlclNoYXJlZFRlc3QuanMgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvV2ViV29ya2VyU2hhcmVkVGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi45ODRiYWY2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL1dlYldvcmtlclNoYXJlZFRlc3QuanMKQEAgLTAsMCArMSwxMyBAQAordmFyIHBv
cnRzID0gW107CisKK29uY29ubmVjdCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgdmFyIHBvcnQg
PSBldmVudC5wb3J0c1swXTsKKyAgICBwb3J0cy5wdXNoKHBvcnQpOworICAgIHBvcnQuc3RhcnQo
KTsKKyAgICBwb3J0LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldmVudCkg
eyBsaXN0ZW5Gb3JNZXNzYWdlKGV2ZW50LCBwb3J0KTsgfSApOworfQorCitsaXN0ZW5Gb3JNZXNz
YWdlID0gZnVuY3Rpb24gKGV2ZW50LCBwb3J0KSB7CisgICAgcG9ydC5wb3N0TWVzc2FnZShzZWxm
LmJhcigpKTsKKyAgICBzZWxmLmNsb3NlKCk7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyVGVzdC5odG1sIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlclRlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4xN2ZmMjcwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlclRlc3QuaHRtbApAQCAtMCwwICsxLDExIEBA
Cis8aHRtbD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZhciB3
b3JrZXIgPSBuZXcgV29ya2VyKCJXZWJXb3JrZXJUZXN0LmpzIik7CisgICAgICAgICAgICB3b3Jr
ZXIucG9zdE1lc3NhZ2UoIldlYldvcmtlck1lc3NhZ2UiKTsKKyAgICAgICAgICAgIHdvcmtlci5v
bm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LnRp
dGxlID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgIH07CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9XZWJXb3JrZXJUZXN0LmpzIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL1dlYldvcmtlclRlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NzY4NWJiNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9XZWJXb3JrZXJUZXN0LmpzCkBAIC0wLDAgKzEsNSBAQAorc2VsZi5vbm1lc3NhZ2UgPSBm
dW5jdGlvbihldmVudCkgeworICAgIHNlbGYucG9zdE1lc3NhZ2Uoc2VsZi5mb28oKSk7CisgICAg
c2VsZi5jbG9zZSgpOworICAgIHJldHVybjsKK307CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyX0J1bmRsZS5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyX0J1bmRsZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMTdiMWNhOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJfQnVuZGxlLmNwcApAQCAtMCwwICsx
LDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIElOZFQgLSBJbnN0aXR1dG8gTm9raWEg
ZGUgVGVjbm9sb2dpYQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGll
cy5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVGVzdC5oIgorI2luY2x1ZGUgPFdlYktpdDIv
V0tCdW5kbGVGcmFtZS5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK0pTVmFsdWVS
ZWYgZm9vKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiwgc2l6ZV90
LCBjb25zdCBKU1ZhbHVlUmVmW10sIEpTVmFsdWVSZWYqKQoreworICAgIFdLQnVuZGxlUG9zdE1l
c3NhZ2UoSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpzaGFyZWQoKS5idW5kbGUoKSwgVXRpbDo6
dG9XSygiV2ViV29ya2VySW5pdE1lc3NhZ2UiKS5nZXQoKSwgMCk7CisgICAgcmV0dXJuIEpTVmFs
dWVNYWtlU3RyaW5nKGN0eCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIldlYldvcmtl
clRpdGxlIikpOworfQorCitKU1ZhbHVlUmVmIGJhcihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiwgSlNPYmplY3RSZWYsIHNpemVfdCwgY29uc3QgSlNWYWx1ZVJlZltdLCBKU1ZhbHVlUmVm
KikKK3sKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6
c2hhcmVkKCkuYnVuZGxlKCksIFV0aWw6OnRvV0soIldlYldvcmtlclNoYXJlZEluaXRNZXNzYWdl
IikuZ2V0KCksIDApOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0cmluZyhjdHgsIEpTU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJXZWJXb3JrZXJTaGFyZWRUaXRsZSIpKTsKK30KKwordm9p
ZCB3ZWJXb3JrZXJJbml0aWFsaXplKEpTQ29udGV4dFJlZiBjb250ZXh0LCBpbnQgaXNEZWRpY2F0
ZWQpCit7CisgICAgaWYgKGlzRGVkaWNhdGVkKSB7CisgICAgICAgIEpTU3RyaW5nUmVmIGZ1bmNO
YW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImZvbyIpOworICAgICAgICBKU09i
amVjdFJlZiBqc0Z1bmMgPSBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhjb250ZXh0
LCBmdW5jTmFtZSwgJmZvbyk7CisgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY29udGV4dCwg
SlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGNvbnRleHQpLCBmdW5jTmFtZSwganNGdW5jLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
LCAwKTsKKyAgICAgICAgSlNTdHJpbmdSZWxlYXNlKGZ1bmNOYW1lKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBKU1N0cmluZ1JlZiBmdW5jTmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJiYXIiKTsKKyAgICAgICAgSlNPYmplY3RSZWYganNGdW5jID0gSlNPYmplY3RNYWtlRnVu
Y3Rpb25XaXRoQ2FsbGJhY2soY29udGV4dCwgZnVuY05hbWUsICZiYXIpOworICAgICAgICBKU09i
amVjdFNldFByb3BlcnR5KGNvbnRleHQsIEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChjb250ZXh0
KSwgZnVuY05hbWUsIGpzRnVuYywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSwgMCk7CisgICAgICAgIEpTU3RyaW5nUmVsZWFzZShm
dW5jTmFtZSk7CisgICAgfQorfQorCit2b2lkIHdlYldvcmtlclRlcm1pbmF0ZShKU0NvbnRleHRS
ZWYgY29udGV4dCwgaW50IGlzRGVkaWNhdGVkKQoreworICAgIGlmKGlzRGVkaWNhdGVkKQorICAg
ICAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6c2hhcmVk
KCkuYnVuZGxlKCksIFV0aWw6OnRvV0soIldlYldvcmtlclRlcm1pbmF0ZU1lc3NhZ2UiKS5nZXQo
KSwgMCk7CisgICAgZWxzZQorICAgICAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVu
ZGxlQ29udHJvbGxlcjo6c2hhcmVkKCkuYnVuZGxlKCksIFV0aWw6OnRvV0soIldlYldvcmtlclNo
YXJlZFRlcm1pbmF0ZU1lc3NhZ2UiKS5nZXQoKSwgMCk7Cit9CisKK2NsYXNzIFdlYldvcmtlclRl
c3QgOiBwdWJsaWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsKK3B1YmxpYzoKKyAgICBXZWJXb3JrZXJU
ZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKQorICAgICAgICA6IEluamVjdGVkQnVu
ZGxlVGVzdChpZGVudGlmaWVyKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW5p
dGlhbGl6ZShXS0J1bmRsZVJlZiwgV0tUeXBlUmVmKQorICAgIHsKKyAgICAgICAgV0tCdW5kbGVG
cmFtZVNldFdvcmtlckluaXRpYWxpemVDYWxsYmFjayh3ZWJXb3JrZXJJbml0aWFsaXplKTsKKyAg
ICAgICAgV0tCdW5kbGVGcmFtZVNldFdvcmtlclRlcm1pbmF0ZUNhbGxiYWNrKHdlYldvcmtlclRl
cm1pbmF0ZSk7CisgICAgfQorfTsKKworc3RhdGljIEluamVjdGVkQnVuZGxlVGVzdDo6UmVnaXN0
ZXI8V2ViV29ya2VyVGVzdD4gcmVnaXN0cmFyKCJXZWJXb3JrZXJUZXN0Iik7CisKK30gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204364</attachid>
            <date>2013-06-11 15:30:24 -0700</date>
            <delta_ts>2013-06-13 13:27:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117523-20130611192837.patch</filename>
            <type>text/plain</type>
            <size>23456</size>
            <attacher name="Tullio Lucena">tullio.lucena</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxNDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzFhN2IwNDUzNGU1YjUx
ZDA2YmE3NDMzOGJjYTJhOGFlODdlOWU2Zi4uODZiOTI3ODViNGQ2ZWMyYTQ1MGZmMGUxMzM4MDQw
ZTc1NDJjM2I1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTA2LTExICBUdWxs
aW8gTHVjZW5hICA8dHVsbGlvLmx1Y2VuYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtXSzJd
W0VGTF0gUHJvb2Ygb2YgY29uY2VwdCB0byBpbmplY3QgY3VzdG9tIEphdmFTY3JpcHQgb2JqZWN0
cyBvbiBXZWJXb3JrZXIgY29udGV4dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNzUyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjp+V29ya2VyU2NyaXB0
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpp
bml0U2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNl
dEluaXRTY3JpcHRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjppbml0U2NyaXB0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2Ny
aXB0Q29udHJvbGxlcjo6c2V0VGVybWluYXRlU2NyaXB0Q2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6dGVybWluYXRlU2NyaXB0Q2FsbGJhY2spOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaDoKKwogMjAxMy0w
Ni0xMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWFjXSBVcGRhdGUgdGV4dCB0cmFjayBtZW51CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTFmMTNjMmRlYmYwNDhi
MTYxZTU2MmQ0NDUxZWM1N2M1MTEyM2FjOS4uNWUyNTgyNDgxOTA3ZmNmNDZjMWQxNTUxODEzZTBl
N2JmMmU4MTAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTA2LTExICBUdWxs
aW8gTHVjZW5hICA8dHVsbGlvLmx1Y2VuYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtXSzJd
W0VGTF0gUHJvb2Ygb2YgY29uY2VwdCB0byBpbmplY3QgY3VzdG9tIEphdmFTY3JpcHQgb2JqZWN0
cyBvbiBXZWJXb3JrZXIgY29udGV4dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNzUyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUZyYW1lLmNwcDoKKyAgICAgICAgKGxvY2FsV29ya2VyU2NyaXB0SW5pdENhbGxiYWNrKToKKyAg
ICAgICAgKFdLQnVuZGxlRnJhbWVTZXRXb3JrZXJJbml0aWFsaXplQ2FsbGJhY2spOgorICAgICAg
ICAobG9jYWxXb3JrZXJTY3JpcHRUZXJtaW5hdGVDYWxsYmFjayk6CisgICAgICAgIChXS0J1bmRs
ZUZyYW1lU2V0V29ya2VyVGVybWluYXRlQ2FsbGJhY2spOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5oOgorCiAyMDEzLTA2LTA2ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgdGhlIGZy
YW1ld29yayBidW5kbGUgaWRlbnRpZmllciBmb3IgdGhlIFdlYiBJbnNwZWN0b3IuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3Bw
CmluZGV4IGMzYWQ1OGMwNjBlYjMwNzcxOTBjZmUzNjI4N2E3MzJkMTRiMDk2MjIuLmU3NmU5ZGNk
NDI4MjM5ZDc1ZWQ1MDQwNjIzOWY4MmNiNjY0MDgzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC02Niw2ICs2
Niw5IEBAIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OldvcmtlclNjcmlwdENvbnRyb2xsZXIoV29y
a2VyQ29udGV4dCogd29ya2VyQ29udGV4dCkKIAogV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6fldv
cmtlclNjcmlwdENvbnRyb2xsZXIoKQogeworICAgIGlmICh0ZXJtaW5hdGVTY3JpcHRDYWxsYmFj
aygpKQorICAgICAgICB0ZXJtaW5hdGVTY3JpcHRDYWxsYmFjaygpKG1fd29ya2VyQ29udGV4dFdy
YXBwZXItPmdsb2JhbEV4ZWMoKSwgbV93b3JrZXJDb250ZXh0LT5pc0RlZGljYXRlZFdvcmtlckNv
bnRleHQoKSk7CisKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKICAgICBtX3dvcmtlckNv
bnRleHRXcmFwcGVyLmNsZWFyKCk7CiAgICAgbV92bS5jbGVhcigpOwpAQCAtMTA5LDYgKzExMiw5
IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgpCiAgICAgfQogICAg
IEFTU0VSVChtX3dvcmtlckNvbnRleHRXcmFwcGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtl
ckNvbnRleHRXcmFwcGVyKTsKICAgICBBU1NFUlQoYXNPYmplY3QobV93b3JrZXJDb250ZXh0V3Jh
cHBlci0+cHJvdG90eXBlKCkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckNvbnRleHRXcmFw
cGVyKTsKKworICAgIGlmIChpbml0U2NyaXB0Q2FsbGJhY2soKSkKKyAgICAgICAgaW5pdFNjcmlw
dENhbGxiYWNrKCkobV93b3JrZXJDb250ZXh0V3JhcHBlci0+Z2xvYmFsRXhlYygpLCBtX3dvcmtl
ckNvbnRleHQtPmlzRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpKTsKIH0KIAogdm9pZCBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VD
b2RlKQpAQCAtMjA1LDYgKzIxMSwyOSBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmRl
dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKQogICAgIGRlYnVnZ2VyLT5kZXRh
Y2gobV93b3JrZXJDb250ZXh0V3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkpOwogfQogCitXb3JrZXJT
Y3JpcHRDYWxsYmFjayBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjptX2luaXRTY3JpcHRDYWxsYmFj
ayA9IDA7CitXb3JrZXJTY3JpcHRDYWxsYmFjayBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjptX3Rl
cm1pbmF0ZVNjcmlwdENhbGxiYWNrID0gMDsKKwordm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVy
OjpzZXRJbml0U2NyaXB0Q2FsbGJhY2soV29ya2VyU2NyaXB0Q2FsbGJhY2sgY2FsbGJhY2spCit7
CisgICAgbV9pbml0U2NyaXB0Q2FsbGJhY2sgPSBjYWxsYmFjazsKK30KKworV29ya2VyU2NyaXB0
Q2FsbGJhY2sgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdENhbGxiYWNrKCkKK3sK
KyAgICByZXR1cm4gbV9pbml0U2NyaXB0Q2FsbGJhY2s7Cit9CisKK3ZvaWQgV29ya2VyU2NyaXB0
Q29udHJvbGxlcjo6c2V0VGVybWluYXRlU2NyaXB0Q2FsbGJhY2soV29ya2VyU2NyaXB0Q2FsbGJh
Y2sgY2FsbGJhY2spCit7CisgICAgbV90ZXJtaW5hdGVTY3JpcHRDYWxsYmFjayA9IGNhbGxiYWNr
OworfQorCitXb3JrZXJTY3JpcHRDYWxsYmFjayBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjp0ZXJt
aW5hdGVTY3JpcHRDYWxsYmFjaygpCit7CisgICAgcmV0dXJuIG1fdGVybWluYXRlU2NyaXB0Q2Fs
bGJhY2s7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShX
T1JLRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5oCmluZGV4IGNmZjBjYjU2M2NkY2E4N2UwNjEzNWVkY2FhYWY1MTcyYWViZWNm
NGMuLjFmZmJkMTk1ZjMzZTc2NDA3NjU0ZjYxMTg0NGU4MTJmMTE5NGZiNmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKQEAg
LTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
ICAgIHR5cGVkZWYgdm9pZCAoKldvcmtlclNjcmlwdENhbGxiYWNrKShKU0M6OkV4ZWNTdGF0ZSos
IGJvb2wpOworCiAgICAgY2xhc3MgSlNXb3JrZXJDb250ZXh0OwogICAgIGNsYXNzIFNjcmlwdFNv
dXJjZUNvZGU7CiAgICAgY2xhc3MgU2NyaXB0VmFsdWU7CkBAIC04Miw2ICs4NCwxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgYXR0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dl
ciopOwogICAgICAgICB2b2lkIGRldGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKTsKIAorICAg
ICAgICBzdGF0aWMgdm9pZCBzZXRJbml0U2NyaXB0Q2FsbGJhY2soV29ya2VyU2NyaXB0Q2FsbGJh
Y2spOworICAgICAgICBzdGF0aWMgV29ya2VyU2NyaXB0Q2FsbGJhY2sgaW5pdFNjcmlwdENhbGxi
YWNrKCk7CisgICAgICAgIHN0YXRpYyB2b2lkIHNldFRlcm1pbmF0ZVNjcmlwdENhbGxiYWNrKFdv
cmtlclNjcmlwdENhbGxiYWNrKTsKKyAgICAgICAgc3RhdGljIFdvcmtlclNjcmlwdENhbGxiYWNr
IHRlcm1pbmF0ZVNjcmlwdENhbGxiYWNrKCk7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBp
bml0U2NyaXB0SWZOZWVkZWQoKQogICAgICAgICB7CkBAIC05NSw2ICsxMDEsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIEpTQzo6U3Ryb25nPEpTV29ya2VyQ29udGV4dD4gbV93b3Jr
ZXJDb250ZXh0V3JhcHBlcjsKICAgICAgICAgYm9vbCBtX2V4ZWN1dGlvbkZvcmJpZGRlbjsKICAg
ICAgICAgbXV0YWJsZSBNdXRleCBtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTXV0ZXg7CisKKyAgICAg
ICAgc3RhdGljIFdvcmtlclNjcmlwdENhbGxiYWNrIG1faW5pdFNjcmlwdENhbGxiYWNrOworICAg
ICAgICBzdGF0aWMgV29ya2VyU2NyaXB0Q2FsbGJhY2sgbV90ZXJtaW5hdGVTY3JpcHRDYWxsYmFj
azsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUZyYW1lLmNwcAppbmRleCA2MWIzODA4MDMwNzlhODMwMTQyODhmZGM4OTFiZDdiZDEyZTIwZDlk
Li5kMGNhZDVhY2JjNzNlNmQ2ZTMyY2RlYmE3MmE5MGU3OWVkYTQxMzA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVGcmFtZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJXS0J1bmRs
ZUZyYW1lUHJpdmF0ZS5oIgogCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0
LmgiCisjaW5jbHVkZSAiSmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQVBJ
Q2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLRGF0YS5o
IgpAQCAtMzcsNiArMzgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMTE0LDYgKzExNiw0
MiBAQCBKU1ZhbHVlUmVmIFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0V3JhcHBlckZvck5vZGVG
b3JXb3JsZChXS0J1bmRsZUZyYW1lUmVmIGZyYQogICAgIHJldHVybiB0b0ltcGwoZnJhbWVSZWYp
LT5qc1dyYXBwZXJGb3JXb3JsZCh0b0ltcGwobm9kZUhhbmRsZVJlZiksIHRvSW1wbCh3b3JsZFJl
ZikpOwogfQogCitzdGF0aWMgV0tCdW5kbGVGcmFtZVdvcmtlclNjcmlwdENhbGxiYWNrIHNfbG9j
YWxXb3JrZXJTY3JpcHRJbml0Q2FsbGJhY2s7CisKK3N0YXRpYyB2b2lkIGxvY2FsV29ya2VyU2Ny
aXB0SW5pdENhbGxiYWNrKEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGUsIGJvb2wgaXNEZWRpY2F0
ZWQpCit7CisgICAgc19sb2NhbFdvcmtlclNjcmlwdEluaXRDYWxsYmFjayh0b1JlZihleGVjU3Rh
dGUpLCBpc0RlZGljYXRlZCk7Cit9CisKK3ZvaWQgV0tCdW5kbGVGcmFtZVNldFdvcmtlckluaXRp
YWxpemVDYWxsYmFjayhXS0J1bmRsZUZyYW1lV29ya2VyU2NyaXB0Q2FsbGJhY2sgY2FsbGJhY2sp
Cit7CisjaWYgRU5BQkxFKFdPUktFUlMpCisgICAgaWYgKGNhbGxiYWNrKSB7CisgICAgICAgIHNf
bG9jYWxXb3JrZXJTY3JpcHRJbml0Q2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgV29ya2Vy
U2NyaXB0Q29udHJvbGxlcjo6c2V0SW5pdFNjcmlwdENhbGxiYWNrKGxvY2FsV29ya2VyU2NyaXB0
SW5pdENhbGxiYWNrKTsKKyAgICB9IGVsc2UKKyAgICAgICAgV29ya2VyU2NyaXB0Q29udHJvbGxl
cjo6c2V0SW5pdFNjcmlwdENhbGxiYWNrKDApOworI2VuZGlmCit9CisKK3N0YXRpYyBXS0J1bmRs
ZUZyYW1lV29ya2VyU2NyaXB0Q2FsbGJhY2sgc19sb2NhbFdvcmtlclNjcmlwdFRlcm1pbmF0ZUNh
bGxiYWNrOworCitzdGF0aWMgdm9pZCBsb2NhbFdvcmtlclNjcmlwdFRlcm1pbmF0ZUNhbGxiYWNr
KEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGUsIGJvb2wgaXNEZWRpY2F0ZWQpCit7CisgICAgc19s
b2NhbFdvcmtlclNjcmlwdFRlcm1pbmF0ZUNhbGxiYWNrKHRvUmVmKGV4ZWNTdGF0ZSksIGlzRGVk
aWNhdGVkKTsKK30KKwordm9pZCBXS0J1bmRsZUZyYW1lU2V0V29ya2VyVGVybWluYXRlQ2FsbGJh
Y2soV0tCdW5kbGVGcmFtZVdvcmtlclNjcmlwdENhbGxiYWNrIGNhbGxiYWNrKQoreworI2lmIEVO
QUJMRShXT1JLRVJTKQorICAgIGlmIChjYWxsYmFjaykgeworICAgICAgICBzX2xvY2FsV29ya2Vy
U2NyaXB0VGVybWluYXRlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgV29ya2VyU2NyaXB0
Q29udHJvbGxlcjo6c2V0VGVybWluYXRlU2NyaXB0Q2FsbGJhY2sobG9jYWxXb3JrZXJTY3JpcHRU
ZXJtaW5hdGVDYWxsYmFjayk7CisgICAgfSBlbHNlCisgICAgICAgIFdvcmtlclNjcmlwdENvbnRy
b2xsZXI6OnNldFRlcm1pbmF0ZVNjcmlwdENhbGxiYWNrKDApOworI2VuZGlmCit9CisKIEpTVmFs
dWVSZWYgV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRXcmFwcGVyRm9yUmFuZ2VGb3JXb3JsZChX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS0J1bmRsZVJhbmdlSGFuZGxlUmVmIHJhbmdlSGFu
ZGxlUmVmLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHdvcmxkUmVmKQogewogICAgIHJldHVybiB0
b0ltcGwoZnJhbWVSZWYpLT5qc1dyYXBwZXJGb3JXb3JsZCh0b0ltcGwocmFuZ2VIYW5kbGVSZWYp
LCB0b0ltcGwod29ybGRSZWYpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmgKaW5kZXggOGMy
Yjg3NWY1MGY0MGZjM2FiMzFiMjlhYmUyYWJiZWE0MDhmNTQ0Zi4uNTM5NzE4ZDA1N2Q3ZGM2ZjVi
NzQzNDNkOWNlMjU1NjM3NjJiZWVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmgKQEAg
LTUxLDYgKzUxLDEwIEBAIFdLX0VYUE9SVCBXS0ZyYW1lTG9hZFN0YXRlIFdLQnVuZGxlRnJhbWVH
ZXRGcmFtZUxvYWRTdGF0ZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lCiBXS19FWFBPUlQgSlNHbG9i
YWxDb250ZXh0UmVmIFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChXS0J1bmRsZUZy
YW1lUmVmIGZyYW1lKTsKIFdLX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgV0tCdW5kbGVGcmFt
ZUdldEphdmFTY3JpcHRDb250ZXh0Rm9yV29ybGQoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tC
dW5kbGVTY3JpcHRXb3JsZFJlZiB3b3JsZCk7CiAKK3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlRnJh
bWVXb3JrZXJTY3JpcHRDYWxsYmFjaykoSlNDb250ZXh0UmVmIGNvbnRleHQsIGludCBpc0RlZGlj
YXRlZCk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUZyYW1lU2V0V29ya2VySW5pdGlhbGl6ZUNh
bGxiYWNrKFdLQnVuZGxlRnJhbWVXb3JrZXJTY3JpcHRDYWxsYmFjayBjYWxsYmFjayk7CitXS19F
WFBPUlQgdm9pZCBXS0J1bmRsZUZyYW1lU2V0V29ya2VyVGVybWluYXRlQ2FsbGJhY2soV0tCdW5k
bGVGcmFtZVdvcmtlclNjcmlwdENhbGxiYWNrIGNhbGxiYWNrKTsKKwogV0tfRVhQT1JUIFdLQnVu
ZGxlRnJhbWVSZWYgV0tCdW5kbGVGcmFtZUZvckphdmFTY3JpcHRDb250ZXh0KEpTQ29udGV4dFJl
ZiBjb250ZXh0KTsKIAogV0tfRVhQT1JUIEpTVmFsdWVSZWYgV0tCdW5kbGVGcmFtZUdldEphdmFT
Y3JpcHRXcmFwcGVyRm9yTm9kZUZvcldvcmxkKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLQnVu
ZGxlTm9kZUhhbmRsZVJlZiBub2RlSGFuZGxlLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHdvcmxk
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5
ZTkwMzFlOWY5YmY4NDkyMmY0NTMxZGFlMjYyZGY4YmViMWE4MzRkLi5hZGI5MGFkNWMwNzJjZGY4
YWQzYjViYjdmMTU2ZDQ4MmMyY2Q1ZWJmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTMtMDYtMTEgIFR1bGxpbyBM
dWNlbmEgIDx0dWxsaW8ubHVjZW5hQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1dLMl1bRUZM
XSBQcm9vZiBvZiBjb25jZXB0IHRvIGluamVjdCBjdXN0b20gSmF2YVNjcmlwdCBvYmplY3RzIG9u
IFdlYldvcmtlciBjb250ZXh0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE3NTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9XZWJXb3JrZXJTaGFyZWRUZXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJTaGFyZWRUZXN0LmpzOiBBZGRlZC4KKyAg
ICAgICAgKG9uY29ubmVjdCk6CisgICAgICAgIChsaXN0ZW5Gb3JNZXNzYWdlKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyVGVzdC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyVGVzdC5qczog
QWRkZWQuCisgICAgICAgIChzZWxmLm9ubWVzc2FnZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlcl9CdW5kbGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OmZvbyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpiYXIpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6d2ViV29ya2VySW5pdGlhbGl6ZSk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjp3ZWJXb3JrZXJUZXJtaW5hdGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6V2Vi
V29ya2VyVGVzdDo6V2ViV29ya2VyVGVzdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpXZWJX
b3JrZXJUZXN0Ojppbml0aWFsaXplKToKKwogMjAxMy0wNi0xMSAgVGltb3RoeSBIYXRjaGVyICA8
dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgSGF2ZSBidWlsZC13ZWJraXQgYnVpbGQgdGhl
IFdlYkluc3BlY3RvclVJIHByb2plY3QuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtRWZsLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVmbC5jbWFr
ZQppbmRleCA4NzBkYzFiNDAwNzljYmQ2OTBjYWJlNzY2ZGM0MDk1OTEwYWFmYjBiLi45NzkzZTg5
NzEzYmRlMDI5ZmNjNTc4Y2Y5ZjEwMmQ3OGYxYjAzMTE2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxh
dGZvcm1FZmwuY21ha2UKQEAgLTU1LDYgKzU1LDcgQEAgc2V0KHRlc3Rfd2ViY29yZV9CSU5BUklF
UwogIyBJbiBoZXJlIHdlIGxpc3QgdGhlIGJ1bmRsZXMgdGhhdCBhcmUgdXNlZCBieSBvdXIgc3Bl
Y2lmaWMgV0syIEFQSSBUZXN0cwogbGlzdChBUFBFTkQgYnVuZGxlX2hhcm5lc3NfU09VUkNFUwog
ICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYktpdDIvZWZsL1dLVmlld0NsaWVudFdl
YlByb2Nlc3NDYWxsYmFja3NfQnVuZGxlLmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rl
c3RzL1dlYktpdDIvV2ViV29ya2VyX0J1bmRsZS5jcHAKICkKIAogc2V0KHRlc3Rfd2Via2l0Ml9h
cGlfQklOQVJJRVMKQEAgLTg4LDYgKzg5LDcgQEAgc2V0KHRlc3Rfd2Via2l0Ml9hcGlfQklOQVJJ
RVMKICAgICBQcmV2ZW50RW1wdHlVc2VyQWdlbnQKICAgICBQcml2YXRlQnJvd3NpbmdQdXNoU3Rh
dGVOb0hpc3RvcnlDYWxsYmFjawogICAgIFVzZXJNZXNzYWdlCisgICAgV2ViV29ya2VyCiAgICAg
V0tDb25uZWN0aW9uCiAgICAgV0tQcmVmZXJlbmNlcwogICAgIFdLU3RyaW5nCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdj
MWJiMDM5YTk2ODEwZTRhNjAwZmRlMGIwZTc0NzU0ZmM0OWM1ODkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyLmNwcApAQCAtMCww
ICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJTmRUIC0gSW5zdGl0dXRvIE5v
a2lhIGRlIFRlY25vbG9naWEKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgPFdlYktp
dDIvV0tDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2UuaD4KKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1ZpZXcu
aD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgYm9vbCBpbml0aWFsaXpl
ZCA9IGZhbHNlOworc3RhdGljIGJvb2wgdGVybWluYXRlZCA9IGZhbHNlOworc3RhdGljIGJvb2wg
Y2hhbmdlZFRpdGxlID0gZmFsc2U7CitzdGF0aWMgYm9vbCBpbml0aWFsaXplZFNoYXJlZCA9IGZh
bHNlOworc3RhdGljIGJvb2wgdGVybWluYXRlZFNoYXJlZCA9IGZhbHNlOworc3RhdGljIGJvb2wg
Y2hhbmdlZFRpdGxlU2hhcmVkID0gZmFsc2U7CisKK3N0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5h
bWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCit7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJXZWJXb3JrZXJJbml0TWVzc2FnZSIpKQorICAgICAg
ICBpbml0aWFsaXplZCA9IHRydWU7CisgICAgZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIldlYldvcmtlclRlcm1pbmF0ZU1lc3NhZ2UiKSkKKyAgICAg
ICAgdGVybWluYXRlZCA9IHRydWU7CisgICAgZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIldlYldvcmtlclNoYXJlZEluaXRNZXNzYWdlIikpCisgICAg
ICAgIGluaXRpYWxpemVkU2hhcmVkID0gdHJ1ZTsKKyAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiV2ViV29ya2VyU2hhcmVkVGVybWluYXRlTWVz
c2FnZSIpKQorICAgICAgICB0ZXJtaW5hdGVkU2hhcmVkID0gdHJ1ZTsKK30KKworc3RhdGljIHZv
aWQgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiB0aXRsZSwg
V0tGcmFtZVJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkICopCit7CisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcodGl0bGUsICJXZWJXb3JrZXJUaXRsZSIpKQorICAgICAgICBj
aGFuZ2VkVGl0bGUgPSB0cnVlOworICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcodGl0bGUsICJXZWJXb3JrZXJTaGFyZWRUaXRsZSIpKQorICAgICAgICBjaGFuZ2VkVGl0
bGVTaGFyZWQgPSB0cnVlOworfQorCitURVNUKFdlYktpdDIsIFdlYldvcmtlcikKK3sKKyAgICAv
LyBUaGlzIHRlc3QgY292ZXIgdGhlIGJpbmRpbmcgYmV0d2VlbiBmdW5jdGlvbnMgb2YgSmF2YVNj
cmlwdCBXb3JrZXJzIGFuZAorICAgIC8vIGZ1bmN0aW9ucyBkZWZpbmVkIGF0IGEgcHJldmlvdXNs
eSBsb2FkZWQgYnVuZGxlLiBJdCB2ZXJpZmllcyB0aGUgdHdvCisgICAgLy8gdHlwZXMgb2YgV29y
a2VycywgZGVkaWNhdGVkIGFuZCBzaGFyZWQuCisKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRS
ZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRs
ZVRlc3QoIldlYldvcmtlclRlc3QiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tWaWV3UmVmPiB2aWV3
KEFkb3B0V0ssIFdLVmlld0NyZWF0ZShjb250ZXh0LmdldCgpLCAwKSk7CisKKyAgICBXS1ZpZXdJ
bml0aWFsaXplKHZpZXcuZ2V0KCkpOworCisKKyAgICBXS1BhZ2VMb2FkZXJDbGllbnQgcGFnZUxv
YWRlckNsaWVudDsKKyAgICBtZW1zZXQoJnBhZ2VMb2FkZXJDbGllbnQsIDAsIHNpemVvZihXS1Bh
Z2VMb2FkZXJDbGllbnQpKTsKKyAgICBwYWdlTG9hZGVyQ2xpZW50LnZlcnNpb24gPSBrV0tQYWdl
TG9hZGVyQ2xpZW50Q3VycmVudFZlcnNpb247CisgICAgcGFnZUxvYWRlckNsaWVudC5kaWRSZWNl
aXZlVGl0bGVGb3JGcmFtZSA9IGRpZFJlY2VpdmVUaXRsZUZvckZyYW1lOworICAgIFdLUGFnZVNl
dFBhZ2VMb2FkZXJDbGllbnQoV0tWaWV3R2V0UGFnZSh2aWV3LmdldCgpKSwgJnBhZ2VMb2FkZXJD
bGllbnQpOworCisgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQgaW5qZWN0ZWRCdW5k
bGVDbGllbnQ7CisgICAgbWVtc2V0KCZpbmplY3RlZEJ1bmRsZUNsaWVudCwgMCwgc2l6ZW9mKGlu
amVjdGVkQnVuZGxlQ2xpZW50KSk7CisgICAgaW5qZWN0ZWRCdW5kbGVDbGllbnQuZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUgPSBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZTsKKyAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0Lmdl
dCgpLCAmaW5qZWN0ZWRCdW5kbGVDbGllbnQpOworCisgICAgV0tQYWdlR3JvdXBSZWYgcGFnZUdy
b3VwID0gV0tQYWdlR2V0UGFnZUdyb3VwKFdLVmlld0dldFBhZ2Uodmlldy5nZXQoKSkpOworICAg
IFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXMgPSBXS1BhZ2VHcm91cEdldFByZWZlcmVuY2Vz
KHBhZ2VHcm91cCk7CisgICAgV0tQcmVmZXJlbmNlc1NldEZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNB
bGxvd2VkKHByZWZlcmVuY2VzLCB0cnVlKTsKKworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1
cmwgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCIuLi9XZWJLaXQyL1dlYldv
cmtlclRlc3QiLCAiaHRtbCIpKTsKKyAgICBXS1BhZ2VMb2FkVVJMKFdLVmlld0dldFBhZ2Uodmll
dy5nZXQoKSksIHVybC5nZXQoKSk7CisgICAgVXRpbDo6cnVuKCZpbml0aWFsaXplZCk7CisgICAg
VXRpbDo6cnVuKCZ0ZXJtaW5hdGVkKTsKKyAgICBVdGlsOjpydW4oJmNoYW5nZWRUaXRsZSk7CisK
KyAgICB1cmwgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCIuLi9XZWJLaXQy
L1dlYldvcmtlclNoYXJlZFRlc3QiLCAiaHRtbCIpKTsKKyAgICBXS1BhZ2VMb2FkVVJMKFdLVmll
d0dldFBhZ2Uodmlldy5nZXQoKSksIHVybC5nZXQoKSk7CisgICAgVXRpbDo6cnVuKCZpbml0aWFs
aXplZFNoYXJlZCk7CisgICAgVXRpbDo6cnVuKCZ0ZXJtaW5hdGVkU2hhcmVkKTsKKyAgICBVdGls
OjpydW4oJmNoYW5nZWRUaXRsZVNoYXJlZCk7Cit9CisKK30gLy8gVGVzdFdlYktpdEFQSQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlclNoYXJl
ZFRlc3QuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJT
aGFyZWRUZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc3NTMwNzIyNmVhNzVjNmQ5ZTkzOTFmOWZlYjFh
YjI1OWY2OWZkZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9XZWJXb3JrZXJTaGFyZWRUZXN0Lmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPGh0bWw+
CisgICAgPGJvZHk+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICB2YXIgd29ya2VyID0g
bmV3IFNoYXJlZFdvcmtlcigiV2ViV29ya2VyU2hhcmVkVGVzdC5qcyIpOworICAgICAgICAgICAg
d29ya2VyLnBvcnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgICAgICAgICAgZG9jdW1lbnQudGl0bGUgPSBldmVudC5kYXRhOworICAgICAgICAg
ICAgfSwgZmFsc2UpOworICAgICAgICAgICAgd29ya2VyLnBvcnQuc3RhcnQoKTsKKyAgICAgICAg
ICAgIHdvcmtlci5wb3J0LnBvc3RNZXNzYWdlKCJXZWJXb3JrZXJTaGFyZWRNZXNzYWdlIik7Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJTaGFyZWRUZXN0LmpzIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlclNoYXJlZFRlc3QuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTg0YmFmNjc3M2I2YTRmZThkYmRiYzc4ZGVkMWE4ZTdkYzFiZWVhNAotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJT
aGFyZWRUZXN0LmpzCkBAIC0wLDAgKzEsMTMgQEAKK3ZhciBwb3J0cyA9IFtdOworCitvbmNvbm5l
Y3QgPSBmdW5jdGlvbihldmVudCkgeworICAgIHZhciBwb3J0ID0gZXZlbnQucG9ydHNbMF07Cisg
ICAgcG9ydHMucHVzaChwb3J0KTsKKyAgICBwb3J0LnN0YXJ0KCk7CisgICAgcG9ydC5hZGRFdmVu
dExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsgbGlzdGVuRm9yTWVzc2FnZShl
dmVudCwgcG9ydCk7IH0gKTsKK30KKworbGlzdGVuRm9yTWVzc2FnZSA9IGZ1bmN0aW9uIChldmVu
dCwgcG9ydCkgeworICAgIHBvcnQucG9zdE1lc3NhZ2Uoc2VsZi5iYXIoKSk7CisgICAgc2VsZi5j
bG9zZSgpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L1dlYldvcmtlclRlc3QuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9X
ZWJXb3JrZXJUZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdmZjI3MDQ2N2MxNzk0NzNjMjQ1MjQ2OThj
NjQxMzkwZTY2YzY3OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9XZWJXb3JrZXJUZXN0Lmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPGh0bWw+Cisg
ICAgPGJvZHk+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICB2YXIgd29ya2VyID0gbmV3
IFdvcmtlcigiV2ViV29ya2VyVGVzdC5qcyIpOworICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNz
YWdlKCJXZWJXb3JrZXJNZXNzYWdlIik7CisgICAgICAgICAgICB3b3JrZXIub25tZXNzYWdlID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC50aXRsZSA9IGV2ZW50
LmRhdGE7CisgICAgICAgICAgICB9OworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2Vi
V29ya2VyVGVzdC5qcyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3Jr
ZXJUZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2ODViYjU1YzIyMTU0ZTEwN2YzNGI1MjUyNTg1MTcyNDA0
OTEzMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvV2ViV29ya2VyVGVzdC5qcwpAQCAtMCwwICsxLDUgQEAKK3NlbGYub25tZXNzYWdlID0gZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICBzZWxmLnBvc3RNZXNzYWdlKHNlbGYuZm9vKCkpOworICAgIHNl
bGYuY2xvc2UoKTsKKyAgICByZXR1cm47Cit9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlcl9CdW5kbGUuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlcl9CdW5kbGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjYjkz
NzEyNGMyOGMyODFmNGJiZjZlZDdjMzRkMmJlYmZkMjhjMjcKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyX0J1bmRsZS5jcHAKQEAg
LTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJTmRUIC0gSW5zdGl0dXRv
IE5va2lhIGRlIFRlY25vbG9naWEKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
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
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVRlc3QuaCIKKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLQnVuZGxlRnJhbWUuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitK
U1ZhbHVlUmVmIGZvbyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYs
IHNpemVfdCwgY29uc3QgSlNWYWx1ZVJlZltdLCBKU1ZhbHVlUmVmKikKK3sKKyAgICBXS0J1bmRs
ZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6c2hhcmVkKCkuYnVuZGxlKCks
IFV0aWw6OnRvV0soIldlYldvcmtlckluaXRNZXNzYWdlIikuZ2V0KCksIDApOworICAgIHJldHVy
biBKU1ZhbHVlTWFrZVN0cmluZyhjdHgsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJX
ZWJXb3JrZXJUaXRsZSIpKTsKK30KKworSlNWYWx1ZVJlZiBiYXIoSlNDb250ZXh0UmVmIGN0eCwg
SlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmLCBzaXplX3QsIGNvbnN0IEpTVmFsdWVSZWZbXSwgSlNW
YWx1ZVJlZiopCit7CisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZUNvbnRy
b2xsZXI6OnNoYXJlZCgpLmJ1bmRsZSgpLCBVdGlsOjp0b1dLKCJXZWJXb3JrZXJTaGFyZWRJbml0
TWVzc2FnZSIpLmdldCgpLCAwKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY3R4LCBK
U1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiV2ViV29ya2VyU2hhcmVkVGl0bGUiKSk7Cit9
CisKK3ZvaWQgd2ViV29ya2VySW5pdGlhbGl6ZShKU0NvbnRleHRSZWYgY29udGV4dCwgaW50IGlz
RGVkaWNhdGVkKQoreworICAgIGlmIChpc0RlZGljYXRlZCkgeworICAgICAgICBKU1N0cmluZ1Jl
ZiBmdW5jTmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJmb28iKTsKKyAgICAg
ICAgSlNPYmplY3RSZWYganNGdW5jID0gSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2so
Y29udGV4dCwgZnVuY05hbWUsICZmb28pOworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5KGNv
bnRleHQsIEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChjb250ZXh0KSwgZnVuY05hbWUsIGpzRnVu
Yywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSwgMCk7CisgICAgICAgIEpTU3RyaW5nUmVsZWFzZShmdW5jTmFtZSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgSlNTdHJpbmdSZWYgZnVuY05hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiYmFyIik7CisgICAgICAgIEpTT2JqZWN0UmVmIGpzRnVuYyA9IEpTT2JqZWN0
TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKGNvbnRleHQsIGZ1bmNOYW1lLCAmYmFyKTsKKyAgICAg
ICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3Qo
Y29udGV4dCksIGZ1bmNOYW1lLCBqc0Z1bmMsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUsIDApOworICAgICAgICBKU1N0cmluZ1Jl
bGVhc2UoZnVuY05hbWUpOworICAgIH0KK30KKwordm9pZCB3ZWJXb3JrZXJUZXJtaW5hdGUoSlND
b250ZXh0UmVmIGNvbnRleHQsIGludCBpc0RlZGljYXRlZCkKK3sKKyAgICBpZiAoaXNEZWRpY2F0
ZWQpCisgICAgICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVy
OjpzaGFyZWQoKS5idW5kbGUoKSwgVXRpbDo6dG9XSygiV2ViV29ya2VyVGVybWluYXRlTWVzc2Fn
ZSIpLmdldCgpLCAwKTsKKyAgICBlbHNlCisgICAgICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5q
ZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpzaGFyZWQoKS5idW5kbGUoKSwgVXRpbDo6dG9XSygiV2Vi
V29ya2VyU2hhcmVkVGVybWluYXRlTWVzc2FnZSIpLmdldCgpLCAwKTsKK30KKworY2xhc3MgV2Vi
V29ya2VyVGVzdCA6IHB1YmxpYyBJbmplY3RlZEJ1bmRsZVRlc3QgeworcHVibGljOgorICAgIFdl
YldvcmtlclRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIpCisgICAgICAgIDogSW5q
ZWN0ZWRCdW5kbGVUZXN0KGlkZW50aWZpZXIpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCBpbml0aWFsaXplKFdLQnVuZGxlUmVmLCBXS1R5cGVSZWYpCisgICAgeworICAgICAgICBX
S0J1bmRsZUZyYW1lU2V0V29ya2VySW5pdGlhbGl6ZUNhbGxiYWNrKHdlYldvcmtlckluaXRpYWxp
emUpOworICAgICAgICBXS0J1bmRsZUZyYW1lU2V0V29ya2VyVGVybWluYXRlQ2FsbGJhY2sod2Vi
V29ya2VyVGVybWluYXRlKTsKKyAgICB9Cit9OworCitzdGF0aWMgSW5qZWN0ZWRCdW5kbGVUZXN0
OjpSZWdpc3RlcjxXZWJXb3JrZXJUZXN0PiByZWdpc3RyYXIoIldlYldvcmtlclRlc3QiKTsKKwor
fSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204638</attachid>
            <date>2013-06-13 13:27:25 -0700</date>
            <delta_ts>2013-06-21 14:11:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117523-20130613172532.patch</filename>
            <type>text/plain</type>
            <size>27108</size>
            <attacher name="Tullio Lucena">tullio.lucena</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxNTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTliNjZkNjA3NWFhZDRj
NTllNDJmYmI4MzdlMWNhOTAzODlmNzIzNy4uYmI3YzI2OGViZmQwODkyOTEzYTA1MTA0MzY1ZWQz
NTJiNjEwOWRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTA2LTEzICBUdWxs
aW8gTHVjZW5hICA8dHVsbGlvLmx1Y2VuYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtXSzJd
IFByb29mIG9mIGNvbmNlcHQgdG8gaW5qZWN0IGN1c3RvbSBKYXZhU2NyaXB0IG9iamVjdHMgb24g
V2ViV29ya2VyIGNvbnRleHQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTc1MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZXJlIGFkZGVkIGNhbGxiYWNrcyBvZiBpbml0aWFsaXplIGFuZCB0ZXJtaW5h
dGUgZm9yIFdlYldvcmtlcnMgb24gV0syIEFQSS4KKyAgICAgICAgVGhlc2UgY2FsbGJhY2tzIGNh
biBoYW5kbGUgYmluZGluZ3MgYmV0d2VlbiBmdW5jdGlvbnMgb2YgSmF2YVNjcmlwdCBXb3JrZXJz
IGFuZCBmdW5jdGlvbnMgZGVmaW5lZCBhdCBhIHByZXZpb3VzbHkgbG9hZGVkIGJ1bmRsZS4KKyAg
ICAgICAgQW4gQVBJIHRlc3Qgd2FzIGFkZGVkIHRvIGNoZWNrIHRoZSB0aGVzZSBjYWxsYmFja3Mu
IEl0IHZlcmlmaWVzIHRoZSB0d28gdHlwZXMgb2Ygd29ya2VycywgZGVkaWNhdGVkIGFuZCBzaGFy
ZWQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6On5Xb3JrZXJTY3JpcHRD
b250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6Omlu
aXRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0
SW5pdFNjcmlwdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRy
b2xsZXI6OmluaXRTY3JpcHRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjpzZXRUZXJtaW5hdGVTY3JpcHRDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjp0ZXJtaW5hdGVTY3JpcHRDYWxsYmFjayk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oOgorCiAyMDEzLTA2
LTEzICBNaWhhaSBUaWNhICA8bWl0aWNhQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTIEJhY2tn
cm91bmQgQmxlbmRpbmddIEVuYWJsZSBDU1MgQmFja2dyb3VuZCBibGVuZGluZyBmb3IgbGF5ZXJz
IHdpdGggU1ZHcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzYTQ3NjVhYmJhMGY0NzRmNzBjZmIyYzZlYjcwMDI2
NjEzYTEyNGRhLi5lNzY1MGI1ZTVhYmQxYjA2YTVlNjk2MTlhZTI5NmQ0YzQzMTBhNGQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTMtMDYtMTMgIFR1bGxpbyBMdWNlbmEgIDx0dWxs
aW8ubHVjZW5hQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1dLMl0gUHJvb2Ygb2YgY29uY2Vw
dCB0byBpbmplY3QgY3VzdG9tIEphdmFTY3JpcHQgb2JqZWN0cyBvbiBXZWJXb3JrZXIgY29udGV4
dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzUy
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlcmUg
YWRkZWQgY2FsbGJhY2tzIG9mIGluaXRpYWxpemUgYW5kIHRlcm1pbmF0ZSBmb3IgV2ViV29ya2Vy
cyBvbiBXSzIgQVBJLgorICAgICAgICBUaGVzZSBjYWxsYmFja3MgY2FuIGhhbmRsZSBiaW5kaW5n
cyBiZXR3ZWVuIGZ1bmN0aW9ucyBvZiBKYXZhU2NyaXB0IFdvcmtlcnMgYW5kIGZ1bmN0aW9ucyBk
ZWZpbmVkIGF0IGEgcHJldmlvdXNseSBsb2FkZWQgYnVuZGxlLgorICAgICAgICBBbiBBUEkgdGVz
dCB3YXMgYWRkZWQgdG8gY2hlY2sgdGhlIHRoZXNlIGNhbGxiYWNrcy4gSXQgdmVyaWZpZXMgdGhl
IHR3byB0eXBlcyBvZiB3b3JrZXJzLCBkZWRpY2F0ZWQgYW5kIHNoYXJlZC4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHA6CisgICAg
ICAgIChsb2NhbFdvcmtlclNjcmlwdEluaXRDYWxsYmFjayk6CisgICAgICAgIChXS0J1bmRsZUZy
YW1lU2V0V29ya2VySW5pdGlhbGl6ZUNhbGxiYWNrKToKKyAgICAgICAgKGxvY2FsV29ya2VyU2Ny
aXB0VGVybWluYXRlQ2FsbGJhY2spOgorICAgICAgICAoV0tCdW5kbGVGcmFtZVNldFdvcmtlclRl
cm1pbmF0ZUNhbGxiYWNrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlRnJhbWUuaDoKKwogMjAxMy0wNi0xMyAgTWljaGHFgiBQYWt1xYJhIHZlbCBS
dXRrYSAgPG0ucGFrdWxhQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gV3Jvbmcg
Y29udGV4dCBtZW51IGFuZCBwb3B1cCBtZW51IHBvc2l0aW9ucyB3aGVuIHNjcm9sbCBpcyBhcHBs
aWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwCmluZGV4IGMzYWQ1OGMwNjBlYjMwNzcxOTBjZmUzNjI4N2E3MzJkMTRiMDk2
MjIuLmU3NmU5ZGNkNDI4MjM5ZDc1ZWQ1MDQwNjIzOWY4MmNiNjY0MDgzOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3Bw
CkBAIC02Niw2ICs2Niw5IEBAIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OldvcmtlclNjcmlwdENv
bnRyb2xsZXIoV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCkKIAogV29ya2VyU2NyaXB0Q29u
dHJvbGxlcjo6fldvcmtlclNjcmlwdENvbnRyb2xsZXIoKQogeworICAgIGlmICh0ZXJtaW5hdGVT
Y3JpcHRDYWxsYmFjaygpKQorICAgICAgICB0ZXJtaW5hdGVTY3JpcHRDYWxsYmFjaygpKG1fd29y
a2VyQ29udGV4dFdyYXBwZXItPmdsb2JhbEV4ZWMoKSwgbV93b3JrZXJDb250ZXh0LT5pc0RlZGlj
YXRlZFdvcmtlckNvbnRleHQoKSk7CisKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKICAg
ICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLmNsZWFyKCk7CiAgICAgbV92bS5jbGVhcigpOwpAQCAt
MTA5LDYgKzExMiw5IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgp
CiAgICAgfQogICAgIEFTU0VSVChtX3dvcmtlckNvbnRleHRXcmFwcGVyLT5nbG9iYWxPYmplY3Qo
KSA9PSBtX3dvcmtlckNvbnRleHRXcmFwcGVyKTsKICAgICBBU1NFUlQoYXNPYmplY3QobV93b3Jr
ZXJDb250ZXh0V3JhcHBlci0+cHJvdG90eXBlKCkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtl
ckNvbnRleHRXcmFwcGVyKTsKKworICAgIGlmIChpbml0U2NyaXB0Q2FsbGJhY2soKSkKKyAgICAg
ICAgaW5pdFNjcmlwdENhbGxiYWNrKCkobV93b3JrZXJDb250ZXh0V3JhcHBlci0+Z2xvYmFsRXhl
YygpLCBtX3dvcmtlckNvbnRleHQtPmlzRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpKTsKIH0KIAog
dm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJiBzb3VyY2VDb2RlKQpAQCAtMjA1LDYgKzIxMSwyOSBAQCB2b2lkIFdvcmtlclNjcmlwdENv
bnRyb2xsZXI6OmRldGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKQogICAgIGRl
YnVnZ2VyLT5kZXRhY2gobV93b3JrZXJDb250ZXh0V3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkpOwog
fQogCitXb3JrZXJTY3JpcHRDYWxsYmFjayBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjptX2luaXRT
Y3JpcHRDYWxsYmFjayA9IDA7CitXb3JrZXJTY3JpcHRDYWxsYmFjayBXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjptX3Rlcm1pbmF0ZVNjcmlwdENhbGxiYWNrID0gMDsKKwordm9pZCBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjpzZXRJbml0U2NyaXB0Q2FsbGJhY2soV29ya2VyU2NyaXB0Q2FsbGJhY2sg
Y2FsbGJhY2spCit7CisgICAgbV9pbml0U2NyaXB0Q2FsbGJhY2sgPSBjYWxsYmFjazsKK30KKwor
V29ya2VyU2NyaXB0Q2FsbGJhY2sgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdENh
bGxiYWNrKCkKK3sKKyAgICByZXR1cm4gbV9pbml0U2NyaXB0Q2FsbGJhY2s7Cit9CisKK3ZvaWQg
V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0VGVybWluYXRlU2NyaXB0Q2FsbGJhY2soV29ya2Vy
U2NyaXB0Q2FsbGJhY2sgY2FsbGJhY2spCit7CisgICAgbV90ZXJtaW5hdGVTY3JpcHRDYWxsYmFj
ayA9IGNhbGxiYWNrOworfQorCitXb3JrZXJTY3JpcHRDYWxsYmFjayBXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjp0ZXJtaW5hdGVTY3JpcHRDYWxsYmFjaygpCit7CisgICAgcmV0dXJuIG1fdGVybWlu
YXRlU2NyaXB0Q2FsbGJhY2s7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V29ya2VyU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGNmZjBjYjU2M2NkY2E4N2UwNjEzNWVkY2Fh
YWY1MTcyYWViZWNmNGMuLjFmZmJkMTk1ZjMzZTc2NDA3NjU0ZjYxMTg0NGU4MTJmMTE5NGZiNmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250
cm9sbGVyLmgKQEAgLTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorICAgIHR5cGVkZWYgdm9pZCAoKldvcmtlclNjcmlwdENhbGxiYWNrKShKU0M6
OkV4ZWNTdGF0ZSosIGJvb2wpOworCiAgICAgY2xhc3MgSlNXb3JrZXJDb250ZXh0OwogICAgIGNs
YXNzIFNjcmlwdFNvdXJjZUNvZGU7CiAgICAgY2xhc3MgU2NyaXB0VmFsdWU7CkBAIC04Miw2ICs4
NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgYXR0YWNoRGVidWdnZXIo
SlNDOjpEZWJ1Z2dlciopOwogICAgICAgICB2b2lkIGRldGFjaERlYnVnZ2VyKEpTQzo6RGVidWdn
ZXIqKTsKIAorICAgICAgICBzdGF0aWMgdm9pZCBzZXRJbml0U2NyaXB0Q2FsbGJhY2soV29ya2Vy
U2NyaXB0Q2FsbGJhY2spOworICAgICAgICBzdGF0aWMgV29ya2VyU2NyaXB0Q2FsbGJhY2sgaW5p
dFNjcmlwdENhbGxiYWNrKCk7CisgICAgICAgIHN0YXRpYyB2b2lkIHNldFRlcm1pbmF0ZVNjcmlw
dENhbGxiYWNrKFdvcmtlclNjcmlwdENhbGxiYWNrKTsKKyAgICAgICAgc3RhdGljIFdvcmtlclNj
cmlwdENhbGxiYWNrIHRlcm1pbmF0ZVNjcmlwdENhbGxiYWNrKCk7CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdm9pZCBpbml0U2NyaXB0SWZOZWVkZWQoKQogICAgICAgICB7CkBAIC05NSw2ICsxMDEs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEpTQzo6U3Ryb25nPEpTV29ya2VyQ29u
dGV4dD4gbV93b3JrZXJDb250ZXh0V3JhcHBlcjsKICAgICAgICAgYm9vbCBtX2V4ZWN1dGlvbkZv
cmJpZGRlbjsKICAgICAgICAgbXV0YWJsZSBNdXRleCBtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTXV0
ZXg7CisKKyAgICAgICAgc3RhdGljIFdvcmtlclNjcmlwdENhbGxiYWNrIG1faW5pdFNjcmlwdENh
bGxiYWNrOworICAgICAgICBzdGF0aWMgV29ya2VyU2NyaXB0Q2FsbGJhY2sgbV90ZXJtaW5hdGVT
Y3JpcHRDYWxsYmFjazsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZUZyYW1lLmNwcAppbmRleCA2MWIzODA4MDMwNzlhODMwMTQyODhmZGM4OTFi
ZDdiZDEyZTIwZDlkLi44YmI1ZDdkYjkzYjYwODQ4NDc3NTk0ZDRjOWFhNTQ0NjEyOWFkMWRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNs
dWRlICJXS0J1bmRsZUZyYW1lUHJpdmF0ZS5oIgogCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVI
aXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiSmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oIgogI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1
ZGUgIldLRGF0YS5oIgpAQCAtMzcsNiArMzgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZVZpZXcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAt
MTE0LDYgKzExNiw0NiBAQCBKU1ZhbHVlUmVmIFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0V3Jh
cHBlckZvck5vZGVGb3JXb3JsZChXS0J1bmRsZUZyYW1lUmVmIGZyYQogICAgIHJldHVybiB0b0lt
cGwoZnJhbWVSZWYpLT5qc1dyYXBwZXJGb3JXb3JsZCh0b0ltcGwobm9kZUhhbmRsZVJlZiksIHRv
SW1wbCh3b3JsZFJlZikpOwogfQogCitzdGF0aWMgV0tCdW5kbGVGcmFtZVdvcmtlclNjcmlwdENh
bGxiYWNrIHNfbG9jYWxXb3JrZXJTY3JpcHRJbml0Q2FsbGJhY2s7CisKK3N0YXRpYyB2b2lkIGxv
Y2FsV29ya2VyU2NyaXB0SW5pdENhbGxiYWNrKEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGUsIGJv
b2wgaXNEZWRpY2F0ZWQpCit7CisgICAgc19sb2NhbFdvcmtlclNjcmlwdEluaXRDYWxsYmFjayh0
b1JlZihleGVjU3RhdGUpLCBpc0RlZGljYXRlZCk7Cit9CisKK3ZvaWQgV0tCdW5kbGVGcmFtZVNl
dFdvcmtlckluaXRpYWxpemVDYWxsYmFjayhXS0J1bmRsZUZyYW1lV29ya2VyU2NyaXB0Q2FsbGJh
Y2sgY2FsbGJhY2spCit7CisjaWYgRU5BQkxFKFdPUktFUlMpCisgICAgaWYgKGNhbGxiYWNrKSB7
CisgICAgICAgIHNfbG9jYWxXb3JrZXJTY3JpcHRJbml0Q2FsbGJhY2sgPSBjYWxsYmFjazsKKyAg
ICAgICAgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0SW5pdFNjcmlwdENhbGxiYWNrKGxvY2Fs
V29ya2VyU2NyaXB0SW5pdENhbGxiYWNrKTsKKyAgICB9IGVsc2UKKyAgICAgICAgV29ya2VyU2Ny
aXB0Q29udHJvbGxlcjo6c2V0SW5pdFNjcmlwdENhbGxiYWNrKDApOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0oY2FsbGJhY2spOworI2VuZGlmCit9CisKK3N0YXRpYyBXS0J1bmRsZUZyYW1lV29y
a2VyU2NyaXB0Q2FsbGJhY2sgc19sb2NhbFdvcmtlclNjcmlwdFRlcm1pbmF0ZUNhbGxiYWNrOwor
CitzdGF0aWMgdm9pZCBsb2NhbFdvcmtlclNjcmlwdFRlcm1pbmF0ZUNhbGxiYWNrKEpTQzo6RXhl
Y1N0YXRlKiBleGVjU3RhdGUsIGJvb2wgaXNEZWRpY2F0ZWQpCit7CisgICAgc19sb2NhbFdvcmtl
clNjcmlwdFRlcm1pbmF0ZUNhbGxiYWNrKHRvUmVmKGV4ZWNTdGF0ZSksIGlzRGVkaWNhdGVkKTsK
K30KKwordm9pZCBXS0J1bmRsZUZyYW1lU2V0V29ya2VyVGVybWluYXRlQ2FsbGJhY2soV0tCdW5k
bGVGcmFtZVdvcmtlclNjcmlwdENhbGxiYWNrIGNhbGxiYWNrKQoreworI2lmIEVOQUJMRShXT1JL
RVJTKQorICAgIGlmIChjYWxsYmFjaykgeworICAgICAgICBzX2xvY2FsV29ya2VyU2NyaXB0VGVy
bWluYXRlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgV29ya2VyU2NyaXB0Q29udHJvbGxl
cjo6c2V0VGVybWluYXRlU2NyaXB0Q2FsbGJhY2sobG9jYWxXb3JrZXJTY3JpcHRUZXJtaW5hdGVD
YWxsYmFjayk7CisgICAgfSBlbHNlCisgICAgICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNl
dFRlcm1pbmF0ZVNjcmlwdENhbGxiYWNrKDApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY2Fs
bGJhY2spOworI2VuZGlmCit9CisKIEpTVmFsdWVSZWYgV0tCdW5kbGVGcmFtZUdldEphdmFTY3Jp
cHRXcmFwcGVyRm9yUmFuZ2VGb3JXb3JsZChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS0J1
bmRsZVJhbmdlSGFuZGxlUmVmIHJhbmdlSGFuZGxlUmVmLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVm
IHdvcmxkUmVmKQogewogICAgIHJldHVybiB0b0ltcGwoZnJhbWVSZWYpLT5qc1dyYXBwZXJGb3JX
b3JsZCh0b0ltcGwocmFuZ2VIYW5kbGVSZWYpLCB0b0ltcGwod29ybGRSZWYpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVGcmFtZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUZyYW1lLmgKaW5kZXggOGMyYjg3NWY1MGY0MGZjM2FiMzFiMjlhYmUyYWJiZWE0
MDhmNTQ0Zi4uNTM5NzE4ZDA1N2Q3ZGM2ZjViNzQzNDNkOWNlMjU1NjM3NjJiZWVhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmgKQEAgLTUxLDYgKzUxLDEwIEBAIFdLX0VYUE9SVCBXS0Zy
YW1lTG9hZFN0YXRlIFdLQnVuZGxlRnJhbWVHZXRGcmFtZUxvYWRTdGF0ZShXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lCiBXS19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIFdLQnVuZGxlRnJhbWVHZXRK
YXZhU2NyaXB0Q29udGV4dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKTsKIFdLX0VYUE9SVCBKU0ds
b2JhbENvbnRleHRSZWYgV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0Rm9yV29ybGQo
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiB3b3JsZCk7CiAK
K3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlRnJhbWVXb3JrZXJTY3JpcHRDYWxsYmFjaykoSlNDb250
ZXh0UmVmIGNvbnRleHQsIGludCBpc0RlZGljYXRlZCk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRs
ZUZyYW1lU2V0V29ya2VySW5pdGlhbGl6ZUNhbGxiYWNrKFdLQnVuZGxlRnJhbWVXb3JrZXJTY3Jp
cHRDYWxsYmFjayBjYWxsYmFjayk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUZyYW1lU2V0V29y
a2VyVGVybWluYXRlQ2FsbGJhY2soV0tCdW5kbGVGcmFtZVdvcmtlclNjcmlwdENhbGxiYWNrIGNh
bGxiYWNrKTsKKwogV0tfRVhQT1JUIFdLQnVuZGxlRnJhbWVSZWYgV0tCdW5kbGVGcmFtZUZvckph
dmFTY3JpcHRDb250ZXh0KEpTQ29udGV4dFJlZiBjb250ZXh0KTsKIAogV0tfRVhQT1JUIEpTVmFs
dWVSZWYgV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRXcmFwcGVyRm9yTm9kZUZvcldvcmxkKFdL
QnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBub2RlSGFuZGxlLCBX
S0J1bmRsZVNjcmlwdFdvcmxkUmVmIHdvcmxkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkZmUxYzNmNTY0ZDRkZGU1ODFkYjA2ZGIxMjEwZWVh
ZTIxMDBlOGI4Li5hNjJjYjU3YTI2MWJiZGYxY2EzNGNlZmUwMWRmMmIxNzc0MWYyNGE4IDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzcgQEAKKzIwMTMtMDYtMTMgIFR1bGxpbyBMdWNlbmEgIDx0dWxsaW8ubHVjZW5hQG9wZW5ib3Nz
YS5vcmc+CisKKyAgICAgICAgW1dLMl0gUHJvb2Ygb2YgY29uY2VwdCB0byBpbmplY3QgY3VzdG9t
IEphdmFTY3JpcHQgb2JqZWN0cyBvbiBXZWJXb3JrZXIgY29udGV4dC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzUyMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlcmUgYWRkZWQgY2FsbGJhY2tzIG9m
IGluaXRpYWxpemUgYW5kIHRlcm1pbmF0ZSBmb3IgV2ViV29ya2VycyBvbiBXSzIgQVBJLgorICAg
ICAgICBUaGVzZSBjYWxsYmFja3MgY2FuIGhhbmRsZSBiaW5kaW5ncyBiZXR3ZWVuIGZ1bmN0aW9u
cyBvZiBKYXZhU2NyaXB0IFdvcmtlcnMgYW5kIGZ1bmN0aW9ucyBkZWZpbmVkIGF0IGEgcHJldmlv
dXNseSBsb2FkZWQgYnVuZGxlLgorICAgICAgICBBbiBBUEkgdGVzdCB3YXMgYWRkZWQgdG8gY2hl
Y2sgdGhlIHRoZXNlIGNhbGxiYWNrcy4gSXQgdmVyaWZpZXMgdGhlIHR3byB0eXBlcyBvZiB3b3Jr
ZXJzLCBkZWRpY2F0ZWQgYW5kIHNoYXJlZC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL0luamVjdGVkQnVuZGxlLnByaToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9XZWJXb3JrZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJT
aGFyZWRUZXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9XZWJXb3JrZXJTaGFyZWRUZXN0LmpzOiBBZGRlZC4KKyAgICAgICAgKG9uY29ubmVjdCk6
CisgICAgICAgIChsaXN0ZW5Gb3JNZXNzYWdlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvV2ViV29ya2VyVGVzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyVGVzdC5qczogQWRkZWQuCisgICAgICAgIChz
ZWxmLm9ubWVzc2FnZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dl
Yldvcmtlcl9CdW5kbGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmZvbyk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpiYXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
d2ViV29ya2VySW5pdGlhbGl6ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp3ZWJXb3JrZXJU
ZXJtaW5hdGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6V2ViV29ya2VyVGVzdDo6V2ViV29y
a2VyVGVzdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpXZWJXb3JrZXJUZXN0Ojppbml0aWFs
aXplKToKKwogMjAxMy0wNi0xMyAgTWljaGFlbCBCcsO8bmluZyAgPG1pY2hhZWwuYnJ1bmluZ0Bk
aWdpYS5jb20+CiAKICAgICAgICAgW1F0XVtNYWNdIERpc2FibGUgUVRLaXQgdmlkZW8gb24gT1Mg
WC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IDQ5MzgxNGQzNjU2ZTA5NzFkNmJl
ZWNlOTQzZDA2YTQ0ZGE2NWNmNmUuLjhlZjQyMzhmNDZjYWZlZWYzYTc5MWZiNTg2ODc3NDY4Mzdm
NmQ4MjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtNDcsNiArNDcsNyBAQCBh
ZGRfbGlicmFyeShUZXN0V2ViS2l0QVBJSW5qZWN0ZWRCdW5kbGUgU0hBUkVECiAgICAgJHtURVNU
V0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViS2l0Mi9SZXNwb25zaXZlbmVzc1RpbWVyRG9lc250Rmly
ZUVhcmx5X0J1bmRsZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJLaXQy
L1Nob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtX0J1bmRsZS5jcHAKICAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XZWJLaXQyL1VzZXJNZXNzYWdlX0J1bmRsZS5jcHAKKyAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlcl9CdW5kbGUuY3BwCiAgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViS2l0Mi9XS0Nvbm5lY3Rpb25fQnVuZGxlLmNw
cAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYktpdDIvV2lsbFNlbmRTdWJtaXRF
dmVudF9CdW5kbGUuY3BwCiApCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1h
a2VmaWxlLmFtIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbQppbmRleCBhM2Iz
Zjk4NTc3Y2Q3YTgzZmQ4MGU3MjAyNmI4ZWZlNmE3YTRmMDA2Li4yYzdhOTMxYTVjNjNmOGUwNmI4
NGJlODk3NzhkOWUzN2Y5MWMyZjUxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0dO
VW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KQEAg
LTI4Miw2ICsyODIsNyBAQCBQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1Rlc3RXZWJLaXQyX1NPVVJD
RVMgPSBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1NwYWNlYmFyU2Nyb2xs
aW5nLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1Rlcm1pbmF0ZVR3
aWNlLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1VzZXJNZXNzYWdl
LmNwcCBcCisJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlci5jcHAg
XAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XaWxsU2VuZFN1Ym1pdEV2ZW50
LmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dLQ29ubmVjdGlvbi5j
cHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XS1BhZ2VHZXRTY2FsZUZh
Y3Rvck5vdFplcm8uY3BwIFwKQEAgLTMxOSw2ICszMjAsNyBAQCBMaWJyYXJpZXNfbGliVGVzdFdl
YktpdEFQSUluamVjdGVkQnVuZGxlX2xhX1NPVVJDRVMgPSBcCiAJVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL1Jlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHlfQnVuZGxl
LmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1Nob3VsZEdvVG9CYWNr
Rm9yd2FyZExpc3RJdGVtX0J1bmRsZS5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9Vc2VyTWVzc2FnZV9CdW5kbGUuY3BwIFwKKwlUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvV2ViV29ya2VyX0J1bmRsZS5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9XaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgXAogCVRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XS0Nvbm5lY3Rpb25fQnVuZGxlLmNwcCBcCiAJVG9v
bHMvVGVzdFdlYktpdEFQSS9ndGsvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyR3RrLmNwcCBcCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0luamVjdGVkQnVuZGxlLnByaSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGUucHJpCmluZGV4IDE3MWEyMDBmMGRiNzRjMjk4
NjYzNmI5NTFlZTBmMjIxMzU0NWYxY2EuLmM4YzJiZGNhZWE0MGQ4OWYxZTgyZTZjMGZkZWRiZThl
NzA0MmY4MzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGUu
cHJpCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGUucHJpCkBAIC0zOCw2
ICszOCw3IEBAIFNPVVJDRVMgKz0gXAogICAgICQkUFdEL1Rlc3RzL1dlYktpdDIvUmVzcG9uc2l2
ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3BwIFwKICAgICAkJFBXRC9UZXN0cy9X
ZWJLaXQyL1Nob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtX0J1bmRsZS5jcHAgXAogICAgICQk
UFdEL1Rlc3RzL1dlYktpdDIvVXNlck1lc3NhZ2VfQnVuZGxlLmNwcCBcCisgICAgJCRQV0QvVGVz
dHMvV2ViS2l0Mi9XZWJXb3JrZXJfQnVuZGxlLmNwcCBcCiAgICAgJCRQV0QvVGVzdHMvV2ViS2l0
Mi9XaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgXAogICAgICQkUFdEL1Rlc3RzL1dlYktp
dDIvV0tDb25uZWN0aW9uX0J1bmRsZS5jcHAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1FZmwu
Y21ha2UKaW5kZXggODcwZGMxYjQwMDc5Y2JkNjkwY2FiZTc2NmRjNDA5NTkxMGFhZmIwYi4uMjEy
NTU4Mzc4ZDlkYTNlNTIxZWFhNWY2YmU3YTQyMjJlODlmZDI0ZSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC04OCw2ICs4OCw3IEBAIHNldCh0ZXN0X3dlYmtpdDJfYXBp
X0JJTkFSSUVTCiAgICAgUHJldmVudEVtcHR5VXNlckFnZW50CiAgICAgUHJpdmF0ZUJyb3dzaW5n
UHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2sKICAgICBVc2VyTWVzc2FnZQorICAgIFdlYldvcmtl
cgogICAgIFdLQ29ubmVjdGlvbgogICAgIFdLUHJlZmVyZW5jZXMKICAgICBXS1N0cmluZwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlci5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jYjUwMjg1ODhlZDVlMmJjOTQ0MzU0NmU4NTJmZDJhYjI3YWVkYWM1Ci0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlci5jcHAK
QEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSU5kVCAtIEluc3Rp
dHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRl
IDxXZWJLaXQyL1dLQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlLmg+CisjaW5j
bHVkZSA8V2ViS2l0Mi9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2luY2x1ZGUgPFdlYktpdDIv
V0tWaWV3Lmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgaW5p
dGlhbGl6ZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIHRlcm1pbmF0ZWQgPSBmYWxzZTsKK3N0YXRp
YyBib29sIGNoYW5nZWRUaXRsZSA9IGZhbHNlOworc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWRTaGFy
ZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIHRlcm1pbmF0ZWRTaGFyZWQgPSBmYWxzZTsKK3N0YXRp
YyBib29sIGNoYW5nZWRUaXRsZVNoYXJlZCA9IGZhbHNlOworCitzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1l
c3NhZ2VOYW1lLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQoreworICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiV2ViV29ya2VySW5pdE1lc3NhZ2UiKSkK
KyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJXZWJXb3JrZXJUZXJtaW5hdGVNZXNzYWdlIikp
CisgICAgICAgIHRlcm1pbmF0ZWQgPSB0cnVlOworICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJXZWJXb3JrZXJTaGFyZWRJbml0TWVzc2FnZSIp
KQorICAgICAgICBpbml0aWFsaXplZFNoYXJlZCA9IHRydWU7CisgICAgZWxzZSBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIldlYldvcmtlclNoYXJlZFRlcm1p
bmF0ZU1lc3NhZ2UiKSkKKyAgICAgICAgdGVybWluYXRlZFNoYXJlZCA9IHRydWU7Cit9CisKK3N0
YXRpYyB2b2lkIGRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYg
dGl0bGUsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCAqKQoreworICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHRpdGxlLCAiV2ViV29ya2VyVGl0bGUiKSkKKyAg
ICAgICAgY2hhbmdlZFRpdGxlID0gdHJ1ZTsKKyAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKHRpdGxlLCAiV2ViV29ya2VyU2hhcmVkVGl0bGUiKSkKKyAgICAgICAgY2hh
bmdlZFRpdGxlU2hhcmVkID0gdHJ1ZTsKK30KKworVEVTVChXZWJLaXQyLCBXZWJXb3JrZXIpCit7
CisgICAgLy8gVGhpcyB0ZXN0IGNvdmVyIHRoZSBiaW5kaW5nIGJldHdlZW4gZnVuY3Rpb25zIG9m
IEphdmFTY3JpcHQgV29ya2VycyBhbmQKKyAgICAvLyBmdW5jdGlvbnMgZGVmaW5lZCBhdCBhIHBy
ZXZpb3VzbHkgbG9hZGVkIGJ1bmRsZS4gSXQgdmVyaWZpZXMgdGhlIHR3bworICAgIC8vIHR5cGVz
IG9mIFdvcmtlcnMsIGRlZGljYXRlZCBhbmQgc2hhcmVkLgorICAgIFdLUmV0YWluUHRyPFdLQ29u
dGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRC
dW5kbGVUZXN0KCJXZWJXb3JrZXJUZXN0IikpOworICAgIFdLUmV0YWluUHRyPFdLVmlld1JlZj4g
dmlldyhBZG9wdFdLLCBXS1ZpZXdDcmVhdGUoY29udGV4dC5nZXQoKSwgMCkpOworCisgICAgV0tW
aWV3SW5pdGlhbGl6ZSh2aWV3LmdldCgpKTsKKworCisgICAgV0tQYWdlTG9hZGVyQ2xpZW50IHBh
Z2VMb2FkZXJDbGllbnQ7CisgICAgbWVtc2V0KCZwYWdlTG9hZGVyQ2xpZW50LCAwLCBzaXplb2Yo
V0tQYWdlTG9hZGVyQ2xpZW50KSk7CisgICAgcGFnZUxvYWRlckNsaWVudC52ZXJzaW9uID0ga1dL
UGFnZUxvYWRlckNsaWVudEN1cnJlbnRWZXJzaW9uOworICAgIHBhZ2VMb2FkZXJDbGllbnQuZGlk
UmVjZWl2ZVRpdGxlRm9yRnJhbWUgPSBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZTsKKyAgICBXS1Bh
Z2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLVmlld0dldFBhZ2Uodmlldy5nZXQoKSksICZwYWdlTG9h
ZGVyQ2xpZW50KTsKKworICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50IGluamVjdGVk
QnVuZGxlQ2xpZW50OworICAgIG1lbXNldCgmaW5qZWN0ZWRCdW5kbGVDbGllbnQsIDAsIHNpemVv
ZihpbmplY3RlZEJ1bmRsZUNsaWVudCkpOworICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGU7CisgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4
dC5nZXQoKSwgJmluamVjdGVkQnVuZGxlQ2xpZW50KTsKKworICAgIFdLUGFnZUdyb3VwUmVmIHBh
Z2VHcm91cCA9IFdLUGFnZUdldFBhZ2VHcm91cChXS1ZpZXdHZXRQYWdlKHZpZXcuZ2V0KCkpKTsK
KyAgICBXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzID0gV0tQYWdlR3JvdXBHZXRQcmVmZXJl
bmNlcyhwYWdlR3JvdXApOworICAgIFdLUHJlZmVyZW5jZXNTZXRGaWxlQWNjZXNzRnJvbUZpbGVV
UkxzQWxsb3dlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CisKKyAgICBXS1JldGFpblB0cjxXS1VSTFJl
Zj4gdXJsID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgiLi4vV2ViS2l0Mi9X
ZWJXb3JrZXJUZXN0IiwgImh0bWwiKSk7CisgICAgV0tQYWdlTG9hZFVSTChXS1ZpZXdHZXRQYWdl
KHZpZXcuZ2V0KCkpLCB1cmwuZ2V0KCkpOworICAgIFV0aWw6OnJ1bigmaW5pdGlhbGl6ZWQpOwor
ICAgIFV0aWw6OnJ1bigmdGVybWluYXRlZCk7CisgICAgVXRpbDo6cnVuKCZjaGFuZ2VkVGl0bGUp
OworCisgICAgdXJsID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgiLi4vV2Vi
S2l0Mi9XZWJXb3JrZXJTaGFyZWRUZXN0IiwgImh0bWwiKSk7CisgICAgV0tQYWdlTG9hZFVSTChX
S1ZpZXdHZXRQYWdlKHZpZXcuZ2V0KCkpLCB1cmwuZ2V0KCkpOworICAgIFV0aWw6OnJ1bigmaW5p
dGlhbGl6ZWRTaGFyZWQpOworICAgIFV0aWw6OnJ1bigmdGVybWluYXRlZFNoYXJlZCk7CisgICAg
VXRpbDo6cnVuKCZjaGFuZ2VkVGl0bGVTaGFyZWQpOworfQorCit9IC8vIFRlc3RXZWJLaXRBUEkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJT
aGFyZWRUZXN0Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29y
a2VyU2hhcmVkVGVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3NzUzMDcyMjZlYTc1YzZkOWU5MzkxZjlm
ZWIxYWIyNTlmNjlmZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvV2ViV29ya2VyU2hhcmVkVGVzdC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzxo
dG1sPgorICAgIDxib2R5PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgdmFyIHdvcmtl
ciA9IG5ldyBTaGFyZWRXb3JrZXIoIldlYldvcmtlclNoYXJlZFRlc3QuanMiKTsKKyAgICAgICAg
ICAgIHdvcmtlci5wb3J0LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LnRpdGxlID0gZXZlbnQuZGF0YTsKKyAgICAg
ICAgICAgIH0sIGZhbHNlKTsKKyAgICAgICAgICAgIHdvcmtlci5wb3J0LnN0YXJ0KCk7CisgICAg
ICAgICAgICB3b3JrZXIucG9ydC5wb3N0TWVzc2FnZSgiV2ViV29ya2VyU2hhcmVkTWVzc2FnZSIp
OworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyU2hhcmVkVGVzdC5qcyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJTaGFyZWRUZXN0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk4NGJhZjY3NzNiNmE0ZmU4ZGJkYmM3OGRlZDFhOGU3ZGMxYmVlYTQKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29y
a2VyU2hhcmVkVGVzdC5qcwpAQCAtMCwwICsxLDEzIEBACit2YXIgcG9ydHMgPSBbXTsKKworb25j
b25uZWN0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB2YXIgcG9ydCA9IGV2ZW50LnBvcnRzWzBd
OworICAgIHBvcnRzLnB1c2gocG9ydCk7CisgICAgcG9ydC5zdGFydCgpOworICAgIHBvcnQuYWRk
RXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2ZW50KSB7IGxpc3RlbkZvck1lc3Nh
Z2UoZXZlbnQsIHBvcnQpOyB9ICk7Cit9CisKK2xpc3RlbkZvck1lc3NhZ2UgPSBmdW5jdGlvbiAo
ZXZlbnQsIHBvcnQpIHsKKyAgICBwb3J0LnBvc3RNZXNzYWdlKHNlbGYuYmFyKCkpOworICAgIHNl
bGYuY2xvc2UoKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9XZWJXb3JrZXJUZXN0Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvV2ViV29ya2VyVGVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3ZmYyNzA0NjdjMTc5NDczYzI0NTI0
Njk4YzY0MTM5MGU2NmM2NzkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyVGVzdC5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzxodG1s
PgorICAgIDxib2R5PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgdmFyIHdvcmtlciA9
IG5ldyBXb3JrZXIoIldlYldvcmtlclRlc3QuanMiKTsKKyAgICAgICAgICAgIHdvcmtlci5wb3N0
TWVzc2FnZSgiV2ViV29ya2VyTWVzc2FnZSIpOworICAgICAgICAgICAgd29ya2VyLm9ubWVzc2Fn
ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQudGl0bGUgPSBl
dmVudC5kYXRhOworICAgICAgICAgICAgfTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L1dlYldvcmtlclRlc3QuanMgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2Vi
V29ya2VyVGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Njg1YmI1NWMyMjE1NGUxMDdmMzRiNTI1MjU4NTE3
MjQwNDkxMzI4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL1dlYldvcmtlclRlc3QuanMKQEAgLTAsMCArMSw1IEBACitzZWxmLm9ubWVzc2FnZSA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgc2VsZi5wb3N0TWVzc2FnZShzZWxmLmZvbygpKTsKKyAg
ICBzZWxmLmNsb3NlKCk7CisgICAgcmV0dXJuOworfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJfQnVuZGxlLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJfQnVuZGxlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
Y2I5MzcxMjRjMjhjMjgxZjRiYmY2ZWQ3YzM0ZDJiZWJmZDI4YzI3Ci0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlcl9CdW5kbGUuY3Bw
CkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSU5kVCAtIEluc3Rp
dHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVUZXN0LmgiCisjaW5jbHVk
ZSA8V2ViS2l0Mi9XS0J1bmRsZUZyYW1lLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
KworSlNWYWx1ZVJlZiBmb28oSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0
UmVmLCBzaXplX3QsIGNvbnN0IEpTVmFsdWVSZWZbXSwgSlNWYWx1ZVJlZiopCit7CisgICAgV0tC
dW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OnNoYXJlZCgpLmJ1bmRs
ZSgpLCBVdGlsOjp0b1dLKCJXZWJXb3JrZXJJbml0TWVzc2FnZSIpLmdldCgpLCAwKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY3R4LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiV2ViV29ya2VyVGl0bGUiKSk7Cit9CisKK0pTVmFsdWVSZWYgYmFyKEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiwgc2l6ZV90LCBjb25zdCBKU1ZhbHVlUmVmW10s
IEpTVmFsdWVSZWYqKQoreworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGVD
b250cm9sbGVyOjpzaGFyZWQoKS5idW5kbGUoKSwgVXRpbDo6dG9XSygiV2ViV29ya2VyU2hhcmVk
SW5pdE1lc3NhZ2UiKS5nZXQoKSwgMCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGN0
eCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIldlYldvcmtlclNoYXJlZFRpdGxlIikp
OworfQorCit2b2lkIHdlYldvcmtlckluaXRpYWxpemUoSlNDb250ZXh0UmVmIGNvbnRleHQsIGlu
dCBpc0RlZGljYXRlZCkKK3sKKyAgICBpZiAoaXNEZWRpY2F0ZWQpIHsKKyAgICAgICAgSlNTdHJp
bmdSZWYgZnVuY05hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiZm9vIik7Cisg
ICAgICAgIEpTT2JqZWN0UmVmIGpzRnVuYyA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxi
YWNrKGNvbnRleHQsIGZ1bmNOYW1lLCAmZm9vKTsKKyAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0
eShjb250ZXh0LCBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QoY29udGV4dCksIGZ1bmNOYW1lLCBq
c0Z1bmMsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUsIDApOworICAgICAgICBKU1N0cmluZ1JlbGVhc2UoZnVuY05hbWUpOworICAg
IH0gZWxzZSB7CisgICAgICAgIEpTU3RyaW5nUmVmIGZ1bmNOYW1lID0gSlNTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoImJhciIpOworICAgICAgICBKU09iamVjdFJlZiBqc0Z1bmMgPSBKU09i
amVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhjb250ZXh0LCBmdW5jTmFtZSwgJmJhcik7Cisg
ICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY29udGV4dCwgSlNDb250ZXh0R2V0R2xvYmFsT2Jq
ZWN0KGNvbnRleHQpLCBmdW5jTmFtZSwganNGdW5jLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlLCAwKTsKKyAgICAgICAgSlNTdHJp
bmdSZWxlYXNlKGZ1bmNOYW1lKTsKKyAgICB9Cit9CisKK3ZvaWQgd2ViV29ya2VyVGVybWluYXRl
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBpbnQgaXNEZWRpY2F0ZWQpCit7CisgICAgaWYgKGlzRGVk
aWNhdGVkKQorICAgICAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlQ29udHJv
bGxlcjo6c2hhcmVkKCkuYnVuZGxlKCksIFV0aWw6OnRvV0soIldlYldvcmtlclRlcm1pbmF0ZU1l
c3NhZ2UiKS5nZXQoKSwgMCk7CisgICAgZWxzZQorICAgICAgICBXS0J1bmRsZVBvc3RNZXNzYWdl
KEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6c2hhcmVkKCkuYnVuZGxlKCksIFV0aWw6OnRvV0so
IldlYldvcmtlclNoYXJlZFRlcm1pbmF0ZU1lc3NhZ2UiKS5nZXQoKSwgMCk7Cit9CisKK2NsYXNz
IFdlYldvcmtlclRlc3QgOiBwdWJsaWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsKK3B1YmxpYzoKKyAg
ICBXZWJXb3JrZXJUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKQorICAgICAgICA6
IEluamVjdGVkQnVuZGxlVGVzdChpZGVudGlmaWVyKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgaW5pdGlhbGl6ZShXS0J1bmRsZVJlZiwgV0tUeXBlUmVmKQorICAgIHsKKyAgICAg
ICAgV0tCdW5kbGVGcmFtZVNldFdvcmtlckluaXRpYWxpemVDYWxsYmFjayh3ZWJXb3JrZXJJbml0
aWFsaXplKTsKKyAgICAgICAgV0tCdW5kbGVGcmFtZVNldFdvcmtlclRlcm1pbmF0ZUNhbGxiYWNr
KHdlYldvcmtlclRlcm1pbmF0ZSk7CisgICAgfQorfTsKKworc3RhdGljIEluamVjdGVkQnVuZGxl
VGVzdDo6UmVnaXN0ZXI8V2ViV29ya2VyVGVzdD4gcmVnaXN0cmFyKCJXZWJXb3JrZXJUZXN0Iik7
CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205214</attachid>
            <date>2013-06-21 14:11:42 -0700</date>
            <delta_ts>2013-07-17 18:08:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117523-20130621180949.patch</filename>
            <type>text/plain</type>
            <size>33703</size>
            <attacher name="Tullio Lucena">tullio.lucena</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxODUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWVkZjYwM2M2YWFkNDhi
YmQzNWUxMTFlMWMxNzg3ZTM1ZTBlYjU3Zi4uN2ZjYTYyYTUzZTE5MzkyZDE5NTQ3MjRlNjI1YjVm
N2VjMjcxOGFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTA2LTIxICBUdWxs
aW8gTHVjZW5hICA8dHVsbGlvLmx1Y2VuYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtXSzJd
IFByb29mIG9mIGNvbmNlcHQgdG8gaW5qZWN0IGN1c3RvbSBKYXZhU2NyaXB0IG9iamVjdHMgb24g
V2ViV29ya2VyIGNvbnRleHQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTc1MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDYWxsYmFja3Mgd2VyZSBhZGRlZCBmb3IgaW5pdGlhbGl6ZSBhbmQgdGVybWlu
YXRlIFdlYldvcmtlcnMgdXNpbmcgV0syIEFQSS4KKyAgICAgICAgVGhlc2UgY2FsbGJhY2tzIGhh
bmRsZSBiaW5kaW5ncyBiZXR3ZWVuIGZ1bmN0aW9ucyBvZiBKYXZhU2NyaXB0IFdvcmtlcnMgYW5k
IGZ1bmN0aW9ucyBkZWZpbmVkIGF0IGEgcHJldmlvdXNseSBsb2FkZWQgYnVuZGxlLgorICAgICAg
ICBBbiBBUEkgdGVzdCB3YXMgYWRkZWQgdG8gY2hlY2sgdGhlIHRoZXNlIGNhbGxiYWNrcy4gSXQg
dmVyaWZpZXMgdGhlIHR3byB0eXBlcyBvZiB3b3JrZXJzLCBkZWRpY2F0ZWQgYW5kIHNoYXJlZC4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6fldvcmtlclNjcmlwdENvbnRy
b2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNj
cmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRJbml0
U2NyaXB0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxl
cjo6aW5pdFNjcmlwdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENv
bnRyb2xsZXI6OnNldFRlcm1pbmF0ZVNjcmlwdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OnRlcm1pbmF0ZVNjcmlwdENhbGxiYWNrKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmg6CisKIDIwMTMtMDYtMjEg
IEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRl
IHBsYXRmb3JtIHRleHQgdHJhY2sgbWVudQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDcwODdiNTUzNmEyMzdiZjVk
MmEwMDNlN2VjZTg5OTQ3ZGJmNDU3ZDAuLmY3ZmNiN2E0MGI2ZmIwOTYxYjc2YTJmZThkMmRmYzIy
ZDE4MmU4ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMy0wNi0yMSAgVHVsbGlv
IEx1Y2VuYSAgPHR1bGxpby5sdWNlbmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbV0syXSBQ
cm9vZiBvZiBjb25jZXB0IHRvIGluamVjdCBjdXN0b20gSmF2YVNjcmlwdCBvYmplY3RzIG9uIFdl
YldvcmtlciBjb250ZXh0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTE3NTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQ2FsbGJhY2tzIHdlcmUgYWRkZWQgZm9yIGluaXRpYWxpemUgYW5kIHRlcm1pbmF0
ZSBXZWJXb3JrZXJzIHVzaW5nIFdLMiBBUEkuCisgICAgICAgIFRoZXNlIGNhbGxiYWNrcyBoYW5k
bGUgYmluZGluZ3MgYmV0d2VlbiBmdW5jdGlvbnMgb2YgSmF2YVNjcmlwdCBXb3JrZXJzIGFuZCBm
dW5jdGlvbnMgZGVmaW5lZCBhdCBhIHByZXZpb3VzbHkgbG9hZGVkIGJ1bmRsZS4KKyAgICAgICAg
QW4gQVBJIHRlc3Qgd2FzIGFkZGVkIHRvIGNoZWNrIHRoZSB0aGVzZSBjYWxsYmFja3MuIEl0IHZl
cmlmaWVzIHRoZSB0d28gdHlwZXMgb2Ygd29ya2VycywgZGVkaWNhdGVkIGFuZCBzaGFyZWQuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUu
Y3BwOgorICAgICAgICAobG9jYWxXb3JrZXJTY3JpcHRJbml0Q2FsbGJhY2spOgorICAgICAgICAo
V0tCdW5kbGVGcmFtZVNldFdvcmtlckluaXRpYWxpemVDYWxsYmFjayk6CisgICAgICAgIChsb2Nh
bFdvcmtlclNjcmlwdFRlcm1pbmF0ZUNhbGxiYWNrKToKKyAgICAgICAgKFdLQnVuZGxlRnJhbWVT
ZXRXb3JrZXJUZXJtaW5hdGVDYWxsYmFjayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmg6CisKIDIwMTMtMDYtMjEgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIERvIG5vdCB0
cnkgdG8gbG9hZCB2aWRlb3MgaW4gdW5pdCB0ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBjM2FkNThjMDYw
ZWIzMDc3MTkwY2ZlMzYyODdhNzMyZDE0YjA5NjIyLi5lNzZlOWRjZDQyODIzOWQ3NWVkNTA0MDYy
MzlmODJjYjY2NDA4Mzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
b3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNjYsNiArNjYsOSBAQCBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyKFdvcmtlckNvbnRleHQqIHdvcmtl
ckNvbnRleHQpCiAKIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6On5Xb3JrZXJTY3JpcHRDb250cm9s
bGVyKCkKIHsKKyAgICBpZiAodGVybWluYXRlU2NyaXB0Q2FsbGJhY2soKSkKKyAgICAgICAgdGVy
bWluYXRlU2NyaXB0Q2FsbGJhY2soKShtX3dvcmtlckNvbnRleHRXcmFwcGVyLT5nbG9iYWxFeGVj
KCksIG1fd29ya2VyQ29udGV4dC0+aXNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkpOworCiAgICAg
SlNMb2NrSG9sZGVyIGxvY2sodm0oKSk7CiAgICAgbV93b3JrZXJDb250ZXh0V3JhcHBlci5jbGVh
cigpOwogICAgIG1fdm0uY2xlYXIoKTsKQEAgLTEwOSw2ICsxMTIsOSBAQCB2b2lkIFdvcmtlclNj
cmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoKQogICAgIH0KICAgICBBU1NFUlQobV93b3JrZXJD
b250ZXh0V3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJDb250ZXh0V3JhcHBlcik7
CiAgICAgQVNTRVJUKGFzT2JqZWN0KG1fd29ya2VyQ29udGV4dFdyYXBwZXItPnByb3RvdHlwZSgp
KS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJDb250ZXh0V3JhcHBlcik7CisKKyAgICBpZiAo
aW5pdFNjcmlwdENhbGxiYWNrKCkpCisgICAgICAgIGluaXRTY3JpcHRDYWxsYmFjaygpKG1fd29y
a2VyQ29udGV4dFdyYXBwZXItPmdsb2JhbEV4ZWMoKSwgbV93b3JrZXJDb250ZXh0LT5pc0RlZGlj
YXRlZFdvcmtlckNvbnRleHQoKSk7CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6
ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKQEAgLTIwNSw2ICsy
MTEsMjkgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpkZXRhY2hEZWJ1Z2dlcihKU0M6
OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKICAgICBkZWJ1Z2dlci0+ZGV0YWNoKG1fd29ya2VyQ29udGV4
dFdyYXBwZXItPmdsb2JhbE9iamVjdCgpKTsKIH0KIAorV29ya2VyU2NyaXB0Q2FsbGJhY2sgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6bV9pbml0U2NyaXB0Q2FsbGJhY2sgPSAwOworV29ya2VyU2Ny
aXB0Q2FsbGJhY2sgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6bV90ZXJtaW5hdGVTY3JpcHRDYWxs
YmFjayA9IDA7CisKK3ZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0SW5pdFNjcmlwdENh
bGxiYWNrKFdvcmtlclNjcmlwdENhbGxiYWNrIGNhbGxiYWNrKQoreworICAgIG1faW5pdFNjcmlw
dENhbGxiYWNrID0gY2FsbGJhY2s7Cit9CisKK1dvcmtlclNjcmlwdENhbGxiYWNrIFdvcmtlclNj
cmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRDYWxsYmFjaygpCit7CisgICAgcmV0dXJuIG1faW5p
dFNjcmlwdENhbGxiYWNrOworfQorCit2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldFRl
cm1pbmF0ZVNjcmlwdENhbGxiYWNrKFdvcmtlclNjcmlwdENhbGxiYWNrIGNhbGxiYWNrKQorewor
ICAgIG1fdGVybWluYXRlU2NyaXB0Q2FsbGJhY2sgPSBjYWxsYmFjazsKK30KKworV29ya2VyU2Ny
aXB0Q2FsbGJhY2sgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6dGVybWluYXRlU2NyaXB0Q2FsbGJh
Y2soKQoreworICAgIHJldHVybiBtX3Rlcm1pbmF0ZVNjcmlwdENhbGxiYWNrOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAppbmRl
eCBjZmYwY2I1NjNjZGNhODdlMDYxMzVlZGNhYWFmNTE3MmFlYmVjZjRjLi4xZmZiZDE5NWYzM2U3
NjQwNzY1NGY2MTE4NDRlODEyZjExOTRmYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCkBAIC00MCw2ICs0MCw4IEBAIG5h
bWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICB0eXBlZGVmIHZvaWQg
KCpXb3JrZXJTY3JpcHRDYWxsYmFjaykoSlNDOjpFeGVjU3RhdGUqLCBib29sKTsKKwogICAgIGNs
YXNzIEpTV29ya2VyQ29udGV4dDsKICAgICBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogICAgIGNs
YXNzIFNjcmlwdFZhbHVlOwpAQCAtODIsNiArODQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2b2lkIGF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKTsKICAgICAgICAgdm9p
ZCBkZXRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKik7CiAKKyAgICAgICAgc3RhdGljIHZvaWQg
c2V0SW5pdFNjcmlwdENhbGxiYWNrKFdvcmtlclNjcmlwdENhbGxiYWNrKTsKKyAgICAgICAgc3Rh
dGljIFdvcmtlclNjcmlwdENhbGxiYWNrIGluaXRTY3JpcHRDYWxsYmFjaygpOworICAgICAgICBz
dGF0aWMgdm9pZCBzZXRUZXJtaW5hdGVTY3JpcHRDYWxsYmFjayhXb3JrZXJTY3JpcHRDYWxsYmFj
ayk7CisgICAgICAgIHN0YXRpYyBXb3JrZXJTY3JpcHRDYWxsYmFjayB0ZXJtaW5hdGVTY3JpcHRD
YWxsYmFjaygpOwogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdFNjcmlwdElmTmVlZGVk
KCkKICAgICAgICAgewpAQCAtOTUsNiArMTAxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBKU0M6OlN0cm9uZzxKU1dvcmtlckNvbnRleHQ+IG1fd29ya2VyQ29udGV4dFdyYXBwZXI7
CiAgICAgICAgIGJvb2wgbV9leGVjdXRpb25Gb3JiaWRkZW47CiAgICAgICAgIG11dGFibGUgTXV0
ZXggbV9zY2hlZHVsZWRUZXJtaW5hdGlvbk11dGV4OworCisgICAgICAgIHN0YXRpYyBXb3JrZXJT
Y3JpcHRDYWxsYmFjayBtX2luaXRTY3JpcHRDYWxsYmFjazsKKyAgICAgICAgc3RhdGljIFdvcmtl
clNjcmlwdENhbGxiYWNrIG1fdGVybWluYXRlU2NyaXB0Q2FsbGJhY2s7CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKaW5kZXgg
NjFiMzgwODAzMDc5YTgzMDE0Mjg4ZmRjODkxYmQ3YmQxMmUyMGQ5ZC4uOGJiNWQ3ZGI5M2I2MDg0
ODQ3NzU5NGQ0YzlhYTU0NDYxMjlhZDFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUu
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiV0tCdW5kbGVGcmFtZVByaXZhdGUuaCIK
IAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkph
dmFTY3JpcHRDb3JlL0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRl
ICJXS0J1bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXS0RhdGEuaCIKQEAgLTM3LDYgKzM4LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxv
YWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTExNCw2ICsxMTYsNDYgQEAgSlNWYWx1ZVJlZiBX
S0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdFdyYXBwZXJGb3JOb2RlRm9yV29ybGQoV0tCdW5kbGVG
cmFtZVJlZiBmcmEKICAgICByZXR1cm4gdG9JbXBsKGZyYW1lUmVmKS0+anNXcmFwcGVyRm9yV29y
bGQodG9JbXBsKG5vZGVIYW5kbGVSZWYpLCB0b0ltcGwod29ybGRSZWYpKTsKIH0KIAorc3RhdGlj
IFdLQnVuZGxlRnJhbWVXb3JrZXJTY3JpcHRDYWxsYmFjayBzX2xvY2FsV29ya2VyU2NyaXB0SW5p
dENhbGxiYWNrOworCitzdGF0aWMgdm9pZCBsb2NhbFdvcmtlclNjcmlwdEluaXRDYWxsYmFjayhK
U0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlLCBib29sIGlzRGVkaWNhdGVkKQoreworICAgIHNfbG9j
YWxXb3JrZXJTY3JpcHRJbml0Q2FsbGJhY2sodG9SZWYoZXhlY1N0YXRlKSwgaXNEZWRpY2F0ZWQp
OworfQorCit2b2lkIFdLQnVuZGxlRnJhbWVTZXRXb3JrZXJJbml0aWFsaXplQ2FsbGJhY2soV0tC
dW5kbGVGcmFtZVdvcmtlclNjcmlwdENhbGxiYWNrIGNhbGxiYWNrKQoreworI2lmIEVOQUJMRShX
T1JLRVJTKQorICAgIGlmIChjYWxsYmFjaykgeworICAgICAgICBzX2xvY2FsV29ya2VyU2NyaXB0
SW5pdENhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6
OnNldEluaXRTY3JpcHRDYWxsYmFjayhsb2NhbFdvcmtlclNjcmlwdEluaXRDYWxsYmFjayk7Cisg
ICAgfSBlbHNlCisgICAgICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldEluaXRTY3JpcHRD
YWxsYmFjaygwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyNlbmRpZgor
fQorCitzdGF0aWMgV0tCdW5kbGVGcmFtZVdvcmtlclNjcmlwdENhbGxiYWNrIHNfbG9jYWxXb3Jr
ZXJTY3JpcHRUZXJtaW5hdGVDYWxsYmFjazsKKworc3RhdGljIHZvaWQgbG9jYWxXb3JrZXJTY3Jp
cHRUZXJtaW5hdGVDYWxsYmFjayhKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlLCBib29sIGlzRGVk
aWNhdGVkKQoreworICAgIHNfbG9jYWxXb3JrZXJTY3JpcHRUZXJtaW5hdGVDYWxsYmFjayh0b1Jl
ZihleGVjU3RhdGUpLCBpc0RlZGljYXRlZCk7Cit9CisKK3ZvaWQgV0tCdW5kbGVGcmFtZVNldFdv
cmtlclRlcm1pbmF0ZUNhbGxiYWNrKFdLQnVuZGxlRnJhbWVXb3JrZXJTY3JpcHRDYWxsYmFjayBj
YWxsYmFjaykKK3sKKyNpZiBFTkFCTEUoV09SS0VSUykKKyAgICBpZiAoY2FsbGJhY2spIHsKKyAg
ICAgICAgc19sb2NhbFdvcmtlclNjcmlwdFRlcm1pbmF0ZUNhbGxiYWNrID0gY2FsbGJhY2s7Cisg
ICAgICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldFRlcm1pbmF0ZVNjcmlwdENhbGxiYWNr
KGxvY2FsV29ya2VyU2NyaXB0VGVybWluYXRlQ2FsbGJhY2spOworICAgIH0gZWxzZQorICAgICAg
ICBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRUZXJtaW5hdGVTY3JpcHRDYWxsYmFjaygwKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyNlbmRpZgorfQorCiBKU1ZhbHVl
UmVmIFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0V3JhcHBlckZvclJhbmdlRm9yV29ybGQoV0tC
dW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiByYW5nZUhhbmRs
ZVJlZiwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiB3b3JsZFJlZikKIHsKICAgICByZXR1cm4gdG9J
bXBsKGZyYW1lUmVmKS0+anNXcmFwcGVyRm9yV29ybGQodG9JbXBsKHJhbmdlSGFuZGxlUmVmKSwg
dG9JbXBsKHdvcmxkUmVmKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5oCmluZGV4IDhjMmI4
NzVmNTBmNDBmYzNhYjMxYjI5YWJlMmFiYmVhNDA4ZjU0NGYuLjUzOTcxOGQwNTdkN2RjNmY1Yjc0
MzQzZDljZTI1NTYzNzYyYmVlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5oCkBAIC01
MSw2ICs1MSwxMCBAQCBXS19FWFBPUlQgV0tGcmFtZUxvYWRTdGF0ZSBXS0J1bmRsZUZyYW1lR2V0
RnJhbWVMb2FkU3RhdGUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZQogV0tfRVhQT1JUIEpTR2xvYmFs
Q29udGV4dFJlZiBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQoV0tCdW5kbGVGcmFt
ZVJlZiBmcmFtZSk7CiBXS19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIFdLQnVuZGxlRnJhbWVH
ZXRKYXZhU2NyaXB0Q29udGV4dEZvcldvcmxkKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLQnVu
ZGxlU2NyaXB0V29ybGRSZWYgd29ybGQpOwogCit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZUZyYW1l
V29ya2VyU2NyaXB0Q2FsbGJhY2spKEpTQ29udGV4dFJlZiBjb250ZXh0LCBpbnQgaXNEZWRpY2F0
ZWQpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVGcmFtZVNldFdvcmtlckluaXRpYWxpemVDYWxs
YmFjayhXS0J1bmRsZUZyYW1lV29ya2VyU2NyaXB0Q2FsbGJhY2sgY2FsbGJhY2spOworV0tfRVhQ
T1JUIHZvaWQgV0tCdW5kbGVGcmFtZVNldFdvcmtlclRlcm1pbmF0ZUNhbGxiYWNrKFdLQnVuZGxl
RnJhbWVXb3JrZXJTY3JpcHRDYWxsYmFjayBjYWxsYmFjayk7CisKIFdLX0VYUE9SVCBXS0J1bmRs
ZUZyYW1lUmVmIFdLQnVuZGxlRnJhbWVGb3JKYXZhU2NyaXB0Q29udGV4dChKU0NvbnRleHRSZWYg
Y29udGV4dCk7CiAKIFdLX0VYUE9SVCBKU1ZhbHVlUmVmIFdLQnVuZGxlRnJhbWVHZXRKYXZhU2Ny
aXB0V3JhcHBlckZvck5vZGVGb3JXb3JsZChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0J1bmRs
ZU5vZGVIYW5kbGVSZWYgbm9kZUhhbmRsZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiB3b3JsZCk7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDAz
Y2Y2MjRhODAwMzhjZDRkMTU1ZDllYjY1NTcxZjhjMTk3YjhkZS4uNWFiNzRkY2EyNzZlZWM1NmRk
YzNjMTgyODBhMjNjYjUxNWFmNDY2NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTA2LTIxICBUdWxsaW8gTHVj
ZW5hICA8dHVsbGlvLmx1Y2VuYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtXSzJdIFByb29m
IG9mIGNvbmNlcHQgdG8gaW5qZWN0IGN1c3RvbSBKYXZhU2NyaXB0IG9iamVjdHMgb24gV2ViV29y
a2VyIGNvbnRleHQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTc1MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDYWxsYmFja3Mgd2VyZSBhZGRlZCBmb3IgaW5pdGlhbGl6ZSBhbmQgdGVybWluYXRlIFdl
YldvcmtlcnMgdXNpbmcgV0syIEFQSS4KKyAgICAgICAgVGhlc2UgY2FsbGJhY2tzIGhhbmRsZSBi
aW5kaW5ncyBiZXR3ZWVuIGZ1bmN0aW9ucyBvZiBKYXZhU2NyaXB0IFdvcmtlcnMgYW5kIGZ1bmN0
aW9ucyBkZWZpbmVkIGF0IGEgcHJldmlvdXNseSBsb2FkZWQgYnVuZGxlLgorICAgICAgICBBbiBB
UEkgdGVzdCB3YXMgYWRkZWQgdG8gY2hlY2sgdGhlIHRoZXNlIGNhbGxiYWNrcy4gSXQgdmVyaWZp
ZXMgdGhlIHR3byB0eXBlcyBvZiB3b3JrZXJzLCBkZWRpY2F0ZWQgYW5kIHNoYXJlZC4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9HTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0luamVjdGVkQnVu
ZGxlLnByaToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZFJlY2VpdmVUaXRsZUZv
ckZyYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJTaGFyZWRUZXN0Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJTaGFyZWRUZXN0
LmpzOiBBZGRlZC4KKyAgICAgICAgKG9uY29ubmVjdCk6CisgICAgICAgIChsaXN0ZW5Gb3JNZXNz
YWdlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyVGVz
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2Vi
V29ya2VyVGVzdC5qczogQWRkZWQuCisgICAgICAgIChzZWxmLm9ubWVzc2FnZSk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlcl9CdW5kbGUuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmZvbyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpiYXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6d2ViV29ya2VySW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjp3ZWJXb3JrZXJUZXJtaW5hdGUpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6V2ViV29ya2VyVGVzdDo6V2ViV29ya2VyVGVzdCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpXZWJXb3JrZXJUZXN0Ojppbml0aWFsaXplKToKKwogMjAxMy0wNi0yMSAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTiAocjE1MDY2Myk6IFVzaW5nIHdlYmtpdEF1ZGlvQ29udGV4dCBpbiBJbnNwZWN0b3Ig
bWFrZXMgaXQgdW5kZWZpbmVkIGV2ZXJ5d2hlcmUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0
CmluZGV4IGEzZmZjYjdiNTk2MGI3NjNhMGQ0NWIyOWNjNjVmOTNiNjVmZGNkMjEuLjg4NTQ4NDlm
ZTFlMjZlZTJkMjNiODdhMWJlMjk5OGExMjM4YzkzNDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxp
c3RzLnR4dApAQCAtOSw2ICs5LDcgQEAgaW5jbHVkZV9kaXJlY3Rvcmllcygke0NNQUtFX0JJTkFS
WV9ESVJ9CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0FQSQogICAgICR7SkFWQVNDUklQVENP
UkVfRElSfS9Gb3J3YXJkaW5nSGVhZGVycwogICAgICR7VEhJUkRQQVJUWV9ESVJ9L2d0ZXN0L2lu
Y2x1ZGUKKyAgICAke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9qcwogICAgICR7V0VCQ09SRV9ESVJ9
L2VkaXRpbmcKICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybQogICAgICR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL2dyYXBoaWNzCkBAIC00OSw2ICs1MCw3IEBAIGFkZF9saWJyYXJ5KFRlc3RXZWJL
aXRBUElJbmplY3RlZEJ1bmRsZSBTSEFSRUQKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0
cy9XZWJLaXQyL1Jlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHlfQnVuZGxlLmNwcAog
ICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYktpdDIvU2hvdWxkR29Ub0JhY2tGb3J3
YXJkTGlzdEl0ZW1fQnVuZGxlLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dl
YktpdDIvVXNlck1lc3NhZ2VfQnVuZGxlLmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rl
c3RzL1dlYktpdDIvV2ViV29ya2VyX0J1bmRsZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XZWJLaXQyL1dLQ29ubmVjdGlvbl9CdW5kbGUuY3BwCiAgICAgJHtURVNUV0VCS0lU
QVBJX0RJUn0vVGVzdHMvV2ViS2l0Mi9XaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAKICkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCmluZGV4IGEzYjNmOTg1NzdjZDdhODNmZDgwZTcy
MDI2YjhlZmU2YTdhNGYwMDYuLjJjN2E5MzFhNWM2M2Y4ZTA2Yjg0YmU4OTc3OGQ5ZTM3ZjkxYzJm
NTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbQpAQCAtMjgyLDYgKzI4Miw3IEBAIFBy
b2dyYW1zX1Rlc3RXZWJLaXRBUElfVGVzdFdlYktpdDJfU09VUkNFUyA9IFwKIAlUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvU3BhY2ViYXJTY3JvbGxpbmcuY3BwIFwKIAlUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvVGVybWluYXRlVHdpY2UuY3BwIFwKIAlUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvVXNlck1lc3NhZ2UuY3BwIFwKKwlUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL1dpbGxTZW5kU3VibWl0RXZlbnQuY3BwIFwKIAlUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV0tDb25uZWN0aW9uLmNwcCBcCiAJVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL1dLUGFnZUdldFNjYWxlRmFjdG9yTm90WmVyby5jcHAgXApA
QCAtMzE5LDYgKzMyMCw3IEBAIExpYnJhcmllc19saWJUZXN0V2ViS2l0QVBJSW5qZWN0ZWRCdW5k
bGVfbGFfU09VUkNFUyA9IFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUmVz
cG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3BwIFwKIAlUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1fQnVu
ZGxlLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1VzZXJNZXNzYWdl
X0J1bmRsZS5jcHAgXAorCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3Jr
ZXJfQnVuZGxlLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dpbGxT
ZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL1dLQ29ubmVjdGlvbl9CdW5kbGUuY3BwIFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL2d0
ay9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJHdGsuY3BwIFwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGUucHJpIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Jbmpl
Y3RlZEJ1bmRsZS5wcmkKaW5kZXggMTcxYTIwMGYwZGI3NGMyOTg2NjM2Yjk1MWVlMGYyMjEzNTQ1
ZjFjYS4uYzhjMmJkY2FlYTQwZDg5ZjFlODJlNmMwZmRlZGJlOGU3MDQyZjgzNiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZS5wcmkKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZS5wcmkKQEAgLTM4LDYgKzM4LDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgJCRQV0QvVGVzdHMvV2ViS2l0Mi9SZXNwb25zaXZlbmVzc1RpbWVyRG9lc250Rmly
ZUVhcmx5X0J1bmRsZS5jcHAgXAogICAgICQkUFdEL1Rlc3RzL1dlYktpdDIvU2hvdWxkR29Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW1fQnVuZGxlLmNwcCBcCiAgICAgJCRQV0QvVGVzdHMvV2ViS2l0Mi9V
c2VyTWVzc2FnZV9CdW5kbGUuY3BwIFwKKyAgICAkJFBXRC9UZXN0cy9XZWJLaXQyL1dlYldvcmtl
cl9CdW5kbGUuY3BwIFwKICAgICAkJFBXRC9UZXN0cy9XZWJLaXQyL1dpbGxTZW5kU3VibWl0RXZl
bnRfQnVuZGxlLmNwcCBcCiAgICAgJCRQV0QvVGVzdHMvV2ViS2l0Mi9XS0Nvbm5lY3Rpb25fQnVu
ZGxlLmNwcAogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNt
YWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA4NzBkYzFi
NDAwNzljYmQ2OTBjYWJlNzY2ZGM0MDk1OTEwYWFmYjBiLi4yMTI1NTgzNzhkOWRhM2U1MjFlYWE1
ZjZiZTdhNDIyMmU4OWZkMjRlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRm
b3JtRWZsLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1FZmwuY21ha2UK
QEAgLTg4LDYgKzg4LDcgQEAgc2V0KHRlc3Rfd2Via2l0Ml9hcGlfQklOQVJJRVMKICAgICBQcmV2
ZW50RW1wdHlVc2VyQWdlbnQKICAgICBQcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlD
YWxsYmFjawogICAgIFVzZXJNZXNzYWdlCisgICAgV2ViV29ya2VyCiAgICAgV0tDb25uZWN0aW9u
CiAgICAgV0tQcmVmZXJlbmNlcwogICAgIFdLU3RyaW5nCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGNjYWI2YjFmOGM5MzdlZjU4MGEyZmM3OTRhNjFkYWQ4MTg0MTBjNWUuLjAwN2NlOGI2ZDNk
NjUxNTljNjUyNWY2MjliNzY0MjQ0ODM2ZGI4OTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yMTUsNiArMjE1LDEwIEBACiAJCUY2QjdCRTk0MTc0NjkyMDkwMDhBMzQ0NSAvKiBEaWRBc3Nv
Y2lhdGVGb3JtQ29udHJvbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjZCN0JFOTMxNzQ2OTFFRjAwOEEzNDQ1IC8qIERpZEFzc29jaWF0ZUZvcm1D
b250cm9scy5jcHAgKi87IH07CiAJCUY2QjdCRTk1MTc0NjkyMTIwMDhBMzQ0NSAvKiBEaWRBc3Nv
Y2lhdGVGb3JtQ29udHJvbHNfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY2QjdCRTkyMTc0NjkxRUYwMDhBMzQ0NSAvKiBEaWRBc3NvY2lh
dGVGb3JtQ29udHJvbHNfQnVuZGxlLmNwcCAqLzsgfTsKIAkJRjZCN0JFOTcxNzQ2OUI5NjAwOEEz
NDQ1IC8qIGFzc29jaWF0ZS1mb3JtLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZCN0JFOTYxNzQ2OUI3RTAwOEEzNDQ1
IC8qIGFzc29jaWF0ZS1mb3JtLWNvbnRyb2xzLmh0bWwgKi87IH07CisJCUY2Qjk5OEFCNzQ2OTIw
OTUyQTUwMDQ0NSAvKiBXZWJXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjhDQjJFOTMxNzQ2OTFFRjAwOTBCQzQ1IC8qIFdlYldvcmtlci5j
cHAgKi87IH07CisJCUY2RTA0NTg0MTUyRTU1MkJDMEEzOEM4QyAvKiBXZWJXb3JrZXJTaGFyZWRU
ZXN0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzU0MEY3QUM4MjJFMTk4ODAwOUIwQzFDIC8qIFdlYldvcmtlclNoYXJlZFRlc3QuaHRt
bCAqLzsgfTsKKwkJRjZEMDQ5RjQxNTJFNUFCQkMwODkxQjgwIC8qIFdlYldvcmtlclRlc3QuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MjQwNTYxQzgyOTExOThBQjA5QjBDMUMgLyogV2ViV29ya2VyVGVzdC5odG1sICovOyB9OworCQlG
NkMwQkU3Nzk3NDYwQjk2QTA4QTMzNDUgLyogV2ViV29ya2VyX0J1bmRsZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzk3Q0ZCQzE3NDMyMzRGMThB
QjhGQ0YgLyogV2ViV29ya2VyX0J1bmRsZS5jcHAgKi87IH07CiAJCUY2RjNGMjkxMTMzNDJGRUIw
MEE2QkYxOSAvKiBDb29raWVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY2RjNGMjkwMTMzNDJGRUIwMEE2QkYxOSAvKiBDb29raWVNYW5h
Z2VyLmNwcCAqLzsgfTsKIAkJRjZGNDlDNjkxNTU0NUM4RTAwMDdGMzlEIC8qIERPTVdpbmRvd0V4
dGVuc2lvbk5vQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjZGNDlDNjcxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5v
Q2FjaGUuY3BwICovOyB9OwogCQlGNkY0OUM2QjE1NTQ1Q0E3MDAwN0YzOUQgLyogRE9NV2luZG93
RXh0ZW5zaW9uTm9DYWNoZV9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjZGNDlDNjYxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4
dGVuc2lvbk5vQ2FjaGVfQnVuZGxlLmNwcCAqLzsgfTsKQEAgLTI4OSw2ICsyOTMsOCBAQAogCQkJ
CUMwMUEyM0YyMTI2NjE1NjcwMEM5RUQ1NSAvKiBzcGFjZWJhci1zY3JvbGxpbmcuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKIAkJCQlDNTQwRjc4NDE1MkU1QTlBMDBBNDBDOEMgLyogdmVyYm9z
ZU1hcmt1cC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUE1RTIwMjc1MTVCMjFGNkUw
MEMxM0UxNCAvKiBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAorCQkJCUY2RTA0NTg0MTUyRTU1MkJDMEEzOEM4QyAvKiBXZWJXb3JrZXJTaGFyZWRU
ZXN0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJRjZEMDQ5RjQxNTJFNUFCQkMwODkx
QjgwIC8qIFdlYldvcmtlclRlc3QuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCSk7CiAJ
CQluYW1lID0gIkNvcHkgUmVzb3VyY2VzIjsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwpAQCAtNTI1LDYgKzUzMSwxMCBAQAogCQlGNkI3QkU5MjE3NDY5MUVGMDA4
QTM0NDUgLyogRGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjZCN0JFOTMxNzQ2OTFFRjAwOEEzNDQ1IC8qIERpZEFzc29jaWF0
ZUZvcm1Db250cm9scy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaWRBc3NvY2lhdGVGb3JtQ29u
dHJvbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNkI3QkU5NjE3NDY5QjdF
MDA4QTM0NDUgLyogYXNzb2NpYXRlLWZvcm0tY29udHJvbHMuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJhc3Nv
Y2lhdGUtZm9ybS1jb250cm9scy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RjhDQjJFOTMxNzQ2OTFFRjAwOTBCQzQ1IC8qIFdlYldvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNTQwRjdB
QzgyMkUxOTg4MDA5QjBDMUMgLyogV2ViV29ya2VyU2hhcmVkVGVzdC5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gV2ViV29ya2VyU2hhcmVkVGVzdC5odG1sOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5MjQwNTYxQzgyOTExOThBQjA5QjBDMUMgLyogV2ViV29ya2VyVGVz
dC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gV2ViV29ya2VyVGVzdC5odG1sOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4Mzk3Q0ZCQzE3NDMyMzRGMThBQjhGQ0YgLyog
V2ViV29ya2VyX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJXb3JrZXJfQnVuZGxl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZGM0YyOTAxMzM0MkZFQjAwQTZC
RjE5IC8qIENvb2tpZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ29va2llTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2
RjQ5QzY2MTU1NDVDOEQwMDA3RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01XaW5kb3dFeHRl
bnNpb25Ob0NhY2hlX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2
RjQ5QzY3MTU1NDVDOEQwMDA3RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4dGVuc2lvbk5v
Q2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzQzLDYgKzc1Myw4IEBA
CiAJCQkJNTIwQkNGNEIxNDFFQjA5RTAwOTM3RUE4IC8qIFdlYkFyY2hpdmUuY3BwICovLAogCQkJ
CTUyMEJDRjRBMTQxRUIwOUUwMDkzN0VBOCAvKiBXZWJBcmNoaXZlX0J1bmRsZS5jcHAgKi8sCiAJ
CQkJMEYxN0JCRDQxNUFGNkM0RDAwN0FCNzUzIC8qIFdlYkNvcmVTdGF0aXN0aWNzV2l0aE5vV2Vi
UHJvY2Vzcy5jcHAgKi8sCisJCQkJRjhDQjJFOTMxNzQ2OTFFRjAwOTBCQzQ1IC8qIFdlYldvcmtl
ci5jcHAgKi8sCisJCQkJODM5N0NGQkMxNzQzMjM0RjE4QUI4RkNGIC8qIFdlYldvcmtlcl9CdW5k
bGUuY3BwICovLAogCQkJCTdDRkJDQUREMTc0MzIzNEYwMEIyQkZDRiAvKiBXaWxsTG9hZC5jcHAg
Ki8sCiAJCQkJN0NGQkNBRTMxNzQzMjM4RTAwQjJCRkNGIC8qIFdpbGxMb2FkX0J1bmRsZS5jcHAg
Ki8sCiAJCQkJNzZFMTgyRDkxNTQ3NTUwMTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnQu
Y3BwICovLApAQCAtOTE3LDYgKzkyOSw4IEBACiAJCQkJNTJCOENGOTQxNTg2OENGMDAwMjgxMDUz
IC8qIFNldERvY3VtZW50VVJJLmh0bWwgKi8sCiAJCQkJQzU0MEY3ODMxNTJFNUE3ODAwQTQwQzhD
IC8qIHZlcmJvc2VNYXJrdXAuaHRtbCAqLywKIAkJCQlBNUUyMDI3MDE1QjIxODA2MDBDMTNFMTQg
LyogV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEuaHRtbCAqLywKKwkJCQlDNTQwRjdBQzgyMkUx
OTg4MDA5QjBDMUMgLyogV2ViV29ya2VyU2hhcmVkVGVzdC5odG1sICovLAorCQkJCTkyNDA1NjFD
ODI5MTE5OEFCMDlCMEMxQyAvKiBXZWJXb3JrZXJUZXN0Lmh0bWwgKi8sCiAJCQkpOwogCQkJbmFt
ZSA9IFJlc291cmNlczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMTczLDYgKzEx
ODcsNyBAQAogCQkJCUMwODU4N0JGMTNGRTk1NkMwMDFFRjRFNSAvKiBXZWJLaXRBZ25vc3RpY1Rl
c3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUZCQkI0RDE1MTNENEU5MDA4MjI3MzggLyogV2Vi
Vmlld0NhblBhc3RlVVJMLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdFMzhDMzQxNjlCN0QwMTAw
ODRDMjhDIC8qIFdlYlZpZXdEaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkubW0gaW4gU291cmNl
cyAqLywKKwkJCQlGNkI5OThBQjc0NjkyMDk1MkE1MDA0NDUgLyogV2ViV29ya2VyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTc2RTE4MkRBMTU0NzU1MDEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1p
dEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1RTIwMjczMTVCMjE4MTkwMEMxM0UxNCAv
KiBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY2QjdC
RTk0MTc0NjkyMDkwMDhBMzQ0NSAvKiBEaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0xMjIzLDYgKzEyMzgsNyBAQAogCQkJCTUxRkNGN0ExMTUzNEIyQTAwMDEw
NDQ5MSAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkMyMkQzMTkxNERDNjhCOTAwRkZCMUREIC8qIFVzZXJNZXNzYWdlX0J1bmRs
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MjBCQ0Y0QzE0MUVCMDlFMDA5MzdFQTggLyogV2Vi
QXJjaGl2ZV9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjZDMEJFNzc5NzQ2MEI5NkEw
OEEzMzQ1IC8qIFdlYldvcmtlcl9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzZFMTgy
REQxNTQ3NTY5MTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDOTAxRTMzMTQ5MkFGMzkwMDc0QTY2NyAvKiBXS0Nvbm5lY3Rpb25f
QnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjYyMTkwYjRmOGJlNzhi
ZDM4YmU0ZGM1ZTY1M2UwYzZkM2Q3MzQxOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXIuY3BwCkBAIC0wLDAgKzEsMTA2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9s
b2dpYQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
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
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRleHQu
aD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQcmVm
ZXJlbmNlc1ByaXZhdGUuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLVmlldy5oPgorCituYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7Citz
dGF0aWMgYm9vbCB0ZXJtaW5hdGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBjaGFuZ2VkVGl0bGUg
PSBmYWxzZTsKK3N0YXRpYyBib29sIGluaXRpYWxpemVkU2hhcmVkID0gZmFsc2U7CitzdGF0aWMg
Ym9vbCB0ZXJtaW5hdGVkU2hhcmVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBjaGFuZ2VkVGl0bGVT
aGFyZWQgPSBmYWxzZTsKKworc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVm
LCBjb25zdCB2b2lkKikKK3sKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyht
ZXNzYWdlTmFtZSwgIldlYldvcmtlckluaXRNZXNzYWdlIikpCisgICAgICAgIGluaXRpYWxpemVk
ID0gdHJ1ZTsKKyAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3Nh
Z2VOYW1lLCAiV2ViV29ya2VyVGVybWluYXRlTWVzc2FnZSIpKQorICAgICAgICB0ZXJtaW5hdGVk
ID0gdHJ1ZTsKKyAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3Nh
Z2VOYW1lLCAiV2ViV29ya2VyU2hhcmVkSW5pdE1lc3NhZ2UiKSkKKyAgICAgICAgaW5pdGlhbGl6
ZWRTaGFyZWQgPSB0cnVlOworICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJp
bmcobWVzc2FnZU5hbWUsICJXZWJXb3JrZXJTaGFyZWRUZXJtaW5hdGVNZXNzYWdlIikpCisgICAg
ICAgIHRlcm1pbmF0ZWRTaGFyZWQgPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZl
VGl0bGVGb3JGcmFtZShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIHRpdGxlLCBXS0ZyYW1lUmVmLCBX
S1R5cGVSZWYsIGNvbnN0IHZvaWQgKikKK3sKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyh0aXRsZSwgIldlYldvcmtlclRpdGxlIikpCisgICAgICAgIGNoYW5nZWRUaXRsZSA9
IHRydWU7CisgICAgZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyh0aXRsZSwg
IldlYldvcmtlclNoYXJlZFRpdGxlIikpCisgICAgICAgIGNoYW5nZWRUaXRsZVNoYXJlZCA9IHRy
dWU7Cit9CisKK1RFU1QoV2ViS2l0MiwgV2ViV29ya2VyKQoreworICAgIC8vIFRoaXMgdGVzdCBj
b3ZlciB0aGUgYmluZGluZyBiZXR3ZWVuIGZ1bmN0aW9ucyBvZiBKYXZhU2NyaXB0IFdvcmtlcnMg
YW5kCisgICAgLy8gZnVuY3Rpb25zIGRlZmluZWQgYXQgYSBwcmV2aW91c2x5IGxvYWRlZCBidW5k
bGUuIEl0IHZlcmlmaWVzIHRoZSB0d28KKyAgICAvLyB0eXBlcyBvZiBXb3JrZXJzLCBkZWRpY2F0
ZWQgYW5kIHNoYXJlZC4KKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRv
cHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiV2ViV29ya2Vy
VGVzdCIpKTsKKworICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50IGluamVjdGVkQnVu
ZGxlQ2xpZW50OworICAgIG1lbXNldCgmaW5qZWN0ZWRCdW5kbGVDbGllbnQsIDAsIHNpemVvZihp
bmplY3RlZEJ1bmRsZUNsaWVudCkpOworICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LmRpZFJlY2Vp
dmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGU7CisgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5n
ZXQoKSwgJmluamVjdGVkQnVuZGxlQ2xpZW50KTsKKworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJW
aWV3KGNvbnRleHQuZ2V0KCkpOworCisgICAgV0tQYWdlTG9hZGVyQ2xpZW50IHBhZ2VMb2FkZXJD
bGllbnQ7CisgICAgbWVtc2V0KCZwYWdlTG9hZGVyQ2xpZW50LCAwLCBzaXplb2YoV0tQYWdlTG9h
ZGVyQ2xpZW50KSk7CisgICAgcGFnZUxvYWRlckNsaWVudC52ZXJzaW9uID0ga1dLUGFnZUxvYWRl
ckNsaWVudEN1cnJlbnRWZXJzaW9uOworICAgIHBhZ2VMb2FkZXJDbGllbnQuZGlkUmVjZWl2ZVRp
dGxlRm9yRnJhbWUgPSBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZTsKKyAgICBXS1BhZ2VTZXRQYWdl
TG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpLCAmcGFnZUxvYWRlckNsaWVudCk7CisKKyAgICBX
S1BhZ2VHcm91cFJlZiBwYWdlR3JvdXAgPSBXS1BhZ2VHZXRQYWdlR3JvdXAod2ViVmlldy5wYWdl
KCkpOworICAgIFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXMgPSBXS1BhZ2VHcm91cEdldFBy
ZWZlcmVuY2VzKHBhZ2VHcm91cCk7CisgICAgV0tQcmVmZXJlbmNlc1NldEZpbGVBY2Nlc3NGcm9t
RmlsZVVSTHNBbGxvd2VkKHByZWZlcmVuY2VzLCB0cnVlKTsKKworICAgIFdLUmV0YWluUHRyPFdL
VVJMUmVmPiB1cmwgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCIuLi9XZWJL
aXQyL1dlYldvcmtlclRlc3QiLCAiaHRtbCIpKTsKKyAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcu
cGFnZSgpLCB1cmwuZ2V0KCkpOworICAgIFV0aWw6OnJ1bigmaW5pdGlhbGl6ZWQpOworICAgIFV0
aWw6OnJ1bigmdGVybWluYXRlZCk7CisgICAgVXRpbDo6cnVuKCZjaGFuZ2VkVGl0bGUpOworCisg
ICAgdXJsID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgiLi4vV2ViS2l0Mi9X
ZWJXb3JrZXJTaGFyZWRUZXN0IiwgImh0bWwiKSk7CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3
LnBhZ2UoKSwgdXJsLmdldCgpKTsKKyAgICBVdGlsOjpydW4oJmluaXRpYWxpemVkU2hhcmVkKTsK
KyAgICBVdGlsOjpydW4oJnRlcm1pbmF0ZWRTaGFyZWQpOworICAgIFV0aWw6OnJ1bigmY2hhbmdl
ZFRpdGxlU2hhcmVkKTsKK30KKworfSAvLyBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyU2hhcmVkVGVzdC5odG1sIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlclNoYXJlZFRlc3QuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zNzc1MzA3MjI2ZWE3NWM2ZDllOTM5MWY5ZmViMWFiMjU5ZjY5ZmRlCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldv
cmtlclNoYXJlZFRlc3QuaHRtbApAQCAtMCwwICsxLDEyIEBACis8aHRtbD4KKyAgICA8Ym9keT4K
KyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZhciB3b3JrZXIgPSBuZXcgU2hhcmVkV29y
a2VyKCJXZWJXb3JrZXJTaGFyZWRUZXN0LmpzIik7CisgICAgICAgICAgICB3b3JrZXIucG9ydC5h
ZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAg
ICAgICBkb2N1bWVudC50aXRsZSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICB9LCBmYWxzZSk7
CisgICAgICAgICAgICB3b3JrZXIucG9ydC5zdGFydCgpOworICAgICAgICAgICAgd29ya2VyLnBv
cnQucG9zdE1lc3NhZ2UoIldlYldvcmtlclNoYXJlZE1lc3NhZ2UiKTsKKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlclNoYXJlZFRlc3QuanMgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyU2hhcmVkVGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODRi
YWY2NzczYjZhNGZlOGRiZGJjNzhkZWQxYThlN2RjMWJlZWE0Ci0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlclNoYXJlZFRlc3QuanMK
QEAgLTAsMCArMSwxMyBAQAordmFyIHBvcnRzID0gW107CisKK29uY29ubmVjdCA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgdmFyIHBvcnQgPSBldmVudC5wb3J0c1swXTsKKyAgICBwb3J0cy5wdXNo
KHBvcnQpOworICAgIHBvcnQuc3RhcnQoKTsKKyAgICBwb3J0LmFkZEV2ZW50TGlzdGVuZXIoIm1l
c3NhZ2UiLCBmdW5jdGlvbihldmVudCkgeyBsaXN0ZW5Gb3JNZXNzYWdlKGV2ZW50LCBwb3J0KTsg
fSApOworfQorCitsaXN0ZW5Gb3JNZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50LCBwb3J0KSB7Cisg
ICAgcG9ydC5wb3N0TWVzc2FnZShzZWxmLmJhcigpKTsKKyAgICBzZWxmLmNsb3NlKCk7Cit9CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyVGVz
dC5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlclRlc3Qu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xN2ZmMjcwNDY3YzE3OTQ3M2MyNDUyNDY5OGM2NDEzOTBlNjZjNjc5
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dl
YldvcmtlclRlc3QuaHRtbApAQCAtMCwwICsxLDExIEBACis8aHRtbD4KKyAgICA8Ym9keT4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCJXZWJX
b3JrZXJUZXN0LmpzIik7CisgICAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoIldlYldvcmtl
ck1lc3NhZ2UiKTsKKyAgICAgICAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LnRpdGxlID0gZXZlbnQuZGF0YTsKKyAgICAg
ICAgICAgIH07CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJUZXN0Lmpz
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlclRlc3QuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzY4NWJiNTVjMjIxNTRlMTA3ZjM0YjUyNTI1ODUxNzI0MDQ5MTMyOAotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJU
ZXN0LmpzCkBAIC0wLDAgKzEsNSBAQAorc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkg
eworICAgIHNlbGYucG9zdE1lc3NhZ2Uoc2VsZi5mb28oKSk7CisgICAgc2VsZi5jbG9zZSgpOwor
ICAgIHJldHVybjsKK307CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvV2ViV29ya2VyX0J1bmRsZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvV2ViV29ya2VyX0J1bmRsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmNiOTM3MTI0YzI4YzI4MWY0
YmJmNmVkN2MzNGQyYmViZmQyOGMyNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJfQnVuZGxlLmNwcApAQCAtMCwwICsxLDg5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVj
bm9sb2dpYQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgor
I2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVGVzdC5oIgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5k
bGVGcmFtZS5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK0pTVmFsdWVSZWYgZm9v
KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiwgc2l6ZV90LCBjb25z
dCBKU1ZhbHVlUmVmW10sIEpTVmFsdWVSZWYqKQoreworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2Uo
SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpzaGFyZWQoKS5idW5kbGUoKSwgVXRpbDo6dG9XSygi
V2ViV29ya2VySW5pdE1lc3NhZ2UiKS5nZXQoKSwgMCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtl
U3RyaW5nKGN0eCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIldlYldvcmtlclRpdGxl
IikpOworfQorCitKU1ZhbHVlUmVmIGJhcihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiwg
SlNPYmplY3RSZWYsIHNpemVfdCwgY29uc3QgSlNWYWx1ZVJlZltdLCBKU1ZhbHVlUmVmKikKK3sK
KyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6c2hhcmVk
KCkuYnVuZGxlKCksIFV0aWw6OnRvV0soIldlYldvcmtlclNoYXJlZEluaXRNZXNzYWdlIikuZ2V0
KCksIDApOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0cmluZyhjdHgsIEpTU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJXZWJXb3JrZXJTaGFyZWRUaXRsZSIpKTsKK30KKwordm9pZCB3ZWJX
b3JrZXJJbml0aWFsaXplKEpTQ29udGV4dFJlZiBjb250ZXh0LCBpbnQgaXNEZWRpY2F0ZWQpCit7
CisgICAgaWYgKGlzRGVkaWNhdGVkKSB7CisgICAgICAgIEpTU3RyaW5nUmVmIGZ1bmNOYW1lID0g
SlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImZvbyIpOworICAgICAgICBKU09iamVjdFJl
ZiBqc0Z1bmMgPSBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhjb250ZXh0LCBmdW5j
TmFtZSwgJmZvbyk7CisgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY29udGV4dCwgSlNDb250
ZXh0R2V0R2xvYmFsT2JqZWN0KGNvbnRleHQpLCBmdW5jTmFtZSwganNGdW5jLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlLCAwKTsK
KyAgICAgICAgSlNTdHJpbmdSZWxlYXNlKGZ1bmNOYW1lKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBKU1N0cmluZ1JlZiBmdW5jTmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJi
YXIiKTsKKyAgICAgICAgSlNPYmplY3RSZWYganNGdW5jID0gSlNPYmplY3RNYWtlRnVuY3Rpb25X
aXRoQ2FsbGJhY2soY29udGV4dCwgZnVuY05hbWUsICZiYXIpOworICAgICAgICBKU09iamVjdFNl
dFByb3BlcnR5KGNvbnRleHQsIEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChjb250ZXh0KSwgZnVu
Y05hbWUsIGpzRnVuYywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSwgMCk7CisgICAgICAgIEpTU3RyaW5nUmVsZWFzZShmdW5jTmFt
ZSk7CisgICAgfQorfQorCit2b2lkIHdlYldvcmtlclRlcm1pbmF0ZShKU0NvbnRleHRSZWYgY29u
dGV4dCwgaW50IGlzRGVkaWNhdGVkKQoreworICAgIGlmIChpc0RlZGljYXRlZCkKKyAgICAgICAg
V0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OnNoYXJlZCgpLmJ1
bmRsZSgpLCBVdGlsOjp0b1dLKCJXZWJXb3JrZXJUZXJtaW5hdGVNZXNzYWdlIikuZ2V0KCksIDAp
OworICAgIGVsc2UKKyAgICAgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZUNv
bnRyb2xsZXI6OnNoYXJlZCgpLmJ1bmRsZSgpLCBVdGlsOjp0b1dLKCJXZWJXb3JrZXJTaGFyZWRU
ZXJtaW5hdGVNZXNzYWdlIikuZ2V0KCksIDApOworfQorCitjbGFzcyBXZWJXb3JrZXJUZXN0IDog
cHVibGljIEluamVjdGVkQnVuZGxlVGVzdCB7CitwdWJsaWM6CisgICAgV2ViV29ya2VyVGVzdChj
b25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmllcikKKyAgICAgICAgOiBJbmplY3RlZEJ1bmRsZVRl
c3QoaWRlbnRpZmllcikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxp
emUoV0tCdW5kbGVSZWYsIFdLVHlwZVJlZikKKyAgICB7CisgICAgICAgIFdLQnVuZGxlRnJhbWVT
ZXRXb3JrZXJJbml0aWFsaXplQ2FsbGJhY2sod2ViV29ya2VySW5pdGlhbGl6ZSk7CisgICAgICAg
IFdLQnVuZGxlRnJhbWVTZXRXb3JrZXJUZXJtaW5hdGVDYWxsYmFjayh3ZWJXb3JrZXJUZXJtaW5h
dGUpOworICAgIH0KK307CisKK3N0YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPFdl
YldvcmtlclRlc3Q+IHJlZ2lzdHJhcigiV2ViV29ya2VyVGVzdCIpOworCit9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206940</attachid>
            <date>2013-07-17 18:08:50 -0700</date>
            <delta_ts>2013-11-28 14:01:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117523-20130717220848.patch</filename>
            <type>text/plain</type>
            <size>25790</size>
            <attacher name="Tullio Lucena">tullio.lucena</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyODE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI0NGIxMzViNzM2MThl
ZTg0N2IzMjBjZjA0NzcyMzllMTdhMDA4Zi4uZjc1ZjkyYzVhNDM3OTBiYTMyZWU5YjUwMmUzMmVl
Zjk4NzE1NTI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTA3LTE3ICBUdWxs
aW8gTHVjZW5hICA8dHVsbGlvLmx1Y2VuYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtXSzJd
IFByb29mIG9mIGNvbmNlcHQgdG8gaW5qZWN0IGN1c3RvbSBKYXZhU2NyaXB0IG9iamVjdHMgb24g
V2ViV29ya2VyIGNvbnRleHQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTc1MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDYWxsYmFja3Mgd2VyZSBhZGRlZCBmb3IgaW5pdGlhbGl6ZSBhbmQgdGVybWlu
YXRlIFdlYldvcmtlcnMgdXNpbmcgV0syIEFQSS4KKyAgICAgICAgVGhlc2UgY2FsbGJhY2tzIGhh
bmRsZSBiaW5kaW5ncyBiZXR3ZWVuIGZ1bmN0aW9ucyBvZiBKYXZhU2NyaXB0IFdvcmtlcnMgYW5k
IGZ1bmN0aW9ucyBkZWZpbmVkIGF0IGEgcHJldmlvdXNseSBsb2FkZWQgYnVuZGxlLgorICAgICAg
ICBBbiBBUEkgdGVzdCB3YXMgYWRkZWQgdG8gY2hlY2sgdGhlIHRoZXNlIGNhbGxiYWNrcy4gSXQg
dmVyaWZpZXMgdGhlIHR3byB0eXBlcyBvZiB3b3JrZXJzLCBkZWRpY2F0ZWQgYW5kIHNoYXJlZC4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6fldvcmtlclNjcmlwdENvbnRy
b2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNj
cmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRJbml0
U2NyaXB0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxl
cjo6aW5pdFNjcmlwdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENv
bnRyb2xsZXI6OnNldFRlcm1pbmF0ZVNjcmlwdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OnRlcm1pbmF0ZVNjcmlwdENhbGxiYWNrKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmg6CisKIDIwMTMtMDctMTcg
IENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNTI3MDEsIHIxNTI3MDMsIHIxNTI3MzksIHIxNTI3NTQsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggOTJiMGRhOTAyNmUzOTI4NThmZmQ1NDUwMzdlNDBhYWEwNWVlNTY0My4uYzgx
OTU4YTM0NDRlYzFjYTkyNGUwMjllYTk0MWM3MGVlYjY1MTUzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIxIEBACisyMDEzLTA3LTE3ICBUdWxsaW8gTHVjZW5hICA8dHVsbGlvLmx1Y2VuYUBvcGVu
Ym9zc2Eub3JnPgorCisgICAgICAgIFtXSzJdIFByb29mIG9mIGNvbmNlcHQgdG8gaW5qZWN0IGN1
c3RvbSBKYXZhU2NyaXB0IG9iamVjdHMgb24gV2ViV29ya2VyIGNvbnRleHQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc1MjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxsYmFja3Mgd2VyZSBhZGRl
ZCBmb3IgaW5pdGlhbGl6ZSBhbmQgdGVybWluYXRlIFdlYldvcmtlcnMgdXNpbmcgV0syIEFQSS4K
KyAgICAgICAgVGhlc2UgY2FsbGJhY2tzIGhhbmRsZSBiaW5kaW5ncyBiZXR3ZWVuIGZ1bmN0aW9u
cyBvZiBKYXZhU2NyaXB0IFdvcmtlcnMgYW5kIGZ1bmN0aW9ucyBkZWZpbmVkIGF0IGEgcHJldmlv
dXNseSBsb2FkZWQgYnVuZGxlLgorICAgICAgICBBbiBBUEkgdGVzdCB3YXMgYWRkZWQgdG8gY2hl
Y2sgdGhlIHRoZXNlIGNhbGxiYWNrcy4gSXQgdmVyaWZpZXMgdGhlIHR3byB0eXBlcyBvZiB3b3Jr
ZXJzLCBkZWRpY2F0ZWQgYW5kIHNoYXJlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHA6CisgICAgICAgIChsb2NhbFdvcmtlclNj
cmlwdEluaXRDYWxsYmFjayk6CisgICAgICAgIChXS0J1bmRsZUZyYW1lU2V0V29ya2VySW5pdGlh
bGl6ZUNhbGxiYWNrKToKKyAgICAgICAgKGxvY2FsV29ya2VyU2NyaXB0VGVybWluYXRlQ2FsbGJh
Y2spOgorICAgICAgICAoV0tCdW5kbGVGcmFtZVNldFdvcmtlclRlcm1pbmF0ZUNhbGxiYWNrKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUu
aDoKKwogMjAxMy0wNy0xNyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE1MjcwMSwgcjE1MjcwMywgcjE1
MjczOSwgcjE1Mjc1NCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29y
a2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggZTJhY2FlYzE5MTE5ODYwNmY5MDczNzU3MTRh
NWE4ZmUxMGRmZmJiYy4uNDBmZGUwOTU4MThhOWMyNjA1ZGY1ZDA5YTUyMDdjZTRhNjZkMjAwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29u
dHJvbGxlci5jcHAKQEAgLTY2LDYgKzY2LDkgQEAgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6V29y
a2VyU2NyaXB0Q29udHJvbGxlcihXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2MKIAog
V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6fldvcmtlclNjcmlwdENvbnRyb2xsZXIoKQogeworICAg
IGlmICh0ZXJtaW5hdGVTY3JpcHRDYWxsYmFjaygpKQorICAgICAgICB0ZXJtaW5hdGVTY3JpcHRD
YWxsYmFjaygpKG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxFeGVjKCksIG1fd29y
a2VyR2xvYmFsU2NvcGUtPmlzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoKSk7CisKICAgICBK
U0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKICAgICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5j
bGVhcigpOwogICAgIG1fdm0uY2xlYXIoKTsKQEAgLTEwOSw2ICsxMTIsOSBAQCB2b2lkIFdvcmtl
clNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoKQogICAgIH0KICAgICBBU1NFUlQobV93b3Jr
ZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2Nv
cGVXcmFwcGVyKTsKICAgICBBU1NFUlQoYXNPYmplY3QobV93b3JrZXJHbG9iYWxTY29wZVdyYXBw
ZXItPnByb3RvdHlwZSgpKS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdy
YXBwZXIpOworCisgICAgaWYgKGluaXRTY3JpcHRDYWxsYmFjaygpKQorICAgICAgICBpbml0U2Ny
aXB0Q2FsbGJhY2soKShtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsRXhlYygpLCBt
X3dvcmtlckdsb2JhbFNjb3BlLT5pc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKCkpOwogfQog
CiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJj
ZUNvZGUmIHNvdXJjZUNvZGUpCkBAIC0yMDUsNiArMjExLDI5IEBAIHZvaWQgV29ya2VyU2NyaXB0
Q29udHJvbGxlcjo6ZGV0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIpCiAgICAg
ZGVidWdnZXItPmRldGFjaChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0
KCkpOwogfQogCitXb3JrZXJTY3JpcHRDYWxsYmFjayBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpt
X2luaXRTY3JpcHRDYWxsYmFjayA9IDA7CitXb3JrZXJTY3JpcHRDYWxsYmFjayBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjptX3Rlcm1pbmF0ZVNjcmlwdENhbGxiYWNrID0gMDsKKwordm9pZCBXb3Jr
ZXJTY3JpcHRDb250cm9sbGVyOjpzZXRJbml0U2NyaXB0Q2FsbGJhY2soV29ya2VyU2NyaXB0Q2Fs
bGJhY2sgY2FsbGJhY2spCit7CisgICAgbV9pbml0U2NyaXB0Q2FsbGJhY2sgPSBjYWxsYmFjazsK
K30KKworV29ya2VyU2NyaXB0Q2FsbGJhY2sgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNj
cmlwdENhbGxiYWNrKCkKK3sKKyAgICByZXR1cm4gbV9pbml0U2NyaXB0Q2FsbGJhY2s7Cit9CisK
K3ZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0VGVybWluYXRlU2NyaXB0Q2FsbGJhY2so
V29ya2VyU2NyaXB0Q2FsbGJhY2sgY2FsbGJhY2spCit7CisgICAgbV90ZXJtaW5hdGVTY3JpcHRD
YWxsYmFjayA9IGNhbGxiYWNrOworfQorCitXb3JrZXJTY3JpcHRDYWxsYmFjayBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjp0ZXJtaW5hdGVTY3JpcHRDYWxsYmFjaygpCit7CisgICAgcmV0dXJuIG1f
dGVybWluYXRlU2NyaXB0Q2FsbGJhY2s7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDM0MzA1YjZjNmE4YmE5Y2E0NDBl
MDVjYjcyMGJhMjdmNGJjOTgyNTUuLjk0ODFkMTUwNWYzZGNmMWZiYTA0MTk4ZGI3ZTYxNjc0Yzg2
MjU0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3Jp
cHRDb250cm9sbGVyLmgKQEAgLTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorICAgIHR5cGVkZWYgdm9pZCAoKldvcmtlclNjcmlwdENhbGxiYWNr
KShKU0M6OkV4ZWNTdGF0ZSosIGJvb2wpOworCiAgICAgY2xhc3MgSlNXb3JrZXJHbG9iYWxTY29w
ZTsKICAgICBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogICAgIGNsYXNzIFNjcmlwdFZhbHVlOwpA
QCAtODIsNiArODQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGF0dGFj
aERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKTsKICAgICAgICAgdm9pZCBkZXRhY2hEZWJ1Z2dlcihK
U0M6OkRlYnVnZ2VyKik7CiAKKyAgICAgICAgc3RhdGljIHZvaWQgc2V0SW5pdFNjcmlwdENhbGxi
YWNrKFdvcmtlclNjcmlwdENhbGxiYWNrKTsKKyAgICAgICAgc3RhdGljIFdvcmtlclNjcmlwdENh
bGxiYWNrIGluaXRTY3JpcHRDYWxsYmFjaygpOworICAgICAgICBzdGF0aWMgdm9pZCBzZXRUZXJt
aW5hdGVTY3JpcHRDYWxsYmFjayhXb3JrZXJTY3JpcHRDYWxsYmFjayk7CisgICAgICAgIHN0YXRp
YyBXb3JrZXJTY3JpcHRDYWxsYmFjayB0ZXJtaW5hdGVTY3JpcHRDYWxsYmFjaygpOwogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdFNjcmlwdElmTmVlZGVkKCkKICAgICAgICAgewpAQCAt
OTUsNiArMTAxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBKU0M6OlN0cm9uZzxK
U1dvcmtlckdsb2JhbFNjb3BlPiBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcjsKICAgICAgICAg
Ym9vbCBtX2V4ZWN1dGlvbkZvcmJpZGRlbjsKICAgICAgICAgbXV0YWJsZSBNdXRleCBtX3NjaGVk
dWxlZFRlcm1pbmF0aW9uTXV0ZXg7CisKKyAgICAgICAgc3RhdGljIFdvcmtlclNjcmlwdENhbGxi
YWNrIG1faW5pdFNjcmlwdENhbGxiYWNrOworICAgICAgICBzdGF0aWMgV29ya2VyU2NyaXB0Q2Fs
bGJhY2sgbV90ZXJtaW5hdGVTY3JpcHRDYWxsYmFjazsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAppbmRleCA2MWIzODA4MDMw
NzlhODMwMTQyODhmZGM4OTFiZDdiZDEyZTIwZDlkLi5mMDNlNzIzNTZjYWMyMDZkYjZmMTU5M2Q5
YjgxMWQxMDY0MjhjNzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKQEAgLTI4
LDYgKzI4LDcgQEAKICNpbmNsdWRlICJXS0J1bmRsZUZyYW1lUHJpdmF0ZS5oIgogCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiSmF2YVNjcmlwdENv
cmUvQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxl
QVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLRGF0YS5oIgpAQCAtMzcsNiArMzgsOCBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuaD4KKwogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CkBAIC0xMDksNiArMTEyLDQ2IEBAIEpTR2xvYmFsQ29udGV4dFJlZiBX
S0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHRGb3JXb3JsZChXS0J1bmRsZUZyYW1lUmVm
IGZyCiAgICAgcmV0dXJuIHRvSW1wbChmcmFtZVJlZiktPmpzQ29udGV4dEZvcldvcmxkKHRvSW1w
bCh3b3JsZFJlZikpOwogfQogCitzdGF0aWMgV0tCdW5kbGVGcmFtZVdvcmtlclNjcmlwdENhbGxi
YWNrIHNfbG9jYWxXb3JrZXJTY3JpcHRJbml0Q2FsbGJhY2s7CisKK3N0YXRpYyB2b2lkIGxvY2Fs
V29ya2VyU2NyaXB0SW5pdENhbGxiYWNrKEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGUsIGJvb2wg
aXNEZWRpY2F0ZWQpCit7CisgICAgc19sb2NhbFdvcmtlclNjcmlwdEluaXRDYWxsYmFjayh0b1Jl
ZihleGVjU3RhdGUpLCBpc0RlZGljYXRlZCk7Cit9CisKK3ZvaWQgV0tCdW5kbGVGcmFtZVNldFdv
cmtlckluaXRpYWxpemVDYWxsYmFjayhXS0J1bmRsZUZyYW1lV29ya2VyU2NyaXB0Q2FsbGJhY2sg
Y2FsbGJhY2spCit7CisjaWYgRU5BQkxFKFdPUktFUlMpCisgICAgaWYgKGNhbGxiYWNrKSB7Cisg
ICAgICAgIHNfbG9jYWxXb3JrZXJTY3JpcHRJbml0Q2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAg
ICAgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0SW5pdFNjcmlwdENhbGxiYWNrKGxvY2FsV29y
a2VyU2NyaXB0SW5pdENhbGxiYWNrKTsKKyAgICB9IGVsc2UKKyAgICAgICAgV29ya2VyU2NyaXB0
Q29udHJvbGxlcjo6c2V0SW5pdFNjcmlwdENhbGxiYWNrKDApOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0oY2FsbGJhY2spOworI2VuZGlmCit9CisKK3N0YXRpYyBXS0J1bmRsZUZyYW1lV29ya2Vy
U2NyaXB0Q2FsbGJhY2sgc19sb2NhbFdvcmtlclNjcmlwdFRlcm1pbmF0ZUNhbGxiYWNrOworCitz
dGF0aWMgdm9pZCBsb2NhbFdvcmtlclNjcmlwdFRlcm1pbmF0ZUNhbGxiYWNrKEpTQzo6RXhlY1N0
YXRlKiBleGVjU3RhdGUsIGJvb2wgaXNEZWRpY2F0ZWQpCit7CisgICAgc19sb2NhbFdvcmtlclNj
cmlwdFRlcm1pbmF0ZUNhbGxiYWNrKHRvUmVmKGV4ZWNTdGF0ZSksIGlzRGVkaWNhdGVkKTsKK30K
Kwordm9pZCBXS0J1bmRsZUZyYW1lU2V0V29ya2VyVGVybWluYXRlQ2FsbGJhY2soV0tCdW5kbGVG
cmFtZVdvcmtlclNjcmlwdENhbGxiYWNrIGNhbGxiYWNrKQoreworI2lmIEVOQUJMRShXT1JLRVJT
KQorICAgIGlmIChjYWxsYmFjaykgeworICAgICAgICBzX2xvY2FsV29ya2VyU2NyaXB0VGVybWlu
YXRlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6
c2V0VGVybWluYXRlU2NyaXB0Q2FsbGJhY2sobG9jYWxXb3JrZXJTY3JpcHRUZXJtaW5hdGVDYWxs
YmFjayk7CisgICAgfSBlbHNlCisgICAgICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldFRl
cm1pbmF0ZVNjcmlwdENhbGxiYWNrKDApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY2FsbGJh
Y2spOworI2VuZGlmCit9CisKIEpTVmFsdWVSZWYgV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRX
cmFwcGVyRm9yTm9kZUZvcldvcmxkKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLQnVuZGxl
Tm9kZUhhbmRsZVJlZiBub2RlSGFuZGxlUmVmLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHdvcmxk
UmVmKQogewogICAgIHJldHVybiB0b0ltcGwoZnJhbWVSZWYpLT5qc1dyYXBwZXJGb3JXb3JsZCh0
b0ltcGwobm9kZUhhbmRsZVJlZiksIHRvSW1wbCh3b3JsZFJlZikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1l
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlRnJhbWUuaAppbmRleCA4YzJiODc1ZjUwZjQwZmMzYWIzMWIyOWFiZTJhYmJlYTQwOGY1NDRm
Li41Mzk3MThkMDU3ZDdkYzZmNWI3NDM0M2Q5Y2UyNTU2Mzc2MmJlZWE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJh
bWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlRnJhbWUuaApAQCAtNTEsNiArNTEsMTAgQEAgV0tfRVhQT1JUIFdLRnJhbWVMb2Fk
U3RhdGUgV0tCdW5kbGVGcmFtZUdldEZyYW1lTG9hZFN0YXRlKFdLQnVuZGxlRnJhbWVSZWYgZnJh
bWUKIFdLX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgV0tCdW5kbGVGcmFtZUdldEphdmFTY3Jp
cHRDb250ZXh0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpOwogV0tfRVhQT1JUIEpTR2xvYmFsQ29u
dGV4dFJlZiBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHRGb3JXb3JsZChXS0J1bmRs
ZUZyYW1lUmVmIGZyYW1lLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHdvcmxkKTsKIAordHlwZWRl
ZiB2b2lkICgqV0tCdW5kbGVGcmFtZVdvcmtlclNjcmlwdENhbGxiYWNrKShKU0NvbnRleHRSZWYg
Y29udGV4dCwgaW50IGlzRGVkaWNhdGVkKTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlRnJhbWVT
ZXRXb3JrZXJJbml0aWFsaXplQ2FsbGJhY2soV0tCdW5kbGVGcmFtZVdvcmtlclNjcmlwdENhbGxi
YWNrIGNhbGxiYWNrKTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlRnJhbWVTZXRXb3JrZXJUZXJt
aW5hdGVDYWxsYmFjayhXS0J1bmRsZUZyYW1lV29ya2VyU2NyaXB0Q2FsbGJhY2sgY2FsbGJhY2sp
OworCiBXS19FWFBPUlQgV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZUZyYW1lRm9ySmF2YVNjcmlw
dENvbnRleHQoSlNDb250ZXh0UmVmIGNvbnRleHQpOwogCiBXS19FWFBPUlQgSlNWYWx1ZVJlZiBX
S0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdFdyYXBwZXJGb3JOb2RlRm9yV29ybGQoV0tCdW5kbGVG
cmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIG5vZGVIYW5kbGUsIFdLQnVuZGxl
U2NyaXB0V29ybGRSZWYgd29ybGQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDc5OTJkODg4MTdkMjdiNzAyZTQ5NDE2MGIxZjdlNzE2N2Y5ZWM0
MzguLjYxNTNjZjJmOTVlODk2M2Y3NmE2NjI0NmQxN2M0ZTM2NzVmNzUyMDAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAor
MjAxMy0wNy0xNyAgVHVsbGlvIEx1Y2VuYSAgPHR1bGxpby5sdWNlbmFAb3BlbmJvc3NhLm9yZz4K
KworICAgICAgICBbV0syXSBQcm9vZiBvZiBjb25jZXB0IHRvIGluamVjdCBjdXN0b20gSmF2YVNj
cmlwdCBvYmplY3RzIG9uIFdlYldvcmtlciBjb250ZXh0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3NTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FsbGJhY2tzIHdlcmUgYWRkZWQgZm9yIGluaXRp
YWxpemUgYW5kIHRlcm1pbmF0ZSBXZWJXb3JrZXJzIHVzaW5nIFdLMiBBUEkuCisgICAgICAgIFRo
ZXNlIGNhbGxiYWNrcyBoYW5kbGUgYmluZGluZ3MgYmV0d2VlbiBmdW5jdGlvbnMgb2YgSmF2YVNj
cmlwdCBXb3JrZXJzIGFuZCBmdW5jdGlvbnMgZGVmaW5lZCBhdCBhIHByZXZpb3VzbHkgbG9hZGVk
IGJ1bmRsZS4KKyAgICAgICAgQW4gQVBJIHRlc3Qgd2FzIGFkZGVkIHRvIGNoZWNrIHRoZSB0aGVz
ZSBjYWxsYmFja3MuIEl0IHZlcmlmaWVzIHRoZSB0d28gdHlwZXMgb2Ygd29ya2VycywgZGVkaWNh
dGVkIGFuZCBzaGFyZWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFt
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlci5jcHA6IEFkZGVkLgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL1dlYldvcmtlclNoYXJlZFRlc3QuaHRtbDogQWRkZWQuCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlclNoYXJlZFRlc3QuanM6IEFkZGVkLgorICAg
ICAgICAob25jb25uZWN0KToKKyAgICAgICAgKGxpc3RlbkZvck1lc3NhZ2UpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJUZXN0Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJUZXN0LmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNlbGYub25tZXNzYWdlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyX0J1bmRsZS5jcHA6IEFkZGVkLgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6Zm9vKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmJhcik6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjp3ZWJXb3JrZXJJbml0aWFsaXplKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OndlYldvcmtlclRlcm1pbmF0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpXZWJX
b3JrZXJUZXN0OjpXZWJXb3JrZXJUZXN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OldlYldv
cmtlclRlc3Q6OmluaXRpYWxpemUpOgorCiAyMDEzLTA3LTE3ICBDb21taXQgUXVldWUgIDxjb21t
aXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTUyNzAxLCByMTUyNzAzLCByMTUyNzM5LCByMTUyNzU0LApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZp
bGUuYW0KaW5kZXggYTNiM2Y5ODU3N2NkN2E4M2ZkODBlNzIwMjZiOGVmZTZhN2E0ZjAwNi4uMmM3
YTkzMWE1YzYzZjhlMDZiODRiZTg5Nzc4ZDllMzdmOTFjMmY1MSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0dO
VW1ha2VmaWxlLmFtCkBAIC0yODIsNiArMjgyLDcgQEAgUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9U
ZXN0V2ViS2l0Ml9TT1VSQ0VTID0gXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9TcGFjZWJhclNjcm9sbGluZy5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9UZXJtaW5hdGVUd2ljZS5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9Vc2VyTWVzc2FnZS5jcHAgXAorCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9XZWJXb3JrZXIuY3BwIFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ls
bFNlbmRTdWJtaXRFdmVudC5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9XS0Nvbm5lY3Rpb24uY3BwIFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
V0tQYWdlR2V0U2NhbGVGYWN0b3JOb3RaZXJvLmNwcCBcCkBAIC0zMTksNiArMzIwLDcgQEAgTGli
cmFyaWVzX2xpYlRlc3RXZWJLaXRBUElJbmplY3RlZEJ1bmRsZV9sYV9TT1VSQ0VTID0gXAogCVRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9SZXNwb25zaXZlbmVzc1RpbWVyRG9lc250
RmlyZUVhcmx5X0J1bmRsZS5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9TaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwIFwKIAlUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvVXNlck1lc3NhZ2VfQnVuZGxlLmNwcCBcCisJVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlcl9CdW5kbGUuY3BwIFwKIAlUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUu
Y3BwIFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV0tDb25uZWN0aW9uX0J1
bmRsZS5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL0luamVjdGVkQnVuZGxlQ29udHJv
bGxlckd0ay5jcHAgXApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVm
bC5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggMjhl
YWY3N2Y1OTIzYTZiZThiMjNmOTQ5NjE2YTI3MmQ1ZDk3NGEyNC4uZTcyYjk1MjlkYTBkM2YxYjRh
ZTFhYzliMWZjYzkyNmM1NzA1NDFjYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNt
YWtlCkBAIC01NCw2ICs1NCw3IEBAIHNldCh0ZXN0X3dlYmNvcmVfQklOQVJJRVMKIAogIyBJbiBo
ZXJlIHdlIGxpc3QgdGhlIGJ1bmRsZXMgdGhhdCBhcmUgdXNlZCBieSBvdXIgc3BlY2lmaWMgV0sy
IEFQSSBUZXN0cwogbGlzdChBUFBFTkQgYnVuZGxlX2hhcm5lc3NfU09VUkNFUworICAgICR7VEVT
VFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyX0J1bmRsZS5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJLaXQyL2VmbC9XS1ZpZXdDbGllbnRXZWJQcm9j
ZXNzQ2FsbGJhY2tzX0J1bmRsZS5jcHAKICkKIApAQCAtOTMsNiArOTQsNyBAQCBzZXQodGVzdF93
ZWJraXQyX2FwaV9CSU5BUklFUwogICAgIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFy
bHkKICAgICBUZXJtaW5hdGVUd2ljZQogICAgIFVzZXJNZXNzYWdlCisgICAgV2ViV29ya2VyCiAg
ICAgV0tDb25uZWN0aW9uCiAgICAgV0tQcmVmZXJlbmNlcwogICAgIFdLU3RyaW5nCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk3ODljYTdlODlkYWNjMzY3YWJlNTdlM2YzZWUyODhjZTEwOGE0ZDIKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyLmNwcApAQCAt
MCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJTmRUIC0gSW5zdGl0dXRv
IE5va2lhIGRlIFRlY25vbG9naWEKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
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
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgPFdl
YktpdDIvV0tDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2UuaD4KKyNpbmNsdWRl
IDxXZWJLaXQyL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKKworc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIHRl
cm1pbmF0ZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIGNoYW5nZWRUaXRsZSA9IGZhbHNlOworc3Rh
dGljIGJvb2wgaW5pdGlhbGl6ZWRTaGFyZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIHRlcm1pbmF0
ZWRTaGFyZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIGNoYW5nZWRUaXRsZVNoYXJlZCA9IGZhbHNl
OworCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0Nv
bnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQq
KQoreworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAi
V2ViV29ya2VySW5pdE1lc3NhZ2UiKSkKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworICAg
IGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJXZWJX
b3JrZXJUZXJtaW5hdGVNZXNzYWdlIikpCisgICAgICAgIHRlcm1pbmF0ZWQgPSB0cnVlOworICAg
IGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJXZWJX
b3JrZXJTaGFyZWRJbml0TWVzc2FnZSIpKQorICAgICAgICBpbml0aWFsaXplZFNoYXJlZCA9IHRy
dWU7CisgICAgZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFt
ZSwgIldlYldvcmtlclNoYXJlZFRlcm1pbmF0ZU1lc3NhZ2UiKSkKKyAgICAgICAgdGVybWluYXRl
ZFNoYXJlZCA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaXRsZUZvckZyYW1l
KFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgdGl0bGUsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiwgY29u
c3Qgdm9pZCAqKQoreworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHRpdGxl
LCAiV2ViV29ya2VyVGl0bGUiKSkKKyAgICAgICAgY2hhbmdlZFRpdGxlID0gdHJ1ZTsKKyAgICBl
bHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHRpdGxlLCAiV2ViV29ya2VyU2hh
cmVkVGl0bGUiKSkKKyAgICAgICAgY2hhbmdlZFRpdGxlU2hhcmVkID0gdHJ1ZTsKK30KKworVEVT
VChXZWJLaXQyLCBXZWJXb3JrZXIpCit7CisgICAgLy8gVGhpcyB0ZXN0IGNvdmVyIHRoZSBiaW5k
aW5nIGJldHdlZW4gZnVuY3Rpb25zIG9mIEphdmFTY3JpcHQgV29ya2VycyBhbmQKKyAgICAvLyBm
dW5jdGlvbnMgZGVmaW5lZCBhdCBhIHByZXZpb3VzbHkgbG9hZGVkIGJ1bmRsZS4gSXQgdmVyaWZp
ZXMgdGhlIHR3bworICAgIC8vIHR5cGVzIG9mIFdvcmtlcnMsIGRlZGljYXRlZCBhbmQgc2hhcmVk
LgorICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBVdGlsOjpj
cmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJXZWJXb3JrZXJUZXN0IikpOworCisg
ICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQgaW5qZWN0ZWRCdW5kbGVDbGllbnQ7Cisg
ICAgbWVtc2V0KCZpbmplY3RlZEJ1bmRsZUNsaWVudCwgMCwgc2l6ZW9mKGluamVjdGVkQnVuZGxl
Q2xpZW50KSk7CisgICAgaW5qZWN0ZWRCdW5kbGVDbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUgPSBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKKyAg
ICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpLCAmaW5qZWN0
ZWRCdW5kbGVDbGllbnQpOworCisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5n
ZXQoKSk7CisKKyAgICBXS1BhZ2VMb2FkZXJDbGllbnQgcGFnZUxvYWRlckNsaWVudDsKKyAgICBt
ZW1zZXQoJnBhZ2VMb2FkZXJDbGllbnQsIDAsIHNpemVvZihXS1BhZ2VMb2FkZXJDbGllbnQpKTsK
KyAgICBwYWdlTG9hZGVyQ2xpZW50LnZlcnNpb24gPSBrV0tQYWdlTG9hZGVyQ2xpZW50Q3VycmVu
dFZlcnNpb247CisgICAgcGFnZUxvYWRlckNsaWVudC5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSA9
IGRpZFJlY2VpdmVUaXRsZUZvckZyYW1lOworICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQo
d2ViVmlldy5wYWdlKCksICZwYWdlTG9hZGVyQ2xpZW50KTsKKworICAgIFdLUGFnZUdyb3VwUmVm
IHBhZ2VHcm91cCA9IFdLUGFnZUdldFBhZ2VHcm91cCh3ZWJWaWV3LnBhZ2UoKSk7CisgICAgV0tQ
cmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlcyA9IFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMocGFn
ZUdyb3VwKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc0FsbG93
ZWQocHJlZmVyZW5jZXMsIHRydWUpOworCisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHVybCA9
IGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoIldlYldvcmtlclRlc3QiLCAiaHRt
bCIpKTsKKyAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCB1cmwuZ2V0KCkpOworICAg
IAorICAgIFV0aWw6OnJ1bigmaW5pdGlhbGl6ZWQpOworICAgIFV0aWw6OnJ1bigmdGVybWluYXRl
ZCk7CisgICAgVXRpbDo6cnVuKCZjaGFuZ2VkVGl0bGUpOworCisgICAgdXJsID0gYWRvcHRXSyhV
dGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgiV2ViV29ya2VyU2hhcmVkVGVzdCIsICJodG1sIikp
OworICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIHVybC5nZXQoKSk7CisgICAgVXRp
bDo6cnVuKCZpbml0aWFsaXplZFNoYXJlZCk7CisgICAgVXRpbDo6cnVuKCZ0ZXJtaW5hdGVkU2hh
cmVkKTsKKyAgICBVdGlsOjpydW4oJmNoYW5nZWRUaXRsZVNoYXJlZCk7Cit9CisKK30gLy8gVGVz
dFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L1dlYldvcmtlclNoYXJlZFRlc3QuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9XZWJXb3JrZXJTaGFyZWRUZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc3NTMwNzIyNmVhNzVj
NmQ5ZTkzOTFmOWZlYjFhYjI1OWY2OWZkZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJTaGFyZWRUZXN0Lmh0bWwKQEAgLTAsMCAr
MSwxMiBAQAorPGh0bWw+CisgICAgPGJvZHk+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAg
ICB2YXIgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtlcigiV2ViV29ya2VyU2hhcmVkVGVzdC5qcyIp
OworICAgICAgICAgICAgd29ya2VyLnBvcnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQudGl0bGUgPSBldmVudC5k
YXRhOworICAgICAgICAgICAgfSwgZmFsc2UpOworICAgICAgICAgICAgd29ya2VyLnBvcnQuc3Rh
cnQoKTsKKyAgICAgICAgICAgIHdvcmtlci5wb3J0LnBvc3RNZXNzYWdlKCJXZWJXb3JrZXJTaGFy
ZWRNZXNzYWdlIik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJTaGFy
ZWRUZXN0LmpzIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlclNo
YXJlZFRlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTg0YmFmNjc3M2I2YTRmZThkYmRiYzc4ZGVkMWE4ZTdk
YzFiZWVhNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9XZWJXb3JrZXJTaGFyZWRUZXN0LmpzCkBAIC0wLDAgKzEsMTMgQEAKK3ZhciBwb3J0cyA9
IFtdOworCitvbmNvbm5lY3QgPSBmdW5jdGlvbihldmVudCkgeworICAgIHZhciBwb3J0ID0gZXZl
bnQucG9ydHNbMF07CisgICAgcG9ydHMucHVzaChwb3J0KTsKKyAgICBwb3J0LnN0YXJ0KCk7Cisg
ICAgcG9ydC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsgbGlz
dGVuRm9yTWVzc2FnZShldmVudCwgcG9ydCk7IH0gKTsKK30KKworbGlzdGVuRm9yTWVzc2FnZSA9
IGZ1bmN0aW9uIChldmVudCwgcG9ydCkgeworICAgIHBvcnQucG9zdE1lc3NhZ2Uoc2VsZi5iYXIo
KSk7CisgICAgc2VsZi5jbG9zZSgpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlclRlc3QuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJUZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdmZjI3MDQ2N2Mx
Nzk0NzNjMjQ1MjQ2OThjNjQxMzkwZTY2YzY3OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJUZXN0Lmh0bWwKQEAgLTAsMCArMSwx
MSBAQAorPGh0bWw+CisgICAgPGJvZHk+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICB2
YXIgd29ya2VyID0gbmV3IFdvcmtlcigiV2ViV29ya2VyVGVzdC5qcyIpOworICAgICAgICAgICAg
d29ya2VyLnBvc3RNZXNzYWdlKCJXZWJXb3JrZXJNZXNzYWdlIik7CisgICAgICAgICAgICB3b3Jr
ZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVu
dC50aXRsZSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICB9OworICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvV2ViV29ya2VyVGVzdC5qcyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9XZWJXb3JrZXJUZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2ODViYjU1YzIyMTU0ZTEwN2Yz
NGI1MjUyNTg1MTcyNDA0OTEzMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyVGVzdC5qcwpAQCAtMCwwICsxLDUgQEAKK3NlbGYu
b25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBzZWxmLnBvc3RNZXNzYWdlKHNlbGYu
Zm9vKCkpOworICAgIHNlbGYuY2xvc2UoKTsKKyAgICByZXR1cm47Cit9OwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlcl9CdW5kbGUuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlcl9CdW5kbGUuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ5OWE1M2M0MmM4MTQ2OWJmNzM3YTc5MTkxY2U0M2MzZDljNzIyM2EKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2Vy
X0J1bmRsZS5jcHAKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJ
TmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVRlc3Qu
aCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlRnJhbWUuaD4KKyNpbmNsdWRlIDxjc3RkaW8+
Cit1c2luZyBuYW1lc3BhY2Ugc3RkOworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitKU1Zh
bHVlUmVmIGZvbyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYsIHNp
emVfdCwgY29uc3QgSlNWYWx1ZVJlZltdLCBKU1ZhbHVlUmVmKikKK3sKKyAgICBXS0J1bmRsZVBv
c3RNZXNzYWdlKEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6c2hhcmVkKCkuYnVuZGxlKCksIFV0
aWw6OnRvV0soIldlYldvcmtlckluaXRNZXNzYWdlIikuZ2V0KCksIDApOworICAgIHJldHVybiBK
U1ZhbHVlTWFrZVN0cmluZyhjdHgsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJXZWJX
b3JrZXJUaXRsZSIpKTsKK30KKworSlNWYWx1ZVJlZiBiYXIoSlNDb250ZXh0UmVmIGN0eCwgSlNP
YmplY3RSZWYsIEpTT2JqZWN0UmVmLCBzaXplX3QsIGNvbnN0IEpTVmFsdWVSZWZbXSwgSlNWYWx1
ZVJlZiopCit7CisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZUNvbnRyb2xs
ZXI6OnNoYXJlZCgpLmJ1bmRsZSgpLCBVdGlsOjp0b1dLKCJXZWJXb3JrZXJTaGFyZWRJbml0TWVz
c2FnZSIpLmdldCgpLCAwKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY3R4LCBKU1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiV2ViV29ya2VyU2hhcmVkVGl0bGUiKSk7Cit9CisK
K3ZvaWQgd2ViV29ya2VySW5pdGlhbGl6ZShKU0NvbnRleHRSZWYgY29udGV4dCwgaW50IGlzRGVk
aWNhdGVkKQoreworICAgIGlmIChpc0RlZGljYXRlZCkgeworICAgICAgICBKU1N0cmluZ1JlZiBm
dW5jTmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJmb28iKTsKKyAgICAgICAg
SlNPYmplY3RSZWYganNGdW5jID0gSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2soY29u
dGV4dCwgZnVuY05hbWUsICZmb28pOworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRl
eHQsIEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChjb250ZXh0KSwgZnVuY05hbWUsIGpzRnVuYywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSwgMCk7CisgICAgICAgIEpTU3RyaW5nUmVsZWFzZShmdW5jTmFtZSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgSlNTdHJpbmdSZWYgZnVuY05hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiYmFyIik7CisgICAgICAgIEpTT2JqZWN0UmVmIGpzRnVuYyA9IEpTT2JqZWN0TWFr
ZUZ1bmN0aW9uV2l0aENhbGxiYWNrKGNvbnRleHQsIGZ1bmNOYW1lLCAmYmFyKTsKKyAgICAgICAg
SlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QoY29u
dGV4dCksIGZ1bmNOYW1lLCBqc0Z1bmMsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUsIDApOworICAgICAgICBKU1N0cmluZ1JlbGVh
c2UoZnVuY05hbWUpOworICAgIH0KK30KKwordm9pZCB3ZWJXb3JrZXJUZXJtaW5hdGUoSlNDb250
ZXh0UmVmIGNvbnRleHQsIGludCBpc0RlZGljYXRlZCkKK3sKKyAgICBpZiAoaXNEZWRpY2F0ZWQp
CisgICAgICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpz
aGFyZWQoKS5idW5kbGUoKSwgVXRpbDo6dG9XSygiV2ViV29ya2VyVGVybWluYXRlTWVzc2FnZSIp
LmdldCgpLCAwKTsKKyAgICBlbHNlCisgICAgICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0
ZWRCdW5kbGVDb250cm9sbGVyOjpzaGFyZWQoKS5idW5kbGUoKSwgVXRpbDo6dG9XSygiV2ViV29y
a2VyU2hhcmVkVGVybWluYXRlTWVzc2FnZSIpLmdldCgpLCAwKTsKK30KKworY2xhc3MgV2ViV29y
a2VyVGVzdCA6IHB1YmxpYyBJbmplY3RlZEJ1bmRsZVRlc3QgeworcHVibGljOgorICAgIFdlYldv
cmtlclRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIpCisgICAgICAgIDogSW5qZWN0
ZWRCdW5kbGVUZXN0KGlkZW50aWZpZXIpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCBpbml0aWFsaXplKFdLQnVuZGxlUmVmLCBXS1R5cGVSZWYpCisgICAgeworICAgICAgICBXS0J1
bmRsZUZyYW1lU2V0V29ya2VySW5pdGlhbGl6ZUNhbGxiYWNrKHdlYldvcmtlckluaXRpYWxpemUp
OworICAgICAgICBXS0J1bmRsZUZyYW1lU2V0V29ya2VyVGVybWluYXRlQ2FsbGJhY2sod2ViV29y
a2VyVGVybWluYXRlKTsKKyAgICB9Cit9OworCitzdGF0aWMgSW5qZWN0ZWRCdW5kbGVUZXN0OjpS
ZWdpc3RlcjxXZWJXb3JrZXJUZXN0PiByZWdpc3RyYXIoIldlYldvcmtlclRlc3QiKTsKKworfSAv
LyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218024</attachid>
            <date>2013-11-28 14:01:42 -0800</date>
            <delta_ts>2013-11-28 18:05:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117523-20131128190146.patch</filename>
            <type>text/plain</type>
            <size>34434</size>
            <attacher name="Tullio Lucena">tullio.lucena</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5ODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNlZWMwMGZjNDY1NzQ5
YmIzYjZjMWZjZTY0NGMyYmM1ZDI0ODgyMi4uNjdiMzMwMzdiZmRiOTliYzA4NGIyZTMyMWRmZjdm
NmQ5YWZiZTQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTExLTI4ICBUdWxs
aW8gTHVjZW5hICA8dHVsbGlvLmx1Y2VuYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtXSzJd
IFByb29mIG9mIGNvbmNlcHQgdG8gaW5qZWN0IGN1c3RvbSBKYXZhU2NyaXB0IG9iamVjdHMgb24g
V2ViV29ya2VyIGNvbnRleHQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTc1MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDYWxsYmFja3Mgd2VyZSBhZGRlZCBmb3IgaW5pdGlhbGl6ZSBhbmQgdGVybWlu
YXRlIFdlYldvcmtlcnMgdXNpbmcgV0syIEFQSS4KKyAgICAgICAgVGhlc2UgY2FsbGJhY2tzIGhh
bmRsZSBiaW5kaW5ncyBiZXR3ZWVuIGZ1bmN0aW9ucyBvZiBKYXZhU2NyaXB0IFdvcmtlcnMgYW5k
IGZ1bmN0aW9ucyBkZWZpbmVkIGF0IGEgcHJldmlvdXNseSBsb2FkZWQgYnVuZGxlLgorICAgICAg
ICBBbiBBUEkgdGVzdCB3YXMgYWRkZWQgdG8gY2hlY2sgdGhlIHRoZXNlIGNhbGxiYWNrcy4gSXQg
dmVyaWZpZXMgdGhlIHR3byB0eXBlcyBvZiB3b3JrZXJzLCBkZWRpY2F0ZWQgYW5kIHNoYXJlZC4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6fldvcmtlclNjcmlwdENvbnRy
b2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNj
cmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRJbml0
U2NyaXB0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxl
cjo6aW5pdFNjcmlwdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENv
bnRyb2xsZXI6OnNldFRlcm1pbmF0ZVNjcmlwdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OnRlcm1pbmF0ZVNjcmlwdENhbGxiYWNrKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmg6CisKIDIwMTMtMTEtMjgg
IEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBmZWF0
dXJlOiBDU1MgdmFyaWFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGM5NjJmNDY3ZTI3MWU4OTljMzBjYmQ1
MDU5M2IyNGNlM2U3ODU2ZC4uOWRiNjBkNTU2MWRmOTVkYjI3YjgyMjU3YTk5ZWZhYzFmMDMxMGYx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTExLTI4ICBUdWxsaW8gTHVjZW5h
ICA8dHVsbGlvLmx1Y2VuYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtXSzJdIFByb29mIG9m
IGNvbmNlcHQgdG8gaW5qZWN0IGN1c3RvbSBKYXZhU2NyaXB0IG9iamVjdHMgb24gV2ViV29ya2Vy
IGNvbnRleHQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTc1MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDYWxsYmFja3Mgd2VyZSBhZGRlZCBmb3IgaW5pdGlhbGl6ZSBhbmQgdGVybWluYXRlIFdlYldv
cmtlcnMgdXNpbmcgV0syIEFQSS4KKyAgICAgICAgVGhlc2UgY2FsbGJhY2tzIGhhbmRsZSBiaW5k
aW5ncyBiZXR3ZWVuIGZ1bmN0aW9ucyBvZiBKYXZhU2NyaXB0IFdvcmtlcnMgYW5kIGZ1bmN0aW9u
cyBkZWZpbmVkIGF0IGEgcHJldmlvdXNseSBsb2FkZWQgYnVuZGxlLgorICAgICAgICBBbiBBUEkg
dGVzdCB3YXMgYWRkZWQgdG8gY2hlY2sgdGhlIHRoZXNlIGNhbGxiYWNrcy4gSXQgdmVyaWZpZXMg
dGhlIHR3byB0eXBlcyBvZiB3b3JrZXJzLCBkZWRpY2F0ZWQgYW5kIHNoYXJlZC4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHA6Cisg
ICAgICAgIChsb2NhbFdvcmtlclNjcmlwdEluaXRDYWxsYmFjayk6CisgICAgICAgIChXS0J1bmRs
ZUZyYW1lU2V0V29ya2VySW5pdGlhbGl6ZUNhbGxiYWNrKToKKyAgICAgICAgKGxvY2FsV29ya2Vy
U2NyaXB0VGVybWluYXRlQ2FsbGJhY2spOgorICAgICAgICAoV0tCdW5kbGVGcmFtZVNldFdvcmtl
clRlcm1pbmF0ZUNhbGxiYWNrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlRnJhbWUuaDoKKwogMjAxMy0xMS0yOCAgw4l2YSBCYWzDoXpzZmFsdmkg
IDxiYWxhenNmYWx2aS5ldmFAc3R1ZC51LXN6ZWdlZC5odT4KIAogICAgICAgICBCdWlsZGZpeCBh
ZnRlciByMTU5ODI0IGZvciBHQ0MgNC42CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDI5MGIxZjExNDQ0YTZhNGNi
MjNlOTc3ZDFkYThiNzk0NWIwYjQzOTguLjU4MWQ3ZGNiZjAzOTQ0OTU1MTcwMWJkMWY1MjZmNzU5
MDdkMGI4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC02Myw2ICs2Myw5IEBAIFdvcmtlclNjcmlwdENvbnRy
b2xsZXI6OldvcmtlclNjcmlwdENvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckds
b2JhbFNjCiAKIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6On5Xb3JrZXJTY3JpcHRDb250cm9sbGVy
KCkKIHsKKyAgICBpZiAodGVybWluYXRlU2NyaXB0Q2FsbGJhY2soKSkKKyAgICAgICAgdGVybWlu
YXRlU2NyaXB0Q2FsbGJhY2soKShtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsRXhl
YygpLCBtX3dvcmtlckdsb2JhbFNjb3BlLT5pc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKCkp
OworCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0oKSk7CiAgICAgbV93b3JrZXJHbG9iYWxTY29w
ZVdyYXBwZXIuY2xlYXIoKTsKICAgICBtX3ZtLmNsZWFyKCk7CkBAIC0xMDYsNiArMTA5LDkgQEAg
dm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KCkKICAgICB9CiAgICAgQVNT
RVJUKG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtl
ckdsb2JhbFNjb3BlV3JhcHBlcik7CiAgICAgQVNTRVJUKGFzT2JqZWN0KG1fd29ya2VyR2xvYmFs
U2NvcGVXcmFwcGVyLT5wcm90b3R5cGUoKSktPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xv
YmFsU2NvcGVXcmFwcGVyKTsKKworICAgIGlmIChpbml0U2NyaXB0Q2FsbGJhY2soKSkKKyAgICAg
ICAgaW5pdFNjcmlwdENhbGxiYWNrKCkobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2Jh
bEV4ZWMoKSwgbV93b3JrZXJHbG9iYWxTY29wZS0+aXNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZSgpKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQpAQCAtMjAzLDQgKzIwOSwyNyBAQCB2b2lkIFdv
cmtlclNjcmlwdENvbnRyb2xsZXI6OmRldGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqIGRlYnVn
Z2VyKQogICAgIGRlYnVnZ2VyLT5kZXRhY2gobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmds
b2JhbE9iamVjdCgpKTsKIH0KIAorV29ya2VyU2NyaXB0Q2FsbGJhY2sgV29ya2VyU2NyaXB0Q29u
dHJvbGxlcjo6bV9pbml0U2NyaXB0Q2FsbGJhY2sgPSAwOworV29ya2VyU2NyaXB0Q2FsbGJhY2sg
V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6bV90ZXJtaW5hdGVTY3JpcHRDYWxsYmFjayA9IDA7CisK
K3ZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0SW5pdFNjcmlwdENhbGxiYWNrKFdvcmtl
clNjcmlwdENhbGxiYWNrIGNhbGxiYWNrKQoreworICAgIG1faW5pdFNjcmlwdENhbGxiYWNrID0g
Y2FsbGJhY2s7Cit9CisKK1dvcmtlclNjcmlwdENhbGxiYWNrIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXI6OmluaXRTY3JpcHRDYWxsYmFjaygpCit7CisgICAgcmV0dXJuIG1faW5pdFNjcmlwdENhbGxi
YWNrOworfQorCit2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldFRlcm1pbmF0ZVNjcmlw
dENhbGxiYWNrKFdvcmtlclNjcmlwdENhbGxiYWNrIGNhbGxiYWNrKQoreworICAgIG1fdGVybWlu
YXRlU2NyaXB0Q2FsbGJhY2sgPSBjYWxsYmFjazsKK30KKworV29ya2VyU2NyaXB0Q2FsbGJhY2sg
V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6dGVybWluYXRlU2NyaXB0Q2FsbGJhY2soKQoreworICAg
IHJldHVybiBtX3Rlcm1pbmF0ZVNjcmlwdENhbGxiYWNrOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3Jp
cHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmgKaW5kZXggOGJiN2Y0OWIwODVmYzVjZGQ4NzIyNzcxOWUzMzE1ZjFhMjZiOGY4
NS4uOTFjZjc2YzhhN2NlMzY2NGM5ZWE0Y2EyZDUyZWY1MzA4MzM4MTZmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaApAQCAt
MzksNiArMzksOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisg
ICAgdHlwZWRlZiB2b2lkICgqV29ya2VyU2NyaXB0Q2FsbGJhY2spKEpTQzo6RXhlY1N0YXRlKiwg
Ym9vbCk7CisKICAgICBjbGFzcyBKU1dvcmtlckdsb2JhbFNjb3BlOwogICAgIGNsYXNzIFNjcmlw
dFNvdXJjZUNvZGU7CiAgICAgY2xhc3MgU2NyaXB0VmFsdWU7CkBAIC04MSw2ICs4MywxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgYXR0YWNoRGVidWdnZXIoSlNDOjpEZWJ1
Z2dlciopOwogICAgICAgICB2b2lkIGRldGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKTsKIAor
ICAgICAgICBzdGF0aWMgdm9pZCBzZXRJbml0U2NyaXB0Q2FsbGJhY2soV29ya2VyU2NyaXB0Q2Fs
bGJhY2spOworICAgICAgICBzdGF0aWMgV29ya2VyU2NyaXB0Q2FsbGJhY2sgaW5pdFNjcmlwdENh
bGxiYWNrKCk7CisgICAgICAgIHN0YXRpYyB2b2lkIHNldFRlcm1pbmF0ZVNjcmlwdENhbGxiYWNr
KFdvcmtlclNjcmlwdENhbGxiYWNrKTsKKyAgICAgICAgc3RhdGljIFdvcmtlclNjcmlwdENhbGxi
YWNrIHRlcm1pbmF0ZVNjcmlwdENhbGxiYWNrKCk7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9p
ZCBpbml0U2NyaXB0SWZOZWVkZWQoKQogICAgICAgICB7CkBAIC05NCw2ICsxMDAsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEpTQzo6U3Ryb25nPEpTV29ya2VyR2xvYmFsU2NvcGU+
IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyOwogICAgICAgICBib29sIG1fZXhlY3V0aW9uRm9y
YmlkZGVuOwogICAgICAgICBtdXRhYmxlIE11dGV4IG1fc2NoZWR1bGVkVGVybWluYXRpb25NdXRl
eDsKKworICAgICAgICBzdGF0aWMgV29ya2VyU2NyaXB0Q2FsbGJhY2sgbV9pbml0U2NyaXB0Q2Fs
bGJhY2s7CisgICAgICAgIHN0YXRpYyBXb3JrZXJTY3JpcHRDYWxsYmFjayBtX3Rlcm1pbmF0ZVNj
cmlwdENhbGxiYWNrOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlRnJhbWUuY3BwCmluZGV4IDkxMjc5Y2I3ODU4MTVmYmZhODE4OTA2OWFlN2Zi
MmNkYmI5NTkxMzIuLmE4ZmNjMGM3YTM1Yzg5MTg3MGI0ODhiMDhjMjA3MDJjZGRmNjMwNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5j
bHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQu
aCIKKyNpbmNsdWRlICJKYXZhU2NyaXB0Q29yZS9BUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tBUElD
YXN0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tEYXRhLmgi
CkBAIC0zOCw2ICszOSw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oPgorCiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTEwNiw2ICsxMDks
MzggQEAgSlNHbG9iYWxDb250ZXh0UmVmIFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4
dEZvcldvcmxkKFdLQnVuZGxlRnJhbWVSZWYgZnIKICAgICByZXR1cm4gdG9JbXBsKGZyYW1lUmVm
KS0+anNDb250ZXh0Rm9yV29ybGQodG9JbXBsKHdvcmxkUmVmKSk7CiB9CiAKK3N0YXRpYyBXS0J1
bmRsZUZyYW1lV29ya2VyU2NyaXB0Q2FsbGJhY2sgc19sb2NhbFdvcmtlclNjcmlwdEluaXRDYWxs
YmFjazsKKworc3RhdGljIHZvaWQgbG9jYWxXb3JrZXJTY3JpcHRJbml0Q2FsbGJhY2soSlNDOjpF
eGVjU3RhdGUqIGV4ZWNTdGF0ZSwgYm9vbCBpc0RlZGljYXRlZCkKK3sKKyAgICBzX2xvY2FsV29y
a2VyU2NyaXB0SW5pdENhbGxiYWNrKHRvUmVmKGV4ZWNTdGF0ZSksIGlzRGVkaWNhdGVkKTsKK30K
Kwordm9pZCBXS0J1bmRsZUZyYW1lU2V0V29ya2VySW5pdGlhbGl6ZUNhbGxiYWNrKFdLQnVuZGxl
RnJhbWVXb3JrZXJTY3JpcHRDYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBpZiAoY2FsbGJhY2sp
IHsKKyAgICAgICAgc19sb2NhbFdvcmtlclNjcmlwdEluaXRDYWxsYmFjayA9IGNhbGxiYWNrOwor
ICAgICAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRJbml0U2NyaXB0Q2FsbGJhY2sobG9j
YWxXb3JrZXJTY3JpcHRJbml0Q2FsbGJhY2spOworICAgIH0gZWxzZQorICAgICAgICBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyOjpzZXRJbml0U2NyaXB0Q2FsbGJhY2soMCk7Cit9CisKK3N0YXRpYyBX
S0J1bmRsZUZyYW1lV29ya2VyU2NyaXB0Q2FsbGJhY2sgc19sb2NhbFdvcmtlclNjcmlwdFRlcm1p
bmF0ZUNhbGxiYWNrOworCitzdGF0aWMgdm9pZCBsb2NhbFdvcmtlclNjcmlwdFRlcm1pbmF0ZUNh
bGxiYWNrKEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGUsIGJvb2wgaXNEZWRpY2F0ZWQpCit7Cisg
ICAgc19sb2NhbFdvcmtlclNjcmlwdFRlcm1pbmF0ZUNhbGxiYWNrKHRvUmVmKGV4ZWNTdGF0ZSks
IGlzRGVkaWNhdGVkKTsKK30KKwordm9pZCBXS0J1bmRsZUZyYW1lU2V0V29ya2VyVGVybWluYXRl
Q2FsbGJhY2soV0tCdW5kbGVGcmFtZVdvcmtlclNjcmlwdENhbGxiYWNrIGNhbGxiYWNrKQorewor
ICAgIGlmIChjYWxsYmFjaykgeworICAgICAgICBzX2xvY2FsV29ya2VyU2NyaXB0VGVybWluYXRl
Q2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0
VGVybWluYXRlU2NyaXB0Q2FsbGJhY2sobG9jYWxXb3JrZXJTY3JpcHRUZXJtaW5hdGVDYWxsYmFj
ayk7CisgICAgfSBlbHNlCisgICAgICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldFRlcm1p
bmF0ZVNjcmlwdENhbGxiYWNrKDApOworfQorCiBKU1ZhbHVlUmVmIFdLQnVuZGxlRnJhbWVHZXRK
YXZhU2NyaXB0V3JhcHBlckZvck5vZGVGb3JXb3JsZChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVm
LCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgbm9kZUhhbmRsZVJlZiwgV0tCdW5kbGVTY3JpcHRXb3Js
ZFJlZiB3b3JsZFJlZikKIHsKICAgICByZXR1cm4gdG9JbXBsKGZyYW1lUmVmKS0+anNXcmFwcGVy
Rm9yV29ybGQodG9JbXBsKG5vZGVIYW5kbGVSZWYpLCB0b0ltcGwod29ybGRSZWYpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVGcmFtZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZUZyYW1lLmgKaW5kZXggOGMyYjg3NWY1MGY0MGZjM2FiMzFiMjlhYmUyYWJi
ZWE0MDhmNTQ0Zi4uNTM5NzE4ZDA1N2Q3ZGM2ZjViNzQzNDNkOWNlMjU1NjM3NjJiZWVhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmgKQEAgLTUxLDYgKzUxLDEwIEBAIFdLX0VYUE9SVCBX
S0ZyYW1lTG9hZFN0YXRlIFdLQnVuZGxlRnJhbWVHZXRGcmFtZUxvYWRTdGF0ZShXS0J1bmRsZUZy
YW1lUmVmIGZyYW1lCiBXS19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIFdLQnVuZGxlRnJhbWVH
ZXRKYXZhU2NyaXB0Q29udGV4dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKTsKIFdLX0VYUE9SVCBK
U0dsb2JhbENvbnRleHRSZWYgV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0Rm9yV29y
bGQoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiB3b3JsZCk7
CiAKK3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlRnJhbWVXb3JrZXJTY3JpcHRDYWxsYmFjaykoSlND
b250ZXh0UmVmIGNvbnRleHQsIGludCBpc0RlZGljYXRlZCk7CitXS19FWFBPUlQgdm9pZCBXS0J1
bmRsZUZyYW1lU2V0V29ya2VySW5pdGlhbGl6ZUNhbGxiYWNrKFdLQnVuZGxlRnJhbWVXb3JrZXJT
Y3JpcHRDYWxsYmFjayBjYWxsYmFjayk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUZyYW1lU2V0
V29ya2VyVGVybWluYXRlQ2FsbGJhY2soV0tCdW5kbGVGcmFtZVdvcmtlclNjcmlwdENhbGxiYWNr
IGNhbGxiYWNrKTsKKwogV0tfRVhQT1JUIFdLQnVuZGxlRnJhbWVSZWYgV0tCdW5kbGVGcmFtZUZv
ckphdmFTY3JpcHRDb250ZXh0KEpTQ29udGV4dFJlZiBjb250ZXh0KTsKIAogV0tfRVhQT1JUIEpT
VmFsdWVSZWYgV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRXcmFwcGVyRm9yTm9kZUZvcldvcmxk
KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBub2RlSGFuZGxl
LCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHdvcmxkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjZWYwMDMyMjFiZGVmYTM1YzIzZjcxOWU1YTll
NjU4Y2YwM2NkYWM5Li43OGNkOTA1NmYxMGVjNTU0NmVmYzYxZTU4ZDE0OWZkNGE4MDRhYjI3IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzcgQEAKKzIwMTMtMTEtMjggIFR1bGxpbyBMdWNlbmEgIDx0dWxsaW8ubHVjZW5hQG9wZW5i
b3NzYS5vcmc+CisKKyAgICAgICAgW1dLMl0gUHJvb2Ygb2YgY29uY2VwdCB0byBpbmplY3QgY3Vz
dG9tIEphdmFTY3JpcHQgb2JqZWN0cyBvbiBXZWJXb3JrZXIgY29udGV4dC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzUyMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENhbGxiYWNrcyB3ZXJlIGFkZGVk
IGZvciBpbml0aWFsaXplIGFuZCB0ZXJtaW5hdGUgV2ViV29ya2VycyB1c2luZyBXSzIgQVBJLgor
ICAgICAgICBUaGVzZSBjYWxsYmFja3MgaGFuZGxlIGJpbmRpbmdzIGJldHdlZW4gZnVuY3Rpb25z
IG9mIEphdmFTY3JpcHQgV29ya2VycyBhbmQgZnVuY3Rpb25zIGRlZmluZWQgYXQgYSBwcmV2aW91
c2x5IGxvYWRlZCBidW5kbGUuCisgICAgICAgIEFuIEFQSSB0ZXN0IHdhcyBhZGRlZCB0byBjaGVj
ayB0aGUgdGhlc2UgY2FsbGJhY2tzLiBJdCB2ZXJpZmllcyB0aGUgdHdvIHR5cGVzIG9mIHdvcmtl
cnMsIGRlZGljYXRlZCBhbmQgc2hhcmVkLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL1dlYldvcmtlcl9CdW5kbGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OmZvbyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpiYXIpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6d2ViV29ya2VySW5pdGlhbGl6ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
Ojp3ZWJXb3JrZXJUZXJtaW5hdGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6V2ViV29ya2Vy
VGVzdDo6V2ViV29ya2VyVGVzdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpXZWJXb3JrZXJU
ZXN0Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
d2ViV29ya2VyU2hhcmVkVGVzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvd2ViV29ya2VyU2hhcmVkVGVzdC5qczogQWRkZWQuCisgICAgICAgIChv
bmNvbm5lY3QpOgorICAgICAgICAobGlzdGVuRm9yTWVzc2FnZSk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL3dlYldvcmtlclRlc3QuaHRtbDogQWRkZWQuCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3dlYldvcmtlclRlc3QuanM6IEFkZGVkLgor
ICAgICAgICAoc2VsZi5vbm1lc3NhZ2UpOgorCiAyMDEzLTExLTI4ICBDb21taXQgUXVldWUgIDxj
b21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTU5ODM5LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4
dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5kZXggMjU3ODUxOGUzZmMx
YWQ3ODhlZjg4OTcwYThlN2FlNjNjMWU3NTVhNC4uMGI1NTFjZTIyNDM2NTExMDlkYjYzNmU2ZmUx
OTU3ZTgxOTI5N2QzZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CkBAIC0xMCw2ICsx
MCw3IEBAIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtDTUFLRV9CSU5BUllfRElSfQogICAgICR7SkFW
QVNDUklQVENPUkVfRElSfS9BUEkKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGlu
Z0hlYWRlcnMKICAgICAke1RISVJEUEFSVFlfRElSfS9ndGVzdC9pbmNsdWRlCisgICAgJHtXRUJD
T1JFX0RJUn0vYmluZGluZ3MvanMKICAgICAke1dFQkNPUkVfRElSfS9lZGl0aW5nCiAgICAgJHtX
RUJDT1JFX0RJUn0vcGxhdGZvcm0KICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGlj
cwpAQCAtNzUsNiArNzYsNyBAQCBhZGRfbGlicmFyeShUZXN0V2ViS2l0QVBJSW5qZWN0ZWRCdW5k
bGUgU0hBUkVECiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViS2l0Mi9SZXNwb25z
aXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5X0J1bmRsZS5jcHAKICAgICAke1RFU1RXRUJLSVRB
UElfRElSfS9UZXN0cy9XZWJLaXQyL1Nob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtX0J1bmRs
ZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJLaXQyL1VzZXJNZXNzYWdl
X0J1bmRsZS5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJLaXQyL1dlYldv
cmtlcl9CdW5kbGUuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViS2l0Mi9X
S0Nvbm5lY3Rpb25fQnVuZGxlLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dl
YktpdDIvV2lsbExvYWRfQnVuZGxlLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3Rz
L1dlYktpdDIvV2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVt
YWtlZmlsZS5hbQppbmRleCAwMzQyOGFhNzIyNTkyMTkxNjUxNDBjNGVhNTk5YWUyMmMyNzYxOGQ4
Li4zZjRjZWEyNzNkMjZkNzIxZDc1ZTE1MGRjOWM1ZTk5MjAyNWZkNmI2IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvR05VbWFrZWZpbGUuYW0KQEAgLTI5Myw2ICsyOTMsNyBAQCBQcm9ncmFtc19UZXN0V2ViS2l0
QVBJX1Rlc3RXZWJLaXQyX1NPVVJDRVMgPSBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL1NwYWNlYmFyU2Nyb2xsaW5nLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL1Rlcm1pbmF0ZVR3aWNlLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL1VzZXJNZXNzYWdlLmNwcCBcCisJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL1dlYldvcmtlci5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9XaWxsTG9hZC5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XaWxs
U2VuZFN1Ym1pdEV2ZW50LmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L1dLQ29ubmVjdGlvbi5jcHAgXApAQCAtMzM0LDYgKzMzNSw3IEBAIExpYnJhcmllc19saWJUZXN0
V2ViS2l0QVBJSW5qZWN0ZWRCdW5kbGVfbGFfU09VUkNFUyA9IFwKIAlUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5k
bGUuY3BwIFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvU2hvdWxkR29Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW1fQnVuZGxlLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL1VzZXJNZXNzYWdlX0J1bmRsZS5jcHAgXAorCVRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJfQnVuZGxlLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL1dpbGxMb2FkX0J1bmRsZS5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9XaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgXAogCVRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XS0Nvbm5lY3Rpb25fQnVuZGxlLmNwcCBcCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA3ZmZjNmNmOTAwNjdmMjExZDAz
OWM0ZDhjZGM0MjE0NDk4OWRhM2RhLi5iMjZlMTU5NWI1Njg3YTVjYjU0MGRlMzhhOTIwOGRiY2Mz
NjViYzBlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtl
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTU0LDYgKzU0
LDcgQEAgc2V0KHRlc3Rfd2ViY29yZV9CSU5BUklFUwogCiAjIEluIGhlcmUgd2UgbGlzdCB0aGUg
YnVuZGxlcyB0aGF0IGFyZSB1c2VkIGJ5IG91ciBzcGVjaWZpYyBXSzIgQVBJIFRlc3RzCiBsaXN0
KEFQUEVORCBidW5kbGVfaGFybmVzc19TT1VSQ0VTCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0v
VGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJfQnVuZGxlLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9E
SVJ9L1Rlc3RzL1dlYktpdDIvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXdJc0FjdGl2ZVNldElz
QWN0aXZlX0J1bmRsZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJLaXQy
L2VmbC9XS1ZpZXdDbGllbnRXZWJQcm9jZXNzQ2FsbGJhY2tzX0J1bmRsZS5jcHAKICkKQEAgLTk2
LDYgKzk3LDcgQEAgc2V0KHRlc3Rfd2Via2l0Ml9hcGlfQklOQVJJRVMKICAgICBTaG91bGRHb1Rv
QmFja0ZvcndhcmRMaXN0SXRlbQogICAgIFRlcm1pbmF0ZVR3aWNlCiAgICAgVXNlck1lc3NhZ2UK
KyAgICBXZWJXb3JrZXIKICAgICBXS0Nvbm5lY3Rpb24KICAgICBXS1ByZWZlcmVuY2VzCiAgICAg
V0tTdHJpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDkzNmIxYzhhNGUyZjNmNGViYWVi
Y2Y3NjY2NjViNDY2ZjNlODE4NS4uODNlOTdiYThlNjUyNzZiMzUxMjhiNTNhYWEwOWNkMWNjMjlj
NDY3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY2LDYgKzY2LDEyIEBACiAJCTMzM0I5
Q0UyMTI3N0YyMzEwMEZFRkNFMyAvKiBQcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMzQjlDRTExMjc3RjIzMTAw
RkVGQ0UzIC8qIFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAgKi87IH07CiAJCTMzQkU1QUY1MTM3
QjVBNkMwMDcwNTgxMyAvKiBNb3VzZU1vdmVBZnRlckNyYXNoLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzQkU1QUY0MTM3QjVBNkMwMDcwNTgxMyAv
KiBNb3VzZU1vdmVBZnRlckNyYXNoLmNwcCAqLzsgfTsKIAkJMzNCRTVBRjkxMzdCNUFBRTAwNzA1
ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzQkU1QUY4MTM3QjVBQUUwMDcwNTgxMyAvKiBN
b3VzZU1vdmVBZnRlckNyYXNoX0J1bmRsZS5jcHAgKi87IH07CisJCTMzQkU1QUZBMTM3QjVBMjEw
MDcwNTgxMyAvKiBXZWJXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzNCRTVBRkExMzdCNUEyMzAwNzA1ODEzIC8qIFdlYldvcmtlci5jcHAg
Ki87IH07CisJCTMzQkU1QUZCMTM3QjVBMjIwMDcwNTgxMyAvKiBXZWJXb3JrZXJfQnVuZGxlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzQkU1QUZC
MTM3QjVBMjQwMDcwNTgxMyAvKiBXZWJXb3JrZXJfQnVuZGxlLmNwcCAqLzsgfTsKKwkJMzNCRTRC
RTEzN0I1NEIyNTAwNjE0NzEzIC8qIHdlYldvcmtlclNoYXJlZFRlc3QuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0JFNEJFQzEzN0I1
MTI3MDA2MTQ3MTMgLyogd2ViV29ya2VyU2hhcmVkVGVzdC5odG1sICovOyB9OworCQkzM0JFNEJF
MTM3QjU0QjI2MDA2MTQ3MTMgLyogd2ViV29ya2VyU2hhcmVkVGVzdC5qcyBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0JFNEJFQzEzN0I1MTI4
MDA2MTQ3MTMgLyogd2ViV29ya2VyU2hhcmVkVGVzdC5qcyAqLzsgfTsKKwkJMzNCRTRCRTEzN0I1
NEIyOTAwNjE0NzEzIC8qIHdlYldvcmtlclRlc3QuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0JFNEJFQzEzN0I1MTJCMDA2MTQ3MTMg
Lyogd2ViV29ya2VyVGVzdC5odG1sICovOyB9OworCQkzM0JFNEJFMTM3QjU0QjJBMDA2MTQ3MTMg
Lyogd2ViV29ya2VyVGVzdC5qcyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzM0JFNEJFQzEzN0I1MTJDMDA2MTQ3MTMgLyogd2ViV29ya2VyVGVz
dC5qcyAqLzsgfTsKIAkJMzNEQzg5MTExNDE5NTNBMzAwNzQ3RUY3IC8qIExvYWRDYW5jZWxlZE5v
U2VydmVyUmVkaXJlY3RDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzM0RDODkxMDE0MTk1M0EzMDA3NDdFRjcgLyogTG9hZENhbmNlbGVk
Tm9TZXJ2ZXJSZWRpcmVjdENhbGxiYWNrLmNwcCAqLzsgfTsKIAkJMzNEQzg5MTIxNDE5NTVGRTAw
NzQ3RUY3IC8qIHNpbXBsZS1pZnJhbWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0RDODkwRTE0MTk1MzkzMDA3NDdFRjcgLyogc2lt
cGxlLWlmcmFtZS5odG1sICovOyB9OwogCQkzM0RDODkxNDE0MTk1NzlGMDA3NDdFRjcgLyogTG9h
ZENhbmNlbGVkTm9TZXJ2ZXJSZWRpcmVjdENhbGxiYWNrX0J1bmRsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0RDODkxMzE0MTk1NzlGMDA3NDdF
RjcgLyogTG9hZENhbmNlbGVkTm9TZXJ2ZXJSZWRpcmVjdENhbGxiYWNrX0J1bmRsZS5jcHAgKi87
IH07CkBAIC0zMjQsNiArMzMwLDEwIEBACiAJCQkJQzAxQTIzRjIxMjY2MTU2NzAwQzlFRDU1IC8q
IHNwYWNlYmFyLXNjcm9sbGluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUUxOTRF
MUJEMTc3RTUzQzcwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2Uu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDNTQwRjc4NDE1MkU1QTlBMDBBNDBDOEMg
LyogdmVyYm9zZU1hcmt1cC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTMzQkU0QkUx
MzdCNTRCMjUwMDYxNDcxMyAvKiB3ZWJXb3JrZXJTaGFyZWRUZXN0Lmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCisJCQkJMzNCRTRCRTEzN0I1NEIyNjAwNjE0NzEzIC8qIHdlYldvcmtlclNoYXJl
ZFRlc3QuanMgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJMzNCRTRCRTEzN0I1NEIyOTAwNjE0
NzEzIC8qIHdlYldvcmtlclRlc3QuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQkzM0JF
NEJFMTM3QjU0QjJBMDA2MTQ3MTMgLyogd2ViV29ya2VyVGVzdC5qcyBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQlBNUUyMDI3NTE1QjIxRjZFMDBDMTNFMTQgLyogV2luZG93bGVzc1dlYlZpZXdX
aXRoTWVkaWEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQluYW1lID0gIkNv
cHkgUmVzb3VyY2VzIjsKQEAgLTM5Miw2ICs0MDIsMTIgQEAKIAkJMzMzQjlDRTExMjc3RjIzMTAw
RkVGQ0UzIC8qIFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzM0JFNUFGNDEzN0I1QTZDMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0
ZXJDcmFzaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb3VzZU1v
dmVBZnRlckNyYXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzNCRTVBRjgx
MzdCNUFBRTAwNzA1ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vdXNlTW92ZUFmdGVyQ3Jhc2hfQnVuZGxl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzNCRTVBRkExMzdCNUEyMzAwNzA1
ODEzIC8qIFdlYldvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzM0JFNUFGQjEz
N0I1QTI0MDA3MDU4MTMgLyogV2ViV29ya2VyX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJXb3JrZXJfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzNCRTRCRUMxMzdCNTEyNzAwNjE0NzEzIC8qIHdlYldvcmtlclNoYXJl
ZFRlc3QuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWJXb3JrZXJTaGFyZWRU
ZXN0Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzM0JFNEJFQzEzN0I1MTI4
MDA2MTQ3MTMgLyogd2ViV29ya2VyU2hhcmVkVGVzdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
amF2YXNjcmlwdDsgcGF0aCA9ICJ3ZWJXb3JrZXJTaGFyZWRUZXN0LmpzIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzNCRTRCRUMxMzdCNTEyQjAwNjE0NzEzIC8qIHdlYldvcmtlclRl
c3QuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWJXb3JrZXJUZXN0Lmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzM0JFNEJFQzEzN0I1MTJDMDA2MTQ3MTMg
Lyogd2ViV29ya2VyVGVzdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0
aCA9ICJ3ZWJXb3JrZXJUZXN0LmpzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzNE
Qzg5MEUxNDE5NTM5MzAwNzQ3RUY3IC8qIHNpbXBsZS1pZnJhbWUuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJzaW1wbGUtaWZyYW1lLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzM0RDODkxMDE0MTk1M0EzMDA3NDdFRjcgLyogTG9hZENhbmNlbGVkTm9TZXJ2
ZXJSZWRpcmVjdENhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IExvYWRDYW5jZWxlZE5vU2VydmVyUmVkaXJlY3RDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTMzREM4OTEzMTQxOTU3OUYwMDc0N0VGNyAvKiBMb2FkQ2FuY2Vs
ZWROb1NlcnZlclJlZGlyZWN0Q2FsbGJhY2tfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRDYW5jZWxlZE5vU2VydmVyUmVkaXJlY3RDYWxsYmFja19C
dW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODE3LDYgKzgzMyw4IEBA
CiAJCQkJNTIwQkNGNEIxNDFFQjA5RTAwOTM3RUE4IC8qIFdlYkFyY2hpdmUuY3BwICovLAogCQkJ
CTUyMEJDRjRBMTQxRUIwOUUwMDkzN0VBOCAvKiBXZWJBcmNoaXZlX0J1bmRsZS5jcHAgKi8sCiAJ
CQkJMEYxN0JCRDQxNUFGNkM0RDAwN0FCNzUzIC8qIFdlYkNvcmVTdGF0aXN0aWNzV2l0aE5vV2Vi
UHJvY2Vzcy5jcHAgKi8sCisJCQkJMzNCRTVBRkExMzdCNUEyMzAwNzA1ODEzIC8qIFdlYldvcmtl
ci5jcHAgKi8sCisJCQkJMzNCRTVBRkIxMzdCNUEyNDAwNzA1ODEzIC8qIFdlYldvcmtlcl9CdW5k
bGUuY3BwICovLAogCQkJCTdDRkJDQUREMTc0MzIzNEYwMEIyQkZDRiAvKiBXaWxsTG9hZC5jcHAg
Ki8sCiAJCQkJN0NGQkNBRTMxNzQzMjM4RTAwQjJCRkNGIC8qIFdpbGxMb2FkX0J1bmRsZS5jcHAg
Ki8sCiAJCQkJNzZFMTgyRDkxNTQ3NTUwMTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnQu
Y3BwICovLApAQCAtODk3LDYgKzkxNSwxMCBAQAogCQkJCUJDQUE0ODU1MTRBMDIxNjQwMDg4RkFD
NCAvKiBzaW1wbGUtdGFsbC5odG1sICovLAogCQkJCUJDOTA5Nzc4MTI1NTcxQUIwMDA4Mzc1NiAv
KiBzaW1wbGUuaHRtbCAqLywKIAkJCQlDMDJCNzg4MjEyNjYxNTQxMDAyNkJGMEYgLyogc3BhY2Vi
YXItc2Nyb2xsaW5nLmh0bWwgKi8sCisJCQkJMzNCRTRCRUMxMzdCNTEyNzAwNjE0NzEzIC8qIHdl
YldvcmtlclNoYXJlZFRlc3QuaHRtbCAqLywKKwkJCQkzM0JFNEJFQzEzN0I1MTI4MDA2MTQ3MTMg
Lyogd2ViV29ya2VyU2hhcmVkVGVzdC5qcyAqLywKKwkJCQkzM0JFNEJFQzEzN0I1MTJCMDA2MTQ3
MTMgLyogd2ViV29ya2VyVGVzdC5odG1sICovLAorCQkJCTMzQkU0QkVDMTM3QjUxMkMwMDYxNDcx
MyAvKiB3ZWJXb3JrZXJUZXN0LmpzICovLAogCQkJKTsKIAkJCW5hbWUgPSBSZXNvdXJjZXM7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTI3Nyw2ICsxMjk5LDcgQEAKIAkJCQlDMDg1
ODdCRjEzRkU5NTZDMDAxRUY0RTUgLyogV2ViS2l0QWdub3N0aWNUZXN0Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTFGQkJCNEQxNTEzRDRFOTAwODIyNzM4IC8qIFdlYlZpZXdDYW5QYXN0ZVVSTC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTM3RTM4QzM0MTY5QjdEMDEwMDg0QzI4QyAvKiBXZWJWaWV3
RGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMzNCRTVB
RkExMzdCNUEyMTAwNzA1ODEzIC8qIFdlYldvcmtlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
NkUxODJEQTE1NDc1NTAxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBNUUyMDI3MzE1QjIxODE5MDBDMTNFMTQgLyogV2luZG93bGVzc1dlYlZp
ZXdXaXRoTWVkaWEubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNkI3QkU5NDE3NDY5MjA5MDA4QTM0
NDUgLyogRGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTMy
OSw2ICsxMzUyLDcgQEAKIAkJCQk1MUZDRjdBMTE1MzRCMkEwMDAxMDQ0OTEgLyogU2hvdWxkR29U
b0JhY2tGb3J3YXJkTGlzdEl0ZW1fQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMjJE
MzE5MTREQzY4QjkwMEZGQjFERCAvKiBVc2VyTWVzc2FnZV9CdW5kbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTIwQkNGNEMxNDFFQjA5RTAwOTM3RUE4IC8qIFdlYkFyY2hpdmVfQnVuZGxlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTMzQkU1QUZCMTM3QjVBMjIwMDcwNTgxMyAvKiBXZWJXb3Jr
ZXJfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2RTE4MkREMTU0NzU2OTEwMEYxRkFE
RCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QTlFMzI5NDE4MjE5NDVDMDBGNUQwNEMgLyogV0tSZW1vdGVPYmplY3RSZWdpc3RyeV9CdW5kbGUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzkwMUUzMzE0OTJBRjM5MDA3NEE2NjcgLyogV0tDb25u
ZWN0aW9uX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL1dlYldvcmtlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjZhN2E1ZjBkN2Q2ZThk
Y2I0YmE4YTE4MmE3ZTgwZmExNTY1NGFjNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXIuY3BwCkBAIC0wLDAgKzEsMTA2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9s
b2dpYQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
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
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRleHQu
aD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQcmVm
ZXJlbmNlc1ByaXZhdGUuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMg
Ym9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworc3RhdGljIGJvb2wgdGVybWluYXRlZCA9IGZhbHNl
Oworc3RhdGljIGJvb2wgY2hhbmdlZFRpdGxlID0gZmFsc2U7CitzdGF0aWMgYm9vbCBpbml0aWFs
aXplZFNoYXJlZCA9IGZhbHNlOworc3RhdGljIGJvb2wgdGVybWluYXRlZFNoYXJlZCA9IGZhbHNl
Oworc3RhdGljIGJvb2wgY2hhbmdlZFRpdGxlU2hhcmVkID0gZmFsc2U7CisKK3N0YXRpYyB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwgV0tTdHJp
bmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCit7CisgICAgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJXZWJXb3JrZXJJbml0TWVz
c2FnZSIpKQorICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CisgICAgZWxzZSBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIldlYldvcmtlclRlcm1pbmF0ZU1l
c3NhZ2UiKSkKKyAgICAgICAgdGVybWluYXRlZCA9IHRydWU7CisgICAgZWxzZSBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIldlYldvcmtlclNoYXJlZEluaXRN
ZXNzYWdlIikpCisgICAgICAgIGluaXRpYWxpemVkU2hhcmVkID0gdHJ1ZTsKKyAgICBlbHNlIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiV2ViV29ya2VyU2hh
cmVkVGVybWluYXRlTWVzc2FnZSIpKQorICAgICAgICB0ZXJtaW5hdGVkU2hhcmVkID0gdHJ1ZTsK
K30KKworc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV0tQYWdlUmVmLCBXS1N0
cmluZ1JlZiB0aXRsZSwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkICopCit7Cisg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcodGl0bGUsICJXZWJXb3JrZXJUaXRs
ZSIpKQorICAgICAgICBjaGFuZ2VkVGl0bGUgPSB0cnVlOworICAgIGVsc2UgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcodGl0bGUsICJXZWJXb3JrZXJTaGFyZWRUaXRsZSIpKQorICAg
ICAgICBjaGFuZ2VkVGl0bGVTaGFyZWQgPSB0cnVlOworfQorCitURVNUKFdlYktpdDIsIFdlYldv
cmtlcikKK3sKKyAgICAvLyBUaGlzIHRlc3QgY292ZXIgdGhlIGJpbmRpbmcgYmV0d2VlbiBmdW5j
dGlvbnMgb2YgSmF2YVNjcmlwdCBXb3JrZXJzIGFuZAorICAgIC8vIGZ1bmN0aW9ucyBkZWZpbmVk
IGF0IGEgcHJldmlvdXNseSBsb2FkZWQgYnVuZGxlLiBJdCB2ZXJpZmllcyB0aGUgdHdvCisgICAg
Ly8gdHlwZXMgb2YgV29ya2VycywgZGVkaWNhdGVkIGFuZCBzaGFyZWQuCisgICAgV0tSZXRhaW5Q
dHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJ
bmplY3RlZEJ1bmRsZVRlc3QoIldlYldvcmtlclRlc3QiKSk7CisKKyAgICBXS0NvbnRleHRJbmpl
Y3RlZEJ1bmRsZUNsaWVudCBpbmplY3RlZEJ1bmRsZUNsaWVudDsKKyAgICBtZW1zZXQoJmluamVj
dGVkQnVuZGxlQ2xpZW50LCAwLCBzaXplb2YoaW5qZWN0ZWRCdW5kbGVDbGllbnQpKTsKKyAgICBp
bmplY3RlZEJ1bmRsZUNsaWVudC5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSA9
IGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOworICAgIFdLQ29udGV4dFNldElu
amVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCksICZpbmplY3RlZEJ1bmRsZUNsaWVudCk7
CisKKyAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKKworICAgIFdL
UGFnZUxvYWRlckNsaWVudCBwYWdlTG9hZGVyQ2xpZW50OworICAgIG1lbXNldCgmcGFnZUxvYWRl
ckNsaWVudCwgMCwgc2l6ZW9mKFdLUGFnZUxvYWRlckNsaWVudCkpOworICAgIHBhZ2VMb2FkZXJD
bGllbnQudmVyc2lvbiA9IGtXS1BhZ2VMb2FkZXJDbGllbnRDdXJyZW50VmVyc2lvbjsKKyAgICBw
YWdlTG9hZGVyQ2xpZW50LmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lID0gZGlkUmVjZWl2ZVRpdGxl
Rm9yRnJhbWU7CisgICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSwg
JnBhZ2VMb2FkZXJDbGllbnQpOworCisgICAgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwID0gV0tQ
YWdlR2V0UGFnZUdyb3VwKHdlYlZpZXcucGFnZSgpKTsKKyAgICBXS1ByZWZlcmVuY2VzUmVmIHBy
ZWZlcmVuY2VzID0gV0tQYWdlR3JvdXBHZXRQcmVmZXJlbmNlcyhwYWdlR3JvdXApOworICAgIFdL
UHJlZmVyZW5jZXNTZXRGaWxlQWNjZXNzRnJvbUZpbGVVUkxzQWxsb3dlZChwcmVmZXJlbmNlcywg
dHJ1ZSk7CisKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsID0gYWRvcHRXSyhVdGlsOjpj
cmVhdGVVUkxGb3JSZXNvdXJjZSgid2ViV29ya2VyVGVzdCIsICJodG1sIikpOworICAgIFdLUGFn
ZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIHVybC5nZXQoKSk7CisKKyAgICBVdGlsOjpydW4oJmlu
aXRpYWxpemVkKTsKKyAgICBVdGlsOjpydW4oJnRlcm1pbmF0ZWQpOworICAgIFV0aWw6OnJ1bigm
Y2hhbmdlZFRpdGxlKTsKKworICAgIHVybCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVz
b3VyY2UoIndlYldvcmtlclNoYXJlZFRlc3QiLCAiaHRtbCIpKTsKKyAgICBXS1BhZ2VMb2FkVVJM
KHdlYlZpZXcucGFnZSgpLCB1cmwuZ2V0KCkpOworICAgIFV0aWw6OnJ1bigmaW5pdGlhbGl6ZWRT
aGFyZWQpOworICAgIFV0aWw6OnJ1bigmdGVybWluYXRlZFNoYXJlZCk7CisgICAgVXRpbDo6cnVu
KCZjaGFuZ2VkVGl0bGVTaGFyZWQpOworfQorCit9IC8vIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJfQnVuZGxlLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJfQnVuZGxlLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kOTlhNTNjNDJjODE0NjliZjczN2E3OTE5MWNlNDNjM2Q5YzcyMjNhCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldv
cmtlcl9CdW5kbGUuY3BwCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgSU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVU
ZXN0LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUZyYW1lLmg+CisjaW5jbHVkZSA8Y3N0
ZGlvPgordXNpbmcgbmFtZXNwYWNlIHN0ZDsKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwor
SlNWYWx1ZVJlZiBmb28oSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVm
LCBzaXplX3QsIGNvbnN0IEpTVmFsdWVSZWZbXSwgSlNWYWx1ZVJlZiopCit7CisgICAgV0tCdW5k
bGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OnNoYXJlZCgpLmJ1bmRsZSgp
LCBVdGlsOjp0b1dLKCJXZWJXb3JrZXJJbml0TWVzc2FnZSIpLmdldCgpLCAwKTsKKyAgICByZXR1
cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY3R4LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
V2ViV29ya2VyVGl0bGUiKSk7Cit9CisKK0pTVmFsdWVSZWYgYmFyKEpTQ29udGV4dFJlZiBjdHgs
IEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiwgc2l6ZV90LCBjb25zdCBKU1ZhbHVlUmVmW10sIEpT
VmFsdWVSZWYqKQoreworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGVDb250
cm9sbGVyOjpzaGFyZWQoKS5idW5kbGUoKSwgVXRpbDo6dG9XSygiV2ViV29ya2VyU2hhcmVkSW5p
dE1lc3NhZ2UiKS5nZXQoKSwgMCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGN0eCwg
SlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIldlYldvcmtlclNoYXJlZFRpdGxlIikpOwor
fQorCit2b2lkIHdlYldvcmtlckluaXRpYWxpemUoSlNDb250ZXh0UmVmIGNvbnRleHQsIGludCBp
c0RlZGljYXRlZCkKK3sKKyAgICBpZiAoaXNEZWRpY2F0ZWQpIHsKKyAgICAgICAgSlNTdHJpbmdS
ZWYgZnVuY05hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiZm9vIik7CisgICAg
ICAgIEpTT2JqZWN0UmVmIGpzRnVuYyA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNr
KGNvbnRleHQsIGZ1bmNOYW1lLCAmZm9vKTsKKyAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShj
b250ZXh0LCBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QoY29udGV4dCksIGZ1bmNOYW1lLCBqc0Z1
bmMsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUsIDApOworICAgICAgICBKU1N0cmluZ1JlbGVhc2UoZnVuY05hbWUpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIEpTU3RyaW5nUmVmIGZ1bmNOYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoImJhciIpOworICAgICAgICBKU09iamVjdFJlZiBqc0Z1bmMgPSBKU09iamVj
dE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhjb250ZXh0LCBmdW5jTmFtZSwgJmJhcik7CisgICAg
ICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY29udGV4dCwgSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0
KGNvbnRleHQpLCBmdW5jTmFtZSwganNGdW5jLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlLCAwKTsKKyAgICAgICAgSlNTdHJpbmdS
ZWxlYXNlKGZ1bmNOYW1lKTsKKyAgICB9Cit9CisKK3ZvaWQgd2ViV29ya2VyVGVybWluYXRlKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBpbnQgaXNEZWRpY2F0ZWQpCit7CisgICAgaWYgKGlzRGVkaWNh
dGVkKQorICAgICAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlQ29udHJvbGxl
cjo6c2hhcmVkKCkuYnVuZGxlKCksIFV0aWw6OnRvV0soIldlYldvcmtlclRlcm1pbmF0ZU1lc3Nh
Z2UiKS5nZXQoKSwgMCk7CisgICAgZWxzZQorICAgICAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKElu
amVjdGVkQnVuZGxlQ29udHJvbGxlcjo6c2hhcmVkKCkuYnVuZGxlKCksIFV0aWw6OnRvV0soIldl
YldvcmtlclNoYXJlZFRlcm1pbmF0ZU1lc3NhZ2UiKS5nZXQoKSwgMCk7Cit9CisKK2NsYXNzIFdl
YldvcmtlclRlc3QgOiBwdWJsaWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsKK3B1YmxpYzoKKyAgICBX
ZWJXb3JrZXJUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKQorICAgICAgICA6IElu
amVjdGVkQnVuZGxlVGVzdChpZGVudGlmaWVyKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgaW5pdGlhbGl6ZShXS0J1bmRsZVJlZiwgV0tUeXBlUmVmKQorICAgIHsKKyAgICAgICAg
V0tCdW5kbGVGcmFtZVNldFdvcmtlckluaXRpYWxpemVDYWxsYmFjayh3ZWJXb3JrZXJJbml0aWFs
aXplKTsKKyAgICAgICAgV0tCdW5kbGVGcmFtZVNldFdvcmtlclRlcm1pbmF0ZUNhbGxiYWNrKHdl
YldvcmtlclRlcm1pbmF0ZSk7CisgICAgfQorfTsKKworc3RhdGljIEluamVjdGVkQnVuZGxlVGVz
dDo6UmVnaXN0ZXI8V2ViV29ya2VyVGVzdD4gcmVnaXN0cmFyKCJXZWJXb3JrZXJUZXN0Iik7CisK
K30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi93ZWJXb3JrZXJTaGFyZWRUZXN0Lmh0bWwgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvd2ViV29ya2VyU2hhcmVkVGVzdC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjlhYTY5NjJlN2VlNjAxOGQ3Y2VhMzkxYjRlOTQxMzE0OGU5ZGU1MGEKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvd2ViV29ya2VyU2hhcmVk
VGVzdC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzxodG1sPgorICAgIDxib2R5PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICAgICAgdmFyIHdvcmtlciA9IG5ldyBTaGFyZWRXb3JrZXIoIndlYldv
cmtlclNoYXJlZFRlc3QuanMiKTsKKyAgICAgICAgICAgIHdvcmtlci5wb3J0LmFkZEV2ZW50TGlz
dGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LnRpdGxlID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgIH0sIGZhbHNlKTsKKyAgICAgICAg
ICAgIHdvcmtlci5wb3J0LnN0YXJ0KCk7CisgICAgICAgICAgICB3b3JrZXIucG9ydC5wb3N0TWVz
c2FnZSgiV2ViV29ya2VyU2hhcmVkTWVzc2FnZSIpOworICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvd2ViV29ya2VyU2hhcmVkVGVzdC5qcyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi93ZWJXb3JrZXJTaGFyZWRUZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4NGJhZjY3NzNiNmE0
ZmU4ZGJkYmM3OGRlZDFhOGU3ZGMxYmVlYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvd2ViV29ya2VyU2hhcmVkVGVzdC5qcwpAQCAtMCwwICsx
LDEzIEBACit2YXIgcG9ydHMgPSBbXTsKKworb25jb25uZWN0ID0gZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICB2YXIgcG9ydCA9IGV2ZW50LnBvcnRzWzBdOworICAgIHBvcnRzLnB1c2gocG9ydCk7Cisg
ICAgcG9ydC5zdGFydCgpOworICAgIHBvcnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1
bmN0aW9uKGV2ZW50KSB7IGxpc3RlbkZvck1lc3NhZ2UoZXZlbnQsIHBvcnQpOyB9ICk7Cit9CisK
K2xpc3RlbkZvck1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQsIHBvcnQpIHsKKyAgICBwb3J0LnBv
c3RNZXNzYWdlKHNlbGYuYmFyKCkpOworICAgIHNlbGYuY2xvc2UoKTsKK30KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi93ZWJXb3JrZXJUZXN0Lmh0bWwgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvd2ViV29ya2VyVGVzdC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmIyYTdiODJiZDEzY2IxMGEyNjA2NzQ2MzM5M2MyNTRmNWRmMGY0OGYKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvd2ViV29ya2VyVGVz
dC5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzxodG1sPgorICAgIDxib2R5PgorICAgICAgICA8c2Ny
aXB0PgorICAgICAgICAgICAgdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoIndlYldvcmtlclRlc3Qu
anMiKTsKKyAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSgiV2ViV29ya2VyTWVzc2FnZSIp
OworICAgICAgICAgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgICAgICAgICAgZG9jdW1lbnQudGl0bGUgPSBldmVudC5kYXRhOworICAgICAgICAgICAgfTsK
KyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3dlYldvcmtlclRlc3QuanMgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvd2ViV29ya2VyVGVzdC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
Njg1YmI1NWMyMjE1NGUxMDdmMzRiNTI1MjU4NTE3MjQwNDkxMzI4Ci0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3dlYldvcmtlclRlc3QuanMKQEAg
LTAsMCArMSw1IEBACitzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgc2Vs
Zi5wb3N0TWVzc2FnZShzZWxmLmZvbygpKTsKKyAgICBzZWxmLmNsb3NlKCk7CisgICAgcmV0dXJu
OworfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218029</attachid>
            <date>2013-11-28 18:05:28 -0800</date>
            <delta_ts>2013-11-29 10:58:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117523-20131128230531.patch</filename>
            <type>text/plain</type>
            <size>33962</size>
            <attacher name="Tullio Lucena">tullio.lucena</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDAzMzQyMjZkYTg0NDM0
MTE4YTMyNjcwNDVlOGViZGU3YzdkZDc5ZC4uZjVjOGFjY2FjY2VlOGQ4ZjJkYzI4ZDc5ZDE4YmFk
M2Y1MGQ5OGFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTExLTI4ICBUdWxs
aW8gTHVjZW5hICA8dHVsbGlvLmx1Y2VuYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtXSzJd
IFByb29mIG9mIGNvbmNlcHQgdG8gaW5qZWN0IGN1c3RvbSBKYXZhU2NyaXB0IG9iamVjdHMgb24g
V2ViV29ya2VyIGNvbnRleHQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTc1MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDYWxsYmFja3Mgd2VyZSBhZGRlZCBmb3IgaW5pdGlhbGl6ZSBhbmQgdGVybWlu
YXRlIFdlYldvcmtlcnMgdXNpbmcgV0syIEFQSS4KKyAgICAgICAgVGhlc2UgY2FsbGJhY2tzIGhh
bmRsZSBiaW5kaW5ncyBiZXR3ZWVuIGZ1bmN0aW9ucyBvZiBKYXZhU2NyaXB0IFdvcmtlcnMgYW5k
IGZ1bmN0aW9ucyBkZWZpbmVkIGF0IGEgcHJldmlvdXNseSBsb2FkZWQgYnVuZGxlLgorICAgICAg
ICBBbiBBUEkgdGVzdCB3YXMgYWRkZWQgdG8gY2hlY2sgdGhlIHRoZXNlIGNhbGxiYWNrcy4gSXQg
dmVyaWZpZXMgdGhlIHR3byB0eXBlcyBvZiB3b3JrZXJzLCBkZWRpY2F0ZWQgYW5kIHNoYXJlZC4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6fldvcmtlclNjcmlwdENvbnRy
b2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNj
cmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRJbml0
U2NyaXB0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxl
cjo6aW5pdFNjcmlwdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENv
bnRyb2xsZXI6OnNldFRlcm1pbmF0ZVNjcmlwdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OnRlcm1pbmF0ZVNjcmlwdENhbGxiYWNrKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmg6CisKIDIwMTMtMTEtMjgg
IEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZW5h
bWUgSW5saW5lSXRlcmF0b3I6Om1fb2JqIGFuZCBtYWtlIGl0IHByaXZhdGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCAxNGE1Y2YwNTY3NTk4ZDE2NTJkZGM2N2JmMjNmMGRhY2M1ZWY0YjcyLi5iODRhMjMxMzIyZDE4
NzI0N2Y2ODMxZmM5MzA5ZWQxNThmMDU2ODU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTMtMTEtMjggIFR1bGxpbyBMdWNlbmEgIDx0dWxsaW8ubHVjZW5hQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgW1dLMl0gUHJvb2Ygb2YgY29uY2VwdCB0byBpbmplY3QgY3VzdG9tIEphdmFT
Y3JpcHQgb2JqZWN0cyBvbiBXZWJXb3JrZXIgY29udGV4dC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzUyMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENhbGxiYWNrcyB3ZXJlIGFkZGVkIGZvciBpbml0
aWFsaXplIGFuZCB0ZXJtaW5hdGUgV2ViV29ya2VycyB1c2luZyBXSzIgQVBJLgorICAgICAgICBU
aGVzZSBjYWxsYmFja3MgaGFuZGxlIGJpbmRpbmdzIGJldHdlZW4gZnVuY3Rpb25zIG9mIEphdmFT
Y3JpcHQgV29ya2VycyBhbmQgZnVuY3Rpb25zIGRlZmluZWQgYXQgYSBwcmV2aW91c2x5IGxvYWRl
ZCBidW5kbGUuCisgICAgICAgIEFuIEFQSSB0ZXN0IHdhcyBhZGRlZCB0byBjaGVjayB0aGUgdGhl
c2UgY2FsbGJhY2tzLiBJdCB2ZXJpZmllcyB0aGUgdHdvIHR5cGVzIG9mIHdvcmtlcnMsIGRlZGlj
YXRlZCBhbmQgc2hhcmVkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZUZyYW1lLmNwcDoKKyAgICAgICAgKGxvY2FsV29ya2VyU2NyaXB0SW5pdENh
bGxiYWNrKToKKyAgICAgICAgKFdLQnVuZGxlRnJhbWVTZXRXb3JrZXJJbml0aWFsaXplQ2FsbGJh
Y2spOgorICAgICAgICAobG9jYWxXb3JrZXJTY3JpcHRUZXJtaW5hdGVDYWxsYmFjayk6CisgICAg
ICAgIChXS0J1bmRsZUZyYW1lU2V0V29ya2VyVGVybWluYXRlQ2FsbGJhY2spOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5oOgorCiAyMDEz
LTExLTI4ICBOaWNrIERpZWdvIFlhbWFuZSAgPG5pY2sueWFtYW5lQG9wZW5ib3NzYS5vcmc+CiAK
ICAgICAgICAgW0dUS10gQnVpbGQgZml4IGFmdGVyIHIxNTk4NTkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMjkw
YjFmMTE0NDRhNmE0Y2IyM2U5NzdkMWRhOGI3OTQ1YjBiNDM5OC4uNTgxZDdkY2JmMDM5NDQ5NTUx
NzAxYmQxZjUyNmY3NTkwN2QwYjhlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTYzLDYgKzYzLDkgQEAgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6V29ya2VyU2NyaXB0Q29udHJvbGxlcihXb3JrZXJHbG9iYWxT
Y29wZSogd29ya2VyR2xvYmFsU2MKIAogV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6fldvcmtlclNj
cmlwdENvbnRyb2xsZXIoKQogeworICAgIGlmICh0ZXJtaW5hdGVTY3JpcHRDYWxsYmFjaygpKQor
ICAgICAgICB0ZXJtaW5hdGVTY3JpcHRDYWxsYmFjaygpKG1fd29ya2VyR2xvYmFsU2NvcGVXcmFw
cGVyLT5nbG9iYWxFeGVjKCksIG1fd29ya2VyR2xvYmFsU2NvcGUtPmlzRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUoKSk7CisKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKICAgICBtX3dv
cmtlckdsb2JhbFNjb3BlV3JhcHBlci5jbGVhcigpOwogICAgIG1fdm0uY2xlYXIoKTsKQEAgLTEw
Niw2ICsxMDksOSBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoKQog
ICAgIH0KICAgICBBU1NFUlQobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbE9iamVj
dCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKICAgICBBU1NFUlQoYXNPYmplY3Qo
bV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPnByb3RvdHlwZSgpKS0+Z2xvYmFsT2JqZWN0KCkg
PT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOworCisgICAgaWYgKGluaXRTY3JpcHRDYWxs
YmFjaygpKQorICAgICAgICBpbml0U2NyaXB0Q2FsbGJhY2soKShtX3dvcmtlckdsb2JhbFNjb3Bl
V3JhcHBlci0+Z2xvYmFsRXhlYygpLCBtX3dvcmtlckdsb2JhbFNjb3BlLT5pc0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlKCkpOwogfQogCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2
YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCkBAIC0yMDMsNCArMjA5
LDI3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZGV0YWNoRGVidWdnZXIoSlNDOjpE
ZWJ1Z2dlciogZGVidWdnZXIpCiAgICAgZGVidWdnZXItPmRldGFjaChtX3dvcmtlckdsb2JhbFNj
b3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkpOwogfQogCitXb3JrZXJTY3JpcHRDYWxsYmFjayBX
b3JrZXJTY3JpcHRDb250cm9sbGVyOjptX2luaXRTY3JpcHRDYWxsYmFjayA9IDA7CitXb3JrZXJT
Y3JpcHRDYWxsYmFjayBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjptX3Rlcm1pbmF0ZVNjcmlwdENh
bGxiYWNrID0gMDsKKwordm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRJbml0U2NyaXB0
Q2FsbGJhY2soV29ya2VyU2NyaXB0Q2FsbGJhY2sgY2FsbGJhY2spCit7CisgICAgbV9pbml0U2Ny
aXB0Q2FsbGJhY2sgPSBjYWxsYmFjazsKK30KKworV29ya2VyU2NyaXB0Q2FsbGJhY2sgV29ya2Vy
U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdENhbGxiYWNrKCkKK3sKKyAgICByZXR1cm4gbV9p
bml0U2NyaXB0Q2FsbGJhY2s7Cit9CisKK3ZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0
VGVybWluYXRlU2NyaXB0Q2FsbGJhY2soV29ya2VyU2NyaXB0Q2FsbGJhY2sgY2FsbGJhY2spCit7
CisgICAgbV90ZXJtaW5hdGVTY3JpcHRDYWxsYmFjayA9IGNhbGxiYWNrOworfQorCitXb3JrZXJT
Y3JpcHRDYWxsYmFjayBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjp0ZXJtaW5hdGVTY3JpcHRDYWxs
YmFjaygpCit7CisgICAgcmV0dXJuIG1fdGVybWluYXRlU2NyaXB0Q2FsbGJhY2s7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAppbmRleCA4YmI3ZjQ5YjA4NWZjNWNkZDg3MjI3NzE5
ZTMzMTVmMWEyNmI4Zjg1Li45MWNmNzZjOGE3Y2UzNjY0YzllYTRjYTJkNTJlZjUzMDgzMzgxNmYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29u
dHJvbGxlci5oCkBAIC0zOSw2ICszOSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKKyAgICB0eXBlZGVmIHZvaWQgKCpXb3JrZXJTY3JpcHRDYWxsYmFjaykoSlND
OjpFeGVjU3RhdGUqLCBib29sKTsKKwogICAgIGNsYXNzIEpTV29ya2VyR2xvYmFsU2NvcGU7CiAg
ICAgY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKICAgICBjbGFzcyBTY3JpcHRWYWx1ZTsKQEAgLTgx
LDYgKzgzLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhdHRhY2hEZWJ1
Z2dlcihKU0M6OkRlYnVnZ2VyKik7CiAgICAgICAgIHZvaWQgZGV0YWNoRGVidWdnZXIoSlNDOjpE
ZWJ1Z2dlciopOwogCisgICAgICAgIHN0YXRpYyB2b2lkIHNldEluaXRTY3JpcHRDYWxsYmFjayhX
b3JrZXJTY3JpcHRDYWxsYmFjayk7CisgICAgICAgIHN0YXRpYyBXb3JrZXJTY3JpcHRDYWxsYmFj
ayBpbml0U2NyaXB0Q2FsbGJhY2soKTsKKyAgICAgICAgc3RhdGljIHZvaWQgc2V0VGVybWluYXRl
U2NyaXB0Q2FsbGJhY2soV29ya2VyU2NyaXB0Q2FsbGJhY2spOworICAgICAgICBzdGF0aWMgV29y
a2VyU2NyaXB0Q2FsbGJhY2sgdGVybWluYXRlU2NyaXB0Q2FsbGJhY2soKTsKICAgICBwcml2YXRl
OgogICAgICAgICB2b2lkIGluaXRTY3JpcHRJZk5lZWRlZCgpCiAgICAgICAgIHsKQEAgLTk0LDYg
KzEwMCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSlNDOjpTdHJvbmc8SlNXb3Jr
ZXJHbG9iYWxTY29wZT4gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXI7CiAgICAgICAgIGJvb2wg
bV9leGVjdXRpb25Gb3JiaWRkZW47CiAgICAgICAgIG11dGFibGUgTXV0ZXggbV9zY2hlZHVsZWRU
ZXJtaW5hdGlvbk11dGV4OworCisgICAgICAgIHN0YXRpYyBXb3JrZXJTY3JpcHRDYWxsYmFjayBt
X2luaXRTY3JpcHRDYWxsYmFjazsKKyAgICAgICAgc3RhdGljIFdvcmtlclNjcmlwdENhbGxiYWNr
IG1fdGVybWluYXRlU2NyaXB0Q2FsbGJhY2s7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKaW5kZXggOTEyNzljYjc4NTgxNWZi
ZmE4MTg5MDY5YWU3ZmIyY2RiYjk1OTEzMi4uYThmY2MwYzdhMzVjODkxODcwYjQ4OGIwOGMyMDcw
MmNkZGY2MzA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxl
SGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaCIKICNp
bmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKICNpbmNs
dWRlICJXS0RhdGEuaCIKQEAgLTM4LDYgKzM5LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWVWaWV3Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmg+
CisKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpA
QCAtMTA2LDYgKzEwOSwzOCBAQCBKU0dsb2JhbENvbnRleHRSZWYgV0tCdW5kbGVGcmFtZUdldEph
dmFTY3JpcHRDb250ZXh0Rm9yV29ybGQoV0tCdW5kbGVGcmFtZVJlZiBmcgogICAgIHJldHVybiB0
b0ltcGwoZnJhbWVSZWYpLT5qc0NvbnRleHRGb3JXb3JsZCh0b0ltcGwod29ybGRSZWYpKTsKIH0K
IAorc3RhdGljIFdLQnVuZGxlRnJhbWVXb3JrZXJTY3JpcHRDYWxsYmFjayBzX2xvY2FsV29ya2Vy
U2NyaXB0SW5pdENhbGxiYWNrOworCitzdGF0aWMgdm9pZCBsb2NhbFdvcmtlclNjcmlwdEluaXRD
YWxsYmFjayhKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlLCBib29sIGlzRGVkaWNhdGVkKQorewor
ICAgIHNfbG9jYWxXb3JrZXJTY3JpcHRJbml0Q2FsbGJhY2sodG9SZWYoZXhlY1N0YXRlKSwgaXNE
ZWRpY2F0ZWQpOworfQorCit2b2lkIFdLQnVuZGxlRnJhbWVTZXRXb3JrZXJJbml0aWFsaXplQ2Fs
bGJhY2soV0tCdW5kbGVGcmFtZVdvcmtlclNjcmlwdENhbGxiYWNrIGNhbGxiYWNrKQoreworICAg
IGlmIChjYWxsYmFjaykgeworICAgICAgICBzX2xvY2FsV29ya2VyU2NyaXB0SW5pdENhbGxiYWNr
ID0gY2FsbGJhY2s7CisgICAgICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldEluaXRTY3Jp
cHRDYWxsYmFjayhsb2NhbFdvcmtlclNjcmlwdEluaXRDYWxsYmFjayk7CisgICAgfSBlbHNlCisg
ICAgICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldEluaXRTY3JpcHRDYWxsYmFjaygwKTsK
K30KKworc3RhdGljIFdLQnVuZGxlRnJhbWVXb3JrZXJTY3JpcHRDYWxsYmFjayBzX2xvY2FsV29y
a2VyU2NyaXB0VGVybWluYXRlQ2FsbGJhY2s7CisKK3N0YXRpYyB2b2lkIGxvY2FsV29ya2VyU2Ny
aXB0VGVybWluYXRlQ2FsbGJhY2soSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZSwgYm9vbCBpc0Rl
ZGljYXRlZCkKK3sKKyAgICBzX2xvY2FsV29ya2VyU2NyaXB0VGVybWluYXRlQ2FsbGJhY2sodG9S
ZWYoZXhlY1N0YXRlKSwgaXNEZWRpY2F0ZWQpOworfQorCit2b2lkIFdLQnVuZGxlRnJhbWVTZXRX
b3JrZXJUZXJtaW5hdGVDYWxsYmFjayhXS0J1bmRsZUZyYW1lV29ya2VyU2NyaXB0Q2FsbGJhY2sg
Y2FsbGJhY2spCit7CisgICAgaWYgKGNhbGxiYWNrKSB7CisgICAgICAgIHNfbG9jYWxXb3JrZXJT
Y3JpcHRUZXJtaW5hdGVDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBXb3JrZXJTY3JpcHRD
b250cm9sbGVyOjpzZXRUZXJtaW5hdGVTY3JpcHRDYWxsYmFjayhsb2NhbFdvcmtlclNjcmlwdFRl
cm1pbmF0ZUNhbGxiYWNrKTsKKyAgICB9IGVsc2UKKyAgICAgICAgV29ya2VyU2NyaXB0Q29udHJv
bGxlcjo6c2V0VGVybWluYXRlU2NyaXB0Q2FsbGJhY2soMCk7Cit9CisKIEpTVmFsdWVSZWYgV0tC
dW5kbGVGcmFtZUdldEphdmFTY3JpcHRXcmFwcGVyRm9yTm9kZUZvcldvcmxkKFdLQnVuZGxlRnJh
bWVSZWYgZnJhbWVSZWYsIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBub2RlSGFuZGxlUmVmLCBXS0J1
bmRsZVNjcmlwdFdvcmxkUmVmIHdvcmxkUmVmKQogewogICAgIHJldHVybiB0b0ltcGwoZnJhbWVS
ZWYpLT5qc1dyYXBwZXJGb3JXb3JsZCh0b0ltcGwobm9kZUhhbmRsZVJlZiksIHRvSW1wbCh3b3Js
ZFJlZikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuaAppbmRleCA4YzJiODc1ZjUwZjQwZmMz
YWIzMWIyOWFiZTJhYmJlYTQwOGY1NDRmLi41Mzk3MThkMDU3ZDdkYzZmNWI3NDM0M2Q5Y2UyNTU2
Mzc2MmJlZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuaApAQCAtNTEsNiArNTEsMTAg
QEAgV0tfRVhQT1JUIFdLRnJhbWVMb2FkU3RhdGUgV0tCdW5kbGVGcmFtZUdldEZyYW1lTG9hZFN0
YXRlKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUKIFdLX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYg
V0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUp
OwogV0tfRVhQT1JUIEpTR2xvYmFsQ29udGV4dFJlZiBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlw
dENvbnRleHRGb3JXb3JsZChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0J1bmRsZVNjcmlwdFdv
cmxkUmVmIHdvcmxkKTsKIAordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVGcmFtZVdvcmtlclNjcmlw
dENhbGxiYWNrKShKU0NvbnRleHRSZWYgY29udGV4dCwgaW50IGlzRGVkaWNhdGVkKTsKK1dLX0VY
UE9SVCB2b2lkIFdLQnVuZGxlRnJhbWVTZXRXb3JrZXJJbml0aWFsaXplQ2FsbGJhY2soV0tCdW5k
bGVGcmFtZVdvcmtlclNjcmlwdENhbGxiYWNrIGNhbGxiYWNrKTsKK1dLX0VYUE9SVCB2b2lkIFdL
QnVuZGxlRnJhbWVTZXRXb3JrZXJUZXJtaW5hdGVDYWxsYmFjayhXS0J1bmRsZUZyYW1lV29ya2Vy
U2NyaXB0Q2FsbGJhY2sgY2FsbGJhY2spOworCiBXS19FWFBPUlQgV0tCdW5kbGVGcmFtZVJlZiBX
S0J1bmRsZUZyYW1lRm9ySmF2YVNjcmlwdENvbnRleHQoSlNDb250ZXh0UmVmIGNvbnRleHQpOwog
CiBXS19FWFBPUlQgSlNWYWx1ZVJlZiBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdFdyYXBwZXJG
b3JOb2RlRm9yV29ybGQoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVOb2RlSGFuZGxl
UmVmIG5vZGVIYW5kbGUsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgd29ybGQpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGNlZjAwMzIyMWJkZWZh
MzVjMjNmNzE5ZTVhOWU2NThjZjAzY2RhYzkuLjc4Y2Q5MDU2ZjEwZWM1NTQ2ZWZjNjFlNThkMTQ5
ZmQ0YTgwNGFiMjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMy0xMS0yOCAgVHVsbGlvIEx1Y2VuYSAgPHR1bGxp
by5sdWNlbmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbV0syXSBQcm9vZiBvZiBjb25jZXB0
IHRvIGluamVjdCBjdXN0b20gSmF2YVNjcmlwdCBvYmplY3RzIG9uIFdlYldvcmtlciBjb250ZXh0
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3NTIz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FsbGJh
Y2tzIHdlcmUgYWRkZWQgZm9yIGluaXRpYWxpemUgYW5kIHRlcm1pbmF0ZSBXZWJXb3JrZXJzIHVz
aW5nIFdLMiBBUEkuCisgICAgICAgIFRoZXNlIGNhbGxiYWNrcyBoYW5kbGUgYmluZGluZ3MgYmV0
d2VlbiBmdW5jdGlvbnMgb2YgSmF2YVNjcmlwdCBXb3JrZXJzIGFuZCBmdW5jdGlvbnMgZGVmaW5l
ZCBhdCBhIHByZXZpb3VzbHkgbG9hZGVkIGJ1bmRsZS4KKyAgICAgICAgQW4gQVBJIHRlc3Qgd2Fz
IGFkZGVkIHRvIGNoZWNrIHRoZSB0aGVzZSBjYWxsYmFja3MuIEl0IHZlcmlmaWVzIHRoZSB0d28g
dHlwZXMgb2Ygd29ya2VycywgZGVkaWNhdGVkIGFuZCBzaGFyZWQuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVmbC5jbWFrZToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyLmNw
cDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRSZWNlaXZlVGl0bGVG
b3JGcmFtZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyX0J1bmRsZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6Zm9vKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmJhcik6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp3ZWJXb3JrZXJJbml0aWFsaXplKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OndlYldvcmtlclRlcm1pbmF0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpXZWJXb3JrZXJUZXN0OjpXZWJXb3JrZXJUZXN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OldlYldvcmtlclRlc3Q6OmluaXRpYWxpemUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi93ZWJXb3JrZXJTaGFyZWRUZXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi93ZWJXb3JrZXJTaGFyZWRUZXN0LmpzOiBBZGRl
ZC4KKyAgICAgICAgKG9uY29ubmVjdCk6CisgICAgICAgIChsaXN0ZW5Gb3JNZXNzYWdlKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvd2ViV29ya2VyVGVzdC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvd2ViV29ya2VyVGVz
dC5qczogQWRkZWQuCisgICAgICAgIChzZWxmLm9ubWVzc2FnZSk6CisKIDIwMTMtMTEtMjggIENv
bW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIxNTk4MzkuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRl
eCAyNTc4NTE4ZTNmYzFhZDc4OGVmODg5NzBhOGU3YWU2M2MxZTc1NWE0Li44NzNkNWRjN2IyY2Nm
MTc0Y2U3ZTU4Mzg3ZDE1YTFhOTYxNmQ0ZDExIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50
eHQKQEAgLTEwLDYgKzEwLDcgQEAgaW5jbHVkZV9kaXJlY3Rvcmllcygke0NNQUtFX0JJTkFSWV9E
SVJ9CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0FQSQogICAgICR7SkFWQVNDUklQVENPUkVf
RElSfS9Gb3J3YXJkaW5nSGVhZGVycwogICAgICR7VEhJUkRQQVJUWV9ESVJ9L2d0ZXN0L2luY2x1
ZGUKKyAgICAke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9qcwogICAgICR7V0VCQ09SRV9ESVJ9L2Vk
aXRpbmcKICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybQogICAgICR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2dyYXBoaWNzCkBAIC03Niw2ICs3Nyw3IEBAIGFkZF9saWJyYXJ5KFRlc3RXZWJLaXRB
UElJbmplY3RlZEJ1bmRsZSBTSEFSRUQKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9X
ZWJLaXQyL1Nob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtX0J1bmRsZS5jcHAKICAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJLaXQyL1VzZXJNZXNzYWdlX0J1bmRsZS5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJLaXQyL1dLQ29ubmVjdGlvbl9CdW5kbGUu
Y3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJfQnVu
ZGxlLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYktpdDIvV2lsbExvYWRf
QnVuZGxlLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYktpdDIvV2lsbFNl
bmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwCiApCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbQpp
bmRleCAwMzQyOGFhNzIyNTkyMTkxNjUxNDBjNGVhNTk5YWUyMmMyNzYxOGQ4Li4zZjRjZWEyNzNk
MjZkNzIxZDc1ZTE1MGRjOWM1ZTk5MjAyNWZkNmI2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZp
bGUuYW0KQEAgLTI5Myw2ICsyOTMsNyBAQCBQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1Rlc3RXZWJL
aXQyX1NPVVJDRVMgPSBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1NwYWNl
YmFyU2Nyb2xsaW5nLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1Rl
cm1pbmF0ZVR3aWNlLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1Vz
ZXJNZXNzYWdlLmNwcCBcCisJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYldv
cmtlci5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XaWxsTG9hZC5j
cHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XaWxsU2VuZFN1Ym1pdEV2
ZW50LmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dLQ29ubmVjdGlv
bi5jcHAgXApAQCAtMzM0LDYgKzMzNSw3IEBAIExpYnJhcmllc19saWJUZXN0V2ViS2l0QVBJSW5q
ZWN0ZWRCdW5kbGVfbGFfU09VUkNFUyA9IFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3BwIFwKIAlU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlz
dEl0ZW1fQnVuZGxlLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1Vz
ZXJNZXNzYWdlX0J1bmRsZS5jcHAgXAorCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9XZWJXb3JrZXJfQnVuZGxlLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL1dpbGxMb2FkX0J1bmRsZS5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9XaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9XS0Nvbm5lY3Rpb25fQnVuZGxlLmNwcCBcCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA3ZmZjNmNmOTAwNjdmMjExZDAzOWM0ZDhjZGM0MjE0
NDk4OWRhM2RhLi4wMmVjNmNiZjNmMmQ3ZmYxYTYzNTdhYzk1NWVhMDU2Yzg2ZjllZGVjIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTU0LDYgKzU0LDcgQEAgc2V0KHRl
c3Rfd2ViY29yZV9CSU5BUklFUwogCiAjIEluIGhlcmUgd2UgbGlzdCB0aGUgYnVuZGxlcyB0aGF0
IGFyZSB1c2VkIGJ5IG91ciBzcGVjaWZpYyBXSzIgQVBJIFRlc3RzCiBsaXN0KEFQUEVORCBidW5k
bGVfaGFybmVzc19TT1VSQ0VTCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViS2l0
Mi9XZWJXb3JrZXJfQnVuZGxlLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dl
YktpdDIvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXdJc0FjdGl2ZVNldElzQWN0aXZlX0J1bmRs
ZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJLaXQyL2VmbC9XS1ZpZXdD
bGllbnRXZWJQcm9jZXNzQ2FsbGJhY2tzX0J1bmRsZS5jcHAKICkKQEAgLTEwMSw2ICsxMDIsNyBA
QCBzZXQodGVzdF93ZWJraXQyX2FwaV9CSU5BUklFUwogICAgIFdLU3RyaW5nCiAgICAgV0tTdHJp
bmdKU1N0cmluZwogICAgIFdLVVJMCisgICAgV2ViV29ya2VyCiAgICAgV2lsbExvYWQKICAgICBX
aWxsU2VuZFN1Ym1pdEV2ZW50CiAgICAgQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXdJc0FjdGl2
ZVNldElzQWN0aXZlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ5MzZiMWM4YTRlMmYzZjRl
YmFlYmNmNzY2NjY1YjQ2NmYzZTgxODUuLjgzZTk3YmE4ZTY1Mjc2YjM1MTI4YjUzYWFhMDljZDFj
YzI5YzQ2N2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02Niw2ICs2NiwxMiBAQAogCQkz
MzNCOUNFMjEyNzdGMjMxMDBGRUZDRTMgLyogUHJldmVudEVtcHR5VXNlckFnZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzM0I5Q0UxMTI3N0Yy
MzEwMEZFRkNFMyAvKiBQcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3BwICovOyB9OwogCQkzM0JFNUFG
NTEzN0I1QTZDMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFzaC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0JFNUFGNDEzN0I1QTZDMDA3MDU4
MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFzaC5jcHAgKi87IH07CiAJCTMzQkU1QUY5MTM3QjVBQUUw
MDcwNTgxMyAvKiBNb3VzZU1vdmVBZnRlckNyYXNoX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0JFNUFGODEzN0I1QUFFMDA3MDU4MTMg
LyogTW91c2VNb3ZlQWZ0ZXJDcmFzaF9CdW5kbGUuY3BwICovOyB9OworCQkzM0JFNUFGQTEzN0I1
QTIxMDA3MDU4MTMgLyogV2ViV29ya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMzQkU1QUZBMTM3QjVBMjMwMDcwNTgxMyAvKiBXZWJXb3JrZXIu
Y3BwICovOyB9OworCQkzM0JFNUFGQjEzN0I1QTIyMDA3MDU4MTMgLyogV2ViV29ya2VyX0J1bmRs
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0JF
NUFGQjEzN0I1QTI0MDA3MDU4MTMgLyogV2ViV29ya2VyX0J1bmRsZS5jcHAgKi87IH07CisJCTMz
QkU0QkUxMzdCNTRCMjUwMDYxNDcxMyAvKiB3ZWJXb3JrZXJTaGFyZWRUZXN0Lmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNCRTRCRUMx
MzdCNTEyNzAwNjE0NzEzIC8qIHdlYldvcmtlclNoYXJlZFRlc3QuaHRtbCAqLzsgfTsKKwkJMzNC
RTRCRTEzN0I1NEIyNjAwNjE0NzEzIC8qIHdlYldvcmtlclNoYXJlZFRlc3QuanMgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNCRTRCRUMxMzdC
NTEyODAwNjE0NzEzIC8qIHdlYldvcmtlclNoYXJlZFRlc3QuanMgKi87IH07CisJCTMzQkU0QkUx
MzdCNTRCMjkwMDYxNDcxMyAvKiB3ZWJXb3JrZXJUZXN0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNCRTRCRUMxMzdCNTEyQjAwNjE0
NzEzIC8qIHdlYldvcmtlclRlc3QuaHRtbCAqLzsgfTsKKwkJMzNCRTRCRTEzN0I1NEIyQTAwNjE0
NzEzIC8qIHdlYldvcmtlclRlc3QuanMgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzNCRTRCRUMxMzdCNTEyQzAwNjE0NzEzIC8qIHdlYldvcmtl
clRlc3QuanMgKi87IH07CiAJCTMzREM4OTExMTQxOTUzQTMwMDc0N0VGNyAvKiBMb2FkQ2FuY2Vs
ZWROb1NlcnZlclJlZGlyZWN0Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzNEQzg5MTAxNDE5NTNBMzAwNzQ3RUY3IC8qIExvYWRDYW5j
ZWxlZE5vU2VydmVyUmVkaXJlY3RDYWxsYmFjay5jcHAgKi87IH07CiAJCTMzREM4OTEyMTQxOTU1
RkUwMDc0N0VGNyAvKiBzaW1wbGUtaWZyYW1lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNEQzg5MEUxNDE5NTM5MzAwNzQ3RUY3IC8q
IHNpbXBsZS1pZnJhbWUuaHRtbCAqLzsgfTsKIAkJMzNEQzg5MTQxNDE5NTc5RjAwNzQ3RUY3IC8q
IExvYWRDYW5jZWxlZE5vU2VydmVyUmVkaXJlY3RDYWxsYmFja19CdW5kbGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNEQzg5MTMxNDE5NTc5RjAw
NzQ3RUY3IC8qIExvYWRDYW5jZWxlZE5vU2VydmVyUmVkaXJlY3RDYWxsYmFja19CdW5kbGUuY3Bw
ICovOyB9OwpAQCAtMzI0LDYgKzMzMCwxMCBAQAogCQkJCUMwMUEyM0YyMTI2NjE1NjcwMEM5RUQ1
NSAvKiBzcGFjZWJhci1zY3JvbGxpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlF
MTk0RTFCRDE3N0U1M0M3MDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3Bv
bnNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQzU0MEY3ODQxNTJFNUE5QTAwQTQw
QzhDIC8qIHZlcmJvc2VNYXJrdXAuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQkzM0JF
NEJFMTM3QjU0QjI1MDA2MTQ3MTMgLyogd2ViV29ya2VyU2hhcmVkVGVzdC5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAorCQkJCTMzQkU0QkUxMzdCNTRCMjYwMDYxNDcxMyAvKiB3ZWJXb3JrZXJT
aGFyZWRUZXN0LmpzIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTMzQkU0QkUxMzdCNTRCMjkw
MDYxNDcxMyAvKiB3ZWJXb3JrZXJUZXN0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJ
MzNCRTRCRTEzN0I1NEIyQTAwNjE0NzEzIC8qIHdlYldvcmtlclRlc3QuanMgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJQTVFMjAyNzUxNUIyMUY2RTAwQzEzRTE0IC8qIFdpbmRvd2xlc3NXZWJW
aWV3V2l0aE1lZGlhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJbmFtZSA9
ICJDb3B5IFJlc291cmNlcyI7CkBAIC0zOTIsNiArNDAyLDEyIEBACiAJCTMzM0I5Q0UxMTI3N0Yy
MzEwMEZFRkNFMyAvKiBQcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUHJldmVudEVtcHR5VXNlckFnZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzNCRTVBRjQxMzdCNUE2QzAwNzA1ODEzIC8qIE1vdXNlTW92
ZUFmdGVyQ3Jhc2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW91
c2VNb3ZlQWZ0ZXJDcmFzaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzQkU1
QUY4MTM3QjVBQUUwMDcwNTgxMyAvKiBNb3VzZU1vdmVBZnRlckNyYXNoX0J1bmRsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb3VzZU1vdmVBZnRlckNyYXNoX0J1
bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzQkU1QUZBMTM3QjVBMjMw
MDcwNTgxMyAvKiBXZWJXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViV29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzNCRTVB
RkIxMzdCNUEyNDAwNzA1ODEzIC8qIFdlYldvcmtlcl9CdW5kbGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViV29ya2VyX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTMzQkU0QkVDMTM3QjUxMjcwMDYxNDcxMyAvKiB3ZWJXb3JrZXJT
aGFyZWRUZXN0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViV29ya2VyU2hh
cmVkVGVzdC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzNCRTRCRUMxMzdC
NTEyODAwNjE0NzEzIC8qIHdlYldvcmtlclNoYXJlZFRlc3QuanMgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmphdmFzY3JpcHQ7IHBhdGggPSAid2ViV29ya2VyU2hhcmVkVGVzdC5qcyI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzQkU0QkVDMTM3QjUxMkIwMDYxNDcxMyAvKiB3ZWJXb3Jr
ZXJUZXN0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViV29ya2VyVGVzdC5o
dG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzNCRTRCRUMxMzdCNTEyQzAwNjE0
NzEzIC8qIHdlYldvcmtlclRlc3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7
IHBhdGggPSAid2ViV29ya2VyVGVzdC5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMzREM4OTBFMTQxOTUzOTMwMDc0N0VGNyAvKiBzaW1wbGUtaWZyYW1lLmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSAic2ltcGxlLWlmcmFtZS5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzNEQzg5MTAxNDE5NTNBMzAwNzQ3RUY3IC8qIExvYWRDYW5jZWxlZE5v
U2VydmVyUmVkaXJlY3RDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBMb2FkQ2FuY2VsZWROb1NlcnZlclJlZGlyZWN0Q2FsbGJhY2suY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzM0RDODkxMzE0MTk1NzlGMDA3NDdFRjcgLyogTG9hZENh
bmNlbGVkTm9TZXJ2ZXJSZWRpcmVjdENhbGxiYWNrX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkQ2FuY2VsZWROb1NlcnZlclJlZGlyZWN0Q2FsbGJh
Y2tfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxNyw2ICs4MzMs
OCBAQAogCQkJCTUyMEJDRjRCMTQxRUIwOUUwMDkzN0VBOCAvKiBXZWJBcmNoaXZlLmNwcCAqLywK
IAkJCQk1MjBCQ0Y0QTE0MUVCMDlFMDA5MzdFQTggLyogV2ViQXJjaGl2ZV9CdW5kbGUuY3BwICov
LAogCQkJCTBGMTdCQkQ0MTVBRjZDNEQwMDdBQjc1MyAvKiBXZWJDb3JlU3RhdGlzdGljc1dpdGhO
b1dlYlByb2Nlc3MuY3BwICovLAorCQkJCTMzQkU1QUZBMTM3QjVBMjMwMDcwNTgxMyAvKiBXZWJX
b3JrZXIuY3BwICovLAorCQkJCTMzQkU1QUZCMTM3QjVBMjQwMDcwNTgxMyAvKiBXZWJXb3JrZXJf
QnVuZGxlLmNwcCAqLywKIAkJCQk3Q0ZCQ0FERDE3NDMyMzRGMDBCMkJGQ0YgLyogV2lsbExvYWQu
Y3BwICovLAogCQkJCTdDRkJDQUUzMTc0MzIzOEUwMEIyQkZDRiAvKiBXaWxsTG9hZF9CdW5kbGUu
Y3BwICovLAogCQkJCTc2RTE4MkQ5MTU0NzU1MDEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2
ZW50LmNwcCAqLywKQEAgLTg5Nyw2ICs5MTUsMTAgQEAKIAkJCQlCQ0FBNDg1NTE0QTAyMTY0MDA4
OEZBQzQgLyogc2ltcGxlLXRhbGwuaHRtbCAqLywKIAkJCQlCQzkwOTc3ODEyNTU3MUFCMDAwODM3
NTYgLyogc2ltcGxlLmh0bWwgKi8sCiAJCQkJQzAyQjc4ODIxMjY2MTU0MTAwMjZCRjBGIC8qIHNw
YWNlYmFyLXNjcm9sbGluZy5odG1sICovLAorCQkJCTMzQkU0QkVDMTM3QjUxMjcwMDYxNDcxMyAv
KiB3ZWJXb3JrZXJTaGFyZWRUZXN0Lmh0bWwgKi8sCisJCQkJMzNCRTRCRUMxMzdCNTEyODAwNjE0
NzEzIC8qIHdlYldvcmtlclNoYXJlZFRlc3QuanMgKi8sCisJCQkJMzNCRTRCRUMxMzdCNTEyQjAw
NjE0NzEzIC8qIHdlYldvcmtlclRlc3QuaHRtbCAqLywKKwkJCQkzM0JFNEJFQzEzN0I1MTJDMDA2
MTQ3MTMgLyogd2ViV29ya2VyVGVzdC5qcyAqLywKIAkJCSk7CiAJCQluYW1lID0gUmVzb3VyY2Vz
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTEyNzcsNiArMTI5OSw3IEBACiAJCQkJ
QzA4NTg3QkYxM0ZFOTU2QzAwMUVGNEU1IC8qIFdlYktpdEFnbm9zdGljVGVzdC5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxRkJCQjREMTUxM0Q0RTkwMDgyMjczOCAvKiBXZWJWaWV3Q2FuUGFzdGVV
UkwubW0gaW4gU291cmNlcyAqLywKIAkJCQkzN0UzOEMzNDE2OUI3RDAxMDA4NEMyOEMgLyogV2Vi
Vmlld0RpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTMz
QkU1QUZBMTM3QjVBMjEwMDcwNTgxMyAvKiBXZWJXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNzZFMTgyREExNTQ3NTUwMTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTVFMjAyNzMxNUIyMTgxOTAwQzEzRTE0IC8qIFdpbmRvd2xlc3NX
ZWJWaWV3V2l0aE1lZGlhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjZCN0JFOTQxNzQ2OTIwOTAw
OEEzNDQ1IC8qIERpZEFzc29jaWF0ZUZvcm1Db250cm9scy5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTEzMjksNiArMTM1Miw3IEBACiAJCQkJNTFGQ0Y3QTExNTM0QjJBMDAwMTA0NDkxIC8qIFNob3Vs
ZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzIyRDMxOTE0REM2OEI5MDBGRkIxREQgLyogVXNlck1lc3NhZ2VfQnVuZGxlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUyMEJDRjRDMTQxRUIwOUUwMDkzN0VBOCAvKiBXZWJBcmNoaXZlX0J1bmRs
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzM0JFNUFGQjEzN0I1QTIyMDA3MDU4MTMgLyogV2Vi
V29ya2VyX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NkUxODJERDE1NDc1NjkxMDBG
MUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUE5RTMyOTQxODIxOTQ1QzAwRjVEMDRDIC8qIFdLUmVtb3RlT2JqZWN0UmVnaXN0cnlfQnVu
ZGxlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5MDFFMzMxNDkyQUYzOTAwNzRBNjY3IC8qIFdL
Q29ubmVjdGlvbl9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiZDdlZGYyYTRh
MWRmYjEwMDU1YzQ3NmYyMTRhZDIwODM3NzM5NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViV29ya2VyLmNwcApAQCAtMCwwICsxLDEwMSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgor
I2luY2x1ZGUgPFdlYktpdDIvV0tDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2Uu
aD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CisKK25hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKK3N0
YXRpYyBib29sIHRlcm1pbmF0ZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIGNoYW5nZWRUaXRsZSA9
IGZhbHNlOworc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWRTaGFyZWQgPSBmYWxzZTsKK3N0YXRpYyBi
b29sIHRlcm1pbmF0ZWRTaGFyZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIGNoYW5nZWRUaXRsZVNo
YXJlZCA9IGZhbHNlOworCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYs
IGNvbnN0IHZvaWQqKQoreworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1l
c3NhZ2VOYW1lLCAiV2ViV29ya2VySW5pdE1lc3NhZ2UiKSkKKyAgICAgICAgaW5pdGlhbGl6ZWQg
PSB0cnVlOworICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2Fn
ZU5hbWUsICJXZWJXb3JrZXJUZXJtaW5hdGVNZXNzYWdlIikpCisgICAgICAgIHRlcm1pbmF0ZWQg
PSB0cnVlOworICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2Fn
ZU5hbWUsICJXZWJXb3JrZXJTaGFyZWRJbml0TWVzc2FnZSIpKQorICAgICAgICBpbml0aWFsaXpl
ZFNoYXJlZCA9IHRydWU7CisgICAgZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhtZXNzYWdlTmFtZSwgIldlYldvcmtlclNoYXJlZFRlcm1pbmF0ZU1lc3NhZ2UiKSkKKyAgICAg
ICAgdGVybWluYXRlZFNoYXJlZCA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIGRpZFJlY2VpdmVU
aXRsZUZvckZyYW1lKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgdGl0bGUsIFdLRnJhbWVSZWYsIFdL
VHlwZVJlZiwgY29uc3Qgdm9pZCAqKQoreworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKHRpdGxlLCAiV2ViV29ya2VyVGl0bGUiKSkKKyAgICAgICAgY2hhbmdlZFRpdGxlID0g
dHJ1ZTsKKyAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHRpdGxlLCAi
V2ViV29ya2VyU2hhcmVkVGl0bGUiKSkKKyAgICAgICAgY2hhbmdlZFRpdGxlU2hhcmVkID0gdHJ1
ZTsKK30KKworVEVTVChXZWJLaXQyLCBXZWJXb3JrZXIpCit7CisgICAgLy8gVGhpcyB0ZXN0IGNv
dmVyIHRoZSBiaW5kaW5nIGJldHdlZW4gZnVuY3Rpb25zIG9mIEphdmFTY3JpcHQgV29ya2VycyBh
bmQKKyAgICAvLyBmdW5jdGlvbnMgZGVmaW5lZCBhdCBhIHByZXZpb3VzbHkgbG9hZGVkIGJ1bmRs
ZS4gSXQgdmVyaWZpZXMgdGhlIHR3bworICAgIC8vIHR5cGVzIG9mIFdvcmtlcnMsIGRlZGljYXRl
ZCBhbmQgc2hhcmVkLgorICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9w
dFdLLCBVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJXZWJXb3JrZXJU
ZXN0IikpOworCisgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQgaW5qZWN0ZWRCdW5k
bGVDbGllbnQ7CisgICAgbWVtc2V0KCZpbmplY3RlZEJ1bmRsZUNsaWVudCwgMCwgc2l6ZW9mKGlu
amVjdGVkQnVuZGxlQ2xpZW50KSk7CisgICAgaW5qZWN0ZWRCdW5kbGVDbGllbnQuZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUgPSBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZTsKKyAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0Lmdl
dCgpLCAmaW5qZWN0ZWRCdW5kbGVDbGllbnQpOworCisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZp
ZXcoY29udGV4dC5nZXQoKSk7CisKKyAgICBXS1BhZ2VMb2FkZXJDbGllbnQgcGFnZUxvYWRlckNs
aWVudDsKKyAgICBtZW1zZXQoJnBhZ2VMb2FkZXJDbGllbnQsIDAsIHNpemVvZihXS1BhZ2VMb2Fk
ZXJDbGllbnQpKTsKKyAgICBwYWdlTG9hZGVyQ2xpZW50LnZlcnNpb24gPSBrV0tQYWdlTG9hZGVy
Q2xpZW50Q3VycmVudFZlcnNpb247CisgICAgcGFnZUxvYWRlckNsaWVudC5kaWRSZWNlaXZlVGl0
bGVGb3JGcmFtZSA9IGRpZFJlY2VpdmVUaXRsZUZvckZyYW1lOworICAgIFdLUGFnZVNldFBhZ2VM
b2FkZXJDbGllbnQod2ViVmlldy5wYWdlKCksICZwYWdlTG9hZGVyQ2xpZW50KTsKKworICAgIFdL
UGFnZUdyb3VwUmVmIHBhZ2VHcm91cCA9IFdLUGFnZUdldFBhZ2VHcm91cCh3ZWJWaWV3LnBhZ2Uo
KSk7CisgICAgV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlcyA9IFdLUGFnZUdyb3VwR2V0UHJl
ZmVyZW5jZXMocGFnZUdyb3VwKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0RmlsZUFjY2Vzc0Zyb21G
aWxlVVJMc0FsbG93ZWQocHJlZmVyZW5jZXMsIHRydWUpOworCisgICAgV0tSZXRhaW5QdHI8V0tV
UkxSZWY+IHVybCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoIndlYldvcmtl
clRlc3QiLCAiaHRtbCIpKTsKKyAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCB1cmwu
Z2V0KCkpOworCisgICAgVXRpbDo6cnVuKCZpbml0aWFsaXplZCk7CisgICAgVXRpbDo6cnVuKCZ0
ZXJtaW5hdGVkKTsKKyAgICBVdGlsOjpydW4oJmNoYW5nZWRUaXRsZSk7CisKKyAgICB1cmwgPSBh
ZG9wdFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJ3ZWJXb3JrZXJTaGFyZWRUZXN0Iiwg
Imh0bWwiKSk7CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgdXJsLmdldCgpKTsK
KyAgICBVdGlsOjpydW4oJmluaXRpYWxpemVkU2hhcmVkKTsKKyAgICBVdGlsOjpydW4oJnRlcm1p
bmF0ZWRTaGFyZWQpOworICAgIFV0aWw6OnJ1bigmY2hhbmdlZFRpdGxlU2hhcmVkKTsKK30KKwor
fSAvLyBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvV2ViV29ya2VyX0J1bmRsZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvV2ViV29ya2VyX0J1bmRsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjNhYjViMmRkZjhlNzNj
MTM0MTdiOTdhZWMwZmYwOGI2NDI5YjY2YwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJXb3JrZXJfQnVuZGxlLmNwcApAQCAtMCwwICsxLDg1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVGVzdC5o
IgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVGcmFtZS5oPgorI2luY2x1ZGUgPGNzdGRpbz4K
KworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitKU1ZhbHVlUmVmIGZvbyhKU0NvbnRleHRS
ZWYgY3R4LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYsIHNpemVfdCwgY29uc3QgSlNWYWx1ZVJl
ZltdLCBKU1ZhbHVlUmVmKikKK3sKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVu
ZGxlQ29udHJvbGxlcjo6c2hhcmVkKCkuYnVuZGxlKCksIFV0aWw6OnRvV0soIldlYldvcmtlcklu
aXRNZXNzYWdlIikuZ2V0KCksIDApOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0cmluZyhjdHgs
IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJXZWJXb3JrZXJUaXRsZSIpKTsKK30KKwor
SlNWYWx1ZVJlZiBiYXIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVm
LCBzaXplX3QsIGNvbnN0IEpTVmFsdWVSZWZbXSwgSlNWYWx1ZVJlZiopCit7CisgICAgV0tCdW5k
bGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OnNoYXJlZCgpLmJ1bmRsZSgp
LCBVdGlsOjp0b1dLKCJXZWJXb3JrZXJTaGFyZWRJbml0TWVzc2FnZSIpLmdldCgpLCAwKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY3R4LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiV2ViV29ya2VyU2hhcmVkVGl0bGUiKSk7Cit9CisKK3ZvaWQgd2ViV29ya2VySW5pdGlh
bGl6ZShKU0NvbnRleHRSZWYgY29udGV4dCwgaW50IGlzRGVkaWNhdGVkKQoreworICAgIGlmIChp
c0RlZGljYXRlZCkgeworICAgICAgICBKU1N0cmluZ1JlZiBmdW5jTmFtZSA9IEpTU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJmb28iKTsKKyAgICAgICAgSlNPYmplY3RSZWYganNGdW5jID0g
SlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2soY29udGV4dCwgZnVuY05hbWUsICZmb28p
OworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRleHQsIEpTQ29udGV4dEdldEdsb2Jh
bE9iamVjdChjb250ZXh0KSwgZnVuY05hbWUsIGpzRnVuYywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSwgMCk7CisgICAgICAgIEpT
U3RyaW5nUmVsZWFzZShmdW5jTmFtZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgSlNTdHJpbmdS
ZWYgZnVuY05hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiYmFyIik7CisgICAg
ICAgIEpTT2JqZWN0UmVmIGpzRnVuYyA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNr
KGNvbnRleHQsIGZ1bmNOYW1lLCAmYmFyKTsKKyAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShj
b250ZXh0LCBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QoY29udGV4dCksIGZ1bmNOYW1lLCBqc0Z1
bmMsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUsIDApOworICAgICAgICBKU1N0cmluZ1JlbGVhc2UoZnVuY05hbWUpOworICAgIH0K
K30KKwordm9pZCB3ZWJXb3JrZXJUZXJtaW5hdGUoSlNDb250ZXh0UmVmIGNvbnRleHQsIGludCBp
c0RlZGljYXRlZCkKK3sKKyAgICBpZiAoaXNEZWRpY2F0ZWQpCisgICAgICAgIFdLQnVuZGxlUG9z
dE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpzaGFyZWQoKS5idW5kbGUoKSwgVXRp
bDo6dG9XSygiV2ViV29ya2VyVGVybWluYXRlTWVzc2FnZSIpLmdldCgpLCAwKTsKKyAgICBlbHNl
CisgICAgICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpz
aGFyZWQoKS5idW5kbGUoKSwgVXRpbDo6dG9XSygiV2ViV29ya2VyU2hhcmVkVGVybWluYXRlTWVz
c2FnZSIpLmdldCgpLCAwKTsKK30KKworY2xhc3MgV2ViV29ya2VyVGVzdCA6IHB1YmxpYyBJbmpl
Y3RlZEJ1bmRsZVRlc3QgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYldvcmtlclRlc3QoY29u
c3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIpCisgICAgICAgIDogSW5qZWN0ZWRCdW5kbGVUZXN0
KGlkZW50aWZpZXIpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXpl
KFdLQnVuZGxlUmVmLCBXS1R5cGVSZWYpCisgICAgeworICAgICAgICBXS0J1bmRsZUZyYW1lU2V0
V29ya2VySW5pdGlhbGl6ZUNhbGxiYWNrKHdlYldvcmtlckluaXRpYWxpemUpOworICAgICAgICBX
S0J1bmRsZUZyYW1lU2V0V29ya2VyVGVybWluYXRlQ2FsbGJhY2sod2ViV29ya2VyVGVybWluYXRl
KTsKKyAgICB9Cit9OworCitzdGF0aWMgSW5qZWN0ZWRCdW5kbGVUZXN0OjpSZWdpc3RlcjxXZWJX
b3JrZXJUZXN0PiByZWdpc3RyYXIoIldlYldvcmtlclRlc3QiKTsKKworfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL3dlYldvcmtlclNoYXJlZFRlc3QuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi93ZWJXb3JrZXJTaGFyZWRUZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWFhNjk2MmU3ZWU2
MDE4ZDdjZWEzOTFiNGU5NDEzMTQ4ZTlkZTUwYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi93ZWJXb3JrZXJTaGFyZWRUZXN0Lmh0bWwKQEAgLTAs
MCArMSwxMiBAQAorPGh0bWw+CisgICAgPGJvZHk+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
ICAgICB2YXIgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtlcigid2ViV29ya2VyU2hhcmVkVGVzdC5q
cyIpOworICAgICAgICAgICAgd29ya2VyLnBvcnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIs
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQudGl0bGUgPSBldmVu
dC5kYXRhOworICAgICAgICAgICAgfSwgZmFsc2UpOworICAgICAgICAgICAgd29ya2VyLnBvcnQu
c3RhcnQoKTsKKyAgICAgICAgICAgIHdvcmtlci5wb3J0LnBvc3RNZXNzYWdlKCJXZWJXb3JrZXJT
aGFyZWRNZXNzYWdlIik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi93ZWJXb3JrZXJT
aGFyZWRUZXN0LmpzIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3dlYldvcmtl
clNoYXJlZFRlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTg0YmFmNjc3M2I2YTRmZThkYmRiYzc4ZGVkMWE4
ZTdkYzFiZWVhNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi93ZWJXb3JrZXJTaGFyZWRUZXN0LmpzCkBAIC0wLDAgKzEsMTMgQEAKK3ZhciBwb3J0
cyA9IFtdOworCitvbmNvbm5lY3QgPSBmdW5jdGlvbihldmVudCkgeworICAgIHZhciBwb3J0ID0g
ZXZlbnQucG9ydHNbMF07CisgICAgcG9ydHMucHVzaChwb3J0KTsKKyAgICBwb3J0LnN0YXJ0KCk7
CisgICAgcG9ydC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsg
bGlzdGVuRm9yTWVzc2FnZShldmVudCwgcG9ydCk7IH0gKTsKK30KKworbGlzdGVuRm9yTWVzc2Fn
ZSA9IGZ1bmN0aW9uIChldmVudCwgcG9ydCkgeworICAgIHBvcnQucG9zdE1lc3NhZ2Uoc2VsZi5i
YXIoKSk7CisgICAgc2VsZi5jbG9zZSgpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL3dlYldvcmtlclRlc3QuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi93ZWJXb3JrZXJUZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJhN2I4MmJk
MTNjYjEwYTI2MDY3NDYzMzkzYzI1NGY1ZGYwZjQ4ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi93ZWJXb3JrZXJUZXN0Lmh0bWwKQEAgLTAsMCAr
MSwxMSBAQAorPGh0bWw+CisgICAgPGJvZHk+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAg
ICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcigid2ViV29ya2VyVGVzdC5qcyIpOworICAgICAgICAg
ICAgd29ya2VyLnBvc3RNZXNzYWdlKCJXZWJXb3JrZXJNZXNzYWdlIik7CisgICAgICAgICAgICB3
b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgICAgICBkb2N1
bWVudC50aXRsZSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICB9OworICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvd2ViV29ya2VyVGVzdC5qcyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi93ZWJXb3JrZXJUZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2ODViYjU1YzIyMTU0ZTEw
N2YzNGI1MjUyNTg1MTcyNDA0OTEzMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvd2ViV29ya2VyVGVzdC5qcwpAQCAtMCwwICsxLDUgQEAKK3Nl
bGYub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBzZWxmLnBvc3RNZXNzYWdlKHNl
bGYuZm9vKCkpOworICAgIHNlbGYuY2xvc2UoKTsKKyAgICByZXR1cm47Cit9Owo=
</data>
<flag name="review"
          id="241320"
          type_id="1"
          status="-"
          setter="sam"
    />
    <flag name="commit-queue"
          id="241321"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>