<?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>80847</bug_id>
          
          <creation_ts>2012-03-12 08:50:28 -0700</creation_ts>
          <short_desc>Extend HitTestResult to support not &quot;discarding&quot; shadow content in favor of its DOM ancestor</short_desc>
          <delta_ts>2012-04-05 14:30:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>80886</dependson>
          <blocked>73144</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antonio Gomes">tonikitoo</reporter>
          <assigned_to name="Antonio Gomes">tonikitoo</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>dglazkov</cc>
    
    <cc>hyatt</cc>
    
    <cc>manyoso</cc>
    
    <cc>ossy</cc>
    
    <cc>staikos</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>576158</commentid>
    <comment_count>0</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-03-12 08:50:28 -0700</bug_when>
    <thetext>Right now, we have in HitTestResult.cpp the following code:

564 bool HitTestResult::addNodeToRectBasedTestResult(Node* node, const LayoutPoint&amp; pointInContainer, const IntRect&amp; rect)
565 {
...
574 
575     node = node-&gt;shadowAncestorNode();
576     mutableRectBasedTestResult().add(node);
... }

So we unconditionally add the shadow ancestor node to the results, if the original rect hit-test&apos;ed node is in a shadow tree.

However for touch accuracy purposes, we might want to add the shadow nodes themselves into the result vector. For example, consider &lt;video&gt; and &lt;audio&gt; elements with built-in controls, when you touch either the volume or playback sliders (input type=range), or the play/pause button (input type=button), client of this class might want to handle them independently from its containing media element.

Patch coming...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578962</commentid>
    <comment_count>1</comment_count>
      <attachid>131962</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-03-14 17:10:58 -0700</bug_when>
    <thetext>Created attachment 131962
patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578983</commentid>
    <comment_count>2</comment_count>
      <attachid>131962</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-14 17:41:57 -0700</bug_when>
    <thetext>Comment on attachment 131962
patch v1

Attachment 131962 did not pass win-ews (win):
Output: http://queues.webkit.org/results/11958309</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578991</commentid>
    <comment_count>3</comment_count>
      <attachid>131962</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-14 17:52:33 -0700</bug_when>
    <thetext>Comment on attachment 131962
patch v1

Attachment 131962 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11954405</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578992</commentid>
    <comment_count>4</comment_count>
      <attachid>131962</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-14 17:55:32 -0700</bug_when>
    <thetext>Comment on attachment 131962
patch v1

Attachment 131962 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/11951529</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579016</commentid>
    <comment_count>5</comment_count>
      <attachid>131962</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-14 18:34:28 -0700</bug_when>
    <thetext>Comment on attachment 131962
patch v1

Attachment 131962 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/11955390</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579018</commentid>
    <comment_count>6</comment_count>
      <attachid>131962</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-14 18:37:15 -0700</bug_when>
    <thetext>Comment on attachment 131962
patch v1

Attachment 131962 did not pass win-ews (win):
Output: http://queues.webkit.org/results/11957372</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579079</commentid>
    <comment_count>7</comment_count>
      <attachid>131981</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-03-14 20:35:46 -0700</bug_when>
    <thetext>Created attachment 131981
patch v1.1 - for EWS to build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579105</commentid>
    <comment_count>8</comment_count>
      <attachid>131981</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-14 21:08:46 -0700</bug_when>
    <thetext>Comment on attachment 131981
patch v1.1 - for EWS to build

Attachment 131981 did not pass win-ews (win):
Output: http://queues.webkit.org/results/11953638</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579139</commentid>
    <comment_count>9</comment_count>
      <attachid>131981</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-14 22:56:52 -0700</bug_when>
    <thetext>Comment on attachment 131981
patch v1.1 - for EWS to build

Attachment 131981 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11954500

New failing tests:
fast/dom/nodesFromRect-shadowContent.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579478</commentid>
    <comment_count>10</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-03-15 10:20:01 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; Right now, we have in HitTestResult.cpp the following code:
&gt; 
&gt; 564 bool HitTestResult::addNodeToRectBasedTestResult(Node* node, const LayoutPoint&amp; pointInContainer, const IntRect&amp; rect)
&gt; 565 {
&gt; ...
&gt; 574 
&gt; 575     node = node-&gt;shadowAncestorNode();
&gt; 576     mutableRectBasedTestResult().add(node);
&gt; ... }
&gt; 
&gt; So we unconditionally add the shadow ancestor node to the results, if the original rect hit-test&apos;ed node is in a shadow tree.
&gt; 
&gt; However for touch accuracy purposes, we might want to add the shadow nodes themselves into the result vector. For example, consider &lt;video&gt; and &lt;audio&gt; elements with built-in controls, when you touch either the volume or playback sliders (input type=range), or the play/pause button (input type=button), client of this class might want to handle them independently from its containing media element.

What do you mean by &quot;client of this class&quot; here?

The notion that we should have some differences in how hit testing is handled depending on whether a DOM element in shadow DOM or not smells really, really bad to me.

I would really like to better understand the problem first.

&gt; 
&gt; Patch coming...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579483</commentid>
    <comment_count>11</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-03-15 10:25:31 -0700</bug_when>
    <thetext>
&gt; What do you mean by &quot;client of this class&quot; here?

Maybe I explained it wrong. &apos;Clients&apos; is methods calling HitTestResults, for rect hittest purposes.

&gt; The notion that we should have some differences in how hit testing is handled depending on whether a DOM element in shadow DOM or not smells really, really bad to me.

We are not hit testing differently dom and shadow content content. Shadow content is always part of the hit test system, but we do not add them to the &quot;resulting&quot; vector. Patch allows this flexibility.

There is no change in the hit testing system itself here at all, but instead on the set of nodes returned when a rect hittest is being performed.

Does it better explain the idea or or your still feel bad about it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579624</commentid>
    <comment_count>12</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-03-15 12:12:19 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; What do you mean by &quot;client of this class&quot; here?
&gt; 
&gt; Maybe I explained it wrong. &apos;Clients&apos; is methods calling HitTestResults, for rect hittest purposes.
&gt; 
&gt; &gt; The notion that we should have some differences in how hit testing is handled depending on whether a DOM element in shadow DOM or not smells really, really bad to me.
&gt; 
&gt; We are not hit testing differently dom and shadow content content. Shadow content is always part of the hit test system, but we do not add them to the &quot;resulting&quot; vector. Patch allows this flexibility.
&gt; 
&gt; There is no change in the hit testing system itself here at all, but instead on the set of nodes returned when a rect hittest is being performed.
&gt; 
&gt; Does it better explain the idea or or your still feel bad about it?

I see.  Why do we need this as an option then? Why can&apos;t it just be on by default? Does this make the shadow content leak out to a public-facing API?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579664</commentid>
    <comment_count>13</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-03-15 13:01:16 -0700</bug_when>
    <thetext>
&gt; &gt; Does it better explain the idea or or your still feel bad about it?
&gt; 
&gt; I see.  Why do we need this as an option then? Why can&apos;t it just be on by default? Does this make the shadow content leak out to a public-facing API?

I was trying to make it optional so &quot;users&quot; of this extension can decide, Dimitri. It has to set a value to this parameter (since there is not default value set to it), so it is really up to the caller the granularity it needs.

I also tried to be analogy to the point-based hit hit test in this case: one can rather accept shadow content or not, depending on what it needs it for.

I have some use cases in mind that would not need any shadow content, for example...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579798</commentid>
    <comment_count>14</comment_count>
      <attachid>132132</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-03-15 15:13:39 -0700</bug_when>
    <thetext>Created attachment 132132
to get win symbols from ews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579828</commentid>
    <comment_count>15</comment_count>
      <attachid>132132</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-15 15:44:08 -0700</bug_when>
    <thetext>Comment on attachment 132132
to get win symbols from ews

Attachment 132132 did not pass win-ews (win):
Output: http://queues.webkit.org/results/11961007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579879</commentid>
    <comment_count>16</comment_count>
      <attachid>132132</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-15 16:32:10 -0700</bug_when>
    <thetext>Comment on attachment 132132
to get win symbols from ews

Attachment 132132 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11954837

New failing tests:
fast/dom/nodesFromRect-shadowContent.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579946</commentid>
    <comment_count>17</comment_count>
      <attachid>132132</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-15 17:29:13 -0700</bug_when>
    <thetext>Comment on attachment 132132
to get win symbols from ews

Attachment 132132 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11956872

New failing tests:
fast/dom/nodesFromRect-shadowContent.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594578</commentid>
    <comment_count>18</comment_count>
      <attachid>135347</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-04-03 09:56:47 -0700</bug_when>
    <thetext>Created attachment 135347
(committed r113329, r=dhyatt) patch v1.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594761</commentid>
    <comment_count>19</comment_count>
      <attachid>135347</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-04-03 12:46:26 -0700</bug_when>
    <thetext>Comment on attachment 135347
(committed r113329, r=dhyatt) patch v1.2

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

&gt; LayoutTests/fast/dom/nodesFromRect-shadowContent-expected.txt:2
&gt; +PASS All correct nodes found for rect

Why twice PASS?

&gt; LayoutTests/fast/dom/nodesFromRect-shadowContent-expected.txt:3
&gt; +This test only runs in DRT!

Would be better to only print this when DRT in not available.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594799</commentid>
    <comment_count>20</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-04-03 13:16:25 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 135347 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=135347&amp;action=review
&gt; 
&gt; &gt; LayoutTests/fast/dom/nodesFromRect-shadowContent-expected.txt:2
&gt; &gt; +PASS All correct nodes found for rect
&gt; 
&gt; Why twice PASS?

+      check(clickX, clickY, 10, 10, 20, 20, [e.v1, e.body]);
+
+      var shadow =[&apos;-webkit-media-controls-timeline-container&apos;, &apos;-webkit-media-controls-play-button&apos;, &apos;-webkit-media-controls-panel&apos;, &apos;-webkit-media-controls&apos;];
+      checkShadowContent(clickX, clickY, 10, 10, 20, 20, shadow);


one from &apos;check&apos;, one from &apos;checkShadowContent&apos;.
 
&gt; &gt; LayoutTests/fast/dom/nodesFromRect-shadowContent-expected.txt:3
&gt; &gt; +This test only runs in DRT!
&gt; 
&gt; Would be better to only print this when DRT in not available.

Ok, can fix it before landing...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595795</commentid>
    <comment_count>21</comment_count>
      <attachid>135347</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-04-04 12:22:00 -0700</bug_when>
    <thetext>Comment on attachment 135347
(committed r113329, r=dhyatt) patch v1.2

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595798</commentid>
    <comment_count>22</comment_count>
      <attachid>135347</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-04-04 12:23:17 -0700</bug_when>
    <thetext>Comment on attachment 135347
(committed r113329, r=dhyatt) patch v1.2

pushing manually to watch the bots...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596550</commentid>
    <comment_count>23</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-04-05 07:35:33 -0700</bug_when>
    <thetext>not sure if Qt port is able to run tests that make use of &lt;video&gt; content. CC&apos;ing Ossy as an attempt to not cause any unneeded bot redness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596555</commentid>
    <comment_count>24</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-04-05 07:42:03 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; not sure if Qt port is able to run tests that make use of &lt;video&gt; content. CC&apos;ing Ossy as an attempt to not cause any unneeded bot redness.

Good question ... All media tests are skipped now, because they were very flakey long time ago. I don&apos;t know if anybody experimented with it after skipping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596645</commentid>
    <comment_count>25</comment_count>
      <attachid>135347</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-04-05 09:51:46 -0700</bug_when>
    <thetext>Comment on attachment 135347
(committed r113329, r=dhyatt) patch v1.2

$ git svn dcommit 
Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	ChangeLog
	M	LayoutTests/ChangeLog
	A	LayoutTests/fast/dom/nodesFromRect-shadowContent-expected.txt
	A	LayoutTests/fast/dom/nodesFromRect-shadowContent.html
	M	LayoutTests/fast/dom/resources/nodesFromRect.js
	M	LayoutTests/platform/chromium/test_expectations.txt
	M	Source/WebCore/ChangeLog
	M	Source/WebCore/WebCore.exp.in
	M	Source/WebCore/dom/Document.cpp
	M	Source/WebCore/dom/Document.h
	M	Source/WebCore/page/EventHandler.cpp
	M	Source/WebCore/rendering/HitTestResult.cpp
	M	Source/WebCore/rendering/HitTestResult.h
	M	Source/WebCore/rendering/RenderImage.cpp
	M	Source/WebCore/rendering/RenderLayer.cpp
	M	Source/WebCore/testing/Internals.cpp
	M	Source/WebCore/testing/Internals.h
	M	Source/WebCore/testing/Internals.idl
	M	Source/WebKit/qt/Api/qwebpage.cpp
	M	Source/WebKit2/win/WebKit2.def
	M	Source/autotools/symbols.filter
Committed r113329</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596646</commentid>
    <comment_count>26</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-04-05 09:53:22 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; not sure if Qt port is able to run tests that make use of &lt;video&gt; content. CC&apos;ing Ossy as an attempt to not cause any unneeded bot redness.
&gt; 
&gt; Good question ... All media tests are skipped now, because they were very flakey long time ago. I don&apos;t know if anybody experimented with it after skipping.

Lets give it a try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596796</commentid>
    <comment_count>27</comment_count>
      <attachid>135877</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-04-05 12:29:03 -0700</bug_when>
    <thetext>Created attachment 135877
(committed r113358) line left over after a rebase before landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596797</commentid>
    <comment_count>28</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-04-05 12:29:36 -0700</bug_when>
    <thetext>reopening for cq.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596798</commentid>
    <comment_count>29</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-04-05 12:30:04 -0700</bug_when>
    <thetext>Test fails on lion: http://build.webkit.org/results/Lion%20Release%20%28Tests%29/r113330%20%287311%29/results.html

Looking...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596869</commentid>
    <comment_count>30</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-04-05 13:39:16 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; Test fails on lion: http://build.webkit.org/results/Lion%20Release%20%28Tests%29/r113330%20%287311%29/results.html
&gt; 
&gt; Looking...

speculative fix: http://svn.webkit.org/repository/webkit/trunk@113371</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131962</attachid>
            <date>2012-03-14 17:10:58 -0700</date>
            <delta_ts>2012-03-14 20:35:46 -0700</delta_ts>
            <desc>patch v1</desc>
            <filename>0001-Extend-HitTestResult-to-support-not-discarding-shado.patch</filename>
            <type>text/plain</type>
            <size>26398</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSBmMzA0YjhjYmU0ODNhNDc2MzAzMGJkZGU3ODM0ZGY2YjEwY2UxOTU4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
V2VkLCAxNCBNYXIgMjAxMiAyMDowNzo1OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIEV4dGVuZCBI
aXRUZXN0UmVzdWx0IHRvIHN1cHBvcnQgbm90ICJkaXNjYXJkaW5nIiBzaGFkb3cKIGNvbnRlbnQg
aW4gZmF2b3Igb2YgaXRzIERPTSBhbmNlc3RvcgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgwODQ3CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KUGF0Y2ggYnkg
QW50b25pbyBHb21lcyA8YWdvbWVzQHJpbS5jb20+CgouOgoKRXhwb3J0aW5nIEludGVybmFsczo6
bm9kZXNGcm9tUmVjdCBzeW1ib2xzIGZvciB0aGUgR3RrIGJ1aWxkLgoKKiBTb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyOgoKU291cmNlL1dlYkNvcmU6CgpJbiBvcmRlciB0byBpbXByb3Zl
IHRvdWNoIHByZWNpc2lvbiBvbiBzaGFkb3cgdHJlZSBjb250ZW50LCBwYXRjaApleHRlbmRzIHRo
ZSByZWN0LWhpdHRlc3QnaW5nIHN5c3RlbSB0byBhbGxvdyBzaGFkb3cgY29udGVudAp0byBiZSBz
dG9yZWQgYXMgdGhlIHJlY3QtaGl0dGVzdCByZXN1bHQgbm9kZSBsaXN0LgoKUHJpbWFyeSB1c2Ug
Y2FzZXMgYXJlIGZvciB0aGlzIGV4dGVuc2lvbiBpcyBtYWtpbmcgaXQgZWFzaWVyIHRvCmltcHJv
dmUgdGhlIGNsaWNrYWJpbGl0eSBvZiBkZWZhdWx0IGNvbnRyb2xzIG9mIDx2aWRlbz4gYW5kIDxh
dWRpbz4KZWxlbWVudHMuCgpGb3IgdGhlIGNhbGxlZSBzaXRlLCB0aGUgdXNlIGlzIHNpbXBsZTog
aWYgc2hhZG93IGNvbnRlbnQgaW4gdGhlIHJlY3QtaGl0dGVzdApyZXN1bHQgaXMgZGVzaXJlZCwg
anVzdCBhZGQgYW4gZXh0cmEgJ0FsbG93U2hhZG93Q29udGVudCcgcGFyYW1ldGVyIGF0IHRoZSBj
cmVhdGlvbgpvZiB0aGUgSGl0VGVzdFJlc3VsdCBvYmplY3QuCgpUZXN0OiBmYXN0L2RvbS9ub2Rl
c0Zyb21SZWN0LXNoYWRvd0NvbnRlbnQuaHRtbAoKKiBkb20vRG9jdW1lbnQuY3BwOgooV2ViQ29y
ZTo6RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QpOgoqIGRvbS9Eb2N1bWVudC5oOgooRG9jdW1lbnQp
OgoqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGl0VGVz
dFJlc3VsdEF0UG9pbnQpOgoqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKFdlYkNvcmU6
OkhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQpOgooV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6
YWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdCk6CiogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
aDoKKEhpdFRlc3RSZXN1bHQpOgooV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6c2hhZG93Q29udGVu
dEZpbHRlclBvbGljeSk6CiogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKFdlYkNvcmU6OlJl
bmRlckltYWdlOjpub2RlQXRQb2ludCk6CiogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OmhpdFRlc3RMaXN0KToKKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CihXZWJDb3JlOjpJbnRlcm5h
bHM6Om5vZGVzRnJvbVJlY3QpOgoqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CihJbnRlcm5hbHMpOgoq
IHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKCkxheW91dFRlc3RzOgoKQWRkcyBhIHRlc3QgdGhhdCBy
ZWN0LWhpdHRlc3QncyBhIGVsZW1lbnQga25vd24gdG8gaGF2ZSBhIHNoYWRvdwp0cmVlICg8dmlk
ZW8+IHdpdGggYnVpbHQtaW4gY29udHJvbHMpLCBhbmQgY2hlY2sgaWYgaXRzIHJldHVybiB0eXBl
CmNvbnRhaW5zIGl0cyBjbGlja2FibGUgc2hhZG93IG5vZGVzLgoKKiBmYXN0L2RvbS9ub2Rlc0Zy
b21SZWN0LXNoYWRvd0NvbnRlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBmYXN0L2RvbS9ub2Rl
c0Zyb21SZWN0LXNoYWRvd0NvbnRlbnQuaHRtbDogQWRkZWQuCiogZmFzdC9kb20vcmVzb3VyY2Vz
L25vZGVzRnJvbVJlY3QuanM6CihjaGVjayk6CihjaGVja1NoYWRvd0NvbnRlbnQpOgotLS0KIENo
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSAr
KysrCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMTcgKysrKysKIC4uLi9kb20vbm9kZXNGcm9tUmVjdC1zaGFkb3dDb250ZW50LWV4cGVjdGVk
LnR4dCAgIHwgICAgNiArKwogLi4uL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qtc2hhZG93Q29udGVu
dC5odG1sICAgICAgfCAgIDYyICsrKysrKysrKysrKysrKysrKysrCiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcyAgICB8ICAgMzIgKysrKysrKysrKy0KIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NCAr
KysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCAgICAgICAgICAg
ICAgICAgICAgfCAgICA1ICstCiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCAgICAgICAg
ICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcCAgICAgICAgICAgICAgIHwgICAgNiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuY3BwICAgICAgICAgfCAgIDE0ICsrKystCiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5oICAgICAgICAgICB8ICAgIDcgKystCiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgICAgICAgICAgIHwgICAgNiArLQogU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwICAgICAgICAgICAgICAgfCAgICA0ICst
CiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oICAgICAgICAgICAgICAgICB8ICAg
IDIgKy0KIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCAgICAgICAgICAgICAg
IHwgICAgMiArLQogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciAgICAgICAgICAgICAg
ICAgICAgfCAgICAyICstCiAxNyBmaWxlcyBjaGFuZ2VkLCAyMDUgaW5zZXJ0aW9ucygrKSwgMTkg
ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9k
ZXNGcm9tUmVjdC1zaGFkb3dDb250ZW50LWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0
IExheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qtc2hhZG93Q29udGVudC5odG1sCgpk
aWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDA3YjIwNDAuLjFhZGQ0MmEg
MTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxMi0wMy0xNCAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgorCisgICAgICAgIEV4
dGVuZCBIaXRUZXN0UmVzdWx0IHRvIHN1cHBvcnQgbm90ICJkaXNjYXJkaW5nIiBzaGFkb3cgY29u
dGVudCBpbiBmYXZvciBvZiBpdHMgRE9NIGFuY2VzdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDg0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9ydGluZyBJbnRlcm5hbHM6Om5vZGVzRnJvbVJl
Y3Qgc3ltYm9scyBmb3IgdGhlIEd0ayBidWlsZC4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTItMDMtMTAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgSW5jcmVtZW50IHRoZSBwZXJmLW8tbWF0aWMgYXBwIHZlcnNp
b24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZjhhNjA4Ny4uZjgzNjk3YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEy
LTAzLTE0ICBBbnRvbmlvIEdvbWVzICA8YWdvbWVzQHJpbS5jb20+CisKKyAgICAgICAgRXh0ZW5k
IEhpdFRlc3RSZXN1bHQgdG8gc3VwcG9ydCBub3QgImRpc2NhcmRpbmciIHNoYWRvdyBjb250ZW50
IGluIGZhdm9yIG9mIGl0cyBET00gYW5jZXN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTgwODQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIHRlc3QgdGhhdCByZWN0LWhpdHRlc3QncyBhIGVs
ZW1lbnQga25vd24gdG8gaGF2ZSBhIHNoYWRvdworICAgICAgICB0cmVlICg8dmlkZW8+IHdpdGgg
YnVpbHQtaW4gY29udHJvbHMpLCBhbmQgY2hlY2sgaWYgaXRzIHJldHVybiB0eXBlCisgICAgICAg
IGNvbnRhaW5zIGl0cyBjbGlja2FibGUgc2hhZG93IG5vZGVzLgorCisgICAgICAgICogZmFzdC9k
b20vbm9kZXNGcm9tUmVjdC1zaGFkb3dDb250ZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1zaGFkb3dDb250ZW50Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL3Jlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzOgorICAgICAgICAo
Y2hlY2spOgorICAgICAgICAoY2hlY2tTaGFkb3dDb250ZW50KToKKwogMjAxMi0wMy0xMiAgQW50
b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgogCiAgICAgICAgIENvbnZlcnQgbm9kZXNGcm9t
UmVjdCB0ZXN0cyB0byB1c2UgSW50ZXJuYWxzIGludGVyZmFjZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1zaGFkb3dDb250ZW50LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qtc2hhZG93Q29udGVudC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY2MjgyZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qtc2hhZG93Q29u
dGVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitQQVNTIEFsbCBjb3JyZWN0IG5vZGVz
IGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitU
aGlzIHRlc3Qgb25seSBydW5zIGluIERSVCEKKworRVhQRUNURUQgKHZpZGVvLmNvbnRyb2xzICE9
ICdudWxsJykgT0sKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9t
UmVjdC1zaGFkb3dDb250ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21S
ZWN0LXNoYWRvd0NvbnRlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5jNTE5MmIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNG
cm9tUmVjdC1zaGFkb3dDb250ZW50Lmh0bWwKQEAgLTAsMCArMSw2MiBAQAorPGh0bWw+Cis8aGVh
ZD4KKyAgPHRpdGxlPkRvY3VtZW50Ojpub2Rlc0Zyb21SZWN0IHNoYWRvdyBjb250ZW50IGFjY2Vz
cyAtIGJ1ZyA4MDg0NyA8L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJz
Y3JlZW4iPgorICAgIHZpZGVvIHsKKyAgICAgIG1hcmdpbjogNTBweDsKKyAgICB9CisgIDwvc3R5
bGU+CisgIDxzY3JpcHQgc3JjPS4uLy4uL21lZGlhL21lZGlhLWZpbGUuanM+PC9zY3JpcHQ+Cisg
IDxzY3JpcHQgc3JjPS4uLy4uL21lZGlhL21lZGlhLWNvbnRyb2xzLmpzPjwvc2NyaXB0PgorICA8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzIj48L3NjcmlwdD4KKyAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICBmdW5jdGlv
biBydW5UZXN0KCkKKyAgICB7CisgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgfQorCisgICAgICB2
YXIgZSA9IHt9OworCisgICAgICAvLyBTZXQgdXAgc2hvcnRjdXQgYWNjZXNzIHRvIGVsZW1lbnRz
CisgICAgICBlWydodG1sJ10gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIp
WzBdOworICAgICAgWyd2MScsICdib2R5J10uZm9yRWFjaChmdW5jdGlvbihhKSB7CisgICAgICAg
IGVbYV0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKTsKKyAgICAgIH0pOworCisgICAgICB3
aW5kb3cuc2Nyb2xsVG8oMCwgMCk7CisKKyAgICAgIHZhciBwbGF5Q29vcmRzOworICAgICAgdHJ5
IHsKKyAgICAgICAgICBwbGF5Q29vcmRzID0gbWVkaWFDb250cm9sc0J1dHRvbkNvb3JkaW5hdGVz
KHZpZGVvLCAicGxheS1idXR0b24iKTsKKyAgICAgIH0gY2F0Y2ggKGV4Y2VwdGlvbikgeworICAg
ICAgICAgIGZhaWxUZXN0KGV4Y2VwdGlvbi5kZXNjcmlwdGlvbik7CisgICAgICAgICAgcmV0dXJu
OworICAgICAgfQorICAgICAgdmFyIGNsaWNrWCA9IHBsYXlDb29yZHNbMF07CisgICAgICB2YXIg
Y2xpY2tZID0gcGxheUNvb3Jkc1sxXTsKKworICAgICAgY2hlY2soY2xpY2tYLCBjbGlja1ksIDEw
LCAxMCwgMjAsIDIwLCBbZS52MSwgZS5ib2R5XSk7CisKKyAgICAgIHZhciBzaGFkb3cgPVsnLXdl
YmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZS1jb250YWluZXInLCAnLXdlYmtpdC1tZWRpYS1j
b250cm9scy1wbGF5LWJ1dHRvbicsICctd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsJywgJy13
ZWJraXQtbWVkaWEtY29udHJvbHMnXTsKKyAgICAgIGNoZWNrU2hhZG93Q29udGVudChjbGlja1gs
IGNsaWNrWSwgMTAsIDEwLCAyMCwgMjAsIHNoYWRvdyk7CisKKyAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cub25sb2FkID0gcnVuVGVzdDsKKyAgPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+CisgICAgPHZpZGVvIGlkPSJ2MSIgY29udHJvbHM+
PC92aWRlbz4KKyAgICA8cD5UaGlzIHRlc3Qgb25seSBydW5zIGluIERSVCE8L3A+CisgICAgPHNj
cmlwdCBzcmM9Li4vLi4vbWVkaWEvdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICA8c2NyaXB0
PgorICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmNvbnRyb2xzIiwgbnVsbCwgJyE9Jyk7Cisg
ICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIp
OworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vcmVzb3VyY2VzL25vZGVzRnJvbVJlY3QuanMgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcwppbmRleCAwNDg5NjQxLi4yZTgzYTc1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5q
cworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcwpA
QCAtMTEsNyArMTEsNyBAQCBmdW5jdGlvbiBjaGVjayh4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBh
ZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBsaXN0LAogICBpZiAoIWRvYykKICAg
ICBkb2MgPSBkb2N1bWVudDsKIAotICB2YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9tUmVj
dChkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVm
dFBhZGRpbmcsIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8pOworICB2YXIgbm9kZXMgPSBpbnRl
cm5hbHMubm9kZXNGcm9tUmVjdChkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywg
Ym90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8sIGZh
bHNlIC8qIGFsbG93IHNoYWRvdyBjb250ZW50ICovKTsKICAgaWYgKCFub2RlcykKICAgICByZXR1
cm47CiAKQEAgLTM3LDYgKzM3LDM2IEBAIGZ1bmN0aW9uIGNoZWNrKHgsIHksIHRvcFBhZGRpbmcs
IHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGxpc3QsCiAgIHRlc3RQ
YXNzZWQoIkFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0Iik7CiB9CiAKK2Z1bmN0aW9u
IGNoZWNrU2hhZG93Q29udGVudCh4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRv
bVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBzaGFkb3dDb250ZW50LCBkb2MpCit7CisgIGlmICghd2lu
ZG93LmludGVybmFscykKKyAgICByZXR1cm47CisKKyAgaWYgKCFkb2MpCisgICAgZG9jID0gZG9j
dW1lbnQ7CisKKyAgdmFyIG5vZGVzID0gaW50ZXJuYWxzLm5vZGVzRnJvbVJlY3QoZG9jLCB4LCB5
LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCB0
cnVlIC8qIGlnbm9yZUNsaXBwaW5nICovLCB0cnVlIC8qIGFsbG93U2hhZG93Q29udGVudCAqLyk7
CisgIGlmICghbm9kZXMpCisgICAgcmV0dXJuOworCisgIGZvciAodmFyIGogPSAwOyBqIDwgc2hh
ZG93Q29udGVudC5sZW5ndGg7IGorKykgeworICAgIHZhciBmb3VuZCA9IGZhbHNlOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgIGlmIChpbnRlcm5h
bHMuc2hhZG93UHNldWRvSWQobm9kZXNbaV0pID09IHNoYWRvd0NvbnRlbnRbal0pIHsKKyAgICAg
ICAgICBmb3VuZCA9IHRydWU7CisgICAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorCisg
ICAgaWYgKCFmb3VuZCkgeworICAgICAgdGVzdEZhaWxlZCgiUHNldWRvIElkIG5vdCBmb3VuZDog
IiArIHNoYWRvd0NvbnRlbnRbal0pOworICAgICAgcmV0dXJuOworICAgIH0KKyAgfQorCisgIHRl
c3RQYXNzZWQoIkFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0Iik7Cit9CisKIGZ1bmN0
aW9uIGdldENlbnRlckZvcihlbGVtZW50KQogewogICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2JlNGI1ZC4uZDI5ZmZjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTAzLTE0ICBBbnRvbmlvIEdvbWVzICA8YWdvbWVz
QHJpbS5jb20+CisKKyAgICAgICAgRXh0ZW5kIEhpdFRlc3RSZXN1bHQgdG8gc3VwcG9ydCBub3Qg
ImRpc2NhcmRpbmciIHNoYWRvdyBjb250ZW50IGluIGZhdm9yIG9mIGl0cyBET00gYW5jZXN0b3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwODQ3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb3JkZXIg
dG8gaW1wcm92ZSB0b3VjaCBwcmVjaXNpb24gb24gc2hhZG93IHRyZWUgY29udGVudCwgcGF0Y2gK
KyAgICAgICAgZXh0ZW5kcyB0aGUgcmVjdC1oaXR0ZXN0J2luZyBzeXN0ZW0gdG8gYWxsb3cgc2hh
ZG93IGNvbnRlbnQKKyAgICAgICAgdG8gYmUgc3RvcmVkIGFzIHRoZSByZWN0LWhpdHRlc3QgcmVz
dWx0IG5vZGUgbGlzdC4KKworICAgICAgICBQcmltYXJ5IHVzZSBjYXNlcyBhcmUgZm9yIHRoaXMg
ZXh0ZW5zaW9uIGlzIG1ha2luZyBpdCBlYXNpZXIgdG8KKyAgICAgICAgaW1wcm92ZSB0aGUgY2xp
Y2thYmlsaXR5IG9mIGRlZmF1bHQgY29udHJvbHMgb2YgPHZpZGVvPiBhbmQgPGF1ZGlvPgorICAg
ICAgICBlbGVtZW50cy4KKworICAgICAgICBGb3IgdGhlIGNhbGxlZSBzaXRlLCB0aGUgdXNlIGlz
IHNpbXBsZTogaWYgc2hhZG93IGNvbnRlbnQgaW4gdGhlIHJlY3QtaGl0dGVzdAorICAgICAgICBy
ZXN1bHQgaXMgZGVzaXJlZCwganVzdCBhZGQgYW4gZXh0cmEgJ0FsbG93U2hhZG93Q29udGVudCcg
cGFyYW1ldGVyIGF0IHRoZSBjcmVhdGlvbgorICAgICAgICBvZiB0aGUgSGl0VGVzdFJlc3VsdCBv
YmplY3QuCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1zaGFkb3dDb250
ZW50Lmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6Cisg
ICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0OjphZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAoSGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJD
b3JlOjpIaXRUZXN0UmVzdWx0OjpzaGFkb3dDb250ZW50RmlsdGVyUG9saWN5KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1h
Z2U6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdExpc3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bm9kZXNGcm9tUmVjdCk6
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVybmFscyk6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDEyLTAzLTEyICBBbnRvbmlvIEdv
bWVzICA8YWdvbWVzQHJpbS5jb20+CiAKICAgICAgICAgQ29udmVydCBub2Rlc0Zyb21SZWN0IHRl
c3RzIHRvIHVzZSBJbnRlcm5hbHMgaW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCA4MDlmOTkwLi5jOGIxYzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTExOTgsNyAr
MTE5OCw3IEBAIFN0cmluZyBEb2N1bWVudDo6c3VnZ2VzdGVkTUlNRVR5cGUoKSBjb25zdAogLy8g
KiBtYWtpbmcgaXQgcmVjZWl2ZSBhIHJlY3QgYXMgcGFyYW1ldGVyLCBpLmUuIG5vZGVzRnJvbVJl
Y3QoeCwgeSwgdywgaCk7CiAvLyAqIG1ha2luZyBpdCByZWNlaXZlIHRoZSBleHBhZGluZyBzaXpl
IG9mIGVhY2ggZGlyZWN0aW9uIHNlcGFyYXRlbHksCiAvLyAgIGkuZS4gbm9kZXNGcm9tUmVjdCh4
LCB5LCB0b3BTaXplLCByaWdodFNpemUsIGJvdHRvbVNpemUsIGxlZnRTaXplKTsKLVBhc3NSZWZQ
dHI8Tm9kZUxpc3Q+IERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2Vu
dGVyWSwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25l
ZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGlu
ZykgY29uc3QKK1Bhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KGlu
dCBjZW50ZXJYLCBpbnQgY2VudGVyWSwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmln
aHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywg
Ym9vbCBpZ25vcmVDbGlwcGluZywgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQpIGNvbnN0CiB7CiAg
ICAgLy8gRklYTUU6IFNoYXJlIGNvZGUgYmV0d2VlbiB0aGlzLCBlbGVtZW50RnJvbVBvaW50IGFu
ZCBjYXJldFJhbmdlRnJvbVBvaW50LgogICAgIGlmICghcmVuZGVyZXIoKSkKQEAgLTEyMzAsNyAr
MTIzMCw4IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KGlu
dCBjZW50ZXJYLCBpbnQgY2VudGVyWSwgdW5zaWduZWQKICAgICAgICAgcmV0dXJuIGhhbmRsZVpl
cm9QYWRkaW5nKHJlcXVlc3QsIHJlc3VsdCk7CiAgICAgfQogCi0gICAgSGl0VGVzdFJlc3VsdCBy
ZXN1bHQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVm
dFBhZGRpbmcpOworICAgIGVudW0gU2hhZG93Q29udGVudEZpbHRlclBvbGljeSBzaGFkb3dDb250
ZW50RmlsdGVyUG9saWN5ID0gYWxsb3dTaGFkb3dDb250ZW50ID8gQWxsb3dTaGFkb3dDb250ZW50
IDogRG9Ob3RBbGxvd1NoYWRvd0NvbnRlbnQ7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9p
bnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcs
IHNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kpOwogICAgIHJlbmRlclZpZXcoKS0+bGF5ZXIoKS0+
aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogCiAgICAgcmV0dXJuIFN0YXRpY0hhc2hTZXROb2Rl
TGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCmluZGV4IDFlMzA1ZDQuLmU0ZDQ3NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zNjgs
NyArMzY4LDcgQEAgcHVibGljOgogICAgICAqICAgICAgICBJZiBmYWxzZSwgdGhpcyBtZXRob2Qg
cmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIG9mIHRoZSB2aWV3cG9ydC4KICAg
ICAgKi8KICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJY
LCBpbnQgY2VudGVyWSwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5n
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYm90dG9t
UGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcpIGNvbnN0
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYm90dG9t
UGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wg
YWxsb3dTaGFkb3dDb250ZW50KSBjb25zdDsKICAgICBFbGVtZW50KiBlbGVtZW50RnJvbVBvaW50
KGludCB4LCBpbnQgeSkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gY2FyZXRSYW5nZUZy
b21Qb2ludChpbnQgeCwgaW50IHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggMTczOGRiOC4uMDFlZmI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cApAQCAtMTAzNSw3ICsxMDM1LDkgQEAgRHJhZ1NvdXJjZUFjdGlvbiBFdmVudEhhbmRsZXI6OnVw
ZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZCgpIGNvbnN0CiAgICAgCiBIaXRUZXN0UmVzdWx0
IEV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBv
aW50LCBib29sIGFsbG93U2hhZG93Q29udGVudCwgYm9vbCBpZ25vcmVDbGlwcGluZywgSGl0VGVz
dFNjcm9sbGJhcnMgdGVzdFNjcm9sbGJhcnMsIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVz
dFR5cGUgaGl0VHlwZSwgY29uc3QgTGF5b3V0U2l6ZSYgcGFkZGluZykKIHsKLSAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdChwb2ludCwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpLCBw
YWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRoKCkpOworICAgIGVudW0gU2hhZG93Q29udGVu
dEZpbHRlclBvbGljeSBzaGFkb3dDb250ZW50RmlsdGVyUG9saWN5ID0gYWxsb3dTaGFkb3dDb250
ZW50ID8gQWxsb3dTaGFkb3dDb250ZW50IDogRG9Ob3RBbGxvd1NoYWRvd0NvbnRlbnQ7CisgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQsIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lk
dGgoKSwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpLCBzaGFkb3dDb250ZW50Rmls
dGVyUG9saWN5KTsKKwogICAgIGlmICghbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgaWYgKGlnbm9yZUNsaXBwaW5nKQpAQCAtMTA1Niw3ICsx
MDU4LDcgQEAgSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50
KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgYm9vbAogICAgICAgICBGcmFtZVZpZXcqIHZpZXcg
PSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPih3aWRnZXQpOwogICAgICAgICBMYXlvdXRQb2ludCB3
aWRnZXRQb2ludChyZXN1bHQubG9jYWxQb2ludCgpLngoKSArIHZpZXctPnNjcm9sbFgoKSAtIHJl
bmRlcldpZGdldC0+Ym9yZGVyTGVmdCgpIC0gcmVuZGVyV2lkZ2V0LT5wYWRkaW5nTGVmdCgpLCAK
ICAgICAgICAgICAgIHJlc3VsdC5sb2NhbFBvaW50KCkueSgpICsgdmlldy0+c2Nyb2xsWSgpIC0g
cmVuZGVyV2lkZ2V0LT5ib3JkZXJUb3AoKSAtIHJlbmRlcldpZGdldC0+cGFkZGluZ1RvcCgpKTsK
LSAgICAgICAgSGl0VGVzdFJlc3VsdCB3aWRnZXRIaXRUZXN0UmVzdWx0KHdpZGdldFBvaW50LCBw
YWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRoKCksIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRp
bmcud2lkdGgoKSk7CisgICAgICAgIEhpdFRlc3RSZXN1bHQgd2lkZ2V0SGl0VGVzdFJlc3VsdCh3
aWRnZXRQb2ludCwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpLCBwYWRkaW5nLmhl
aWdodCgpLCBwYWRkaW5nLndpZHRoKCksIHNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kpOwogICAg
ICAgICBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmxheWVyKCktPmhpdFRlc3QoSGl0VGVzdFJl
cXVlc3QoaGl0VHlwZSksIHdpZGdldEhpdFRlc3RSZXN1bHQpOwogICAgICAgICByZXN1bHQgPSB3
aWRnZXRIaXRUZXN0UmVzdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJl
c3VsdC5jcHAKaW5kZXggZGM5ODdjOC4uNzRmMGFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtNTQsNiArNTQsNyBAQCBIaXRUZXN0UmVzdWx0OjpI
aXRUZXN0UmVzdWx0KCkKICAgICAsIG1fcmlnaHRQYWRkaW5nKDApCiAgICAgLCBtX2JvdHRvbVBh
ZGRpbmcoMCkKICAgICAsIG1fbGVmdFBhZGRpbmcoMCkKKyAgICAsIG1fc2hhZG93Q29udGVudEZp
bHRlclBvbGljeShEb05vdEFsbG93U2hhZG93Q29udGVudCkKICAgICAsIG1fcmVnaW9uKDApCiB7
CiB9CkBAIC02NiwxNyArNjcsMTkgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25z
dCBMYXlvdXRQb2ludCYgcG9pbnQpCiAgICAgLCBtX3JpZ2h0UGFkZGluZygwKQogICAgICwgbV9i
b3R0b21QYWRkaW5nKDApCiAgICAgLCBtX2xlZnRQYWRkaW5nKDApCisgICAgLCBtX3NoYWRvd0Nv
bnRlbnRGaWx0ZXJQb2xpY3koRG9Ob3RBbGxvd1NoYWRvd0NvbnRlbnQpCiAgICAgLCBtX3JlZ2lv
bigwKQogewogfQogCi1IaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBv
aW50JiBjZW50ZXJQb2ludCwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRk
aW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZykKK0hpdFRl
c3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0UG9pbnQmIGNlbnRlclBvaW50LCB1
bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRv
bVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBTaGFkb3dDb250ZW50RmlsdGVyUG9saWN5
IGFsbG93U2hhZG93Q29udGVudCkKICAgICA6IG1fcG9pbnQoY2VudGVyUG9pbnQpCiAgICAgLCBt
X2lzT3ZlcldpZGdldChmYWxzZSkKICAgICAsIG1fdG9wUGFkZGluZyh0b3BQYWRkaW5nKQogICAg
ICwgbV9yaWdodFBhZGRpbmcocmlnaHRQYWRkaW5nKQogICAgICwgbV9ib3R0b21QYWRkaW5nKGJv
dHRvbVBhZGRpbmcpCiAgICAgLCBtX2xlZnRQYWRkaW5nKGxlZnRQYWRkaW5nKQorICAgICwgbV9z
aGFkb3dDb250ZW50RmlsdGVyUG9saWN5KGFsbG93U2hhZG93Q29udGVudCkKICAgICAsIG1fcmVn
aW9uKDApCiB7CiAgICAgLy8gSWYgYWxsIHBhZGRpbmcgdmFsdWVzIHBhc3NlZCBpbiBhcmUgemVy
byB0aGVuIGl0IGlzIG5vdCBhIHJlY3QgYmFzZWQgaGl0IHRlc3QuCkBAIC05NSw2ICs5OCw3IEBA
IEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIp
CiAgICAgLCBtX2lubmVyVVJMRWxlbWVudChvdGhlci5VUkxFbGVtZW50KCkpCiAgICAgLCBtX3Nj
cm9sbGJhcihvdGhlci5zY3JvbGxiYXIoKSkKICAgICAsIG1faXNPdmVyV2lkZ2V0KG90aGVyLmlz
T3ZlcldpZGdldCgpKQorICAgICwgbV9zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5KG90aGVyLnNo
YWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3koKSkKICAgICAsIG1fcmVnaW9uKG90aGVyLnJlZ2lvbigp
KQogewogICAgIC8vIE9ubHkgY29weSB0aGUgcGFkZGluZyBhbmQgTm9kZVNldCBpbiBjYXNlIG9m
IHJlY3QgaGl0IHRlc3QuCkBAIC01NzIsNyArNTc2LDkgQEAgYm9vbCBIaXRUZXN0UmVzdWx0Ojph
ZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KE5vZGUqIG5vZGUsIGNvbnN0IExheW91dFBvaW50
JgogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBub2RlID0gbm9k
ZS0+c2hhZG93QW5jZXN0b3JOb2RlKCk7CisgICAgaWYgKG1fc2hhZG93Q29udGVudEZpbHRlclBv
bGljeSA9PSBEb05vdEFsbG93U2hhZG93Q29udGVudCkKKyAgICAgICAgbm9kZSA9IG5vZGUtPnNo
YWRvd0FuY2VzdG9yTm9kZSgpOworCiAgICAgbXV0YWJsZVJlY3RCYXNlZFRlc3RSZXN1bHQoKS5h
ZGQobm9kZSk7CiAKICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKS0+aXNJbmxpbmUoKSkgewpAQCAt
NjAzLDcgKzYwOSw5IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6YWRkTm9kZVRvUmVjdEJhc2VkVGVz
dFJlc3VsdChOb2RlKiBub2RlLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICBpZiAoIW5vZGUpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgbm9kZSA9IG5vZGUtPnNoYWRvd0FuY2VzdG9yTm9k
ZSgpOworICAgIGlmIChtX3NoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgPT0gRG9Ob3RBbGxvd1No
YWRvd0NvbnRlbnQpCisgICAgICAgIG5vZGUgPSBub2RlLT5zaGFkb3dBbmNlc3Rvck5vZGUoKTsK
KwogICAgIG11dGFibGVSZWN0QmFzZWRUZXN0UmVzdWx0KCkuYWRkKG5vZGUpOwogCiAgICAgaWYg
KG5vZGUtPnJlbmRlcmVyKCktPmlzSW5saW5lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5oCmluZGV4IDE1MjI3OGMuLjA2MmMxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtNDIsNiArNDIsOCBAQCBjbGFzcyBOb2RlOwog
Y2xhc3MgUmVuZGVyUmVnaW9uOwogY2xhc3MgU2Nyb2xsYmFyOwogCitlbnVtIFNoYWRvd0NvbnRl
bnRGaWx0ZXJQb2xpY3kgeyBEb05vdEFsbG93U2hhZG93Q29udGVudCwgQWxsb3dTaGFkb3dDb250
ZW50IH07CisKIGNsYXNzIEhpdFRlc3RSZXN1bHQgewogcHVibGljOgogICAgIHR5cGVkZWYgTGlz
dEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4gTm9kZVNldDsKQEAgLTQ5LDcgKzUxLDcgQEAgcHVibGlj
OgogICAgIEhpdFRlc3RSZXN1bHQoKTsKICAgICBIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBv
aW50Jik7CiAgICAgLy8gUGFzcyBub24tbmVnYXRpdmUgcGFkZGluZyB2YWx1ZXMgdG8gcGVyZm9y
bSBhIHJlY3QtYmFzZWQgaGl0IHRlc3QuCi0gICAgSGl0VGVzdFJlc3VsdChjb25zdCBMYXlvdXRQ
b2ludCYgY2VudGVyUG9pbnQsIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFk
ZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcpOworICAg
IEhpdFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0UG9pbnQmIGNlbnRlclBvaW50LCB1bnNpZ25lZCB0
b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcs
IHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBTaGFkb3dDb250ZW50RmlsdGVyUG9saWN5KTsKICAgICBI
aXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmKTsKICAgICB+SGl0VGVzdFJlc3VsdCgp
OwogICAgIEhpdFRlc3RSZXN1bHQmIG9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0Jik7CkBA
IC02OCw2ICs3MCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VG9Ob25TaGFkb3dBbmNlc3Rv
cigpOwogCisgICAgU2hhZG93Q29udGVudEZpbHRlclBvbGljeSBzaGFkb3dDb250ZW50RmlsdGVy
UG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5OyB9CisK
ICAgICB2b2lkIHNldElubmVyTm9kZShOb2RlKik7CiAgICAgdm9pZCBzZXRJbm5lck5vblNoYXJl
ZE5vZGUoTm9kZSopOwogICAgIHZvaWQgc2V0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHApIHsg
bV9wb2ludCA9IHA7IH0KQEAgLTE0Niw2ICsxNTAsNyBAQCBwcml2YXRlOgogICAgIGludCBtX3Jp
Z2h0UGFkZGluZzsKICAgICBpbnQgbV9ib3R0b21QYWRkaW5nOwogICAgIGludCBtX2xlZnRQYWRk
aW5nOworICAgIFNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgbV9zaGFkb3dDb250ZW50RmlsdGVy
UG9saWN5OwogICAgIAogICAgIFJlbmRlclJlZ2lvbiogbV9yZWdpb247IC8vIFRoZSByZWdpb24g
d2UncmUgaW5zaWRlLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApp
bmRleCA2NDA2ZjZmLi4wZTlhZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAKQEAgLTQ2OSw3ICs0NjksNyBAQCBIVE1MTWFwRWxlbWVudCogUmVuZGVySW1hZ2U6
OmltYWdlTWFwKCkgY29uc3QKIAogYm9vbCBSZW5kZXJJbWFnZTo6bm9kZUF0UG9pbnQoY29uc3Qg
SGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgTGF5
b3V0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRl
ZE9mZnNldCwgSGl0VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9uKQogewotICAgIEhpdFRlc3RSZXN1
bHQgdGVtcFJlc3VsdChyZXN1bHQucG9pbnQoKSwgcmVzdWx0LnRvcFBhZGRpbmcoKSwgcmVzdWx0
LnJpZ2h0UGFkZGluZygpLCByZXN1bHQuYm90dG9tUGFkZGluZygpLCByZXN1bHQubGVmdFBhZGRp
bmcoKSk7CisgICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1
bHQudG9wUGFkZGluZygpLCByZXN1bHQucmlnaHRQYWRkaW5nKCksIHJlc3VsdC5ib3R0b21QYWRk
aW5nKCksIHJlc3VsdC5sZWZ0UGFkZGluZygpLCByZXN1bHQuc2hhZG93Q29udGVudEZpbHRlclBv
bGljeSgpKTsKICAgICBib29sIGluc2lkZSA9IFJlbmRlclJlcGxhY2VkOjpub2RlQXRQb2ludChy
ZXF1ZXN0LCB0ZW1wUmVzdWx0LCBwb2ludEluQ29udGFpbmVyLCBhY2N1bXVsYXRlZE9mZnNldCwg
aGl0VGVzdEFjdGlvbik7CiAKICAgICBpZiAodGVtcFJlc3VsdC5pbm5lck5vZGUoKSAmJiBub2Rl
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDZlNWRh
ODcuLjgwZWM5ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApA
QCAtMzM4MSw3ICszMzgxLDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGF5
ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnQKICAgICAvLyBOZXh0
IHdlIHdhbnQgdG8gc2VlIGlmIHRoZSBtb3VzZSBwb3MgaXMgaW5zaWRlIHRoZSBjaGlsZCBSZW5k
ZXJPYmplY3RzIG9mIHRoZSBsYXllci4KICAgICBpZiAoZmdSZWN0LmludGVyc2VjdHMoaGl0VGVz
dEFyZWEpICYmIGlzU2VsZlBhaW50aW5nTGF5ZXIoKSkgewogICAgICAgICAvLyBIaXQgdGVzdCB3
aXRoIGEgdGVtcG9yYXJ5IEhpdFRlc3RSZXN1bHQsIGJlY2F1c2Ugd2Ugb25seSB3YW50IHRvIGNv
bW1pdCB0byAncmVzdWx0JyBpZiB3ZSBrbm93IHdlJ3JlIGZyb250bW9zdC4KLSAgICAgICAgSGl0
VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQudG9wUGFkZGluZygp
LCByZXN1bHQucmlnaHRQYWRkaW5nKCksIHJlc3VsdC5ib3R0b21QYWRkaW5nKCksIHJlc3VsdC5s
ZWZ0UGFkZGluZygpKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5w
b2ludCgpLCByZXN1bHQudG9wUGFkZGluZygpLCByZXN1bHQucmlnaHRQYWRkaW5nKCksIHJlc3Vs
dC5ib3R0b21QYWRkaW5nKCksIHJlc3VsdC5sZWZ0UGFkZGluZygpLCByZXN1bHQuc2hhZG93Q29u
dGVudEZpbHRlclBvbGljeSgpKTsKICAgICAgICAgaWYgKGhpdFRlc3RDb250ZW50cyhyZXF1ZXN0
LCB0ZW1wUmVzdWx0LCBsYXllckJvdW5kcywgaGl0VGVzdFBvaW50LCBIaXRUZXN0RGVzY2VuZGFu
dHMpICYmCiAgICAgICAgICAgICBpc0hpdENhbmRpZGF0ZSh0aGlzLCBmYWxzZSwgek9mZnNldEZv
ckNvbnRlbnRzUHRyLCB1bmZsYXR0ZW5lZFRyYW5zZm9ybVN0YXRlLmdldCgpKSkgewogICAgICAg
ICAgICAgaWYgKHJlc3VsdC5pc1JlY3RCYXNlZFRlc3QoKSkKQEAgLTM0MTAsNyArMzQxMCw3IEBA
IFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6aGl0VGVzdExheWVyKFJlbmRlckxheWVyKiByb290
TGF5ZXIsIFJlbmRlckxheWVyKiBjb250CiAgICAgICAgIHJldHVybiBjYW5kaWRhdGVMYXllcjsK
IAogICAgIGlmIChiZ1JlY3QuaW50ZXJzZWN0cyhoaXRUZXN0QXJlYSkgJiYgaXNTZWxmUGFpbnRp
bmdMYXllcigpKSB7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQgdGVtcFJlc3VsdChyZXN1bHQucG9p
bnQoKSwgcmVzdWx0LnRvcFBhZGRpbmcoKSwgcmVzdWx0LnJpZ2h0UGFkZGluZygpLCByZXN1bHQu
Ym90dG9tUGFkZGluZygpLCByZXN1bHQubGVmdFBhZGRpbmcoKSk7CisgICAgICAgIEhpdFRlc3RS
ZXN1bHQgdGVtcFJlc3VsdChyZXN1bHQucG9pbnQoKSwgcmVzdWx0LnRvcFBhZGRpbmcoKSwgcmVz
dWx0LnJpZ2h0UGFkZGluZygpLCByZXN1bHQuYm90dG9tUGFkZGluZygpLCByZXN1bHQubGVmdFBh
ZGRpbmcoKSwgcmVzdWx0LnNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3koKSk7CiAgICAgICAgIGlm
IChoaXRUZXN0Q29udGVudHMocmVxdWVzdCwgdGVtcFJlc3VsdCwgbGF5ZXJCb3VuZHMsIGhpdFRl
c3RQb2ludCwgSGl0VGVzdFNlbGYpICYmCiAgICAgICAgICAgICBpc0hpdENhbmRpZGF0ZSh0aGlz
LCBmYWxzZSwgek9mZnNldEZvckNvbnRlbnRzUHRyLCB1bmZsYXR0ZW5lZFRyYW5zZm9ybVN0YXRl
LmdldCgpKSkgewogICAgICAgICAgICAgaWYgKHJlc3VsdC5pc1JlY3RCYXNlZFRlc3QoKSkKQEAg
LTM0NjYsNyArMzQ2Niw3IEBAIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6aGl0VGVzdExpc3Qo
VmVjdG9yPFJlbmRlckxheWVyKj4qIGxpc3QsIFJlbmRlckxheWVyKiByCiAgICAgZm9yIChpbnQg
aSA9IGxpc3QtPnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgIFJlbmRlckxheWVy
KiBjaGlsZExheWVyID0gbGlzdC0+YXQoaSk7CiAgICAgICAgIFJlbmRlckxheWVyKiBoaXRMYXll
ciA9IDA7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQgdGVtcFJlc3VsdChyZXN1bHQucG9pbnQoKSwg
cmVzdWx0LnRvcFBhZGRpbmcoKSwgcmVzdWx0LnJpZ2h0UGFkZGluZygpLCByZXN1bHQuYm90dG9t
UGFkZGluZygpLCByZXN1bHQubGVmdFBhZGRpbmcoKSk7CisgICAgICAgIEhpdFRlc3RSZXN1bHQg
dGVtcFJlc3VsdChyZXN1bHQucG9pbnQoKSwgcmVzdWx0LnRvcFBhZGRpbmcoKSwgcmVzdWx0LnJp
Z2h0UGFkZGluZygpLCByZXN1bHQuYm90dG9tUGFkZGluZygpLCByZXN1bHQubGVmdFBhZGRpbmco
KSwgcmVzdWx0LnNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3koKSk7CiAgICAgICAgIGlmIChjaGls
ZExheWVyLT5pc1BhZ2luYXRlZCgpKQogICAgICAgICAgICAgaGl0TGF5ZXIgPSBoaXRUZXN0UGFn
aW5hdGVkQ2hpbGRMYXllcihjaGlsZExheWVyLCByb290TGF5ZXIsIHJlcXVlc3QsIHRlbXBSZXN1
bHQsIGhpdFRlc3RSZWN0LCBoaXRUZXN0UG9pbnQsIHRyYW5zZm9ybVN0YXRlLCB6T2Zmc2V0Rm9y
RGVzY2VuZGFudHMpOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKaW5kZXggNDkyZWJlYi4uM2JkNjdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcApAQCAtNjgzLDE0ICs2ODMsMTQgQEAgdW5zaWduZWQgSW50ZXJuYWxzOjpudW1iZXJPZlNj
cm9sbGFibGVBcmVhcyhEb2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGUKIH0KIAog
UGFzc1JlZlB0cjxOb2RlTGlzdD4gSW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0KERvY3VtZW50KiBk
b2N1bWVudCwgaW50IHgsIGludCB5LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdo
dFBhZGRpbmcsCi0gICAgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRp
bmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAorICAgIHVu
c2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNs
aXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
CiB7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkgfHwgIWRvY3VtZW50
LT5mcmFtZSgpLT52aWV3KCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJldHVybiBkb2N1bWVudC0+bm9kZXNGcm9t
UmVjdCh4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQ
YWRkaW5nLCBpZ25vcmVDbGlwcGluZyk7CisgICAgcmV0dXJuIGRvY3VtZW50LT5ub2Rlc0Zyb21S
ZWN0KHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBh
ZGRpbmcsIGlnbm9yZUNsaXBwaW5nLCBhbGxvd1NoYWRvd0NvbnRlbnQpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBlMDc0MWMwLi5kODkwOWZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgdW5z
aWduZWQgbnVtYmVyT2ZTY3JvbGxhYmxlQXJlYXMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJik7
CiAKICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBub2Rlc0Zyb21SZWN0KERvY3VtZW50KiwgaW50
IHgsIGludCB5LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsCi0g
ICAgICAgIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29s
IGlnbm9yZUNsaXBwaW5nLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgICAgIHVuc2lnbmVk
IGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5n
LCBib29sIGFsbG93U2hhZG93bkNvbnRlbnQsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAogICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBpbnRlcm5hbHNJZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCmluZGV4IGZjZDBhMGQuLjNkYTc3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKQEAgLTEwMSw3ICsxMDEsNyBAQCBtb2R1bGUgd2luZG93IHsKIAogICAgICAg
ICBOb2RlTGlzdCBub2Rlc0Zyb21SZWN0KGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBsb25nIHgs
IGluIGxvbmcgeSwKICAgICAgICAgICAgIGluIHVuc2lnbmVkIGxvbmcgdG9wUGFkZGluZywgaW4g
dW5zaWduZWQgbG9uZyByaWdodFBhZGRpbmcsIGluIHVuc2lnbmVkIGxvbmcgYm90dG9tUGFkZGlu
ZywgaW4gdW5zaWduZWQgbG9uZyBsZWZ0UGFkZGluZywKLSAgICAgICAgICAgIGluIGJvb2xlYW4g
aWdub3JlQ2xpcHBpbmcpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGluIGJv
b2xlYW4gaWdub3JlQ2xpcHBpbmcsIGluIGJvb2xlYW4gYWxsb3dTaGFkb3dDb250ZW50KSByYWlz
ZXMgKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEludGVybmFs
U2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDAz
NDZiM2EuLjFlMjRiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMTAyLDcgKzEwMiw3
IEBAIF9aTjdXZWJDb3JlMjRGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIxNHdpbGxEZXRhY2hQYWdl
RXY7CiBfWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczMxaXNNdWx0aXBsZVNoYWRv
d1N1YnRyZWVzRW5hYmxlZEU7CiBfWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczMy
c2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWRFYjsKIF9aTjdXZWJDb3JlMjJSdW50aW1l
RW5hYmxlZEZlYXR1cmVzMThpc1NoYWRvd0RPTUVuYWJsZWRFOwotX1pOSzdXZWJDb3JlOERvY3Vt
ZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamI7CitfWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVz
RnJvbVJlY3RFaWlqampqYmI7CiBfWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5T
XzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzhOb2RlTGlzdEU7CiBsb2NhbDoKIF9aKjsKLS0gCjEu
Ny41LjQKCg==
</data>
<flag name="commit-queue"
          id="135452"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131981</attachid>
            <date>2012-03-14 20:35:46 -0700</date>
            <delta_ts>2012-04-03 09:56:47 -0700</delta_ts>
            <desc>patch v1.1 - for EWS to build</desc>
            <filename>0001-Extend-HitTestResult-to-support-not-discarding-shado.patch</filename>
            <type>text/plain</type>
            <size>28112</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA0Nzg4NjZhOGZlNjllNjNiY2MxNmRmYjc0NGM1ZTViZGE4OGQxNDJlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
V2VkLCAxNCBNYXIgMjAxMiAyMDowNzo1OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIEV4dGVuZCBI
aXRUZXN0UmVzdWx0IHRvIHN1cHBvcnQgbm90ICJkaXNjYXJkaW5nIiBzaGFkb3cKIGNvbnRlbnQg
aW4gZmF2b3Igb2YgaXRzIERPTSBhbmNlc3RvcgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgwODQ3CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KUGF0Y2ggYnkg
QW50b25pbyBHb21lcyA8YWdvbWVzQHJpbS5jb20+CgouOgoKRXhwb3J0aW5nIEludGVybmFsczo6
bm9kZXNGcm9tUmVjdCBzeW1ib2xzIGZvciB0aGUgR3RrIGJ1aWxkLgoKKiBTb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyOgoKU291cmNlL1dlYkNvcmU6CgpJbiBvcmRlciB0byBpbXByb3Zl
IHRvdWNoIHByZWNpc2lvbiBvbiBzaGFkb3cgdHJlZSBjb250ZW50LCBwYXRjaApleHRlbmRzIHRo
ZSByZWN0LWhpdHRlc3QnaW5nIHN5c3RlbSB0byBhbGxvdyBzaGFkb3cgY29udGVudAp0byBiZSBz
dG9yZWQgYXMgdGhlIHJlY3QtaGl0dGVzdCByZXN1bHQgbm9kZSBsaXN0LgoKUHJpbWFyeSB1c2Ug
Y2FzZXMgYXJlIGZvciB0aGlzIGV4dGVuc2lvbiBpcyBtYWtpbmcgaXQgZWFzaWVyIHRvCmltcHJv
dmUgdGhlIGNsaWNrYWJpbGl0eSBvZiBkZWZhdWx0IGNvbnRyb2xzIG9mIDx2aWRlbz4gYW5kIDxh
dWRpbz4KZWxlbWVudHMuCgpGb3IgdGhlIGNhbGxlZSBzaXRlLCB0aGUgdXNlIGlzIHNpbXBsZTog
aWYgc2hhZG93IGNvbnRlbnQgaW4gdGhlIHJlY3QtaGl0dGVzdApyZXN1bHQgaXMgZGVzaXJlZCwg
anVzdCBhZGQgYW4gZXh0cmEgJ0FsbG93U2hhZG93Q29udGVudCcgcGFyYW1ldGVyIGF0IHRoZSBj
cmVhdGlvbgpvZiB0aGUgSGl0VGVzdFJlc3VsdCBvYmplY3QuCgpUZXN0OiBmYXN0L2RvbS9ub2Rl
c0Zyb21SZWN0LXNoYWRvd0NvbnRlbnQuaHRtbAoKKiBkb20vRG9jdW1lbnQuY3BwOgooV2ViQ29y
ZTo6RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QpOgoqIGRvbS9Eb2N1bWVudC5oOgooRG9jdW1lbnQp
OgoqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGl0VGVz
dFJlc3VsdEF0UG9pbnQpOgoqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKFdlYkNvcmU6
OkhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQpOgooV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6
YWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdCk6CiogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
aDoKKEhpdFRlc3RSZXN1bHQpOgooV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6c2hhZG93Q29udGVu
dEZpbHRlclBvbGljeSk6CiogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKFdlYkNvcmU6OlJl
bmRlckltYWdlOjpub2RlQXRQb2ludCk6CiogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OmhpdFRlc3RMaXN0KToKKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CihXZWJDb3JlOjpJbnRlcm5h
bHM6Om5vZGVzRnJvbVJlY3QpOgoqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CihJbnRlcm5hbHMpOgoq
IHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKCkxheW91dFRlc3RzOgoKQWRkcyBhIHRlc3QgdGhhdCBy
ZWN0LWhpdHRlc3QncyBhIGVsZW1lbnQga25vd24gdG8gaGF2ZSBhIHNoYWRvdwp0cmVlICg8dmlk
ZW8+IHdpdGggYnVpbHQtaW4gY29udHJvbHMpLCBhbmQgY2hlY2sgaWYgaXRzIHJldHVybiB0eXBl
CmNvbnRhaW5zIGl0cyBjbGlja2FibGUgc2hhZG93IG5vZGVzLgoKKiBmYXN0L2RvbS9ub2Rlc0Zy
b21SZWN0LXNoYWRvd0NvbnRlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBmYXN0L2RvbS9ub2Rl
c0Zyb21SZWN0LXNoYWRvd0NvbnRlbnQuaHRtbDogQWRkZWQuCiogZmFzdC9kb20vcmVzb3VyY2Vz
L25vZGVzRnJvbVJlY3QuanM6CihjaGVjayk6CihjaGVja1NoYWRvd0NvbnRlbnQpOgotLS0KIENo
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSAr
KysrCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMTcgKysrKysKIC4uLi9kb20vbm9kZXNGcm9tUmVjdC1zaGFkb3dDb250ZW50LWV4cGVjdGVk
LnR4dCAgIHwgICAgNiArKwogLi4uL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qtc2hhZG93Q29udGVu
dC5odG1sICAgICAgfCAgIDYyICsrKysrKysrKysrKysrKysrKysrCiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcyAgICB8ICAgMzIgKysrKysrKysrKy0KIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NCAr
KysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gICAgICAgICAgICAg
ICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwICAgICAg
ICAgICAgICAgICAgICB8ICAgIDUgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwICAgICAgICAgICAgICAgfCAgICA2ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5jcHAgICAgICAgICB8ICAgMTQgKysrKy0KIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmggICAgICAgICAgIHwgICAgNyArKy0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgICAgICAgICAgIHwgICAgMiArLQogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCAgICAgICAgICAgfCAgICA2ICst
CiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgICAgICAgICAgICAgICB8ICAg
IDQgKy0KIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggICAgICAgICAgICAgICAg
IHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsICAgICAgICAg
ICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgICAgICAg
ICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgICAg
ICAgICAgICAgICAgICAgIHwgICAgMiArLQogMTkgZmlsZXMgY2hhbmdlZCwgMjA3IGluc2VydGlv
bnMoKyksIDIxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zh
c3QvZG9tL25vZGVzRnJvbVJlY3Qtc2hhZG93Q29udGVudC1leHBlY3RlZC50eHQKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LXNoYWRvd0NvbnRl
bnQuaHRtbAoKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA2OTA1NjZi
Li5iOTgwYTcyIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTItMDMtMTQgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KKwor
ICAgICAgICBFeHRlbmQgSGl0VGVzdFJlc3VsdCB0byBzdXBwb3J0IG5vdCAiZGlzY2FyZGluZyIg
c2hhZG93IGNvbnRlbnQgaW4gZmF2b3Igb2YgaXRzIERPTSBhbmNlc3RvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA4NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvcnRpbmcgSW50ZXJuYWxzOjpu
b2Rlc0Zyb21SZWN0IHN5bWJvbHMgZm9yIHRoZSBHdGsgYnVpbGQuCisKKyAgICAgICAgKiBTb3Vy
Y2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDEyLTAzLTE0ICBUaGlhZ28gTWFyY29z
IFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIEVu
YWJsZSBIVE1MNSBTdW1tYXJ5IGFuZCBEZXRhaWxzIGVsZW1lbnRzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTdiODlmYy4u
NTEyNzEyNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAzLTE0ICBBbnRvbmlvIEdvbWVz
ICA8YWdvbWVzQHJpbS5jb20+CisKKyAgICAgICAgRXh0ZW5kIEhpdFRlc3RSZXN1bHQgdG8gc3Vw
cG9ydCBub3QgImRpc2NhcmRpbmciIHNoYWRvdyBjb250ZW50IGluIGZhdm9yIG9mIGl0cyBET00g
YW5jZXN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgwODQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkcyBhIHRlc3QgdGhhdCByZWN0LWhpdHRlc3QncyBhIGVsZW1lbnQga25vd24gdG8gaGF2ZSBh
IHNoYWRvdworICAgICAgICB0cmVlICg8dmlkZW8+IHdpdGggYnVpbHQtaW4gY29udHJvbHMpLCBh
bmQgY2hlY2sgaWYgaXRzIHJldHVybiB0eXBlCisgICAgICAgIGNvbnRhaW5zIGl0cyBjbGlja2Fi
bGUgc2hhZG93IG5vZGVzLgorCisgICAgICAgICogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1zaGFk
b3dDb250ZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vbm9kZXNG
cm9tUmVjdC1zaGFkb3dDb250ZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3Jl
c291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzOgorICAgICAgICAoY2hlY2spOgorICAgICAgICAoY2hl
Y2tTaGFkb3dDb250ZW50KToKKwogMjAxMi0wMy0xMSAgQW50b25pbyBHb21lcyAgPGFnb21lc0By
aW0uY29tPgogCiAgICAgICAgIEJlIG1vcmUgcmVzdHJpY3RpdmUgd2hlbiBhZGRpbmcgU2Nyb2xs
YWJsZUFyZWEncyB0byBGcmFtZVZpZXcncyBTY3JvbGxhYmxlQXJlYSdzIG1hcApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1zaGFkb3dDb250ZW50LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qtc2hhZG93Q29udGVu
dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY2Mjgy
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qt
c2hhZG93Q29udGVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitQQVNTIEFsbCBjb3Jy
ZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZv
ciByZWN0CitUaGlzIHRlc3Qgb25seSBydW5zIGluIERSVCEKKworRVhQRUNURUQgKHZpZGVvLmNv
bnRyb2xzICE9ICdudWxsJykgT0sKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
bm9kZXNGcm9tUmVjdC1zaGFkb3dDb250ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9u
b2Rlc0Zyb21SZWN0LXNoYWRvd0NvbnRlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5jNTE5MmIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vbm9kZXNGcm9tUmVjdC1zaGFkb3dDb250ZW50Lmh0bWwKQEAgLTAsMCArMSw2MiBAQAorPGh0
bWw+Cis8aGVhZD4KKyAgPHRpdGxlPkRvY3VtZW50Ojpub2Rlc0Zyb21SZWN0IHNoYWRvdyBjb250
ZW50IGFjY2VzcyAtIGJ1ZyA4MDg0NyA8L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3Mi
IG1lZGlhPSJzY3JlZW4iPgorICAgIHZpZGVvIHsKKyAgICAgIG1hcmdpbjogNTBweDsKKyAgICB9
CisgIDwvc3R5bGU+CisgIDxzY3JpcHQgc3JjPS4uLy4uL21lZGlhL21lZGlhLWZpbGUuanM+PC9z
Y3JpcHQ+CisgIDxzY3JpcHQgc3JjPS4uLy4uL21lZGlhL21lZGlhLWNvbnRyb2xzLmpzPjwvc2Ny
aXB0PgorICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzIj48L3Njcmlw
dD4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAg
ICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICB7CisgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgfQor
CisgICAgICB2YXIgZSA9IHt9OworCisgICAgICAvLyBTZXQgdXAgc2hvcnRjdXQgYWNjZXNzIHRv
IGVsZW1lbnRzCisgICAgICBlWydodG1sJ10gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgiaHRtbCIpWzBdOworICAgICAgWyd2MScsICdib2R5J10uZm9yRWFjaChmdW5jdGlvbihhKSB7
CisgICAgICAgIGVbYV0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKTsKKyAgICAgIH0pOwor
CisgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7CisKKyAgICAgIHZhciBwbGF5Q29vcmRzOwor
ICAgICAgdHJ5IHsKKyAgICAgICAgICBwbGF5Q29vcmRzID0gbWVkaWFDb250cm9sc0J1dHRvbkNv
b3JkaW5hdGVzKHZpZGVvLCAicGxheS1idXR0b24iKTsKKyAgICAgIH0gY2F0Y2ggKGV4Y2VwdGlv
bikgeworICAgICAgICAgIGZhaWxUZXN0KGV4Y2VwdGlvbi5kZXNjcmlwdGlvbik7CisgICAgICAg
ICAgcmV0dXJuOworICAgICAgfQorICAgICAgdmFyIGNsaWNrWCA9IHBsYXlDb29yZHNbMF07Cisg
ICAgICB2YXIgY2xpY2tZID0gcGxheUNvb3Jkc1sxXTsKKworICAgICAgY2hlY2soY2xpY2tYLCBj
bGlja1ksIDEwLCAxMCwgMjAsIDIwLCBbZS52MSwgZS5ib2R5XSk7CisKKyAgICAgIHZhciBzaGFk
b3cgPVsnLXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZS1jb250YWluZXInLCAnLXdlYmtp
dC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbicsICctd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBh
bmVsJywgJy13ZWJraXQtbWVkaWEtY29udHJvbHMnXTsKKyAgICAgIGNoZWNrU2hhZG93Q29udGVu
dChjbGlja1gsIGNsaWNrWSwgMTAsIDEwLCAyMCwgMjAsIHNoYWRvdyk7CisKKyAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cub25sb2FkID0gcnVuVGVzdDsKKyAg
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+CisgICAgPHZpZGVvIGlkPSJ2MSIg
Y29udHJvbHM+PC92aWRlbz4KKyAgICA8cD5UaGlzIHRlc3Qgb25seSBydW5zIGluIERSVCE8L3A+
CisgICAgPHNjcmlwdCBzcmM9Li4vLi4vbWVkaWEvdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0PgorICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmNvbnRyb2xzIiwgbnVsbCwg
JyE9Jyk7CisgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRl
bnQvdGVzdCIpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL25vZGVzRnJvbVJlY3QuanMgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcwppbmRleCAwNDg5NjQxLi4y
ZTgzYTc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvbm9kZXNG
cm9tUmVjdC5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvbm9kZXNGcm9t
UmVjdC5qcwpAQCAtMTEsNyArMTEsNyBAQCBmdW5jdGlvbiBjaGVjayh4LCB5LCB0b3BQYWRkaW5n
LCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBsaXN0LAogICBpZiAo
IWRvYykKICAgICBkb2MgPSBkb2N1bWVudDsKIAotICB2YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9k
ZXNGcm9tUmVjdChkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFk
ZGluZywgbGVmdFBhZGRpbmcsIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8pOworICB2YXIgbm9k
ZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9tUmVjdChkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0
UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIHRydWUgLyogaWdub3JlQ2xpcHBp
bmcgKi8sIGZhbHNlIC8qIGFsbG93IHNoYWRvdyBjb250ZW50ICovKTsKICAgaWYgKCFub2RlcykK
ICAgICByZXR1cm47CiAKQEAgLTM3LDYgKzM3LDM2IEBAIGZ1bmN0aW9uIGNoZWNrKHgsIHksIHRv
cFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGxpc3Qs
CiAgIHRlc3RQYXNzZWQoIkFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0Iik7CiB9CiAK
K2Z1bmN0aW9uIGNoZWNrU2hhZG93Q29udGVudCh4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRp
bmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBzaGFkb3dDb250ZW50LCBkb2MpCit7Cisg
IGlmICghd2luZG93LmludGVybmFscykKKyAgICByZXR1cm47CisKKyAgaWYgKCFkb2MpCisgICAg
ZG9jID0gZG9jdW1lbnQ7CisKKyAgdmFyIG5vZGVzID0gaW50ZXJuYWxzLm5vZGVzRnJvbVJlY3Qo
ZG9jLCB4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQ
YWRkaW5nLCB0cnVlIC8qIGlnbm9yZUNsaXBwaW5nICovLCB0cnVlIC8qIGFsbG93U2hhZG93Q29u
dGVudCAqLyk7CisgIGlmICghbm9kZXMpCisgICAgcmV0dXJuOworCisgIGZvciAodmFyIGogPSAw
OyBqIDwgc2hhZG93Q29udGVudC5sZW5ndGg7IGorKykgeworICAgIHZhciBmb3VuZCA9IGZhbHNl
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgIGlm
IChpbnRlcm5hbHMuc2hhZG93UHNldWRvSWQobm9kZXNbaV0pID09IHNoYWRvd0NvbnRlbnRbal0p
IHsKKyAgICAgICAgICBmb3VuZCA9IHRydWU7CisgICAgICAgICAgYnJlYWs7CisgICAgICB9Cisg
ICAgfQorCisgICAgaWYgKCFmb3VuZCkgeworICAgICAgdGVzdEZhaWxlZCgiUHNldWRvIElkIG5v
dCBmb3VuZDogIiArIHNoYWRvd0NvbnRlbnRbal0pOworICAgICAgcmV0dXJuOworICAgIH0KKyAg
fQorCisgIHRlc3RQYXNzZWQoIkFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0Iik7Cit9
CisKIGZ1bmN0aW9uIGdldENlbnRlckZvcihlbGVtZW50KQogewogICB2YXIgcmVjdCA9IGVsZW1l
bnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI4Mjc1NS4uNTNmM2Jj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTAzLTE0ICBBbnRvbmlvIEdvbWVz
ICA8YWdvbWVzQHJpbS5jb20+CisKKyAgICAgICAgRXh0ZW5kIEhpdFRlc3RSZXN1bHQgdG8gc3Vw
cG9ydCBub3QgImRpc2NhcmRpbmciIHNoYWRvdyBjb250ZW50IGluIGZhdm9yIG9mIGl0cyBET00g
YW5jZXN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgwODQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW4gb3JkZXIgdG8gaW1wcm92ZSB0b3VjaCBwcmVjaXNpb24gb24gc2hhZG93IHRyZWUgY29udGVu
dCwgcGF0Y2gKKyAgICAgICAgZXh0ZW5kcyB0aGUgcmVjdC1oaXR0ZXN0J2luZyBzeXN0ZW0gdG8g
YWxsb3cgc2hhZG93IGNvbnRlbnQKKyAgICAgICAgdG8gYmUgc3RvcmVkIGFzIHRoZSByZWN0LWhp
dHRlc3QgcmVzdWx0IG5vZGUgbGlzdC4KKworICAgICAgICBQcmltYXJ5IHVzZSBjYXNlcyBhcmUg
Zm9yIHRoaXMgZXh0ZW5zaW9uIGlzIG1ha2luZyBpdCBlYXNpZXIgdG8KKyAgICAgICAgaW1wcm92
ZSB0aGUgY2xpY2thYmlsaXR5IG9mIGRlZmF1bHQgY29udHJvbHMgb2YgPHZpZGVvPiBhbmQgPGF1
ZGlvPgorICAgICAgICBlbGVtZW50cy4KKworICAgICAgICBGb3IgdGhlIGNhbGxlZSBzaXRlLCB0
aGUgdXNlIGlzIHNpbXBsZTogaWYgc2hhZG93IGNvbnRlbnQgaW4gdGhlIHJlY3QtaGl0dGVzdAor
ICAgICAgICByZXN1bHQgaXMgZGVzaXJlZCwganVzdCBhZGQgYW4gZXh0cmEgJ0FsbG93U2hhZG93
Q29udGVudCcgcGFyYW1ldGVyIGF0IHRoZSBjcmVhdGlvbgorICAgICAgICBvZiB0aGUgSGl0VGVz
dFJlc3VsdCBvYmplY3QuCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1z
aGFkb3dDb250ZW50Lmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2lu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpI
aXRUZXN0UmVzdWx0OjphZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAoSGl0VGVzdFJlc3VsdCk6CisgICAg
ICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpzaGFkb3dDb250ZW50RmlsdGVyUG9saWN5KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW1hZ2U6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdExpc3QpOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bm9kZXNG
cm9tUmVjdCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVy
bmFscyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDEyLTAzLTExICBB
bnRvbmlvIEdvbWVzICA8YWdvbWVzQHJpbS5jb20+CiAKICAgICAgICAgQmUgbW9yZSByZXN0cmlj
dGl2ZSB3aGVuIGFkZGluZyBTY3JvbGxhYmxlQXJlYSdzIHRvIEZyYW1lVmlldydzIFNjcm9sbGFi
bGVBcmVhJ3MgbWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDE3MTY5NGEuLjJkNzkyYTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNDYyLDcgKzE0NjIsNyBAQCBfX1pOSzdXZWJDb3JlN1J1
bkxvb3A5VGltZXJCYXNlOGlzQWN0aXZlRXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxMHJlbmRl
clZpZXdFdgogX19aTks3V2ViQ29yZThEb2N1bWVudDExY29tcGxldGVVUkxFUktOM1dURjZTdHJp
bmdFCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTNheE9iamVjdENhY2hlRXYKLV9fWk5LN1dlYkNv
cmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqYgorX19aTks3V2ViQ29yZThEb2N1bWVu
dDEzbm9kZXNGcm9tUmVjdEVpaWpqampiYgogX19aTks3V2ViQ29yZThEb2N1bWVudDE0Z2V0RWxl
bWVudEJ5SWRFUktOM1dURjEyQXRvbWljU3RyaW5nRQogX19aTks3V2ViQ29yZThEb2N1bWVudDE2
ZGFzaGJvYXJkUmVnaW9uc0V2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MzFkaXNwbGF5U3RyaW5n
TW9kaWZpZWRCeUVuY29kaW5nRVJLTjNXVEY2U3RyaW5nRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
aW5kZXggNDY2YWY1NC4uZjNiODVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMTk4
LDcgKzExOTgsNyBAQCBTdHJpbmcgRG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKCkgY29uc3QK
IC8vICogbWFraW5nIGl0IHJlY2VpdmUgYSByZWN0IGFzIHBhcmFtZXRlciwgaS5lLiBub2Rlc0Zy
b21SZWN0KHgsIHksIHcsIGgpOwogLy8gKiBtYWtpbmcgaXQgcmVjZWl2ZSB0aGUgZXhwYWRpbmcg
c2l6ZSBvZiBlYWNoIGRpcmVjdGlvbiBzZXBhcmF0ZWx5LAogLy8gICBpLmUuIG5vZGVzRnJvbVJl
Y3QoeCwgeSwgdG9wU2l6ZSwgcmlnaHRTaXplLCBib3R0b21TaXplLCBsZWZ0U2l6ZSk7Ci1QYXNz
UmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50
IGNlbnRlclksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5z
aWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xp
cHBpbmcpIGNvbnN0CitQYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9kZXNGcm9tUmVj
dChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVk
IHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRp
bmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50KSBjb25zdAog
ewogICAgIC8vIEZJWE1FOiBTaGFyZSBjb2RlIGJldHdlZW4gdGhpcywgZWxlbWVudEZyb21Qb2lu
dCBhbmQgY2FyZXRSYW5nZUZyb21Qb2ludC4KICAgICBpZiAoIXJlbmRlcmVyKCkpCkBAIC0xMjMw
LDcgKzEyMzAsOCBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9kZXNGcm9tUmVj
dChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksIHVuc2lnbmVkCiAgICAgICAgIHJldHVybiBoYW5k
bGVaZXJvUGFkZGluZyhyZXF1ZXN0LCByZXN1bHQpOwogICAgIH0KIAotICAgIEhpdFRlc3RSZXN1
bHQgcmVzdWx0KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcs
IGxlZnRQYWRkaW5nKTsKKyAgICBlbnVtIFNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgc2hhZG93
Q29udGVudEZpbHRlclBvbGljeSA9IGFsbG93U2hhZG93Q29udGVudCA/IEFsbG93U2hhZG93Q29u
dGVudCA6IERvTm90QWxsb3dTaGFkb3dDb250ZW50OworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0
KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRk
aW5nLCBzaGFkb3dDb250ZW50RmlsdGVyUG9saWN5KTsKICAgICByZW5kZXJWaWV3KCktPmxheWVy
KCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKIAogICAgIHJldHVybiBTdGF0aWNIYXNoU2V0
Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAppbmRleCA0YWFjMTZmLi5lNWYwOGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
MzY4LDcgKzM2OCw3IEBAIHB1YmxpYzoKICAgICAgKiAgICAgICAgSWYgZmFsc2UsIHRoaXMgbWV0
aG9kIHJldHVybnMgbnVsbCBmb3IgY29vcmRpbmF0ZXMgb3V0c2lkZSBvZiB0aGUgdmlld3BvcnQu
CiAgICAgICovCiAgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gbm9kZXNGcm9tUmVjdChpbnQgY2Vu
dGVyWCwgaW50IGNlbnRlclksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFk
ZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJv
dHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nKSBj
b25zdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJv
dHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBi
b29sIGFsbG93U2hhZG93Q29udGVudCkgY29uc3Q7CiAgICAgRWxlbWVudCogZWxlbWVudEZyb21Q
b2ludChpbnQgeCwgaW50IHkpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8UmFuZ2U+IGNhcmV0UmFu
Z2VGcm9tUG9pbnQoaW50IHgsIGludCB5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCmluZGV4IDE3MzhkYjguLjAxZWZiNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKQEAgLTEwMzUsNyArMTAzNSw5IEBAIERyYWdTb3VyY2VBY3Rpb24gRXZlbnRIYW5kbGVy
Ojp1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKSBjb25zdAogICAgIAogSGl0VGVzdFJl
c3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50
JiBwb2ludCwgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIEhp
dFRlc3RTY3JvbGxiYXJzIHRlc3RTY3JvbGxiYXJzLCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJl
cXVlc3RUeXBlIGhpdFR5cGUsIGNvbnN0IExheW91dFNpemUmIHBhZGRpbmcpCiB7Ci0gICAgSGl0
VGVzdFJlc3VsdCByZXN1bHQocG9pbnQsIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgo
KSwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpKTsKKyAgICBlbnVtIFNoYWRvd0Nv
bnRlbnRGaWx0ZXJQb2xpY3kgc2hhZG93Q29udGVudEZpbHRlclBvbGljeSA9IGFsbG93U2hhZG93
Q29udGVudCA/IEFsbG93U2hhZG93Q29udGVudCA6IERvTm90QWxsb3dTaGFkb3dDb250ZW50Owor
ICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50LCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5n
LndpZHRoKCksIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSwgc2hhZG93Q29udGVu
dEZpbHRlclBvbGljeSk7CisKICAgICBpZiAoIW1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKQog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIGlmIChpZ25vcmVDbGlwcGluZykKQEAgLTEwNTYs
NyArMTA1OCw3IEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQ
b2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGJvb2wKICAgICAgICAgRnJhbWVWaWV3KiB2
aWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lkZ2V0KTsKICAgICAgICAgTGF5b3V0UG9p
bnQgd2lkZ2V0UG9pbnQocmVzdWx0LmxvY2FsUG9pbnQoKS54KCkgKyB2aWV3LT5zY3JvbGxYKCkg
LSByZW5kZXJXaWRnZXQtPmJvcmRlckxlZnQoKSAtIHJlbmRlcldpZGdldC0+cGFkZGluZ0xlZnQo
KSwgCiAgICAgICAgICAgICByZXN1bHQubG9jYWxQb2ludCgpLnkoKSArIHZpZXctPnNjcm9sbFko
KSAtIHJlbmRlcldpZGdldC0+Ym9yZGVyVG9wKCkgLSByZW5kZXJXaWRnZXQtPnBhZGRpbmdUb3Ao
KSk7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQgd2lkZ2V0SGl0VGVzdFJlc3VsdCh3aWRnZXRQb2lu
dCwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpLCBwYWRkaW5nLmhlaWdodCgpLCBw
YWRkaW5nLndpZHRoKCkpOworICAgICAgICBIaXRUZXN0UmVzdWx0IHdpZGdldEhpdFRlc3RSZXN1
bHQod2lkZ2V0UG9pbnQsIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSwgcGFkZGlu
Zy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpLCBzaGFkb3dDb250ZW50RmlsdGVyUG9saWN5KTsK
ICAgICAgICAgZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5sYXllcigpLT5oaXRUZXN0KEhpdFRl
c3RSZXF1ZXN0KGhpdFR5cGUpLCB3aWRnZXRIaXRUZXN0UmVzdWx0KTsKICAgICAgICAgcmVzdWx0
ID0gd2lkZ2V0SGl0VGVzdFJlc3VsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwCmluZGV4IGRjOTg3YzguLjc0ZjBhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTU0LDYgKzU0LDcgQEAgSGl0VGVzdFJlc3Vs
dDo6SGl0VGVzdFJlc3VsdCgpCiAgICAgLCBtX3JpZ2h0UGFkZGluZygwKQogICAgICwgbV9ib3R0
b21QYWRkaW5nKDApCiAgICAgLCBtX2xlZnRQYWRkaW5nKDApCisgICAgLCBtX3NoYWRvd0NvbnRl
bnRGaWx0ZXJQb2xpY3koRG9Ob3RBbGxvd1NoYWRvd0NvbnRlbnQpCiAgICAgLCBtX3JlZ2lvbigw
KQogewogfQpAQCAtNjYsMTcgKzY3LDE5IEBAIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQo
Y29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogICAgICwgbV9yaWdodFBhZGRpbmcoMCkKICAgICAs
IG1fYm90dG9tUGFkZGluZygwKQogICAgICwgbV9sZWZ0UGFkZGluZygwKQorICAgICwgbV9zaGFk
b3dDb250ZW50RmlsdGVyUG9saWN5KERvTm90QWxsb3dTaGFkb3dDb250ZW50KQogICAgICwgbV9y
ZWdpb24oMCkKIHsKIH0KIAotSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBMYXlv
dXRQb2ludCYgY2VudGVyUG9pbnQsIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0
UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcpCitI
aXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50JiBjZW50ZXJQb2lu
dCwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBi
b3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgU2hhZG93Q29udGVudEZpbHRlclBv
bGljeSBhbGxvd1NoYWRvd0NvbnRlbnQpCiAgICAgOiBtX3BvaW50KGNlbnRlclBvaW50KQogICAg
ICwgbV9pc092ZXJXaWRnZXQoZmFsc2UpCiAgICAgLCBtX3RvcFBhZGRpbmcodG9wUGFkZGluZykK
ICAgICAsIG1fcmlnaHRQYWRkaW5nKHJpZ2h0UGFkZGluZykKICAgICAsIG1fYm90dG9tUGFkZGlu
Zyhib3R0b21QYWRkaW5nKQogICAgICwgbV9sZWZ0UGFkZGluZyhsZWZ0UGFkZGluZykKKyAgICAs
IG1fc2hhZG93Q29udGVudEZpbHRlclBvbGljeShhbGxvd1NoYWRvd0NvbnRlbnQpCiAgICAgLCBt
X3JlZ2lvbigwKQogewogICAgIC8vIElmIGFsbCBwYWRkaW5nIHZhbHVlcyBwYXNzZWQgaW4gYXJl
IHplcm8gdGhlbiBpdCBpcyBub3QgYSByZWN0IGJhc2VkIGhpdCB0ZXN0LgpAQCAtOTUsNiArOTgs
NyBAQCBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90
aGVyKQogICAgICwgbV9pbm5lclVSTEVsZW1lbnQob3RoZXIuVVJMRWxlbWVudCgpKQogICAgICwg
bV9zY3JvbGxiYXIob3RoZXIuc2Nyb2xsYmFyKCkpCiAgICAgLCBtX2lzT3ZlcldpZGdldChvdGhl
ci5pc092ZXJXaWRnZXQoKSkKKyAgICAsIG1fc2hhZG93Q29udGVudEZpbHRlclBvbGljeShvdGhl
ci5zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5KCkpCiAgICAgLCBtX3JlZ2lvbihvdGhlci5yZWdp
b24oKSkKIHsKICAgICAvLyBPbmx5IGNvcHkgdGhlIHBhZGRpbmcgYW5kIE5vZGVTZXQgaW4gY2Fz
ZSBvZiByZWN0IGhpdCB0ZXN0LgpAQCAtNTcyLDcgKzU3Niw5IEBAIGJvb2wgSGl0VGVzdFJlc3Vs
dDo6YWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChOb2RlKiBub2RlLCBjb25zdCBMYXlvdXRQ
b2ludCYKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgbm9kZSA9
IG5vZGUtPnNoYWRvd0FuY2VzdG9yTm9kZSgpOworICAgIGlmIChtX3NoYWRvd0NvbnRlbnRGaWx0
ZXJQb2xpY3kgPT0gRG9Ob3RBbGxvd1NoYWRvd0NvbnRlbnQpCisgICAgICAgIG5vZGUgPSBub2Rl
LT5zaGFkb3dBbmNlc3Rvck5vZGUoKTsKKwogICAgIG11dGFibGVSZWN0QmFzZWRUZXN0UmVzdWx0
KCkuYWRkKG5vZGUpOwogCiAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCktPmlzSW5saW5lKCkpIHsK
QEAgLTYwMyw3ICs2MDksOSBAQCBib29sIEhpdFRlc3RSZXN1bHQ6OmFkZE5vZGVUb1JlY3RCYXNl
ZFRlc3RSZXN1bHQoTm9kZSogbm9kZSwgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgaWYgKCFub2Rl
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIG5vZGUgPSBub2RlLT5zaGFkb3dBbmNlc3Rv
ck5vZGUoKTsKKyAgICBpZiAobV9zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5ID09IERvTm90QWxs
b3dTaGFkb3dDb250ZW50KQorICAgICAgICBub2RlID0gbm9kZS0+c2hhZG93QW5jZXN0b3JOb2Rl
KCk7CisKICAgICBtdXRhYmxlUmVjdEJhc2VkVGVzdFJlc3VsdCgpLmFkZChub2RlKTsKIAogICAg
IGlmIChub2RlLT5yZW5kZXJlcigpLT5pc0lubGluZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuaAppbmRleCAxNTIyNzhjLi4wNjJjMWQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKQEAgLTQyLDYgKzQyLDggQEAgY2xhc3MgTm9k
ZTsKIGNsYXNzIFJlbmRlclJlZ2lvbjsKIGNsYXNzIFNjcm9sbGJhcjsKIAorZW51bSBTaGFkb3dD
b250ZW50RmlsdGVyUG9saWN5IHsgRG9Ob3RBbGxvd1NoYWRvd0NvbnRlbnQsIEFsbG93U2hhZG93
Q29udGVudCB9OworCiBjbGFzcyBIaXRUZXN0UmVzdWx0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVm
IExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+IE5vZGVTZXQ7CkBAIC00OSw3ICs1MSw3IEBAIHB1
YmxpYzoKICAgICBIaXRUZXN0UmVzdWx0KCk7CiAgICAgSGl0VGVzdFJlc3VsdChjb25zdCBMYXlv
dXRQb2ludCYpOwogICAgIC8vIFBhc3Mgbm9uLW5lZ2F0aXZlIHBhZGRpbmcgdmFsdWVzIHRvIHBl
cmZvcm0gYSByZWN0LWJhc2VkIGhpdCB0ZXN0LgotICAgIEhpdFRlc3RSZXN1bHQoY29uc3QgTGF5
b3V0UG9pbnQmIGNlbnRlclBvaW50LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdo
dFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKTsK
KyAgICBIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50JiBjZW50ZXJQb2ludCwgdW5zaWdu
ZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRk
aW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgU2hhZG93Q29udGVudEZpbHRlclBvbGljeSk7CiAg
ICAgSGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0Jik7CiAgICAgfkhpdFRlc3RSZXN1
bHQoKTsKICAgICBIaXRUZXN0UmVzdWx0JiBvcGVyYXRvcj0oY29uc3QgSGl0VGVzdFJlc3VsdCYp
OwpAQCAtNjgsNiArNzAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFRvTm9uU2hhZG93QW5j
ZXN0b3IoKTsKIAorICAgIFNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgc2hhZG93Q29udGVudEZp
bHRlclBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93Q29udGVudEZpbHRlclBvbGljeTsg
fQorCiAgICAgdm9pZCBzZXRJbm5lck5vZGUoTm9kZSopOwogICAgIHZvaWQgc2V0SW5uZXJOb25T
aGFyZWROb2RlKE5vZGUqKTsKICAgICB2b2lkIHNldFBvaW50KGNvbnN0IExheW91dFBvaW50JiBw
KSB7IG1fcG9pbnQgPSBwOyB9CkBAIC0xNDYsNiArMTUwLDcgQEAgcHJpdmF0ZToKICAgICBpbnQg
bV9yaWdodFBhZGRpbmc7CiAgICAgaW50IG1fYm90dG9tUGFkZGluZzsKICAgICBpbnQgbV9sZWZ0
UGFkZGluZzsKKyAgICBTaGFkb3dDb250ZW50RmlsdGVyUG9saWN5IG1fc2hhZG93Q29udGVudEZp
bHRlclBvbGljeTsKICAgICAKICAgICBSZW5kZXJSZWdpb24qIG1fcmVnaW9uOyAvLyBUaGUgcmVn
aW9uIHdlJ3JlIGluc2lkZS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAKaW5kZXggNjQwNmY2Zi4uMGU5YWYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwCkBAIC00NjksNyArNDY5LDcgQEAgSFRNTE1hcEVsZW1lbnQqIFJlbmRlcklt
YWdlOjppbWFnZU1hcCgpIGNvbnN0CiAKIGJvb2wgUmVuZGVySW1hZ2U6Om5vZGVBdFBvaW50KGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0
IExheW91dFBvaW50JiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11
bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbikKIHsKLSAgICBIaXRUZXN0
UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LnBvaW50KCksIHJlc3VsdC50b3BQYWRkaW5nKCksIHJl
c3VsdC5yaWdodFBhZGRpbmcoKSwgcmVzdWx0LmJvdHRvbVBhZGRpbmcoKSwgcmVzdWx0LmxlZnRQ
YWRkaW5nKCkpOworICAgIEhpdFRlc3RSZXN1bHQgdGVtcFJlc3VsdChyZXN1bHQucG9pbnQoKSwg
cmVzdWx0LnRvcFBhZGRpbmcoKSwgcmVzdWx0LnJpZ2h0UGFkZGluZygpLCByZXN1bHQuYm90dG9t
UGFkZGluZygpLCByZXN1bHQubGVmdFBhZGRpbmcoKSwgcmVzdWx0LnNoYWRvd0NvbnRlbnRGaWx0
ZXJQb2xpY3koKSk7CiAgICAgYm9vbCBpbnNpZGUgPSBSZW5kZXJSZXBsYWNlZDo6bm9kZUF0UG9p
bnQocmVxdWVzdCwgdGVtcFJlc3VsdCwgcG9pbnRJbkNvbnRhaW5lciwgYWNjdW11bGF0ZWRPZmZz
ZXQsIGhpdFRlc3RBY3Rpb24pOwogCiAgICAgaWYgKHRlbXBSZXN1bHQuaW5uZXJOb2RlKCkgJiYg
bm9kZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBh
N2Y0MWQwLi5mYjFkNGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKQEAgLTMzODEsNyArMzM4MSw3IEBAIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6aGl0VGVz
dExheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlckxheWVyKiBjb250CiAgICAgLy8g
TmV4dCB3ZSB3YW50IHRvIHNlZSBpZiB0aGUgbW91c2UgcG9zIGlzIGluc2lkZSB0aGUgY2hpbGQg
UmVuZGVyT2JqZWN0cyBvZiB0aGUgbGF5ZXIuCiAgICAgaWYgKGZnUmVjdC5pbnRlcnNlY3RzKGhp
dFRlc3RBcmVhKSAmJiBpc1NlbGZQYWludGluZ0xheWVyKCkpIHsKICAgICAgICAgLy8gSGl0IHRl
c3Qgd2l0aCBhIHRlbXBvcmFyeSBIaXRUZXN0UmVzdWx0LCBiZWNhdXNlIHdlIG9ubHkgd2FudCB0
byBjb21taXQgdG8gJ3Jlc3VsdCcgaWYgd2Uga25vdyB3ZSdyZSBmcm9udG1vc3QuCi0gICAgICAg
IEhpdFRlc3RSZXN1bHQgdGVtcFJlc3VsdChyZXN1bHQucG9pbnQoKSwgcmVzdWx0LnRvcFBhZGRp
bmcoKSwgcmVzdWx0LnJpZ2h0UGFkZGluZygpLCByZXN1bHQuYm90dG9tUGFkZGluZygpLCByZXN1
bHQubGVmdFBhZGRpbmcoKSk7CisgICAgICAgIEhpdFRlc3RSZXN1bHQgdGVtcFJlc3VsdChyZXN1
bHQucG9pbnQoKSwgcmVzdWx0LnRvcFBhZGRpbmcoKSwgcmVzdWx0LnJpZ2h0UGFkZGluZygpLCBy
ZXN1bHQuYm90dG9tUGFkZGluZygpLCByZXN1bHQubGVmdFBhZGRpbmcoKSwgcmVzdWx0LnNoYWRv
d0NvbnRlbnRGaWx0ZXJQb2xpY3koKSk7CiAgICAgICAgIGlmIChoaXRUZXN0Q29udGVudHMocmVx
dWVzdCwgdGVtcFJlc3VsdCwgbGF5ZXJCb3VuZHMsIGhpdFRlc3RQb2ludCwgSGl0VGVzdERlc2Nl
bmRhbnRzKSAmJgogICAgICAgICAgICAgaXNIaXRDYW5kaWRhdGUodGhpcywgZmFsc2UsIHpPZmZz
ZXRGb3JDb250ZW50c1B0ciwgdW5mbGF0dGVuZWRUcmFuc2Zvcm1TdGF0ZS5nZXQoKSkpIHsKICAg
ICAgICAgICAgIGlmIChyZXN1bHQuaXNSZWN0QmFzZWRUZXN0KCkpCkBAIC0zNDEwLDcgKzM0MTAs
NyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcihSZW5kZXJMYXllciog
cm9vdExheWVyLCBSZW5kZXJMYXllciogY29udAogICAgICAgICByZXR1cm4gY2FuZGlkYXRlTGF5
ZXI7CiAKICAgICBpZiAoYmdSZWN0LmludGVyc2VjdHMoaGl0VGVzdEFyZWEpICYmIGlzU2VsZlBh
aW50aW5nTGF5ZXIoKSkgewotICAgICAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0
LnBvaW50KCksIHJlc3VsdC50b3BQYWRkaW5nKCksIHJlc3VsdC5yaWdodFBhZGRpbmcoKSwgcmVz
dWx0LmJvdHRvbVBhZGRpbmcoKSwgcmVzdWx0LmxlZnRQYWRkaW5nKCkpOworICAgICAgICBIaXRU
ZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LnBvaW50KCksIHJlc3VsdC50b3BQYWRkaW5nKCks
IHJlc3VsdC5yaWdodFBhZGRpbmcoKSwgcmVzdWx0LmJvdHRvbVBhZGRpbmcoKSwgcmVzdWx0Lmxl
ZnRQYWRkaW5nKCksIHJlc3VsdC5zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5KCkpOwogICAgICAg
ICBpZiAoaGl0VGVzdENvbnRlbnRzKHJlcXVlc3QsIHRlbXBSZXN1bHQsIGxheWVyQm91bmRzLCBo
aXRUZXN0UG9pbnQsIEhpdFRlc3RTZWxmKSAmJgogICAgICAgICAgICAgaXNIaXRDYW5kaWRhdGUo
dGhpcywgZmFsc2UsIHpPZmZzZXRGb3JDb250ZW50c1B0ciwgdW5mbGF0dGVuZWRUcmFuc2Zvcm1T
dGF0ZS5nZXQoKSkpIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNSZWN0QmFzZWRUZXN0KCkp
CkBAIC0zNDY2LDcgKzM0NjYsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RM
aXN0KFZlY3RvcjxSZW5kZXJMYXllcio+KiBsaXN0LCBSZW5kZXJMYXllciogcgogICAgIGZvciAo
aW50IGkgPSBsaXN0LT5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewogICAgICAgICBSZW5kZXJM
YXllciogY2hpbGRMYXllciA9IGxpc3QtPmF0KGkpOwogICAgICAgICBSZW5kZXJMYXllciogaGl0
TGF5ZXIgPSAwOwotICAgICAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LnBvaW50
KCksIHJlc3VsdC50b3BQYWRkaW5nKCksIHJlc3VsdC5yaWdodFBhZGRpbmcoKSwgcmVzdWx0LmJv
dHRvbVBhZGRpbmcoKSwgcmVzdWx0LmxlZnRQYWRkaW5nKCkpOworICAgICAgICBIaXRUZXN0UmVz
dWx0IHRlbXBSZXN1bHQocmVzdWx0LnBvaW50KCksIHJlc3VsdC50b3BQYWRkaW5nKCksIHJlc3Vs
dC5yaWdodFBhZGRpbmcoKSwgcmVzdWx0LmJvdHRvbVBhZGRpbmcoKSwgcmVzdWx0LmxlZnRQYWRk
aW5nKCksIHJlc3VsdC5zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5KCkpOwogICAgICAgICBpZiAo
Y2hpbGRMYXllci0+aXNQYWdpbmF0ZWQoKSkKICAgICAgICAgICAgIGhpdExheWVyID0gaGl0VGVz
dFBhZ2luYXRlZENoaWxkTGF5ZXIoY2hpbGRMYXllciwgcm9vdExheWVyLCByZXF1ZXN0LCB0ZW1w
UmVzdWx0LCBoaXRUZXN0UmVjdCwgaGl0VGVzdFBvaW50LCB0cmFuc2Zvcm1TdGF0ZSwgek9mZnNl
dEZvckRlc2NlbmRhbnRzKTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCmluZGV4IDQzZjA4ZDcuLjY4ZmNmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTY5NCwxNCArNjk0LDE0IEBAIHVuc2lnbmVkIEludGVybmFsczo6dG91Y2hF
dmVudEhhbmRsZXJDb3VudChEb2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjCiB9
CiAKIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEludGVybmFsczo6bm9kZXNGcm9tUmVjdChEb2N1bWVu
dCogZG9jdW1lbnQsIGludCB4LCBpbnQgeSwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQg
cmlnaHRQYWRkaW5nLAotICAgIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQ
YWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKKyAg
ICB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25v
cmVDbGlwcGluZywgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBj
b25zdAogewogICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpIHx8ICFkb2N1
bWVudC0+ZnJhbWUoKS0+dmlldygpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJS
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gZG9jdW1lbnQtPm5vZGVz
RnJvbVJlY3QoeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBs
ZWZ0UGFkZGluZywgaWdub3JlQ2xpcHBpbmcpOworICAgIHJldHVybiBkb2N1bWVudC0+bm9kZXNG
cm9tUmVjdCh4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxl
ZnRQYWRkaW5nLCBpZ25vcmVDbGlwcGluZywgYWxsb3dTaGFkb3dDb250ZW50KTsKIH0KIAogdm9p
ZCBJbnRlcm5hbHM6OmVtaXRJbnNwZWN0b3JEaWRCZWdpbkZyYW1lKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCmluZGV4IGZmNGFhMjAuLmI3Nzg1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaApAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCB0b3Vj
aEV2ZW50SGFuZGxlckNvdW50KERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgUGFz
c1JlZlB0cjxOb2RlTGlzdD4gbm9kZXNGcm9tUmVjdChEb2N1bWVudCosIGludCB4LCBpbnQgeSwg
dW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLAotICAgICAgICB1bnNp
Z25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlw
cGluZywgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBib3R0b21QYWRk
aW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZywgYm9vbCBhbGxv
d1NoYWRvd25Db250ZW50LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKICAgICB2b2lkIGVtaXRJ
bnNwZWN0b3JEaWRCZWdpbkZyYW1lKCk7CiAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlkQ2FuY2Vs
RnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAxNmI1ZGRmLi44
MTYzZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0xMDQsNyArMTA0
LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAgICAgTm9kZUxpc3Qgbm9kZXNGcm9tUmVjdChp
biBEb2N1bWVudCBkb2N1bWVudCwgaW4gbG9uZyB4LCBpbiBsb25nIHksCiAgICAgICAgICAgICBp
biB1bnNpZ25lZCBsb25nIHRvcFBhZGRpbmcsIGluIHVuc2lnbmVkIGxvbmcgcmlnaHRQYWRkaW5n
LCBpbiB1bnNpZ25lZCBsb25nIGJvdHRvbVBhZGRpbmcsIGluIHVuc2lnbmVkIGxvbmcgbGVmdFBh
ZGRpbmcsCi0gICAgICAgICAgICBpbiBib29sZWFuIGlnbm9yZUNsaXBwaW5nKSByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CisgICAgICAgICAgICBpbiBib29sZWFuIGlnbm9yZUNsaXBwaW5nLCBpbiBi
b29sZWFuIGFsbG93U2hhZG93Q29udGVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogCiAgICAg
ICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZEJlZ2luRnJhbWUoKTsKICAgICAgICAgdm9pZCBlbWl0
SW5zcGVjdG9yRGlkQ2FuY2VsRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRl
eCA3ZjY2NDA1Li4yNzQ5NjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vi
cGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0xNTY0
LDcgKzE1NjQsNyBAQCBJbnRQb2ludCBRV2ViUGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6OmZp
bmRDYW5kaWRhdGVQb2ludEZvclRvdWNoKGNvbnN0IEludFBvaQogICAgIGludCB4ID0gdG91Y2hQ
b2ludC54KCk7CiAgICAgaW50IHkgPSB0b3VjaFBvaW50LnkoKTsKIAotICAgIFJlZlB0cjxOb2Rl
TGlzdD4gaW50ZXJzZWN0ZWROb2RlcyA9IGRvY3VtZW50LT5ub2Rlc0Zyb21SZWN0KHgsIHksIG1f
dG9wUGFkZGluZywgbV9yaWdodFBhZGRpbmcsIG1fYm90dG9tUGFkZGluZywgbV9sZWZ0UGFkZGlu
ZywgZmFsc2UpOworICAgIFJlZlB0cjxOb2RlTGlzdD4gaW50ZXJzZWN0ZWROb2RlcyA9IGRvY3Vt
ZW50LT5ub2Rlc0Zyb21SZWN0KHgsIHksIG1fdG9wUGFkZGluZywgbV9yaWdodFBhZGRpbmcsIG1f
Ym90dG9tUGFkZGluZywgbV9sZWZ0UGFkZGluZywgZmFsc2UgLyppZ25vcmVDbGlwcGluZyovLCBm
YWxzZSAvKmFsbG93U2hhZG93Q29udGVudCovKTsKICAgICBpZiAoIWludGVyc2VjdGVkTm9kZXMp
CiAgICAgICAgIHJldHVybiBJbnRQb2ludCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRl
eCA1MGMwZWNjLi4xMWNjOTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMu
ZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTExMiw3ICsx
MTIsNyBAQCBfWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyMTR3aWxsRGV0YWNo
UGFnZUV2OwogX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMzMWlzTXVsdGlwbGVT
aGFkb3dTdWJ0cmVlc0VuYWJsZWRFOwogX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMzMnNldE11bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkRWI7CiBfWk43V2ViQ29yZTIyUnVu
dGltZUVuYWJsZWRGZWF0dXJlczE4aXNTaGFkb3dET01FbmFibGVkRTsKLV9aTks3V2ViQ29yZThE
b2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampiOworX1pOSzdXZWJDb3JlOERvY3VtZW50MTNu
b2Rlc0Zyb21SZWN0RWlpampqamJiOwogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRl
RVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU184Tm9kZUxpc3RFOwogbG9jYWw6CiBfWio7Ci0t
IAoxLjcuNS40Cgo=
</data>
<flag name="commit-queue"
          id="135483"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132132</attachid>
            <date>2012-03-15 15:13:39 -0700</date>
            <delta_ts>2012-04-03 09:56:47 -0700</delta_ts>
            <desc>to get win symbols from ews</desc>
            <filename>0001-Extend-HitTestResult-to-support-not-discarding-shado.patch</filename>
            <type>text/plain</type>
            <size>28680</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA1MzZmNjk5NDc5MzljMzJjODI2ODc5MGRhMGU4YWE4NTE3NzY1ZjZlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
V2VkLCAxNCBNYXIgMjAxMiAyMDowNzo1OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIEV4dGVuZCBI
aXRUZXN0UmVzdWx0IHRvIHN1cHBvcnQgbm90ICJkaXNjYXJkaW5nIiBzaGFkb3cKIGNvbnRlbnQg
aW4gZmF2b3Igb2YgaXRzIERPTSBhbmNlc3RvcgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgwODQ3CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KUGF0Y2ggYnkg
QW50b25pbyBHb21lcyA8YWdvbWVzQHJpbS5jb20+CgouOgoKRXhwb3J0aW5nIEludGVybmFsczo6
bm9kZXNGcm9tUmVjdCBzeW1ib2xzIGZvciB0aGUgR3RrIGJ1aWxkLgoKKiBTb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyOgoKU291cmNlL1dlYkNvcmU6CgpJbiBvcmRlciB0byBpbXByb3Zl
IHRvdWNoIHByZWNpc2lvbiBvbiBzaGFkb3cgdHJlZSBjb250ZW50LCBwYXRjaApleHRlbmRzIHRo
ZSByZWN0LWhpdHRlc3QnaW5nIHN5c3RlbSB0byBhbGxvdyBzaGFkb3cgY29udGVudAp0byBiZSBz
dG9yZWQgYXMgdGhlIHJlY3QtaGl0dGVzdCByZXN1bHQgbm9kZSBsaXN0LgoKUHJpbWFyeSB1c2Ug
Y2FzZXMgYXJlIGZvciB0aGlzIGV4dGVuc2lvbiBpcyBtYWtpbmcgaXQgZWFzaWVyIHRvCmltcHJv
dmUgdGhlIGNsaWNrYWJpbGl0eSBvZiBkZWZhdWx0IGNvbnRyb2xzIG9mIDx2aWRlbz4gYW5kIDxh
dWRpbz4KZWxlbWVudHMuCgpGb3IgdGhlIGNhbGxlZSBzaXRlLCB0aGUgdXNlIGlzIHNpbXBsZTog
aWYgc2hhZG93IGNvbnRlbnQgaW4gdGhlIHJlY3QtaGl0dGVzdApyZXN1bHQgaXMgZGVzaXJlZCwg
anVzdCBhZGQgYW4gZXh0cmEgJ0FsbG93U2hhZG93Q29udGVudCcgcGFyYW1ldGVyIGF0IHRoZSBj
cmVhdGlvbgpvZiB0aGUgSGl0VGVzdFJlc3VsdCBvYmplY3QuCgpUZXN0OiBmYXN0L2RvbS9ub2Rl
c0Zyb21SZWN0LXNoYWRvd0NvbnRlbnQuaHRtbAoKKiBkb20vRG9jdW1lbnQuY3BwOgooV2ViQ29y
ZTo6RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QpOgoqIGRvbS9Eb2N1bWVudC5oOgooRG9jdW1lbnQp
OgoqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGl0VGVz
dFJlc3VsdEF0UG9pbnQpOgoqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKFdlYkNvcmU6
OkhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQpOgooV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6
YWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdCk6CiogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
aDoKKEhpdFRlc3RSZXN1bHQpOgooV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6c2hhZG93Q29udGVu
dEZpbHRlclBvbGljeSk6CiogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKFdlYkNvcmU6OlJl
bmRlckltYWdlOjpub2RlQXRQb2ludCk6CiogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OmhpdFRlc3RMaXN0KToKKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CihXZWJDb3JlOjpJbnRlcm5h
bHM6Om5vZGVzRnJvbVJlY3QpOgoqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CihJbnRlcm5hbHMpOgoq
IHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKCkxheW91dFRlc3RzOgoKQWRkcyBhIHRlc3QgdGhhdCBy
ZWN0LWhpdHRlc3QncyBhIGVsZW1lbnQga25vd24gdG8gaGF2ZSBhIHNoYWRvdwp0cmVlICg8dmlk
ZW8+IHdpdGggYnVpbHQtaW4gY29udHJvbHMpLCBhbmQgY2hlY2sgaWYgaXRzIHJldHVybiB0eXBl
CmNvbnRhaW5zIGl0cyBjbGlja2FibGUgc2hhZG93IG5vZGVzLgoKKiBmYXN0L2RvbS9ub2Rlc0Zy
b21SZWN0LXNoYWRvd0NvbnRlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBmYXN0L2RvbS9ub2Rl
c0Zyb21SZWN0LXNoYWRvd0NvbnRlbnQuaHRtbDogQWRkZWQuCiogZmFzdC9kb20vcmVzb3VyY2Vz
L25vZGVzRnJvbVJlY3QuanM6CihjaGVjayk6CihjaGVja1NoYWRvd0NvbnRlbnQpOgotLS0KIENo
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSAr
KysrCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMTcgKysrKysKIC4uLi9kb20vbm9kZXNGcm9tUmVjdC1zaGFkb3dDb250ZW50LWV4cGVjdGVk
LnR4dCAgIHwgICAgNiArKwogLi4uL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qtc2hhZG93Q29udGVu
dC5odG1sICAgICAgfCAgIDYyICsrKysrKysrKysrKysrKysrKysrCiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcyAgICB8ICAgMzIgKysrKysrKysrKy0KIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NCAr
KysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gICAgICAgICAgICAg
ICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwICAgICAg
ICAgICAgICAgICAgICB8ICAgIDUgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwICAgICAgICAgICAgICAgfCAgICA2ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5jcHAgICAgICAgICB8ICAgMTQgKysrKy0KIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmggICAgICAgICAgIHwgICAgNyArKy0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgICAgICAgICAgIHwgICAgMiArLQogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCAgICAgICAgICAgfCAgICA2ICst
CiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgICAgICAgICAgICAgICB8ICAg
IDQgKy0KIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggICAgICAgICAgICAgICAg
IHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsICAgICAgICAg
ICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgICAgICAg
ICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiAgICAg
ICAgICAgICAgICAgICAgIHwgICAgMSAtCiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVy
ICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIDIwIGZpbGVzIGNoYW5nZWQsIDIwNyBpbnNl
cnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LXNoYWRvd0NvbnRlbnQtZXhwZWN0ZWQudHh0CiBjcmVh
dGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1zaGFkb3dD
b250ZW50Lmh0bWwKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNjkw
NTY2Yi4uYjk4MGE3MiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDEyLTAzLTE0ICBBbnRvbmlvIEdvbWVzICA8YWdvbWVzQHJpbS5jb20+
CisKKyAgICAgICAgRXh0ZW5kIEhpdFRlc3RSZXN1bHQgdG8gc3VwcG9ydCBub3QgImRpc2NhcmRp
bmciIHNoYWRvdyBjb250ZW50IGluIGZhdm9yIG9mIGl0cyBET00gYW5jZXN0b3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwODQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0aW5nIEludGVybmFs
czo6bm9kZXNGcm9tUmVjdCBzeW1ib2xzIGZvciB0aGUgR3RrIGJ1aWxkLgorCisgICAgICAgICog
U291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMi0wMy0xNCAgVGhpYWdvIE1h
cmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4KIAogICAgICAgICBbRUZM
XSBFbmFibGUgSFRNTDUgU3VtbWFyeSBhbmQgRGV0YWlscyBlbGVtZW50cwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE3Yjg5
ZmMuLjUxMjcxMjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wMy0xNCAgQW50b25pbyBH
b21lcyAgPGFnb21lc0ByaW0uY29tPgorCisgICAgICAgIEV4dGVuZCBIaXRUZXN0UmVzdWx0IHRv
IHN1cHBvcnQgbm90ICJkaXNjYXJkaW5nIiBzaGFkb3cgY29udGVudCBpbiBmYXZvciBvZiBpdHMg
RE9NIGFuY2VzdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MDg0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZHMgYSB0ZXN0IHRoYXQgcmVjdC1oaXR0ZXN0J3MgYSBlbGVtZW50IGtub3duIHRvIGhh
dmUgYSBzaGFkb3cKKyAgICAgICAgdHJlZSAoPHZpZGVvPiB3aXRoIGJ1aWx0LWluIGNvbnRyb2xz
KSwgYW5kIGNoZWNrIGlmIGl0cyByZXR1cm4gdHlwZQorICAgICAgICBjb250YWlucyBpdHMgY2xp
Y2thYmxlIHNoYWRvdyBub2Rlcy4KKworICAgICAgICAqIGZhc3QvZG9tL25vZGVzRnJvbVJlY3Qt
c2hhZG93Q29udGVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL25v
ZGVzRnJvbVJlY3Qtc2hhZG93Q29udGVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qczoKKyAgICAgICAgKGNoZWNrKToKKyAgICAgICAg
KGNoZWNrU2hhZG93Q29udGVudCk6CisKIDIwMTItMDMtMTEgIEFudG9uaW8gR29tZXMgIDxhZ29t
ZXNAcmltLmNvbT4KIAogICAgICAgICBCZSBtb3JlIHJlc3RyaWN0aXZlIHdoZW4gYWRkaW5nIFNj
cm9sbGFibGVBcmVhJ3MgdG8gRnJhbWVWaWV3J3MgU2Nyb2xsYWJsZUFyZWEncyBtYXAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qtc2hhZG93Q29udGVudC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LXNoYWRvd0Nv
bnRlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2
NjI4MmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21S
ZWN0LXNoYWRvd0NvbnRlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorUEFTUyBBbGwg
Y29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdAorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3Vu
ZCBmb3IgcmVjdAorVGhpcyB0ZXN0IG9ubHkgcnVucyBpbiBEUlQhCisKK0VYUEVDVEVEICh2aWRl
by5jb250cm9scyAhPSAnbnVsbCcpIE9LCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL25vZGVzRnJvbVJlY3Qtc2hhZG93Q29udGVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vbm9kZXNGcm9tUmVjdC1zaGFkb3dDb250ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYzUxOTJiMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL25vZGVzRnJvbVJlY3Qtc2hhZG93Q29udGVudC5odG1sCkBAIC0wLDAgKzEsNjIgQEAK
KzxodG1sPgorPGhlYWQ+CisgIDx0aXRsZT5Eb2N1bWVudDo6bm9kZXNGcm9tUmVjdCBzaGFkb3cg
Y29udGVudCBhY2Nlc3MgLSBidWcgODA4NDcgPC90aXRsZT4KKyAgPHN0eWxlIHR5cGU9InRleHQv
Y3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICB2aWRlbyB7CisgICAgICBtYXJnaW46IDUwcHg7Cisg
ICAgfQorICA8L3N0eWxlPgorICA8c2NyaXB0IHNyYz0uLi8uLi9tZWRpYS9tZWRpYS1maWxlLmpz
Pjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0uLi8uLi9tZWRpYS9tZWRpYS1jb250cm9scy5qcz48
L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcyI+PC9z
Y3JpcHQ+CisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+
CisgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgeworICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAg
IH0KKworICAgICAgdmFyIGUgPSB7fTsKKworICAgICAgLy8gU2V0IHVwIHNob3J0Y3V0IGFjY2Vz
cyB0byBlbGVtZW50cworICAgICAgZVsnaHRtbCddID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImh0bWwiKVswXTsKKyAgICAgIFsndjEnLCAnYm9keSddLmZvckVhY2goZnVuY3Rpb24o
YSkgeworICAgICAgICBlW2FdID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk7CisgICAgICB9
KTsKKworICAgICAgd2luZG93LnNjcm9sbFRvKDAsIDApOworCisgICAgICB2YXIgcGxheUNvb3Jk
czsKKyAgICAgIHRyeSB7CisgICAgICAgICAgcGxheUNvb3JkcyA9IG1lZGlhQ29udHJvbHNCdXR0
b25Db29yZGluYXRlcyh2aWRlbywgInBsYXktYnV0dG9uIik7CisgICAgICB9IGNhdGNoIChleGNl
cHRpb24pIHsKKyAgICAgICAgICBmYWlsVGVzdChleGNlcHRpb24uZGVzY3JpcHRpb24pOworICAg
ICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICAgIHZhciBjbGlja1ggPSBwbGF5Q29vcmRzWzBd
OworICAgICAgdmFyIGNsaWNrWSA9IHBsYXlDb29yZHNbMV07CisKKyAgICAgIGNoZWNrKGNsaWNr
WCwgY2xpY2tZLCAxMCwgMTAsIDIwLCAyMCwgW2UudjEsIGUuYm9keV0pOworCisgICAgICB2YXIg
c2hhZG93ID1bJy13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVyJywgJy13
ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24nLCAnLXdlYmtpdC1tZWRpYS1jb250cm9s
cy1wYW5lbCcsICctd2Via2l0LW1lZGlhLWNvbnRyb2xzJ107CisgICAgICBjaGVja1NoYWRvd0Nv
bnRlbnQoY2xpY2tYLCBjbGlja1ksIDEwLCAxMCwgMjAsIDIwLCBzaGFkb3cpOworCisgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorCisgICAgd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7
CisgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorICAgIDx2aWRlbyBpZD0i
djEiIGNvbnRyb2xzPjwvdmlkZW8+CisgICAgPHA+VGhpcyB0ZXN0IG9ubHkgcnVucyBpbiBEUlQh
PC9wPgorICAgIDxzY3JpcHQgc3JjPS4uLy4uL21lZGlhL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdD4KKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5jb250cm9scyIsIG51
bGwsICchPScpOworICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJj
b250ZW50L3Rlc3QiKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL25vZGVzRnJvbVJlY3QuanMKaW5kZXggMDQ4OTY0
MS4uMmU4M2E3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL25v
ZGVzRnJvbVJlY3QuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL25vZGVz
RnJvbVJlY3QuanMKQEAgLTExLDcgKzExLDcgQEAgZnVuY3Rpb24gY2hlY2soeCwgeSwgdG9wUGFk
ZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgbGlzdCwKICAg
aWYgKCFkb2MpCiAgICAgZG9jID0gZG9jdW1lbnQ7CiAKLSAgdmFyIG5vZGVzID0gaW50ZXJuYWxz
Lm5vZGVzRnJvbVJlY3QoZG9jLCB4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRv
bVBhZGRpbmcsIGxlZnRQYWRkaW5nLCB0cnVlIC8qIGlnbm9yZUNsaXBwaW5nICovKTsKKyAgdmFy
IG5vZGVzID0gaW50ZXJuYWxzLm5vZGVzRnJvbVJlY3QoZG9jLCB4LCB5LCB0b3BQYWRkaW5nLCBy
aWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCB0cnVlIC8qIGlnbm9yZUNs
aXBwaW5nICovLCBmYWxzZSAvKiBhbGxvdyBzaGFkb3cgY29udGVudCAqLyk7CiAgIGlmICghbm9k
ZXMpCiAgICAgcmV0dXJuOwogCkBAIC0zNyw2ICszNywzNiBAQCBmdW5jdGlvbiBjaGVjayh4LCB5
LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBs
aXN0LAogICB0ZXN0UGFzc2VkKCJBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCIpOwog
fQogCitmdW5jdGlvbiBjaGVja1NoYWRvd0NvbnRlbnQoeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQ
YWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgc2hhZG93Q29udGVudCwgZG9jKQor
eworICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgcmV0dXJuOworCisgIGlmICghZG9jKQor
ICAgIGRvYyA9IGRvY3VtZW50OworCisgIHZhciBub2RlcyA9IGludGVybmFscy5ub2Rlc0Zyb21S
ZWN0KGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBs
ZWZ0UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLywgdHJ1ZSAvKiBhbGxvd1NoYWRv
d0NvbnRlbnQgKi8pOworICBpZiAoIW5vZGVzKQorICAgIHJldHVybjsKKworICBmb3IgKHZhciBq
ID0gMDsgaiA8IHNoYWRvd0NvbnRlbnQubGVuZ3RoOyBqKyspIHsKKyAgICB2YXIgZm91bmQgPSBm
YWxzZTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICBpZiAoaW50ZXJuYWxzLnNoYWRvd1BzZXVkb0lkKG5vZGVzW2ldKSA9PSBzaGFkb3dDb250ZW50
W2pdKSB7CisgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAgIGJyZWFrOworICAgICAg
fQorICAgIH0KKworICAgIGlmICghZm91bmQpIHsKKyAgICAgIHRlc3RGYWlsZWQoIlBzZXVkbyBJ
ZCBub3QgZm91bmQ6ICIgKyBzaGFkb3dDb250ZW50W2pdKTsKKyAgICAgIHJldHVybjsKKyAgICB9
CisgIH0KKworICB0ZXN0UGFzc2VkKCJBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCIp
OworfQorCiBmdW5jdGlvbiBnZXRDZW50ZXJGb3IoZWxlbWVudCkKIHsKICAgdmFyIHJlY3QgPSBl
bGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDliODI3NTUuLjUz
ZjNiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMi0wMy0xNCAgQW50b25pbyBH
b21lcyAgPGFnb21lc0ByaW0uY29tPgorCisgICAgICAgIEV4dGVuZCBIaXRUZXN0UmVzdWx0IHRv
IHN1cHBvcnQgbm90ICJkaXNjYXJkaW5nIiBzaGFkb3cgY29udGVudCBpbiBmYXZvciBvZiBpdHMg
RE9NIGFuY2VzdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MDg0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEluIG9yZGVyIHRvIGltcHJvdmUgdG91Y2ggcHJlY2lzaW9uIG9uIHNoYWRvdyB0cmVlIGNv
bnRlbnQsIHBhdGNoCisgICAgICAgIGV4dGVuZHMgdGhlIHJlY3QtaGl0dGVzdCdpbmcgc3lzdGVt
IHRvIGFsbG93IHNoYWRvdyBjb250ZW50CisgICAgICAgIHRvIGJlIHN0b3JlZCBhcyB0aGUgcmVj
dC1oaXR0ZXN0IHJlc3VsdCBub2RlIGxpc3QuCisKKyAgICAgICAgUHJpbWFyeSB1c2UgY2FzZXMg
YXJlIGZvciB0aGlzIGV4dGVuc2lvbiBpcyBtYWtpbmcgaXQgZWFzaWVyIHRvCisgICAgICAgIGlt
cHJvdmUgdGhlIGNsaWNrYWJpbGl0eSBvZiBkZWZhdWx0IGNvbnRyb2xzIG9mIDx2aWRlbz4gYW5k
IDxhdWRpbz4KKyAgICAgICAgZWxlbWVudHMuCisKKyAgICAgICAgRm9yIHRoZSBjYWxsZWUgc2l0
ZSwgdGhlIHVzZSBpcyBzaW1wbGU6IGlmIHNoYWRvdyBjb250ZW50IGluIHRoZSByZWN0LWhpdHRl
c3QKKyAgICAgICAgcmVzdWx0IGlzIGRlc2lyZWQsIGp1c3QgYWRkIGFuIGV4dHJhICdBbGxvd1No
YWRvd0NvbnRlbnQnIHBhcmFtZXRlciBhdCB0aGUgY3JlYXRpb24KKyAgICAgICAgb2YgdGhlIEhp
dFRlc3RSZXN1bHQgb2JqZWN0LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL25vZGVzRnJvbVJl
Y3Qtc2hhZG93Q29udGVudC5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0
UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdDo6YWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAgICAgICAgKEhpdFRlc3RSZXN1bHQpOgor
ICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6c2hhZG93Q29udGVudEZpbHRlclBvbGlj
eSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpub2RlQXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMaXN0KToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om5v
ZGVzRnJvbVJlY3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgIChJ
bnRlcm5hbHMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMi0wMy0x
MSAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgogCiAgICAgICAgIEJlIG1vcmUgcmVz
dHJpY3RpdmUgd2hlbiBhZGRpbmcgU2Nyb2xsYWJsZUFyZWEncyB0byBGcmFtZVZpZXcncyBTY3Jv
bGxhYmxlQXJlYSdzIG1hcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAxNzE2OTRhLi4yZDc5MmE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTQ2Miw3ICsxNDYyLDcgQEAgX19aTks3V2ViQ29y
ZTdSdW5Mb29wOVRpbWVyQmFzZThpc0FjdGl2ZUV2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTBy
ZW5kZXJWaWV3RXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxMWNvbXBsZXRlVVJMRVJLTjNXVEY2
U3RyaW5nRQogX19aTks3V2ViQ29yZThEb2N1bWVudDEzYXhPYmplY3RDYWNoZUV2Ci1fX1pOSzdX
ZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamIKK19fWk5LN1dlYkNvcmU4RG9j
dW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqYmIKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxNGdl
dEVsZW1lbnRCeUlkRVJLTjNXVEYxMkF0b21pY1N0cmluZ0UKIF9fWk5LN1dlYkNvcmU4RG9jdW1l
bnQxNmRhc2hib2FyZFJlZ2lvbnNFdgogX19aTks3V2ViQ29yZThEb2N1bWVudDMxZGlzcGxheVN0
cmluZ01vZGlmaWVkQnlFbmNvZGluZ0VSS04zV1RGNlN0cmluZ0UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCmluZGV4IDQ2NmFmNTQuLmYzYjg1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAt
MTE5OCw3ICsxMTk4LDcgQEAgU3RyaW5nIERvY3VtZW50OjpzdWdnZXN0ZWRNSU1FVHlwZSgpIGNv
bnN0CiAvLyAqIG1ha2luZyBpdCByZWNlaXZlIGEgcmVjdCBhcyBwYXJhbWV0ZXIsIGkuZS4gbm9k
ZXNGcm9tUmVjdCh4LCB5LCB3LCBoKTsKIC8vICogbWFraW5nIGl0IHJlY2VpdmUgdGhlIGV4cGFk
aW5nIHNpemUgb2YgZWFjaCBkaXJlY3Rpb24gc2VwYXJhdGVseSwKIC8vICAgaS5lLiBub2Rlc0Zy
b21SZWN0KHgsIHksIHRvcFNpemUsIHJpZ2h0U2l6ZSwgYm90dG9tU2l6ZSwgbGVmdFNpemUpOwot
UGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgs
IGludCBjZW50ZXJZLCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcs
IHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9y
ZUNsaXBwaW5nKSBjb25zdAorUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6Om5vZGVzRnJv
bVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNp
Z25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQ
YWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCkgY29u
c3QKIHsKICAgICAvLyBGSVhNRTogU2hhcmUgY29kZSBiZXR3ZWVuIHRoaXMsIGVsZW1lbnRGcm9t
UG9pbnQgYW5kIGNhcmV0UmFuZ2VGcm9tUG9pbnQuCiAgICAgaWYgKCFyZW5kZXJlcigpKQpAQCAt
MTIzMCw3ICsxMjMwLDggQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6Om5vZGVzRnJv
bVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZAogICAgICAgICByZXR1cm4g
aGFuZGxlWmVyb1BhZGRpbmcocmVxdWVzdCwgcmVzdWx0KTsKICAgICB9CiAKLSAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdChwb2ludCwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRk
aW5nLCBsZWZ0UGFkZGluZyk7CisgICAgZW51bSBTaGFkb3dDb250ZW50RmlsdGVyUG9saWN5IHNo
YWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgPSBhbGxvd1NoYWRvd0NvbnRlbnQgPyBBbGxvd1NoYWRv
d0NvbnRlbnQgOiBEb05vdEFsbG93U2hhZG93Q29udGVudDsKKyAgICBIaXRUZXN0UmVzdWx0IHJl
c3VsdChwb2ludCwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0
UGFkZGluZywgc2hhZG93Q29udGVudEZpbHRlclBvbGljeSk7CiAgICAgcmVuZGVyVmlldygpLT5s
YXllcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAKICAgICByZXR1cm4gU3RhdGljSGFz
aFNldE5vZGVMaXN0OjphZG9wdChyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggNGFhYzE2Zi4uZTVmMDhhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
QEAgLTM2OCw3ICszNjgsNyBAQCBwdWJsaWM6CiAgICAgICogICAgICAgIElmIGZhbHNlLCB0aGlz
IG1ldGhvZCByZXR1cm5zIG51bGwgZm9yIGNvb3JkaW5hdGVzIG91dHNpZGUgb2YgdGhlIHZpZXdw
b3J0LgogICAgICAqLwogICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoaW50
IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdo
dFBhZGRpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGlu
ZykgY29uc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGlu
ZywgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQpIGNvbnN0OwogICAgIEVsZW1lbnQqIGVsZW1lbnRG
cm9tUG9pbnQoaW50IHgsIGludCB5KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFJhbmdlPiBjYXJl
dFJhbmdlRnJvbVBvaW50KGludCB4LCBpbnQgeSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAppbmRleCAxNzM4ZGI4Li4wMWVmYjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCkBAIC0xMDM1LDcgKzEwMzUsOSBAQCBEcmFnU291cmNlQWN0aW9uIEV2ZW50SGFu
ZGxlcjo6dXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCkgY29uc3QKICAgICAKIEhpdFRl
c3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQ
b2ludCYgcG9pbnQsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29sIGlnbm9yZUNsaXBwaW5n
LCBIaXRUZXN0U2Nyb2xsYmFycyB0ZXN0U2Nyb2xsYmFycywgSGl0VGVzdFJlcXVlc3Q6OkhpdFRl
c3RSZXF1ZXN0VHlwZSBoaXRUeXBlLCBjb25zdCBMYXlvdXRTaXplJiBwYWRkaW5nKQogewotICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50LCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndp
ZHRoKCksIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSk7CisgICAgZW51bSBTaGFk
b3dDb250ZW50RmlsdGVyUG9saWN5IHNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgPSBhbGxvd1No
YWRvd0NvbnRlbnQgPyBBbGxvd1NoYWRvd0NvbnRlbnQgOiBEb05vdEFsbG93U2hhZG93Q29udGVu
dDsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCwgcGFkZGluZy5oZWlnaHQoKSwgcGFk
ZGluZy53aWR0aCgpLCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRoKCksIHNoYWRvd0Nv
bnRlbnRGaWx0ZXJQb2xpY3kpOworCiAgICAgaWYgKCFtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIo
KSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICBpZiAoaWdub3JlQ2xpcHBpbmcpCkBAIC0x
MDU2LDcgKzEwNTgsNyBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3Vs
dEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBib29sCiAgICAgICAgIEZyYW1lVmll
dyogdmlldyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdldCk7CiAgICAgICAgIExheW91
dFBvaW50IHdpZGdldFBvaW50KHJlc3VsdC5sb2NhbFBvaW50KCkueCgpICsgdmlldy0+c2Nyb2xs
WCgpIC0gcmVuZGVyV2lkZ2V0LT5ib3JkZXJMZWZ0KCkgLSByZW5kZXJXaWRnZXQtPnBhZGRpbmdM
ZWZ0KCksIAogICAgICAgICAgICAgcmVzdWx0LmxvY2FsUG9pbnQoKS55KCkgKyB2aWV3LT5zY3Jv
bGxZKCkgLSByZW5kZXJXaWRnZXQtPmJvcmRlclRvcCgpIC0gcmVuZGVyV2lkZ2V0LT5wYWRkaW5n
VG9wKCkpOwotICAgICAgICBIaXRUZXN0UmVzdWx0IHdpZGdldEhpdFRlc3RSZXN1bHQod2lkZ2V0
UG9pbnQsIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSwgcGFkZGluZy5oZWlnaHQo
KSwgcGFkZGluZy53aWR0aCgpKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCB3aWRnZXRIaXRUZXN0
UmVzdWx0KHdpZGdldFBvaW50LCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRoKCksIHBh
ZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSwgc2hhZG93Q29udGVudEZpbHRlclBvbGlj
eSk7CiAgICAgICAgIGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+bGF5ZXIoKS0+aGl0VGVzdChI
aXRUZXN0UmVxdWVzdChoaXRUeXBlKSwgd2lkZ2V0SGl0VGVzdFJlc3VsdCk7CiAgICAgICAgIHJl
c3VsdCA9IHdpZGdldEhpdFRlc3RSZXN1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9I
aXRUZXN0UmVzdWx0LmNwcAppbmRleCBkYzk4N2M4Li43NGYwYWRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC01NCw2ICs1NCw3IEBAIEhpdFRlc3RS
ZXN1bHQ6OkhpdFRlc3RSZXN1bHQoKQogICAgICwgbV9yaWdodFBhZGRpbmcoMCkKICAgICAsIG1f
Ym90dG9tUGFkZGluZygwKQogICAgICwgbV9sZWZ0UGFkZGluZygwKQorICAgICwgbV9zaGFkb3dD
b250ZW50RmlsdGVyUG9saWN5KERvTm90QWxsb3dTaGFkb3dDb250ZW50KQogICAgICwgbV9yZWdp
b24oMCkKIHsKIH0KQEAgLTY2LDE3ICs2NywxOSBAQCBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVz
dWx0KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKICAgICAsIG1fcmlnaHRQYWRkaW5nKDApCiAg
ICAgLCBtX2JvdHRvbVBhZGRpbmcoMCkKICAgICAsIG1fbGVmdFBhZGRpbmcoMCkKKyAgICAsIG1f
c2hhZG93Q29udGVudEZpbHRlclBvbGljeShEb05vdEFsbG93U2hhZG93Q29udGVudCkKICAgICAs
IG1fcmVnaW9uKDApCiB7CiB9CiAKLUhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3Qg
TGF5b3V0UG9pbnQmIGNlbnRlclBvaW50LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCBy
aWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5n
KQorSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBMYXlvdXRQb2ludCYgY2VudGVy
UG9pbnQsIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWdu
ZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIFNoYWRvd0NvbnRlbnRGaWx0
ZXJQb2xpY3kgYWxsb3dTaGFkb3dDb250ZW50KQogICAgIDogbV9wb2ludChjZW50ZXJQb2ludCkK
ICAgICAsIG1faXNPdmVyV2lkZ2V0KGZhbHNlKQogICAgICwgbV90b3BQYWRkaW5nKHRvcFBhZGRp
bmcpCiAgICAgLCBtX3JpZ2h0UGFkZGluZyhyaWdodFBhZGRpbmcpCiAgICAgLCBtX2JvdHRvbVBh
ZGRpbmcoYm90dG9tUGFkZGluZykKICAgICAsIG1fbGVmdFBhZGRpbmcobGVmdFBhZGRpbmcpCisg
ICAgLCBtX3NoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3koYWxsb3dTaGFkb3dDb250ZW50KQogICAg
ICwgbV9yZWdpb24oMCkKIHsKICAgICAvLyBJZiBhbGwgcGFkZGluZyB2YWx1ZXMgcGFzc2VkIGlu
IGFyZSB6ZXJvIHRoZW4gaXQgaXMgbm90IGEgcmVjdCBiYXNlZCBoaXQgdGVzdC4KQEAgLTk1LDYg
Kzk4LDcgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0
JiBvdGhlcikKICAgICAsIG1faW5uZXJVUkxFbGVtZW50KG90aGVyLlVSTEVsZW1lbnQoKSkKICAg
ICAsIG1fc2Nyb2xsYmFyKG90aGVyLnNjcm9sbGJhcigpKQogICAgICwgbV9pc092ZXJXaWRnZXQo
b3RoZXIuaXNPdmVyV2lkZ2V0KCkpCisgICAgLCBtX3NoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3ko
b3RoZXIuc2hhZG93Q29udGVudEZpbHRlclBvbGljeSgpKQogICAgICwgbV9yZWdpb24ob3RoZXIu
cmVnaW9uKCkpCiB7CiAgICAgLy8gT25seSBjb3B5IHRoZSBwYWRkaW5nIGFuZCBOb2RlU2V0IGlu
IGNhc2Ugb2YgcmVjdCBoaXQgdGVzdC4KQEAgLTU3Miw3ICs1NzYsOSBAQCBib29sIEhpdFRlc3RS
ZXN1bHQ6OmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQoTm9kZSogbm9kZSwgY29uc3QgTGF5
b3V0UG9pbnQmCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIG5v
ZGUgPSBub2RlLT5zaGFkb3dBbmNlc3Rvck5vZGUoKTsKKyAgICBpZiAobV9zaGFkb3dDb250ZW50
RmlsdGVyUG9saWN5ID09IERvTm90QWxsb3dTaGFkb3dDb250ZW50KQorICAgICAgICBub2RlID0g
bm9kZS0+c2hhZG93QW5jZXN0b3JOb2RlKCk7CisKICAgICBtdXRhYmxlUmVjdEJhc2VkVGVzdFJl
c3VsdCgpLmFkZChub2RlKTsKIAogICAgIGlmIChub2RlLT5yZW5kZXJlcigpLT5pc0lubGluZSgp
KSB7CkBAIC02MDMsNyArNjA5LDkgQEAgYm9vbCBIaXRUZXN0UmVzdWx0OjphZGROb2RlVG9SZWN0
QmFzZWRUZXN0UmVzdWx0KE5vZGUqIG5vZGUsIGNvbnN0IExheW91dFBvaW50JgogICAgIGlmICgh
bm9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBub2RlID0gbm9kZS0+c2hhZG93QW5j
ZXN0b3JOb2RlKCk7CisgICAgaWYgKG1fc2hhZG93Q29udGVudEZpbHRlclBvbGljeSA9PSBEb05v
dEFsbG93U2hhZG93Q29udGVudCkKKyAgICAgICAgbm9kZSA9IG5vZGUtPnNoYWRvd0FuY2VzdG9y
Tm9kZSgpOworCiAgICAgbXV0YWJsZVJlY3RCYXNlZFRlc3RSZXN1bHQoKS5hZGQobm9kZSk7CiAK
ICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKS0+aXNJbmxpbmUoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5kZXggMTUyMjc4Yy4uMDYyYzFkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBAIC00Miw2ICs0Miw4IEBAIGNsYXNz
IE5vZGU7CiBjbGFzcyBSZW5kZXJSZWdpb247CiBjbGFzcyBTY3JvbGxiYXI7CiAKK2VudW0gU2hh
ZG93Q29udGVudEZpbHRlclBvbGljeSB7IERvTm90QWxsb3dTaGFkb3dDb250ZW50LCBBbGxvd1No
YWRvd0NvbnRlbnQgfTsKKwogY2xhc3MgSGl0VGVzdFJlc3VsdCB7CiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiBOb2RlU2V0OwpAQCAtNDksNyArNTEsNyBA
QCBwdWJsaWM6CiAgICAgSGl0VGVzdFJlc3VsdCgpOwogICAgIEhpdFRlc3RSZXN1bHQoY29uc3Qg
TGF5b3V0UG9pbnQmKTsKICAgICAvLyBQYXNzIG5vbi1uZWdhdGl2ZSBwYWRkaW5nIHZhbHVlcyB0
byBwZXJmb3JtIGEgcmVjdC1iYXNlZCBoaXQgdGVzdC4KLSAgICBIaXRUZXN0UmVzdWx0KGNvbnN0
IExheW91dFBvaW50JiBjZW50ZXJQb2ludCwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQg
cmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGlu
Zyk7CisgICAgSGl0VGVzdFJlc3VsdChjb25zdCBMYXlvdXRQb2ludCYgY2VudGVyUG9pbnQsIHVu
c2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9t
UGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIFNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kp
OwogICAgIEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYpOwogICAgIH5IaXRUZXN0
UmVzdWx0KCk7CiAgICAgSGl0VGVzdFJlc3VsdCYgb3BlcmF0b3I9KGNvbnN0IEhpdFRlc3RSZXN1
bHQmKTsKQEAgLTY4LDYgKzcwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRUb05vblNoYWRv
d0FuY2VzdG9yKCk7CiAKKyAgICBTaGFkb3dDb250ZW50RmlsdGVyUG9saWN5IHNoYWRvd0NvbnRl
bnRGaWx0ZXJQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd0NvbnRlbnRGaWx0ZXJQb2xp
Y3k7IH0KKwogICAgIHZvaWQgc2V0SW5uZXJOb2RlKE5vZGUqKTsKICAgICB2b2lkIHNldElubmVy
Tm9uU2hhcmVkTm9kZShOb2RlKik7CiAgICAgdm9pZCBzZXRQb2ludChjb25zdCBMYXlvdXRQb2lu
dCYgcCkgeyBtX3BvaW50ID0gcDsgfQpAQCAtMTQ2LDYgKzE1MCw3IEBAIHByaXZhdGU6CiAgICAg
aW50IG1fcmlnaHRQYWRkaW5nOwogICAgIGludCBtX2JvdHRvbVBhZGRpbmc7CiAgICAgaW50IG1f
bGVmdFBhZGRpbmc7CisgICAgU2hhZG93Q29udGVudEZpbHRlclBvbGljeSBtX3NoYWRvd0NvbnRl
bnRGaWx0ZXJQb2xpY3k7CiAgICAgCiAgICAgUmVuZGVyUmVnaW9uKiBtX3JlZ2lvbjsgLy8gVGhl
IHJlZ2lvbiB3ZSdyZSBpbnNpZGUuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwCmluZGV4IDY0MDZmNmYuLjBlOWFmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcApAQCAtNDY5LDcgKzQ2OSw3IEBAIEhUTUxNYXBFbGVtZW50KiBSZW5k
ZXJJbWFnZTo6aW1hZ2VNYXAoKSBjb25zdAogCiBib29sIFJlbmRlckltYWdlOjpub2RlQXRQb2lu
dChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBj
b25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCiB7Ci0gICAgSGl0
VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQudG9wUGFkZGluZygp
LCByZXN1bHQucmlnaHRQYWRkaW5nKCksIHJlc3VsdC5ib3R0b21QYWRkaW5nKCksIHJlc3VsdC5s
ZWZ0UGFkZGluZygpKTsKKyAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LnBvaW50
KCksIHJlc3VsdC50b3BQYWRkaW5nKCksIHJlc3VsdC5yaWdodFBhZGRpbmcoKSwgcmVzdWx0LmJv
dHRvbVBhZGRpbmcoKSwgcmVzdWx0LmxlZnRQYWRkaW5nKCksIHJlc3VsdC5zaGFkb3dDb250ZW50
RmlsdGVyUG9saWN5KCkpOwogICAgIGJvb2wgaW5zaWRlID0gUmVuZGVyUmVwbGFjZWQ6Om5vZGVB
dFBvaW50KHJlcXVlc3QsIHRlbXBSZXN1bHQsIHBvaW50SW5Db250YWluZXIsIGFjY3VtdWxhdGVk
T2Zmc2V0LCBoaXRUZXN0QWN0aW9uKTsKIAogICAgIGlmICh0ZW1wUmVzdWx0LmlubmVyTm9kZSgp
ICYmIG5vZGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5k
ZXggYTdmNDFkMC4uZmIxZDRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCkBAIC0zMzgxLDcgKzMzODEsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6Omhp
dFRlc3RMYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXllciogY29udAogICAg
IC8vIE5leHQgd2Ugd2FudCB0byBzZWUgaWYgdGhlIG1vdXNlIHBvcyBpcyBpbnNpZGUgdGhlIGNo
aWxkIFJlbmRlck9iamVjdHMgb2YgdGhlIGxheWVyLgogICAgIGlmIChmZ1JlY3QuaW50ZXJzZWN0
cyhoaXRUZXN0QXJlYSkgJiYgaXNTZWxmUGFpbnRpbmdMYXllcigpKSB7CiAgICAgICAgIC8vIEhp
dCB0ZXN0IHdpdGggYSB0ZW1wb3JhcnkgSGl0VGVzdFJlc3VsdCwgYmVjYXVzZSB3ZSBvbmx5IHdh
bnQgdG8gY29tbWl0IHRvICdyZXN1bHQnIGlmIHdlIGtub3cgd2UncmUgZnJvbnRtb3N0LgotICAg
ICAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LnBvaW50KCksIHJlc3VsdC50b3BQ
YWRkaW5nKCksIHJlc3VsdC5yaWdodFBhZGRpbmcoKSwgcmVzdWx0LmJvdHRvbVBhZGRpbmcoKSwg
cmVzdWx0LmxlZnRQYWRkaW5nKCkpOworICAgICAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQo
cmVzdWx0LnBvaW50KCksIHJlc3VsdC50b3BQYWRkaW5nKCksIHJlc3VsdC5yaWdodFBhZGRpbmco
KSwgcmVzdWx0LmJvdHRvbVBhZGRpbmcoKSwgcmVzdWx0LmxlZnRQYWRkaW5nKCksIHJlc3VsdC5z
aGFkb3dDb250ZW50RmlsdGVyUG9saWN5KCkpOwogICAgICAgICBpZiAoaGl0VGVzdENvbnRlbnRz
KHJlcXVlc3QsIHRlbXBSZXN1bHQsIGxheWVyQm91bmRzLCBoaXRUZXN0UG9pbnQsIEhpdFRlc3RE
ZXNjZW5kYW50cykgJiYKICAgICAgICAgICAgIGlzSGl0Q2FuZGlkYXRlKHRoaXMsIGZhbHNlLCB6
T2Zmc2V0Rm9yQ29udGVudHNQdHIsIHVuZmxhdHRlbmVkVHJhbnNmb3JtU3RhdGUuZ2V0KCkpKSB7
CiAgICAgICAgICAgICBpZiAocmVzdWx0LmlzUmVjdEJhc2VkVGVzdCgpKQpAQCAtMzQxMCw3ICsz
NDEwLDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIoUmVuZGVyTGF5
ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnQKICAgICAgICAgcmV0dXJuIGNhbmRpZGF0
ZUxheWVyOwogCiAgICAgaWYgKGJnUmVjdC5pbnRlcnNlY3RzKGhpdFRlc3RBcmVhKSAmJiBpc1Nl
bGZQYWludGluZ0xheWVyKCkpIHsKLSAgICAgICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJl
c3VsdC5wb2ludCgpLCByZXN1bHQudG9wUGFkZGluZygpLCByZXN1bHQucmlnaHRQYWRkaW5nKCks
IHJlc3VsdC5ib3R0b21QYWRkaW5nKCksIHJlc3VsdC5sZWZ0UGFkZGluZygpKTsKKyAgICAgICAg
SGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQudG9wUGFkZGlu
ZygpLCByZXN1bHQucmlnaHRQYWRkaW5nKCksIHJlc3VsdC5ib3R0b21QYWRkaW5nKCksIHJlc3Vs
dC5sZWZ0UGFkZGluZygpLCByZXN1bHQuc2hhZG93Q29udGVudEZpbHRlclBvbGljeSgpKTsKICAg
ICAgICAgaWYgKGhpdFRlc3RDb250ZW50cyhyZXF1ZXN0LCB0ZW1wUmVzdWx0LCBsYXllckJvdW5k
cywgaGl0VGVzdFBvaW50LCBIaXRUZXN0U2VsZikgJiYKICAgICAgICAgICAgIGlzSGl0Q2FuZGlk
YXRlKHRoaXMsIGZhbHNlLCB6T2Zmc2V0Rm9yQ29udGVudHNQdHIsIHVuZmxhdHRlbmVkVHJhbnNm
b3JtU3RhdGUuZ2V0KCkpKSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0LmlzUmVjdEJhc2VkVGVz
dCgpKQpAQCAtMzQ2Niw3ICszNDY2LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRU
ZXN0TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCwgUmVuZGVyTGF5ZXIqIHIKICAgICBm
b3IgKGludCBpID0gbGlzdC0+c2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAgUmVu
ZGVyTGF5ZXIqIGNoaWxkTGF5ZXIgPSBsaXN0LT5hdChpKTsKICAgICAgICAgUmVuZGVyTGF5ZXIq
IGhpdExheWVyID0gMDsKLSAgICAgICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5w
b2ludCgpLCByZXN1bHQudG9wUGFkZGluZygpLCByZXN1bHQucmlnaHRQYWRkaW5nKCksIHJlc3Vs
dC5ib3R0b21QYWRkaW5nKCksIHJlc3VsdC5sZWZ0UGFkZGluZygpKTsKKyAgICAgICAgSGl0VGVz
dFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQudG9wUGFkZGluZygpLCBy
ZXN1bHQucmlnaHRQYWRkaW5nKCksIHJlc3VsdC5ib3R0b21QYWRkaW5nKCksIHJlc3VsdC5sZWZ0
UGFkZGluZygpLCByZXN1bHQuc2hhZG93Q29udGVudEZpbHRlclBvbGljeSgpKTsKICAgICAgICAg
aWYgKGNoaWxkTGF5ZXItPmlzUGFnaW5hdGVkKCkpCiAgICAgICAgICAgICBoaXRMYXllciA9IGhp
dFRlc3RQYWdpbmF0ZWRDaGlsZExheWVyKGNoaWxkTGF5ZXIsIHJvb3RMYXllciwgcmVxdWVzdCwg
dGVtcFJlc3VsdCwgaGl0VGVzdFJlY3QsIGhpdFRlc3RQb2ludCwgdHJhbnNmb3JtU3RhdGUsIHpP
ZmZzZXRGb3JEZXNjZW5kYW50cyk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAppbmRleCA0M2YwOGQ3Li42OGZjZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCkBAIC02OTQsMTQgKzY5NCwxNCBAQCB1bnNpZ25lZCBJbnRlcm5hbHM6OnRv
dWNoRXZlbnRIYW5kbGVyQ291bnQoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBl
YwogfQogCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBJbnRlcm5hbHM6Om5vZGVzRnJvbVJlY3QoRG9j
dW1lbnQqIGRvY3VtZW50LCBpbnQgeCwgaW50IHksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2ln
bmVkIHJpZ2h0UGFkZGluZywKLSAgICB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBs
ZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZywgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
CisgICAgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wg
aWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBFeGNlcHRpb25Db2RlJiBl
YykgY29uc3QKIHsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSB8fCAh
ZG9jdW1lbnQtPmZyYW1lKCktPnZpZXcoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNT
X0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgcmV0dXJuIGRvY3VtZW50LT5u
b2Rlc0Zyb21SZWN0KHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGlu
ZywgbGVmdFBhZGRpbmcsIGlnbm9yZUNsaXBwaW5nKTsKKyAgICByZXR1cm4gZG9jdW1lbnQtPm5v
ZGVzRnJvbVJlY3QoeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5n
LCBsZWZ0UGFkZGluZywgaWdub3JlQ2xpcHBpbmcsIGFsbG93U2hhZG93Q29udGVudCk7CiB9CiAK
IHZvaWQgSW50ZXJuYWxzOjplbWl0SW5zcGVjdG9yRGlkQmVnaW5GcmFtZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAppbmRleCBmZjRhYTIwLi5mMzdhMTNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQg
dG91Y2hFdmVudEhhbmRsZXJDb3VudChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAg
IFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoRG9jdW1lbnQqLCBpbnQgeCwgaW50
IHksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywKLSAgICAgICAg
dW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3Jl
Q2xpcHBpbmcsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICAgICAgdW5zaWduZWQgYm90dG9t
UGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wg
YWxsb3dTaGFkb3dDb250ZW50LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKICAgICB2b2lkIGVt
aXRJbnNwZWN0b3JEaWRCZWdpbkZyYW1lKCk7CiAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlkQ2Fu
Y2VsRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAxNmI1ZGRm
Li44MTYzZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0xMDQsNyAr
MTA0LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAgICAgTm9kZUxpc3Qgbm9kZXNGcm9tUmVj
dChpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gbG9uZyB4LCBpbiBsb25nIHksCiAgICAgICAgICAg
ICBpbiB1bnNpZ25lZCBsb25nIHRvcFBhZGRpbmcsIGluIHVuc2lnbmVkIGxvbmcgcmlnaHRQYWRk
aW5nLCBpbiB1bnNpZ25lZCBsb25nIGJvdHRvbVBhZGRpbmcsIGluIHVuc2lnbmVkIGxvbmcgbGVm
dFBhZGRpbmcsCi0gICAgICAgICAgICBpbiBib29sZWFuIGlnbm9yZUNsaXBwaW5nKSByYWlzZXMg
KERPTUV4Y2VwdGlvbik7CisgICAgICAgICAgICBpbiBib29sZWFuIGlnbm9yZUNsaXBwaW5nLCBp
biBib29sZWFuIGFsbG93U2hhZG93Q29udGVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogCiAg
ICAgICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZEJlZ2luRnJhbWUoKTsKICAgICAgICAgdm9pZCBl
bWl0SW5zcGVjdG9yRGlkQ2FuY2VsRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJwYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApp
bmRleCA3ZjY2NDA1Li4yNzQ5NjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2VicGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0x
NTY0LDcgKzE1NjQsNyBAQCBJbnRQb2ludCBRV2ViUGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6
OmZpbmRDYW5kaWRhdGVQb2ludEZvclRvdWNoKGNvbnN0IEludFBvaQogICAgIGludCB4ID0gdG91
Y2hQb2ludC54KCk7CiAgICAgaW50IHkgPSB0b3VjaFBvaW50LnkoKTsKIAotICAgIFJlZlB0cjxO
b2RlTGlzdD4gaW50ZXJzZWN0ZWROb2RlcyA9IGRvY3VtZW50LT5ub2Rlc0Zyb21SZWN0KHgsIHks
IG1fdG9wUGFkZGluZywgbV9yaWdodFBhZGRpbmcsIG1fYm90dG9tUGFkZGluZywgbV9sZWZ0UGFk
ZGluZywgZmFsc2UpOworICAgIFJlZlB0cjxOb2RlTGlzdD4gaW50ZXJzZWN0ZWROb2RlcyA9IGRv
Y3VtZW50LT5ub2Rlc0Zyb21SZWN0KHgsIHksIG1fdG9wUGFkZGluZywgbV9yaWdodFBhZGRpbmcs
IG1fYm90dG9tUGFkZGluZywgbV9sZWZ0UGFkZGluZywgZmFsc2UgLyppZ25vcmVDbGlwcGluZyov
LCBmYWxzZSAvKmFsbG93U2hhZG93Q29udGVudCovKTsKICAgICBpZiAoIWludGVyc2VjdGVkTm9k
ZXMpCiAgICAgICAgIHJldHVybiBJbnRQb2ludCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKaW5k
ZXggMjNhZTdiYS4uZjNhMzUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktp
dDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgpAQCAtMjE0LDQgKzIx
NCwzIEBAIEVYUE9SVFMKICAgICAgICAgP3VzZXJQcmVmZXJyZWRMYW5ndWFnZXNAV2ViQ29yZUBA
WUE/QVY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBXVEZAQFhaCiAgICAgICAgID92aWV3QERv
Y3VtZW50QFdlYkNvcmVAQFFCRVBBVkZyYW1lVmlld0AyQFhaCiAgICAgICAgID93aWxsRGV0YWNo
UGFnZUBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAVUFFWFhaCi0gICAgICAgID9u
b2Rlc0Zyb21SZWN0QERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxp
c3RAV2ViQ29yZUBAQFdURkBASEhJSUlJX05AWgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29s
cy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXgg
NTBjMGVjYy4uMTFjYzk4NCAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZp
bHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC0xMTIsNyArMTEy
LDcgQEAgX1pON1dlYkNvcmUyNEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcjE0d2lsbERldGFjaFBh
Z2VFdjsKIF9aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMzFpc011bHRpcGxlU2hh
ZG93U3VidHJlZXNFbmFibGVkRTsKIF9aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
MzJzZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZEViOwogX1pON1dlYkNvcmUyMlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMxOGlzU2hhZG93RE9NRW5hYmxlZEU7Ci1fWk5LN1dlYkNvcmU4RG9j
dW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqYjsKK19aTks3V2ViQ29yZThEb2N1bWVudDEzbm9k
ZXNGcm9tUmVjdEVpaWpqampiYjsKIF9aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQ
TlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfOE5vZGVMaXN0RTsKIGxvY2FsOgogX1oqOwotLSAK
MS43LjUuNAoK
</data>
<flag name="commit-queue"
          id="135684"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135347</attachid>
            <date>2012-04-03 09:56:47 -0700</date>
            <delta_ts>2012-04-05 09:51:46 -0700</delta_ts>
            <desc>(committed r113329, r=dhyatt) patch v1.2</desc>
            <filename>0001-Extend-HitTestResult-to-support-not-discarding-shado.patch</filename>
            <type>text/plain</type>
            <size>29792</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSAxYzgyNDdiMWRhMzk1YTdhODFjZDg1YTZmNzk5ZDk4MDU4ODc3Nzc4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
V2VkLCAxNCBNYXIgMjAxMiAyMDowNzo1OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIEV4dGVuZCBI
aXRUZXN0UmVzdWx0IHRvIHN1cHBvcnQgbm90ICJkaXNjYXJkaW5nIiBzaGFkb3cKIGNvbnRlbnQg
aW4gZmF2b3Igb2YgaXRzIERPTSBhbmNlc3RvcgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgwODQ3CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KUGF0Y2ggYnkg
QW50b25pbyBHb21lcyA8YWdvbWVzQHJpbS5jb20+CgouOgoKRXhwb3J0aW5nIEludGVybmFsczo6
bm9kZXNGcm9tUmVjdCBzeW1ib2xzIGZvciB0aGUgR3RrIGJ1aWxkLgoKKiBTb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyOgoKU291cmNlL1dlYkNvcmU6CgpJbiBvcmRlciB0byBpbXByb3Zl
IHRvdWNoIHByZWNpc2lvbiBvbiBzaGFkb3cgdHJlZSBjb250ZW50LCBwYXRjaApleHRlbmRzIHRo
ZSByZWN0LWhpdHRlc3QnaW5nIHN5c3RlbSB0byBhbGxvdyBzaGFkb3cgY29udGVudAp0byBiZSBz
dG9yZWQgYXMgdGhlIHJlY3QtaGl0dGVzdCByZXN1bHQgbm9kZSBsaXN0LgoKUHJpbWFyeSB1c2Ug
Y2FzZXMgYXJlIGZvciB0aGlzIGV4dGVuc2lvbiBpcyBtYWtpbmcgaXQgZWFzaWVyIHRvCmltcHJv
dmUgdGhlIGNsaWNrYWJpbGl0eSBvZiBkZWZhdWx0IGNvbnRyb2xzIG9mIDx2aWRlbz4gYW5kIDxh
dWRpbz4KZWxlbWVudHMuCgpGb3IgdGhlIGNhbGxlZSBzaXRlLCB0aGUgdXNlIGlzIHNpbXBsZTog
aWYgc2hhZG93IGNvbnRlbnQgaW4gdGhlIHJlY3QtaGl0dGVzdApyZXN1bHQgaXMgZGVzaXJlZCwg
anVzdCBhZGQgYW4gZXh0cmEgJ0FsbG93U2hhZG93Q29udGVudCcgcGFyYW1ldGVyIGF0IHRoZSBj
cmVhdGlvbgpvZiB0aGUgSGl0VGVzdFJlc3VsdCBvYmplY3QuCgpUZXN0OiBmYXN0L2RvbS9ub2Rl
c0Zyb21SZWN0LXNoYWRvd0NvbnRlbnQuaHRtbAoKKiBkb20vRG9jdW1lbnQuY3BwOgooV2ViQ29y
ZTo6RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QpOgoqIGRvbS9Eb2N1bWVudC5oOgooRG9jdW1lbnQp
OgoqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGl0VGVz
dFJlc3VsdEF0UG9pbnQpOgoqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKFdlYkNvcmU6
OkhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQpOgooV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6
YWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdCk6CiogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
aDoKKEhpdFRlc3RSZXN1bHQpOgooV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6c2hhZG93Q29udGVu
dEZpbHRlclBvbGljeSk6CiogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKFdlYkNvcmU6OlJl
bmRlckltYWdlOjpub2RlQXRQb2ludCk6CiogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OmhpdFRlc3RMaXN0KToKKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CihXZWJDb3JlOjpJbnRlcm5h
bHM6Om5vZGVzRnJvbVJlY3QpOgoqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CihJbnRlcm5hbHMpOgoq
IHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKCkxheW91dFRlc3RzOgoKQWRkcyBhIHRlc3QgdGhhdCBy
ZWN0LWhpdHRlc3QncyBhIGVsZW1lbnQga25vd24gdG8gaGF2ZSBhIHNoYWRvdwp0cmVlICg8dmlk
ZW8+IHdpdGggYnVpbHQtaW4gY29udHJvbHMpLCBhbmQgY2hlY2sgaWYgaXRzIHJldHVybiB0eXBl
CmNvbnRhaW5zIGl0cyBjbGlja2FibGUgc2hhZG93IG5vZGVzLgoKKiBmYXN0L2RvbS9ub2Rlc0Zy
b21SZWN0LXNoYWRvd0NvbnRlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBmYXN0L2RvbS9ub2Rl
c0Zyb21SZWN0LXNoYWRvd0NvbnRlbnQuaHRtbDogQWRkZWQuCiogZmFzdC9kb20vcmVzb3VyY2Vz
L25vZGVzRnJvbVJlY3QuanM6CihjaGVjayk6CihjaGVja1NoYWRvd0NvbnRlbnQpOgotLS0KIENo
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSAr
KysrCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMTcgKysrKysKIC4uLi9kb20vbm9kZXNGcm9tUmVjdC1zaGFkb3dDb250ZW50LWV4cGVjdGVk
LnR4dCAgIHwgICAgNiArKwogLi4uL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qtc2hhZG93Q29udGVu
dC5odG1sICAgICAgfCAgIDYyICsrKysrKysrKysrKysrKysrKysrCiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcyAgICB8ICAgMzIgKysrKysrKysrKy0KIC4u
Li9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgICAgICAgIHwgICAgNCAr
CiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
NDQgKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCAg
ICAgICAgICAgICAgICAgICAgfCAgICA1ICstCiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aCAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcCAgICAgICAgICAgICAgIHwgICAgNiArLQogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwICAgICAgICAgfCAgIDE0ICsrKystCiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oICAgICAgICAgICB8ICAgIDcgKystCiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwICAgICAgICAgICB8ICAgIDIgKy0K
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgICAgICAgICAgIHwgICAg
NiArLQogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwICAgICAgICAgICAgICAg
fCAgICA0ICstCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oICAgICAgICAgICAg
ICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCAgICAg
ICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwICAg
ICAgICAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYg
ICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5m
aWx0ZXIgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogMjEgZmlsZXMgY2hhbmdlZCwgMjEy
IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91
dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qtc2hhZG93Q29udGVudC1leHBlY3RlZC50eHQK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LXNo
YWRvd0NvbnRlbnQuaHRtbAoKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRl
eCA1Mzc4YTA3Li40ZjQ5ZWQwIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDMtMTQgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmlt
LmNvbT4KKworICAgICAgICBFeHRlbmQgSGl0VGVzdFJlc3VsdCB0byBzdXBwb3J0IG5vdCAiZGlz
Y2FyZGluZyIgc2hhZG93IGNvbnRlbnQgaW4gZmF2b3Igb2YgaXRzIERPTSBhbmNlc3RvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA4NDcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvcnRpbmcgSW50
ZXJuYWxzOjpub2Rlc0Zyb21SZWN0IHN5bWJvbHMgZm9yIHRoZSBHdGsgYnVpbGQuCisKKyAgICAg
ICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDEyLTA0LTAyICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdW1dLMl0gU2V0
IHVwIHBsdWdpbiBwcm9jZXNzIG9uIFVuaXgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1YzE0NTJkLi5jMjAwNDViIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDMtMTQgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmlt
LmNvbT4KKworICAgICAgICBFeHRlbmQgSGl0VGVzdFJlc3VsdCB0byBzdXBwb3J0IG5vdCAiZGlz
Y2FyZGluZyIgc2hhZG93IGNvbnRlbnQgaW4gZmF2b3Igb2YgaXRzIERPTSBhbmNlc3RvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA4NDcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgdGVzdCB0
aGF0IHJlY3QtaGl0dGVzdCdzIGEgZWxlbWVudCBrbm93biB0byBoYXZlIGEgc2hhZG93CisgICAg
ICAgIHRyZWUgKDx2aWRlbz4gd2l0aCBidWlsdC1pbiBjb250cm9scyksIGFuZCBjaGVjayBpZiBp
dHMgcmV0dXJuIHR5cGUKKyAgICAgICAgY29udGFpbnMgaXRzIGNsaWNrYWJsZSBzaGFkb3cgbm9k
ZXMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LXNoYWRvd0NvbnRlbnQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LXNoYWRv
d0NvbnRlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vcmVzb3VyY2VzL25vZGVz
RnJvbVJlY3QuanM6CisgICAgICAgIChjaGVjayk6CisgICAgICAgIChjaGVja1NoYWRvd0NvbnRl
bnQpOgorCiAyMDEyLTAzLTExICBBbnRvbmlvIEdvbWVzICA8YWdvbWVzQHJpbS5jb20+CiAKICAg
ICAgICAgQmUgbW9yZSByZXN0cmljdGl2ZSB3aGVuIGFkZGluZyBTY3JvbGxhYmxlQXJlYSdzIHRv
IEZyYW1lVmlldydzIFNjcm9sbGFibGVBcmVhJ3MgbWFwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LXNoYWRvd0NvbnRlbnQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1zaGFkb3dDb250ZW50LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjYyODJlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1zaGFkb3dDb250ZW50
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91
bmQgZm9yIHJlY3QKK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QKK1RoaXMg
dGVzdCBvbmx5IHJ1bnMgaW4gRFJUIQorCitFWFBFQ1RFRCAodmlkZW8uY29udHJvbHMgIT0gJ251
bGwnKSBPSworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0
LXNoYWRvd0NvbnRlbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qt
c2hhZG93Q29udGVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1
MTkyYjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21S
ZWN0LXNoYWRvd0NvbnRlbnQuaHRtbApAQCAtMCwwICsxLDYyIEBACis8aHRtbD4KKzxoZWFkPgor
ICA8dGl0bGU+RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3Qgc2hhZG93IGNvbnRlbnQgYWNjZXNzIC0g
YnVnIDgwODQ3IDwvdGl0bGU+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVl
biI+CisgICAgdmlkZW8geworICAgICAgbWFyZ2luOiA1MHB4OworICAgIH0KKyAgPC9zdHlsZT4K
KyAgPHNjcmlwdCBzcmM9Li4vLi4vbWVkaWEvbWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KKyAgPHNj
cmlwdCBzcmM9Li4vLi4vbWVkaWEvbWVkaWEtY29udHJvbHMuanM+PC9zY3JpcHQ+CisgIDxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL25vZGVzRnJvbVJlY3QuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgorICAgIGZ1bmN0aW9uIHJ1
blRlc3QoKQorICAgIHsKKyAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICB9CisKKyAgICAgIHZhciBl
ID0ge307CisKKyAgICAgIC8vIFNldCB1cCBzaG9ydGN1dCBhY2Nlc3MgdG8gZWxlbWVudHMKKyAg
ICAgIGVbJ2h0bWwnXSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07
CisgICAgICBbJ3YxJywgJ2JvZHknXS5mb3JFYWNoKGZ1bmN0aW9uKGEpIHsKKyAgICAgICAgZVth
XSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpOworICAgICAgfSk7CisKKyAgICAgIHdpbmRv
dy5zY3JvbGxUbygwLCAwKTsKKworICAgICAgdmFyIHBsYXlDb29yZHM7CisgICAgICB0cnkgewor
ICAgICAgICAgIHBsYXlDb29yZHMgPSBtZWRpYUNvbnRyb2xzQnV0dG9uQ29vcmRpbmF0ZXModmlk
ZW8sICJwbGF5LWJ1dHRvbiIpOworICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAgICAg
ICAgZmFpbFRlc3QoZXhjZXB0aW9uLmRlc2NyaXB0aW9uKTsKKyAgICAgICAgICByZXR1cm47Cisg
ICAgICB9CisgICAgICB2YXIgY2xpY2tYID0gcGxheUNvb3Jkc1swXTsKKyAgICAgIHZhciBjbGlj
a1kgPSBwbGF5Q29vcmRzWzFdOworCisgICAgICBjaGVjayhjbGlja1gsIGNsaWNrWSwgMTAsIDEw
LCAyMCwgMjAsIFtlLnYxLCBlLmJvZHldKTsKKworICAgICAgdmFyIHNoYWRvdyA9Wyctd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNvbnRhaW5lcicsICctd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXBsYXktYnV0dG9uJywgJy13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwnLCAnLXdlYmtp
dC1tZWRpYS1jb250cm9scyddOworICAgICAgY2hlY2tTaGFkb3dDb250ZW50KGNsaWNrWCwgY2xp
Y2tZLCAxMCwgMTAsIDIwLCAyMCwgc2hhZG93KTsKKworICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgIH0KKworICAgIHdpbmRvdy5vbmxvYWQgPSBydW5UZXN0OworICA8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKyAgICA8dmlkZW8gaWQ9InYxIiBjb250cm9scz48L3Zp
ZGVvPgorICAgIDxwPlRoaXMgdGVzdCBvbmx5IHJ1bnMgaW4gRFJUITwvcD4KKyAgICA8c2NyaXB0
IHNyYz0uLi8uLi9tZWRpYS92aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uY29udHJvbHMiLCBudWxsLCAnIT0nKTsKKyAgICAg
ICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0Iik7Cisg
ICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3Jlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzCmluZGV4IDA0ODk2NDEuLjJlODNhNzUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzCkBAIC0x
MSw3ICsxMSw3IEBAIGZ1bmN0aW9uIGNoZWNrKHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGlu
ZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGxpc3QsCiAgIGlmICghZG9jKQogICAgIGRv
YyA9IGRvY3VtZW50OwogCi0gIHZhciBub2RlcyA9IGludGVybmFscy5ub2Rlc0Zyb21SZWN0KGRv
YywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFk
ZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLyk7CisgIHZhciBub2RlcyA9IGludGVybmFs
cy5ub2Rlc0Zyb21SZWN0KGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0
b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLywgZmFsc2Ug
LyogYWxsb3cgc2hhZG93IGNvbnRlbnQgKi8pOwogICBpZiAoIW5vZGVzKQogICAgIHJldHVybjsK
IApAQCAtMzcsNiArMzcsMzYgQEAgZnVuY3Rpb24gY2hlY2soeCwgeSwgdG9wUGFkZGluZywgcmln
aHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgbGlzdCwKICAgdGVzdFBhc3Nl
ZCgiQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QiKTsKIH0KIAorZnVuY3Rpb24gY2hl
Y2tTaGFkb3dDb250ZW50KHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFk
ZGluZywgbGVmdFBhZGRpbmcsIHNoYWRvd0NvbnRlbnQsIGRvYykKK3sKKyAgaWYgKCF3aW5kb3cu
aW50ZXJuYWxzKQorICAgIHJldHVybjsKKworICBpZiAoIWRvYykKKyAgICBkb2MgPSBkb2N1bWVu
dDsKKworICB2YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9tUmVjdChkb2MsIHgsIHksIHRv
cFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIHRydWUg
LyogaWdub3JlQ2xpcHBpbmcgKi8sIHRydWUgLyogYWxsb3dTaGFkb3dDb250ZW50ICovKTsKKyAg
aWYgKCFub2RlcykKKyAgICByZXR1cm47CisKKyAgZm9yICh2YXIgaiA9IDA7IGogPCBzaGFkb3dD
b250ZW50Lmxlbmd0aDsgaisrKSB7CisgICAgdmFyIGZvdW5kID0gZmFsc2U7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykgeworICAgICAgaWYgKGludGVybmFscy5z
aGFkb3dQc2V1ZG9JZChub2Rlc1tpXSkgPT0gc2hhZG93Q29udGVudFtqXSkgeworICAgICAgICAg
IGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAoIWZvdW5kKSB7CisgICAgICB0ZXN0RmFpbGVkKCJQc2V1ZG8gSWQgbm90IGZvdW5kOiAiICsg
c2hhZG93Q29udGVudFtqXSk7CisgICAgICByZXR1cm47CisgICAgfQorICB9CisKKyAgdGVzdFBh
c3NlZCgiQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QiKTsKK30KKwogZnVuY3Rpb24g
Z2V0Q2VudGVyRm9yKGVsZW1lbnQpCiB7CiAgIHZhciByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCAzOTlmNDI3Li5lYzQ1YWNkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0y
MzE2LDYgKzIzMTYsMTAgQEAgQlVHQ1I1ODkzNiA6IGZhc3QvanMvbnVtZXJpYy1lc2NhcGVzLWlu
LXN0cmluZy1saXRlcmFscy5odG1sID0gVEVYVAogQlVHV0s0NjYwMCBTS0lQIDogZmFzdC9kb20v
bm9kZXNGcm9tUmVjdC1saW5rcy1hbmQtdGV4dC5odG1sID0gVEVYVAogQlVHV0s0NjYwMCBTS0lQ
IDogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1pbm5lci1kb2N1bWVudHMuaHRtbCA9IFRFWFQKIAor
Ly8gRm9yIHNvbWUgcmVhc29uIGl0IHNlZW1zIHRvIG5vdCBwcm9wZXJseSByZWN0IGhpdC10ZXN0
cyBlbGVtZW50cyBpbiBzaGFkb3cKKy8vIGNvbnRlbnQgb2YgPHZpZGVvPiBlbGVtZW50cy4KK0JV
R1dLNDY2MDAgU0tJUCA6IGZhc3QvZG9tL25vZGVzRnJvbVJlY3Qtc2hhZG93Q29udGVudC5odG1s
ID0gVEVYVAorCiBCVUdDUjU5NjcxIExJTlVYIDogc3ZnL2N1c3RvbS9jb252b2x1dGlvbi1jcmFz
aC5zdmcgPSBQQVNTIFRFWFQKIAogQlVHSkFNRVNSIExJTlVYIFdJTiA6IGZhc3QvdGV4dC9pbnRl
cm5hdGlvbmFsL3ZlcnRpY2FsLXRleHQtZ2x5cGgtdGVzdC5odG1sID0gSU1BR0UrVEVYVApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGJiOWUyMzEuLjdjZjcxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAor
MjAxMi0wMy0xNCAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgorCisgICAgICAgIEV4
dGVuZCBIaXRUZXN0UmVzdWx0IHRvIHN1cHBvcnQgbm90ICJkaXNjYXJkaW5nIiBzaGFkb3cgY29u
dGVudCBpbiBmYXZvciBvZiBpdHMgRE9NIGFuY2VzdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDg0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIG9yZGVyIHRvIGltcHJvdmUgdG91Y2ggcHJlY2lz
aW9uIG9uIHNoYWRvdyB0cmVlIGNvbnRlbnQsIHBhdGNoCisgICAgICAgIGV4dGVuZHMgdGhlIHJl
Y3QtaGl0dGVzdCdpbmcgc3lzdGVtIHRvIGFsbG93IHNoYWRvdyBjb250ZW50CisgICAgICAgIHRv
IGJlIHN0b3JlZCBhcyB0aGUgcmVjdC1oaXR0ZXN0IHJlc3VsdCBub2RlIGxpc3QuCisKKyAgICAg
ICAgUHJpbWFyeSB1c2UgY2FzZXMgYXJlIGZvciB0aGlzIGV4dGVuc2lvbiBpcyBtYWtpbmcgaXQg
ZWFzaWVyIHRvCisgICAgICAgIGltcHJvdmUgdGhlIGNsaWNrYWJpbGl0eSBvZiBkZWZhdWx0IGNv
bnRyb2xzIG9mIDx2aWRlbz4gYW5kIDxhdWRpbz4KKyAgICAgICAgZWxlbWVudHMuCisKKyAgICAg
ICAgRm9yIHRoZSBjYWxsZWUgc2l0ZSwgdGhlIHVzZSBpcyBzaW1wbGU6IGlmIHNoYWRvdyBjb250
ZW50IGluIHRoZSByZWN0LWhpdHRlc3QKKyAgICAgICAgcmVzdWx0IGlzIGRlc2lyZWQsIGp1c3Qg
YWRkIGFuIGV4dHJhICdBbGxvd1NoYWRvd0NvbnRlbnQnIHBhcmFtZXRlciBhdCB0aGUgY3JlYXRp
b24KKyAgICAgICAgb2YgdGhlIEhpdFRlc3RSZXN1bHQgb2JqZWN0LgorCisgICAgICAgIFRlc3Q6
IGZhc3QvZG9tL25vZGVzRnJvbVJlY3Qtc2hhZG93Q29udGVudC5odG1sCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om5vZGVzRnJvbVJl
Y3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgorICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0
UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1
bHQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YWRkTm9kZVRvUmVjdEJhc2Vk
VGVzdFJlc3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAgICAg
ICAgKEhpdFRlc3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6c2hh
ZG93Q29udGVudEZpbHRlclBvbGljeSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpub2RlQXRQb2ludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpoaXRUZXN0TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omhp
dFRlc3RMaXN0KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6Om5vZGVzRnJvbVJlY3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmg6CisgICAgICAgIChJbnRlcm5hbHMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmlkbDoKKwogMjAxMi0wMy0xMSAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgog
CiAgICAgICAgIEJlIG1vcmUgcmVzdHJpY3RpdmUgd2hlbiBhZGRpbmcgU2Nyb2xsYWJsZUFyZWEn
cyB0byBGcmFtZVZpZXcncyBTY3JvbGxhYmxlQXJlYSdzIG1hcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpp
bmRleCBhOTY1ODBiLi4wOTU1MTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTQ4MCw3ICsx
NDgwLDcgQEAgX19aTks3V2ViQ29yZTdSdW5Mb29wOVRpbWVyQmFzZThpc0FjdGl2ZUV2CiBfX1pO
SzdXZWJDb3JlOERvY3VtZW50MTByZW5kZXJWaWV3RXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQx
MWNvbXBsZXRlVVJMRVJLTjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29yZThEb2N1bWVudDEzYXhP
YmplY3RDYWNoZUV2Ci1fX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampq
amIKK19fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqYmIKIF9fWk5L
N1dlYkNvcmU4RG9jdW1lbnQxNGdldEVsZW1lbnRCeUlkRVJLTjNXVEYxMkF0b21pY1N0cmluZ0UK
IF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxNmRhc2hib2FyZFJlZ2lvbnNFdgogX19aTks3V2ViQ29y
ZThEb2N1bWVudDMxZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZ0VSS04zV1RGNlN0cmlu
Z0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDY3ZWQ5MjMuLjViMDYwYTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMTIzOSw3ICsxMjM5LDcgQEAgU3RyaW5nIERvY3VtZW50Ojpz
dWdnZXN0ZWRNSU1FVHlwZSgpIGNvbnN0CiAvLyAqIG1ha2luZyBpdCByZWNlaXZlIGEgcmVjdCBh
cyBwYXJhbWV0ZXIsIGkuZS4gbm9kZXNGcm9tUmVjdCh4LCB5LCB3LCBoKTsKIC8vICogbWFraW5n
IGl0IHJlY2VpdmUgdGhlIGV4cGFkaW5nIHNpemUgb2YgZWFjaCBkaXJlY3Rpb24gc2VwYXJhdGVs
eSwKIC8vICAgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFNpemUsIHJpZ2h0U2l6ZSwgYm90
dG9tU2l6ZSwgbGVmdFNpemUpOwotUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6Om5vZGVz
RnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1
bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxl
ZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nKSBjb25zdAorUGFzc1JlZlB0cjxOb2RlTGlz
dD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNp
Z25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBh
ZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFs
bG93U2hhZG93Q29udGVudCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogU2hhcmUgY29kZSBiZXR3
ZWVuIHRoaXMsIGVsZW1lbnRGcm9tUG9pbnQgYW5kIGNhcmV0UmFuZ2VGcm9tUG9pbnQuCiAgICAg
aWYgKCFyZW5kZXJlcigpKQpAQCAtMTI3MSw3ICsxMjcxLDggQEAgUGFzc1JlZlB0cjxOb2RlTGlz
dD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNp
Z25lZAogICAgICAgICByZXR1cm4gaGFuZGxlWmVyb1BhZGRpbmcocmVxdWVzdCwgcmVzdWx0KTsK
ICAgICB9CiAKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCwgdG9wUGFkZGluZywgcmln
aHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZyk7CisgICAgZW51bSBTaGFkb3dD
b250ZW50RmlsdGVyUG9saWN5IHNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgPSBhbGxvd1NoYWRv
d0NvbnRlbnQgPyBBbGxvd1NoYWRvd0NvbnRlbnQgOiBEb05vdEFsbG93U2hhZG93Q29udGVudDsK
KyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5n
LCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgc2hhZG93Q29udGVudEZpbHRlclBvbGljeSk7
CiAgICAgcmVuZGVyVmlldygpLT5sYXllcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAK
ICAgICByZXR1cm4gU3RhdGljSGFzaFNldE5vZGVMaXN0OjphZG9wdChyZXN1bHQucmVjdEJhc2Vk
VGVzdFJlc3VsdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZDI1NWU5Ny4uOWUwZTIzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTM3MCw3ICszNzAsNyBAQCBwdWJsaWM6CiAgICAgICog
ICAgICAgIElmIGZhbHNlLCB0aGlzIG1ldGhvZCByZXR1cm5zIG51bGwgZm9yIGNvb3JkaW5hdGVz
IG91dHNpZGUgb2YgdGhlIHZpZXdwb3J0LgogICAgICAqLwogICAgIFBhc3NSZWZQdHI8Tm9kZUxp
c3Q+IG5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZCB0b3BQ
YWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGlu
ZywgYm9vbCBpZ25vcmVDbGlwcGluZykgY29uc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGlu
ZywgYm9vbCBpZ25vcmVDbGlwcGluZywgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQpIGNvbnN0Owog
ICAgIEVsZW1lbnQqIGVsZW1lbnRGcm9tUG9pbnQoaW50IHgsIGludCB5KSBjb25zdDsKICAgICBQ
YXNzUmVmUHRyPFJhbmdlPiBjYXJldFJhbmdlRnJvbVBvaW50KGludCB4LCBpbnQgeSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAxNjgzYzNkLi40ZjE3NzIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xMDQwLDcgKzEwNDAsOSBAQCBEcmFn
U291cmNlQWN0aW9uIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2Vk
KCkgY29uc3QKICAgICAKIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0
QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50
LCBib29sIGlnbm9yZUNsaXBwaW5nLCBIaXRUZXN0U2Nyb2xsYmFycyB0ZXN0U2Nyb2xsYmFycywg
SGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlLCBjb25zdCBMYXlvdXRT
aXplJiBwYWRkaW5nKQogewotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50LCBwYWRkaW5n
LmhlaWdodCgpLCBwYWRkaW5nLndpZHRoKCksIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lk
dGgoKSk7CisgICAgZW51bSBTaGFkb3dDb250ZW50RmlsdGVyUG9saWN5IHNoYWRvd0NvbnRlbnRG
aWx0ZXJQb2xpY3kgPSBhbGxvd1NoYWRvd0NvbnRlbnQgPyBBbGxvd1NoYWRvd0NvbnRlbnQgOiBE
b05vdEFsbG93U2hhZG93Q29udGVudDsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCwg
cGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpLCBwYWRkaW5nLmhlaWdodCgpLCBwYWRk
aW5nLndpZHRoKCksIHNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kpOworCiAgICAgaWYgKCFtX2Zy
YW1lLT5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICBpZiAo
aWdub3JlQ2xpcHBpbmcpCkBAIC0xMDYxLDcgKzEwNjMsNyBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50
SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBi
b29sCiAgICAgICAgIEZyYW1lVmlldyogdmlldyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdp
ZGdldCk7CiAgICAgICAgIExheW91dFBvaW50IHdpZGdldFBvaW50KHJlc3VsdC5sb2NhbFBvaW50
KCkueCgpICsgdmlldy0+c2Nyb2xsWCgpIC0gcmVuZGVyV2lkZ2V0LT5ib3JkZXJMZWZ0KCkgLSBy
ZW5kZXJXaWRnZXQtPnBhZGRpbmdMZWZ0KCksIAogICAgICAgICAgICAgcmVzdWx0LmxvY2FsUG9p
bnQoKS55KCkgKyB2aWV3LT5zY3JvbGxZKCkgLSByZW5kZXJXaWRnZXQtPmJvcmRlclRvcCgpIC0g
cmVuZGVyV2lkZ2V0LT5wYWRkaW5nVG9wKCkpOwotICAgICAgICBIaXRUZXN0UmVzdWx0IHdpZGdl
dEhpdFRlc3RSZXN1bHQod2lkZ2V0UG9pbnQsIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lk
dGgoKSwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpKTsKKyAgICAgICAgSGl0VGVz
dFJlc3VsdCB3aWRnZXRIaXRUZXN0UmVzdWx0KHdpZGdldFBvaW50LCBwYWRkaW5nLmhlaWdodCgp
LCBwYWRkaW5nLndpZHRoKCksIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSwgc2hh
ZG93Q29udGVudEZpbHRlclBvbGljeSk7CiAgICAgICAgIGZyYW1lLT5jb250ZW50UmVuZGVyZXIo
KS0+bGF5ZXIoKS0+aGl0VGVzdChIaXRUZXN0UmVxdWVzdChoaXRUeXBlKSwgd2lkZ2V0SGl0VGVz
dFJlc3VsdCk7CiAgICAgICAgIHJlc3VsdCA9IHdpZGdldEhpdFRlc3RSZXN1bHQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCBkYzk4N2M4Li43NGYw
YWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC01
NCw2ICs1NCw3IEBAIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoKQogICAgICwgbV9yaWdo
dFBhZGRpbmcoMCkKICAgICAsIG1fYm90dG9tUGFkZGluZygwKQogICAgICwgbV9sZWZ0UGFkZGlu
ZygwKQorICAgICwgbV9zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5KERvTm90QWxsb3dTaGFkb3dD
b250ZW50KQogICAgICwgbV9yZWdpb24oMCkKIHsKIH0KQEAgLTY2LDE3ICs2NywxOSBAQCBIaXRU
ZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKICAgICAs
IG1fcmlnaHRQYWRkaW5nKDApCiAgICAgLCBtX2JvdHRvbVBhZGRpbmcoMCkKICAgICAsIG1fbGVm
dFBhZGRpbmcoMCkKKyAgICAsIG1fc2hhZG93Q29udGVudEZpbHRlclBvbGljeShEb05vdEFsbG93
U2hhZG93Q29udGVudCkKICAgICAsIG1fcmVnaW9uKDApCiB7CiB9CiAKLUhpdFRlc3RSZXN1bHQ6
OkhpdFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0UG9pbnQmIGNlbnRlclBvaW50LCB1bnNpZ25lZCB0
b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcs
IHVuc2lnbmVkIGxlZnRQYWRkaW5nKQorSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25z
dCBMYXlvdXRQb2ludCYgY2VudGVyUG9pbnQsIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVk
IHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRp
bmcsIFNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgYWxsb3dTaGFkb3dDb250ZW50KQogICAgIDog
bV9wb2ludChjZW50ZXJQb2ludCkKICAgICAsIG1faXNPdmVyV2lkZ2V0KGZhbHNlKQogICAgICwg
bV90b3BQYWRkaW5nKHRvcFBhZGRpbmcpCiAgICAgLCBtX3JpZ2h0UGFkZGluZyhyaWdodFBhZGRp
bmcpCiAgICAgLCBtX2JvdHRvbVBhZGRpbmcoYm90dG9tUGFkZGluZykKICAgICAsIG1fbGVmdFBh
ZGRpbmcobGVmdFBhZGRpbmcpCisgICAgLCBtX3NoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3koYWxs
b3dTaGFkb3dDb250ZW50KQogICAgICwgbV9yZWdpb24oMCkKIHsKICAgICAvLyBJZiBhbGwgcGFk
ZGluZyB2YWx1ZXMgcGFzc2VkIGluIGFyZSB6ZXJvIHRoZW4gaXQgaXMgbm90IGEgcmVjdCBiYXNl
ZCBoaXQgdGVzdC4KQEAgLTk1LDYgKzk4LDcgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3Vs
dChjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICAsIG1faW5uZXJVUkxFbGVtZW50KG90
aGVyLlVSTEVsZW1lbnQoKSkKICAgICAsIG1fc2Nyb2xsYmFyKG90aGVyLnNjcm9sbGJhcigpKQog
ICAgICwgbV9pc092ZXJXaWRnZXQob3RoZXIuaXNPdmVyV2lkZ2V0KCkpCisgICAgLCBtX3NoYWRv
d0NvbnRlbnRGaWx0ZXJQb2xpY3kob3RoZXIuc2hhZG93Q29udGVudEZpbHRlclBvbGljeSgpKQog
ICAgICwgbV9yZWdpb24ob3RoZXIucmVnaW9uKCkpCiB7CiAgICAgLy8gT25seSBjb3B5IHRoZSBw
YWRkaW5nIGFuZCBOb2RlU2V0IGluIGNhc2Ugb2YgcmVjdCBoaXQgdGVzdC4KQEAgLTU3Miw3ICs1
NzYsOSBAQCBib29sIEhpdFRlc3RSZXN1bHQ6OmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQo
Tm9kZSogbm9kZSwgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgaWYgKCFub2RlKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIG5vZGUgPSBub2RlLT5zaGFkb3dBbmNlc3Rvck5vZGUoKTsKKyAg
ICBpZiAobV9zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5ID09IERvTm90QWxsb3dTaGFkb3dDb250
ZW50KQorICAgICAgICBub2RlID0gbm9kZS0+c2hhZG93QW5jZXN0b3JOb2RlKCk7CisKICAgICBt
dXRhYmxlUmVjdEJhc2VkVGVzdFJlc3VsdCgpLmFkZChub2RlKTsKIAogICAgIGlmIChub2RlLT5y
ZW5kZXJlcigpLT5pc0lubGluZSgpKSB7CkBAIC02MDMsNyArNjA5LDkgQEAgYm9vbCBIaXRUZXN0
UmVzdWx0OjphZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KE5vZGUqIG5vZGUsIGNvbnN0IExh
eW91dFBvaW50JgogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBu
b2RlID0gbm9kZS0+c2hhZG93QW5jZXN0b3JOb2RlKCk7CisgICAgaWYgKG1fc2hhZG93Q29udGVu
dEZpbHRlclBvbGljeSA9PSBEb05vdEFsbG93U2hhZG93Q29udGVudCkKKyAgICAgICAgbm9kZSA9
IG5vZGUtPnNoYWRvd0FuY2VzdG9yTm9kZSgpOworCiAgICAgbXV0YWJsZVJlY3RCYXNlZFRlc3RS
ZXN1bHQoKS5hZGQobm9kZSk7CiAKICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKS0+aXNJbmxpbmUo
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5kZXggMTUyMjc4
Yy4uMDYyYzFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBA
IC00Miw2ICs0Miw4IEBAIGNsYXNzIE5vZGU7CiBjbGFzcyBSZW5kZXJSZWdpb247CiBjbGFzcyBT
Y3JvbGxiYXI7CiAKK2VudW0gU2hhZG93Q29udGVudEZpbHRlclBvbGljeSB7IERvTm90QWxsb3dT
aGFkb3dDb250ZW50LCBBbGxvd1NoYWRvd0NvbnRlbnQgfTsKKwogY2xhc3MgSGl0VGVzdFJlc3Vs
dCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiBOb2Rl
U2V0OwpAQCAtNDksNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgSGl0VGVzdFJlc3VsdCgpOwogICAg
IEhpdFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICAvLyBQYXNzIG5vbi1uZWdh
dGl2ZSBwYWRkaW5nIHZhbHVlcyB0byBwZXJmb3JtIGEgcmVjdC1iYXNlZCBoaXQgdGVzdC4KLSAg
ICBIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50JiBjZW50ZXJQb2ludCwgdW5zaWduZWQg
dG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5n
LCB1bnNpZ25lZCBsZWZ0UGFkZGluZyk7CisgICAgSGl0VGVzdFJlc3VsdChjb25zdCBMYXlvdXRQ
b2ludCYgY2VudGVyUG9pbnQsIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFk
ZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIFNoYWRv
d0NvbnRlbnRGaWx0ZXJQb2xpY3kpOwogICAgIEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJl
c3VsdCYpOwogICAgIH5IaXRUZXN0UmVzdWx0KCk7CiAgICAgSGl0VGVzdFJlc3VsdCYgb3BlcmF0
b3I9KGNvbnN0IEhpdFRlc3RSZXN1bHQmKTsKQEAgLTY4LDYgKzcwLDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCBzZXRUb05vblNoYWRvd0FuY2VzdG9yKCk7CiAKKyAgICBTaGFkb3dDb250ZW50Rmls
dGVyUG9saWN5IHNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3No
YWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3k7IH0KKwogICAgIHZvaWQgc2V0SW5uZXJOb2RlKE5vZGUq
KTsKICAgICB2b2lkIHNldElubmVyTm9uU2hhcmVkTm9kZShOb2RlKik7CiAgICAgdm9pZCBzZXRQ
b2ludChjb25zdCBMYXlvdXRQb2ludCYgcCkgeyBtX3BvaW50ID0gcDsgfQpAQCAtMTQ2LDYgKzE1
MCw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fcmlnaHRQYWRkaW5nOwogICAgIGludCBtX2JvdHRv
bVBhZGRpbmc7CiAgICAgaW50IG1fbGVmdFBhZGRpbmc7CisgICAgU2hhZG93Q29udGVudEZpbHRl
clBvbGljeSBtX3NoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3k7CiAgICAgCiAgICAgUmVuZGVyUmVn
aW9uKiBtX3JlZ2lvbjsgLy8gVGhlIHJlZ2lvbiB3ZSdyZSBpbnNpZGUuCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IGJlMmUxYTYuLjBjNzlmY2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNDcxLDcgKzQ3MSw3IEBA
IEhUTUxNYXBFbGVtZW50KiBSZW5kZXJJbWFnZTo6aW1hZ2VNYXAoKSBjb25zdAogCiBib29sIFJl
bmRlckltYWdlOjpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0
VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwg
Y29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uIGhpdFRl
c3RBY3Rpb24pCiB7Ci0gICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgp
LCByZXN1bHQudG9wUGFkZGluZygpLCByZXN1bHQucmlnaHRQYWRkaW5nKCksIHJlc3VsdC5ib3R0
b21QYWRkaW5nKCksIHJlc3VsdC5sZWZ0UGFkZGluZygpKTsKKyAgICBIaXRUZXN0UmVzdWx0IHRl
bXBSZXN1bHQocmVzdWx0LnBvaW50KCksIHJlc3VsdC50b3BQYWRkaW5nKCksIHJlc3VsdC5yaWdo
dFBhZGRpbmcoKSwgcmVzdWx0LmJvdHRvbVBhZGRpbmcoKSwgcmVzdWx0LmxlZnRQYWRkaW5nKCks
IHJlc3VsdC5zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5KCkpOwogICAgIGJvb2wgaW5zaWRlID0g
UmVuZGVyUmVwbGFjZWQ6Om5vZGVBdFBvaW50KHJlcXVlc3QsIHRlbXBSZXN1bHQsIHBvaW50SW5D
b250YWluZXIsIGFjY3VtdWxhdGVkT2Zmc2V0LCBoaXRUZXN0QWN0aW9uKTsKIAogICAgIGlmICh0
ZW1wUmVzdWx0LmlubmVyTm9kZSgpICYmIG5vZGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKaW5kZXggN2ExNDEwOC4uZDdmNmI0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zNTE1LDcgKzM1MTUsNyBAQCBSZW5kZXJM
YXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBS
ZW5kZXJMYXllciogY29udAogICAgIC8vIE5leHQgd2Ugd2FudCB0byBzZWUgaWYgdGhlIG1vdXNl
IHBvcyBpcyBpbnNpZGUgdGhlIGNoaWxkIFJlbmRlck9iamVjdHMgb2YgdGhlIGxheWVyLgogICAg
IGlmIChmZ1JlY3QuaW50ZXJzZWN0cyhoaXRUZXN0QXJlYSkgJiYgaXNTZWxmUGFpbnRpbmdMYXll
cigpKSB7CiAgICAgICAgIC8vIEhpdCB0ZXN0IHdpdGggYSB0ZW1wb3JhcnkgSGl0VGVzdFJlc3Vs
dCwgYmVjYXVzZSB3ZSBvbmx5IHdhbnQgdG8gY29tbWl0IHRvICdyZXN1bHQnIGlmIHdlIGtub3cg
d2UncmUgZnJvbnRtb3N0LgotICAgICAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0
LnBvaW50KCksIHJlc3VsdC50b3BQYWRkaW5nKCksIHJlc3VsdC5yaWdodFBhZGRpbmcoKSwgcmVz
dWx0LmJvdHRvbVBhZGRpbmcoKSwgcmVzdWx0LmxlZnRQYWRkaW5nKCkpOworICAgICAgICBIaXRU
ZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LnBvaW50KCksIHJlc3VsdC50b3BQYWRkaW5nKCks
IHJlc3VsdC5yaWdodFBhZGRpbmcoKSwgcmVzdWx0LmJvdHRvbVBhZGRpbmcoKSwgcmVzdWx0Lmxl
ZnRQYWRkaW5nKCksIHJlc3VsdC5zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5KCkpOwogICAgICAg
ICBpZiAoaGl0VGVzdENvbnRlbnRzKHJlcXVlc3QsIHRlbXBSZXN1bHQsIGxheWVyQm91bmRzLCBo
aXRUZXN0UG9pbnQsIEhpdFRlc3REZXNjZW5kYW50cykgJiYKICAgICAgICAgICAgIGlzSGl0Q2Fu
ZGlkYXRlKHRoaXMsIGZhbHNlLCB6T2Zmc2V0Rm9yQ29udGVudHNQdHIsIHVuZmxhdHRlbmVkVHJh
bnNmb3JtU3RhdGUuZ2V0KCkpKSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0LmlzUmVjdEJhc2Vk
VGVzdCgpKQpAQCAtMzU0NCw3ICszNTQ0LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpo
aXRUZXN0TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnQKICAg
ICAgICAgcmV0dXJuIGNhbmRpZGF0ZUxheWVyOwogCiAgICAgaWYgKGJnUmVjdC5pbnRlcnNlY3Rz
KGhpdFRlc3RBcmVhKSAmJiBpc1NlbGZQYWludGluZ0xheWVyKCkpIHsKLSAgICAgICAgSGl0VGVz
dFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQudG9wUGFkZGluZygpLCBy
ZXN1bHQucmlnaHRQYWRkaW5nKCksIHJlc3VsdC5ib3R0b21QYWRkaW5nKCksIHJlc3VsdC5sZWZ0
UGFkZGluZygpKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2lu
dCgpLCByZXN1bHQudG9wUGFkZGluZygpLCByZXN1bHQucmlnaHRQYWRkaW5nKCksIHJlc3VsdC5i
b3R0b21QYWRkaW5nKCksIHJlc3VsdC5sZWZ0UGFkZGluZygpLCByZXN1bHQuc2hhZG93Q29udGVu
dEZpbHRlclBvbGljeSgpKTsKICAgICAgICAgaWYgKGhpdFRlc3RDb250ZW50cyhyZXF1ZXN0LCB0
ZW1wUmVzdWx0LCBsYXllckJvdW5kcywgaGl0VGVzdFBvaW50LCBIaXRUZXN0U2VsZikgJiYKICAg
ICAgICAgICAgIGlzSGl0Q2FuZGlkYXRlKHRoaXMsIGZhbHNlLCB6T2Zmc2V0Rm9yQ29udGVudHNQ
dHIsIHVuZmxhdHRlbmVkVHJhbnNmb3JtU3RhdGUuZ2V0KCkpKSB7CiAgICAgICAgICAgICBpZiAo
cmVzdWx0LmlzUmVjdEJhc2VkVGVzdCgpKQpAQCAtMzYwMCw3ICszNjAwLDcgQEAgUmVuZGVyTGF5
ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCwg
UmVuZGVyTGF5ZXIqIHIKICAgICBmb3IgKGludCBpID0gbGlzdC0+c2l6ZSgpIC0gMTsgaSA+PSAw
OyAtLWkpIHsKICAgICAgICAgUmVuZGVyTGF5ZXIqIGNoaWxkTGF5ZXIgPSBsaXN0LT5hdChpKTsK
ICAgICAgICAgUmVuZGVyTGF5ZXIqIGhpdExheWVyID0gMDsKLSAgICAgICAgSGl0VGVzdFJlc3Vs
dCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQudG9wUGFkZGluZygpLCByZXN1bHQu
cmlnaHRQYWRkaW5nKCksIHJlc3VsdC5ib3R0b21QYWRkaW5nKCksIHJlc3VsdC5sZWZ0UGFkZGlu
ZygpKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCBy
ZXN1bHQudG9wUGFkZGluZygpLCByZXN1bHQucmlnaHRQYWRkaW5nKCksIHJlc3VsdC5ib3R0b21Q
YWRkaW5nKCksIHJlc3VsdC5sZWZ0UGFkZGluZygpLCByZXN1bHQuc2hhZG93Q29udGVudEZpbHRl
clBvbGljeSgpKTsKICAgICAgICAgaWYgKGNoaWxkTGF5ZXItPmlzUGFnaW5hdGVkKCkpCiAgICAg
ICAgICAgICBoaXRMYXllciA9IGhpdFRlc3RQYWdpbmF0ZWRDaGlsZExheWVyKGNoaWxkTGF5ZXIs
IHJvb3RMYXllciwgcmVxdWVzdCwgdGVtcFJlc3VsdCwgaGl0VGVzdFJlY3QsIGhpdFRlc3RQb2lu
dCwgdHJhbnNmb3JtU3RhdGUsIHpPZmZzZXRGb3JEZXNjZW5kYW50cyk7CiAgICAgICAgIGVsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA3MzIzMTlhLi42NDUzMDhiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC04NDksMTQgKzg0OSwxNCBAQCB1
bnNpZ25lZCBJbnRlcm5hbHM6OnRvdWNoRXZlbnRIYW5kbGVyQ291bnQoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBFeGNlcHRpb25Db2RlJiBlYwogfQogCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBJbnRlcm5h
bHM6Om5vZGVzRnJvbVJlY3QoRG9jdW1lbnQqIGRvY3VtZW50LCBpbnQgeCwgaW50IHksIHVuc2ln
bmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywKLSAgICB1bnNpZ25lZCBib3R0
b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZywgRXhj
ZXB0aW9uQ29kZSYgZWMpIGNvbnN0CisgICAgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWdu
ZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250
ZW50LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFk
b2N1bWVudC0+ZnJhbWUoKSB8fCAhZG9jdW1lbnQtPmZyYW1lKCktPnZpZXcoKSkgewogICAgICAg
ICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0g
ICAgcmV0dXJuIGRvY3VtZW50LT5ub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0
UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGlnbm9yZUNsaXBwaW5nKTsKKyAg
ICByZXR1cm4gZG9jdW1lbnQtPm5vZGVzRnJvbVJlY3QoeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQ
YWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgaWdub3JlQ2xpcHBpbmcsIGFsbG93
U2hhZG93Q29udGVudCk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjplbWl0SW5zcGVjdG9yRGlkQmVn
aW5GcmFtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA2ZmUxYTI1Li5kMjY4
OGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBw
dWJsaWM6CiAgICAgdW5zaWduZWQgdG91Y2hFdmVudEhhbmRsZXJDb3VudChEb2N1bWVudCosIEV4
Y2VwdGlvbkNvZGUmKTsKIAogICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3Qo
RG9jdW1lbnQqLCBpbnQgeCwgaW50IHksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJp
Z2h0UGFkZGluZywKLSAgICAgICAgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVm
dFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAg
ICAgICAgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wg
aWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBFeGNlcHRpb25Db2RlJikg
Y29uc3Q7CiAKICAgICB2b2lkIGVtaXRJbnNwZWN0b3JEaWRCZWdpbkZyYW1lKCk7CiAgICAgdm9p
ZCBlbWl0SW5zcGVjdG9yRGlkQ2FuY2VsRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbAppbmRleCBjY2FmNTA5Li4zZGJiZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCkBAIC0xMjEsNyArMTIxLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAgICAg
Tm9kZUxpc3Qgbm9kZXNGcm9tUmVjdChpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gbG9uZyB4LCBp
biBsb25nIHksCiAgICAgICAgICAgICBpbiB1bnNpZ25lZCBsb25nIHRvcFBhZGRpbmcsIGluIHVu
c2lnbmVkIGxvbmcgcmlnaHRQYWRkaW5nLCBpbiB1bnNpZ25lZCBsb25nIGJvdHRvbVBhZGRpbmcs
IGluIHVuc2lnbmVkIGxvbmcgbGVmdFBhZGRpbmcsCi0gICAgICAgICAgICBpbiBib29sZWFuIGln
bm9yZUNsaXBwaW5nKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgICAgICBpbiBib29s
ZWFuIGlnbm9yZUNsaXBwaW5nLCBpbiBib29sZWFuIGFsbG93U2hhZG93Q29udGVudCkgcmFpc2Vz
IChET01FeGNlcHRpb24pOwogCiAgICAgICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZEJlZ2luRnJh
bWUoKTsKICAgICAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlkQ2FuY2VsRnJhbWUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCBjNGM5OWYzLi5iMDY0NDgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9B
cGkvcXdlYnBhZ2UuY3BwCkBAIC0xNTY3LDcgKzE1NjcsNyBAQCBJbnRQb2ludCBRV2ViUGFnZVBy
aXZhdGU6OlRvdWNoQWRqdXN0ZXI6OmZpbmRDYW5kaWRhdGVQb2ludEZvclRvdWNoKGNvbnN0IElu
dFBvaQogICAgIGludCB4ID0gdG91Y2hQb2ludC54KCk7CiAgICAgaW50IHkgPSB0b3VjaFBvaW50
LnkoKTsKIAotICAgIFJlZlB0cjxOb2RlTGlzdD4gaW50ZXJzZWN0ZWROb2RlcyA9IGRvY3VtZW50
LT5ub2Rlc0Zyb21SZWN0KHgsIHksIG1fdG9wUGFkZGluZywgbV9yaWdodFBhZGRpbmcsIG1fYm90
dG9tUGFkZGluZywgbV9sZWZ0UGFkZGluZywgZmFsc2UpOworICAgIFJlZlB0cjxOb2RlTGlzdD4g
aW50ZXJzZWN0ZWROb2RlcyA9IGRvY3VtZW50LT5ub2Rlc0Zyb21SZWN0KHgsIHksIG1fdG9wUGFk
ZGluZywgbV9yaWdodFBhZGRpbmcsIG1fYm90dG9tUGFkZGluZywgbV9sZWZ0UGFkZGluZywgZmFs
c2UgLyppZ25vcmVDbGlwcGluZyovLCBmYWxzZSAvKmFsbG93U2hhZG93Q29udGVudCovKTsKICAg
ICBpZiAoIWludGVyc2VjdGVkTm9kZXMpCiAgICAgICAgIHJldHVybiBJbnRQb2ludCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0
Mi93aW4vV2ViS2l0Mi5kZWYKaW5kZXggZjBiNzZjYS4uYzBkYjQ2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJL
aXQyLmRlZgpAQCAtMjQzLDUgKzI0Myw1IEBAIEVYUE9SVFMKICAgICAgICAgP3V0ZjhAU3RyaW5n
QFdURkBAUUJFP0FWQ1N0cmluZ0AyQF9OQFoKICAgICAgICAgP3ZpZXdARG9jdW1lbnRAV2ViQ29y
ZUBAUUJFUEFWRnJhbWVWaWV3QDJAWFoKICAgICAgICAgP3dpbGxEZXRhY2hQYWdlQEZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBVQUVYWFoKLSAgICAgICAgP25vZGVzRnJvbVJlY3RA
RG9jdW1lbnRAV2ViQ29yZUBAUUJFP0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBA
V1RGQEBISElJSUlfTkBaCisgICAgICAgID9ub2Rlc0Zyb21SZWN0QERvY3VtZW50QFdlYkNvcmVA
QFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxpc3RAV2ViQ29yZUBAQFdURkBASEhJSUlJX04wQFoK
ICAgICAgICAgP3NlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yQEVkaXRvckBXZWJDb3JlQEBRQkVf
Tlc0TWFya2VyVHlwZUBEb2N1bWVudE1hcmtlckAyQEhIQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9h
dXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVy
CmluZGV4IGRmOTQzMDkuLjIxNGI0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMTMy
LDcgKzEzMiw3IEBAIF9aTjdXZWJDb3JlMjRGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIxNHdpbGxE
ZXRhY2hQYWdlRXY7CiBfWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczMxaXNNdWx0
aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZEU7CiBfWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRG
ZWF0dXJlczMyc2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWRFYjsKIF9aTjdXZWJDb3Jl
MjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMThpc1NoYWRvd0RPTUVuYWJsZWRFOwotX1pOSzdXZWJD
b3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamI7CitfWk5LN1dlYkNvcmU4RG9jdW1l
bnQxM25vZGVzRnJvbVJlY3RFaWlqampqYmI7CiBfWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVj
U3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzhOb2RlTGlzdEU7CiBfWk5LN1dlYkNv
cmU2RWRpdG9yMjZzZWxlY3Rpb25TdGFydEhhc01hcmtlckZvckVOU18xNERvY3VtZW50TWFya2Vy
MTBNYXJrZXJUeXBlRWlpOwogbG9jYWw6Ci0tIAoxLjcuNS40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135877</attachid>
            <date>2012-04-05 12:29:03 -0700</date>
            <delta_ts>2012-04-05 12:38:48 -0700</delta_ts>
            <desc>(committed r113358) line left over after a rebase before landing</desc>
            <filename>0001-2012-04-05-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>1771</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA2OTY2ZTBhM2E0MDU2NDJhYjU4ZjI4NTZkNjhkMzJhM2I2M2IyZjk2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
VGh1LCA1IEFwciAyMDEyIDE1OjI0OjM0IC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMi0wNC0w
NSAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgoKICAgICAgICBVbnJldmlld2VkIGJp
dCBsZWZ0IG92ZXIgZnJvbSByZWJhc2luZyB0aGUgb3JpZ2luIHBhdGNoIGJlZm9yZSBsYW5kaW5n
IGl0LgoKICAgICAgICBDb21wbGVtZW50YXJ5IHRvIHIxMTMzMjkuCgogICAgICAgICogcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuY3BwOgogICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpv
cGVyYXRvcj0pOgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICB8ICAgIDkgKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3Vs
dC5jcHAgfCAgICAzICsrLQogMiBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxIGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5OTEyNzFhLi4xNThkOGY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTItMDQtMDUgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNv
bT4KKworICAgICAgICBVbnJldmlld2VkIGJpdCBsZWZ0IG92ZXIgZnJvbSByZWJhc2luZyB0aGUg
b3JpZ2luIHBhdGNoIGJlZm9yZSBsYW5kaW5nIGl0LgorCisgICAgICAgIENvbXBsZW1lbnRhcnkg
dG8gcjExMzMyOS4KKworICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPSk6CisKIDIwMTItMDQtMDUg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTMyNDEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggNzRmMGFkYS4uMmEyZWYyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtMTM4LDcgKzEzOCw4IEBAIEhpdFRl
c3RSZXN1bHQmIEhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0JiBv
dGhlcikKICAgICAgICAgbV90b3BQYWRkaW5nID0gbV9yaWdodFBhZGRpbmcgPSBtX2JvdHRvbVBh
ZGRpbmcgPSBtX2xlZnRQYWRkaW5nID0gMDsKIAogICAgIG1fcmVjdEJhc2VkVGVzdFJlc3VsdCA9
IGFkb3B0UHRyKG90aGVyLm1fcmVjdEJhc2VkVGVzdFJlc3VsdCA/IG5ldyBOb2RlU2V0KCpvdGhl
ci5tX3JlY3RCYXNlZFRlc3RSZXN1bHQpIDogMCk7Ci0gICAgCisgICAgbV9zaGFkb3dDb250ZW50
RmlsdGVyUG9saWN5ID0gb3RoZXIuc2hhZG93Q29udGVudEZpbHRlclBvbGljeSgpOworCiAgICAg
bV9yZWdpb24gPSBvdGhlci5tX3JlZ2lvbjsKIAogICAgIHJldHVybiAqdGhpczsKLS0gCjEuNy41
LjQKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>