<?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>69009</bug_id>
          
          <creation_ts>2011-09-28 10:50:49 -0700</creation_ts>
          <short_desc>Code clean-up: Make RenderObject::absoluteBoundingBoxRect and associated methods const and make its parameter useTransforms no longer default to false</short_desc>
          <delta_ts>2011-10-06 14:35:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>69047</blocked>
    
    <blocked>69051</blocked>
    
    <blocked>69053</blocked>
    
    <blocked>69052</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Fady Samuel">fsamuel</reporter>
          <assigned_to name="Fady Samuel">fsamuel</assigned_to>
          <cc>fsamuel</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>rjkroege</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>474835</commentid>
    <comment_count>0</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-28 10:50:49 -0700</bug_when>
    <thetext>Code clean-up: Make RenderObject::absoluteBoundingBoxRect and associated methods const and make its parameter useTransforms no longer default</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474838</commentid>
    <comment_count>1</comment_count>
      <attachid>109037</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-28 10:54:13 -0700</bug_when>
    <thetext>Created attachment 109037
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474846</commentid>
    <comment_count>2</comment_count>
      <attachid>109037</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-28 11:04:46 -0700</bug_when>
    <thetext>Comment on attachment 109037
Patch

How would you feel about changing the useTransforms param to be an enum, for better readability?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474852</commentid>
    <comment_count>3</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-28 11:06:41 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 109037 [details])
&gt; How would you feel about changing the useTransforms param to be an enum, for better readability?

Will do, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474860</commentid>
    <comment_count>4</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-28 11:16:58 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 109037 [details] [details])
&gt; &gt; How would you feel about changing the useTransforms param to be an enum, for better readability?
&gt; 
&gt; Will do, thanks.

To minimize going back and forth, could you please give me the definition of the enum you had in mind? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474896</commentid>
    <comment_count>5</comment_count>
      <attachid>109037</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-28 12:12:35 -0700</bug_when>
    <thetext>Comment on attachment 109037
Patch

r- since we&apos;re going to change things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474962</commentid>
    <comment_count>6</comment_count>
      <attachid>109063</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-28 13:29:22 -0700</bug_when>
    <thetext>Created attachment 109063
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474972</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-28 13:37:03 -0700</bug_when>
    <thetext>Sorry, I was mid-typing and got pulled into a meeting.

Another option here is to have:

absoluteBoundingBoxRect(bool useTransforms = true)
absoluteBoundingBoxRectIgnoringTransforms() const { return absoluteBoundingBoxRect(false); }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474974</commentid>
    <comment_count>8</comment_count>
      <attachid>109064</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-28 13:37:29 -0700</bug_when>
    <thetext>Created attachment 109064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474993</commentid>
    <comment_count>9</comment_count>
      <attachid>109064</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-09-28 13:55:02 -0700</bug_when>
    <thetext>Comment on attachment 109064
Patch

Attachment 109064 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9889129</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475065</commentid>
    <comment_count>10</comment_count>
      <attachid>109084</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-28 16:12:45 -0700</bug_when>
    <thetext>Created attachment 109084
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475068</commentid>
    <comment_count>11</comment_count>
      <attachid>109085</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-28 16:25:03 -0700</bug_when>
    <thetext>Created attachment 109085
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475077</commentid>
    <comment_count>12</comment_count>
      <attachid>109084</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-28 16:43:42 -0700</bug_when>
    <thetext>Comment on attachment 109084
Patch

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

&gt; Source/WebCore/dom/Element.cpp:576
&gt; +    return renderer()-&gt;view()-&gt;frameView()-&gt;contentsToScreen(renderer()-&gt;absoluteBoundingBoxRectIgnoringTransforms());

Please add a &quot;// FIXME: this should probably respect transforms&quot;

&gt; Source/WebCore/html/shadow/SliderThumbElement.cpp:220
&gt; +    LayoutPoint absoluteThumbOrigin = renderBox()-&gt;absoluteBoundingBoxRectIgnoringTransforms().location();

I&apos;d like to see a  comment saying why it&apos;s OK to ignore transforms. It&apos;s not clear to me that this code works correctly with transforms.

&gt; Source/WebCore/html/shadow/TextControlInnerElements.cpp:539
&gt; +    IntRect rect = renderer()-&gt;absoluteBoundingBoxRectIgnoringTransforms();

This looks broken, please add a FIXME

&gt; Source/WebCore/rendering/RenderFileUploadControl.cpp:135
&gt; +        LayoutUnit textY = buttonRenderer-&gt;absoluteBoundingBoxRectIgnoringTransforms().y()

Seems like this will never work with transforms. Add a FIXME</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475078</commentid>
    <comment_count>13</comment_count>
      <attachid>109085</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-28 16:44:14 -0700</bug_when>
    <thetext>Comment on attachment 109085
Patch

Transferring r+ but please see comments on previous patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475090</commentid>
    <comment_count>14</comment_count>
      <attachid>109094</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-28 17:04:30 -0700</bug_when>
    <thetext>Created attachment 109094
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475114</commentid>
    <comment_count>15</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-28 17:26:38 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Created an attachment (id=109094) [details]
&gt; Patch

I will commit this tomorrow morning as I don&apos;t want to break anything in the evening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475326</commentid>
    <comment_count>16</comment_count>
      <attachid>109094</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-09-29 02:15:09 -0700</bug_when>
    <thetext>Comment on attachment 109094
Patch

Attachment 109094 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9888457</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475573</commentid>
    <comment_count>17</comment_count>
      <attachid>109183</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-29 12:01:16 -0700</bug_when>
    <thetext>Created attachment 109183
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475621</commentid>
    <comment_count>18</comment_count>
      <attachid>109183</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-09-29 12:55:39 -0700</bug_when>
    <thetext>Comment on attachment 109183
Patch

Attachment 109183 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9888612</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475644</commentid>
    <comment_count>19</comment_count>
      <attachid>109197</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-29 13:31:30 -0700</bug_when>
    <thetext>Created attachment 109197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475648</commentid>
    <comment_count>20</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-29 13:36:28 -0700</bug_when>
    <thetext>Please don&apos;t keep putting patches up in review. You can just transfer my r+ if there are insubstantial changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475653</commentid>
    <comment_count>21</comment_count>
      <attachid>109197</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-29 13:41:10 -0700</bug_when>
    <thetext>Comment on attachment 109197
Patch

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

&gt; Source/WebCore/dom/Element.cpp:576
&gt; +    // FIXME: this should probably respect transforms

WebKit comment formatting style is:

    // FIXME: This should probably respect transforms.

But an even better comment would have a word or two about why. It get us that much closer to thinking about what kind of test case we would construct.

&gt; Source/WebCore/html/shadow/SliderThumbElement.cpp:220
&gt; +    // FIXME: this should probably respect transforms 

Ditto.

&gt; Source/WebCore/rendering/RenderFileUploadControl.cpp:135
&gt; +        // FIXME: make this work with transforms.

Same complaint about this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475663</commentid>
    <comment_count>22</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-29 13:50:42 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 109197 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=109197&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Element.cpp:576
&gt; &gt; +    // FIXME: this should probably respect transforms
&gt; 
&gt; WebKit comment formatting style is:
&gt; 
&gt;     // FIXME: This should probably respect transforms.
&gt; 
&gt; But an even better comment would have a word or two about why. It get us that much closer to thinking about what kind of test case we would construct.
&gt; 
&gt; &gt; Source/WebCore/html/shadow/SliderThumbElement.cpp:220
&gt; &gt; +    // FIXME: this should probably respect transforms 
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderFileUploadControl.cpp:135
&gt; &gt; +        // FIXME: make this work with transforms.
&gt; 
&gt; Same complaint about this.

I think the goal is (Simon, please correct me if I&apos;m wrong) to make sure all instances of absoluteBoundingBoxRect take transforms into account, and any call that does not is suspect. The FIXME indicates this code needs further scrutiny and not necessarily a bug. I&apos;ve filed bugs for each of these FIXMEs and will investigate further and either fix the bugs or remove the comment in later patchs. Please see the four bug reports under the Blocks section.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475668</commentid>
    <comment_count>23</comment_count>
      <attachid>109200</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-29 14:02:27 -0700</bug_when>
    <thetext>Created attachment 109200
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476166</commentid>
    <comment_count>24</comment_count>
      <attachid>109311</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-30 10:44:07 -0700</bug_when>
    <thetext>Created attachment 109311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477178</commentid>
    <comment_count>25</comment_count>
      <attachid>109515</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-10-03 13:12:25 -0700</bug_when>
    <thetext>Created attachment 109515
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477362</commentid>
    <comment_count>26</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-10-03 17:13:20 -0700</bug_when>
    <thetext>Did you mean to request review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477377</commentid>
    <comment_count>27</comment_count>
      <attachid>109515</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-10-03 17:35:49 -0700</bug_when>
    <thetext>Comment on attachment 109515
Patch

Not much has changed but it finally builds on Windows!!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477378</commentid>
    <comment_count>28</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-10-03 17:36:08 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Did you mean to request review?

Please, it should finally build on Windows now!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477781</commentid>
    <comment_count>29</comment_count>
      <attachid>109515</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-04 11:23:40 -0700</bug_when>
    <thetext>Comment on attachment 109515
Patch

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

Doesn’t seem like a big improvements, but seems OK.

&gt; Source/WebCore/html/shadow/SliderThumbElement.cpp:43
&gt; +#include &quot;RenderObject.h&quot;

This include is should not be added. RenderDeprecatedFlexibleBox.h already includes it, and if we did need to include something it would be farther down the inheritance tree than RenderObject.h.

&gt; Source/WebCore/html/shadow/SliderThumbElement.cpp:220
&gt; +    // FIXME: this should probably respect transforms 

Format of this comment is not right. We use sentence style where the first letter is capitalized and a period ends the sentence.

&gt; Source/WebCore/html/shadow/TextControlInnerElements.cpp:41
&gt; +#include &quot;RenderObject.h&quot;

This include is should not be added. RenderTextControlSingleLine.h already includes it, and if we did need to include something it would be farther down the inheritance tree than RenderObject.h.

&gt; Source/WebCore/rendering/RenderFileUploadControl.cpp:135
&gt; +        // FIXME: make this work with transforms.

Again, wrong format.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477969</commentid>
    <comment_count>30</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-10-04 14:42:35 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 109515 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=109515&amp;action=review
&gt; 
&gt; Doesn’t seem like a big improvements, but seems OK.
&gt; 
&gt; &gt; Source/WebCore/html/shadow/SliderThumbElement.cpp:43
&gt; &gt; +#include &quot;RenderObject.h&quot;
&gt; 
&gt; This include is should not be added. RenderDeprecatedFlexibleBox.h already includes it, and if we did need to include something it would be farther down the inheritance tree than RenderObject.h.
&gt; 
&gt; &gt; Source/WebCore/html/shadow/SliderThumbElement.cpp:220
&gt; &gt; +    // FIXME: this should probably respect transforms 
&gt; 
&gt; Format of this comment is not right. We use sentence style where the first letter is capitalized and a period ends the sentence.
&gt; 
&gt; &gt; Source/WebCore/html/shadow/TextControlInnerElements.cpp:41
&gt; &gt; +#include &quot;RenderObject.h&quot;
&gt; 
&gt; This include is should not be added. RenderTextControlSingleLine.h already includes it, and if we did need to include something it would be farther down the inheritance tree than RenderObject.h.
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderFileUploadControl.cpp:135
&gt; &gt; +        // FIXME: make this work with transforms.
&gt; 
&gt; Again, wrong format.

Thanks, will fix. Ultimately, this patch stemmed out of my wanting to land this fix with layout tests:

https://bugs.webkit.org/show_bug.cgi?id=66062

and reveal some other bugs that will fix bit by bit. 

I will be adding to and exposing PopupMenuClient to window.internals to allow for testing. This change was necessary (and independently useful), so I thought I&apos;d do this as a first step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477996</commentid>
    <comment_count>31</comment_count>
      <attachid>109703</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-10-04 15:15:50 -0700</bug_when>
    <thetext>Created attachment 109703
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477999</commentid>
    <comment_count>32</comment_count>
      <attachid>109703</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-04 15:24:15 -0700</bug_when>
    <thetext>Comment on attachment 109703
Patch

Rejecting attachment 109703 from review queue.

fsamuel@chromium.org does not have reviewer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have reviewer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have reviewer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your reviewer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478029</commentid>
    <comment_count>33</comment_count>
      <attachid>109703</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-04 15:57:27 -0700</bug_when>
    <thetext>Comment on attachment 109703
Patch

Rejecting attachment 109703 from commit-queue.

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

Last 500 characters of output:
ines).
patching file Source/WebKit/qt/Api/qwebframe.cpp
patching file Source/WebKit/qt/ChangeLog
patching file Source/WebKit2/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebKit2/win/WebKit2.def
patching file Source/WebKit2/win/WebKit2CFLite.def
patching file Source/autotools/symbols.filter
Hunk #1 succeeded at 41 with fuzz 2 (offset -2 lines).

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

Full output: http://queues.webkit.org/results/9942523</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478038</commentid>
    <comment_count>34</comment_count>
      <attachid>109703</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-04 16:02:07 -0700</bug_when>
    <thetext>Comment on attachment 109703
Patch

Rejecting attachment 109703 from commit-queue.

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

Last 500 characters of output:
ines).
patching file Source/WebKit/qt/Api/qwebframe.cpp
patching file Source/WebKit/qt/ChangeLog
patching file Source/WebKit2/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebKit2/win/WebKit2.def
patching file Source/WebKit2/win/WebKit2CFLite.def
patching file Source/autotools/symbols.filter
Hunk #1 succeeded at 41 with fuzz 2 (offset -2 lines).

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

Full output: http://queues.webkit.org/results/9954221</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479151</commentid>
    <comment_count>35</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-10-06 07:36:50 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 109703 [details])
&gt; Rejecting attachment 109703 [details] from commit-queue.
&gt; 
&gt; Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2
&gt; 
&gt; Last 500 characters of output:
&gt; ines).
&gt; patching file Source/WebKit/qt/Api/qwebframe.cpp
&gt; patching file Source/WebKit/qt/ChangeLog
&gt; patching file Source/WebKit2/ChangeLog
&gt; Hunk #1 succeeded at 1 with fuzz 3.
&gt; patching file Source/WebKit2/win/WebKit2.def
&gt; patching file Source/WebKit2/win/WebKit2CFLite.def
&gt; patching file Source/autotools/symbols.filter
&gt; Hunk #1 succeeded at 41 with fuzz 2 (offset -2 lines).
&gt; 
&gt; Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Simon Fraser&apos;, u&apos;--for...&quot; exit_code: 1
&gt; 
&gt; Full output: http://queues.webkit.org/results/9954221

Wow, this code changes very rapidly. It&apos;s hard to get it all to apply cleanly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479275</commentid>
    <comment_count>36</comment_count>
      <attachid>109976</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-10-06 10:50:02 -0700</bug_when>
    <thetext>Created attachment 109976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479416</commentid>
    <comment_count>37</comment_count>
      <attachid>109976</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-06 13:18:17 -0700</bug_when>
    <thetext>Comment on attachment 109976
Patch

Rejecting attachment 109976 from commit-queue.

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

Last 500 characters of output:
-commit-queue/ChangeLog does not appear to be a valid reviewer according to committers.py.
ERROR: /mnt/git/webkit-commit-queue/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).
Updating OpenSource
Current branch master is up to date.
Updating chromium port dependencies using gclient...

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/9981323</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479442</commentid>
    <comment_count>38</comment_count>
      <attachid>110010</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-10-06 13:48:50 -0700</bug_when>
    <thetext>Created attachment 110010
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479451</commentid>
    <comment_count>39</comment_count>
      <attachid>110014</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-10-06 13:55:52 -0700</bug_when>
    <thetext>Created attachment 110014
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479494</commentid>
    <comment_count>40</comment_count>
      <attachid>110014</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-06 14:35:39 -0700</bug_when>
    <thetext>Comment on attachment 110014
Patch for landing

Clearing flags on attachment: 110014

Committed r96859: &lt;http://trac.webkit.org/changeset/96859&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479496</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-06 14:35:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109037</attachid>
            <date>2011-09-28 10:54:13 -0700</date>
            <delta_ts>2011-09-28 13:29:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69009-20110928135411.patch</filename>
            <type>text/plain</type>
            <size>34245</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYyMTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MTNiNDA4NGUxYTEyZmM3
YTkzNzViMWVmMmU3ODExZDkzZDQ4MDdiLi5iYzkwYzhkMTkyMjFiY2M2YmZhNDdmMjk0MWQxNGFl
N2Y2ZTZjNGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTEtMDktMjggIEZhZHkg
U2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDog
TWFrZSBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVk
IG1ldGhvZHMgY29uc3QgYW5kIG1ha2UgaXRzIHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxv
bmdlciBkZWZhdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02OTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwY29taW5nIHBhdGNoZXMgbWF5IG1ha2UgdXNlIG9mIGFic29sdXRlQm91bmRpbmdCb3hS
ZWN0IG9uIGEgY29uc3QgUmVuZGVyT2JqZWN0LCBzbyB0aGlzIG5lZWRlZCB0byBiZSBmaXhlZC4K
KyAgICAgICAgTWFraW5nIHVzZVRyYW5zZm9ybXMgbm90IGRlZmF1bHQgcGFydGlhbGx5IGFkZHJl
c3NlcyBhIGZpeCBtZTogLy8gRklYTUU6IHVzZVRyYW5zZm9ybXMgc2hvdWxkIGdvIGF3YXkgZXZl
bnR1YWxseSAgCisgICAgICAgIGJ5IG1ha2luZyBpdCBhcHBhcmVudCB3aGVyZSB0aGlzIHBhcmFt
ZXRlciBpcyB1c2VkIGFuZCB3aXRoIHdoYXQgdmFsdWUuCisKKyAgICAgICAgKiBkb20vRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzY3JlZW5SZWN0KToKKyAgICAgICAg
KiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2xpZGVyVGh1bWJFbGVtZW50OjpzZXRQb3NpdGlvbkZyb21Qb2ludCk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzdGFydFNwZWVjaElucHV0KToKKyAgICAg
ICAgKiBwbHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omdl
dFBsdWdpbk9jY2x1c2lvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVj
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJRnJhbWU6OmZsYXR0ZW5GcmFtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFic29sdXRl
UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVBYnNv
bHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6YWJzb2x1dGVRdWFk
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRl
UXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVu
dUxpc3Q6OnNob3dQb3B1cCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWRkQWJzb2x1dGVSZWN0Rm9yTGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpwYWludGluZ1Jvb3RSZWN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2Jq
ZWN0OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRleHQ6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJWaWV3OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVmlldy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQmxvY2s6OmFic29sdXRlUmVjdHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdIaWRkZW5Db250YWluZXI6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5l
OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGlu
ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmFic29sdXRlUmVjdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmFic29sdXRlUXVhZHMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHVGV4dDo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0Lmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpib3VuZGluZ0JveCk6CisKIDIwMTEtMDktMjggIFZzZXZvbG9k
IFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
UmVmYWN0b3Igc2VhcmNoaW5nIGluIGluc3BlY3RvciwgYWRkIHRlc3QgKGZpeGVkIG5vbiByZWdl
eCBzZWFyY2gpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGIxNjYyM2JhYWM5MzEwMWIxM2My
MzRkNDMzNDU2N2JlMmU2N2U2MGUuLjBlZTBlNDFkZmNkZjZiNGNjMDU0YTg0ODIxZjA3NmJmOTQ3
OTQwNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTU3Myw3ICs1NzMsNyBAQCBMYXlvdXRS
ZWN0IEVsZW1lbnQ6OnNjcmVlblJlY3QoKSBjb25zdAogewogICAgIGlmICghcmVuZGVyZXIoKSkK
ICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKLSAgICByZXR1cm4gcmVuZGVyZXIoKS0+dmll
dygpLT5mcmFtZVZpZXcoKS0+Y29udGVudHNUb1NjcmVlbihyZW5kZXJlcigpLT5hYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdCgpKTsKKyAgICByZXR1cm4gcmVuZGVyZXIoKS0+dmlldygpLT5mcmFtZVZp
ZXcoKS0+Y29udGVudHNUb1NjcmVlbihyZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dChmYWxzZSkpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRl
Q2FzZShjb25zdCBFbGVtZW50KiBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1NsaWRlclRodW1iRWxlbWVudC5jcHAKaW5kZXggNWQxNzhhZjA3OWFiNGNmYmQ5ZDBmNzIwNDNm
YWYzZDg3YzQ4YmNiOC4uODE4NDZjNzY2MjFiNzBiOGJjNTU5NDI3NDA3Njk3NWE5MmQ5NmZlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
Y3BwCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OnNldFBvc2l0
aW9uRnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKICAgICAvLyBXZSBuZWVkIHRv
IGNhbGN1bGF0ZSBjdXJyZW50UG9zaXRpb24gZnJvbSBhYnNvbHV0ZSBwb2ludHMgYmVjYXVlIHRo
ZQogICAgIC8vIHJlbmRlcmVyIGZvciB0aGlzIG5vZGUgaXMgdXN1YWxseSBvbiBhIGxheWVyIGFu
ZCByZW5kZXJCb3goKS0+eCgpIGFuZAogICAgIC8vIHkoKSBhcmUgdW51c2FibGUuCi0gICAgTGF5
b3V0UG9pbnQgYWJzb2x1dGVUaHVtYk9yaWdpbiA9IHJlbmRlckJveCgpLT5hYnNvbHV0ZUJvdW5k
aW5nQm94UmVjdCgpLmxvY2F0aW9uKCk7CisgICAgTGF5b3V0UG9pbnQgYWJzb2x1dGVUaHVtYk9y
aWdpbiA9IHJlbmRlckJveCgpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChmYWxzZSkubG9jYXRp
b24oKTsKICAgICBMYXlvdXRQb2ludCBhYnNvbHV0ZVNsaWRlckNvbnRlbnRPcmlnaW4gPSByb3Vu
ZGVkTGF5b3V0UG9pbnQoaW5wdXQtPnJlbmRlcmVyKCktPmxvY2FsVG9BYnNvbHV0ZSgpKTsKICAg
ICBpZiAoaXNWZXJ0aWNhbCkgewogICAgICAgICB0cmFja1NpemUgPSBpbnB1dC0+cmVuZGVyQm94
KCktPmNvbnRlbnRIZWlnaHQoKSAtIHJlbmRlckJveCgpLT5oZWlnaHQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3Bw
CmluZGV4IGJmMTg1Y2Y3YjBmMDk2YjkzYzg4ODMyMDZiYTMzNzRkMDQ5MzQ1ZDUuLmNiMTQ3YTRi
OGExNTFkMGJlY2Y2YmVlNmExZGE4ZWFjYmU5MTY2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtNTM1
LDcgKzUzNSw3IEBAIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OnN0YXJ0U3Bl
ZWNoSW5wdXQoKQogICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBpbnB1dCA9IHN0YXRpY19j
YXN0PEhUTUxJbnB1dEVsZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5vZGUoKSk7CiAgICAgQXRvbWlj
U3RyaW5nIGxhbmd1YWdlID0gaW5wdXQtPmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpOwogICAg
IFN0cmluZyBncmFtbWFyID0gaW5wdXQtPmdldEF0dHJpYnV0ZSh3ZWJraXRncmFtbWFyQXR0cik7
Ci0gICAgSW50UmVjdCByZWN0ID0gcmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3Qo
KTsKKyAgICBJbnRSZWN0IHJlY3QgPSByZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dChmYWxzZSk7CiAgICAgaWYgKHNwZWVjaElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24obV9saXN0
ZW5lcklkLCByZWN0LCBsYW5ndWFnZSwgZ3JhbW1hciwgZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKSkpCiAgICAgICAgIHNldFN0YXRlKFJlY29yZGluZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuY3BwCmluZGV4IGMwYWExZTQxMzZjNDk0MmYyOWFm
ODg0ZjMyMTY4ODVjN2FjNTViNzkuLmRkMmNkZTNkOTZiNDMyNjg4MWQ1OTdkNDM4MzQ3Y2Y3NTFl
YWQ4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBv
cnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuY3Bw
CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBnZXRQbHVnaW5PY2NsdXNpb25zKEVsZW1lbnQqIGVs
ZW1lbnQsIFdpZGdldCogcGFyZW50V2lkZ2V0LCBjb25zdCBJbnRSZWN0JgogICAgICAgICBSZW5k
ZXJPYmplY3QqIGlmcmFtZVJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKIAogICAgICAg
ICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlmcmFtZVRhZykKLSAgICAgICAg
ICAgICYmIGlmcmFtZVJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpLmludGVyc2Vj
dHMoZnJhbWVSZWN0KQorICAgICAgICAgICAgJiYgaWZyYW1lUmVuZGVyZXItPmFic29sdXRlQm91
bmRpbmdCb3hSZWN0KGZhbHNlKS5pbnRlcnNlY3RzKGZyYW1lUmVjdCkKICAgICAgICAgICAgICYm
ICghaWZyYW1lUmVuZGVyZXItPnN0eWxlKCkgfHwgaWZyYW1lUmVuZGVyZXItPnN0eWxlKCktPnZp
c2liaWxpdHkoKSA9PSBWSVNJQkxFKSkgewogICAgICAgICAgICAgZ2V0T2JqZWN0U3RhY2soaWZy
YW1lUmVuZGVyZXIsICZpZnJhbWVac3RhY2spOwogICAgICAgICAgICAgaWYgKGlmcmFtZUlzQWJv
dmVQbHVnaW4oaWZyYW1lWnN0YWNrLCBwbHVnaW5ac3RhY2spKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCAwMGYzZjNkODA0OGU1MDJlOTJiZGY2MTYyMGE0
MmViY2NlNTBmM2E3Li41ZDUzZWU0NDA4NDBhMTY4MjU0NjJkZGNjZDU5NzI2MGE2MDM0ODRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTU4MzksNyArNTgz
OSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnNldFBhZ2VMb2dpY2FsT2Zmc2V0KGludCBsb2dpY2Fs
T2Zmc2V0KQogICAgIG1fcmFyZURhdGEtPm1fcGFnZUxvZ2ljYWxPZmZzZXQgPSBsb2dpY2FsT2Zm
c2V0OwogfQogCi12b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRS
ZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkKK3ZvaWQg
UmVuZGVyQmxvY2s6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29u
c3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewogICAgIC8vIEZvciBi
bG9ja3MgaW5zaWRlIGlubGluZXMsIHdlIGdvIGFoZWFkIGFuZCBpbmNsdWRlIG1hcmdpbnMgc28g
dGhhdCB3ZSBydW4gcmlnaHQgdXAgdG8gdGhlCiAgICAgLy8gaW5saW5lIGJveGVzIGFib3ZlIGFu
ZCBiZWxvdyB1cyAodGh1cyBnZXR0aW5nIG1lcmdlZCB3aXRoIHRoZW0gdG8gZm9ybSBhIHNpbmds
ZSBpcnJlZ3VsYXIKQEAgLTU4NTUsNyArNTg1NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFic29s
dXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFj
CiAgICAgICAgIHJlY3RzLmFwcGVuZChMYXlvdXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBzaXpl
KCkpKTsKIH0KIAotdm9pZCBSZW5kZXJCbG9jazo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRR
dWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJCbG9jazo6YWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewog
ICAgIC8vIEZvciBibG9ja3MgaW5zaWRlIGlubGluZXMsIHdlIGdvIGFoZWFkIGFuZCBpbmNsdWRl
IG1hcmdpbnMgc28gdGhhdCB3ZSBydW4gcmlnaHQgdXAgdG8gdGhlCiAgICAgLy8gaW5saW5lIGJv
eGVzIGFib3ZlIGFuZCBiZWxvdyB1cyAodGh1cyBnZXR0aW5nIG1lcmdlZCB3aXRoIHRoZW0gdG8g
Zm9ybSBhIHNpbmdsZSBpcnJlZ3VsYXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmgKaW5kZXggMDk3NzI3ZThiNTM1ODJmY2FiN2NkOTMyZTY0YTk3MDdmZjllZDY4NC4uZjgxYjJm
ZTYxNzE2YjlhMGM5NmQ5NzA3NjYwNWM3NDdiOGRmYzU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmgKQEAgLTY4Miw4ICs2ODIsOCBAQCBwcml2YXRlOgogICAgIExheW91
dFVuaXQgbG9naWNhbExlZnRTZWxlY3Rpb25PZmZzZXQoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywg
TGF5b3V0VW5pdCBwb3NpdGlvbik7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRTZWxlY3Rp
b25PZmZzZXQoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgTGF5b3V0VW5pdCBwb3NpdGlvbik7CiAg
ICAgCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+Jiwg
Y29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQg
YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlv
dXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNv
bHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiAg
ICAgTGF5b3V0VW5pdCBkZXNpcmVkQ29sdW1uV2lkdGgoKSBjb25zdDsKICAgICB1bnNpZ25lZCBk
ZXNpcmVkQ29sdW1uQ291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAKaW5kZXggNWM4YmVlOTI1YzNhZjk3YjRiMzJmY2VlMDZhOTA5YjkxOWQzOTJmMS4uM2I0
OTMzMDgxNmU3MjUzZDE3MGFlYzUzZjQ3NDY2ZGVjZTEyOTkzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTQ2NiwxMiArNDY2LDEyIEBAIHZvaWQgUmVuZGVyQm94
OjpzZXRTY3JvbGxUb3AoTGF5b3V0VW5pdCBuZXdUb3ApCiAgICAgICAgIGxheWVyKCktPnNjcm9s
bFRvWU9mZnNldChuZXdUb3AsIFJlbmRlckxheWVyOjpTY3JvbGxPZmZzZXRDbGFtcGVkKTsKIH0K
IAotdm9pZCBSZW5kZXJCb3g6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywg
Y29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KQordm9pZCBSZW5kZXJCb3g6OmFi
c29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewogICAgIHJlY3RzLmFwcGVuZChMYXlvdXRSZWN0KGFj
Y3VtdWxhdGVkT2Zmc2V0LCBzaXplKCkpKTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OmFic29sdXRl
UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkKK3ZvaWQgUmVu
ZGVyQm94OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2Fz
Rml4ZWQpIGNvbnN0CiB7CiAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxv
YXRSZWN0KDAsIDAsIHdpZHRoKCksIGhlaWdodCgpKSwgZmFsc2UsIHdhc0ZpeGVkKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggNDVkNDQ2MGVlNDg1YzNhMTg1NGY5
MzYwZjZlODRkY2Q1NTc0YWRlZi4uOGM2MjRmZGQ0ZTZhZjA5ZmUxNjE1OWUyZGQ3ZTk0ZWYyZDlh
NGVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMjMyLDggKzIzMiw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFVuaXQgY29sbGFwc2VkTWFyZ2luQmVmb3Jl
KCkgY29uc3QgeyByZXR1cm4gbWFyZ2luQmVmb3JlKCk7IH0KICAgICB2aXJ0dWFsIExheW91dFVu
aXQgY29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBtYXJnaW5BZnRlcigpOyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25z
dCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9pZCBhYnNv
bHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1
YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50
JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVh
ZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAgICAgCiAgICAg
SW50UmVjdCByZWZsZWN0aW9uQm94KCkgY29uc3Q7CiAgICAgaW50IHJlZmxlY3Rpb25PZmZzZXQo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxl
VXBsb2FkQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVw
bG9hZENvbnRyb2wuY3BwCmluZGV4IGY5NDQ5MWYzMWM1YThlNWZkMjAyMjQ1MDE5NTRlNGI0NmVm
MDg0NjYuLmFmYWMzZWExMzdmMzEwZDk3MjRmNjRiZDQwMzZkMmVhMjlhYTEyYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNw
cApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnBhaW50
T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2luCiAgICAgICAgICAg
ICB0ZXh0WCA9IGNvbnRlbnRMZWZ0ICsgY29udGVudFdpZHRoKCkgLSBidXR0b25BbmRJY29uV2lk
dGggLSBmb250LndpZHRoKHRleHRSdW4pOwogICAgICAgICAvLyBXZSB3YW50IHRvIG1hdGNoIHRo
ZSBidXR0b24ncyBiYXNlbGluZQogICAgICAgICBSZW5kZXJCdXR0b24qIGJ1dHRvblJlbmRlcmVy
ID0gdG9SZW5kZXJCdXR0b24oYnV0dG9uLT5yZW5kZXJlcigpKTsKLSAgICAgICAgTGF5b3V0VW5p
dCB0ZXh0WSA9IGJ1dHRvblJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpLnkoKQor
ICAgICAgICBMYXlvdXRVbml0IHRleHRZID0gYnV0dG9uUmVuZGVyZXItPmFic29sdXRlQm91bmRp
bmdCb3hSZWN0KGZhbHNlKS55KCkKICAgICAgICAgICAgICsgYnV0dG9uUmVuZGVyZXItPmJhc2Vs
aW5lUG9zaXRpb24oQWxwaGFiZXRpY0Jhc2VsaW5lLCB0cnVlLCBIb3Jpem9udGFsTGluZSwgUG9z
aXRpb25PbkNvbnRhaW5pbmdMaW5lKTsKIAogICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0
RmlsbENvbG9yKHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9y
KSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklGcmFtZS5jcHAKaW5kZXggMTEyOTdiNWRiN2E5ZjdhMmQwOWU0NjU5NDNjNDg3ZTE4NmYxNWFk
MC4uNDFiNmJiYjhiMmVjMzMzY2FmYzJlNDc3ZGVkZjczOTgzMTU3NGRlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBib29s
IFJlbmRlcklGcmFtZTo6ZmxhdHRlbkZyYW1lKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgLy8gRG8gbm90IGZsYXR0ZW4gb2Zmc2NyZWVuIGlubmVyIGZyYW1lcyBkdXJpbmcgZnJhbWUg
ZmxhdHRlbmluZywgYXMgZmxhdHRlbmluZyBtaWdodCBtYWtlIHRoZW0gdmlzaWJsZS4KLSAgICBJ
bnRSZWN0IGJvdW5kaW5nUmVjdCA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgSW50
UmVjdCBib3VuZGluZ1JlY3QgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChmYWxzZSk7CiAgICAg
cmV0dXJuIGJvdW5kaW5nUmVjdC5tYXhYKCkgPiAwICYmIGJvdW5kaW5nUmVjdC5tYXhZKCkgPiAw
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDZj
YTlkM2ZiMWU5MmQwMmNiYzkwYmE0ZGMzM2JhMTliZDg0YjI4MDQuLjNmMDk2MzNiMDA4ZDk1NmZh
MWY3ZTIxODJlMzBjNGRkMjA1YWMzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAg
ICAgbV9saW5lQm94ZXMucGFpbnQodGhpcywgcGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiB9CiAK
LXZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVj
dHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkKK3ZvaWQgUmVuZGVySW5s
aW5lOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91
dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QKIHsKICAgICBpZiAoIWFsd2F5c0NyZWF0
ZUxpbmVCb3hlcygpKQogICAgICAgICBjdWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKHRoaXMsIHJl
Y3RzLCB0b0xheW91dFNpemUoYWNjdW11bGF0ZWRPZmZzZXQpKTsKQEAgLTQ4NSw3ICs0ODUsNyBA
QCB2b2lkIFJlbmRlcklubGluZTo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJl
Y3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYQogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6
OmN1bGxlZElubGluZUFic29sdXRlUmVjdHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIs
IFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFNpemUmIG9mZnNldCkKK3Zv
aWQgUmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlcklu
bGluZSogY29udGFpbmVyLCBWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRT
aXplJiBvZmZzZXQpIGNvbnN0CiB7CiAgICAgaWYgKCFjdWxsZWRJbmxpbmVGaXJzdExpbmVCb3go
KSkgewogICAgICAgICByZWN0cy5hcHBlbmQoSW50UmVjdChvZmZzZXQud2lkdGgoKSwgb2Zmc2V0
LmhlaWdodCgpLCAwLCAwKSk7CkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6
OmN1bGxlZElubGluZUFic29sdXRlUmVjdHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIs
IFZlY3QKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFJlbmRlcklubGluZTo6
YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBj
b25zdAogewogICAgIGlmICghYWx3YXlzQ3JlYXRlTGluZUJveGVzKCkpCiAgICAgICAgIGN1bGxl
ZElubGluZUFic29sdXRlUXVhZHModGhpcywgcXVhZHMpOwpAQCAtNTY5LDcgKzU2OSw3IEBAIHZv
aWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywg
Ym9vbCogd2FzRml4ZWQpCiAgICAgICAgIGNvbnRpbnVhdGlvbigpLT5hYnNvbHV0ZVF1YWRzKHF1
YWRzLCB3YXNGaXhlZCk7CiB9CiAKLXZvaWQgUmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVBYnNv
bHV0ZVF1YWRzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8RmxvYXRRdWFk
PiYgcXVhZHMpCit2b2lkIFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1dGVRdWFkcyhj
b25zdCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKSBj
b25zdAogewogICAgIGlmICghY3VsbGVkSW5saW5lRmlyc3RMaW5lQm94KCkpIHsKICAgICAgICAg
cXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCBhZmQ0YWFkNDQ4YjBlODE4MTkzMjll
YTBhYTY4NmU1YjA5Y2ViNjY3Li5mZTk1YWYxZmUxODc1NDI2NWJhOTc5MDlmN2VkYjZlYjNlNzNh
ZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCkBAIC00Niw4ICs0
Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luU3RhcnQoKSBjb25z
dDsKICAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luRW5kKCkgY29uc3Q7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRz
KFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBh
YnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIExh
eW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBjb25zdCBMYXlvdXRQ
b2ludCYpIGNvbnN0OwogCkBAIC0xMDIsOCArMTAyLDggQEAgcHJpdmF0ZToKICAgICBMYXlvdXRS
ZWN0IGN1bGxlZElubGluZVZpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3goKSBjb25zdDsKICAgICBJ
bmxpbmVCb3gqIGN1bGxlZElubGluZUZpcnN0TGluZUJveCgpIGNvbnN0OwogICAgIElubGluZUJv
eCogY3VsbGVkSW5saW5lTGFzdExpbmVCb3goKSBjb25zdDsKLSAgICB2b2lkIGN1bGxlZElubGlu
ZUFic29sdXRlUmVjdHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxMYXlv
dXRSZWN0PiYsIGNvbnN0IExheW91dFNpemUmKTsKLSAgICB2b2lkIGN1bGxlZElubGluZUFic29s
dXRlUXVhZHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxGbG9hdFF1YWQ+
Jik7CisgICAgdm9pZCBjdWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlcklubGlu
ZSogY29udGFpbmVyLCBWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRTaXplJikgY29u
c3Q7CisgICAgdm9pZCBjdWxsZWRJbmxpbmVBYnNvbHV0ZVF1YWRzKGNvbnN0IFJlbmRlcklubGlu
ZSogY29udGFpbmVyLCBWZWN0b3I8RmxvYXRRdWFkPiYpIGNvbnN0OwogCiAgICAgdm9pZCBhZGRD
aGlsZFRvQ29udGludWF0aW9uKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCog
YmVmb3JlQ2hpbGQpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZElnbm9yaW5nQ29udGludWF0
aW9uKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IDg5
N2FhODhlYWYxZWEyYTQ2ZWQxMzZmNTBmN2M2MjYyMzkxMzllMDEuLmQ4ZjVjODU4ZGVkZTQzZDVk
ZTE1MzczYmMyMzBmNGZlODU0MDEyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmNwcApAQCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6
OnNob3dQb3B1cCgpCiAgICAgLy8gQ29tcHV0ZSB0aGUgdG9wIGxlZnQgdGFraW5nIHRyYW5zZm9y
bXMgaW50byBhY2NvdW50LCBidXQgdXNlCiAgICAgLy8gdGhlIGFjdHVhbCB3aWR0aCBvZiB0aGUg
ZWxlbWVudCB0byBzaXplIHRoZSBwb3B1cC4KICAgICBGbG9hdFBvaW50IGFic1RvcExlZnQgPSBs
b2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCgpLCBmYWxzZSwgdHJ1ZSk7Ci0gICAgTGF5b3V0UmVj
dCBhYnNCb3VuZHMgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIExheW91dFJlY3Qg
YWJzQm91bmRzID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpOwogICAgIGFic0JvdW5k
cy5zZXRMb2NhdGlvbihyb3VuZGVkSW50UG9pbnQoYWJzVG9wTGVmdCkpOwogICAgIG1fcG9wdXAt
PnNob3coYWJzQm91bmRzLCBkb2N1bWVudCgpLT52aWV3KCksCiAgICAgICAgIHNlbGVjdC0+b3B0
aW9uVG9MaXN0SW5kZXgoc2VsZWN0LT5zZWxlY3RlZEluZGV4KCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggYTQ1ZTYwZDg2NWRmMGE1NjExYTAxNjI2
ZDBhZGVhNTZiMWQ3YmY5NC4uOWQyZjNlZmY2YTgxZGVkOGE2M2YxZTEyZmZiNzZkYzVkZWQ3YTNj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTExNTUs
NyArMTE1NSw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpwYWludE91dGxpbmUoR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IExheW91dFJlCiAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotSW50UmVjdCBSZW5kZXJPYmplY3Q6
OmFic29sdXRlQm91bmRpbmdCb3hSZWN0KGJvb2wgdXNlVHJhbnNmb3JtcykKK0ludFJlY3QgUmVu
ZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybXMpIGNv
bnN0CiB7CiAgICAgaWYgKHVzZVRyYW5zZm9ybXMpIHsKICAgICAgICAgVmVjdG9yPEZsb2F0UXVh
ZD4gcXVhZHM7CkBAIC0xMjA1LDE0ICsxMjA1LDE0IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjphYnNv
bHV0ZUZvY3VzUmluZ1F1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykKIHZvaWQgUmVuZGVy
T2JqZWN0OjphZGRBYnNvbHV0ZVJlY3RGb3JMYXllcihJbnRSZWN0JiByZXN1bHQpCiB7CiAgICAg
aWYgKGhhc0xheWVyKCkpCi0gICAgICAgIHJlc3VsdC51bml0ZShhYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCgpKTsKKyAgICAgICAgcmVzdWx0LnVuaXRlKGFic29sdXRlQm91bmRpbmdCb3hSZWN0KGZh
bHNlKSk7CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGN1cnJlbnQgPSBmaXJzdENoaWxkKCk7IGN1
cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0U2libGluZygpKQogICAgICAgICBjdXJyZW50
LT5hZGRBYnNvbHV0ZVJlY3RGb3JMYXllcihyZXN1bHQpOwogfQogCiBMYXlvdXRSZWN0IFJlbmRl
ck9iamVjdDo6cGFpbnRpbmdSb290UmVjdChMYXlvdXRSZWN0JiB0b3BMZXZlbFJlY3QpCiB7Ci0g
ICAgTGF5b3V0UmVjdCByZXN1bHQgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIExh
eW91dFJlY3QgcmVzdWx0ID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpOwogICAgIHRv
cExldmVsUmVjdCA9IHJlc3VsdDsKICAgICBmb3IgKFJlbmRlck9iamVjdCogY3VycmVudCA9IGZp
cnN0Q2hpbGQoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkpCiAg
ICAgICAgIGN1cnJlbnQtPmFkZEFic29sdXRlUmVjdEZvckxheWVyKHJlc3VsdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggZWNmNTIyNzIxYTgwZWNjYzdmMjUz
NDg3M2VlOTI4NjFkNWE4MWZjYS4uZjExZTQ3Y2U5MTk0ZjQ3ZDM4ZDA4MGE5ZWU0NDAwZjUwMTU0
N2M0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtNjIxLDEy
ICs2MjEsMTIgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUgb2Zmc2V0IGZyb20gYW4gb2Jq
ZWN0IHVwIHRoZSBjb250YWluZXIoKSBjaGFpbi4gQXNzZXJ0cyB0aGF0IG5vbmUgb2YgdGhlIGlu
dGVybWVkaWF0ZSBvYmplY3RzIGhhdmUgdHJhbnNmb3Jtcy4KICAgICBMYXlvdXRTaXplIG9mZnNl
dEZyb21BbmNlc3RvckNvbnRhaW5lcihSZW5kZXJPYmplY3QqKSBjb25zdDsKICAgICAKLSAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlv
dXRQb2ludCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlv
dXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JikgY29uc3QgeyB9CiAgICAgLy8gRklYTUU6IHVz
ZVRyYW5zZm9ybXMgc2hvdWxkIGdvIGF3YXkgZXZlbnR1YWxseQotICAgIEludFJlY3QgYWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm1zID0gZmFsc2UpOworICAgIEludFJl
Y3QgYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm1zKSBjb25zdDsKIAog
ICAgIC8vIEJ1aWxkIGFuIGFycmF5IG9mIHF1YWRzIGluIGFic29sdXRlIGNvb3JkcyBmb3IgbGlu
ZSBib3hlcwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiwgYm9vbCogLyp3YXNGaXhlZCovID0gMCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRl
UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiAvKndhc0ZpeGVkKi8gPSAwKSBjb25zdCB7
IH0KIAogICAgIHZvaWQgYWJzb2x1dGVGb2N1c1JpbmdRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggZTg4ODYxZjNk
MDRhMDg2ODQ0ZDNhNzBkMjE1YTQ3NGRlNjg5MjRjOS4uNmI2ZGEyNDQ0ZTEyYzczMjZmMTk2ZDY0
Yjg4MTI1ODgyNzRmOThjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNw
cApAQCAtMzAxLDcgKzMwMSw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gUmVuZGVyVGV4dDo6
b3JpZ2luYWxUZXh0KCkgY29uc3QKICAgICByZXR1cm4gKGUgJiYgZS0+aXNUZXh0Tm9kZSgpKSA/
IHN0YXRpY19jYXN0PFRleHQqPihlKS0+ZGF0YUltcGwoKSA6IDA7CiB9CiAKLXZvaWQgUmVuZGVy
VGV4dDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlv
dXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCit2b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUmVj
dHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0KSBjb25zdAogewogICAgIGZvciAoSW5saW5lVGV4dEJveCogYm94ID0gZmlyc3RU
ZXh0Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKQogICAgICAgICByZWN0cy5h
cHBlbmQoZW5jbG9zaW5nTGF5b3V0UmVjdChGbG9hdFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQgKyBi
b3gtPnRvcExlZnQoKSwgYm94LT5zaXplKCkpKSk7CkBAIC0zODgsNyArMzg4LDcgQEAgc3RhdGlj
IEludFJlY3QgZWxsaXBzaXNSZWN0Rm9yQm94KElubGluZVRleHRCb3gqIGJveCwgdW5zaWduZWQg
c3RhcnRQb3MsIHVuc2lnbmUKICAgICByZXR1cm4gSW50UmVjdCgpOwogfQogICAgIAotdm9pZCBS
ZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCog
d2FzRml4ZWQsIENsaXBwaW5nT3B0aW9uIG9wdGlvbikKK3ZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1
dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkLCBDbGlwcGlu
Z09wdGlvbiBvcHRpb24pIGNvbnN0CiB7CiAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3ggPSBm
aXJzdFRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKICAgICAgICAg
SW50UmVjdCBib3VuZGFyaWVzID0gYm94LT5jYWxjdWxhdGVCb3VuZGFyaWVzKCk7CkBAIC00MDUs
NyArNDA1LDcgQEAgdm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQsIENsaXBwaW4KICAgICB9CiB9CiAgICAgCi12b2lk
IFJlbmRlclRleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29s
KiB3YXNGaXhlZCkKK3ZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRR
dWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGFic29sdXRlUXVhZHMo
cXVhZHMsIHdhc0ZpeGVkLCBOb0NsaXBwaW5nKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5oCmluZGV4IDQwMjBkOGFhMzcxMjJkMTI1ZDFkYzRlZjExMDcwOWQxOGY5NTEzOTgu
LjQyZTlhZWM5NmIzYjMyYjJkMTllM2JjNTE5NWMxM2Q0NzFjYTA5MzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAtNTQsMTQgKzU0LDE0IEBAIHB1YmxpYzoKICAgICBJ
bmxpbmVUZXh0Qm94KiBjcmVhdGVJbmxpbmVUZXh0Qm94KCk7CiAgICAgdm9pZCBkaXJ0eUxpbmVC
b3hlcyhib29sIGZ1bGxMYXlvdXQpOwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMo
VmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0
KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBj
b25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OwogICAgIHZvaWQgYWJz
b2x1dGVSZWN0c0ZvclJhbmdlKFZlY3RvcjxJbnRSZWN0PiYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gVUlOVF9NQVgsIGJvb2wgdXNlU2VsZWN0aW9uSGVp
Z2h0ID0gZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0gMCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJz
b2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVk
KSBjb25zdDsKICAgICB2b2lkIGFic29sdXRlUXVhZHNGb3JSYW5nZShWZWN0b3I8RmxvYXRRdWFk
PiYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gVUlOVF9N
QVgsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0gMCk7
CiAKICAgICBlbnVtIENsaXBwaW5nT3B0aW9uIHsgTm9DbGlwcGluZywgQ2xpcFRvRWxsaXBzaXMg
fTsKLSAgICB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNG
aXhlZCA9IDAsIENsaXBwaW5nT3B0aW9uID0gTm9DbGlwcGluZyk7CisgICAgdm9pZCBhYnNvbHV0
ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQgPSAwLCBDbGlwcGluZ09w
dGlvbiA9IE5vQ2xpcHBpbmcpIGNvbnN0OwogCiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24g
cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggMWZlZmFjNGYwMTkyZWEzZWIwNTQxNWNiMzQzNGFm
NWIwOWY2YTc0MS4uZjQyMWY5ODFkYTI2N2RkNTdkNTk5NGFiYzNlYzFhNzU2NWQxODA1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtMzI5LDEyICszMjksMTIg
QEAgdm9pZCBSZW5kZXJWaWV3Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIEkKICAgICAgICAgcmVjdCA9IG1fbGF5ZXItPnRyYW5z
Zm9ybSgpLT5tYXBSZWN0KHJlY3QpOwogfQogCi12b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUmVj
dHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0KQordm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRS
ZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QK
IHsKICAgICByZWN0cy5hcHBlbmQoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgbV9sYXll
ci0+c2l6ZSgpKSk7CiB9CiAKLXZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJWaWV3OjphYnNv
bHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0
CiB7CiAgICAgaWYgKHdhc0ZpeGVkKQogICAgICAgICAqd2FzRml4ZWQgPSBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IGU2ZDdkOGY3NTVmNWI3N2JiN2Q5OTA4
NzBlNWE2YWRhYWE0OWZlNjcuLjlhNmY2M2Q5MGZiZjIxYTYwN2E1ZGQ1M2Q2MjIwYzhhZjQxYWRm
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtODYsOCArODYsOCBA
QCBwdWJsaWM6CiAKICAgICBib29sIHByaW50aW5nKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0
ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRl
ZE9mZnNldCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZs
b2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiAgICAgdm9pZCBzZXRNYXhpbWFsT3V0bGluZVNpemUoaW50IG8pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcAppbmRleCAy
YzgxNTkwOGViZjZiOTg5MDY3NTdkOGJjNTRiZTY5NDdhNzE3OWUzLi43YjE2YTRkNWJmYzljYjdi
YjY1ZTY1YmIxNWFiYzhlMmY2ZWJhZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFJlbmRlclNW
R0Jsb2NrOjp1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKQogICAgIHNldEhhc092ZXJmbG93
Q2xpcChmYWxzZSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHQmxvY2s6OmFic29sdXRlUmVjdHMoVmVj
dG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKQordm9pZCBSZW5kZXJTVkdCbG9j
azo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYp
IGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjb2RlIHBhdGggc2hvdWxkIG5ldmVyIGJlIHRha2VuIGZv
ciBTVkcsIGFzIHdlJ3JlIGFzc3VtaW5nIHVzZVRyYW5zZm9ybXM9dHJ1ZSBldmVyeXdoZXJlLCBh
YnNvbHV0ZVF1YWRzIHNob3VsZCBiZSB1c2VkLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCmluZGV4IDIy
YzFmMThlMzZlMDIzMTBiZTdlN2QzZTRlYzgxMjNhMjliNWE3MTQuLjU4Y2YyNjIwYTk4MThkNjRh
ZTI3ODM0ZmVkOGQ0MWI3MTY5MjA0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0Jsb2NrLmgKQEAgLTM4LDcgKzM4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgc2V0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBh
YnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExh
eW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsK
IAogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0
eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SGlkZGVuQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSGlkZGVuQ29udGFpbmVyLmNwcAppbmRleCBkMjlkODVlYzkzOTcxZGVlMThkYjEyYmQ4ZTc4
MDVmNTgxNzcyZjFlLi44OTViMjU0NDkwMDEyM2ZkYmYzZWEwMjU4NTRjYjljZWRiZTA0ZmQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNv
bnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdI
aWRkZW5Db250YWluZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgUmVuZGVyU1ZHSGlkZGVu
Q29udGFpbmVyOjpwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpCiAgICAgLy8g
VGhpcyBzdWJ0cmVlIGRvZXMgbm90IHBhaW50LgogfQogCi12b2lkIFJlbmRlclNWR0hpZGRlbkNv
bnRhaW5lcjo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqKQordm9pZCBS
ZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4m
LCBib29sKikgY29uc3QKIHsKICAgICAvLyBUaGlzIHN1YnRyZWUgZG9lcyBub3QgdGFrZSB1cCBz
cGFjZSBvciBwYWludAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKaW5kZXggZWZmZjkyMTUxZDJjMzYxYTZkMGM4
ZDk3NzdiMzFmNjM0NDY0ZDEwYy4uZjI2YzVmYzYxYTM3ZjgyMDdkNGQ2NDliZTY4MDlkNTJhMmY4
ODI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdI
aWRkZW5Db250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0hpZGRlbkNvbnRhaW5lci5oCkBAIC00NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgCiAg
ICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRl
ckJveE1vZGVsT2JqZWN0KikgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9Ci0gICAgdmly
dHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhl
ZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBi
b29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0RmxvYXRQb2lu
dChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50
JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKaW5kZXggMDk3NzBlZmJmMDI3ZmFj
OWViYTdkYmM3YzRlYTQzN2Y2YWEwMTBiOS4uNGM5MDU4MGYxMzU5YmY2ODFjNzczYWQ1ZDhiYjgx
NmNlZDQyYTYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW5saW5lLmNwcApAQCAtODIsOSArODIsOSBAQCB2b2lkIFJlbmRlclNWR0lubGluZTo6bWFw
TG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcgog
ICAgIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIodGhpcywgcmVwYWludENv
bnRhaW5lciwgdXNlVHJhbnNmb3JtcywgZml4ZWQsIHRyYW5zZm9ybVN0YXRlLCB3YXNGaXhlZCk7
CiB9CiAKLXZvaWQgUmVuZGVyU1ZHSW5saW5lOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFJlbmRlclNWR0lubGluZTo6YWJzb2x1
dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAog
ewotICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0gUmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVuZGVy
U1ZHVGV4dEFuY2VzdG9yKHRoaXMpOworICAgIGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0ID0g
UmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKHRoaXMpOwogICAgIGlm
ICghb2JqZWN0KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCmluZGV4IDBhNjA4MzdmNDc3NTk2OTAzN2U4NDk3NWJj
ZjIwMDgwNjZiYjgyZjcuLmQyZmExY2M1MjQwMjRiNjFhYTdkNGFhNzdhNGU4ZGQ4ZTU2MDg0NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaApA
QCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRP
dmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhl
ZCA9IGZhbHNlKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1z
LCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29s
KiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0
UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBJ
bmxpbmVGbG93Qm94KiBjcmVhdGVJbmxpbmVGbG93Qm94KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCmluZGV4IDE0YzFk
YjhlMGY5M2VhZjU1OGFlZWM4OTJhODcyMzIzY2QxMGQ3MjMuLmZiZTQ5M2I1NGRjZGVjMWM1NzY3
YTQ3OGFhNjYzODZhNTQwMzRiZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCkBAIC03MCwxMyArNzAsMTMgQEAgTGF5
b3V0UmVjdCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHIKICAgICByZXR1cm4gY29udGFpbmVyUmVsYXRpdmVRdWFkLmVu
Y2xvc2luZ0JvdW5kaW5nQm94KCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmFi
c29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKQordm9p
ZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjb2RlIHBhdGggc2hv
dWxkIG5ldmVyIGJlIHRha2VuIGZvciBTVkcsIGFzIHdlJ3JlIGFzc3VtaW5nIHVzZVRyYW5zZm9y
bXM9dHJ1ZSBldmVyeXdoZXJlLCBhYnNvbHV0ZVF1YWRzIHNob3VsZCBiZSB1c2VkLgogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNv
bHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2b2lk
IFJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBx
dWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9B
YnNvbHV0ZVF1YWQoc3Ryb2tlQm91bmRpbmdCb3goKSwgZmFsc2UsIHdhc0ZpeGVkKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0
LmgKaW5kZXggYzI4ZDNjNjYwN2Q1NTRlYTIwYzJiYTVjNWFlZWVkY2MyZGU3M2I3OS4uNzA0MWQ0
NDllZjYzMmM0ZmMzMDA5MjYwZjkyYzAwMDNiMDEwZDdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaApAQCAtNTUsOCArNTUs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4
ZWQgPSBmYWxzZSkgY29uc3Q7CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNG
b3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRQ
b2ludCopIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExh
eW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKLSAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0Zp
eGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQp
IGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3JtcywgYm9vbCBm
aXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJT
dHlsZSogbmV3U3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVGV4dC5jcHAKaW5kZXggYWY0MzliNWQzOGYwODRmMDJhOTIxYjJiYWZhMGQ5YjFhYmQ0NzA4
MS4uMmE3ZDgwY2YyZWY1MjFhOTRmYmQ5NzcyMjBiMWU0ZWUxMjVkNjBkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC0yMjUsNyArMjI1
LDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlclNWR1RleHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29u
c3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Db250ZW4KICAgICByZXR1cm4gY2xvc2VzdEJveC0+cmVu
ZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChMYXlvdXRQb2ludChwb2ludEluQ29udGVudHMueCgp
LCBjbG9zZXN0Qm94LT55KCkpKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdUZXh0OjphYnNvbHV0ZVF1
YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFJlbmRl
clNWR1RleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3
YXNGaXhlZCkgY29uc3QKIHsKICAgICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChz
dHJva2VCb3VuZGluZ0JveCgpLCBmYWxzZSwgd2FzRml4ZWQpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKaW5kZXggYjNlMGY0M2Y4ZjY0OWM3ZmE2
N2UwYjg0MjAzNjdhZjBkNmU5MmQzZS4uYTBhZGE0Y2I0ZWZlOTgwY2FiZTI3YTlmYTUwNGJhYTM5
MDE4OWRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0
LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNM
YXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgp
OwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBi
b29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZs
b2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIExheW91dFJl
Y3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJl
cGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3Qm
LCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCmluZGV4IGQ2NGQwYjdjNDc2OGYxM2NlYmIwOGNhZWQzODEwNGMyOGFiZGVhZDYuLmU0MWI1
ZGQ2ODA3ZDQzMzgzYTk4ZjViOGQ3MzI4YzZhZGE1OTYzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCBQYXNzUmVmUHRyPENsaWVudFJlY3Q+
IEludGVybmFsczo6Ym91bmRpbmdCb3goRWxlbWVudCogZWxlbWVudCwgRXhjZXB0aW9uQ29kZSYg
ZQogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOwogICAg
IGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUoKTsKLSAg
ICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCgpKTsKKyAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKHJlbmRlcmVyLT5hYnNvbHV0
ZUJvdW5kaW5nQm94UmVjdChmYWxzZSkpOwogfQogCiB1bnNpZ25lZCBJbnRlcm5hbHM6Om1hcmtl
ckNvdW50Rm9yTm9kZShOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109063</attachid>
            <date>2011-09-28 13:29:22 -0700</date>
            <delta_ts>2011-09-28 13:37:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69009-20110928162920.patch</filename>
            <type>text/plain</type>
            <size>37523</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYyMTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MTNiNDA4NGUxYTEyZmM3
YTkzNzViMWVmMmU3ODExZDkzZDQ4MDdiLi41NWRlYmYzMGM4OTAxNmQ4N2IwN2FkZGQyNDZkN2Vj
ODZhMTJhNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTEtMDktMjggIEZhZHkg
U2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDog
TWFrZSBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVk
IG1ldGhvZHMgY29uc3QgYW5kIG1ha2UgaXRzIHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxv
bmdlciBkZWZhdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02OTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwY29taW5nIHBhdGNoZXMgbWF5IG1ha2UgdXNlIG9mIGFic29sdXRlQm91bmRpbmdCb3hS
ZWN0IG9uIGEgY29uc3QgUmVuZGVyT2JqZWN0LCBzbyB0aGlzIG5lZWRlZCB0byBiZSBmaXhlZC4K
KyAgICAgICAgTWFraW5nIHVzZVRyYW5zZm9ybXMgbm90IGRlZmF1bHQgYW5kIGFuIGVudW0gcGFy
dGlhbGx5IGFkZHJlc3NlcyAvLyBGSVhNRTogdXNlVHJhbnNmb3JtcyBzaG91bGQgZ28gYXdheSBl
dmVudHVhbGx5ICAKKyAgICAgICAgYnkgbWFraW5nIGl0IGFwcGFyZW50IHdoZXJlIHRoaXMgcGFy
YW1ldGVyIGlzIHVzZWQgYW5kIHdpdGggd2hhdCB2YWx1ZS4KKworICAgICAgICAqIGRvbS9FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcmVlblJlY3QpOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTbGlkZXJUaHVtYkVsZW1lbnQ6OnNldFBvc2l0aW9uRnJvbVBvaW50KToKKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OnN0YXJ0U3BlZWNoSW5wdXQpOgorICAg
ICAgICAqIHBsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0UGx1Z2luT2NjbHVzaW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphYnNvbHV0ZVJlY3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnBhaW50T2Jq
ZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcklGcmFtZTo6ZmxhdHRlbkZyYW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6YWJzb2x1
dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUFi
c29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjphYnNvbHV0ZVF1
YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1
dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
ZW51TGlzdDo6c2hvd1BvcHVwKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphZGRBYnNvbHV0ZVJlY3RGb3JM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnBhaW50aW5nUm9vdFJlY3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmFic29sdXRlUmVjdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclZpZXc6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJWaWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdCbG9jazo6YWJzb2x1dGVSZWN0cyk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR0hpZGRlbkNvbnRhaW5lcjo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxp
bmU6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5s
aW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVSZWN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVRdWFkcyk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdUZXh0OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1RleHQuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OmJvdW5kaW5nQm94KToKKwogMjAxMS0wOS0yOCAgVnNldm9s
b2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBSZWZhY3RvciBzZWFyY2hpbmcgaW4gaW5zcGVjdG9yLCBhZGQgdGVzdCAoZml4ZWQgbm9uIHJl
Z2V4IHNlYXJjaCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYjE2NjIzYmFhYzkzMTAxYjEz
YzIzNGQ0MzM0NTY3YmUyZTY3ZTYwZS4uNjhmMzQxZWEyNzM4ZTE2MjQ5ODA2YTYwZGNkZDE3MjY5
ZjE2YTZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNTczLDcgKzU3Myw3IEBAIExheW91
dFJlY3QgRWxlbWVudDo6c2NyZWVuUmVjdCgpIGNvbnN0CiB7CiAgICAgaWYgKCFyZW5kZXJlcigp
KQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwotICAgIHJldHVybiByZW5kZXJlcigpLT52
aWV3KCktPmZyYW1lVmlldygpLT5jb250ZW50c1RvU2NyZWVuKHJlbmRlcmVyKCktPmFic29sdXRl
Qm91bmRpbmdCb3hSZWN0KCkpOworICAgIHJldHVybiByZW5kZXJlcigpLT52aWV3KCktPmZyYW1l
VmlldygpLT5jb250ZW50c1RvU2NyZWVuKHJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hS
ZWN0KEJCTm9UcmFuc2Zvcm1zKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRJZ25v
cmVBdHRyaWJ1dGVDYXNlKGNvbnN0IEVsZW1lbnQqIGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggYjMz
NjM0OTEzN2FmZDQ5NjIyYzYzZGRhNmI4NDg2ZWY2YWE0MGE0Yi4uYWM4YTM1MmRhMjg3ZDRlYjRj
NGUzNjRjNzNhNjFmMjJlMTRlMDI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtODIzLDcgKzgyMyw3
IEBAIFJlbmRlckJveE1vZGVsT2JqZWN0KiBOb2RlOjpyZW5kZXJCb3hNb2RlbE9iamVjdCgpIGNv
bnN0CiBMYXlvdXRSZWN0IE5vZGU6OmdldFJlY3QoKSBjb25zdAogewogICAgIGlmIChyZW5kZXJl
cigpKQotICAgICAgICByZXR1cm4gcmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3Qo
dHJ1ZSk7CisgICAgICAgIHJldHVybiByZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dChCQlVzZVRyYW5zZm9ybXMpOwogICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiB9CiAgICAgCkBA
IC04MzUsNyArODM1LDcgQEAgTGF5b3V0UmVjdCBOb2RlOjpyZW5kZXJSZWN0KGJvb2wqIGlzUmVw
bGFjZWQpCiAgICAgd2hpbGUgKHJlbmRlcmVyICYmICFyZW5kZXJlci0+aXNCb2R5KCkgJiYgIXJl
bmRlcmVyLT5pc1Jvb3QoKSkgewogICAgICAgICBpZiAocmVuZGVyZXItPmlzUmVuZGVyQmxvY2so
KSB8fCByZW5kZXJlci0+aXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKSB8fCByZW5kZXJlci0+
aXNSZXBsYWNlZCgpKSB7CiAgICAgICAgICAgICAqaXNSZXBsYWNlZCA9IHJlbmRlcmVyLT5pc1Jl
cGxhY2VkKCk7Ci0gICAgICAgICAgICByZXR1cm4gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdC
b3hSZWN0KHRydWUpOworICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5k
aW5nQm94UmVjdChCQlVzZVRyYW5zZm9ybXMpOwogICAgICAgICB9CiAgICAgICAgIHJlbmRlcmVy
ID0gcmVuZGVyZXItPnBhcmVudCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCmluZGV4IDVkMTc4YWYwNzlhYjRjZmJkOWQw
ZjcyMDQzZmFmM2Q4N2M0OGJjYjguLjkyY2VjMWZmMDVmMzA1ZGZlYTQ2MjdiNDRhNzM1MmYxZTUz
NTdiMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1i
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMu
aCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94LmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVy
U2xpZGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290
LmgiCkBAIC0yMTYsNyArMjE3LDcgQEAgdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OnNldFBvc2l0
aW9uRnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKICAgICAvLyBXZSBuZWVkIHRv
IGNhbGN1bGF0ZSBjdXJyZW50UG9zaXRpb24gZnJvbSBhYnNvbHV0ZSBwb2ludHMgYmVjYXVlIHRo
ZQogICAgIC8vIHJlbmRlcmVyIGZvciB0aGlzIG5vZGUgaXMgdXN1YWxseSBvbiBhIGxheWVyIGFu
ZCByZW5kZXJCb3goKS0+eCgpIGFuZAogICAgIC8vIHkoKSBhcmUgdW51c2FibGUuCi0gICAgTGF5
b3V0UG9pbnQgYWJzb2x1dGVUaHVtYk9yaWdpbiA9IHJlbmRlckJveCgpLT5hYnNvbHV0ZUJvdW5k
aW5nQm94UmVjdCgpLmxvY2F0aW9uKCk7CisgICAgTGF5b3V0UG9pbnQgYWJzb2x1dGVUaHVtYk9y
aWdpbiA9IHJlbmRlckJveCgpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChCQk5vVHJhbnNmb3Jt
cykubG9jYXRpb24oKTsKICAgICBMYXlvdXRQb2ludCBhYnNvbHV0ZVNsaWRlckNvbnRlbnRPcmln
aW4gPSByb3VuZGVkTGF5b3V0UG9pbnQoaW5wdXQtPnJlbmRlcmVyKCktPmxvY2FsVG9BYnNvbHV0
ZSgpKTsKICAgICBpZiAoaXNWZXJ0aWNhbCkgewogICAgICAgICB0cmFja1NpemUgPSBpbnB1dC0+
cmVuZGVyQm94KCktPmNvbnRlbnRIZWlnaHQoKSAtIHJlbmRlckJveCgpLT5oZWlnaHQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuY3BwCmluZGV4IGJmMTg1Y2Y3YjBmMDk2YjkzYzg4ODMyMDZiYTMzNzRkMDQ5MzQ1ZDUu
LmFkZWM4Nzc2YTAzNTUwOWVjZGVhMmVhMGMwY2QyZTcyNjc0ZjQ3OWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNw
cApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3Qu
aCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaCIKICNpbmNsdWRlICJT
Y3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKQEAgLTUzNSw3
ICs1MzYsNyBAQCB2b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzdGFydFNwZWVj
aElucHV0KCkKICAgICBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gaW5wdXQgPSBzdGF0aWNfY2Fz
dDxIVE1MSW5wdXRFbGVtZW50Kj4oc2hhZG93QW5jZXN0b3JOb2RlKCkpOwogICAgIEF0b21pY1N0
cmluZyBsYW5ndWFnZSA9IGlucHV0LT5jb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKTsKICAgICBT
dHJpbmcgZ3JhbW1hciA9IGlucHV0LT5nZXRBdHRyaWJ1dGUod2Via2l0Z3JhbW1hckF0dHIpOwot
ICAgIEludFJlY3QgcmVjdCA9IHJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7
CisgICAgSW50UmVjdCByZWN0ID0gcmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3Qo
QkJOb1RyYW5zZm9ybXMpOwogICAgIGlmIChzcGVlY2hJbnB1dCgpLT5zdGFydFJlY29nbml0aW9u
KG1fbGlzdGVuZXJJZCwgcmVjdCwgbGFuZ3VhZ2UsIGdyYW1tYXIsIGRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCkpKQogICAgICAgICBzZXRTdGF0ZShSZWNvcmRpbmcpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcAppbmRleCBlNjg5YjUy
NTBiNmE4NjhlYTVhNTUwZDZkYWFiYTI5NDVhNzhmNjlkLi41ODA3YjFmYWYyNjMzOWRiNzBiZjYx
ODhjZWYwNjU1YmMzMzVhNWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NTm9kZUhpZ2hsaWdodGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
Tm9kZUhpZ2hsaWdodGVyLmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgZHJhd05vZGVIaWdo
bGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBIaWdobGlnaHREYXRhKiBoaWdobGlnaHRE
YXRhKQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRTaXplIG1haW5GcmFtZU9mZnNldCA9
IGZyYW1lVG9NYWluRnJhbWVPZmZzZXQoY29udGFpbmluZ0ZyYW1lKTsKLSAgICBMYXlvdXRSZWN0
IGJvdW5kaW5nQm94ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KHRydWUpOwor
ICAgIExheW91dFJlY3QgYm91bmRpbmdCb3ggPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoQkJVc2VUcmFuc2Zvcm1zKTsKIAogICAgIGJvdW5kaW5nQm94Lm1vdmUobWFpbkZyYW1l
T2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9JRnJhbWVTaGlt
U3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmNw
cAppbmRleCBjMGFhMWU0MTM2YzQ5NDJmMjlhZjg4NGYzMjE2ODg1YzdhYzU1Yjc5Li4xNDA4OWVk
NjI5NzA2M2YyODY5ZmIwMzA5YzA0ZmUxZjg0ODA3YjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgZ2V0
UGx1Z2luT2NjbHVzaW9ucyhFbGVtZW50KiBlbGVtZW50LCBXaWRnZXQqIHBhcmVudFdpZGdldCwg
Y29uc3QgSW50UmVjdCYKICAgICAgICAgUmVuZGVyT2JqZWN0KiBpZnJhbWVSZW5kZXJlciA9IGVs
ZW1lbnQtPnJlbmRlcmVyKCk7CiAKICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjppZnJhbWVUYWcpCi0gICAgICAgICAgICAmJiBpZnJhbWVSZW5kZXJlci0+YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QoKS5pbnRlcnNlY3RzKGZyYW1lUmVjdCkKKyAgICAgICAgICAgICYm
IGlmcmFtZVJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChCQk5vVHJhbnNmb3Jtcyku
aW50ZXJzZWN0cyhmcmFtZVJlY3QpCiAgICAgICAgICAgICAmJiAoIWlmcmFtZVJlbmRlcmVyLT5z
dHlsZSgpIHx8IGlmcmFtZVJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJM
RSkpIHsKICAgICAgICAgICAgIGdldE9iamVjdFN0YWNrKGlmcmFtZVJlbmRlcmVyLCAmaWZyYW1l
WnN0YWNrKTsKICAgICAgICAgICAgIGlmIChpZnJhbWVJc0Fib3ZlUGx1Z2luKGlmcmFtZVpzdGFj
aywgcGx1Z2luWnN0YWNrKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKaW5kZXggMDBmM2YzZDgwNDhlNTAyZTkyYmRmNjE2MjBhNDJlYmNjZTUwZjNhNy4uNWQ1M2Vl
NDQwODQwYTE2ODI1NDYyZGRjY2Q1OTcyNjBhNjAzNDg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC01ODM5LDcgKzU4MzksNyBAQCB2b2lkIFJlbmRlckJs
b2NrOjpzZXRQYWdlTG9naWNhbE9mZnNldChpbnQgbG9naWNhbE9mZnNldCkKICAgICBtX3JhcmVE
YXRhLT5tX3BhZ2VMb2dpY2FsT2Zmc2V0ID0gbG9naWNhbE9mZnNldDsKIH0KIAotdm9pZCBSZW5k
ZXJCbG9jazo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCit2b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0
ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCkgY29uc3QKIHsKICAgICAvLyBGb3IgYmxvY2tzIGluc2lkZSBpbmxpbmVz
LCB3ZSBnbyBhaGVhZCBhbmQgaW5jbHVkZSBtYXJnaW5zIHNvIHRoYXQgd2UgcnVuIHJpZ2h0IHVw
IHRvIHRoZQogICAgIC8vIGlubGluZSBib3hlcyBhYm92ZSBhbmQgYmVsb3cgdXMgKHRodXMgZ2V0
dGluZyBtZXJnZWQgd2l0aCB0aGVtIHRvIGZvcm0gYSBzaW5nbGUgaXJyZWd1bGFyCkBAIC01ODU1
LDcgKzU4NTUsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlv
dXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhYwogICAgICAgICByZWN0cy5hcHBl
bmQoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSk7CiB9CiAKLXZvaWQgUmVu
ZGVyQmxvY2s6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3
YXNGaXhlZCkKK3ZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVh
ZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICAvLyBGb3IgYmxvY2tzIGlu
c2lkZSBpbmxpbmVzLCB3ZSBnbyBhaGVhZCBhbmQgaW5jbHVkZSBtYXJnaW5zIHNvIHRoYXQgd2Ug
cnVuIHJpZ2h0IHVwIHRvIHRoZQogICAgIC8vIGlubGluZSBib3hlcyBhYm92ZSBhbmQgYmVsb3cg
dXMgKHRodXMgZ2V0dGluZyBtZXJnZWQgd2l0aCB0aGVtIHRvIGZvcm0gYSBzaW5nbGUgaXJyZWd1
bGFyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IDA5NzcyN2U4YjUz
NTgyZmNhYjdjZDkzMmU2NGE5NzA3ZmY5ZWQ2ODQuLmY4MWIyZmU2MTcxNmI5YTBjOTZkOTcwNzY2
MDVjNzQ3YjhkZmM1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBA
IC02ODIsOCArNjgyLDggQEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0U2Vs
ZWN0aW9uT2Zmc2V0KFJlbmRlckJsb2NrKiByb290QmxvY2ssIExheW91dFVuaXQgcG9zaXRpb24p
OwogICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0U2VsZWN0aW9uT2Zmc2V0KFJlbmRlckJsb2Nr
KiByb290QmxvY2ssIExheW91dFVuaXQgcG9zaXRpb24pOwogICAgIAotICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCk7Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRl
UmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogICAgIExheW91dFVuaXQgZGVzaXJl
ZENvbHVtbldpZHRoKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgZGVzaXJlZENvbHVtbkNvdW50KCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDVjOGJlZTky
NWMzYWY5N2I0YjMyZmNlZTA2YTkwOWI5MTlkMzkyZjEuLjNiNDkzMzA4MTZlNzI1M2QxNzBhZWM1
M2Y0NzQ2NmRlY2UxMjk5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CkBAIC00NjYsMTIgKzQ2NiwxMiBAQCB2b2lkIFJlbmRlckJveDo6c2V0U2Nyb2xsVG9wKExheW91
dFVuaXQgbmV3VG9wKQogICAgICAgICBsYXllcigpLT5zY3JvbGxUb1lPZmZzZXQobmV3VG9wLCBS
ZW5kZXJMYXllcjo6U2Nyb2xsT2Zmc2V0Q2xhbXBlZCk7CiB9CiAKLXZvaWQgUmVuZGVyQm94Ojph
YnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCkKK3ZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJ
bnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29u
c3QKIHsKICAgICByZWN0cy5hcHBlbmQoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6
ZSgpKSk7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFJlbmRlckJveDo6YWJzb2x1dGVRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAg
IHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdCgwLCAwLCB3aWR0aCgp
LCBoZWlnaHQoKSksIGZhbHNlLCB3YXNGaXhlZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oCmluZGV4IDQ1ZDQ0NjBlZTQ4NWMzYTE4NTRmOTM2MGY2ZTg0ZGNkNTU3NGFkZWYu
LjhjNjI0ZmRkNGU2YWYwOWZlMTYxNTllMmRkN2U5NGVmMmQ5YTRlZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTIzMiw4ICsyMzIsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBMYXlvdXRVbml0IGNvbGxhcHNlZE1hcmdpbkJlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIG1h
cmdpbkJlZm9yZSgpOyB9CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbGxhcHNlZE1hcmdpbkFm
dGVyKCkgY29uc3QgeyByZXR1cm4gbWFyZ2luQWZ0ZXIoKTsgfQogCi0gICAgdmlydHVhbCB2b2lk
IGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0
cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQp
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogICAgIAogICAgIEludFJlY3QgcmVmbGVjdGlvbkJv
eCgpIGNvbnN0OwogICAgIGludCByZWZsZWN0aW9uT2Zmc2V0KCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAppbmRl
eCBmOTQ0OTFmMzFjNWE4ZTVmZDIwMjI0NTAxOTU0ZTRiNDZlZjA4NDY2Li41OWFjMGY2ZmYxOWZh
ZDdmODI0OTJjMTNiYmQzMWViMmIwYmRmMGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBA
QCB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbgogICAgICAgICAgICAgdGV4dFggPSBjb250ZW50TGVm
dCArIGNvbnRlbnRXaWR0aCgpIC0gYnV0dG9uQW5kSWNvbldpZHRoIC0gZm9udC53aWR0aCh0ZXh0
UnVuKTsKICAgICAgICAgLy8gV2Ugd2FudCB0byBtYXRjaCB0aGUgYnV0dG9uJ3MgYmFzZWxpbmUK
ICAgICAgICAgUmVuZGVyQnV0dG9uKiBidXR0b25SZW5kZXJlciA9IHRvUmVuZGVyQnV0dG9uKGJ1
dHRvbi0+cmVuZGVyZXIoKSk7Ci0gICAgICAgIExheW91dFVuaXQgdGV4dFkgPSBidXR0b25SZW5k
ZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS55KCkKKyAgICAgICAgTGF5b3V0VW5pdCB0
ZXh0WSA9IGJ1dHRvblJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChCQk5vVHJhbnNm
b3JtcykueSgpCiAgICAgICAgICAgICArIGJ1dHRvblJlbmRlcmVyLT5iYXNlbGluZVBvc2l0aW9u
KEFscGhhYmV0aWNCYXNlbGluZSwgdHJ1ZSwgSG9yaXpvbnRhbExpbmUsIFBvc2l0aW9uT25Db250
YWluaW5nTGluZSk7CiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihz
dHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlKCkt
PmNvbG9yU3BhY2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3Bw
CmluZGV4IDExMjk3YjVkYjdhOWY3YTJkMDllNDY1OTQzYzQ4N2UxODZmMTVhZDAuLmVhOTc3YzQ5
NGU2OGU4OWI1OTE4ZmNhZTg0ODY5ZjgzMmE3MWRjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJRnJhbWUuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgYm9vbCBSZW5kZXJJRnJh
bWU6OmZsYXR0ZW5GcmFtZSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIERvIG5v
dCBmbGF0dGVuIG9mZnNjcmVlbiBpbm5lciBmcmFtZXMgZHVyaW5nIGZyYW1lIGZsYXR0ZW5pbmcs
IGFzIGZsYXR0ZW5pbmcgbWlnaHQgbWFrZSB0aGVtIHZpc2libGUuCi0gICAgSW50UmVjdCBib3Vu
ZGluZ1JlY3QgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIEludFJlY3QgYm91bmRp
bmdSZWN0ID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoQkJOb1RyYW5zZm9ybXMpOwogICAgIHJl
dHVybiBib3VuZGluZ1JlY3QubWF4WCgpID4gMCAmJiBib3VuZGluZ1JlY3QubWF4WSgpID4gMDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCA2Y2E5
ZDNmYjFlOTJkMDJjYmM5MGJhNGRjMzNiYTE5YmQ4NGIyODA0Li4zZjA5NjMzYjAwOGQ5NTZmYTFm
N2UyMTgyZTMwYzRkZDIwNWFjM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcApAQCAtNDY2LDcgKzQ2Niw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAg
IG1fbGluZUJveGVzLnBhaW50KHRoaXMsIHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogfQogCi12
b2lkIFJlbmRlcklubGluZTo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3Rz
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCit2b2lkIFJlbmRlcklubGlu
ZTo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7CiAgICAgaWYgKCFhbHdheXNDcmVhdGVM
aW5lQm94ZXMoKSkKICAgICAgICAgY3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyh0aGlzLCByZWN0
cywgdG9MYXlvdXRTaXplKGFjY3VtdWxhdGVkT2Zmc2V0KSk7CkBAIC00ODUsNyArNDg1LDcgQEAg
dm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0
cywgY29uc3QgTGF5b3V0UG9pbnQmIGEKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVySW5saW5lOjpj
dWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBW
ZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXQpCit2b2lk
IFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25zdCBSZW5kZXJJbmxp
bmUqIGNvbnRhaW5lciwgVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0U2l6
ZSYgb2Zmc2V0KSBjb25zdAogewogICAgIGlmICghY3VsbGVkSW5saW5lRmlyc3RMaW5lQm94KCkp
IHsKICAgICAgICAgcmVjdHMuYXBwZW5kKEludFJlY3Qob2Zmc2V0LndpZHRoKCksIG9mZnNldC5o
ZWlnaHQoKSwgMCwgMCkpOwpAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpj
dWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBW
ZWN0CiAgICAgfQogfQogCi12b2lkIFJlbmRlcklubGluZTo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJJbmxpbmU6OmFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29u
c3QKIHsKICAgICBpZiAoIWFsd2F5c0NyZWF0ZUxpbmVCb3hlcygpKQogICAgICAgICBjdWxsZWRJ
bmxpbmVBYnNvbHV0ZVF1YWRzKHRoaXMsIHF1YWRzKTsKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lk
IFJlbmRlcklubGluZTo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJv
b2wqIHdhc0ZpeGVkKQogICAgICAgICBjb250aW51YXRpb24oKS0+YWJzb2x1dGVRdWFkcyhxdWFk
cywgd2FzRml4ZWQpOwogfQogCi12b2lkIFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1
dGVRdWFkcyhjb25zdCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdG9yPEZsb2F0UXVhZD4m
IHF1YWRzKQordm9pZCBSZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRlUXVhZHMoY29u
c3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykgY29u
c3QKIHsKICAgICBpZiAoIWN1bGxlZElubGluZUZpcnN0TGluZUJveCgpKSB7CiAgICAgICAgIHF1
YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdCgpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKaW5kZXggYWZkNGFhZDQ0OGIwZTgxODE5MzI5ZWEw
YWE2ODZlNWIwOWNlYjY2Ny4uZmU5NWFmMWZlMTg3NTQyNjViYTk3OTA5ZjdlZGI2ZWIzZTczYWU2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaApAQCAtNDYsOCArNDYs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpblN0YXJ0KCkgY29uc3Q7
CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkVuZCgpIGNvbnN0OwogCi0gICAgdmlydHVh
bCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJz
b2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11
bGF0ZWRPZmZzZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBMYXlv
dXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UG9p
bnQmKSBjb25zdDsKIApAQCAtMTAyLDggKzEwMiw4IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0UmVj
dCBjdWxsZWRJbmxpbmVWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkgY29uc3Q7CiAgICAgSW5s
aW5lQm94KiBjdWxsZWRJbmxpbmVGaXJzdExpbmVCb3goKSBjb25zdDsKICAgICBJbmxpbmVCb3gq
IGN1bGxlZElubGluZUxhc3RMaW5lQm94KCkgY29uc3Q7Ci0gICAgdm9pZCBjdWxsZWRJbmxpbmVB
YnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8TGF5b3V0
UmVjdD4mLCBjb25zdCBMYXlvdXRTaXplJik7Ci0gICAgdm9pZCBjdWxsZWRJbmxpbmVBYnNvbHV0
ZVF1YWRzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8RmxvYXRRdWFkPiYp
OworICAgIHZvaWQgY3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25zdCBSZW5kZXJJbmxpbmUq
IGNvbnRhaW5lciwgVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0U2l6ZSYpIGNvbnN0
OworICAgIHZvaWQgY3VsbGVkSW5saW5lQWJzb2x1dGVRdWFkcyhjb25zdCBSZW5kZXJJbmxpbmUq
IGNvbnRhaW5lciwgVmVjdG9yPEZsb2F0UXVhZD4mKSBjb25zdDsKIAogICAgIHZvaWQgYWRkQ2hp
bGRUb0NvbnRpbnVhdGlvbihSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJl
Zm9yZUNoaWxkKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRJZ25vcmluZ0NvbnRpbnVhdGlv
bihSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAppbmRleCA4OTdh
YTg4ZWFmMWVhMmE0NmVkMTM2ZjUwZjdjNjI2MjM5MTM5ZTAxLi5iYjhiZDE5YzFjOTM3NmUyMDMz
NTkzNmM2NTg2MzdlYTg4ZDA5NTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZW51TGlzdC5jcHAKQEAgLTMwMiw3ICszMDIsNyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0Ojpz
aG93UG9wdXAoKQogICAgIC8vIENvbXB1dGUgdGhlIHRvcCBsZWZ0IHRha2luZyB0cmFuc2Zvcm1z
IGludG8gYWNjb3VudCwgYnV0IHVzZQogICAgIC8vIHRoZSBhY3R1YWwgd2lkdGggb2YgdGhlIGVs
ZW1lbnQgdG8gc2l6ZSB0aGUgcG9wdXAuCiAgICAgRmxvYXRQb2ludCBhYnNUb3BMZWZ0ID0gbG9j
YWxUb0Fic29sdXRlKEZsb2F0UG9pbnQoKSwgZmFsc2UsIHRydWUpOwotICAgIExheW91dFJlY3Qg
YWJzQm91bmRzID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBMYXlvdXRSZWN0IGFi
c0JvdW5kcyA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KEJCTm9UcmFuc2Zvcm1zKTsKICAgICBh
YnNCb3VuZHMuc2V0TG9jYXRpb24ocm91bmRlZEludFBvaW50KGFic1RvcExlZnQpKTsKICAgICBt
X3BvcHVwLT5zaG93KGFic0JvdW5kcywgZG9jdW1lbnQoKS0+dmlldygpLAogICAgICAgICBzZWxl
Y3QtPm9wdGlvblRvTGlzdEluZGV4KHNlbGVjdC0+c2VsZWN0ZWRJbmRleCgpKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGE0NWU2MGQ4NjVkZjBhNTYx
MWEwMTYyNmQwYWRlYTU2YjFkN2JmOTQuLjA3ODA4N2JiNWI0NTlhM2FmMmQ3NDY3MTk2ODRhMGUy
MjkwNjZjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBA
IC0xMTU1LDkgKzExNTUsOSBAQCB2b2lkIFJlbmRlck9iamVjdDo6cGFpbnRPdXRsaW5lKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMYXlvdXRSZQogICAgICAgICBncmFw
aGljc0NvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiB9CiAKLUludFJlY3QgUmVuZGVy
T2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybXMpCitJbnRS
ZWN0IFJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoQm91bmRpbmdCb3ggdXNl
VHJhbnNmb3JtcykgY29uc3QKIHsKLSAgICBpZiAodXNlVHJhbnNmb3JtcykgeworICAgIGlmICh1
c2VUcmFuc2Zvcm1zID09IEJCVXNlVHJhbnNmb3JtcykgewogICAgICAgICBWZWN0b3I8RmxvYXRR
dWFkPiBxdWFkczsKICAgICAgICAgYWJzb2x1dGVRdWFkcyhxdWFkcyk7CiAKQEAgLTEyMDUsMTQg
KzEyMDUsMTQgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmFic29sdXRlRm9jdXNSaW5nUXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mIHF1YWRzKQogdm9pZCBSZW5kZXJPYmplY3Q6OmFkZEFic29sdXRlUmVj
dEZvckxheWVyKEludFJlY3QmIHJlc3VsdCkKIHsKICAgICBpZiAoaGFzTGF5ZXIoKSkKLSAgICAg
ICAgcmVzdWx0LnVuaXRlKGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOworICAgICAgICByZXN1
bHQudW5pdGUoYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoQkJOb1RyYW5zZm9ybXMpKTsKICAgICBm
b3IgKFJlbmRlck9iamVjdCogY3VycmVudCA9IGZpcnN0Q2hpbGQoKTsgY3VycmVudDsgY3VycmVu
dCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGN1cnJlbnQtPmFkZEFic29sdXRl
UmVjdEZvckxheWVyKHJlc3VsdCk7CiB9CiAKIExheW91dFJlY3QgUmVuZGVyT2JqZWN0OjpwYWlu
dGluZ1Jvb3RSZWN0KExheW91dFJlY3QmIHRvcExldmVsUmVjdCkKIHsKLSAgICBMYXlvdXRSZWN0
IHJlc3VsdCA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgTGF5b3V0UmVjdCByZXN1
bHQgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChCQk5vVHJhbnNmb3Jtcyk7CiAgICAgdG9wTGV2
ZWxSZWN0ID0gcmVzdWx0OwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJyZW50ID0gZmlyc3RD
aGlsZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKSkKICAgICAg
ICAgY3VycmVudC0+YWRkQWJzb2x1dGVSZWN0Rm9yTGF5ZXIocmVzdWx0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBlY2Y1MjI3MjFhODBlY2NjN2YyNTM0ODcz
ZWU5Mjg2MWQ1YTgxZmNhLi5kMDI3NGIyZDA3NzA1Njg2YTg2OGZiNmQxMjYxNjBhYjdlNWVjZTJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC04Nyw2ICs4Nywx
MiBAQCBlbnVtIEJveFNpZGUgewogICAgIEJTQm90dG9tLAogICAgIEJTTGVmdAogfTsKKyAgICAK
K2VudW0gQm91bmRpbmdCb3ggeworICAgIEJCVXNlVHJhbnNmb3JtcywKKyAgICBCQk5vVHJhbnNm
b3JtcworfTsKKwogCiBjb25zdCBpbnQgY2FyZXRXaWR0aCA9IDE7CiAKQEAgLTYyMSwxMiArNjI3
LDEzIEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4gdGhlIG9mZnNldCBmcm9tIGFuIG9iamVjdCB1
cCB0aGUgY29udGFpbmVyKCkgY2hhaW4uIEFzc2VydHMgdGhhdCBub25lIG9mIHRoZSBpbnRlcm1l
ZGlhdGUgb2JqZWN0cyBoYXZlIHRyYW5zZm9ybXMuCiAgICAgTGF5b3V0U2l6ZSBvZmZzZXRGcm9t
QW5jZXN0b3JDb250YWluZXIoUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAgCi0gICAgdmlydHVh
bCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9p
bnQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVj
dD4mLCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0IHsgfQorCiAgICAgLy8gRklYTUU6IHVzZVRy
YW5zZm9ybXMgc2hvdWxkIGdvIGF3YXkgZXZlbnR1YWxseQotICAgIEludFJlY3QgYWJzb2x1dGVC
b3VuZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm1zID0gZmFsc2UpOworICAgIEludFJlY3Qg
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoQm91bmRpbmdCb3ggdXNlVHJhbnNmb3JtKSBjb25zdDsK
IAogICAgIC8vIEJ1aWxkIGFuIGFycmF5IG9mIHF1YWRzIGluIGFic29sdXRlIGNvb3JkcyBmb3Ig
bGluZSBib3hlcwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiwgYm9vbCogLyp3YXNGaXhlZCovID0gMCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiAvKndhc0ZpeGVkKi8gPSAwKSBjb25z
dCB7IH0KIAogICAgIHZvaWQgYWJzb2x1dGVGb2N1c1JpbmdRdWFkcyhWZWN0b3I8RmxvYXRRdWFk
PiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggZTg4ODYx
ZjNkMDRhMDg2ODQ0ZDNhNzBkMjE1YTQ3NGRlNjg5MjRjOS4uNmI2ZGEyNDQ0ZTEyYzczMjZmMTk2
ZDY0Yjg4MTI1ODgyNzRmOThjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcApAQCAtMzAxLDcgKzMwMSw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gUmVuZGVyVGV4
dDo6b3JpZ2luYWxUZXh0KCkgY29uc3QKICAgICByZXR1cm4gKGUgJiYgZS0+aXNUZXh0Tm9kZSgp
KSA/IHN0YXRpY19jYXN0PFRleHQqPihlKS0+ZGF0YUltcGwoKSA6IDA7CiB9CiAKLXZvaWQgUmVu
ZGVyVGV4dDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCit2b2lkIFJlbmRlclRleHQ6OmFic29sdXRl
UmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0KSBjb25zdAogewogICAgIGZvciAoSW5saW5lVGV4dEJveCogYm94ID0gZmly
c3RUZXh0Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKQogICAgICAgICByZWN0
cy5hcHBlbmQoZW5jbG9zaW5nTGF5b3V0UmVjdChGbG9hdFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQg
KyBib3gtPnRvcExlZnQoKSwgYm94LT5zaXplKCkpKSk7CkBAIC0zODgsNyArMzg4LDcgQEAgc3Rh
dGljIEludFJlY3QgZWxsaXBzaXNSZWN0Rm9yQm94KElubGluZVRleHRCb3gqIGJveCwgdW5zaWdu
ZWQgc3RhcnRQb3MsIHVuc2lnbmUKICAgICByZXR1cm4gSW50UmVjdCgpOwogfQogICAgIAotdm9p
ZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9v
bCogd2FzRml4ZWQsIENsaXBwaW5nT3B0aW9uIG9wdGlvbikKK3ZvaWQgUmVuZGVyVGV4dDo6YWJz
b2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkLCBDbGlw
cGluZ09wdGlvbiBvcHRpb24pIGNvbnN0CiB7CiAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3gg
PSBmaXJzdFRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKICAgICAg
ICAgSW50UmVjdCBib3VuZGFyaWVzID0gYm94LT5jYWxjdWxhdGVCb3VuZGFyaWVzKCk7CkBAIC00
MDUsNyArNDA1LDcgQEAgdm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQsIENsaXBwaW4KICAgICB9CiB9CiAgICAgCi12
b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBi
b29sKiB3YXNGaXhlZCkKK3ZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGFic29sdXRlUXVh
ZHMocXVhZHMsIHdhc0ZpeGVkLCBOb0NsaXBwaW5nKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5oCmluZGV4IDQwMjBkOGFhMzcxMjJkMTI1ZDFkYzRlZjExMDcwOWQxOGY5NTEz
OTguLjQyZTlhZWM5NmIzYjMyYjJkMTllM2JjNTE5NWMxM2Q0NzFjYTA5MzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAtNTQsMTQgKzU0LDE0IEBAIHB1YmxpYzoKICAg
ICBJbmxpbmVUZXh0Qm94KiBjcmVhdGVJbmxpbmVUZXh0Qm94KCk7CiAgICAgdm9pZCBkaXJ0eUxp
bmVCb3hlcyhib29sIGZ1bGxMYXlvdXQpOwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVj
dHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zm
c2V0KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OwogICAgIHZvaWQg
YWJzb2x1dGVSZWN0c0ZvclJhbmdlKFZlY3RvcjxJbnRSZWN0PiYsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gVUlOVF9NQVgsIGJvb2wgdXNlU2VsZWN0aW9u
SGVpZ2h0ID0gZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0gMCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0Zp
eGVkKSBjb25zdDsKICAgICB2b2lkIGFic29sdXRlUXVhZHNGb3JSYW5nZShWZWN0b3I8RmxvYXRR
dWFkPiYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gVUlO
VF9NQVgsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0g
MCk7CiAKICAgICBlbnVtIENsaXBwaW5nT3B0aW9uIHsgTm9DbGlwcGluZywgQ2xpcFRvRWxsaXBz
aXMgfTsKLSAgICB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3
YXNGaXhlZCA9IDAsIENsaXBwaW5nT3B0aW9uID0gTm9DbGlwcGluZyk7CisgICAgdm9pZCBhYnNv
bHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQgPSAwLCBDbGlwcGlu
Z09wdGlvbiA9IE5vQ2xpcHBpbmcpIGNvbnN0OwogCiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRp
b24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3Bw
CmluZGV4IDE3MDk3YjFmYmFiMzYxODA4OGUwYjQ4OTM3YzYwOGU1YzJkODRjZmEuLmQwNTU3N2Ri
ZjA3NTljZGFjMDVkMGEzYjMxMDI5OTg4OTAwNTgyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCkBAIC0x
NzQsNyArMTc0LDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnNob3dQb3B1
cCgpCiAgICAgICAgIG1fc2VhcmNoUG9wdXAtPnNhdmVSZWNlbnRTZWFyY2hlcyhuYW1lLCBtX3Jl
Y2VudFNlYXJjaGVzKTsKICAgICB9CiAKLSAgICBtX3NlYXJjaFBvcHVwLT5wb3B1cE1lbnUoKS0+
c2hvdyhhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCh0cnVlKSwgZG9jdW1lbnQoKS0+dmlldygpLCAt
MSk7CisgICAgbV9zZWFyY2hQb3B1cC0+cG9wdXBNZW51KCktPnNob3coYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoQkJVc2VUcmFuc2Zvcm1zKSwgZG9jdW1lbnQoKS0+dmlldygpLCAtMSk7CiB9CiAK
IHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpoaWRlUG9wdXAoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDFmZWZhYzRmMDE5MmVhM2ViMDU0MTVj
YjM0MzRhZjViMDlmNmE3NDEuLmY0MjFmOTgxZGEyNjdkZDU3ZDU5OTRhYmMzZWMxYTc1NjVkMTgw
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTMyOSwxMiAr
MzI5LDEyIEBAIHZvaWQgUmVuZGVyVmlldzo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBJCiAgICAgICAgIHJlY3QgPSBtX2xheWVy
LT50cmFuc2Zvcm0oKS0+bWFwUmVjdChyZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJWaWV3OjphYnNv
bHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCkKK3ZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8
TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQp
IGNvbnN0CiB7CiAgICAgcmVjdHMuYXBwZW5kKExheW91dFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQs
IG1fbGF5ZXItPnNpemUoKSkpOwogfQogCi12b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkKK3ZvaWQgUmVuZGVyVmll
dzo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVk
KSBjb25zdAogewogICAgIGlmICh3YXNGaXhlZCkKICAgICAgICAgKndhc0ZpeGVkID0gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCBlNmQ3ZDhmNzU1ZjViNzdi
YjdkOTkwODcwZTVhNmFkYWFhNDlmZTY3Li45YTZmNjNkOTBmYmYyMWE2MDdhNWRkNTNkNjIyMGM4
YWY0MWFkZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTg2LDgg
Kzg2LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBwcmludGluZygpIGNvbnN0OwogCi0gICAgdmly
dHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0
UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQg
YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNj
dW11bGF0ZWRPZmZzZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZl
Y3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZvaWQgc2V0TWF4aW1hbE91dGxpbmVTaXplKGludCBv
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxv
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAK
aW5kZXggMmM4MTU5MDhlYmY2Yjk4OTA2NzU3ZDhiYzU0YmU2OTQ3YTcxNzllMy4uN2IxNmE0ZDVi
ZmM5Y2I3YmI2NWU2NWJiMTVhYmM4ZTJmNmViYWVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBS
ZW5kZXJTVkdCbG9jazo6dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCkKICAgICBzZXRIYXNP
dmVyZmxvd0NsaXAoZmFsc2UpOwogfQogCi12b2lkIFJlbmRlclNWR0Jsb2NrOjphYnNvbHV0ZVJl
Y3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JikKK3ZvaWQgUmVuZGVy
U1ZHQmxvY2s6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0
UG9pbnQmKSBjb25zdAogewogICAgIC8vIFRoaXMgY29kZSBwYXRoIHNob3VsZCBuZXZlciBiZSB0
YWtlbiBmb3IgU1ZHLCBhcyB3ZSdyZSBhc3N1bWluZyB1c2VUcmFuc2Zvcm1zPXRydWUgZXZlcnl3
aGVyZSwgYWJzb2x1dGVRdWFkcyBzaG91bGQgYmUgdXNlZC4KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
QmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaApp
bmRleCAyMmMxZjE4ZTM2ZTAyMzEwYmU3ZTdkM2U0ZWM4MTIzYTI5YjVhNzE0Li41OGNmMjYyMGE5
ODE4ZDY0YWUyNzgzNGZlZDhkNDFiNzE2OTIwNDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCkBAIC0zOCw3ICszOCw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHNldFN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+KTsKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2lu
dCYgYWNjdW11bGF0ZWRPZmZzZXQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZl
Y3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkg
Y29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CiAgICAgdmlydHVh
bCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxl
KiBuZXdTdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHAKaW5kZXggZDI5ZDg1ZWM5Mzk3MWRlZTE4ZGIx
MmJkOGU3ODA1ZjU4MTc3MmYxZS4uODk1YjI1NDQ5MDAxMjNmZGJmM2VhMDI1ODU0Y2I5Y2VkYmUw
NGZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdI
aWRkZW5Db250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIFJlbmRlclNW
R0hpZGRlbkNvbnRhaW5lcjo6cGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKQog
ICAgIC8vIFRoaXMgc3VidHJlZSBkb2VzIG5vdCBwYWludC4KIH0KIAotdm9pZCBSZW5kZXJTVkdI
aWRkZW5Db250YWluZXI6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKikK
K3ZvaWQgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+JiwgYm9vbCopIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBzdWJ0cmVlIGRvZXMgbm90IHRh
a2UgdXAgc3BhY2Ugb3IgcGFpbnQKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCmluZGV4IGVmZmY5MjE1MWQyYzM2
MWE2ZDBjOGQ5Nzc3YjMxZjYzNDQ2NGQxMGMuLmYyNmM1ZmM2MWEzN2Y4MjA3ZDRkNjQ5YmU2ODA5
ZDUyYTJmODgyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwog
ICAgIAogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCopIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCog
d2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdEZs
b2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxv
YXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbik7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCmluZGV4IDA5NzcwZWZi
ZjAyN2ZhYzllYmE3ZGJjN2M0ZWE0MzdmNmFhMDEwYjkuLjRjOTA1ODBmMTM1OWJmNjgxYzc3M2Fk
NWQ4YmI4MTZjZWQ0MmE2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZS5jcHAKQEAgLTgyLDkgKzgyLDkgQEAgdm9pZCBSZW5kZXJTVkdJbmxp
bmU6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIKICAgICBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKHRoaXMsIHJl
cGFpbnRDb250YWluZXIsIHVzZVRyYW5zZm9ybXMsIGZpeGVkLCB0cmFuc2Zvcm1TdGF0ZSwgd2Fz
Rml4ZWQpOwogfQogCi12b2lkIFJlbmRlclNWR0lubGluZTo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJTVkdJbmxpbmU6
OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkg
Y29uc3QKIHsKLSAgICBSZW5kZXJPYmplY3QqIG9iamVjdCA9IFJlbmRlclNWR1RleHQ6OmxvY2F0
ZVJlbmRlclNWR1RleHRBbmNlc3Rvcih0aGlzKTsKKyAgICBjb25zdCBSZW5kZXJPYmplY3QqIG9i
amVjdCA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3Rvcih0aGlzKTsK
ICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAppbmRleCAwYTYwODM3ZjQ3NzU5NjkwMzdl
ODQ5NzViY2YyMDA4MDY2YmI4MmY3Li5kMmZhMWNjNTI0MDI0YjYxYWE3ZDRhYTc3YTRlOGRkOGU1
NjA4NDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0lubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5s
aW5lLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBj
bGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lcikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJv
b2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250
YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJh
bnNmb3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBib29sKiB3YXNGaXhlZCA9IDAp
IGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZp
cnR1YWwgSW5saW5lRmxvd0JveCogY3JlYXRlSW5saW5lRmxvd0JveCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAppbmRl
eCAxNGMxZGI4ZTBmOTNlYWY1NThhZWVjODkyYTg3MjMyM2NkMTBkNzIzLi5mYmU0OTNiNTRkY2Rl
YzFjNTc2N2E0NzhhYTY2Mzg2YTU0MDM0YmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcApAQCAtNzAsMTMgKzcwLDEz
IEBAIExheW91dFJlY3QgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om91dGxpbmVCb3VuZHNGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByCiAgICAgcmV0dXJuIGNvbnRhaW5lclJlbGF0aXZl
UXVhZC5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwogfQogCi12b2lkIFJlbmRlclNWR01vZGVsT2Jq
ZWN0OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50
JikKK3ZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91
dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdAogewogICAgIC8vIFRoaXMgY29kZSBw
YXRoIHNob3VsZCBuZXZlciBiZSB0YWtlbiBmb3IgU1ZHLCBhcyB3ZSdyZSBhc3N1bWluZyB1c2VU
cmFuc2Zvcm1zPXRydWUgZXZlcnl3aGVyZSwgYWJzb2x1dGVRdWFkcyBzaG91bGQgYmUgdXNlZC4K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdNb2RlbE9iamVj
dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVk
KQordm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRR
dWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIHF1YWRzLmFwcGVuZChs
b2NhbFRvQWJzb2x1dGVRdWFkKHN0cm9rZUJvdW5kaW5nQm94KCksIGZhbHNlLCB3YXNGaXhlZCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdN
b2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2Rl
bE9iamVjdC5oCmluZGV4IGMyOGQzYzY2MDdkNTU0ZWEyMGMyYmE1YzVhZWVlZGNjMmRlNzNiNzku
LjcwNDFkNDQ5ZWY2MzJjNGZjMzAwOTI2MGY5MmMwMDAzYjAxMGQ3ZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKQEAgLTU1
LDggKzU1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBi
b29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5l
Qm91bmRzRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
TGF5b3V0UG9pbnQqKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZl
Y3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7
Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29s
KiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91
dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdh
c0ZpeGVkKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMs
IGJvb2wgZml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIG5ld1N0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1RleHQuY3BwCmluZGV4IGFmNDM5YjVkMzhmMDg0ZjAyYTkyMWIyYmFmYTBkOWIx
YWJkNDcwODEuLjJhN2Q4MGNmMmVmNTIxYTk0ZmJkOTc3MjIwYjFlNGVlMTI1ZDYwZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAtMjI1
LDcgKzIyNSw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJTVkdUZXh0Ojpwb3NpdGlvbkZvclBv
aW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludEluQ29udGVuCiAgICAgcmV0dXJuIGNsb3Nlc3RC
b3gtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQoTGF5b3V0UG9pbnQocG9pbnRJbkNvbnRl
bnRzLngoKSwgY2xvc2VzdEJveC0+eSgpKSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHVGV4dDo6YWJz
b2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9p
ZCBSZW5kZXJTVkdUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywg
Ym9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0
ZVF1YWQoc3Ryb2tlQm91bmRpbmdCb3goKSwgZmFsc2UsIHdhc0ZpeGVkKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCmluZGV4IGIzZTBmNDNmOGY2
NDljN2ZhNjdlMGI4NDIwMzY3YWYwZDZlOTJkM2UuLmEwYWRhNGNiNGVmZTk4MGNhYmUyN2E5ZmE1
MDRiYWEzOTAxODlkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVGV4dC5oCkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHJl
cXVpcmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBs
YXlvdXQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZl
Y3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBM
YXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJl
Y3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlv
dXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAppbmRleCBkNjRkMGI3YzQ3NjhmMTNjZWJiMDhjYWVkMzgxMDRjMjhhYmRlYWQ2
Li4xMDdhMjUwOWUwYWFkYWJmYmEwZWVlMjAyODIwZTRlYjNhNGIyMzA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMDgsNyArMjA4LDcgQEAgUGFzc1JlZlB0cjxDbGll
bnRSZWN0PiBJbnRlcm5hbHM6OmJvdW5kaW5nQm94KEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlv
bkNvZGUmIGUKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIo
KTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRl
KCk7Ci0gICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZShyZW5kZXJlci0+YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QoKSk7CisgICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZShyZW5kZXJlci0+
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoQm91bmRpbmdCb3g6OkJCTm9UcmFuc2Zvcm1zKSk7CiB9
CiAKIHVuc2lnbmVkIEludGVybmFsczo6bWFya2VyQ291bnRGb3JOb2RlKE5vZGUqIG5vZGUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109064</attachid>
            <date>2011-09-28 13:37:29 -0700</date>
            <delta_ts>2011-09-28 16:12:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69009-20110928163727.patch</filename>
            <type>text/plain</type>
            <size>37510</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYyMTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MTNiNDA4NGUxYTEyZmM3
YTkzNzViMWVmMmU3ODExZDkzZDQ4MDdiLi41NWRlYmYzMGM4OTAxNmQ4N2IwN2FkZGQyNDZkN2Vj
ODZhMTJhNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTEtMDktMjggIEZhZHkg
U2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDog
TWFrZSBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVk
IG1ldGhvZHMgY29uc3QgYW5kIG1ha2UgaXRzIHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxv
bmdlciBkZWZhdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02OTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwY29taW5nIHBhdGNoZXMgbWF5IG1ha2UgdXNlIG9mIGFic29sdXRlQm91bmRpbmdCb3hS
ZWN0IG9uIGEgY29uc3QgUmVuZGVyT2JqZWN0LCBzbyB0aGlzIG5lZWRlZCB0byBiZSBmaXhlZC4K
KyAgICAgICAgTWFraW5nIHVzZVRyYW5zZm9ybXMgbm90IGRlZmF1bHQgYW5kIGFuIGVudW0gcGFy
dGlhbGx5IGFkZHJlc3NlcyAvLyBGSVhNRTogdXNlVHJhbnNmb3JtcyBzaG91bGQgZ28gYXdheSBl
dmVudHVhbGx5ICAKKyAgICAgICAgYnkgbWFraW5nIGl0IGFwcGFyZW50IHdoZXJlIHRoaXMgcGFy
YW1ldGVyIGlzIHVzZWQgYW5kIHdpdGggd2hhdCB2YWx1ZS4KKworICAgICAgICAqIGRvbS9FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcmVlblJlY3QpOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTbGlkZXJUaHVtYkVsZW1lbnQ6OnNldFBvc2l0aW9uRnJvbVBvaW50KToKKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OnN0YXJ0U3BlZWNoSW5wdXQpOgorICAg
ICAgICAqIHBsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0UGx1Z2luT2NjbHVzaW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphYnNvbHV0ZVJlY3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnBhaW50T2Jq
ZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcklGcmFtZTo6ZmxhdHRlbkZyYW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6YWJzb2x1
dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUFi
c29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjphYnNvbHV0ZVF1
YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1
dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
ZW51TGlzdDo6c2hvd1BvcHVwKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphZGRBYnNvbHV0ZVJlY3RGb3JM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnBhaW50aW5nUm9vdFJlY3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmFic29sdXRlUmVjdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclZpZXc6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJWaWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdCbG9jazo6YWJzb2x1dGVSZWN0cyk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR0hpZGRlbkNvbnRhaW5lcjo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxp
bmU6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5s
aW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVSZWN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVRdWFkcyk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdUZXh0OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1RleHQuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OmJvdW5kaW5nQm94KToKKwogMjAxMS0wOS0yOCAgVnNldm9s
b2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBSZWZhY3RvciBzZWFyY2hpbmcgaW4gaW5zcGVjdG9yLCBhZGQgdGVzdCAoZml4ZWQgbm9uIHJl
Z2V4IHNlYXJjaCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYjE2NjIzYmFhYzkzMTAxYjEz
YzIzNGQ0MzM0NTY3YmUyZTY3ZTYwZS4uNjhmMzQxZWEyNzM4ZTE2MjQ5ODA2YTYwZGNkZDE3MjY5
ZjE2YTZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNTczLDcgKzU3Myw3IEBAIExheW91
dFJlY3QgRWxlbWVudDo6c2NyZWVuUmVjdCgpIGNvbnN0CiB7CiAgICAgaWYgKCFyZW5kZXJlcigp
KQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwotICAgIHJldHVybiByZW5kZXJlcigpLT52
aWV3KCktPmZyYW1lVmlldygpLT5jb250ZW50c1RvU2NyZWVuKHJlbmRlcmVyKCktPmFic29sdXRl
Qm91bmRpbmdCb3hSZWN0KCkpOworICAgIHJldHVybiByZW5kZXJlcigpLT52aWV3KCktPmZyYW1l
VmlldygpLT5jb250ZW50c1RvU2NyZWVuKHJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hS
ZWN0KEJCTm9UcmFuc2Zvcm1zKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRJZ25v
cmVBdHRyaWJ1dGVDYXNlKGNvbnN0IEVsZW1lbnQqIGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggYjMz
NjM0OTEzN2FmZDQ5NjIyYzYzZGRhNmI4NDg2ZWY2YWE0MGE0Yi4uYWM4YTM1MmRhMjg3ZDRlYjRj
NGUzNjRjNzNhNjFmMjJlMTRlMDI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtODIzLDcgKzgyMyw3
IEBAIFJlbmRlckJveE1vZGVsT2JqZWN0KiBOb2RlOjpyZW5kZXJCb3hNb2RlbE9iamVjdCgpIGNv
bnN0CiBMYXlvdXRSZWN0IE5vZGU6OmdldFJlY3QoKSBjb25zdAogewogICAgIGlmIChyZW5kZXJl
cigpKQotICAgICAgICByZXR1cm4gcmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3Qo
dHJ1ZSk7CisgICAgICAgIHJldHVybiByZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dChCQlVzZVRyYW5zZm9ybXMpOwogICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiB9CiAgICAgCkBA
IC04MzUsNyArODM1LDcgQEAgTGF5b3V0UmVjdCBOb2RlOjpyZW5kZXJSZWN0KGJvb2wqIGlzUmVw
bGFjZWQpCiAgICAgd2hpbGUgKHJlbmRlcmVyICYmICFyZW5kZXJlci0+aXNCb2R5KCkgJiYgIXJl
bmRlcmVyLT5pc1Jvb3QoKSkgewogICAgICAgICBpZiAocmVuZGVyZXItPmlzUmVuZGVyQmxvY2so
KSB8fCByZW5kZXJlci0+aXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKSB8fCByZW5kZXJlci0+
aXNSZXBsYWNlZCgpKSB7CiAgICAgICAgICAgICAqaXNSZXBsYWNlZCA9IHJlbmRlcmVyLT5pc1Jl
cGxhY2VkKCk7Ci0gICAgICAgICAgICByZXR1cm4gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdC
b3hSZWN0KHRydWUpOworICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5k
aW5nQm94UmVjdChCQlVzZVRyYW5zZm9ybXMpOwogICAgICAgICB9CiAgICAgICAgIHJlbmRlcmVy
ID0gcmVuZGVyZXItPnBhcmVudCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCmluZGV4IDVkMTc4YWYwNzlhYjRjZmJkOWQw
ZjcyMDQzZmFmM2Q4N2M0OGJjYjguLjkyY2VjMWZmMDVmMzA1ZGZlYTQ2MjdiNDRhNzM1MmYxZTUz
NTdiMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1i
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMu
aCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94LmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVy
U2xpZGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290
LmgiCkBAIC0yMTYsNyArMjE3LDcgQEAgdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OnNldFBvc2l0
aW9uRnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKICAgICAvLyBXZSBuZWVkIHRv
IGNhbGN1bGF0ZSBjdXJyZW50UG9zaXRpb24gZnJvbSBhYnNvbHV0ZSBwb2ludHMgYmVjYXVlIHRo
ZQogICAgIC8vIHJlbmRlcmVyIGZvciB0aGlzIG5vZGUgaXMgdXN1YWxseSBvbiBhIGxheWVyIGFu
ZCByZW5kZXJCb3goKS0+eCgpIGFuZAogICAgIC8vIHkoKSBhcmUgdW51c2FibGUuCi0gICAgTGF5
b3V0UG9pbnQgYWJzb2x1dGVUaHVtYk9yaWdpbiA9IHJlbmRlckJveCgpLT5hYnNvbHV0ZUJvdW5k
aW5nQm94UmVjdCgpLmxvY2F0aW9uKCk7CisgICAgTGF5b3V0UG9pbnQgYWJzb2x1dGVUaHVtYk9y
aWdpbiA9IHJlbmRlckJveCgpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChCQk5vVHJhbnNmb3Jt
cykubG9jYXRpb24oKTsKICAgICBMYXlvdXRQb2ludCBhYnNvbHV0ZVNsaWRlckNvbnRlbnRPcmln
aW4gPSByb3VuZGVkTGF5b3V0UG9pbnQoaW5wdXQtPnJlbmRlcmVyKCktPmxvY2FsVG9BYnNvbHV0
ZSgpKTsKICAgICBpZiAoaXNWZXJ0aWNhbCkgewogICAgICAgICB0cmFja1NpemUgPSBpbnB1dC0+
cmVuZGVyQm94KCktPmNvbnRlbnRIZWlnaHQoKSAtIHJlbmRlckJveCgpLT5oZWlnaHQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuY3BwCmluZGV4IGJmMTg1Y2Y3YjBmMDk2YjkzYzg4ODMyMDZiYTMzNzRkMDQ5MzQ1ZDUu
LmFkZWM4Nzc2YTAzNTUwOWVjZGVhMmVhMGMwY2QyZTcyNjc0ZjQ3OWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNw
cApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3Qu
aCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaCIKICNpbmNsdWRlICJT
Y3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKQEAgLTUzNSw3
ICs1MzYsNyBAQCB2b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzdGFydFNwZWVj
aElucHV0KCkKICAgICBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gaW5wdXQgPSBzdGF0aWNfY2Fz
dDxIVE1MSW5wdXRFbGVtZW50Kj4oc2hhZG93QW5jZXN0b3JOb2RlKCkpOwogICAgIEF0b21pY1N0
cmluZyBsYW5ndWFnZSA9IGlucHV0LT5jb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKTsKICAgICBT
dHJpbmcgZ3JhbW1hciA9IGlucHV0LT5nZXRBdHRyaWJ1dGUod2Via2l0Z3JhbW1hckF0dHIpOwot
ICAgIEludFJlY3QgcmVjdCA9IHJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7
CisgICAgSW50UmVjdCByZWN0ID0gcmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3Qo
QkJOb1RyYW5zZm9ybXMpOwogICAgIGlmIChzcGVlY2hJbnB1dCgpLT5zdGFydFJlY29nbml0aW9u
KG1fbGlzdGVuZXJJZCwgcmVjdCwgbGFuZ3VhZ2UsIGdyYW1tYXIsIGRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCkpKQogICAgICAgICBzZXRTdGF0ZShSZWNvcmRpbmcpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcAppbmRleCBlNjg5YjUy
NTBiNmE4NjhlYTVhNTUwZDZkYWFiYTI5NDVhNzhmNjlkLi41ODA3YjFmYWYyNjMzOWRiNzBiZjYx
ODhjZWYwNjU1YmMzMzVhNWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NTm9kZUhpZ2hsaWdodGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
Tm9kZUhpZ2hsaWdodGVyLmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgZHJhd05vZGVIaWdo
bGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBIaWdobGlnaHREYXRhKiBoaWdobGlnaHRE
YXRhKQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRTaXplIG1haW5GcmFtZU9mZnNldCA9
IGZyYW1lVG9NYWluRnJhbWVPZmZzZXQoY29udGFpbmluZ0ZyYW1lKTsKLSAgICBMYXlvdXRSZWN0
IGJvdW5kaW5nQm94ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KHRydWUpOwor
ICAgIExheW91dFJlY3QgYm91bmRpbmdCb3ggPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoQkJVc2VUcmFuc2Zvcm1zKTsKIAogICAgIGJvdW5kaW5nQm94Lm1vdmUobWFpbkZyYW1l
T2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9JRnJhbWVTaGlt
U3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmNw
cAppbmRleCBjMGFhMWU0MTM2YzQ5NDJmMjlhZjg4NGYzMjE2ODg1YzdhYzU1Yjc5Li4xNDA4OWVk
NjI5NzA2M2YyODY5ZmIwMzA5YzA0ZmUxZjg0ODA3YjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgZ2V0
UGx1Z2luT2NjbHVzaW9ucyhFbGVtZW50KiBlbGVtZW50LCBXaWRnZXQqIHBhcmVudFdpZGdldCwg
Y29uc3QgSW50UmVjdCYKICAgICAgICAgUmVuZGVyT2JqZWN0KiBpZnJhbWVSZW5kZXJlciA9IGVs
ZW1lbnQtPnJlbmRlcmVyKCk7CiAKICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjppZnJhbWVUYWcpCi0gICAgICAgICAgICAmJiBpZnJhbWVSZW5kZXJlci0+YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QoKS5pbnRlcnNlY3RzKGZyYW1lUmVjdCkKKyAgICAgICAgICAgICYm
IGlmcmFtZVJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChCQk5vVHJhbnNmb3Jtcyku
aW50ZXJzZWN0cyhmcmFtZVJlY3QpCiAgICAgICAgICAgICAmJiAoIWlmcmFtZVJlbmRlcmVyLT5z
dHlsZSgpIHx8IGlmcmFtZVJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJM
RSkpIHsKICAgICAgICAgICAgIGdldE9iamVjdFN0YWNrKGlmcmFtZVJlbmRlcmVyLCAmaWZyYW1l
WnN0YWNrKTsKICAgICAgICAgICAgIGlmIChpZnJhbWVJc0Fib3ZlUGx1Z2luKGlmcmFtZVpzdGFj
aywgcGx1Z2luWnN0YWNrKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKaW5kZXggMDBmM2YzZDgwNDhlNTAyZTkyYmRmNjE2MjBhNDJlYmNjZTUwZjNhNy4uNWQ1M2Vl
NDQwODQwYTE2ODI1NDYyZGRjY2Q1OTcyNjBhNjAzNDg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC01ODM5LDcgKzU4MzksNyBAQCB2b2lkIFJlbmRlckJs
b2NrOjpzZXRQYWdlTG9naWNhbE9mZnNldChpbnQgbG9naWNhbE9mZnNldCkKICAgICBtX3JhcmVE
YXRhLT5tX3BhZ2VMb2dpY2FsT2Zmc2V0ID0gbG9naWNhbE9mZnNldDsKIH0KIAotdm9pZCBSZW5k
ZXJCbG9jazo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCit2b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0
ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCkgY29uc3QKIHsKICAgICAvLyBGb3IgYmxvY2tzIGluc2lkZSBpbmxpbmVz
LCB3ZSBnbyBhaGVhZCBhbmQgaW5jbHVkZSBtYXJnaW5zIHNvIHRoYXQgd2UgcnVuIHJpZ2h0IHVw
IHRvIHRoZQogICAgIC8vIGlubGluZSBib3hlcyBhYm92ZSBhbmQgYmVsb3cgdXMgKHRodXMgZ2V0
dGluZyBtZXJnZWQgd2l0aCB0aGVtIHRvIGZvcm0gYSBzaW5nbGUgaXJyZWd1bGFyCkBAIC01ODU1
LDcgKzU4NTUsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlv
dXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhYwogICAgICAgICByZWN0cy5hcHBl
bmQoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSk7CiB9CiAKLXZvaWQgUmVu
ZGVyQmxvY2s6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3
YXNGaXhlZCkKK3ZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVh
ZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICAvLyBGb3IgYmxvY2tzIGlu
c2lkZSBpbmxpbmVzLCB3ZSBnbyBhaGVhZCBhbmQgaW5jbHVkZSBtYXJnaW5zIHNvIHRoYXQgd2Ug
cnVuIHJpZ2h0IHVwIHRvIHRoZQogICAgIC8vIGlubGluZSBib3hlcyBhYm92ZSBhbmQgYmVsb3cg
dXMgKHRodXMgZ2V0dGluZyBtZXJnZWQgd2l0aCB0aGVtIHRvIGZvcm0gYSBzaW5nbGUgaXJyZWd1
bGFyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IDA5NzcyN2U4YjUz
NTgyZmNhYjdjZDkzMmU2NGE5NzA3ZmY5ZWQ2ODQuLmY4MWIyZmU2MTcxNmI5YTBjOTZkOTcwNzY2
MDVjNzQ3YjhkZmM1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBA
IC02ODIsOCArNjgyLDggQEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0U2Vs
ZWN0aW9uT2Zmc2V0KFJlbmRlckJsb2NrKiByb290QmxvY2ssIExheW91dFVuaXQgcG9zaXRpb24p
OwogICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0U2VsZWN0aW9uT2Zmc2V0KFJlbmRlckJsb2Nr
KiByb290QmxvY2ssIExheW91dFVuaXQgcG9zaXRpb24pOwogICAgIAotICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCk7Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRl
UmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogICAgIExheW91dFVuaXQgZGVzaXJl
ZENvbHVtbldpZHRoKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgZGVzaXJlZENvbHVtbkNvdW50KCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDVjOGJlZTky
NWMzYWY5N2I0YjMyZmNlZTA2YTkwOWI5MTlkMzkyZjEuLjNiNDkzMzA4MTZlNzI1M2QxNzBhZWM1
M2Y0NzQ2NmRlY2UxMjk5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CkBAIC00NjYsMTIgKzQ2NiwxMiBAQCB2b2lkIFJlbmRlckJveDo6c2V0U2Nyb2xsVG9wKExheW91
dFVuaXQgbmV3VG9wKQogICAgICAgICBsYXllcigpLT5zY3JvbGxUb1lPZmZzZXQobmV3VG9wLCBS
ZW5kZXJMYXllcjo6U2Nyb2xsT2Zmc2V0Q2xhbXBlZCk7CiB9CiAKLXZvaWQgUmVuZGVyQm94Ojph
YnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCkKK3ZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJ
bnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29u
c3QKIHsKICAgICByZWN0cy5hcHBlbmQoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6
ZSgpKSk7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFJlbmRlckJveDo6YWJzb2x1dGVRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAg
IHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdCgwLCAwLCB3aWR0aCgp
LCBoZWlnaHQoKSksIGZhbHNlLCB3YXNGaXhlZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oCmluZGV4IDQ1ZDQ0NjBlZTQ4NWMzYTE4NTRmOTM2MGY2ZTg0ZGNkNTU3NGFkZWYu
LjhjNjI0ZmRkNGU2YWYwOWZlMTYxNTllMmRkN2U5NGVmMmQ5YTRlZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTIzMiw4ICsyMzIsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBMYXlvdXRVbml0IGNvbGxhcHNlZE1hcmdpbkJlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIG1h
cmdpbkJlZm9yZSgpOyB9CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbGxhcHNlZE1hcmdpbkFm
dGVyKCkgY29uc3QgeyByZXR1cm4gbWFyZ2luQWZ0ZXIoKTsgfQogCi0gICAgdmlydHVhbCB2b2lk
IGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0
cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQp
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogICAgIAogICAgIEludFJlY3QgcmVmbGVjdGlvbkJv
eCgpIGNvbnN0OwogICAgIGludCByZWZsZWN0aW9uT2Zmc2V0KCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAppbmRl
eCBmOTQ0OTFmMzFjNWE4ZTVmZDIwMjI0NTAxOTU0ZTRiNDZlZjA4NDY2Li41OWFjMGY2ZmYxOWZh
ZDdmODI0OTJjMTNiYmQzMWViMmIwYmRmMGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBA
QCB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbgogICAgICAgICAgICAgdGV4dFggPSBjb250ZW50TGVm
dCArIGNvbnRlbnRXaWR0aCgpIC0gYnV0dG9uQW5kSWNvbldpZHRoIC0gZm9udC53aWR0aCh0ZXh0
UnVuKTsKICAgICAgICAgLy8gV2Ugd2FudCB0byBtYXRjaCB0aGUgYnV0dG9uJ3MgYmFzZWxpbmUK
ICAgICAgICAgUmVuZGVyQnV0dG9uKiBidXR0b25SZW5kZXJlciA9IHRvUmVuZGVyQnV0dG9uKGJ1
dHRvbi0+cmVuZGVyZXIoKSk7Ci0gICAgICAgIExheW91dFVuaXQgdGV4dFkgPSBidXR0b25SZW5k
ZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS55KCkKKyAgICAgICAgTGF5b3V0VW5pdCB0
ZXh0WSA9IGJ1dHRvblJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChCQk5vVHJhbnNm
b3JtcykueSgpCiAgICAgICAgICAgICArIGJ1dHRvblJlbmRlcmVyLT5iYXNlbGluZVBvc2l0aW9u
KEFscGhhYmV0aWNCYXNlbGluZSwgdHJ1ZSwgSG9yaXpvbnRhbExpbmUsIFBvc2l0aW9uT25Db250
YWluaW5nTGluZSk7CiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihz
dHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlKCkt
PmNvbG9yU3BhY2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3Bw
CmluZGV4IDExMjk3YjVkYjdhOWY3YTJkMDllNDY1OTQzYzQ4N2UxODZmMTVhZDAuLmVhOTc3YzQ5
NGU2OGU4OWI1OTE4ZmNhZTg0ODY5ZjgzMmE3MWRjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJRnJhbWUuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgYm9vbCBSZW5kZXJJRnJh
bWU6OmZsYXR0ZW5GcmFtZSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIERvIG5v
dCBmbGF0dGVuIG9mZnNjcmVlbiBpbm5lciBmcmFtZXMgZHVyaW5nIGZyYW1lIGZsYXR0ZW5pbmcs
IGFzIGZsYXR0ZW5pbmcgbWlnaHQgbWFrZSB0aGVtIHZpc2libGUuCi0gICAgSW50UmVjdCBib3Vu
ZGluZ1JlY3QgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIEludFJlY3QgYm91bmRp
bmdSZWN0ID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoQkJOb1RyYW5zZm9ybXMpOwogICAgIHJl
dHVybiBib3VuZGluZ1JlY3QubWF4WCgpID4gMCAmJiBib3VuZGluZ1JlY3QubWF4WSgpID4gMDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCA2Y2E5
ZDNmYjFlOTJkMDJjYmM5MGJhNGRjMzNiYTE5YmQ4NGIyODA0Li4zZjA5NjMzYjAwOGQ5NTZmYTFm
N2UyMTgyZTMwYzRkZDIwNWFjM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcApAQCAtNDY2LDcgKzQ2Niw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAg
IG1fbGluZUJveGVzLnBhaW50KHRoaXMsIHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogfQogCi12
b2lkIFJlbmRlcklubGluZTo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3Rz
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCit2b2lkIFJlbmRlcklubGlu
ZTo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7CiAgICAgaWYgKCFhbHdheXNDcmVhdGVM
aW5lQm94ZXMoKSkKICAgICAgICAgY3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyh0aGlzLCByZWN0
cywgdG9MYXlvdXRTaXplKGFjY3VtdWxhdGVkT2Zmc2V0KSk7CkBAIC00ODUsNyArNDg1LDcgQEAg
dm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0
cywgY29uc3QgTGF5b3V0UG9pbnQmIGEKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVySW5saW5lOjpj
dWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBW
ZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXQpCit2b2lk
IFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25zdCBSZW5kZXJJbmxp
bmUqIGNvbnRhaW5lciwgVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0U2l6
ZSYgb2Zmc2V0KSBjb25zdAogewogICAgIGlmICghY3VsbGVkSW5saW5lRmlyc3RMaW5lQm94KCkp
IHsKICAgICAgICAgcmVjdHMuYXBwZW5kKEludFJlY3Qob2Zmc2V0LndpZHRoKCksIG9mZnNldC5o
ZWlnaHQoKSwgMCwgMCkpOwpAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpj
dWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBW
ZWN0CiAgICAgfQogfQogCi12b2lkIFJlbmRlcklubGluZTo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJJbmxpbmU6OmFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29u
c3QKIHsKICAgICBpZiAoIWFsd2F5c0NyZWF0ZUxpbmVCb3hlcygpKQogICAgICAgICBjdWxsZWRJ
bmxpbmVBYnNvbHV0ZVF1YWRzKHRoaXMsIHF1YWRzKTsKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lk
IFJlbmRlcklubGluZTo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJv
b2wqIHdhc0ZpeGVkKQogICAgICAgICBjb250aW51YXRpb24oKS0+YWJzb2x1dGVRdWFkcyhxdWFk
cywgd2FzRml4ZWQpOwogfQogCi12b2lkIFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1
dGVRdWFkcyhjb25zdCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdG9yPEZsb2F0UXVhZD4m
IHF1YWRzKQordm9pZCBSZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRlUXVhZHMoY29u
c3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykgY29u
c3QKIHsKICAgICBpZiAoIWN1bGxlZElubGluZUZpcnN0TGluZUJveCgpKSB7CiAgICAgICAgIHF1
YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdCgpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKaW5kZXggYWZkNGFhZDQ0OGIwZTgxODE5MzI5ZWEw
YWE2ODZlNWIwOWNlYjY2Ny4uZmU5NWFmMWZlMTg3NTQyNjViYTk3OTA5ZjdlZGI2ZWIzZTczYWU2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaApAQCAtNDYsOCArNDYs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpblN0YXJ0KCkgY29uc3Q7
CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkVuZCgpIGNvbnN0OwogCi0gICAgdmlydHVh
bCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJz
b2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11
bGF0ZWRPZmZzZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBMYXlv
dXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UG9p
bnQmKSBjb25zdDsKIApAQCAtMTAyLDggKzEwMiw4IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0UmVj
dCBjdWxsZWRJbmxpbmVWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkgY29uc3Q7CiAgICAgSW5s
aW5lQm94KiBjdWxsZWRJbmxpbmVGaXJzdExpbmVCb3goKSBjb25zdDsKICAgICBJbmxpbmVCb3gq
IGN1bGxlZElubGluZUxhc3RMaW5lQm94KCkgY29uc3Q7Ci0gICAgdm9pZCBjdWxsZWRJbmxpbmVB
YnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8TGF5b3V0
UmVjdD4mLCBjb25zdCBMYXlvdXRTaXplJik7Ci0gICAgdm9pZCBjdWxsZWRJbmxpbmVBYnNvbHV0
ZVF1YWRzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8RmxvYXRRdWFkPiYp
OworICAgIHZvaWQgY3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25zdCBSZW5kZXJJbmxpbmUq
IGNvbnRhaW5lciwgVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0U2l6ZSYpIGNvbnN0
OworICAgIHZvaWQgY3VsbGVkSW5saW5lQWJzb2x1dGVRdWFkcyhjb25zdCBSZW5kZXJJbmxpbmUq
IGNvbnRhaW5lciwgVmVjdG9yPEZsb2F0UXVhZD4mKSBjb25zdDsKIAogICAgIHZvaWQgYWRkQ2hp
bGRUb0NvbnRpbnVhdGlvbihSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJl
Zm9yZUNoaWxkKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRJZ25vcmluZ0NvbnRpbnVhdGlv
bihSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAppbmRleCA4OTdh
YTg4ZWFmMWVhMmE0NmVkMTM2ZjUwZjdjNjI2MjM5MTM5ZTAxLi5iYjhiZDE5YzFjOTM3NmUyMDMz
NTkzNmM2NTg2MzdlYTg4ZDA5NTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZW51TGlzdC5jcHAKQEAgLTMwMiw3ICszMDIsNyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0Ojpz
aG93UG9wdXAoKQogICAgIC8vIENvbXB1dGUgdGhlIHRvcCBsZWZ0IHRha2luZyB0cmFuc2Zvcm1z
IGludG8gYWNjb3VudCwgYnV0IHVzZQogICAgIC8vIHRoZSBhY3R1YWwgd2lkdGggb2YgdGhlIGVs
ZW1lbnQgdG8gc2l6ZSB0aGUgcG9wdXAuCiAgICAgRmxvYXRQb2ludCBhYnNUb3BMZWZ0ID0gbG9j
YWxUb0Fic29sdXRlKEZsb2F0UG9pbnQoKSwgZmFsc2UsIHRydWUpOwotICAgIExheW91dFJlY3Qg
YWJzQm91bmRzID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBMYXlvdXRSZWN0IGFi
c0JvdW5kcyA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KEJCTm9UcmFuc2Zvcm1zKTsKICAgICBh
YnNCb3VuZHMuc2V0TG9jYXRpb24ocm91bmRlZEludFBvaW50KGFic1RvcExlZnQpKTsKICAgICBt
X3BvcHVwLT5zaG93KGFic0JvdW5kcywgZG9jdW1lbnQoKS0+dmlldygpLAogICAgICAgICBzZWxl
Y3QtPm9wdGlvblRvTGlzdEluZGV4KHNlbGVjdC0+c2VsZWN0ZWRJbmRleCgpKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGE0NWU2MGQ4NjVkZjBhNTYx
MWEwMTYyNmQwYWRlYTU2YjFkN2JmOTQuLjA3ODA4N2JiNWI0NTlhM2FmMmQ3NDY3MTk2ODRhMGUy
MjkwNjZjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBA
IC0xMTU1LDkgKzExNTUsOSBAQCB2b2lkIFJlbmRlck9iamVjdDo6cGFpbnRPdXRsaW5lKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMYXlvdXRSZQogICAgICAgICBncmFw
aGljc0NvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiB9CiAKLUludFJlY3QgUmVuZGVy
T2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybXMpCitJbnRS
ZWN0IFJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoQm91bmRpbmdCb3ggdXNl
VHJhbnNmb3JtcykgY29uc3QKIHsKLSAgICBpZiAodXNlVHJhbnNmb3JtcykgeworICAgIGlmICh1
c2VUcmFuc2Zvcm1zID09IEJCVXNlVHJhbnNmb3JtcykgewogICAgICAgICBWZWN0b3I8RmxvYXRR
dWFkPiBxdWFkczsKICAgICAgICAgYWJzb2x1dGVRdWFkcyhxdWFkcyk7CiAKQEAgLTEyMDUsMTQg
KzEyMDUsMTQgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmFic29sdXRlRm9jdXNSaW5nUXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mIHF1YWRzKQogdm9pZCBSZW5kZXJPYmplY3Q6OmFkZEFic29sdXRlUmVj
dEZvckxheWVyKEludFJlY3QmIHJlc3VsdCkKIHsKICAgICBpZiAoaGFzTGF5ZXIoKSkKLSAgICAg
ICAgcmVzdWx0LnVuaXRlKGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOworICAgICAgICByZXN1
bHQudW5pdGUoYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoQkJOb1RyYW5zZm9ybXMpKTsKICAgICBm
b3IgKFJlbmRlck9iamVjdCogY3VycmVudCA9IGZpcnN0Q2hpbGQoKTsgY3VycmVudDsgY3VycmVu
dCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGN1cnJlbnQtPmFkZEFic29sdXRl
UmVjdEZvckxheWVyKHJlc3VsdCk7CiB9CiAKIExheW91dFJlY3QgUmVuZGVyT2JqZWN0OjpwYWlu
dGluZ1Jvb3RSZWN0KExheW91dFJlY3QmIHRvcExldmVsUmVjdCkKIHsKLSAgICBMYXlvdXRSZWN0
IHJlc3VsdCA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgTGF5b3V0UmVjdCByZXN1
bHQgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChCQk5vVHJhbnNmb3Jtcyk7CiAgICAgdG9wTGV2
ZWxSZWN0ID0gcmVzdWx0OwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJyZW50ID0gZmlyc3RD
aGlsZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKSkKICAgICAg
ICAgY3VycmVudC0+YWRkQWJzb2x1dGVSZWN0Rm9yTGF5ZXIocmVzdWx0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBlY2Y1MjI3MjFhODBlY2NjN2YyNTM0ODcz
ZWU5Mjg2MWQ1YTgxZmNhLi5kMDI3NGIyZDA3NzA1Njg2YTg2OGZiNmQxMjYxNjBhYjdlNWVjZTJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC04Nyw2ICs4Nywx
MiBAQCBlbnVtIEJveFNpZGUgewogICAgIEJTQm90dG9tLAogICAgIEJTTGVmdAogfTsKKyAgICAK
K2VudW0gQm91bmRpbmdCb3ggeworICAgIEJCVXNlVHJhbnNmb3JtcywKKyAgICBCQk5vVHJhbnNm
b3JtcworfTsKKwogCiBjb25zdCBpbnQgY2FyZXRXaWR0aCA9IDE7CiAKQEAgLTYyMSwxMiArNjI3
LDEzIEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4gdGhlIG9mZnNldCBmcm9tIGFuIG9iamVjdCB1
cCB0aGUgY29udGFpbmVyKCkgY2hhaW4uIEFzc2VydHMgdGhhdCBub25lIG9mIHRoZSBpbnRlcm1l
ZGlhdGUgb2JqZWN0cyBoYXZlIHRyYW5zZm9ybXMuCiAgICAgTGF5b3V0U2l6ZSBvZmZzZXRGcm9t
QW5jZXN0b3JDb250YWluZXIoUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAgCi0gICAgdmlydHVh
bCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9p
bnQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVj
dD4mLCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0IHsgfQorCiAgICAgLy8gRklYTUU6IHVzZVRy
YW5zZm9ybXMgc2hvdWxkIGdvIGF3YXkgZXZlbnR1YWxseQotICAgIEludFJlY3QgYWJzb2x1dGVC
b3VuZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm1zID0gZmFsc2UpOworICAgIEludFJlY3Qg
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoQm91bmRpbmdCb3ggdXNlVHJhbnNmb3JtKSBjb25zdDsK
IAogICAgIC8vIEJ1aWxkIGFuIGFycmF5IG9mIHF1YWRzIGluIGFic29sdXRlIGNvb3JkcyBmb3Ig
bGluZSBib3hlcwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiwgYm9vbCogLyp3YXNGaXhlZCovID0gMCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiAvKndhc0ZpeGVkKi8gPSAwKSBjb25z
dCB7IH0KIAogICAgIHZvaWQgYWJzb2x1dGVGb2N1c1JpbmdRdWFkcyhWZWN0b3I8RmxvYXRRdWFk
PiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggZTg4ODYx
ZjNkMDRhMDg2ODQ0ZDNhNzBkMjE1YTQ3NGRlNjg5MjRjOS4uNmI2ZGEyNDQ0ZTEyYzczMjZmMTk2
ZDY0Yjg4MTI1ODgyNzRmOThjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcApAQCAtMzAxLDcgKzMwMSw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gUmVuZGVyVGV4
dDo6b3JpZ2luYWxUZXh0KCkgY29uc3QKICAgICByZXR1cm4gKGUgJiYgZS0+aXNUZXh0Tm9kZSgp
KSA/IHN0YXRpY19jYXN0PFRleHQqPihlKS0+ZGF0YUltcGwoKSA6IDA7CiB9CiAKLXZvaWQgUmVu
ZGVyVGV4dDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCit2b2lkIFJlbmRlclRleHQ6OmFic29sdXRl
UmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0KSBjb25zdAogewogICAgIGZvciAoSW5saW5lVGV4dEJveCogYm94ID0gZmly
c3RUZXh0Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKQogICAgICAgICByZWN0
cy5hcHBlbmQoZW5jbG9zaW5nTGF5b3V0UmVjdChGbG9hdFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQg
KyBib3gtPnRvcExlZnQoKSwgYm94LT5zaXplKCkpKSk7CkBAIC0zODgsNyArMzg4LDcgQEAgc3Rh
dGljIEludFJlY3QgZWxsaXBzaXNSZWN0Rm9yQm94KElubGluZVRleHRCb3gqIGJveCwgdW5zaWdu
ZWQgc3RhcnRQb3MsIHVuc2lnbmUKICAgICByZXR1cm4gSW50UmVjdCgpOwogfQogICAgIAotdm9p
ZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9v
bCogd2FzRml4ZWQsIENsaXBwaW5nT3B0aW9uIG9wdGlvbikKK3ZvaWQgUmVuZGVyVGV4dDo6YWJz
b2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkLCBDbGlw
cGluZ09wdGlvbiBvcHRpb24pIGNvbnN0CiB7CiAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3gg
PSBmaXJzdFRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKICAgICAg
ICAgSW50UmVjdCBib3VuZGFyaWVzID0gYm94LT5jYWxjdWxhdGVCb3VuZGFyaWVzKCk7CkBAIC00
MDUsNyArNDA1LDcgQEAgdm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQsIENsaXBwaW4KICAgICB9CiB9CiAgICAgCi12
b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBi
b29sKiB3YXNGaXhlZCkKK3ZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGFic29sdXRlUXVh
ZHMocXVhZHMsIHdhc0ZpeGVkLCBOb0NsaXBwaW5nKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5oCmluZGV4IDQwMjBkOGFhMzcxMjJkMTI1ZDFkYzRlZjExMDcwOWQxOGY5NTEz
OTguLjQyZTlhZWM5NmIzYjMyYjJkMTllM2JjNTE5NWMxM2Q0NzFjYTA5MzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAtNTQsMTQgKzU0LDE0IEBAIHB1YmxpYzoKICAg
ICBJbmxpbmVUZXh0Qm94KiBjcmVhdGVJbmxpbmVUZXh0Qm94KCk7CiAgICAgdm9pZCBkaXJ0eUxp
bmVCb3hlcyhib29sIGZ1bGxMYXlvdXQpOwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVj
dHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zm
c2V0KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OwogICAgIHZvaWQg
YWJzb2x1dGVSZWN0c0ZvclJhbmdlKFZlY3RvcjxJbnRSZWN0PiYsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gVUlOVF9NQVgsIGJvb2wgdXNlU2VsZWN0aW9u
SGVpZ2h0ID0gZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0gMCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0Zp
eGVkKSBjb25zdDsKICAgICB2b2lkIGFic29sdXRlUXVhZHNGb3JSYW5nZShWZWN0b3I8RmxvYXRR
dWFkPiYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gVUlO
VF9NQVgsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0g
MCk7CiAKICAgICBlbnVtIENsaXBwaW5nT3B0aW9uIHsgTm9DbGlwcGluZywgQ2xpcFRvRWxsaXBz
aXMgfTsKLSAgICB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3
YXNGaXhlZCA9IDAsIENsaXBwaW5nT3B0aW9uID0gTm9DbGlwcGluZyk7CisgICAgdm9pZCBhYnNv
bHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQgPSAwLCBDbGlwcGlu
Z09wdGlvbiA9IE5vQ2xpcHBpbmcpIGNvbnN0OwogCiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRp
b24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3Bw
CmluZGV4IDE3MDk3YjFmYmFiMzYxODA4OGUwYjQ4OTM3YzYwOGU1YzJkODRjZmEuLmQwNTU3N2Ri
ZjA3NTljZGFjMDVkMGEzYjMxMDI5OTg4OTAwNTgyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCkBAIC0x
NzQsNyArMTc0LDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnNob3dQb3B1
cCgpCiAgICAgICAgIG1fc2VhcmNoUG9wdXAtPnNhdmVSZWNlbnRTZWFyY2hlcyhuYW1lLCBtX3Jl
Y2VudFNlYXJjaGVzKTsKICAgICB9CiAKLSAgICBtX3NlYXJjaFBvcHVwLT5wb3B1cE1lbnUoKS0+
c2hvdyhhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCh0cnVlKSwgZG9jdW1lbnQoKS0+dmlldygpLCAt
MSk7CisgICAgbV9zZWFyY2hQb3B1cC0+cG9wdXBNZW51KCktPnNob3coYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoQkJVc2VUcmFuc2Zvcm1zKSwgZG9jdW1lbnQoKS0+dmlldygpLCAtMSk7CiB9CiAK
IHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpoaWRlUG9wdXAoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDFmZWZhYzRmMDE5MmVhM2ViMDU0MTVj
YjM0MzRhZjViMDlmNmE3NDEuLmY0MjFmOTgxZGEyNjdkZDU3ZDU5OTRhYmMzZWMxYTc1NjVkMTgw
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTMyOSwxMiAr
MzI5LDEyIEBAIHZvaWQgUmVuZGVyVmlldzo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBJCiAgICAgICAgIHJlY3QgPSBtX2xheWVy
LT50cmFuc2Zvcm0oKS0+bWFwUmVjdChyZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJWaWV3OjphYnNv
bHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCkKK3ZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8
TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQp
IGNvbnN0CiB7CiAgICAgcmVjdHMuYXBwZW5kKExheW91dFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQs
IG1fbGF5ZXItPnNpemUoKSkpOwogfQogCi12b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkKK3ZvaWQgUmVuZGVyVmll
dzo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVk
KSBjb25zdAogewogICAgIGlmICh3YXNGaXhlZCkKICAgICAgICAgKndhc0ZpeGVkID0gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCBlNmQ3ZDhmNzU1ZjViNzdi
YjdkOTkwODcwZTVhNmFkYWFhNDlmZTY3Li45YTZmNjNkOTBmYmYyMWE2MDdhNWRkNTNkNjIyMGM4
YWY0MWFkZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTg2LDgg
Kzg2LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBwcmludGluZygpIGNvbnN0OwogCi0gICAgdmly
dHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0
UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQg
YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNj
dW11bGF0ZWRPZmZzZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZl
Y3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZvaWQgc2V0TWF4aW1hbE91dGxpbmVTaXplKGludCBv
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxv
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAK
aW5kZXggMmM4MTU5MDhlYmY2Yjk4OTA2NzU3ZDhiYzU0YmU2OTQ3YTcxNzllMy4uN2IxNmE0ZDVi
ZmM5Y2I3YmI2NWU2NWJiMTVhYmM4ZTJmNmViYWVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBS
ZW5kZXJTVkdCbG9jazo6dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCkKICAgICBzZXRIYXNP
dmVyZmxvd0NsaXAoZmFsc2UpOwogfQogCi12b2lkIFJlbmRlclNWR0Jsb2NrOjphYnNvbHV0ZVJl
Y3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JikKK3ZvaWQgUmVuZGVy
U1ZHQmxvY2s6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0
UG9pbnQmKSBjb25zdAogewogICAgIC8vIFRoaXMgY29kZSBwYXRoIHNob3VsZCBuZXZlciBiZSB0
YWtlbiBmb3IgU1ZHLCBhcyB3ZSdyZSBhc3N1bWluZyB1c2VUcmFuc2Zvcm1zPXRydWUgZXZlcnl3
aGVyZSwgYWJzb2x1dGVRdWFkcyBzaG91bGQgYmUgdXNlZC4KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
QmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaApp
bmRleCAyMmMxZjE4ZTM2ZTAyMzEwYmU3ZTdkM2U0ZWM4MTIzYTI5YjVhNzE0Li41OGNmMjYyMGE5
ODE4ZDY0YWUyNzgzNGZlZDhkNDFiNzE2OTIwNDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCkBAIC0zOCw3ICszOCw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHNldFN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+KTsKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2lu
dCYgYWNjdW11bGF0ZWRPZmZzZXQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZl
Y3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkg
Y29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CiAgICAgdmlydHVh
bCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxl
KiBuZXdTdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHAKaW5kZXggZDI5ZDg1ZWM5Mzk3MWRlZTE4ZGIx
MmJkOGU3ODA1ZjU4MTc3MmYxZS4uODk1YjI1NDQ5MDAxMjNmZGJmM2VhMDI1ODU0Y2I5Y2VkYmUw
NGZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdI
aWRkZW5Db250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIFJlbmRlclNW
R0hpZGRlbkNvbnRhaW5lcjo6cGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKQog
ICAgIC8vIFRoaXMgc3VidHJlZSBkb2VzIG5vdCBwYWludC4KIH0KIAotdm9pZCBSZW5kZXJTVkdI
aWRkZW5Db250YWluZXI6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKikK
K3ZvaWQgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+JiwgYm9vbCopIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBzdWJ0cmVlIGRvZXMgbm90IHRh
a2UgdXAgc3BhY2Ugb3IgcGFpbnQKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCmluZGV4IGVmZmY5MjE1MWQyYzM2
MWE2ZDBjOGQ5Nzc3YjMxZjYzNDQ2NGQxMGMuLmYyNmM1ZmM2MWEzN2Y4MjA3ZDRkNjQ5YmU2ODA5
ZDUyYTJmODgyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwog
ICAgIAogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCopIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCog
d2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdEZs
b2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxv
YXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbik7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCmluZGV4IDA5NzcwZWZi
ZjAyN2ZhYzllYmE3ZGJjN2M0ZWE0MzdmNmFhMDEwYjkuLjRjOTA1ODBmMTM1OWJmNjgxYzc3M2Fk
NWQ4YmI4MTZjZWQ0MmE2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZS5jcHAKQEAgLTgyLDkgKzgyLDkgQEAgdm9pZCBSZW5kZXJTVkdJbmxp
bmU6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIKICAgICBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKHRoaXMsIHJl
cGFpbnRDb250YWluZXIsIHVzZVRyYW5zZm9ybXMsIGZpeGVkLCB0cmFuc2Zvcm1TdGF0ZSwgd2Fz
Rml4ZWQpOwogfQogCi12b2lkIFJlbmRlclNWR0lubGluZTo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJTVkdJbmxpbmU6
OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkg
Y29uc3QKIHsKLSAgICBSZW5kZXJPYmplY3QqIG9iamVjdCA9IFJlbmRlclNWR1RleHQ6OmxvY2F0
ZVJlbmRlclNWR1RleHRBbmNlc3Rvcih0aGlzKTsKKyAgICBjb25zdCBSZW5kZXJPYmplY3QqIG9i
amVjdCA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3Rvcih0aGlzKTsK
ICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAppbmRleCAwYTYwODM3ZjQ3NzU5NjkwMzdl
ODQ5NzViY2YyMDA4MDY2YmI4MmY3Li5kMmZhMWNjNTI0MDI0YjYxYWE3ZDRhYTc3YTRlOGRkOGU1
NjA4NDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0lubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5s
aW5lLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBj
bGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lcikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJv
b2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250
YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJh
bnNmb3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBib29sKiB3YXNGaXhlZCA9IDAp
IGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZp
cnR1YWwgSW5saW5lRmxvd0JveCogY3JlYXRlSW5saW5lRmxvd0JveCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAppbmRl
eCAxNGMxZGI4ZTBmOTNlYWY1NThhZWVjODkyYTg3MjMyM2NkMTBkNzIzLi5mYmU0OTNiNTRkY2Rl
YzFjNTc2N2E0NzhhYTY2Mzg2YTU0MDM0YmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcApAQCAtNzAsMTMgKzcwLDEz
IEBAIExheW91dFJlY3QgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om91dGxpbmVCb3VuZHNGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByCiAgICAgcmV0dXJuIGNvbnRhaW5lclJlbGF0aXZl
UXVhZC5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwogfQogCi12b2lkIFJlbmRlclNWR01vZGVsT2Jq
ZWN0OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50
JikKK3ZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91
dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdAogewogICAgIC8vIFRoaXMgY29kZSBw
YXRoIHNob3VsZCBuZXZlciBiZSB0YWtlbiBmb3IgU1ZHLCBhcyB3ZSdyZSBhc3N1bWluZyB1c2VU
cmFuc2Zvcm1zPXRydWUgZXZlcnl3aGVyZSwgYWJzb2x1dGVRdWFkcyBzaG91bGQgYmUgdXNlZC4K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdNb2RlbE9iamVj
dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVk
KQordm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRR
dWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIHF1YWRzLmFwcGVuZChs
b2NhbFRvQWJzb2x1dGVRdWFkKHN0cm9rZUJvdW5kaW5nQm94KCksIGZhbHNlLCB3YXNGaXhlZCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdN
b2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2Rl
bE9iamVjdC5oCmluZGV4IGMyOGQzYzY2MDdkNTU0ZWEyMGMyYmE1YzVhZWVlZGNjMmRlNzNiNzku
LjcwNDFkNDQ5ZWY2MzJjNGZjMzAwOTI2MGY5MmMwMDAzYjAxMGQ3ZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKQEAgLTU1
LDggKzU1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBi
b29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5l
Qm91bmRzRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
TGF5b3V0UG9pbnQqKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZl
Y3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7
Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29s
KiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91
dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdh
c0ZpeGVkKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMs
IGJvb2wgZml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIG5ld1N0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1RleHQuY3BwCmluZGV4IGFmNDM5YjVkMzhmMDg0ZjAyYTkyMWIyYmFmYTBkOWIx
YWJkNDcwODEuLjJhN2Q4MGNmMmVmNTIxYTk0ZmJkOTc3MjIwYjFlNGVlMTI1ZDYwZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAtMjI1
LDcgKzIyNSw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJTVkdUZXh0Ojpwb3NpdGlvbkZvclBv
aW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludEluQ29udGVuCiAgICAgcmV0dXJuIGNsb3Nlc3RC
b3gtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQoTGF5b3V0UG9pbnQocG9pbnRJbkNvbnRl
bnRzLngoKSwgY2xvc2VzdEJveC0+eSgpKSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHVGV4dDo6YWJz
b2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9p
ZCBSZW5kZXJTVkdUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywg
Ym9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0
ZVF1YWQoc3Ryb2tlQm91bmRpbmdCb3goKSwgZmFsc2UsIHdhc0ZpeGVkKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCmluZGV4IGIzZTBmNDNmOGY2
NDljN2ZhNjdlMGI4NDIwMzY3YWYwZDZlOTJkM2UuLmEwYWRhNGNiNGVmZTk4MGNhYmUyN2E5ZmE1
MDRiYWEzOTAxODlkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVGV4dC5oCkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHJl
cXVpcmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBs
YXlvdXQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZl
Y3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBM
YXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJl
Y3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlv
dXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAppbmRleCBkNjRkMGI3YzQ3NjhmMTNjZWJiMDhjYWVkMzgxMDRjMjhhYmRlYWQ2
Li5lZjg0ODYxOTdjNjAwNThhNThlZDdiOGYwNDU0MGY2YjExNGVlNzc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMDgsNyArMjA4LDcgQEAgUGFzc1JlZlB0cjxDbGll
bnRSZWN0PiBJbnRlcm5hbHM6OmJvdW5kaW5nQm94KEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlv
bkNvZGUmIGUKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIo
KTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRl
KCk7Ci0gICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZShyZW5kZXJlci0+YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QoKSk7CisgICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZShyZW5kZXJlci0+
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoQkJOb1RyYW5zZm9ybXMpKTsKIH0KIAogdW5zaWduZWQg
SW50ZXJuYWxzOjptYXJrZXJDb3VudEZvck5vZGUoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109084</attachid>
            <date>2011-09-28 16:12:45 -0700</date>
            <delta_ts>2011-09-28 17:04:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69009-20110928191243.patch</filename>
            <type>text/plain</type>
            <size>40124</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYyMTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MTNiNDA4NGUxYTEyZmM3
YTkzNzViMWVmMmU3ODExZDkzZDQ4MDdiLi45OTQzNjViZGE4OTQ3YzgzN2IxZDA4ZTVkNjE0YmRk
NWE0MWM5OTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTEtMDktMjggIEZhZHkg
U2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDog
TWFrZSBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVk
IG1ldGhvZHMgY29uc3QgYW5kIG1ha2UgaXRzIHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxv
bmdlciBkZWZhdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02OTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwY29taW5nIHBhdGNoZXMgbWF5IG1ha2UgdXNlIG9mIGFic29sdXRlQm91bmRpbmdCb3hS
ZWN0IG9uIGEgY29uc3QgUmVuZGVyT2JqZWN0LCBzbyB0aGlzIG5lZWRlZCB0byBiZSBmaXhlZC4K
KyAgICAgICAgTWFraW5nIHVzZVRyYW5zZm9ybXMgZGVmYXVsdCB0byB0cnVlIGluc3RlYWQgb2Yg
ZmFsc2UgYW5kIHJlcGxhY2luZyBpbnN0YW5jZXMgb2YgYWJzb2x1dGVCb3VuZGluZ0JveFJlY3Qo
KSB0bworICAgICAgICBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3Jtcygp
IHBhcnRpYWxseSBhZGRyZXNlcyAvLyBGSVhNRTogdXNlVHJhbnNmb3JtcyBzaG91bGQgZ28gYXdh
eSBldmVudHVhbGx5LgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6c2NyZWVuUmVjdCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVy
VGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1iRWxlbWVudDo6
c2V0UG9zaXRpb25Gcm9tUG9pbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0
dG9uRWxlbWVudDo6c3RhcnRTcGVlY2hJbnB1dCk6CisgICAgICAgICogcGx1Z2lucy9JRnJhbWVT
aGltU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRQbHVnaW5PY2NsdXNpb25zKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YWJz
b2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJJRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySUZyYW1lOjpm
bGF0dGVuRnJhbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVBYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lbnVM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjpzaG93UG9wdXApOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmFkZEFic29sdXRlUmVjdEZvckxheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6cGFpbnRpbmdSb290UmVjdCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0
ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVRdWFkcyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGV4dDo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0
OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clZpZXc6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6YWJz
b2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR0Jsb2NrOjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0Jsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5D
b250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVy
OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRl
bkNvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6YWJzb2x1dGVRdWFkcyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmFic29sdXRl
UXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
Ym91bmRpbmdCb3gpOgorCiAyMDExLTA5LTI4ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlZmFjdG9yIHNlYXJjaGluZyBp
biBpbnNwZWN0b3IsIGFkZCB0ZXN0IChmaXhlZCBub24gcmVnZXggc2VhcmNoKS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAppbmRleCBiMTY2MjNiYWFjOTMxMDFiMTNjMjM0ZDQzMzQ1NjdiZTJlNjdlNjBl
Li44MTEwMTZhMjhkMDA2NmE0Y2UyMDkzYTFlMjI0YTlmMzRmMzRjNmVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCkBAIC01NzMsNyArNTczLDcgQEAgTGF5b3V0UmVjdCBFbGVtZW50OjpzY3JlZW5S
ZWN0KCkgY29uc3QKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBMYXlv
dXRSZWN0KCk7Ci0gICAgcmV0dXJuIHJlbmRlcmVyKCktPnZpZXcoKS0+ZnJhbWVWaWV3KCktPmNv
bnRlbnRzVG9TY3JlZW4ocmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7Cisg
ICAgcmV0dXJuIHJlbmRlcmVyKCktPnZpZXcoKS0+ZnJhbWVWaWV3KCktPmNvbnRlbnRzVG9TY3Jl
ZW4ocmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMo
KSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKGNv
bnN0IEVsZW1lbnQqIGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggYjMzNjM0OTEzN2FmZDQ5NjIyYzYz
ZGRhNmI4NDg2ZWY2YWE0MGE0Yi4uNDFjMjlkNDAwZDY2ODljN2ZhNDJlMGFkZmE3MjM3NjU1MTI0
MmMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtODIzLDcgKzgyMyw3IEBAIFJlbmRlckJveE1vZGVs
T2JqZWN0KiBOb2RlOjpyZW5kZXJCb3hNb2RlbE9iamVjdCgpIGNvbnN0CiBMYXlvdXRSZWN0IE5v
ZGU6OmdldFJlY3QoKSBjb25zdAogewogICAgIGlmIChyZW5kZXJlcigpKQotICAgICAgICByZXR1
cm4gcmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QodHJ1ZSk7CisgICAgICAgIHJl
dHVybiByZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwogICAgIHJldHVybiBM
YXlvdXRSZWN0KCk7CiB9CiAgICAgCkBAIC04MzUsNyArODM1LDcgQEAgTGF5b3V0UmVjdCBOb2Rl
OjpyZW5kZXJSZWN0KGJvb2wqIGlzUmVwbGFjZWQpCiAgICAgd2hpbGUgKHJlbmRlcmVyICYmICFy
ZW5kZXJlci0+aXNCb2R5KCkgJiYgIXJlbmRlcmVyLT5pc1Jvb3QoKSkgewogICAgICAgICBpZiAo
cmVuZGVyZXItPmlzUmVuZGVyQmxvY2soKSB8fCByZW5kZXJlci0+aXNJbmxpbmVCbG9ja09ySW5s
aW5lVGFibGUoKSB8fCByZW5kZXJlci0+aXNSZXBsYWNlZCgpKSB7CiAgICAgICAgICAgICAqaXNS
ZXBsYWNlZCA9IHJlbmRlcmVyLT5pc1JlcGxhY2VkKCk7Ci0gICAgICAgICAgICByZXR1cm4gcmVu
ZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KHRydWUpOworICAgICAgICAgICAgcmV0dXJu
IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwogICAgICAgICB9CiAgICAgICAg
IHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCmluZGV4IDVkMTc4YWYwNzlh
YjRjZmJkOWQwZjcyMDQzZmFmM2Q4N2M0OGJjYjguLmE2MTk2MjQwZjNmMDQ1YjU2ZDZjMDlmNzAy
MzFkNTQ1MGNiMWYwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Ns
aWRlclRodW1iRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xp
ZGVyVGh1bWJFbGVtZW50LmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkhUTUxQYXJz
ZXJJZGlvbXMuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94LmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU2xpZGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJT
aGFkb3dSb290LmgiCkBAIC0yMTYsNyArMjE3LDcgQEAgdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6
OnNldFBvc2l0aW9uRnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKICAgICAvLyBX
ZSBuZWVkIHRvIGNhbGN1bGF0ZSBjdXJyZW50UG9zaXRpb24gZnJvbSBhYnNvbHV0ZSBwb2ludHMg
YmVjYXVlIHRoZQogICAgIC8vIHJlbmRlcmVyIGZvciB0aGlzIG5vZGUgaXMgdXN1YWxseSBvbiBh
IGxheWVyIGFuZCByZW5kZXJCb3goKS0+eCgpIGFuZAogICAgIC8vIHkoKSBhcmUgdW51c2FibGUu
Ci0gICAgTGF5b3V0UG9pbnQgYWJzb2x1dGVUaHVtYk9yaWdpbiA9IHJlbmRlckJveCgpLT5hYnNv
bHV0ZUJvdW5kaW5nQm94UmVjdCgpLmxvY2F0aW9uKCk7CisgICAgTGF5b3V0UG9pbnQgYWJzb2x1
dGVUaHVtYk9yaWdpbiA9IHJlbmRlckJveCgpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9y
aW5nVHJhbnNmb3JtcygpLmxvY2F0aW9uKCk7CiAgICAgTGF5b3V0UG9pbnQgYWJzb2x1dGVTbGlk
ZXJDb250ZW50T3JpZ2luID0gcm91bmRlZExheW91dFBvaW50KGlucHV0LT5yZW5kZXJlcigpLT5s
b2NhbFRvQWJzb2x1dGUoKSk7CiAgICAgaWYgKGlzVmVydGljYWwpIHsKICAgICAgICAgdHJhY2tT
aXplID0gaW5wdXQtPnJlbmRlckJveCgpLT5jb250ZW50SGVpZ2h0KCkgLSByZW5kZXJCb3goKS0+
aGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCBiZjE4NWNmN2IwZjA5NmI5M2M4ODgzMjA2YmEz
Mzc0ZDA0OTM0NWQ1Li4wMjE4MzI5OGNkNTFlNmJhZDI0YzQ4MDExNmNiMjE2ZTFhZjdkZWYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5u
ZXJFbGVtZW50cy5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJNb3VzZUV2ZW50Lmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisjaW5jbHVkZSAi
UmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgi
CiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1l
LmgiCkBAIC01MzUsNyArNTM2LDcgQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVu
dDo6c3RhcnRTcGVlY2hJbnB1dCgpCiAgICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IGlucHV0
ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yTm9kZSgpKTsK
ICAgICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UgPSBpbnB1dC0+Y29tcHV0ZUluaGVyaXRlZExhbmd1
YWdlKCk7CiAgICAgU3RyaW5nIGdyYW1tYXIgPSBpbnB1dC0+Z2V0QXR0cmlidXRlKHdlYmtpdGdy
YW1tYXJBdHRyKTsKLSAgICBJbnRSZWN0IHJlY3QgPSByZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5k
aW5nQm94UmVjdCgpOworICAgIEludFJlY3QgcmVjdCA9IHJlbmRlcmVyKCktPmFic29sdXRlQm91
bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAgICAgaWYgKHNwZWVjaElucHV0KCkt
PnN0YXJ0UmVjb2duaXRpb24obV9saXN0ZW5lcklkLCByZWN0LCBsYW5ndWFnZSwgZ3JhbW1hciwg
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCiAgICAgICAgIHNldFN0YXRlKFJlY29yZGlu
Zyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hs
aWdodGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIu
Y3BwCmluZGV4IGU2ODliNTI1MGI2YTg2OGVhNWE1NTBkNmRhYWJhMjk0NWE3OGY2OWQuLmY4YmZi
NjBmOWFkZWQyMGIyZTEwNjgwYTA4Yzk2NDI4NGRhODRmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwCkBAIC0zNjEsNyArMzYxLDcgQEAg
dm9pZCBkcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEhpZ2hsaWdo
dERhdGEqIGhpZ2hsaWdodERhdGEpCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFNpemUg
bWFpbkZyYW1lT2Zmc2V0ID0gZnJhbWVUb01haW5GcmFtZU9mZnNldChjb250YWluaW5nRnJhbWUp
OwotICAgIExheW91dFJlY3QgYm91bmRpbmdCb3ggPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QodHJ1ZSk7CisgICAgTGF5b3V0UmVjdCBib3VuZGluZ0JveCA9IHJlbmRlcmVyLT5h
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwogCiAgICAgYm91bmRpbmdCb3gubW92ZShtYWluRnJh
bWVPZmZzZXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0lGcmFtZVNo
aW1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQu
Y3BwCmluZGV4IGMwYWExZTQxMzZjNDk0MmYyOWFmODg0ZjMyMTY4ODVjN2FjNTViNzkuLjgyNjU3
NjUxMTBhZTU0NjhkMDMwNWYzZWZiMDQ2ZDI1YWRkN2ZlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBn
ZXRQbHVnaW5PY2NsdXNpb25zKEVsZW1lbnQqIGVsZW1lbnQsIFdpZGdldCogcGFyZW50V2lkZ2V0
LCBjb25zdCBJbnRSZWN0JgogICAgICAgICBSZW5kZXJPYmplY3QqIGlmcmFtZVJlbmRlcmVyID0g
ZWxlbWVudC0+cmVuZGVyZXIoKTsKIAogICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShI
VE1MTmFtZXM6OmlmcmFtZVRhZykKLSAgICAgICAgICAgICYmIGlmcmFtZVJlbmRlcmVyLT5hYnNv
bHV0ZUJvdW5kaW5nQm94UmVjdCgpLmludGVyc2VjdHMoZnJhbWVSZWN0KQorICAgICAgICAgICAg
JiYgaWZyYW1lUmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zv
cm1zKCkuaW50ZXJzZWN0cyhmcmFtZVJlY3QpCiAgICAgICAgICAgICAmJiAoIWlmcmFtZVJlbmRl
cmVyLT5zdHlsZSgpIHx8IGlmcmFtZVJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0g
VklTSUJMRSkpIHsKICAgICAgICAgICAgIGdldE9iamVjdFN0YWNrKGlmcmFtZVJlbmRlcmVyLCAm
aWZyYW1lWnN0YWNrKTsKICAgICAgICAgICAgIGlmIChpZnJhbWVJc0Fib3ZlUGx1Z2luKGlmcmFt
ZVpzdGFjaywgcGx1Z2luWnN0YWNrKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKaW5kZXggMDBmM2YzZDgwNDhlNTAyZTkyYmRmNjE2MjBhNDJlYmNjZTUwZjNhNy4u
NWQ1M2VlNDQwODQwYTE2ODI1NDYyZGRjY2Q1OTcyNjBhNjAzNDg0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC01ODM5LDcgKzU4MzksNyBAQCB2b2lkIFJl
bmRlckJsb2NrOjpzZXRQYWdlTG9naWNhbE9mZnNldChpbnQgbG9naWNhbE9mZnNldCkKICAgICBt
X3JhcmVEYXRhLT5tX3BhZ2VMb2dpY2FsT2Zmc2V0ID0gbG9naWNhbE9mZnNldDsKIH0KIAotdm9p
ZCBSZW5kZXJCbG9jazo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBj
b25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCit2b2lkIFJlbmRlckJsb2NrOjph
YnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50
JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QKIHsKICAgICAvLyBGb3IgYmxvY2tzIGluc2lkZSBp
bmxpbmVzLCB3ZSBnbyBhaGVhZCBhbmQgaW5jbHVkZSBtYXJnaW5zIHNvIHRoYXQgd2UgcnVuIHJp
Z2h0IHVwIHRvIHRoZQogICAgIC8vIGlubGluZSBib3hlcyBhYm92ZSBhbmQgYmVsb3cgdXMgKHRo
dXMgZ2V0dGluZyBtZXJnZWQgd2l0aCB0aGVtIHRvIGZvcm0gYSBzaW5nbGUgaXJyZWd1bGFyCkBA
IC01ODU1LDcgKzU4NTUsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVJlY3RzKFZlY3Rv
cjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhYwogICAgICAgICByZWN0
cy5hcHBlbmQoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSk7CiB9CiAKLXZv
aWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBi
b29sKiB3YXNGaXhlZCkKK3ZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZs
b2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICAvLyBGb3IgYmxv
Y2tzIGluc2lkZSBpbmxpbmVzLCB3ZSBnbyBhaGVhZCBhbmQgaW5jbHVkZSBtYXJnaW5zIHNvIHRo
YXQgd2UgcnVuIHJpZ2h0IHVwIHRvIHRoZQogICAgIC8vIGlubGluZSBib3hlcyBhYm92ZSBhbmQg
YmVsb3cgdXMgKHRodXMgZ2V0dGluZyBtZXJnZWQgd2l0aCB0aGVtIHRvIGZvcm0gYSBzaW5nbGUg
aXJyZWd1bGFyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IDA5Nzcy
N2U4YjUzNTgyZmNhYjdjZDkzMmU2NGE5NzA3ZmY5ZWQ2ODQuLmY4MWIyZmU2MTcxNmI5YTBjOTZk
OTcwNzY2MDVjNzQ3YjhkZmM1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oCkBAIC02ODIsOCArNjgyLDggQEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxM
ZWZ0U2VsZWN0aW9uT2Zmc2V0KFJlbmRlckJsb2NrKiByb290QmxvY2ssIExheW91dFVuaXQgcG9z
aXRpb24pOwogICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0U2VsZWN0aW9uT2Zmc2V0KFJlbmRl
ckJsb2NrKiByb290QmxvY2ssIExheW91dFVuaXQgcG9zaXRpb24pOwogICAgIAotICAgIHZpcnR1
YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCk7Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFi
c29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0
b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogICAgIExheW91dFVuaXQg
ZGVzaXJlZENvbHVtbldpZHRoKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgZGVzaXJlZENvbHVtbkNv
dW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDVj
OGJlZTkyNWMzYWY5N2I0YjMyZmNlZTA2YTkwOWI5MTlkMzkyZjEuLjNiNDkzMzA4MTZlNzI1M2Qx
NzBhZWM1M2Y0NzQ2NmRlY2UxMjk5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCkBAIC00NjYsMTIgKzQ2NiwxMiBAQCB2b2lkIFJlbmRlckJveDo6c2V0U2Nyb2xsVG9w
KExheW91dFVuaXQgbmV3VG9wKQogICAgICAgICBsYXllcigpLT5zY3JvbGxUb1lPZmZzZXQobmV3
VG9wLCBSZW5kZXJMYXllcjo6U2Nyb2xsT2Zmc2V0Q2xhbXBlZCk7CiB9CiAKLXZvaWQgUmVuZGVy
Qm94OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCkKK3ZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzKFZl
Y3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNl
dCkgY29uc3QKIHsKICAgICByZWN0cy5hcHBlbmQoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNl
dCwgc2l6ZSgpKSk7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxG
bG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFJlbmRlckJveDo6YWJzb2x1
dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAog
ewogICAgIHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdCgwLCAwLCB3
aWR0aCgpLCBoZWlnaHQoKSksIGZhbHNlLCB3YXNGaXhlZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCmluZGV4IDQ1ZDQ0NjBlZTQ4NWMzYTE4NTRmOTM2MGY2ZTg0ZGNkNTU3
NGFkZWYuLjhjNjI0ZmRkNGU2YWYwOWZlMTYxNTllMmRkN2U5NGVmMmQ5YTRlZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTIzMiw4ICsyMzIsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbGxhcHNlZE1hcmdpbkJlZm9yZSgpIGNvbnN0IHsgcmV0
dXJuIG1hcmdpbkJlZm9yZSgpOyB9CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbGxhcHNlZE1h
cmdpbkFmdGVyKCkgY29uc3QgeyByZXR1cm4gbWFyZ2luQWZ0ZXIoKTsgfQogCi0gICAgdmlydHVh
bCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQm
IGFjY3VtdWxhdGVkT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0
b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1
dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogICAgIAogICAgIEludFJlY3QgcmVmbGVj
dGlvbkJveCgpIGNvbnN0OwogICAgIGludCByZWZsZWN0aW9uT2Zmc2V0KCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNw
cAppbmRleCBmOTQ0OTFmMzFjNWE4ZTVmZDIwMjI0NTAxOTU0ZTRiNDZlZjA4NDY2Li5jN2JkZTI0
MTkyYjQ2MmU1MmU2ZGVlOWVkMjU2MGY2NzQyMjgyZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKQEAgLTEzMiw3ICsx
MzIsNyBAQCB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbgogICAgICAgICAgICAgdGV4dFggPSBjb250
ZW50TGVmdCArIGNvbnRlbnRXaWR0aCgpIC0gYnV0dG9uQW5kSWNvbldpZHRoIC0gZm9udC53aWR0
aCh0ZXh0UnVuKTsKICAgICAgICAgLy8gV2Ugd2FudCB0byBtYXRjaCB0aGUgYnV0dG9uJ3MgYmFz
ZWxpbmUKICAgICAgICAgUmVuZGVyQnV0dG9uKiBidXR0b25SZW5kZXJlciA9IHRvUmVuZGVyQnV0
dG9uKGJ1dHRvbi0+cmVuZGVyZXIoKSk7Ci0gICAgICAgIExheW91dFVuaXQgdGV4dFkgPSBidXR0
b25SZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS55KCkKKyAgICAgICAgTGF5b3V0
VW5pdCB0ZXh0WSA9IGJ1dHRvblJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9y
aW5nVHJhbnNmb3JtcygpLnkoKQogICAgICAgICAgICAgKyBidXR0b25SZW5kZXJlci0+YmFzZWxp
bmVQb3NpdGlvbihBbHBoYWJldGljQmFzZWxpbmUsIHRydWUsIEhvcml6b250YWxMaW5lLCBQb3Np
dGlvbk9uQ29udGFpbmluZ0xpbmUpOwogCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRG
aWxsQ29sb3Ioc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3Ip
LCBzdHlsZSgpLT5jb2xvclNwYWNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SUZyYW1lLmNwcAppbmRleCAxMTI5N2I1ZGI3YTlmN2EyZDA5ZTQ2NTk0M2M0ODdlMTg2ZjE1YWQw
Li5jZTBmNDNiZDAzMDQxNTFhNDA4M2IwYTAyMGE5ZTJlZDk2MWIxM2RhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIGJvb2wg
UmVuZGVySUZyYW1lOjpmbGF0dGVuRnJhbWUoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICAvLyBEbyBub3QgZmxhdHRlbiBvZmZzY3JlZW4gaW5uZXIgZnJhbWVzIGR1cmluZyBmcmFtZSBm
bGF0dGVuaW5nLCBhcyBmbGF0dGVuaW5nIG1pZ2h0IG1ha2UgdGhlbSB2aXNpYmxlLgotICAgIElu
dFJlY3QgYm91bmRpbmdSZWN0ID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBJbnRS
ZWN0IGJvdW5kaW5nUmVjdCA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zv
cm1zKCk7CiAgICAgcmV0dXJuIGJvdW5kaW5nUmVjdC5tYXhYKCkgPiAwICYmIGJvdW5kaW5nUmVj
dC5tYXhZKCkgPiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwCmluZGV4IDZjYTlkM2ZiMWU5MmQwMmNiYzkwYmE0ZGMzM2JhMTliZDg0YjI4MDQuLjNmMDk2
MzNiMDA4ZDk1NmZhMWY3ZTIxODJlMzBjNGRkMjA1YWMzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgdm9pZCBSZW5kZXJJ
bmxpbmU6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQpCiAgICAgbV9saW5lQm94ZXMucGFpbnQodGhpcywgcGFpbnRJbmZvLCBwYWludE9m
ZnNldCk7CiB9CiAKLXZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlv
dXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkKK3Zv
aWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMs
IGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QKIHsKICAgICBpZiAo
IWFsd2F5c0NyZWF0ZUxpbmVCb3hlcygpKQogICAgICAgICBjdWxsZWRJbmxpbmVBYnNvbHV0ZVJl
Y3RzKHRoaXMsIHJlY3RzLCB0b0xheW91dFNpemUoYWNjdW11bGF0ZWRPZmZzZXQpKTsKQEAgLTQ4
NSw3ICs0ODUsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5
b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYQogICAgIH0KIH0KIAotdm9pZCBS
ZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRlUmVjdHMoY29uc3QgUmVuZGVySW5saW5l
KiBjb250YWluZXIsIFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFNpemUm
IG9mZnNldCkKK3ZvaWQgUmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKGNv
bnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBj
b25zdCBMYXlvdXRTaXplJiBvZmZzZXQpIGNvbnN0CiB7CiAgICAgaWYgKCFjdWxsZWRJbmxpbmVG
aXJzdExpbmVCb3goKSkgewogICAgICAgICByZWN0cy5hcHBlbmQoSW50UmVjdChvZmZzZXQud2lk
dGgoKSwgb2Zmc2V0LmhlaWdodCgpLCAwLCAwKSk7CkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBS
ZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRlUmVjdHMoY29uc3QgUmVuZGVySW5saW5l
KiBjb250YWluZXIsIFZlY3QKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0
ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFJl
bmRlcklubGluZTo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wq
IHdhc0ZpeGVkKSBjb25zdAogewogICAgIGlmICghYWx3YXlzQ3JlYXRlTGluZUJveGVzKCkpCiAg
ICAgICAgIGN1bGxlZElubGluZUFic29sdXRlUXVhZHModGhpcywgcXVhZHMpOwpAQCAtNTY5LDcg
KzU2OSw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCiAgICAgICAgIGNvbnRpbnVhdGlvbigpLT5hYnNv
bHV0ZVF1YWRzKHF1YWRzLCB3YXNGaXhlZCk7CiB9CiAKLXZvaWQgUmVuZGVySW5saW5lOjpjdWxs
ZWRJbmxpbmVBYnNvbHV0ZVF1YWRzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBWZWN0
b3I8RmxvYXRRdWFkPiYgcXVhZHMpCit2b2lkIFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJz
b2x1dGVRdWFkcyhjb25zdCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdG9yPEZsb2F0UXVh
ZD4mIHF1YWRzKSBjb25zdAogewogICAgIGlmICghY3VsbGVkSW5saW5lRmlyc3RMaW5lQm94KCkp
IHsKICAgICAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCBhZmQ0YWFkNDQ4
YjBlODE4MTkzMjllYTBhYTY4NmU1YjA5Y2ViNjY3Li5mZTk1YWYxZmUxODc1NDI2NWJhOTc5MDlm
N2VkYjZlYjNlNzNhZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5o
CkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2lu
U3RhcnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luRW5kKCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBj
b25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9pZCBh
YnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZp
cnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91
dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICAg
ICB2aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBj
b25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwogCkBAIC0xMDIsOCArMTAyLDggQEAgcHJpdmF0ZToK
ICAgICBMYXlvdXRSZWN0IGN1bGxlZElubGluZVZpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3goKSBj
b25zdDsKICAgICBJbmxpbmVCb3gqIGN1bGxlZElubGluZUZpcnN0TGluZUJveCgpIGNvbnN0Owog
ICAgIElubGluZUJveCogY3VsbGVkSW5saW5lTGFzdExpbmVCb3goKSBjb25zdDsKLSAgICB2b2lk
IGN1bGxlZElubGluZUFic29sdXRlUmVjdHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIs
IFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFNpemUmKTsKLSAgICB2b2lkIGN1bGxl
ZElubGluZUFic29sdXRlUXVhZHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3Rv
cjxGbG9hdFF1YWQ+Jik7CisgICAgdm9pZCBjdWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKGNvbnN0
IFJlbmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlv
dXRTaXplJikgY29uc3Q7CisgICAgdm9pZCBjdWxsZWRJbmxpbmVBYnNvbHV0ZVF1YWRzKGNvbnN0
IFJlbmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8RmxvYXRRdWFkPiYpIGNvbnN0OwogCiAg
ICAgdm9pZCBhZGRDaGlsZFRvQ29udGludWF0aW9uKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJl
bmRlck9iamVjdCogYmVmb3JlQ2hpbGQpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZElnbm9y
aW5nQ29udGludWF0aW9uKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVm
b3JlQ2hpbGQgPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3Qu
Y3BwCmluZGV4IDg5N2FhODhlYWYxZWEyYTQ2ZWQxMzZmNTBmN2M2MjYyMzkxMzllMDEuLjliYTNi
NWU3YTE5NzJjYzg0ZmMzNTQ2NGRjM2Y1ZGMyMWRhNzU0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgUmVu
ZGVyTWVudUxpc3Q6OnNob3dQb3B1cCgpCiAgICAgLy8gQ29tcHV0ZSB0aGUgdG9wIGxlZnQgdGFr
aW5nIHRyYW5zZm9ybXMgaW50byBhY2NvdW50LCBidXQgdXNlCiAgICAgLy8gdGhlIGFjdHVhbCB3
aWR0aCBvZiB0aGUgZWxlbWVudCB0byBzaXplIHRoZSBwb3B1cC4KICAgICBGbG9hdFBvaW50IGFi
c1RvcExlZnQgPSBsb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCgpLCBmYWxzZSwgdHJ1ZSk7Ci0g
ICAgTGF5b3V0UmVjdCBhYnNCb3VuZHMgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAg
IExheW91dFJlY3QgYWJzQm91bmRzID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1Ry
YW5zZm9ybXMoKTsKICAgICBhYnNCb3VuZHMuc2V0TG9jYXRpb24ocm91bmRlZEludFBvaW50KGFi
c1RvcExlZnQpKTsKICAgICBtX3BvcHVwLT5zaG93KGFic0JvdW5kcywgZG9jdW1lbnQoKS0+dmll
dygpLAogICAgICAgICBzZWxlY3QtPm9wdGlvblRvTGlzdEluZGV4KHNlbGVjdC0+c2VsZWN0ZWRJ
bmRleCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4
IGE0NWU2MGQ4NjVkZjBhNTYxMWEwMTYyNmQwYWRlYTU2YjFkN2JmOTQuLjk0OTVlMzQ5MTJlZWI0
OGM3OGJhNTU1YTQxNmJkZjA2NjUxYjU1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCkBAIC0xMTU1LDcgKzExNTUsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6
cGFpbnRPdXRsaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMYXlv
dXRSZQogICAgICAgICBncmFwaGljc0NvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiB9
CiAKLUludFJlY3QgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVz
ZVRyYW5zZm9ybXMpCitJbnRSZWN0IFJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3QoYm9vbCB1c2VUcmFuc2Zvcm1zKSBjb25zdAogewogICAgIGlmICh1c2VUcmFuc2Zvcm1zKSB7
CiAgICAgICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwpAQCAtMTIwNSwxNCArMTIwNSwxNCBA
QCB2b2lkIFJlbmRlck9iamVjdDo6YWJzb2x1dGVGb2N1c1JpbmdRdWFkcyhWZWN0b3I8RmxvYXRR
dWFkPiYgcXVhZHMpCiB2b2lkIFJlbmRlck9iamVjdDo6YWRkQWJzb2x1dGVSZWN0Rm9yTGF5ZXIo
SW50UmVjdCYgcmVzdWx0KQogewogICAgIGlmIChoYXNMYXllcigpKQotICAgICAgICByZXN1bHQu
dW5pdGUoYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CisgICAgICAgIHJlc3VsdC51bml0ZShh
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpKTsKICAgICBmb3IgKFJl
bmRlck9iamVjdCogY3VycmVudCA9IGZpcnN0Q2hpbGQoKTsgY3VycmVudDsgY3VycmVudCA9IGN1
cnJlbnQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGN1cnJlbnQtPmFkZEFic29sdXRlUmVjdEZv
ckxheWVyKHJlc3VsdCk7CiB9CiAKIExheW91dFJlY3QgUmVuZGVyT2JqZWN0OjpwYWludGluZ1Jv
b3RSZWN0KExheW91dFJlY3QmIHRvcExldmVsUmVjdCkKIHsKLSAgICBMYXlvdXRSZWN0IHJlc3Vs
dCA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgTGF5b3V0UmVjdCByZXN1bHQgPSBh
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOwogICAgIHRvcExldmVs
UmVjdCA9IHJlc3VsdDsKICAgICBmb3IgKFJlbmRlck9iamVjdCogY3VycmVudCA9IGZpcnN0Q2hp
bGQoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAg
IGN1cnJlbnQtPmFkZEFic29sdXRlUmVjdEZvckxheWVyKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggZWNmNTIyNzIxYTgwZWNjYzdmMjUzNDg3M2Vl
OTI4NjFkNWE4MWZjYS4uMDhkYWI2M2VlNGRmZDEyZjdhODcyOWViYzViNWRkMzgyMzM1NGZmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtNjIxLDEyICs2MjEs
MTQgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUgb2Zmc2V0IGZyb20gYW4gb2JqZWN0IHVw
IHRoZSBjb250YWluZXIoKSBjaGFpbi4gQXNzZXJ0cyB0aGF0IG5vbmUgb2YgdGhlIGludGVybWVk
aWF0ZSBvYmplY3RzIGhhdmUgdHJhbnNmb3Jtcy4KICAgICBMYXlvdXRTaXplIG9mZnNldEZyb21B
bmNlc3RvckNvbnRhaW5lcihSZW5kZXJPYmplY3QqKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFs
IHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2lu
dCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0
PiYsIGNvbnN0IExheW91dFBvaW50JikgY29uc3QgeyB9CisKICAgICAvLyBGSVhNRTogdXNlVHJh
bnNmb3JtcyBzaG91bGQgZ28gYXdheSBldmVudHVhbGx5Ci0gICAgSW50UmVjdCBhYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybXMgPSBmYWxzZSk7CisgICAgSW50UmVjdCBh
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybSA9IHRydWUpIGNvbnN0Owor
ICAgIEludFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKSBj
b25zdCB7IHJldHVybiBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChmYWxzZSk7IH0KIAogICAgIC8v
IEJ1aWxkIGFuIGFycmF5IG9mIHF1YWRzIGluIGFic29sdXRlIGNvb3JkcyBmb3IgbGluZSBib3hl
cwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9v
bCogLyp3YXNGaXhlZCovID0gMCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiAvKndhc0ZpeGVkKi8gPSAwKSBjb25zdCB7IH0KIAog
ICAgIHZvaWQgYWJzb2x1dGVGb2N1c1JpbmdRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggZTg4ODYxZjNkMDRhMDg2
ODQ0ZDNhNzBkMjE1YTQ3NGRlNjg5MjRjOS4uNmI2ZGEyNDQ0ZTEyYzczMjZmMTk2ZDY0Yjg4MTI1
ODgyNzRmOThjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAt
MzAxLDcgKzMwMSw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gUmVuZGVyVGV4dDo6b3JpZ2lu
YWxUZXh0KCkgY29uc3QKICAgICByZXR1cm4gKGUgJiYgZS0+aXNUZXh0Tm9kZSgpKSA/IHN0YXRp
Y19jYXN0PFRleHQqPihlKS0+ZGF0YUltcGwoKSA6IDA7CiB9CiAKLXZvaWQgUmVuZGVyVGV4dDo6
YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2lu
dCYgYWNjdW11bGF0ZWRPZmZzZXQpCit2b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUmVjdHMoVmVj
dG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zm
c2V0KSBjb25zdAogewogICAgIGZvciAoSW5saW5lVGV4dEJveCogYm94ID0gZmlyc3RUZXh0Qm94
KCk7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKQogICAgICAgICByZWN0cy5hcHBlbmQo
ZW5jbG9zaW5nTGF5b3V0UmVjdChGbG9hdFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQgKyBib3gtPnRv
cExlZnQoKSwgYm94LT5zaXplKCkpKSk7CkBAIC0zODgsNyArMzg4LDcgQEAgc3RhdGljIEludFJl
Y3QgZWxsaXBzaXNSZWN0Rm9yQm94KElubGluZVRleHRCb3gqIGJveCwgdW5zaWduZWQgc3RhcnRQ
b3MsIHVuc2lnbmUKICAgICByZXR1cm4gSW50UmVjdCgpOwogfQogICAgIAotdm9pZCBSZW5kZXJU
ZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4
ZWQsIENsaXBwaW5nT3B0aW9uIG9wdGlvbikKK3ZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkLCBDbGlwcGluZ09wdGlv
biBvcHRpb24pIGNvbnN0CiB7CiAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3ggPSBmaXJzdFRl
eHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKICAgICAgICAgSW50UmVj
dCBib3VuZGFyaWVzID0gYm94LT5jYWxjdWxhdGVCb3VuZGFyaWVzKCk7CkBAIC00MDUsNyArNDA1
LDcgQEAgdm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBx
dWFkcywgYm9vbCogd2FzRml4ZWQsIENsaXBwaW4KICAgICB9CiB9CiAgICAgCi12b2lkIFJlbmRl
clRleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNG
aXhlZCkKK3ZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYg
cXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGFic29sdXRlUXVhZHMocXVhZHMs
IHdhc0ZpeGVkLCBOb0NsaXBwaW5nKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5oCmluZGV4IDQwMjBkOGFhMzcxMjJkMTI1ZDFkYzRlZjExMDcwOWQxOGY5NTEzOTguLjQyZTlh
ZWM5NmIzYjMyYjJkMTllM2JjNTE5NWMxM2Q0NzFjYTA5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHQuaApAQCAtNTQsMTQgKzU0LDE0IEBAIHB1YmxpYzoKICAgICBJbmxpbmVU
ZXh0Qm94KiBjcmVhdGVJbmxpbmVUZXh0Qm94KCk7CiAgICAgdm9pZCBkaXJ0eUxpbmVCb3hlcyhi
b29sIGZ1bGxMYXlvdXQpOwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9y
PExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OwogICAgIHZvaWQgYWJzb2x1dGVS
ZWN0c0ZvclJhbmdlKFZlY3RvcjxJbnRSZWN0PiYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCwg
dW5zaWduZWQgZW5kT2Zmc2V0ID0gVUlOVF9NQVgsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0ID0g
ZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0gMCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZv
aWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25z
dDsKICAgICB2b2lkIGFic29sdXRlUXVhZHNGb3JSYW5nZShWZWN0b3I8RmxvYXRRdWFkPiYsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gVUlOVF9NQVgsIGJv
b2wgdXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0gMCk7CiAKICAg
ICBlbnVtIENsaXBwaW5nT3B0aW9uIHsgTm9DbGlwcGluZywgQ2xpcFRvRWxsaXBzaXMgfTsKLSAg
ICB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCA9
IDAsIENsaXBwaW5nT3B0aW9uID0gTm9DbGlwcGluZyk7CisgICAgdm9pZCBhYnNvbHV0ZVF1YWRz
KFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQgPSAwLCBDbGlwcGluZ09wdGlvbiA9
IE5vQ2xpcHBpbmcpIGNvbnN0OwogCiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRp
b25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IDE3
MDk3YjFmYmFiMzYxODA4OGUwYjQ4OTM3YzYwOGU1YzJkODRjZmEuLmZmOTA3NzBmMDk1NTc4OTEw
NzVkYjkxZTI5ZTFkZmU3ODcwNGFmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCkBAIC0xNzQsNyArMTc0
LDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnNob3dQb3B1cCgpCiAgICAg
ICAgIG1fc2VhcmNoUG9wdXAtPnNhdmVSZWNlbnRTZWFyY2hlcyhuYW1lLCBtX3JlY2VudFNlYXJj
aGVzKTsKICAgICB9CiAKLSAgICBtX3NlYXJjaFBvcHVwLT5wb3B1cE1lbnUoKS0+c2hvdyhhYnNv
bHV0ZUJvdW5kaW5nQm94UmVjdCh0cnVlKSwgZG9jdW1lbnQoKS0+dmlldygpLCAtMSk7CisgICAg
bV9zZWFyY2hQb3B1cC0+cG9wdXBNZW51KCktPnNob3coYWJzb2x1dGVCb3VuZGluZ0JveFJlY3Qo
KSwgZG9jdW1lbnQoKS0+dmlldygpLCAtMSk7CiB9CiAKIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lOjpoaWRlUG9wdXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZVNhZmFyaS5jcHAKaW5kZXggZGJhODc0ZDRhYWNlZGExNTEzZTY5ZTZhZTBkNjUwNmVi
NDMwODk5NS4uZDM0ZDA3NDg0NDYzYTlmNjUyMjZmNWQxMmZjMTcwODc1NzgzMzBjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCkBAIC0xMDgw
LDcgKzEwODAsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNlYXJjaEZpZWxkQ2Fu
Y2VsQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbgogICAgIFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBpbnB1dC0+cmVuZGVyZXIoKTsKICAgICBBU1NFUlQocmVuZGVyZXIpOwogCi0g
ICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0
KCk7CisgICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdC
b3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAKICAgICBwYWludFRoZW1lUGFydChTYWZhcmlU
aGVtZTo6U2VhcmNoRmllbGRDYW5jZWxCdXR0b25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCksIHNlYXJjaFJlY3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qoc2VhcmNoUmVj
dCwgc2VhcmNoRmllbGRTaXplcygpKSwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgIHJldHVybiBm
YWxzZTsKQEAgLTExMzQsNyArMTEzNCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50
U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0CiAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGlucHV0LT5yZW5kZXJlcigpOwogICAgIEFTU0VSVChy
ZW5kZXJlcik7CiAKLSAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVC
b3VuZGluZ0JveFJlY3QoKTsKKyAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJz
b2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKIAogICAgIHBhaW50VGhl
bWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydCwgcGFp
bnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBzZWFyY2hSZWN0LCBjb250cm9sU2l6
ZUZyb21SZWN0KHNlYXJjaFJlY3QsIHNlYXJjaEZpZWxkU2l6ZXMoKSksIGRldGVybWluZVN0YXRl
KG8pKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTU3LDcgKzExNTcsNyBAQCBib29sIFJlbmRl
clRoZW1lU2FmYXJpOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihSZW5kZXJPYmplY3Qq
IG8sIGNvbnN0IFBhaQogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpbnB1dC0+cmVuZGVy
ZXIoKTsKICAgICBBU1NFUlQocmVuZGVyZXIpOwogCi0gICAgSW50UmVjdCBzZWFyY2hSZWN0ID0g
cmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgSW50UmVjdCBzZWFyY2hS
ZWN0ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1z
KCk7CiAKICAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6U2VhcmNoRmllbGRSZXN1bHRz
QnV0dG9uUGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBzZWFyY2hS
ZWN0LCBjb250cm9sU2l6ZUZyb21SZWN0KHNlYXJjaFJlY3QsIHNlYXJjaEZpZWxkU2l6ZXMoKSks
IGRldGVybWluZVN0YXRlKG8pKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggMWZlZmFjNGYwMTkyZWEzZWIwNTQxNWNiMzQzNGFm
NWIwOWY2YTc0MS4uZjQyMWY5ODFkYTI2N2RkNTdkNTk5NGFiYzNlYzFhNzU2NWQxODA1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtMzI5LDEyICszMjksMTIg
QEAgdm9pZCBSZW5kZXJWaWV3Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIEkKICAgICAgICAgcmVjdCA9IG1fbGF5ZXItPnRyYW5z
Zm9ybSgpLT5tYXBSZWN0KHJlY3QpOwogfQogCi12b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUmVj
dHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0KQordm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRS
ZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QK
IHsKICAgICByZWN0cy5hcHBlbmQoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgbV9sYXll
ci0+c2l6ZSgpKSk7CiB9CiAKLXZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJWaWV3OjphYnNv
bHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0
CiB7CiAgICAgaWYgKHdhc0ZpeGVkKQogICAgICAgICAqd2FzRml4ZWQgPSBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IGU2ZDdkOGY3NTVmNWI3N2JiN2Q5OTA4
NzBlNWE2YWRhYWE0OWZlNjcuLjlhNmY2M2Q5MGZiZjIxYTYwN2E1ZGQ1M2Q2MjIwYzhhZjQxYWRm
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtODYsOCArODYsOCBA
QCBwdWJsaWM6CiAKICAgICBib29sIHByaW50aW5nKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0
ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRl
ZE9mZnNldCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZs
b2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiAgICAgdm9pZCBzZXRNYXhpbWFsT3V0bGluZVNpemUoaW50IG8pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcAppbmRleCAy
YzgxNTkwOGViZjZiOTg5MDY3NTdkOGJjNTRiZTY5NDdhNzE3OWUzLi43YjE2YTRkNWJmYzljYjdi
YjY1ZTY1YmIxNWFiYzhlMmY2ZWJhZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFJlbmRlclNW
R0Jsb2NrOjp1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKQogICAgIHNldEhhc092ZXJmbG93
Q2xpcChmYWxzZSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHQmxvY2s6OmFic29sdXRlUmVjdHMoVmVj
dG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKQordm9pZCBSZW5kZXJTVkdCbG9j
azo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYp
IGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjb2RlIHBhdGggc2hvdWxkIG5ldmVyIGJlIHRha2VuIGZv
ciBTVkcsIGFzIHdlJ3JlIGFzc3VtaW5nIHVzZVRyYW5zZm9ybXM9dHJ1ZSBldmVyeXdoZXJlLCBh
YnNvbHV0ZVF1YWRzIHNob3VsZCBiZSB1c2VkLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCmluZGV4IDIy
YzFmMThlMzZlMDIzMTBiZTdlN2QzZTRlYzgxMjNhMjliNWE3MTQuLjU4Y2YyNjIwYTk4MThkNjRh
ZTI3ODM0ZmVkOGQ0MWI3MTY5MjA0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0Jsb2NrLmgKQEAgLTM4LDcgKzM4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgc2V0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBh
YnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExh
eW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsK
IAogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0
eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SGlkZGVuQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSGlkZGVuQ29udGFpbmVyLmNwcAppbmRleCBkMjlkODVlYzkzOTcxZGVlMThkYjEyYmQ4ZTc4
MDVmNTgxNzcyZjFlLi44OTViMjU0NDkwMDEyM2ZkYmYzZWEwMjU4NTRjYjljZWRiZTA0ZmQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNv
bnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdI
aWRkZW5Db250YWluZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgUmVuZGVyU1ZHSGlkZGVu
Q29udGFpbmVyOjpwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpCiAgICAgLy8g
VGhpcyBzdWJ0cmVlIGRvZXMgbm90IHBhaW50LgogfQogCi12b2lkIFJlbmRlclNWR0hpZGRlbkNv
bnRhaW5lcjo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqKQordm9pZCBS
ZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4m
LCBib29sKikgY29uc3QKIHsKICAgICAvLyBUaGlzIHN1YnRyZWUgZG9lcyBub3QgdGFrZSB1cCBz
cGFjZSBvciBwYWludAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKaW5kZXggZWZmZjkyMTUxZDJjMzYxYTZkMGM4
ZDk3NzdiMzFmNjM0NDY0ZDEwYy4uZjI2YzVmYzYxYTM3ZjgyMDdkNGQ2NDliZTY4MDlkNTJhMmY4
ODI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdI
aWRkZW5Db250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0hpZGRlbkNvbnRhaW5lci5oCkBAIC00NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgCiAg
ICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRl
ckJveE1vZGVsT2JqZWN0KikgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9Ci0gICAgdmly
dHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhl
ZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBi
b29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0RmxvYXRQb2lu
dChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50
JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKaW5kZXggMDk3NzBlZmJmMDI3ZmFj
OWViYTdkYmM3YzRlYTQzN2Y2YWEwMTBiOS4uNGM5MDU4MGYxMzU5YmY2ODFjNzczYWQ1ZDhiYjgx
NmNlZDQyYTYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW5saW5lLmNwcApAQCAtODIsOSArODIsOSBAQCB2b2lkIFJlbmRlclNWR0lubGluZTo6bWFw
TG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcgog
ICAgIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIodGhpcywgcmVwYWludENv
bnRhaW5lciwgdXNlVHJhbnNmb3JtcywgZml4ZWQsIHRyYW5zZm9ybVN0YXRlLCB3YXNGaXhlZCk7
CiB9CiAKLXZvaWQgUmVuZGVyU1ZHSW5saW5lOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFJlbmRlclNWR0lubGluZTo6YWJzb2x1
dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAog
ewotICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0gUmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVuZGVy
U1ZHVGV4dEFuY2VzdG9yKHRoaXMpOworICAgIGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0ID0g
UmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKHRoaXMpOwogICAgIGlm
ICghb2JqZWN0KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCmluZGV4IDBhNjA4MzdmNDc3NTk2OTAzN2U4NDk3NWJj
ZjIwMDgwNjZiYjgyZjcuLmQyZmExY2M1MjQwMjRiNjFhYTdkNGFhNzdhNGU4ZGQ4ZTU2MDg0NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaApA
QCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRP
dmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhl
ZCA9IGZhbHNlKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1z
LCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29s
KiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0
UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBJ
bmxpbmVGbG93Qm94KiBjcmVhdGVJbmxpbmVGbG93Qm94KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCmluZGV4IDE0YzFk
YjhlMGY5M2VhZjU1OGFlZWM4OTJhODcyMzIzY2QxMGQ3MjMuLmZiZTQ5M2I1NGRjZGVjMWM1NzY3
YTQ3OGFhNjYzODZhNTQwMzRiZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCkBAIC03MCwxMyArNzAsMTMgQEAgTGF5
b3V0UmVjdCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHIKICAgICByZXR1cm4gY29udGFpbmVyUmVsYXRpdmVRdWFkLmVu
Y2xvc2luZ0JvdW5kaW5nQm94KCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmFi
c29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKQordm9p
ZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjb2RlIHBhdGggc2hv
dWxkIG5ldmVyIGJlIHRha2VuIGZvciBTVkcsIGFzIHdlJ3JlIGFzc3VtaW5nIHVzZVRyYW5zZm9y
bXM9dHJ1ZSBldmVyeXdoZXJlLCBhYnNvbHV0ZVF1YWRzIHNob3VsZCBiZSB1c2VkLgogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNv
bHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2b2lk
IFJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBx
dWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9B
YnNvbHV0ZVF1YWQoc3Ryb2tlQm91bmRpbmdCb3goKSwgZmFsc2UsIHdhc0ZpeGVkKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0
LmgKaW5kZXggYzI4ZDNjNjYwN2Q1NTRlYTIwYzJiYTVjNWFlZWVkY2MyZGU3M2I3OS4uNzA0MWQ0
NDllZjYzMmM0ZmMzMDA5MjYwZjkyYzAwMDNiMDEwZDdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaApAQCAtNTUsOCArNTUs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4
ZWQgPSBmYWxzZSkgY29uc3Q7CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNG
b3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRQ
b2ludCopIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExh
eW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKLSAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0Zp
eGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQp
IGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3JtcywgYm9vbCBm
aXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJT
dHlsZSogbmV3U3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVGV4dC5jcHAKaW5kZXggYWY0MzliNWQzOGYwODRmMDJhOTIxYjJiYWZhMGQ5YjFhYmQ0NzA4
MS4uMmE3ZDgwY2YyZWY1MjFhOTRmYmQ5NzcyMjBiMWU0ZWUxMjVkNjBkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC0yMjUsNyArMjI1
LDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlclNWR1RleHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29u
c3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Db250ZW4KICAgICByZXR1cm4gY2xvc2VzdEJveC0+cmVu
ZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChMYXlvdXRQb2ludChwb2ludEluQ29udGVudHMueCgp
LCBjbG9zZXN0Qm94LT55KCkpKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdUZXh0OjphYnNvbHV0ZVF1
YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFJlbmRl
clNWR1RleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3
YXNGaXhlZCkgY29uc3QKIHsKICAgICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChz
dHJva2VCb3VuZGluZ0JveCgpLCBmYWxzZSwgd2FzRml4ZWQpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKaW5kZXggYjNlMGY0M2Y4ZjY0OWM3ZmE2
N2UwYjg0MjAzNjdhZjBkNmU5MmQzZS4uYTBhZGE0Y2I0ZWZlOTgwY2FiZTI3YTlmYTUwNGJhYTM5
MDE4OWRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0
LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNM
YXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgp
OwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBi
b29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZs
b2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIExheW91dFJl
Y3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJl
cGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3Qm
LCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCmluZGV4IGQ2NGQwYjdjNDc2OGYxM2NlYmIwOGNhZWQzODEwNGMyOGFiZGVhZDYuLmQ3YTgx
NTQwZmEwZWRjZDFhOWZiMzQyNTcwOTRkZmYwMjUyYzUwMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCBQYXNzUmVmUHRyPENsaWVudFJlY3Q+
IEludGVybmFsczo6Ym91bmRpbmdCb3goRWxlbWVudCogZWxlbWVudCwgRXhjZXB0aW9uQ29kZSYg
ZQogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOwogICAg
IGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUoKTsKLSAg
ICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCgpKTsKKyAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKHJlbmRlcmVyLT5hYnNvbHV0
ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpKTsKIH0KIAogdW5zaWduZWQgSW50
ZXJuYWxzOjptYXJrZXJDb3VudEZvck5vZGUoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwIGIvU291cmNl
L1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAppbmRleCA1ZjEyZTEwMTQzOWY1ZmJmMGQ2Y2Rj
YjEwMzQxMTcwNjFiNTkyN2Y0Li4wN2YyZGY5ODdkMmNmZjU2ZGZjOGQ4N2Q3YTVjYWJiNWMxOTY2
ZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKQEAgLTE3NTEsNyArMTc1MSw3IEBA
IFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZTo6UVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlKGNvbnN0
IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQKICAgICBpbWFnZVVybCA9IGhpdFRlc3QuYWJzb2x1dGVJ
bWFnZVVSTCgpOwogICAgIGlubmVyTm9kZSA9IGhpdFRlc3QuaW5uZXJOb2RlKCk7CiAgICAgaW5u
ZXJOb25TaGFyZWROb2RlID0gaGl0VGVzdC5pbm5lck5vblNoYXJlZE5vZGUoKTsKLSAgICBib3Vu
ZGluZ1JlY3QgPSBpbm5lck5vblNoYXJlZE5vZGUgPyBpbm5lck5vblNoYXJlZE5vZGUtPnJlbmRl
cmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KHRydWUpIDogSW50UmVjdCgpOworICAgIGJv
dW5kaW5nUmVjdCA9IGlubmVyTm9uU2hhcmVkTm9kZSA/IGlubmVyTm9uU2hhcmVkTm9kZS0+cmVu
ZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSA6IEludFJlY3QoKTsKICAgICBXZWJD
b3JlOjpJbWFnZSAqaW1nID0gaGl0VGVzdC5pbWFnZSgpOwogICAgIGlmIChpbWcpIHsKICAgICAg
ICAgUVBpeG1hcCAqcGl4ID0gaW1nLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109085</attachid>
            <date>2011-09-28 16:25:03 -0700</date>
            <delta_ts>2011-09-28 17:04:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69009-20110928192501.patch</filename>
            <type>text/plain</type>
            <size>40133</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYyMTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MTNiNDA4NGUxYTEyZmM3
YTkzNzViMWVmMmU3ODExZDkzZDQ4MDdiLi4zMGY2YTNkNWFjY2VlZTYxODVkNDc3N2M0ZDc1NTdi
ZGFlNzU4MTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTEtMDktMjggIEZhZHkg
U2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDog
TWFrZSBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVk
IG1ldGhvZHMgY29uc3QgYW5kIG1ha2UgaXRzIHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxv
bmdlciBkZWZhdWx0IHRvIGZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02OTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVwY29taW5nIHBhdGNoZXMgbWF5IG1ha2UgdXNlIG9mIGFic29sdXRlQm91
bmRpbmdCb3hSZWN0IG9uIGEgY29uc3QgUmVuZGVyT2JqZWN0LCBzbyB0aGlzIG5lZWRlZCB0byBi
ZSBmaXhlZC4KKyAgICAgICAgTWFraW5nIHVzZVRyYW5zZm9ybXMgZGVmYXVsdCB0byB0cnVlIGlu
c3RlYWQgb2YgZmFsc2UgYW5kIHJlcGxhY2luZyBpbnN0YW5jZXMgb2YgYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoKSB0bworICAgICAgICBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJh
bnNmb3JtcygpIHBhcnRpYWxseSBhZGRyZXNlcyAvLyBGSVhNRTogdXNlVHJhbnNmb3JtcyBzaG91
bGQgZ28gYXdheSBldmVudHVhbGx5LgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2NyZWVuUmVjdCk6CisgICAgICAgICogaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1i
RWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tUG9pbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1Rl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxk
U3BlZWNoQnV0dG9uRWxlbWVudDo6c3RhcnRTcGVlY2hJbnB1dCk6CisgICAgICAgICogcGx1Z2lu
cy9JRnJhbWVTaGltU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRQbHVnaW5PY2Ns
dXNpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
bG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SUZyYW1lOjpmbGF0dGVuRnJhbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjphYnNvbHV0ZVJlY3RzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFic29sdXRlUXVhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVBYnNvbHV0ZVF1YWRzKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjpzaG93
UG9wdXApOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkZEFic29sdXRlUmVjdEZvckxheWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6cGFpbnRpbmdSb290UmVjdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1
dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dDo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclZpZXc6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Vmlldzo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR0Jsb2NrOjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdIaWRkZW5Db250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSGlkZGVu
Q29udGFpbmVyOjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0hpZGRlbkNvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6YWJzb2x1dGVR
dWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6
OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5o
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6Ym91bmRpbmdCb3gpOgorCiAyMDExLTA5LTI4ICBWc2V2b2xvZCBWbGFzb3YgIDx2
c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlZmFjdG9yIHNl
YXJjaGluZyBpbiBpbnNwZWN0b3IsIGFkZCB0ZXN0IChmaXhlZCBub24gcmVnZXggc2VhcmNoKS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBiMTY2MjNiYWFjOTMxMDFiMTNjMjM0ZDQzMzQ1Njdi
ZTJlNjdlNjBlLi44MTEwMTZhMjhkMDA2NmE0Y2UyMDkzYTFlMjI0YTlmMzRmMzRjNmVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC01NzMsNyArNTczLDcgQEAgTGF5b3V0UmVjdCBFbGVtZW50
OjpzY3JlZW5SZWN0KCkgY29uc3QKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkpCiAgICAgICAgIHJl
dHVybiBMYXlvdXRSZWN0KCk7Ci0gICAgcmV0dXJuIHJlbmRlcmVyKCktPnZpZXcoKS0+ZnJhbWVW
aWV3KCktPmNvbnRlbnRzVG9TY3JlZW4ocmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3QoKSk7CisgICAgcmV0dXJuIHJlbmRlcmVyKCktPnZpZXcoKS0+ZnJhbWVWaWV3KCktPmNvbnRl
bnRzVG9TY3JlZW4ocmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1Ry
YW5zZm9ybXMoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1
dGVDYXNlKGNvbnN0IEVsZW1lbnQqIGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggYjMzNjM0OTEzN2Fm
ZDQ5NjIyYzYzZGRhNmI4NDg2ZWY2YWE0MGE0Yi4uNDFjMjlkNDAwZDY2ODljN2ZhNDJlMGFkZmE3
MjM3NjU1MTI0MmMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtODIzLDcgKzgyMyw3IEBAIFJlbmRl
ckJveE1vZGVsT2JqZWN0KiBOb2RlOjpyZW5kZXJCb3hNb2RlbE9iamVjdCgpIGNvbnN0CiBMYXlv
dXRSZWN0IE5vZGU6OmdldFJlY3QoKSBjb25zdAogewogICAgIGlmIChyZW5kZXJlcigpKQotICAg
ICAgICByZXR1cm4gcmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QodHJ1ZSk7Cisg
ICAgICAgIHJldHVybiByZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwogICAg
IHJldHVybiBMYXlvdXRSZWN0KCk7CiB9CiAgICAgCkBAIC04MzUsNyArODM1LDcgQEAgTGF5b3V0
UmVjdCBOb2RlOjpyZW5kZXJSZWN0KGJvb2wqIGlzUmVwbGFjZWQpCiAgICAgd2hpbGUgKHJlbmRl
cmVyICYmICFyZW5kZXJlci0+aXNCb2R5KCkgJiYgIXJlbmRlcmVyLT5pc1Jvb3QoKSkgewogICAg
ICAgICBpZiAocmVuZGVyZXItPmlzUmVuZGVyQmxvY2soKSB8fCByZW5kZXJlci0+aXNJbmxpbmVC
bG9ja09ySW5saW5lVGFibGUoKSB8fCByZW5kZXJlci0+aXNSZXBsYWNlZCgpKSB7CiAgICAgICAg
ICAgICAqaXNSZXBsYWNlZCA9IHJlbmRlcmVyLT5pc1JlcGxhY2VkKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KHRydWUpOworICAgICAgICAg
ICAgcmV0dXJuIHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwogICAgICAgICB9
CiAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCmluZGV4IDVk
MTc4YWYwNzlhYjRjZmJkOWQwZjcyMDQzZmFmM2Q4N2M0OGJjYjguLmE2MTk2MjQwZjNmMDQ1YjU2
ZDZjMDlmNzAyMzFkNTQ1MGNiMWYwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUg
IkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAi
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyU2xpZGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNp
bmNsdWRlICJTaGFkb3dSb290LmgiCkBAIC0yMTYsNyArMjE3LDcgQEAgdm9pZCBTbGlkZXJUaHVt
YkVsZW1lbnQ6OnNldFBvc2l0aW9uRnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkK
ICAgICAvLyBXZSBuZWVkIHRvIGNhbGN1bGF0ZSBjdXJyZW50UG9zaXRpb24gZnJvbSBhYnNvbHV0
ZSBwb2ludHMgYmVjYXVlIHRoZQogICAgIC8vIHJlbmRlcmVyIGZvciB0aGlzIG5vZGUgaXMgdXN1
YWxseSBvbiBhIGxheWVyIGFuZCByZW5kZXJCb3goKS0+eCgpIGFuZAogICAgIC8vIHkoKSBhcmUg
dW51c2FibGUuCi0gICAgTGF5b3V0UG9pbnQgYWJzb2x1dGVUaHVtYk9yaWdpbiA9IHJlbmRlckJv
eCgpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpLmxvY2F0aW9uKCk7CisgICAgTGF5b3V0UG9p
bnQgYWJzb2x1dGVUaHVtYk9yaWdpbiA9IHJlbmRlckJveCgpLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpLmxvY2F0aW9uKCk7CiAgICAgTGF5b3V0UG9pbnQgYWJz
b2x1dGVTbGlkZXJDb250ZW50T3JpZ2luID0gcm91bmRlZExheW91dFBvaW50KGlucHV0LT5yZW5k
ZXJlcigpLT5sb2NhbFRvQWJzb2x1dGUoKSk7CiAgICAgaWYgKGlzVmVydGljYWwpIHsKICAgICAg
ICAgdHJhY2tTaXplID0gaW5wdXQtPnJlbmRlckJveCgpLT5jb250ZW50SGVpZ2h0KCkgLSByZW5k
ZXJCb3goKS0+aGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCBiZjE4NWNmN2IwZjA5NmI5M2M4
ODgzMjA2YmEzMzc0ZDA0OTM0NWQ1Li4wMjE4MzI5OGNkNTFlNmJhZDI0YzQ4MDExNmNiMjE2ZTFh
ZjdkZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJNb3Vz
ZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisj
aW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcm9s
bGJhclRoZW1lLmgiCkBAIC01MzUsNyArNTM2LDcgQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0
dG9uRWxlbWVudDo6c3RhcnRTcGVlY2hJbnB1dCgpCiAgICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1l
bnQ+IGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KHNoYWRvd0FuY2VzdG9y
Tm9kZSgpKTsKICAgICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UgPSBpbnB1dC0+Y29tcHV0ZUluaGVy
aXRlZExhbmd1YWdlKCk7CiAgICAgU3RyaW5nIGdyYW1tYXIgPSBpbnB1dC0+Z2V0QXR0cmlidXRl
KHdlYmtpdGdyYW1tYXJBdHRyKTsKLSAgICBJbnRSZWN0IHJlY3QgPSByZW5kZXJlcigpLT5hYnNv
bHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIEludFJlY3QgcmVjdCA9IHJlbmRlcmVyKCktPmFi
c29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAgICAgaWYgKHNwZWVj
aElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24obV9saXN0ZW5lcklkLCByZWN0LCBsYW5ndWFnZSwg
Z3JhbW1hciwgZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCiAgICAgICAgIHNldFN0YXRl
KFJlY29yZGluZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
Tm9kZUhpZ2hsaWdodGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGln
aGxpZ2h0ZXIuY3BwCmluZGV4IGU2ODliNTI1MGI2YTg2OGVhNWE1NTBkNmRhYWJhMjk0NWE3OGY2
OWQuLmY4YmZiNjBmOWFkZWQyMGIyZTEwNjgwYTA4Yzk2NDI4NGRhODRmNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwCkBAIC0zNjEsNyAr
MzYxLDcgQEAgdm9pZCBkcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IEhpZ2hsaWdodERhdGEqIGhpZ2hsaWdodERhdGEpCiAgICAgICAgIHJldHVybjsKIAogICAgIExh
eW91dFNpemUgbWFpbkZyYW1lT2Zmc2V0ID0gZnJhbWVUb01haW5GcmFtZU9mZnNldChjb250YWlu
aW5nRnJhbWUpOwotICAgIExheW91dFJlY3QgYm91bmRpbmdCb3ggPSByZW5kZXJlci0+YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QodHJ1ZSk7CisgICAgTGF5b3V0UmVjdCBib3VuZGluZ0JveCA9IHJl
bmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwogCiAgICAgYm91bmRpbmdCb3gubW92
ZShtYWluRnJhbWVPZmZzZXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L0lGcmFtZVNoaW1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvSUZyYW1lU2hp
bVN1cHBvcnQuY3BwCmluZGV4IGMwYWExZTQxMzZjNDk0MmYyOWFmODg0ZjMyMTY4ODVjN2FjNTVi
NzkuLjgyNjU3NjUxMTBhZTU0NjhkMDMwNWYzZWZiMDQ2ZDI1YWRkN2ZlZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuY3BwCkBAIC0xNTIsNyArMTUyLDcg
QEAgdm9pZCBnZXRQbHVnaW5PY2NsdXNpb25zKEVsZW1lbnQqIGVsZW1lbnQsIFdpZGdldCogcGFy
ZW50V2lkZ2V0LCBjb25zdCBJbnRSZWN0JgogICAgICAgICBSZW5kZXJPYmplY3QqIGlmcmFtZVJl
bmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKIAogICAgICAgICBpZiAoZWxlbWVudC0+aGFz
VGFnTmFtZShIVE1MTmFtZXM6OmlmcmFtZVRhZykKLSAgICAgICAgICAgICYmIGlmcmFtZVJlbmRl
cmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpLmludGVyc2VjdHMoZnJhbWVSZWN0KQorICAg
ICAgICAgICAgJiYgaWZyYW1lUmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3Jp
bmdUcmFuc2Zvcm1zKCkuaW50ZXJzZWN0cyhmcmFtZVJlY3QpCiAgICAgICAgICAgICAmJiAoIWlm
cmFtZVJlbmRlcmVyLT5zdHlsZSgpIHx8IGlmcmFtZVJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmls
aXR5KCkgPT0gVklTSUJMRSkpIHsKICAgICAgICAgICAgIGdldE9iamVjdFN0YWNrKGlmcmFtZVJl
bmRlcmVyLCAmaWZyYW1lWnN0YWNrKTsKICAgICAgICAgICAgIGlmIChpZnJhbWVJc0Fib3ZlUGx1
Z2luKGlmcmFtZVpzdGFjaywgcGx1Z2luWnN0YWNrKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKaW5kZXggMDBmM2YzZDgwNDhlNTAyZTkyYmRmNjE2MjBhNDJlYmNj
ZTUwZjNhNy4uNWQ1M2VlNDQwODQwYTE2ODI1NDYyZGRjY2Q1OTcyNjBhNjAzNDg0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC01ODM5LDcgKzU4MzksNyBA
QCB2b2lkIFJlbmRlckJsb2NrOjpzZXRQYWdlTG9naWNhbE9mZnNldChpbnQgbG9naWNhbE9mZnNl
dCkKICAgICBtX3JhcmVEYXRhLT5tX3BhZ2VMb2dpY2FsT2Zmc2V0ID0gbG9naWNhbE9mZnNldDsK
IH0KIAotdm9pZCBSZW5kZXJCbG9jazo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4m
IHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCit2b2lkIFJlbmRl
ckJsb2NrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExh
eW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QKIHsKICAgICAvLyBGb3IgYmxvY2tz
IGluc2lkZSBpbmxpbmVzLCB3ZSBnbyBhaGVhZCBhbmQgaW5jbHVkZSBtYXJnaW5zIHNvIHRoYXQg
d2UgcnVuIHJpZ2h0IHVwIHRvIHRoZQogICAgIC8vIGlubGluZSBib3hlcyBhYm92ZSBhbmQgYmVs
b3cgdXMgKHRodXMgZ2V0dGluZyBtZXJnZWQgd2l0aCB0aGVtIHRvIGZvcm0gYSBzaW5nbGUgaXJy
ZWd1bGFyCkBAIC01ODU1LDcgKzU4NTUsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVJl
Y3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhYwogICAg
ICAgICByZWN0cy5hcHBlbmQoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSk7
CiB9CiAKLXZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4m
IHF1YWRzLCBib29sKiB3YXNGaXhlZCkKK3ZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICAv
LyBGb3IgYmxvY2tzIGluc2lkZSBpbmxpbmVzLCB3ZSBnbyBhaGVhZCBhbmQgaW5jbHVkZSBtYXJn
aW5zIHNvIHRoYXQgd2UgcnVuIHJpZ2h0IHVwIHRvIHRoZQogICAgIC8vIGlubGluZSBib3hlcyBh
Ym92ZSBhbmQgYmVsb3cgdXMgKHRodXMgZ2V0dGluZyBtZXJnZWQgd2l0aCB0aGVtIHRvIGZvcm0g
YSBzaW5nbGUgaXJyZWd1bGFyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmlu
ZGV4IDA5NzcyN2U4YjUzNTgyZmNhYjdjZDkzMmU2NGE5NzA3ZmY5ZWQ2ODQuLmY4MWIyZmU2MTcx
NmI5YTBjOTZkOTcwNzY2MDVjNzQ3YjhkZmM1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5oCkBAIC02ODIsOCArNjgyLDggQEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0
IGxvZ2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0KFJlbmRlckJsb2NrKiByb290QmxvY2ssIExheW91
dFVuaXQgcG9zaXRpb24pOwogICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0U2VsZWN0aW9uT2Zm
c2V0KFJlbmRlckJsb2NrKiByb290QmxvY2ssIExheW91dFVuaXQgcG9zaXRpb24pOwogICAgIAot
ICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0
IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7Ci0gICAgdmlydHVhbCB2b2lkIGFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVh
bCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogICAgIExh
eW91dFVuaXQgZGVzaXJlZENvbHVtbldpZHRoKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgZGVzaXJl
ZENvbHVtbkNvdW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CmluZGV4IDVjOGJlZTkyNWMzYWY5N2I0YjMyZmNlZTA2YTkwOWI5MTlkMzkyZjEuLjNiNDkzMzA4
MTZlNzI1M2QxNzBhZWM1M2Y0NzQ2NmRlY2UxMjk5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCkBAIC00NjYsMTIgKzQ2NiwxMiBAQCB2b2lkIFJlbmRlckJveDo6c2V0
U2Nyb2xsVG9wKExheW91dFVuaXQgbmV3VG9wKQogICAgICAgICBsYXllcigpLT5zY3JvbGxUb1lP
ZmZzZXQobmV3VG9wLCBSZW5kZXJMYXllcjo6U2Nyb2xsT2Zmc2V0Q2xhbXBlZCk7CiB9CiAKLXZv
aWQgUmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0
IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkKK3ZvaWQgUmVuZGVyQm94OjphYnNvbHV0
ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVs
YXRlZE9mZnNldCkgY29uc3QKIHsKICAgICByZWN0cy5hcHBlbmQoTGF5b3V0UmVjdChhY2N1bXVs
YXRlZE9mZnNldCwgc2l6ZSgpKSk7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVF1YWRz
KFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFJlbmRlckJv
eDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVk
KSBjb25zdAogewogICAgIHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVj
dCgwLCAwLCB3aWR0aCgpLCBoZWlnaHQoKSksIGZhbHNlLCB3YXNGaXhlZCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDQ1ZDQ0NjBlZTQ4NWMzYTE4NTRmOTM2MGY2
ZTg0ZGNkNTU3NGFkZWYuLjhjNjI0ZmRkNGU2YWYwOWZlMTYxNTllMmRkN2U5NGVmMmQ5YTRlZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTIzMiw4ICsyMzIsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbGxhcHNlZE1hcmdpbkJlZm9yZSgpIGNv
bnN0IHsgcmV0dXJuIG1hcmdpbkJlZm9yZSgpOyB9CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGNv
bGxhcHNlZE1hcmdpbkFmdGVyKCkgY29uc3QgeyByZXR1cm4gbWFyZ2luQWZ0ZXIoKTsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZv
aWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNj
dW11bGF0ZWRPZmZzZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZl
Y3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogICAgIAogICAgIEludFJl
Y3QgcmVmbGVjdGlvbkJveCgpIGNvbnN0OwogICAgIGludCByZWZsZWN0aW9uT2Zmc2V0KCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRD
b250cm9sLmNwcAppbmRleCBmOTQ0OTFmMzFjNWE4ZTVmZDIwMjI0NTAxOTU0ZTRiNDZlZjA4NDY2
Li5jN2JkZTI0MTkyYjQ2MmU1MmU2ZGVlOWVkMjU2MGY2NzQyMjgyZGI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKQEAg
LTEzMiw3ICsxMzIsNyBAQCB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVj
dChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbgogICAgICAgICAgICAgdGV4
dFggPSBjb250ZW50TGVmdCArIGNvbnRlbnRXaWR0aCgpIC0gYnV0dG9uQW5kSWNvbldpZHRoIC0g
Zm9udC53aWR0aCh0ZXh0UnVuKTsKICAgICAgICAgLy8gV2Ugd2FudCB0byBtYXRjaCB0aGUgYnV0
dG9uJ3MgYmFzZWxpbmUKICAgICAgICAgUmVuZGVyQnV0dG9uKiBidXR0b25SZW5kZXJlciA9IHRv
UmVuZGVyQnV0dG9uKGJ1dHRvbi0+cmVuZGVyZXIoKSk7Ci0gICAgICAgIExheW91dFVuaXQgdGV4
dFkgPSBidXR0b25SZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS55KCkKKyAgICAg
ICAgTGF5b3V0VW5pdCB0ZXh0WSA9IGJ1dHRvblJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpLnkoKQogICAgICAgICAgICAgKyBidXR0b25SZW5kZXJl
ci0+YmFzZWxpbmVQb3NpdGlvbihBbHBoYWJldGljQmFzZWxpbmUsIHRydWUsIEhvcml6b250YWxM
aW5lLCBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpOwogCiAgICAgICAgIHBhaW50SW5mby5jb250
ZXh0LT5zZXRGaWxsQ29sb3Ioc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5Q29sb3IpLCBzdHlsZSgpLT5jb2xvclNwYWNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySUZyYW1lLmNwcAppbmRleCAxMTI5N2I1ZGI3YTlmN2EyZDA5ZTQ2NTk0M2M0ODdl
MTg2ZjE1YWQwLi5jZTBmNDNiZDAzMDQxNTFhNDA4M2IwYTAyMGE5ZTJlZDk2MWIxM2RhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcApAQCAtMTA1LDcgKzEwNSw3
IEBAIGJvb2wgUmVuZGVySUZyYW1lOjpmbGF0dGVuRnJhbWUoKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAvLyBEbyBub3QgZmxhdHRlbiBvZmZzY3JlZW4gaW5uZXIgZnJhbWVzIGR1cmlu
ZyBmcmFtZSBmbGF0dGVuaW5nLCBhcyBmbGF0dGVuaW5nIG1pZ2h0IG1ha2UgdGhlbSB2aXNpYmxl
LgotICAgIEludFJlY3QgYm91bmRpbmdSZWN0ID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsK
KyAgICBJbnRSZWN0IGJvdW5kaW5nUmVjdCA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3Jp
bmdUcmFuc2Zvcm1zKCk7CiAgICAgcmV0dXJuIGJvdW5kaW5nUmVjdC5tYXhYKCkgPiAwICYmIGJv
dW5kaW5nUmVjdC5tYXhZKCkgPiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuY3BwCmluZGV4IDZjYTlkM2ZiMWU5MmQwMmNiYzkwYmE0ZGMzM2JhMTliZDg0YjI4
MDQuLjNmMDk2MzNiMDA4ZDk1NmZhMWY3ZTIxODJlMzBjNGRkMjA1YWMzYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgdm9p
ZCBSZW5kZXJJbmxpbmU6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQpCiAgICAgbV9saW5lQm94ZXMucGFpbnQodGhpcywgcGFpbnRJbmZv
LCBwYWludE9mZnNldCk7CiB9CiAKLXZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVJlY3RzKFZl
Y3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9m
ZnNldCkKK3ZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0
PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QKIHsK
ICAgICBpZiAoIWFsd2F5c0NyZWF0ZUxpbmVCb3hlcygpKQogICAgICAgICBjdWxsZWRJbmxpbmVB
YnNvbHV0ZVJlY3RzKHRoaXMsIHJlY3RzLCB0b0xheW91dFNpemUoYWNjdW11bGF0ZWRPZmZzZXQp
KTsKQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6YWJzb2x1dGVSZWN0cyhW
ZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYQogICAgIH0KIH0K
IAotdm9pZCBSZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRlUmVjdHMoY29uc3QgUmVu
ZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExh
eW91dFNpemUmIG9mZnNldCkKK3ZvaWQgUmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVBYnNvbHV0
ZVJlY3RzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8TGF5b3V0UmVjdD4m
IHJlY3RzLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXQpIGNvbnN0CiB7CiAgICAgaWYgKCFjdWxs
ZWRJbmxpbmVGaXJzdExpbmVCb3goKSkgewogICAgICAgICByZWN0cy5hcHBlbmQoSW50UmVjdChv
ZmZzZXQud2lkdGgoKSwgb2Zmc2V0LmhlaWdodCgpLCAwLCAwKSk7CkBAIC01NTMsNyArNTUzLDcg
QEAgdm9pZCBSZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRlUmVjdHMoY29uc3QgUmVu
ZGVySW5saW5lKiBjb250YWluZXIsIFZlY3QKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVySW5saW5l
OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQp
Cit2b2lkIFJlbmRlcklubGluZTo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVh
ZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGlmICghYWx3YXlzQ3JlYXRlTGluZUJv
eGVzKCkpCiAgICAgICAgIGN1bGxlZElubGluZUFic29sdXRlUXVhZHModGhpcywgcXVhZHMpOwpA
QCAtNTY5LDcgKzU2OSw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCiAgICAgICAgIGNvbnRpbnVhdGlv
bigpLT5hYnNvbHV0ZVF1YWRzKHF1YWRzLCB3YXNGaXhlZCk7CiB9CiAKLXZvaWQgUmVuZGVySW5s
aW5lOjpjdWxsZWRJbmxpbmVBYnNvbHV0ZVF1YWRzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFp
bmVyLCBWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpCit2b2lkIFJlbmRlcklubGluZTo6Y3VsbGVk
SW5saW5lQWJzb2x1dGVRdWFkcyhjb25zdCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdG9y
PEZsb2F0UXVhZD4mIHF1YWRzKSBjb25zdAogewogICAgIGlmICghY3VsbGVkSW5saW5lRmlyc3RM
aW5lQm94KCkpIHsKICAgICAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxv
YXRSZWN0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCBh
ZmQ0YWFkNDQ4YjBlODE4MTkzMjllYTBhYTY4NmU1YjA5Y2ViNjY3Li5mZTk1YWYxZmUxODc1NDI2
NWJhOTc5MDlmN2VkYjZlYjNlNzNhZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFVu
aXQgbWFyZ2luU3RhcnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luRW5k
KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0
UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwotICAgIHZpcnR1
YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQp
OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNv
bnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJP
YmplY3QqLCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwogCkBAIC0xMDIsOCArMTAyLDggQEAg
cHJpdmF0ZToKICAgICBMYXlvdXRSZWN0IGN1bGxlZElubGluZVZpc3VhbE92ZXJmbG93Qm91bmRp
bmdCb3goKSBjb25zdDsKICAgICBJbmxpbmVCb3gqIGN1bGxlZElubGluZUZpcnN0TGluZUJveCgp
IGNvbnN0OwogICAgIElubGluZUJveCogY3VsbGVkSW5saW5lTGFzdExpbmVCb3goKSBjb25zdDsK
LSAgICB2b2lkIGN1bGxlZElubGluZUFic29sdXRlUmVjdHMoY29uc3QgUmVuZGVySW5saW5lKiBj
b250YWluZXIsIFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFNpemUmKTsKLSAgICB2
b2lkIGN1bGxlZElubGluZUFic29sdXRlUXVhZHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWlu
ZXIsIFZlY3RvcjxGbG9hdFF1YWQ+Jik7CisgICAgdm9pZCBjdWxsZWRJbmxpbmVBYnNvbHV0ZVJl
Y3RzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8TGF5b3V0UmVjdD4mLCBj
b25zdCBMYXlvdXRTaXplJikgY29uc3Q7CisgICAgdm9pZCBjdWxsZWRJbmxpbmVBYnNvbHV0ZVF1
YWRzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8RmxvYXRRdWFkPiYpIGNv
bnN0OwogCiAgICAgdm9pZCBhZGRDaGlsZFRvQ29udGludWF0aW9uKFJlbmRlck9iamVjdCogbmV3
Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRD
aGlsZElnbm9yaW5nQ29udGludWF0aW9uKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9i
amVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWVudUxpc3QuY3BwCmluZGV4IDg5N2FhODhlYWYxZWEyYTQ2ZWQxMzZmNTBmN2M2MjYyMzkxMzll
MDEuLjliYTNiNWU3YTE5NzJjYzg0ZmMzNTQ2NGRjM2Y1ZGMyMWRhNzU0YTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtMzAyLDcgKzMwMiw3IEBA
IHZvaWQgUmVuZGVyTWVudUxpc3Q6OnNob3dQb3B1cCgpCiAgICAgLy8gQ29tcHV0ZSB0aGUgdG9w
IGxlZnQgdGFraW5nIHRyYW5zZm9ybXMgaW50byBhY2NvdW50LCBidXQgdXNlCiAgICAgLy8gdGhl
IGFjdHVhbCB3aWR0aCBvZiB0aGUgZWxlbWVudCB0byBzaXplIHRoZSBwb3B1cC4KICAgICBGbG9h
dFBvaW50IGFic1RvcExlZnQgPSBsb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCgpLCBmYWxzZSwg
dHJ1ZSk7Ci0gICAgTGF5b3V0UmVjdCBhYnNCb3VuZHMgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dCgpOworICAgIExheW91dFJlY3QgYWJzQm91bmRzID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJ
Z25vcmluZ1RyYW5zZm9ybXMoKTsKICAgICBhYnNCb3VuZHMuc2V0TG9jYXRpb24ocm91bmRlZElu
dFBvaW50KGFic1RvcExlZnQpKTsKICAgICBtX3BvcHVwLT5zaG93KGFic0JvdW5kcywgZG9jdW1l
bnQoKS0+dmlldygpLAogICAgICAgICBzZWxlY3QtPm9wdGlvblRvTGlzdEluZGV4KHNlbGVjdC0+
c2VsZWN0ZWRJbmRleCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCmluZGV4IGE0NWU2MGQ4NjVkZjBhNTYxMWEwMTYyNmQwYWRlYTU2YjFkN2JmOTQuLjk0OTVl
MzQ5MTJlZWI0OGM3OGJhNTU1YTQxNmJkZjA2NjUxYjU1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xMTU1LDcgKzExNTUsNyBAQCB2b2lkIFJlbmRl
ck9iamVjdDo6cGFpbnRPdXRsaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBMYXlvdXRSZQogICAgICAgICBncmFwaGljc0NvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxh
eWVyKCk7CiB9CiAKLUludFJlY3QgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dChib29sIHVzZVRyYW5zZm9ybXMpCitJbnRSZWN0IFJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm1zKSBjb25zdAogewogICAgIGlmICh1c2VUcmFu
c2Zvcm1zKSB7CiAgICAgICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwpAQCAtMTIwNSwxNCAr
MTIwNSwxNCBAQCB2b2lkIFJlbmRlck9iamVjdDo6YWJzb2x1dGVGb2N1c1JpbmdRdWFkcyhWZWN0
b3I8RmxvYXRRdWFkPiYgcXVhZHMpCiB2b2lkIFJlbmRlck9iamVjdDo6YWRkQWJzb2x1dGVSZWN0
Rm9yTGF5ZXIoSW50UmVjdCYgcmVzdWx0KQogewogICAgIGlmIChoYXNMYXllcigpKQotICAgICAg
ICByZXN1bHQudW5pdGUoYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CisgICAgICAgIHJlc3Vs
dC51bml0ZShhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpKTsKICAg
ICBmb3IgKFJlbmRlck9iamVjdCogY3VycmVudCA9IGZpcnN0Q2hpbGQoKTsgY3VycmVudDsgY3Vy
cmVudCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGN1cnJlbnQtPmFkZEFic29s
dXRlUmVjdEZvckxheWVyKHJlc3VsdCk7CiB9CiAKIExheW91dFJlY3QgUmVuZGVyT2JqZWN0Ojpw
YWludGluZ1Jvb3RSZWN0KExheW91dFJlY3QmIHRvcExldmVsUmVjdCkKIHsKLSAgICBMYXlvdXRS
ZWN0IHJlc3VsdCA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgTGF5b3V0UmVjdCBy
ZXN1bHQgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOwogICAg
IHRvcExldmVsUmVjdCA9IHJlc3VsdDsKICAgICBmb3IgKFJlbmRlck9iamVjdCogY3VycmVudCA9
IGZpcnN0Q2hpbGQoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkp
CiAgICAgICAgIGN1cnJlbnQtPmFkZEFic29sdXRlUmVjdEZvckxheWVyKHJlc3VsdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggZWNmNTIyNzIxYTgwZWNjYzdm
MjUzNDg3M2VlOTI4NjFkNWE4MWZjYS4uMDhkYWI2M2VlNGRmZDEyZjdhODcyOWViYzViNWRkMzgy
MzM1NGZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtNjIx
LDEyICs2MjEsMTQgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUgb2Zmc2V0IGZyb20gYW4g
b2JqZWN0IHVwIHRoZSBjb250YWluZXIoKSBjaGFpbi4gQXNzZXJ0cyB0aGF0IG5vbmUgb2YgdGhl
IGludGVybWVkaWF0ZSBvYmplY3RzIGhhdmUgdHJhbnNmb3Jtcy4KICAgICBMYXlvdXRTaXplIG9m
ZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcihSZW5kZXJPYmplY3QqKSBjb25zdDsKICAgICAKLSAg
ICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBM
YXlvdXRQb2ludCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxM
YXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JikgY29uc3QgeyB9CisKICAgICAvLyBGSVhN
RTogdXNlVHJhbnNmb3JtcyBzaG91bGQgZ28gYXdheSBldmVudHVhbGx5Ci0gICAgSW50UmVjdCBh
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybXMgPSBmYWxzZSk7CisgICAg
SW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybSA9IHRydWUp
IGNvbnN0OworICAgIEludFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5z
Zm9ybXMoKSBjb25zdCB7IHJldHVybiBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChmYWxzZSk7IH0K
IAogICAgIC8vIEJ1aWxkIGFuIGFycmF5IG9mIHF1YWRzIGluIGFic29sdXRlIGNvb3JkcyBmb3Ig
bGluZSBib3hlcwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiwgYm9vbCogLyp3YXNGaXhlZCovID0gMCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiAvKndhc0ZpeGVkKi8gPSAwKSBjb25z
dCB7IH0KIAogICAgIHZvaWQgYWJzb2x1dGVGb2N1c1JpbmdRdWFkcyhWZWN0b3I8RmxvYXRRdWFk
PiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggZTg4ODYx
ZjNkMDRhMDg2ODQ0ZDNhNzBkMjE1YTQ3NGRlNjg5MjRjOS4uNmI2ZGEyNDQ0ZTEyYzczMjZmMTk2
ZDY0Yjg4MTI1ODgyNzRmOThjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcApAQCAtMzAxLDcgKzMwMSw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gUmVuZGVyVGV4
dDo6b3JpZ2luYWxUZXh0KCkgY29uc3QKICAgICByZXR1cm4gKGUgJiYgZS0+aXNUZXh0Tm9kZSgp
KSA/IHN0YXRpY19jYXN0PFRleHQqPihlKS0+ZGF0YUltcGwoKSA6IDA7CiB9CiAKLXZvaWQgUmVu
ZGVyVGV4dDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCit2b2lkIFJlbmRlclRleHQ6OmFic29sdXRl
UmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0KSBjb25zdAogewogICAgIGZvciAoSW5saW5lVGV4dEJveCogYm94ID0gZmly
c3RUZXh0Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKQogICAgICAgICByZWN0
cy5hcHBlbmQoZW5jbG9zaW5nTGF5b3V0UmVjdChGbG9hdFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQg
KyBib3gtPnRvcExlZnQoKSwgYm94LT5zaXplKCkpKSk7CkBAIC0zODgsNyArMzg4LDcgQEAgc3Rh
dGljIEludFJlY3QgZWxsaXBzaXNSZWN0Rm9yQm94KElubGluZVRleHRCb3gqIGJveCwgdW5zaWdu
ZWQgc3RhcnRQb3MsIHVuc2lnbmUKICAgICByZXR1cm4gSW50UmVjdCgpOwogfQogICAgIAotdm9p
ZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9v
bCogd2FzRml4ZWQsIENsaXBwaW5nT3B0aW9uIG9wdGlvbikKK3ZvaWQgUmVuZGVyVGV4dDo6YWJz
b2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkLCBDbGlw
cGluZ09wdGlvbiBvcHRpb24pIGNvbnN0CiB7CiAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3gg
PSBmaXJzdFRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKICAgICAg
ICAgSW50UmVjdCBib3VuZGFyaWVzID0gYm94LT5jYWxjdWxhdGVCb3VuZGFyaWVzKCk7CkBAIC00
MDUsNyArNDA1LDcgQEAgdm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQsIENsaXBwaW4KICAgICB9CiB9CiAgICAgCi12
b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBi
b29sKiB3YXNGaXhlZCkKK3ZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGFic29sdXRlUXVh
ZHMocXVhZHMsIHdhc0ZpeGVkLCBOb0NsaXBwaW5nKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5oCmluZGV4IDQwMjBkOGFhMzcxMjJkMTI1ZDFkYzRlZjExMDcwOWQxOGY5NTEz
OTguLjQyZTlhZWM5NmIzYjMyYjJkMTllM2JjNTE5NWMxM2Q0NzFjYTA5MzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAtNTQsMTQgKzU0LDE0IEBAIHB1YmxpYzoKICAg
ICBJbmxpbmVUZXh0Qm94KiBjcmVhdGVJbmxpbmVUZXh0Qm94KCk7CiAgICAgdm9pZCBkaXJ0eUxp
bmVCb3hlcyhib29sIGZ1bGxMYXlvdXQpOwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVj
dHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zm
c2V0KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OwogICAgIHZvaWQg
YWJzb2x1dGVSZWN0c0ZvclJhbmdlKFZlY3RvcjxJbnRSZWN0PiYsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gVUlOVF9NQVgsIGJvb2wgdXNlU2VsZWN0aW9u
SGVpZ2h0ID0gZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0gMCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0Zp
eGVkKSBjb25zdDsKICAgICB2b2lkIGFic29sdXRlUXVhZHNGb3JSYW5nZShWZWN0b3I8RmxvYXRR
dWFkPiYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gVUlO
VF9NQVgsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0g
MCk7CiAKICAgICBlbnVtIENsaXBwaW5nT3B0aW9uIHsgTm9DbGlwcGluZywgQ2xpcFRvRWxsaXBz
aXMgfTsKLSAgICB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3
YXNGaXhlZCA9IDAsIENsaXBwaW5nT3B0aW9uID0gTm9DbGlwcGluZyk7CisgICAgdm9pZCBhYnNv
bHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQgPSAwLCBDbGlwcGlu
Z09wdGlvbiA9IE5vQ2xpcHBpbmcpIGNvbnN0OwogCiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRp
b24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3Bw
CmluZGV4IDE3MDk3YjFmYmFiMzYxODA4OGUwYjQ4OTM3YzYwOGU1YzJkODRjZmEuLmZmOTA3NzBm
MDk1NTc4OTEwNzVkYjkxZTI5ZTFkZmU3ODcwNGFmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCkBAIC0x
NzQsNyArMTc0LDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnNob3dQb3B1
cCgpCiAgICAgICAgIG1fc2VhcmNoUG9wdXAtPnNhdmVSZWNlbnRTZWFyY2hlcyhuYW1lLCBtX3Jl
Y2VudFNlYXJjaGVzKTsKICAgICB9CiAKLSAgICBtX3NlYXJjaFBvcHVwLT5wb3B1cE1lbnUoKS0+
c2hvdyhhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCh0cnVlKSwgZG9jdW1lbnQoKS0+dmlldygpLCAt
MSk7CisgICAgbV9zZWFyY2hQb3B1cC0+cG9wdXBNZW51KCktPnNob3coYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoKSwgZG9jdW1lbnQoKS0+dmlldygpLCAtMSk7CiB9CiAKIHZvaWQgUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lOjpoaWRlUG9wdXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKaW5kZXggZGJhODc0ZDRhYWNlZGExNTEzZTY5ZTZh
ZTBkNjUwNmViNDMwODk5NS4uZDM0ZDA3NDg0NDYzYTlmNjUyMjZmNWQxMmZjMTcwODc1NzgzMzBj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJp
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3Bw
CkBAIC0xMDgwLDcgKzEwODAsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbgogICAgIFJlbmRl
ck9iamVjdCogcmVuZGVyZXIgPSBpbnB1dC0+cmVuZGVyZXIoKTsKICAgICBBU1NFUlQocmVuZGVy
ZXIpOwogCi0gICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRp
bmdCb3hSZWN0KCk7CisgICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFic29sdXRl
Qm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAKICAgICBwYWludFRoZW1lUGFy
dChTYWZhcmlUaGVtZTo6U2VhcmNoRmllbGRDYW5jZWxCdXR0b25QYXJ0LCBwYWludEluZm8uY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHNlYXJjaFJlY3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qo
c2VhcmNoUmVjdCwgc2VhcmNoRmllbGRTaXplcygpKSwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAg
IHJldHVybiBmYWxzZTsKQEAgLTExMzQsNyArMTEzNCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZh
cmk6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqIG8sIGNv
bnN0CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGlucHV0LT5yZW5kZXJlcigpOwogICAg
IEFTU0VSVChyZW5kZXJlcik7CiAKLSAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5k
ZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKIAogICAg
IHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9u
UGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBzZWFyY2hSZWN0LCBj
b250cm9sU2l6ZUZyb21SZWN0KHNlYXJjaFJlY3QsIHNlYXJjaEZpZWxkU2l6ZXMoKSksIGRldGVy
bWluZVN0YXRlKG8pKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTU3LDcgKzExNTcsNyBAQCBi
b29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihSZW5k
ZXJPYmplY3QqIG8sIGNvbnN0IFBhaQogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpbnB1
dC0+cmVuZGVyZXIoKTsKICAgICBBU1NFUlQocmVuZGVyZXIpOwogCi0gICAgSW50UmVjdCBzZWFy
Y2hSZWN0ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgSW50UmVj
dCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdU
cmFuc2Zvcm1zKCk7CiAKICAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6U2VhcmNoRmll
bGRSZXN1bHRzQnV0dG9uUGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LCBzZWFyY2hSZWN0LCBjb250cm9sU2l6ZUZyb21SZWN0KHNlYXJjaFJlY3QsIHNlYXJjaEZpZWxk
U2l6ZXMoKSksIGRldGVybWluZVN0YXRlKG8pKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggMWZlZmFjNGYwMTkyZWEzZWIwNTQx
NWNiMzQzNGFmNWIwOWY2YTc0MS4uZjQyMWY5ODFkYTI2N2RkNTdkNTk5NGFiYzNlYzFhNzU2NWQx
ODA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtMzI5LDEy
ICszMjksMTIgQEAgdm9pZCBSZW5kZXJWaWV3Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEkKICAgICAgICAgcmVjdCA9IG1fbGF5
ZXItPnRyYW5zZm9ybSgpLT5tYXBSZWN0KHJlY3QpOwogfQogCi12b2lkIFJlbmRlclZpZXc6OmFi
c29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQm
IGFjY3VtdWxhdGVkT2Zmc2V0KQordm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVJlY3RzKFZlY3Rv
cjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNl
dCkgY29uc3QKIHsKICAgICByZWN0cy5hcHBlbmQoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNl
dCwgbV9sYXllci0+c2l6ZSgpKSk7CiB9CiAKLXZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJW
aWV3OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4
ZWQpIGNvbnN0CiB7CiAgICAgaWYgKHdhc0ZpeGVkKQogICAgICAgICAqd2FzRml4ZWQgPSBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IGU2ZDdkOGY3NTVmNWI3
N2JiN2Q5OTA4NzBlNWE2YWRhYWE0OWZlNjcuLjlhNmY2M2Q5MGZiZjIxYTYwN2E1ZGQ1M2Q2MjIw
YzhhZjQxYWRmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtODYs
OCArODYsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIHByaW50aW5nKCkgY29uc3Q7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlv
dXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1
YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgdm9pZCBzZXRNYXhpbWFsT3V0bGluZVNpemUoaW50
IG8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdC
bG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNw
cAppbmRleCAyYzgxNTkwOGViZjZiOTg5MDY3NTdkOGJjNTRiZTY5NDdhNzE3OWUzLi43YjE2YTRk
NWJmYzljYjdiYjY1ZTY1YmIxNWFiYzhlMmY2ZWJhZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lk
IFJlbmRlclNWR0Jsb2NrOjp1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKQogICAgIHNldEhh
c092ZXJmbG93Q2xpcChmYWxzZSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHQmxvY2s6OmFic29sdXRl
UmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKQordm9pZCBSZW5k
ZXJTVkdCbG9jazo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlv
dXRQb2ludCYpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjb2RlIHBhdGggc2hvdWxkIG5ldmVyIGJl
IHRha2VuIGZvciBTVkcsIGFzIHdlJ3JlIGFzc3VtaW5nIHVzZVRyYW5zZm9ybXM9dHJ1ZSBldmVy
eXdoZXJlLCBhYnNvbHV0ZVF1YWRzIHNob3VsZCBiZSB1c2VkLgogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5o
CmluZGV4IDIyYzFmMThlMzZlMDIzMTBiZTdlN2QzZTRlYzgxMjNhMjliNWE3MTQuLjU4Y2YyNjIw
YTk4MThkNjRhZTI3ODM0ZmVkOGQ0MWI3MTY5MjA0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgKQEAgLTM4LDcgKzM4LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4pOwogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMo
VmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0
KSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5
bGUqIG5ld1N0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcAppbmRleCBkMjlkODVlYzkzOTcxZGVlMThk
YjEyYmQ4ZTc4MDVmNTgxNzcyZjFlLi44OTViMjU0NDkwMDEyM2ZkYmYzZWEwMjU4NTRjYjljZWRi
ZTA0ZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0hpZGRlbkNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgUmVuZGVy
U1ZHSGlkZGVuQ29udGFpbmVyOjpwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYp
CiAgICAgLy8gVGhpcyBzdWJ0cmVlIGRvZXMgbm90IHBhaW50LgogfQogCi12b2lkIFJlbmRlclNW
R0hpZGRlbkNvbnRhaW5lcjo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wq
KQordm9pZCBSZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZs
b2F0UXVhZD4mLCBib29sKikgY29uc3QKIHsKICAgICAvLyBUaGlzIHN1YnRyZWUgZG9lcyBub3Qg
dGFrZSB1cCBzcGFjZSBvciBwYWludAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKaW5kZXggZWZmZjkyMTUxZDJj
MzYxYTZkMGM4ZDk3NzdiMzFmNjM0NDY0ZDEwYy4uZjI2YzVmYzYxYTM3ZjgyMDdkNGQ2NDliZTY4
MDlkNTJhMmY4ODI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCkBAIC00NCw3ICs0NCw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7
CiAgICAgCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KikgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9
Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29s
KiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0
UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0
RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBG
bG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKaW5kZXggMDk3NzBl
ZmJmMDI3ZmFjOWViYTdkYmM3YzRlYTQzN2Y2YWEwMTBiOS4uNGM5MDU4MGYxMzU5YmY2ODFjNzcz
YWQ1ZDhiYjgxNmNlZDQyYTYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lLmNwcApAQCAtODIsOSArODIsOSBAQCB2b2lkIFJlbmRlclNWR0lu
bGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lcgogICAgIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIodGhpcywg
cmVwYWludENvbnRhaW5lciwgdXNlVHJhbnNmb3JtcywgZml4ZWQsIHRyYW5zZm9ybVN0YXRlLCB3
YXNGaXhlZCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHSW5saW5lOjphYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFJlbmRlclNWR0lubGlu
ZTo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVk
KSBjb25zdAogewotICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0gUmVuZGVyU1ZHVGV4dDo6bG9j
YXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKHRoaXMpOworICAgIGNvbnN0IFJlbmRlck9iamVjdCog
b2JqZWN0ID0gUmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKHRoaXMp
OwogICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCmluZGV4IDBhNjA4MzdmNDc3NTk2OTAz
N2U4NDk3NWJjZjIwMDgwNjZiYjgyZjcuLmQyZmExY2M1MjQwMjRiNjFhYTdkNGFhNzdhNGU4ZGQ4
ZTU2MDg0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bmxpbmUuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0
IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0Jiwg
Ym9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0Nv
bnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VU
cmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIGJvb2wqIHdhc0ZpeGVkID0g
MCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVh
ZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAg
dmlydHVhbCBJbmxpbmVGbG93Qm94KiBjcmVhdGVJbmxpbmVGbG93Qm94KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCmlu
ZGV4IDE0YzFkYjhlMGY5M2VhZjU1OGFlZWM4OTJhODcyMzIzY2QxMGQ3MjMuLmZiZTQ5M2I1NGRj
ZGVjMWM1NzY3YTQ3OGFhNjYzODZhNTQwMzRiZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCkBAIC03MCwxMyArNzAs
MTMgQEAgTGF5b3V0UmVjdCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6b3V0bGluZUJvdW5kc0ZvclJl
cGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHIKICAgICByZXR1cm4gY29udGFpbmVyUmVsYXRp
dmVRdWFkLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHTW9kZWxP
YmplY3Q6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9p
bnQmKQordm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5
b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjb2Rl
IHBhdGggc2hvdWxkIG5ldmVyIGJlIHRha2VuIGZvciBTVkcsIGFzIHdlJ3JlIGFzc3VtaW5nIHVz
ZVRyYW5zZm9ybXM9dHJ1ZSBldmVyeXdoZXJlLCBhYnNvbHV0ZVF1YWRzIHNob3VsZCBiZSB1c2Vk
LgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFJlbmRlclNWR01vZGVsT2Jq
ZWN0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4
ZWQpCit2b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgcXVhZHMuYXBwZW5k
KGxvY2FsVG9BYnNvbHV0ZVF1YWQoc3Ryb2tlQm91bmRpbmdCb3goKSwgZmFsc2UsIHdhc0ZpeGVk
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R01vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01v
ZGVsT2JqZWN0LmgKaW5kZXggYzI4ZDNjNjYwN2Q1NTRlYTIwYzJiYTVjNWFlZWVkY2MyZGU3M2I3
OS4uNzA0MWQ0NDllZjYzMmM0ZmMzMDA5MjYwZjkyYzAwMDNiMDEwZDdlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaApAQCAt
NTUsOCArNTUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVw
YWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYs
IGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxp
bmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBMYXlvdXRQb2ludCopIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMo
VmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0
KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJv
b2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5
b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCog
d2FzRml4ZWQpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3Jt
cywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0
OwogICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25z
dCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVGV4dC5jcHAKaW5kZXggYWY0MzliNWQzOGYwODRmMDJhOTIxYjJiYWZhMGQ5
YjFhYmQ0NzA4MS4uMmE3ZDgwY2YyZWY1MjFhOTRmYmQ5NzcyMjBiMWU0ZWUxMjVkNjBkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC0y
MjUsNyArMjI1LDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlclNWR1RleHQ6OnBvc2l0aW9uRm9y
UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Db250ZW4KICAgICByZXR1cm4gY2xvc2Vz
dEJveC0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChMYXlvdXRQb2ludChwb2ludEluQ29u
dGVudHMueCgpLCBjbG9zZXN0Qm94LT55KCkpKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdUZXh0Ojph
YnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2
b2lkIFJlbmRlclNWR1RleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRz
LCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fic29s
dXRlUXVhZChzdHJva2VCb3VuZGluZ0JveCgpLCBmYWxzZSwgd2FzRml4ZWQpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKaW5kZXggYjNlMGY0M2Y4
ZjY0OWM3ZmE2N2UwYjg0MjAzNjdhZjBkNmU5MmQzZS4uYTBhZGE0Y2I0ZWZlOTgwY2FiZTI3YTlm
YTUwNGJhYTM5MDE4OWRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wg
cmVxdWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lk
IGxheW91dCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0
UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFs
IExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRl
UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExh
eW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCmluZGV4IGQ2NGQwYjdjNDc2OGYxM2NlYmIwOGNhZWQzODEwNGMyOGFiZGVh
ZDYuLmQ3YTgxNTQwZmEwZWRjZDFhOWZiMzQyNTcwOTRkZmYwMjUyYzUwMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCBQYXNzUmVmUHRyPENs
aWVudFJlY3Q+IEludGVybmFsczo6Ym91bmRpbmdCb3goRWxlbWVudCogZWxlbWVudCwgRXhjZXB0
aW9uQ29kZSYgZQogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJl
cigpOwogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVh
dGUoKTsKLSAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKHJlbmRlcmVyLT5hYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdCgpKTsKKyAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKHJlbmRlcmVy
LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpKTsKIH0KIAogdW5z
aWduZWQgSW50ZXJuYWxzOjptYXJrZXJDb3VudEZvck5vZGUoTm9kZSogbm9kZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3Bw
IGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAppbmRleCA1ZjEyZTEwMTQzOWY1
ZmJmMGQ2Y2RjYjEwMzQxMTcwNjFiNTkyN2Y0Li4wN2YyZGY5ODdkMmNmZjU2ZGZjOGQ4N2Q3YTVj
YWJiNWMxOTY2ZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKQEAgLTE3NTEsNyAr
MTc1MSw3IEBAIFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZTo6UVdlYkhpdFRlc3RSZXN1bHRQcml2
YXRlKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQKICAgICBpbWFnZVVybCA9IGhpdFRlc3Qu
YWJzb2x1dGVJbWFnZVVSTCgpOwogICAgIGlubmVyTm9kZSA9IGhpdFRlc3QuaW5uZXJOb2RlKCk7
CiAgICAgaW5uZXJOb25TaGFyZWROb2RlID0gaGl0VGVzdC5pbm5lck5vblNoYXJlZE5vZGUoKTsK
LSAgICBib3VuZGluZ1JlY3QgPSBpbm5lck5vblNoYXJlZE5vZGUgPyBpbm5lck5vblNoYXJlZE5v
ZGUtPnJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KHRydWUpIDogSW50UmVjdCgp
OworICAgIGJvdW5kaW5nUmVjdCA9IGlubmVyTm9uU2hhcmVkTm9kZSA/IGlubmVyTm9uU2hhcmVk
Tm9kZS0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSA6IEludFJlY3QoKTsK
ICAgICBXZWJDb3JlOjpJbWFnZSAqaW1nID0gaGl0VGVzdC5pbWFnZSgpOwogICAgIGlmIChpbWcp
IHsKICAgICAgICAgUVBpeG1hcCAqcGl4ID0gaW1nLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109094</attachid>
            <date>2011-09-28 17:04:30 -0700</date>
            <delta_ts>2011-09-29 12:01:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69009-20110928200429.patch</filename>
            <type>text/plain</type>
            <size>40350</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYyMTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MTNiNDA4NGUxYTEyZmM3
YTkzNzViMWVmMmU3ODExZDkzZDQ4MDdiLi4zMGY2YTNkNWFjY2VlZTYxODVkNDc3N2M0ZDc1NTdi
ZGFlNzU4MTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTEtMDktMjggIEZhZHkg
U2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDog
TWFrZSBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVk
IG1ldGhvZHMgY29uc3QgYW5kIG1ha2UgaXRzIHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxv
bmdlciBkZWZhdWx0IHRvIGZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02OTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVwY29taW5nIHBhdGNoZXMgbWF5IG1ha2UgdXNlIG9mIGFic29sdXRlQm91
bmRpbmdCb3hSZWN0IG9uIGEgY29uc3QgUmVuZGVyT2JqZWN0LCBzbyB0aGlzIG5lZWRlZCB0byBi
ZSBmaXhlZC4KKyAgICAgICAgTWFraW5nIHVzZVRyYW5zZm9ybXMgZGVmYXVsdCB0byB0cnVlIGlu
c3RlYWQgb2YgZmFsc2UgYW5kIHJlcGxhY2luZyBpbnN0YW5jZXMgb2YgYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoKSB0bworICAgICAgICBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJh
bnNmb3JtcygpIHBhcnRpYWxseSBhZGRyZXNlcyAvLyBGSVhNRTogdXNlVHJhbnNmb3JtcyBzaG91
bGQgZ28gYXdheSBldmVudHVhbGx5LgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2NyZWVuUmVjdCk6CisgICAgICAgICogaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1i
RWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tUG9pbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1Rl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxk
U3BlZWNoQnV0dG9uRWxlbWVudDo6c3RhcnRTcGVlY2hJbnB1dCk6CisgICAgICAgICogcGx1Z2lu
cy9JRnJhbWVTaGltU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRQbHVnaW5PY2Ns
dXNpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
bG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SUZyYW1lOjpmbGF0dGVuRnJhbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjphYnNvbHV0ZVJlY3RzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFic29sdXRlUXVhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVBYnNvbHV0ZVF1YWRzKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjpzaG93
UG9wdXApOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkZEFic29sdXRlUmVjdEZvckxheWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6cGFpbnRpbmdSb290UmVjdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1
dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dDo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclZpZXc6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Vmlldzo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR0Jsb2NrOjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdIaWRkZW5Db250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSGlkZGVu
Q29udGFpbmVyOjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0hpZGRlbkNvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6YWJzb2x1dGVR
dWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6
OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5o
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6Ym91bmRpbmdCb3gpOgorCiAyMDExLTA5LTI4ICBWc2V2b2xvZCBWbGFzb3YgIDx2
c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlZmFjdG9yIHNl
YXJjaGluZyBpbiBpbnNwZWN0b3IsIGFkZCB0ZXN0IChmaXhlZCBub24gcmVnZXggc2VhcmNoKS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBiMTY2MjNiYWFjOTMxMDFiMTNjMjM0ZDQzMzQ1Njdi
ZTJlNjdlNjBlLi5lODAzM2UzNTJkMzdhZjNiN2IwMGMyMjdlZTczMmNiNGQwYmRmNDJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC01NzMsNyArNTczLDggQEAgTGF5b3V0UmVjdCBFbGVtZW50
OjpzY3JlZW5SZWN0KCkgY29uc3QKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkpCiAgICAgICAgIHJl
dHVybiBMYXlvdXRSZWN0KCk7Ci0gICAgcmV0dXJuIHJlbmRlcmVyKCktPnZpZXcoKS0+ZnJhbWVW
aWV3KCktPmNvbnRlbnRzVG9TY3JlZW4ocmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3QoKSk7CisgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHByb2JhYmx5IHJlc3BlY3QgdHJhbnNm
b3JtcworICAgIHJldHVybiByZW5kZXJlcigpLT52aWV3KCktPmZyYW1lVmlldygpLT5jb250ZW50
c1RvU2NyZWVuKHJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFu
c2Zvcm1zKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRl
Q2FzZShjb25zdCBFbGVtZW50KiBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGIzMzYzNDkxMzdhZmQ0
OTYyMmM2M2RkYTZiODQ4NmVmNmFhNDBhNGIuLjQxYzI5ZDQwMGQ2Njg5YzdmYTQyZTBhZGZhNzIz
NzY1NTEyNDJjMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTgyMyw3ICs4MjMsNyBAQCBSZW5kZXJC
b3hNb2RlbE9iamVjdCogTm9kZTo6cmVuZGVyQm94TW9kZWxPYmplY3QoKSBjb25zdAogTGF5b3V0
UmVjdCBOb2RlOjpnZXRSZWN0KCkgY29uc3QKIHsKICAgICBpZiAocmVuZGVyZXIoKSkKLSAgICAg
ICAgcmV0dXJuIHJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KHRydWUpOworICAg
ICAgICByZXR1cm4gcmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKICAgICBy
ZXR1cm4gTGF5b3V0UmVjdCgpOwogfQogICAgIApAQCAtODM1LDcgKzgzNSw3IEBAIExheW91dFJl
Y3QgTm9kZTo6cmVuZGVyUmVjdChib29sKiBpc1JlcGxhY2VkKQogICAgIHdoaWxlIChyZW5kZXJl
ciAmJiAhcmVuZGVyZXItPmlzQm9keSgpICYmICFyZW5kZXJlci0+aXNSb290KCkpIHsKICAgICAg
ICAgaWYgKHJlbmRlcmVyLT5pc1JlbmRlckJsb2NrKCkgfHwgcmVuZGVyZXItPmlzSW5saW5lQmxv
Y2tPcklubGluZVRhYmxlKCkgfHwgcmVuZGVyZXItPmlzUmVwbGFjZWQoKSkgewogICAgICAgICAg
ICAgKmlzUmVwbGFjZWQgPSByZW5kZXJlci0+aXNSZXBsYWNlZCgpOwotICAgICAgICAgICAgcmV0
dXJuIHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCh0cnVlKTsKKyAgICAgICAgICAg
IHJldHVybiByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKICAgICAgICAgfQog
ICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAppbmRleCA1ZDE3
OGFmMDc5YWI0Y2ZiZDlkMGY3MjA0M2ZhZjNkODdjNDhiY2I4Li5mYzgyMzdjZTUwMzNhYTc2ODJl
Yzc3OGNkMjcyMzJkMWU0OGJjMDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJI
VE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlJl
bmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgog
I2luY2x1ZGUgIlJlbmRlclNsaWRlci5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5j
bHVkZSAiU2hhZG93Um9vdC5oIgpAQCAtMjE2LDcgKzIxNyw4IEBAIHZvaWQgU2xpZGVyVGh1bWJF
bGVtZW50OjpzZXRQb3NpdGlvbkZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiAg
ICAgLy8gV2UgbmVlZCB0byBjYWxjdWxhdGUgY3VycmVudFBvc2l0aW9uIGZyb20gYWJzb2x1dGUg
cG9pbnRzIGJlY2F1ZSB0aGUKICAgICAvLyByZW5kZXJlciBmb3IgdGhpcyBub2RlIGlzIHVzdWFs
bHkgb24gYSBsYXllciBhbmQgcmVuZGVyQm94KCktPngoKSBhbmQKICAgICAvLyB5KCkgYXJlIHVu
dXNhYmxlLgotICAgIExheW91dFBvaW50IGFic29sdXRlVGh1bWJPcmlnaW4gPSByZW5kZXJCb3go
KS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS5sb2NhdGlvbigpOworICAgIC8vIEZJWE1FOiB0
aGlzIHNob3VsZCBwcm9iYWJseSByZXNwZWN0IHRyYW5zZm9ybXMgCisgICAgTGF5b3V0UG9pbnQg
YWJzb2x1dGVUaHVtYk9yaWdpbiA9IHJlbmRlckJveCgpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dElnbm9yaW5nVHJhbnNmb3JtcygpLmxvY2F0aW9uKCk7CiAgICAgTGF5b3V0UG9pbnQgYWJzb2x1
dGVTbGlkZXJDb250ZW50T3JpZ2luID0gcm91bmRlZExheW91dFBvaW50KGlucHV0LT5yZW5kZXJl
cigpLT5sb2NhbFRvQWJzb2x1dGUoKSk7CiAgICAgaWYgKGlzVmVydGljYWwpIHsKICAgICAgICAg
dHJhY2tTaXplID0gaW5wdXQtPnJlbmRlckJveCgpLT5jb250ZW50SGVpZ2h0KCkgLSByZW5kZXJC
b3goKS0+aGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCBiZjE4NWNmN2IwZjA5NmI5M2M4ODgz
MjA2YmEzMzc0ZDA0OTM0NWQ1Li4wYmRkYzIwNDA0M2RkNTNiZWQ2YTgwNDBhY2JmY2I4YmNmYzIw
Nzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJNb3VzZUV2
ZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisjaW5j
bHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcm9sbGJh
clRoZW1lLmgiCkBAIC01MzUsNyArNTM2LDggQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9u
RWxlbWVudDo6c3RhcnRTcGVlY2hJbnB1dCgpCiAgICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+
IGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yTm9k
ZSgpKTsKICAgICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UgPSBpbnB1dC0+Y29tcHV0ZUluaGVyaXRl
ZExhbmd1YWdlKCk7CiAgICAgU3RyaW5nIGdyYW1tYXIgPSBpbnB1dC0+Z2V0QXR0cmlidXRlKHdl
YmtpdGdyYW1tYXJBdHRyKTsKLSAgICBJbnRSZWN0IHJlY3QgPSByZW5kZXJlcigpLT5hYnNvbHV0
ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBwcm9iYWJseSBy
ZXNwZWN0IHRyYW5zZm9ybXMKKyAgICBJbnRSZWN0IHJlY3QgPSByZW5kZXJlcigpLT5hYnNvbHV0
ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOwogICAgIGlmIChzcGVlY2hJbnB1
dCgpLT5zdGFydFJlY29nbml0aW9uKG1fbGlzdGVuZXJJZCwgcmVjdCwgbGFuZ3VhZ2UsIGdyYW1t
YXIsIGRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICBzZXRTdGF0ZShSZWNv
cmRpbmcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVI
aWdobGlnaHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdo
dGVyLmNwcAppbmRleCBlNjg5YjUyNTBiNmE4NjhlYTVhNTUwZDZkYWFiYTI5NDVhNzhmNjlkLi5m
OGJmYjYwZjlhZGVkMjBiMmUxMDY4MGEwOGM5NjQyODRkYTg0ZjU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcApAQCAtMzYxLDcgKzM2MSw3
IEBAIHZvaWQgZHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBIaWdo
bGlnaHREYXRhKiBoaWdobGlnaHREYXRhKQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRT
aXplIG1haW5GcmFtZU9mZnNldCA9IGZyYW1lVG9NYWluRnJhbWVPZmZzZXQoY29udGFpbmluZ0Zy
YW1lKTsKLSAgICBMYXlvdXRSZWN0IGJvdW5kaW5nQm94ID0gcmVuZGVyZXItPmFic29sdXRlQm91
bmRpbmdCb3hSZWN0KHRydWUpOworICAgIExheW91dFJlY3QgYm91bmRpbmdCb3ggPSByZW5kZXJl
ci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKIAogICAgIGJvdW5kaW5nQm94Lm1vdmUobWFp
bkZyYW1lT2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9JRnJh
bWVTaGltU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0lGcmFtZVNoaW1TdXBw
b3J0LmNwcAppbmRleCBjMGFhMWU0MTM2YzQ5NDJmMjlhZjg4NGYzMjE2ODg1YzdhYzU1Yjc5Li44
MjY1NzY1MTEwYWU1NDY4ZDAzMDVmM2VmYjA0NmQyNWFkZDdmZWZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZv
aWQgZ2V0UGx1Z2luT2NjbHVzaW9ucyhFbGVtZW50KiBlbGVtZW50LCBXaWRnZXQqIHBhcmVudFdp
ZGdldCwgY29uc3QgSW50UmVjdCYKICAgICAgICAgUmVuZGVyT2JqZWN0KiBpZnJhbWVSZW5kZXJl
ciA9IGVsZW1lbnQtPnJlbmRlcmVyKCk7CiAKICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjppZnJhbWVUYWcpCi0gICAgICAgICAgICAmJiBpZnJhbWVSZW5kZXJlci0+
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS5pbnRlcnNlY3RzKGZyYW1lUmVjdCkKKyAgICAgICAg
ICAgICYmIGlmcmFtZVJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJh
bnNmb3JtcygpLmludGVyc2VjdHMoZnJhbWVSZWN0KQogICAgICAgICAgICAgJiYgKCFpZnJhbWVS
ZW5kZXJlci0+c3R5bGUoKSB8fCBpZnJhbWVSZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgp
ID09IFZJU0lCTEUpKSB7CiAgICAgICAgICAgICBnZXRPYmplY3RTdGFjayhpZnJhbWVSZW5kZXJl
ciwgJmlmcmFtZVpzdGFjayk7CiAgICAgICAgICAgICBpZiAoaWZyYW1lSXNBYm92ZVBsdWdpbihp
ZnJhbWVac3RhY2ssIHBsdWdpblpzdGFjaykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCmluZGV4IDAwZjNmM2Q4MDQ4ZTUwMmU5MmJkZjYxNjIwYTQyZWJjY2U1MGYz
YTcuLjVkNTNlZTQ0MDg0MGExNjgyNTQ2MmRkY2NkNTk3MjYwYTYwMzQ4NGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtNTgzOSw3ICs1ODM5LDcgQEAgdm9p
ZCBSZW5kZXJCbG9jazo6c2V0UGFnZUxvZ2ljYWxPZmZzZXQoaW50IGxvZ2ljYWxPZmZzZXQpCiAg
ICAgbV9yYXJlRGF0YS0+bV9wYWdlTG9naWNhbE9mZnNldCA9IGxvZ2ljYWxPZmZzZXQ7CiB9CiAK
LXZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0
cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KQordm9pZCBSZW5kZXJCbG9j
azo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7CiAgICAgLy8gRm9yIGJsb2NrcyBpbnNp
ZGUgaW5saW5lcywgd2UgZ28gYWhlYWQgYW5kIGluY2x1ZGUgbWFyZ2lucyBzbyB0aGF0IHdlIHJ1
biByaWdodCB1cCB0byB0aGUKICAgICAvLyBpbmxpbmUgYm94ZXMgYWJvdmUgYW5kIGJlbG93IHVz
ICh0aHVzIGdldHRpbmcgbWVyZ2VkIHdpdGggdGhlbSB0byBmb3JtIGEgc2luZ2xlIGlycmVndWxh
cgpAQCAtNTg1NSw3ICs1ODU1LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWJzb2x1dGVSZWN0cyhW
ZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWMKICAgICAgICAg
cmVjdHMuYXBwZW5kKExheW91dFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIHNpemUoKSkpOwogfQog
Ci12b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFk
cywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgLy8gRm9y
IGJsb2NrcyBpbnNpZGUgaW5saW5lcywgd2UgZ28gYWhlYWQgYW5kIGluY2x1ZGUgbWFyZ2lucyBz
byB0aGF0IHdlIHJ1biByaWdodCB1cCB0byB0aGUKICAgICAvLyBpbmxpbmUgYm94ZXMgYWJvdmUg
YW5kIGJlbG93IHVzICh0aHVzIGdldHRpbmcgbWVyZ2VkIHdpdGggdGhlbSB0byBmb3JtIGEgc2lu
Z2xlIGlycmVndWxhcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCAw
OTc3MjdlOGI1MzU4MmZjYWI3Y2Q5MzJlNjRhOTcwN2ZmOWVkNjg0Li5mODFiMmZlNjE3MTZiOWEw
Yzk2ZDk3MDc2NjA1Yzc0N2I4ZGZjNTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suaApAQCAtNjgyLDggKzY4Miw4IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBsb2dp
Y2FsTGVmdFNlbGVjdGlvbk9mZnNldChSZW5kZXJCbG9jayogcm9vdEJsb2NrLCBMYXlvdXRVbml0
IHBvc2l0aW9uKTsKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodFNlbGVjdGlvbk9mZnNldChS
ZW5kZXJCbG9jayogcm9vdEJsb2NrLCBMYXlvdXRVbml0IHBvc2l0aW9uKTsKICAgICAKLSAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlv
dXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1
YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICAgICBMYXlvdXRV
bml0IGRlc2lyZWRDb2x1bW5XaWR0aCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGRlc2lyZWRDb2x1
bW5Db3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRl
eCA1YzhiZWU5MjVjM2FmOTdiNGIzMmZjZWUwNmE5MDliOTE5ZDM5MmYxLi4zYjQ5MzMwODE2ZTcy
NTNkMTcwYWVjNTNmNDc0NjZkZWNlMTI5OTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcApAQCAtNDY2LDEyICs0NjYsMTIgQEAgdm9pZCBSZW5kZXJCb3g6OnNldFNjcm9s
bFRvcChMYXlvdXRVbml0IG5ld1RvcCkKICAgICAgICAgbGF5ZXIoKS0+c2Nyb2xsVG9ZT2Zmc2V0
KG5ld1RvcCwgUmVuZGVyTGF5ZXI6OlNjcm9sbE9mZnNldENsYW1wZWQpOwogfQogCi12b2lkIFJl
bmRlckJveDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlv
dXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCit2b2lkIFJlbmRlckJveDo6YWJzb2x1dGVSZWN0
cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQpIGNvbnN0CiB7CiAgICAgcmVjdHMuYXBwZW5kKExheW91dFJlY3QoYWNjdW11bGF0ZWRP
ZmZzZXQsIHNpemUoKSkpOwogfQogCi12b2lkIFJlbmRlckJveDo6YWJzb2x1dGVRdWFkcyhWZWN0
b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJCb3g6OmFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29u
c3QKIHsKICAgICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QoMCwg
MCwgd2lkdGgoKSwgaGVpZ2h0KCkpLCBmYWxzZSwgd2FzRml4ZWQpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guaAppbmRleCA0NWQ0NDYwZWU0ODVjM2ExODU0ZjkzNjBmNmU4NGRj
ZDU1NzRhZGVmLi44YzYyNGZkZDRlNmFmMDlmZTE2MTU5ZTJkZDdlOTRlZjJkOWE0ZWVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC0yMzIsOCArMjMyLDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb2xsYXBzZWRNYXJnaW5CZWZvcmUoKSBjb25zdCB7
IHJldHVybiBtYXJnaW5CZWZvcmUoKTsgfQogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb2xsYXBz
ZWRNYXJnaW5BZnRlcigpIGNvbnN0IHsgcmV0dXJuIG1hcmdpbkFmdGVyKCk7IH0KIAotICAgIHZp
cnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCk7Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFi
c29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKICAgICAKICAgICBJbnRSZWN0IHJl
ZmxlY3Rpb25Cb3goKSBjb25zdDsKICAgICBpbnQgcmVmbGVjdGlvbk9mZnNldCgpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250
cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJv
bC5jcHAKaW5kZXggZjk0NDkxZjMxYzVhOGU1ZmQyMDIyNDUwMTk1NGU0YjQ2ZWYwODQ2Ni4uMDFj
ZWVhZmZjYjBmZTU5YmU1NDFmZjRmMmFlMzgwOGIxZTgzYTU4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC0xMzIs
NyArMTMyLDggQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW4KICAgICAgICAgICAgIHRleHRYID0g
Y29udGVudExlZnQgKyBjb250ZW50V2lkdGgoKSAtIGJ1dHRvbkFuZEljb25XaWR0aCAtIGZvbnQu
d2lkdGgodGV4dFJ1bik7CiAgICAgICAgIC8vIFdlIHdhbnQgdG8gbWF0Y2ggdGhlIGJ1dHRvbidz
IGJhc2VsaW5lCiAgICAgICAgIFJlbmRlckJ1dHRvbiogYnV0dG9uUmVuZGVyZXIgPSB0b1JlbmRl
ckJ1dHRvbihidXR0b24tPnJlbmRlcmVyKCkpOwotICAgICAgICBMYXlvdXRVbml0IHRleHRZID0g
YnV0dG9uUmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkueSgpCisgICAgICAgIC8v
IEZJWE1FOiBtYWtlIHRoaXMgd29yayB3aXRoIHRyYW5zZm9ybXMuCisgICAgICAgIExheW91dFVu
aXQgdGV4dFkgPSBidXR0b25SZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmlu
Z1RyYW5zZm9ybXMoKS55KCkKICAgICAgICAgICAgICsgYnV0dG9uUmVuZGVyZXItPmJhc2VsaW5l
UG9zaXRpb24oQWxwaGFiZXRpY0Jhc2VsaW5lLCB0cnVlLCBIb3Jpem9udGFsTGluZSwgUG9zaXRp
b25PbkNvbnRhaW5pbmdMaW5lKTsKIAogICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0Rmls
bENvbG9yKHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwg
c3R5bGUoKS0+Y29sb3JTcGFjZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklG
cmFtZS5jcHAKaW5kZXggMTEyOTdiNWRiN2E5ZjdhMmQwOWU0NjU5NDNjNDg3ZTE4NmYxNWFkMC4u
Y2UwZjQzYmQwMzA0MTUxYTQwODNiMGEwMjBhOWUyZWQ5NjFiMTNkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBib29sIFJl
bmRlcklGcmFtZTo6ZmxhdHRlbkZyYW1lKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Ly8gRG8gbm90IGZsYXR0ZW4gb2Zmc2NyZWVuIGlubmVyIGZyYW1lcyBkdXJpbmcgZnJhbWUgZmxh
dHRlbmluZywgYXMgZmxhdHRlbmluZyBtaWdodCBtYWtlIHRoZW0gdmlzaWJsZS4KLSAgICBJbnRS
ZWN0IGJvdW5kaW5nUmVjdCA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgSW50UmVj
dCBib3VuZGluZ1JlY3QgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3Jt
cygpOwogICAgIHJldHVybiBib3VuZGluZ1JlY3QubWF4WCgpID4gMCAmJiBib3VuZGluZ1JlY3Qu
bWF4WSgpID4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNw
cAppbmRleCA2Y2E5ZDNmYjFlOTJkMDJjYmM5MGJhNGRjMzNiYTE5YmQ4NGIyODA0Li4zZjA5NjMz
YjAwOGQ5NTZmYTFmN2UyMTgyZTMwYzRkZDIwNWFjM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtNDY2LDcgKzQ2Niw3IEBAIHZvaWQgUmVuZGVySW5s
aW5lOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0KQogICAgIG1fbGluZUJveGVzLnBhaW50KHRoaXMsIHBhaW50SW5mbywgcGFpbnRPZmZz
ZXQpOwogfQogCi12b2lkIFJlbmRlcklubGluZTo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0
UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCit2b2lk
IFJlbmRlcklubGluZTo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBj
b25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7CiAgICAgaWYgKCFh
bHdheXNDcmVhdGVMaW5lQm94ZXMoKSkKICAgICAgICAgY3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0
cyh0aGlzLCByZWN0cywgdG9MYXlvdXRTaXplKGFjY3VtdWxhdGVkT2Zmc2V0KSk7CkBAIC00ODUs
NyArNDg1LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91
dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGEKICAgICB9CiB9CiAKLXZvaWQgUmVu
ZGVySW5saW5lOjpjdWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlcklubGluZSog
Y29udGFpbmVyLCBWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRTaXplJiBv
ZmZzZXQpCit2b2lkIFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25z
dCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29u
c3QgTGF5b3V0U2l6ZSYgb2Zmc2V0KSBjb25zdAogewogICAgIGlmICghY3VsbGVkSW5saW5lRmly
c3RMaW5lQm94KCkpIHsKICAgICAgICAgcmVjdHMuYXBwZW5kKEludFJlY3Qob2Zmc2V0LndpZHRo
KCksIG9mZnNldC5oZWlnaHQoKSwgMCwgMCkpOwpAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgUmVu
ZGVySW5saW5lOjpjdWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlcklubGluZSog
Y29udGFpbmVyLCBWZWN0CiAgICAgfQogfQogCi12b2lkIFJlbmRlcklubGluZTo6YWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5k
ZXJJbmxpbmU6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3
YXNGaXhlZCkgY29uc3QKIHsKICAgICBpZiAoIWFsd2F5c0NyZWF0ZUxpbmVCb3hlcygpKQogICAg
ICAgICBjdWxsZWRJbmxpbmVBYnNvbHV0ZVF1YWRzKHRoaXMsIHF1YWRzKTsKQEAgLTU2OSw3ICs1
NjksNyBAQCB2b2lkIFJlbmRlcklubGluZTo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFk
PiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQogICAgICAgICBjb250aW51YXRpb24oKS0+YWJzb2x1
dGVRdWFkcyhxdWFkcywgd2FzRml4ZWQpOwogfQogCi12b2lkIFJlbmRlcklubGluZTo6Y3VsbGVk
SW5saW5lQWJzb2x1dGVRdWFkcyhjb25zdCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdG9y
PEZsb2F0UXVhZD4mIHF1YWRzKQordm9pZCBSZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29s
dXRlUXVhZHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxGbG9hdFF1YWQ+
JiBxdWFkcykgY29uc3QKIHsKICAgICBpZiAoIWN1bGxlZElubGluZUZpcnN0TGluZUJveCgpKSB7
CiAgICAgICAgIHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdCgpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKaW5kZXggYWZkNGFhZDQ0OGIw
ZTgxODE5MzI5ZWEwYWE2ODZlNWIwOWNlYjY2Ny4uZmU5NWFmMWZlMTg3NTQyNjViYTk3OTA5Zjdl
ZGI2ZWIzZTczYWU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaApA
QCAtNDYsOCArNDYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpblN0
YXJ0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkVuZCgpIGNvbnN0Owog
Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29u
c3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJz
b2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0
ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiAgICAg
dmlydHVhbCBMYXlvdXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiwgY29u
c3QgTGF5b3V0UG9pbnQmKSBjb25zdDsKIApAQCAtMTAyLDggKzEwMiw4IEBAIHByaXZhdGU6CiAg
ICAgTGF5b3V0UmVjdCBjdWxsZWRJbmxpbmVWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkgY29u
c3Q7CiAgICAgSW5saW5lQm94KiBjdWxsZWRJbmxpbmVGaXJzdExpbmVCb3goKSBjb25zdDsKICAg
ICBJbmxpbmVCb3gqIGN1bGxlZElubGluZUxhc3RMaW5lQm94KCkgY29uc3Q7Ci0gICAgdm9pZCBj
dWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBW
ZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRTaXplJik7Ci0gICAgdm9pZCBjdWxsZWRJ
bmxpbmVBYnNvbHV0ZVF1YWRzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8
RmxvYXRRdWFkPiYpOworICAgIHZvaWQgY3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25zdCBS
ZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0
U2l6ZSYpIGNvbnN0OworICAgIHZvaWQgY3VsbGVkSW5saW5lQWJzb2x1dGVRdWFkcyhjb25zdCBS
ZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdG9yPEZsb2F0UXVhZD4mKSBjb25zdDsKIAogICAg
IHZvaWQgYWRkQ2hpbGRUb0NvbnRpbnVhdGlvbihSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5k
ZXJPYmplY3QqIGJlZm9yZUNoaWxkKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRJZ25vcmlu
Z0NvbnRpbnVhdGlvbihSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9y
ZUNoaWxkID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNw
cAppbmRleCA4OTdhYTg4ZWFmMWVhMmE0NmVkMTM2ZjUwZjdjNjI2MjM5MTM5ZTAxLi45YmEzYjVl
N2ExOTcyY2M4NGZjMzU0NjRkYzNmNWRjMjFkYTc1NGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKQEAgLTMwMiw3ICszMDIsNyBAQCB2b2lkIFJlbmRl
ck1lbnVMaXN0OjpzaG93UG9wdXAoKQogICAgIC8vIENvbXB1dGUgdGhlIHRvcCBsZWZ0IHRha2lu
ZyB0cmFuc2Zvcm1zIGludG8gYWNjb3VudCwgYnV0IHVzZQogICAgIC8vIHRoZSBhY3R1YWwgd2lk
dGggb2YgdGhlIGVsZW1lbnQgdG8gc2l6ZSB0aGUgcG9wdXAuCiAgICAgRmxvYXRQb2ludCBhYnNU
b3BMZWZ0ID0gbG9jYWxUb0Fic29sdXRlKEZsb2F0UG9pbnQoKSwgZmFsc2UsIHRydWUpOwotICAg
IExheW91dFJlY3QgYWJzQm91bmRzID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBM
YXlvdXRSZWN0IGFic0JvdW5kcyA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFu
c2Zvcm1zKCk7CiAgICAgYWJzQm91bmRzLnNldExvY2F0aW9uKHJvdW5kZWRJbnRQb2ludChhYnNU
b3BMZWZ0KSk7CiAgICAgbV9wb3B1cC0+c2hvdyhhYnNCb3VuZHMsIGRvY3VtZW50KCktPnZpZXco
KSwKICAgICAgICAgc2VsZWN0LT5vcHRpb25Ub0xpc3RJbmRleChzZWxlY3QtPnNlbGVjdGVkSW5k
ZXgoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCBh
NDVlNjBkODY1ZGYwYTU2MTFhMDE2MjZkMGFkZWE1NmIxZDdiZjk0Li45NDk1ZTM0OTEyZWViNDhj
NzhiYTU1NWE0MTZiZGYwNjY1MWI1NWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcApAQCAtMTE1NSw3ICsxMTU1LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnBh
aW50T3V0bGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTGF5b3V0
UmUKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogfQog
Ci1JbnRSZWN0IFJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoYm9vbCB1c2VU
cmFuc2Zvcm1zKQorSW50UmVjdCBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0
KGJvb2wgdXNlVHJhbnNmb3JtcykgY29uc3QKIHsKICAgICBpZiAodXNlVHJhbnNmb3Jtcykgewog
ICAgICAgICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFkczsKQEAgLTEyMDUsMTQgKzEyMDUsMTQgQEAg
dm9pZCBSZW5kZXJPYmplY3Q6OmFic29sdXRlRm9jdXNSaW5nUXVhZHMoVmVjdG9yPEZsb2F0UXVh
ZD4mIHF1YWRzKQogdm9pZCBSZW5kZXJPYmplY3Q6OmFkZEFic29sdXRlUmVjdEZvckxheWVyKElu
dFJlY3QmIHJlc3VsdCkKIHsKICAgICBpZiAoaGFzTGF5ZXIoKSkKLSAgICAgICAgcmVzdWx0LnVu
aXRlKGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOworICAgICAgICByZXN1bHQudW5pdGUoYWJz
b2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKSk7CiAgICAgZm9yIChSZW5k
ZXJPYmplY3QqIGN1cnJlbnQgPSBmaXJzdENoaWxkKCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJy
ZW50LT5uZXh0U2libGluZygpKQogICAgICAgICBjdXJyZW50LT5hZGRBYnNvbHV0ZVJlY3RGb3JM
YXllcihyZXN1bHQpOwogfQogCiBMYXlvdXRSZWN0IFJlbmRlck9iamVjdDo6cGFpbnRpbmdSb290
UmVjdChMYXlvdXRSZWN0JiB0b3BMZXZlbFJlY3QpCiB7Ci0gICAgTGF5b3V0UmVjdCByZXN1bHQg
PSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIExheW91dFJlY3QgcmVzdWx0ID0gYWJz
b2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKICAgICB0b3BMZXZlbFJl
Y3QgPSByZXN1bHQ7CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGN1cnJlbnQgPSBmaXJzdENoaWxk
KCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0U2libGluZygpKQogICAgICAgICBj
dXJyZW50LT5hZGRBYnNvbHV0ZVJlY3RGb3JMYXllcihyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IGVjZjUyMjcyMWE4MGVjY2M3ZjI1MzQ4NzNlZTky
ODYxZDVhODFmY2EuLjA4ZGFiNjNlZTRkZmQxMmY3YTg3MjllYmM1YjVkZDM4MjMzNTRmZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTYyMSwxMiArNjIxLDE0
IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4gdGhlIG9mZnNldCBmcm9tIGFuIG9iamVjdCB1cCB0
aGUgY29udGFpbmVyKCkgY2hhaW4uIEFzc2VydHMgdGhhdCBub25lIG9mIHRoZSBpbnRlcm1lZGlh
dGUgb2JqZWN0cyBoYXZlIHRyYW5zZm9ybXMuCiAgICAgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQW5j
ZXN0b3JDb250YWluZXIoUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCB2
b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQm
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0IHsgfQorCiAgICAgLy8gRklYTUU6IHVzZVRyYW5z
Zm9ybXMgc2hvdWxkIGdvIGF3YXkgZXZlbnR1YWxseQotICAgIEludFJlY3QgYWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm1zID0gZmFsc2UpOworICAgIEludFJlY3QgYWJz
b2x1dGVCb3VuZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm0gPSB0cnVlKSBjb25zdDsKKyAg
ICBJbnRSZWN0IGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkgY29u
c3QgeyByZXR1cm4gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpOyB9CiAKICAgICAvLyBC
dWlsZCBhbiBhcnJheSBvZiBxdWFkcyBpbiBhYnNvbHV0ZSBjb29yZHMgZm9yIGxpbmUgYm94ZXMK
LSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wq
IC8qd2FzRml4ZWQqLyA9IDApIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZl
Y3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogLyp3YXNGaXhlZCovID0gMCkgY29uc3QgeyB9CiAKICAg
ICB2b2lkIGFic29sdXRlRm9jdXNSaW5nUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGU4ODg2MWYzZDA0YTA4Njg0
NGQzYTcwZDIxNWE0NzRkZTY4OTI0YzkuLjZiNmRhMjQ0NGUxMmM3MzI2ZjE5NmQ2NGI4ODEyNTg4
Mjc0Zjk4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTMw
MSw3ICszMDEsNyBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFJlbmRlclRleHQ6Om9yaWdpbmFs
VGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIChlICYmIGUtPmlzVGV4dE5vZGUoKSkgPyBzdGF0aWNf
Y2FzdDxUZXh0Kj4oZSktPmRhdGFJbXBsKCkgOiAwOwogfQogCi12b2lkIFJlbmRlclRleHQ6OmFi
c29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQm
IGFjY3VtdWxhdGVkT2Zmc2V0KQordm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVJlY3RzKFZlY3Rv
cjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNl
dCkgY29uc3QKIHsKICAgICBmb3IgKElubGluZVRleHRCb3gqIGJveCA9IGZpcnN0VGV4dEJveCgp
OyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkKICAgICAgICAgcmVjdHMuYXBwZW5kKGVu
Y2xvc2luZ0xheW91dFJlY3QoRmxvYXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0ICsgYm94LT50b3BM
ZWZ0KCksIGJveC0+c2l6ZSgpKSkpOwpAQCAtMzg4LDcgKzM4OCw3IEBAIHN0YXRpYyBJbnRSZWN0
IGVsbGlwc2lzUmVjdEZvckJveChJbmxpbmVUZXh0Qm94KiBib3gsIHVuc2lnbmVkIHN0YXJ0UG9z
LCB1bnNpZ25lCiAgICAgcmV0dXJuIEludFJlY3QoKTsKIH0KICAgICAKLXZvaWQgUmVuZGVyVGV4
dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVk
LCBDbGlwcGluZ09wdGlvbiBvcHRpb24pCit2b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCwgQ2xpcHBpbmdPcHRpb24g
b3B0aW9uKSBjb25zdAogewogICAgIGZvciAoSW5saW5lVGV4dEJveCogYm94ID0gZmlyc3RUZXh0
Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7CiAgICAgICAgIEludFJlY3Qg
Ym91bmRhcmllcyA9IGJveC0+Y2FsY3VsYXRlQm91bmRhcmllcygpOwpAQCAtNDA1LDcgKzQwNSw3
IEBAIHZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVh
ZHMsIGJvb2wqIHdhc0ZpeGVkLCBDbGlwcGluCiAgICAgfQogfQogICAgIAotdm9pZCBSZW5kZXJU
ZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4
ZWQpCit2b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1
YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBhYnNvbHV0ZVF1YWRzKHF1YWRzLCB3
YXNGaXhlZCwgTm9DbGlwcGluZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
aAppbmRleCA0MDIwZDhhYTM3MTIyZDEyNWQxZGM0ZWYxMTA3MDlkMThmOTUxMzk4Li40MmU5YWVj
OTZiM2IzMmIyZDE5ZTNiYzUxOTVjMTNkNDcxY2EwOTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmgKQEAgLTU0LDE0ICs1NCwxNCBAQCBwdWJsaWM6CiAgICAgSW5saW5lVGV4
dEJveCogY3JlYXRlSW5saW5lVGV4dEJveCgpOwogICAgIHZvaWQgZGlydHlMaW5lQm94ZXMoYm9v
bCBmdWxsTGF5b3V0KTsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxM
YXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7CisgICAg
dmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKICAgICB2b2lkIGFic29sdXRlUmVj
dHNGb3JSYW5nZShWZWN0b3I8SW50UmVjdD4mLCB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAsIHVu
c2lnbmVkIGVuZE9mZnNldCA9IFVJTlRfTUFYLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCA9IGZh
bHNlLCBib29sKiB3YXNGaXhlZCA9IDApOwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVh
ZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lk
IGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7
CiAgICAgdm9pZCBhYnNvbHV0ZVF1YWRzRm9yUmFuZ2UoVmVjdG9yPEZsb2F0UXVhZD4mLCB1bnNp
Z25lZCBzdGFydE9mZnNldCA9IDAsIHVuc2lnbmVkIGVuZE9mZnNldCA9IFVJTlRfTUFYLCBib29s
IHVzZVNlbGVjdGlvbkhlaWdodCA9IGZhbHNlLCBib29sKiB3YXNGaXhlZCA9IDApOwogCiAgICAg
ZW51bSBDbGlwcGluZ09wdGlvbiB7IE5vQ2xpcHBpbmcsIENsaXBUb0VsbGlwc2lzIH07Ci0gICAg
dm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQgPSAw
LCBDbGlwcGluZ09wdGlvbiA9IE5vQ2xpcHBpbmcpOworICAgIHZvaWQgYWJzb2x1dGVRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkID0gMCwgQ2xpcHBpbmdPcHRpb24gPSBO
b0NsaXBwaW5nKSBjb25zdDsKIAogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9u
Rm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAppbmRleCAxNzA5
N2IxZmJhYjM2MTgwODhlMGI0ODkzN2M2MDhlNWMyZDg0Y2ZhLi5mZjkwNzcwZjA5NTU3ODkxMDc1
ZGI5MWUyOWUxZGZlNzg3MDRhZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcApAQCAtMTc0LDcgKzE3NCw3
IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpzaG93UG9wdXAoKQogICAgICAg
ICBtX3NlYXJjaFBvcHVwLT5zYXZlUmVjZW50U2VhcmNoZXMobmFtZSwgbV9yZWNlbnRTZWFyY2hl
cyk7CiAgICAgfQogCi0gICAgbV9zZWFyY2hQb3B1cC0+cG9wdXBNZW51KCktPnNob3coYWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QodHJ1ZSksIGRvY3VtZW50KCktPnZpZXcoKSwgLTEpOworICAgIG1f
c2VhcmNoUG9wdXAtPnBvcHVwTWVudSgpLT5zaG93KGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCks
IGRvY3VtZW50KCktPnZpZXcoKSwgLTEpOwogfQogCiB2b2lkIFJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZTo6aGlkZVBvcHVwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVTYWZhcmkuY3BwCmluZGV4IGRiYTg3NGQ0YWFjZWRhMTUxM2U2OWU2YWUwZDY1MDZlYjQz
MDg5OTUuLmQzNGQwNzQ4NDQ2M2E5ZjY1MjI2ZjVkMTJmYzE3MDg3NTc4MzMwYzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcApAQCAtMTA4MCw3
ICsxMDgwLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZENhbmNl
bEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW4KICAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gaW5wdXQtPnJlbmRlcmVyKCk7CiAgICAgQVNTRVJUKHJlbmRlcmVyKTsKIAotICAg
IEludFJlY3Qgc2VhcmNoUmVjdCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgp
OworICAgIEludFJlY3Qgc2VhcmNoUmVjdCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOwogCiAgICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhl
bWU6OlNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uUGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLCBzZWFyY2hSZWN0LCBjb250cm9sU2l6ZUZyb21SZWN0KHNlYXJjaFJlY3Qs
IHNlYXJjaEZpZWxkU2l6ZXMoKSksIGRldGVybWluZVN0YXRlKG8pKTsKICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMTM0LDcgKzExMzQsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNl
YXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdAogICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBpbnB1dC0+cmVuZGVyZXIoKTsKICAgICBBU1NFUlQocmVu
ZGVyZXIpOwogCi0gICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFic29sdXRlQm91
bmRpbmdCb3hSZWN0KCk7CisgICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFic29s
dXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAKICAgICBwYWludFRoZW1l
UGFydChTYWZhcmlUaGVtZTo6U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQsIHBhaW50
SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNpemVG
cm9tUmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShv
KSk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgYm9vbCBSZW5kZXJU
aGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2JqZWN0KiBv
LCBjb25zdCBQYWkKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaW5wdXQtPnJlbmRlcmVy
KCk7CiAgICAgQVNTRVJUKHJlbmRlcmVyKTsKIAotICAgIEludFJlY3Qgc2VhcmNoUmVjdCA9IHJl
bmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIEludFJlY3Qgc2VhcmNoUmVj
dCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3Jtcygp
OwogCiAgICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJjaEZpZWxkUmVzdWx0c0J1
dHRvblBhcnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVj
dCwgY29udHJvbFNpemVGcm9tUmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBk
ZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDFmZWZhYzRmMDE5MmVhM2ViMDU0MTVjYjM0MzRhZjVi
MDlmNmE3NDEuLmY0MjFmOTgxZGEyNjdkZDU3ZDU5OTRhYmMzZWMxYTc1NjVkMTgwNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTMyOSwxMiArMzI5LDEyIEBA
IHZvaWQgUmVuZGVyVmlldzo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBJCiAgICAgICAgIHJlY3QgPSBtX2xheWVyLT50cmFuc2Zv
cm0oKS0+bWFwUmVjdChyZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVJlY3Rz
KFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRl
ZE9mZnNldCkKK3ZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVj
dD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7
CiAgICAgcmVjdHMuYXBwZW5kKExheW91dFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIG1fbGF5ZXIt
PnNpemUoKSkpOwogfQogCi12b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZs
b2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkKK3ZvaWQgUmVuZGVyVmlldzo6YWJzb2x1
dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAog
ewogICAgIGlmICh3YXNGaXhlZCkKICAgICAgICAgKndhc0ZpeGVkID0gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCBlNmQ3ZDhmNzU1ZjViNzdiYjdkOTkwODcw
ZTVhNmFkYWFhNDlmZTY3Li45YTZmNjNkOTBmYmYyMWE2MDdhNWRkNTNkNjIyMGM4YWY0MWFkZjdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTg2LDggKzg2LDggQEAg
cHVibGljOgogCiAgICAgYm9vbCBwcmludGluZygpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lk
IGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVS
ZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQogICAgIHZvaWQgc2V0TWF4aW1hbE91dGxpbmVTaXplKGludCBvKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAKaW5kZXggMmM4
MTU5MDhlYmY2Yjk4OTA2NzU3ZDhiYzU0YmU2OTQ3YTcxNzllMy4uN2IxNmE0ZDViZmM5Y2I3YmI2
NWU2NWJiMTVhYmM4ZTJmNmViYWVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBSZW5kZXJTVkdC
bG9jazo6dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCkKICAgICBzZXRIYXNPdmVyZmxvd0Ns
aXAoZmFsc2UpOwogfQogCi12b2lkIFJlbmRlclNWR0Jsb2NrOjphYnNvbHV0ZVJlY3RzKFZlY3Rv
cjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JikKK3ZvaWQgUmVuZGVyU1ZHQmxvY2s6
OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBj
b25zdAogewogICAgIC8vIFRoaXMgY29kZSBwYXRoIHNob3VsZCBuZXZlciBiZSB0YWtlbiBmb3Ig
U1ZHLCBhcyB3ZSdyZSBhc3N1bWluZyB1c2VUcmFuc2Zvcm1zPXRydWUgZXZlcnl3aGVyZSwgYWJz
b2x1dGVRdWFkcyBzaG91bGQgYmUgdXNlZC4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaAppbmRleCAyMmMx
ZjE4ZTM2ZTAyMzEwYmU3ZTdkM2U0ZWM4MTIzYTI5YjVhNzE0Li41OGNmMjYyMGE5ODE4ZDY0YWUy
NzgzNGZlZDhkNDFiNzE2OTIwNDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdCbG9jay5oCkBAIC0zOCw3ICszOCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHNldFN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJz
b2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11
bGF0ZWRPZmZzZXQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlv
dXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CiAgICAgdmlydHVhbCB2b2lkIHN0
eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHls
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hp
ZGRlbkNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0hpZGRlbkNvbnRhaW5lci5jcHAKaW5kZXggZDI5ZDg1ZWM5Mzk3MWRlZTE4ZGIxMmJkOGU3ODA1
ZjU4MTc3MmYxZS4uODk1YjI1NDQ5MDAxMjNmZGJmM2VhMDI1ODU0Y2I5Y2VkYmUwNGZkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250
YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlk
ZGVuQ29udGFpbmVyLmNwcApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIFJlbmRlclNWR0hpZGRlbkNv
bnRhaW5lcjo6cGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKQogICAgIC8vIFRo
aXMgc3VidHJlZSBkb2VzIG5vdCBwYWludC4KIH0KIAotdm9pZCBSZW5kZXJTVkdIaWRkZW5Db250
YWluZXI6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKikKK3ZvaWQgUmVu
ZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+Jiwg
Ym9vbCopIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBzdWJ0cmVlIGRvZXMgbm90IHRha2UgdXAgc3Bh
Y2Ugb3IgcGFpbnQKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCmluZGV4IGVmZmY5MjE1MWQyYzM2MWE2ZDBjOGQ5
Nzc3YjMxZjYzNDQ2NGQxMGMuLmYyNmM1ZmM2MWEzN2Y4MjA3ZDRkNjQ5YmU2ODA5ZDUyYTJmODgy
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlk
ZGVuQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdIaWRkZW5Db250YWluZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIAogICAg
IHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCopIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQotICAgIHZpcnR1
YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQp
OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9v
bCogd2FzRml4ZWQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCmluZGV4IDA5NzcwZWZiZjAyN2ZhYzll
YmE3ZGJjN2M0ZWE0MzdmNmFhMDEwYjkuLjRjOTA1ODBmMTM1OWJmNjgxYzc3M2FkNWQ4YmI4MTZj
ZWQ0MmE2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0lubGluZS5jcHAKQEAgLTgyLDkgKzgyLDkgQEAgdm9pZCBSZW5kZXJTVkdJbmxpbmU6Om1hcExv
Y2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIKICAg
ICBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKHRoaXMsIHJlcGFpbnRDb250
YWluZXIsIHVzZVRyYW5zZm9ybXMsIGZpeGVkLCB0cmFuc2Zvcm1TdGF0ZSwgd2FzRml4ZWQpOwog
fQogCi12b2lkIFJlbmRlclNWR0lubGluZTo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFk
PiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJTVkdJbmxpbmU6OmFic29sdXRl
UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsK
LSAgICBSZW5kZXJPYmplY3QqIG9iamVjdCA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNW
R1RleHRBbmNlc3Rvcih0aGlzKTsKKyAgICBjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCA9IFJl
bmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3Rvcih0aGlzKTsKICAgICBpZiAo
IW9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAppbmRleCAwYTYwODM3ZjQ3NzU5NjkwMzdlODQ5NzViY2Yy
MDA4MDY2YmI4MmY3Li5kMmZhMWNjNTI0MDI0YjYxYWE3ZDRhYTc3YTRlOGRkOGU1NjA4NDQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKQEAg
LTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
cikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQg
PSBmYWxzZSkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3Jtcywg
Ym9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0Owot
ICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCog
d2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgSW5s
aW5lRmxvd0JveCogY3JlYXRlSW5saW5lRmxvd0JveCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAppbmRleCAxNGMxZGI4
ZTBmOTNlYWY1NThhZWVjODkyYTg3MjMyM2NkMTBkNzIzLi5mYmU0OTNiNTRkY2RlYzFjNTc2N2E0
NzhhYTY2Mzg2YTU0MDM0YmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcApAQCAtNzAsMTMgKzcwLDEzIEBAIExheW91
dFJlY3QgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByCiAgICAgcmV0dXJuIGNvbnRhaW5lclJlbGF0aXZlUXVhZC5lbmNs
b3NpbmdCb3VuZGluZ0JveCgpOwogfQogCi12b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNv
bHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JikKK3ZvaWQg
UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+Jiwg
Y29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdAogewogICAgIC8vIFRoaXMgY29kZSBwYXRoIHNob3Vs
ZCBuZXZlciBiZSB0YWtlbiBmb3IgU1ZHLCBhcyB3ZSdyZSBhc3N1bWluZyB1c2VUcmFuc2Zvcm1z
PXRydWUgZXZlcnl3aGVyZSwgYWJzb2x1dGVRdWFkcyBzaG91bGQgYmUgdXNlZC4KICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1
dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBS
ZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVh
ZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIHF1YWRzLmFwcGVuZChsb2NhbFRvQWJz
b2x1dGVRdWFkKHN0cm9rZUJvdW5kaW5nQm94KCksIGZhbHNlLCB3YXNGaXhlZCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5o
CmluZGV4IGMyOGQzYzY2MDdkNTU0ZWEyMGMyYmE1YzVhZWVlZGNjMmRlNzNiNzkuLjcwNDFkNDQ5
ZWY2MzJjNGZjMzAwOTI2MGY5MmMwMDAzYjAxMGQ3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKQEAgLTU1LDggKzU1LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVk
ID0gZmFsc2UpIGNvbnN0OwogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9y
UmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UG9p
bnQqKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlv
dXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7Ci0gICAgdmly
dHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhl
ZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+Jiwg
Y29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBj
b25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4
ZWQsIFRyYW5zZm9ybVN0YXRlJiwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5
bGUqIG5ld1N0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RleHQuY3BwCmluZGV4IGFmNDM5YjVkMzhmMDg0ZjAyYTkyMWIyYmFmYTBkOWIxYWJkNDcwODEu
LjJhN2Q4MGNmMmVmNTIxYTk0ZmJkOTc3MjIwYjFlNGVlMTI1ZDYwZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAtMjI1LDcgKzIyNSw3
IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJTVkdUZXh0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0
IExheW91dFBvaW50JiBwb2ludEluQ29udGVuCiAgICAgcmV0dXJuIGNsb3Nlc3RCb3gtPnJlbmRl
cmVyKCktPnBvc2l0aW9uRm9yUG9pbnQoTGF5b3V0UG9pbnQocG9pbnRJbkNvbnRlbnRzLngoKSwg
Y2xvc2VzdEJveC0+eSgpKSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHVGV4dDo6YWJzb2x1dGVRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJT
VkdUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2Fz
Rml4ZWQpIGNvbnN0CiB7CiAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1YWQoc3Ry
b2tlQm91bmRpbmdCb3goKSwgZmFsc2UsIHdhc0ZpeGVkKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCmluZGV4IGIzZTBmNDNmOGY2NDljN2ZhNjdl
MGI4NDIwMzY3YWYwZDZlOTJkM2UuLmEwYWRhNGNiNGVmZTk4MGNhYmUyN2E5ZmE1MDRiYWEzOTAx
ODlkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5o
CkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5
ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9v
bCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0
IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0Jiwg
Ym9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAppbmRleCBkNjRkMGI3YzQ3NjhmMTNjZWJiMDhjYWVkMzgxMDRjMjhhYmRlYWQ2Li5kN2E4MTU0
MGZhMGVkY2QxYTlmYjM0MjU3MDk0ZGZmMDI1MmM1MDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCkBAIC0yMDgsNyArMjA4LDcgQEAgUGFzc1JlZlB0cjxDbGllbnRSZWN0PiBJ
bnRlcm5hbHM6OmJvdW5kaW5nQm94KEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGUK
ICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKICAgICBp
ZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKCk7Ci0gICAg
cmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZShyZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3QoKSk7CisgICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZShyZW5kZXJlci0+YWJzb2x1dGVC
b3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKSk7CiB9CiAKIHVuc2lnbmVkIEludGVy
bmFsczo6bWFya2VyQ291bnRGb3JOb2RlKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKaW5kZXggNWYxMmUxMDE0MzlmNWZiZjBkNmNkY2Ix
MDM0MTE3MDYxYjU5MjdmNC4uMDdmMmRmOTg3ZDJjZmY1NmRmYzhkODdkN2E1Y2FiYjVjMTk2NmUx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC0xNzUxLDcgKzE3NTEsNyBAQCBR
V2ViSGl0VGVzdFJlc3VsdFByaXZhdGU6OlFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZShjb25zdCBX
ZWJDb3JlOjpIaXRUZXN0UmVzdWx0CiAgICAgaW1hZ2VVcmwgPSBoaXRUZXN0LmFic29sdXRlSW1h
Z2VVUkwoKTsKICAgICBpbm5lck5vZGUgPSBoaXRUZXN0LmlubmVyTm9kZSgpOwogICAgIGlubmVy
Tm9uU2hhcmVkTm9kZSA9IGhpdFRlc3QuaW5uZXJOb25TaGFyZWROb2RlKCk7Ci0gICAgYm91bmRp
bmdSZWN0ID0gaW5uZXJOb25TaGFyZWROb2RlID8gaW5uZXJOb25TaGFyZWROb2RlLT5yZW5kZXJl
cigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCh0cnVlKSA6IEludFJlY3QoKTsKKyAgICBib3Vu
ZGluZ1JlY3QgPSBpbm5lck5vblNoYXJlZE5vZGUgPyBpbm5lck5vblNoYXJlZE5vZGUtPnJlbmRl
cmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkgOiBJbnRSZWN0KCk7CiAgICAgV2ViQ29y
ZTo6SW1hZ2UgKmltZyA9IGhpdFRlc3QuaW1hZ2UoKTsKICAgICBpZiAoaW1nKSB7CiAgICAgICAg
IFFQaXhtYXAgKnBpeCA9IGltZy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109183</attachid>
            <date>2011-09-29 12:01:16 -0700</date>
            <delta_ts>2011-09-29 13:31:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69009-20110929150114.patch</filename>
            <type>text/plain</type>
            <size>45093</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYzMjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNzY3ZmRjYzQyMjFhNmRi
MzQyNWVmNmMyZTRiNTlmMGEzMjU0MDU4Li5hNzBhMDVmNTBmZTA3Y2U0N2ZlODAyN2U0MTYzMWNj
MmMxMjlhYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODggQEAKKzIwMTEtMDktMjkgIEZhZHkg
U2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDog
TWFrZSBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVk
IG1ldGhvZHMgY29uc3QgYW5kIG1ha2UgaXRzIHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxv
bmdlciBkZWZhdWx0IHRvIGZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02OTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVwY29taW5nIHBhdGNoZXMgbWF5IG1ha2UgdXNlIG9mIGFic29sdXRlQm91
bmRpbmdCb3hSZWN0IG9uIGEgY29uc3QgUmVuZGVyT2JqZWN0LCBzbyB0aGlzIG5lZWRlZCB0byBi
ZSBmaXhlZC4KKyAgICAgICAgTWFraW5nIHVzZVRyYW5zZm9ybXMgZGVmYXVsdCB0byB0cnVlIGlu
c3RlYWQgb2YgZmFsc2UgYW5kIHJlcGxhY2luZyBpbnN0YW5jZXMgb2YgYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoKSB0bworICAgICAgICBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJh
bnNmb3JtcygpIHBhcnRpYWxseSBhZGRyZXNlcyAvLyBGSVhNRTogdXNlVHJhbnNmb3JtcyBzaG91
bGQgZ28gYXdheSBldmVudHVhbGx5LgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAg
ICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2NyZWVu
UmVjdCk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
Z2V0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZW5kZXJSZWN0KToKKyAgICAgICAg
KiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2xpZGVyVGh1bWJFbGVtZW50OjpzZXRQb3NpdGlvbkZyb21Qb2ludCk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzdGFydFNwZWVjaElucHV0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcDoKKyAgICAgICAgKiBwbHVnaW5z
L0lGcmFtZVNoaW1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFBsdWdpbk9jY2x1
c2lvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
RnJhbWU6OmZsYXR0ZW5GcmFtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRlUXVhZHMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6OnNob3dQ
b3B1cCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWRkQWJzb2x1dGVSZWN0Rm9yTGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpwYWludGluZ1Jvb3RSZWN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0
ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmFic29sdXRlUmVjdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZTo6c2hvd1BvcHVwKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVT
YWZhcmkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2Vh
cmNoRmllbGRDYW5jZWxCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZh
cmk6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clZpZXc6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6YWJz
b2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR0Jsb2NrOjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0Jsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5D
b250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVy
OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRl
bkNvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6YWJzb2x1dGVRdWFkcyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmFic29sdXRl
UXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
Ym91bmRpbmdCb3gpOgorCiAyMDExLTA5LTI5ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1ha2Ugc2VhcmNoLWluLXJlc291
cmNlIHRlc3Qgc2ltcGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNDcwNDFiMDAwODcyZWRj
M2ViNDU4ZWU5ZjhjOTdiMjMwYzhlZGEyYS4uMzExYTZkNzRmZWQ4M2U5ODU1MTk2MzI0Zjg0ZGIw
NmNiZTE4NzNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTI4Myw3ICsyODMsNiBAQCBfX1pO
N1dlYkNvcmUxMlByaW50Q29udGV4dDlzcG9vbFJlY3RFUk5TXzE1R3JhcGhpY3NDb250ZXh0RVJL
TlNfN0ludFJlY3RFCiBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dEMxRVBOU181RnJhbWVFCiBf
X1pON1dlYkNvcmUxMlByaW50Q29udGV4dEQxRXYKIF9fWk43V2ViQ29yZTEyUmVuZGVyT2JqZWN0
MTZyZXBhaW50UmVjdGFuZ2xlRVJLTlNfN0ludFJlY3RFYgotX19aTjdXZWJDb3JlMTJSZW5kZXJP
YmplY3QyM2Fic29sdXRlQm91bmRpbmdCb3hSZWN0RWIKIF9fWk43V2ViQ29yZTEyUmVuZGVyV2lk
Z2V0MjhyZXN1bWVXaWRnZXRIaWVyYXJjaHlVcGRhdGVzRXYKIF9fWk43V2ViQ29yZTEyUmVuZGVy
V2lkZ2V0MjlzdXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlc0V2CiBfX1pON1dlYkNvcmUxMlNo
YXJlZEJ1ZmZlcjEwd3JhcE5TRGF0YUVQNk5TRGF0YQpAQCAtMTExMiw2ICsxMTExLDcgQEAgX19a
Tks3V2ViQ29yZTExU2NyaXB0VmFsdWU5Z2V0U3RyaW5nRVBOM0pTQzlFeGVjU3RhdGVFUk4zV1RG
NlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTEyZGF0YWJhc2VQYXRoRXYKIF9f
Wk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTI0c2hvdWxkU3RvcFRocmVhZEFjdGl2aXR5RXYKIF9f
Wk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTlpc0VuYWJsZWRFdgorX19aTks3V2ViQ29yZTEyUmVu
ZGVyT2JqZWN0MjNhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEViCiBfX1pOSzdXZWJDb3JlMTJSZW5k
ZXJPYmplY3QxNGVuY2xvc2luZ0xheWVyRXYKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDE1
bG9jYWxUb0Fic29sdXRlRVJLTlNfMTBGbG9hdFBvaW50RWJiCiBfX1pOSzdXZWJDb3JlMTJSZW5k
ZXJPYmplY3Q0dmlld0V2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYjE2NjIzYmFhYzkzMTAx
YjEzYzIzNGQ0MzM0NTY3YmUyZTY3ZTYwZS4uZTgwMzNlMzUyZDM3YWYzYjdiMDBjMjI3ZWU3MzJj
YjRkMGJkZjQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNTczLDcgKzU3Myw4IEBAIExh
eW91dFJlY3QgRWxlbWVudDo6c2NyZWVuUmVjdCgpIGNvbnN0CiB7CiAgICAgaWYgKCFyZW5kZXJl
cigpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwotICAgIHJldHVybiByZW5kZXJlcigp
LT52aWV3KCktPmZyYW1lVmlldygpLT5jb250ZW50c1RvU2NyZWVuKHJlbmRlcmVyKCktPmFic29s
dXRlQm91bmRpbmdCb3hSZWN0KCkpOworICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBwcm9iYWJs
eSByZXNwZWN0IHRyYW5zZm9ybXMKKyAgICByZXR1cm4gcmVuZGVyZXIoKS0+dmlldygpLT5mcmFt
ZVZpZXcoKS0+Y29udGVudHNUb1NjcmVlbihyZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNob3Vs
ZElnbm9yZUF0dHJpYnV0ZUNhc2UoY29uc3QgRWxlbWVudCogZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRl
eCBiMzM2MzQ5MTM3YWZkNDk2MjJjNjNkZGE2Yjg0ODZlZjZhYTQwYTRiLi40MWMyOWQ0MDBkNjY4
OWM3ZmE0MmUwYWRmYTcyMzc2NTUxMjQyYzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC04MjMsNyAr
ODIzLDcgQEAgUmVuZGVyQm94TW9kZWxPYmplY3QqIE5vZGU6OnJlbmRlckJveE1vZGVsT2JqZWN0
KCkgY29uc3QKIExheW91dFJlY3QgTm9kZTo6Z2V0UmVjdCgpIGNvbnN0CiB7CiAgICAgaWYgKHJl
bmRlcmVyKCkpCi0gICAgICAgIHJldHVybiByZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCh0cnVlKTsKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdC
b3hSZWN0KCk7CiAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKIH0KICAgICAKQEAgLTgzNSw3ICs4
MzUsNyBAQCBMYXlvdXRSZWN0IE5vZGU6OnJlbmRlclJlY3QoYm9vbCogaXNSZXBsYWNlZCkKICAg
ICB3aGlsZSAocmVuZGVyZXIgJiYgIXJlbmRlcmVyLT5pc0JvZHkoKSAmJiAhcmVuZGVyZXItPmlz
Um9vdCgpKSB7CiAgICAgICAgIGlmIChyZW5kZXJlci0+aXNSZW5kZXJCbG9jaygpIHx8IHJlbmRl
cmVyLT5pc0lubGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpIHx8IHJlbmRlcmVyLT5pc1JlcGxhY2Vk
KCkpIHsKICAgICAgICAgICAgICppc1JlcGxhY2VkID0gcmVuZGVyZXItPmlzUmVwbGFjZWQoKTsK
LSAgICAgICAgICAgIHJldHVybiByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QodHJ1
ZSk7CisgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0
KCk7CiAgICAgICAgIH0KICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVu
dC5jcHAKaW5kZXggNWQxNzhhZjA3OWFiNGNmYmQ5ZDBmNzIwNDNmYWYzZDg3YzQ4YmNiOC4uZmM4
MjM3Y2U1MDMzYWE3NjgyZWM3NzhjZDI3MjMyZDFlNDhiYzA5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCkBAIC00MCw2ICs0MCw3
IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQu
aCIKICNpbmNsdWRlICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaCIKKyNpbmNsdWRlICJS
ZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJTbGlkZXIuaCIKICNpbmNsdWRlICJSZW5k
ZXJUaGVtZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKQEAgLTIxNiw3ICsyMTcsOCBAQCB2
b2lkIFNsaWRlclRodW1iRWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tUG9pbnQoY29uc3QgTGF5b3V0
UG9pbnQmIHBvaW50KQogICAgIC8vIFdlIG5lZWQgdG8gY2FsY3VsYXRlIGN1cnJlbnRQb3NpdGlv
biBmcm9tIGFic29sdXRlIHBvaW50cyBiZWNhdWUgdGhlCiAgICAgLy8gcmVuZGVyZXIgZm9yIHRo
aXMgbm9kZSBpcyB1c3VhbGx5IG9uIGEgbGF5ZXIgYW5kIHJlbmRlckJveCgpLT54KCkgYW5kCiAg
ICAgLy8geSgpIGFyZSB1bnVzYWJsZS4KLSAgICBMYXlvdXRQb2ludCBhYnNvbHV0ZVRodW1iT3Jp
Z2luID0gcmVuZGVyQm94KCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkubG9jYXRpb24oKTsK
KyAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgcHJvYmFibHkgcmVzcGVjdCB0cmFuc2Zvcm1zIAor
ICAgIExheW91dFBvaW50IGFic29sdXRlVGh1bWJPcmlnaW4gPSByZW5kZXJCb3goKS0+YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKS5sb2NhdGlvbigpOwogICAgIExh
eW91dFBvaW50IGFic29sdXRlU2xpZGVyQ29udGVudE9yaWdpbiA9IHJvdW5kZWRMYXlvdXRQb2lu
dChpbnB1dC0+cmVuZGVyZXIoKS0+bG9jYWxUb0Fic29sdXRlKCkpOwogICAgIGlmIChpc1ZlcnRp
Y2FsKSB7CiAgICAgICAgIHRyYWNrU2l6ZSA9IGlucHV0LT5yZW5kZXJCb3goKS0+Y29udGVudEhl
aWdodCgpIC0gcmVuZGVyQm94KCktPmhlaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggYmYxODVj
ZjdiMGYwOTZiOTNjODg4MzIwNmJhMzM3NGQwNDkzNDVkNS4uMGJkZGMyMDQwNDNkZDUzYmVkNmE4
MDQwYWNiZmNiOGJjZmMyMDc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAj
aW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5k
ZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgpAQCAtNTM1LDcgKzUzNiw4IEBAIHZvaWQgSW5wdXRG
aWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OnN0YXJ0U3BlZWNoSW5wdXQoKQogICAgIFJlZlB0cjxI
VE1MSW5wdXRFbGVtZW50PiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihz
aGFkb3dBbmNlc3Rvck5vZGUoKSk7CiAgICAgQXRvbWljU3RyaW5nIGxhbmd1YWdlID0gaW5wdXQt
PmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpOwogICAgIFN0cmluZyBncmFtbWFyID0gaW5wdXQt
PmdldEF0dHJpYnV0ZSh3ZWJraXRncmFtbWFyQXR0cik7Ci0gICAgSW50UmVjdCByZWN0ID0gcmVu
ZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICAvLyBGSVhNRTogdGhpcyBz
aG91bGQgcHJvYmFibHkgcmVzcGVjdCB0cmFuc2Zvcm1zCisgICAgSW50UmVjdCByZWN0ID0gcmVu
ZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKICAg
ICBpZiAoc3BlZWNoSW5wdXQoKS0+c3RhcnRSZWNvZ25pdGlvbihtX2xpc3RlbmVySWQsIHJlY3Qs
IGxhbmd1YWdlLCBncmFtbWFyLCBkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKICAgICAg
ICAgc2V0U3RhdGUoUmVjb3JkaW5nKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0RPTU5vZGVIaWdobGlnaHRlci5jcHAKaW5kZXggZTY4OWI1MjUwYjZhODY4ZWE1YTU1MGQ2ZGFh
YmEyOTQ1YTc4ZjY5ZC4uZjhiZmI2MGY5YWRlZDIwYjJlMTA2ODBhMDhjOTY0Mjg0ZGE4NGY1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAK
QEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgSGlnaGxpZ2h0RGF0YSogaGlnaGxpZ2h0RGF0YSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgTGF5b3V0U2l6ZSBtYWluRnJhbWVPZmZzZXQgPSBmcmFtZVRvTWFpbkZyYW1lT2Zm
c2V0KGNvbnRhaW5pbmdGcmFtZSk7Ci0gICAgTGF5b3V0UmVjdCBib3VuZGluZ0JveCA9IHJlbmRl
cmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCh0cnVlKTsKKyAgICBMYXlvdXRSZWN0IGJvdW5k
aW5nQm94ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CiAKICAgICBib3Vu
ZGluZ0JveC5tb3ZlKG1haW5GcmFtZU9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9JRnJhbWVTaGltU3VwcG9ydC5jcHAKaW5kZXggYzBhYTFlNDEzNmM0OTQyZjI5YWY4ODRmMzIx
Njg4NWM3YWM1NWI3OS4uODI2NTc2NTExMGFlNTQ2OGQwMzA1ZjNlZmIwNDZkMjVhZGQ3ZmVmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9JRnJhbWVTaGltU3VwcG9ydC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9JRnJhbWVTaGltU3VwcG9ydC5jcHAKQEAgLTE1
Miw3ICsxNTIsNyBAQCB2b2lkIGdldFBsdWdpbk9jY2x1c2lvbnMoRWxlbWVudCogZWxlbWVudCwg
V2lkZ2V0KiBwYXJlbnRXaWRnZXQsIGNvbnN0IEludFJlY3QmCiAgICAgICAgIFJlbmRlck9iamVj
dCogaWZyYW1lUmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOwogCiAgICAgICAgIGlmIChl
bGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aWZyYW1lVGFnKQotICAgICAgICAgICAgJiYg
aWZyYW1lUmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkuaW50ZXJzZWN0cyhmcmFt
ZVJlY3QpCisgICAgICAgICAgICAmJiBpZnJhbWVSZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKS5pbnRlcnNlY3RzKGZyYW1lUmVjdCkKICAgICAgICAg
ICAgICYmICghaWZyYW1lUmVuZGVyZXItPnN0eWxlKCkgfHwgaWZyYW1lUmVuZGVyZXItPnN0eWxl
KCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSkgewogICAgICAgICAgICAgZ2V0T2JqZWN0U3Rh
Y2soaWZyYW1lUmVuZGVyZXIsICZpZnJhbWVac3RhY2spOwogICAgICAgICAgICAgaWYgKGlmcmFt
ZUlzQWJvdmVQbHVnaW4oaWZyYW1lWnN0YWNrLCBwbHVnaW5ac3RhY2spKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA0NjUxNTRjY2I4YWJlMTQxZTg5YWRh
MzMxZTAyZTMwYWMzNGUwMzgxLi4yYWNlNDhmYWQzZTdiYzQ4NGVkZDc3YjVlY2Q3ODM2NTgwNDg4
ZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTU4NDMs
NyArNTg0Myw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnNldFBhZ2VMb2dpY2FsT2Zmc2V0KGludCBs
b2dpY2FsT2Zmc2V0KQogICAgIG1fcmFyZURhdGEtPm1fcGFnZUxvZ2ljYWxPZmZzZXQgPSBsb2dp
Y2FsT2Zmc2V0OwogfQogCi12b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxM
YXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkK
K3ZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0
cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewogICAgIC8v
IEZvciBibG9ja3MgaW5zaWRlIGlubGluZXMsIHdlIGdvIGFoZWFkIGFuZCBpbmNsdWRlIG1hcmdp
bnMgc28gdGhhdCB3ZSBydW4gcmlnaHQgdXAgdG8gdGhlCiAgICAgLy8gaW5saW5lIGJveGVzIGFi
b3ZlIGFuZCBiZWxvdyB1cyAodGh1cyBnZXR0aW5nIG1lcmdlZCB3aXRoIHRoZW0gdG8gZm9ybSBh
IHNpbmdsZSBpcnJlZ3VsYXIKQEAgLTU4NTksNyArNTg1OSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6
OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9p
bnQmIGFjCiAgICAgICAgIHJlY3RzLmFwcGVuZChMYXlvdXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0
LCBzaXplKCkpKTsKIH0KIAotdm9pZCBSZW5kZXJCbG9jazo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJCbG9jazo6YWJz
b2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25z
dAogewogICAgIC8vIEZvciBibG9ja3MgaW5zaWRlIGlubGluZXMsIHdlIGdvIGFoZWFkIGFuZCBp
bmNsdWRlIG1hcmdpbnMgc28gdGhhdCB3ZSBydW4gcmlnaHQgdXAgdG8gdGhlCiAgICAgLy8gaW5s
aW5lIGJveGVzIGFib3ZlIGFuZCBiZWxvdyB1cyAodGh1cyBnZXR0aW5nIG1lcmdlZCB3aXRoIHRo
ZW0gdG8gZm9ybSBhIHNpbmdsZSBpcnJlZ3VsYXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmgKaW5kZXggMDk3NzI3ZThiNTM1ODJmY2FiN2NkOTMyZTY0YTk3MDdmZjllZDY4NC4u
ZjgxYjJmZTYxNzE2YjlhMGM5NmQ5NzA3NjYwNWM3NDdiOGRmYzU3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTY4Miw4ICs2ODIsOCBAQCBwcml2YXRlOgogICAg
IExheW91dFVuaXQgbG9naWNhbExlZnRTZWxlY3Rpb25PZmZzZXQoUmVuZGVyQmxvY2sqIHJvb3RC
bG9jaywgTGF5b3V0VW5pdCBwb3NpdGlvbik7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRT
ZWxlY3Rpb25PZmZzZXQoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgTGF5b3V0VW5pdCBwb3NpdGlv
bik7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJl
Y3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKLSAgICB2aXJ0dWFs
IHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsK
KyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25z
dCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0
OwogCiAgICAgTGF5b3V0VW5pdCBkZXNpcmVkQ29sdW1uV2lkdGgoKSBjb25zdDsKICAgICB1bnNp
Z25lZCBkZXNpcmVkQ29sdW1uQ291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKaW5kZXggNWM4YmVlOTI1YzNhZjk3YjRiMzJmY2VlMDZhOTA5YjkxOWQzOTJm
MS4uM2I0OTMzMDgxNmU3MjUzZDE3MGFlYzUzZjQ3NDY2ZGVjZTEyOTkzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTQ2NiwxMiArNDY2LDEyIEBAIHZvaWQgUmVu
ZGVyQm94OjpzZXRTY3JvbGxUb3AoTGF5b3V0VW5pdCBuZXdUb3ApCiAgICAgICAgIGxheWVyKCkt
PnNjcm9sbFRvWU9mZnNldChuZXdUb3AsIFJlbmRlckxheWVyOjpTY3JvbGxPZmZzZXRDbGFtcGVk
KTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiBy
ZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KQordm9pZCBSZW5kZXJC
b3g6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewogICAgIHJlY3RzLmFwcGVuZChMYXlvdXRS
ZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBzaXplKCkpKTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OmFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkKK3Zv
aWQgUmVuZGVyQm94OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9v
bCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1
YWQoRmxvYXRSZWN0KDAsIDAsIHdpZHRoKCksIGhlaWdodCgpKSwgZmFsc2UsIHdhc0ZpeGVkKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggNDVkNDQ2MGVlNDg1YzNh
MTg1NGY5MzYwZjZlODRkY2Q1NTc0YWRlZi4uOGM2MjRmZGQ0ZTZhZjA5ZmUxNjE1OWUyZGQ3ZTk0
ZWYyZDlhNGVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMjMyLDgg
KzIzMiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFVuaXQgY29sbGFwc2VkTWFyZ2lu
QmVmb3JlKCkgY29uc3QgeyByZXR1cm4gbWFyZ2luQmVmb3JlKCk7IH0KICAgICB2aXJ0dWFsIExh
eW91dFVuaXQgY29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBtYXJnaW5BZnRl
cigpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAg
IHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91
dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAgICAg
CiAgICAgSW50UmVjdCByZWZsZWN0aW9uQm94KCkgY29uc3Q7CiAgICAgaW50IHJlZmxlY3Rpb25P
ZmZzZXQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2wuY3BwCmluZGV4IGY5NDQ5MWYzMWM1YThlNWZkMjAyMjQ1MDE5NTRl
NGI0NmVmMDg0NjYuLjAxY2VlYWZmY2IwZmU1OWJlNTQxZmY0ZjJhZTM4MDhiMWU4M2E1ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJv
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250
cm9sLmNwcApAQCAtMTMyLDcgKzEzMiw4IEBAIHZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6
OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2luCiAgICAg
ICAgICAgICB0ZXh0WCA9IGNvbnRlbnRMZWZ0ICsgY29udGVudFdpZHRoKCkgLSBidXR0b25BbmRJ
Y29uV2lkdGggLSBmb250LndpZHRoKHRleHRSdW4pOwogICAgICAgICAvLyBXZSB3YW50IHRvIG1h
dGNoIHRoZSBidXR0b24ncyBiYXNlbGluZQogICAgICAgICBSZW5kZXJCdXR0b24qIGJ1dHRvblJl
bmRlcmVyID0gdG9SZW5kZXJCdXR0b24oYnV0dG9uLT5yZW5kZXJlcigpKTsKLSAgICAgICAgTGF5
b3V0VW5pdCB0ZXh0WSA9IGJ1dHRvblJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgp
LnkoKQorICAgICAgICAvLyBGSVhNRTogbWFrZSB0aGlzIHdvcmsgd2l0aCB0cmFuc2Zvcm1zLgor
ICAgICAgICBMYXlvdXRVbml0IHRleHRZID0gYnV0dG9uUmVuZGVyZXItPmFic29sdXRlQm91bmRp
bmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkueSgpCiAgICAgICAgICAgICArIGJ1dHRvblJl
bmRlcmVyLT5iYXNlbGluZVBvc2l0aW9uKEFscGhhYmV0aWNCYXNlbGluZSwgdHJ1ZSwgSG9yaXpv
bnRhbExpbmUsIFBvc2l0aW9uT25Db250YWluaW5nTGluZSk7CiAKICAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPnNldEZpbGxDb2xvcihzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlDb2xvciksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCmluZGV4IDExMjk3YjVkYjdhOWY3YTJkMDllNDY1OTQz
YzQ4N2UxODZmMTVhZDAuLmNlMGY0M2JkMDMwNDE1MWE0MDgzYjBhMDIwYTllMmVkOTYxYjEzZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCkBAIC0xMDUsNyAr
MTA1LDcgQEAgYm9vbCBSZW5kZXJJRnJhbWU6OmZsYXR0ZW5GcmFtZSgpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIC8vIERvIG5vdCBmbGF0dGVuIG9mZnNjcmVlbiBpbm5lciBmcmFtZXMg
ZHVyaW5nIGZyYW1lIGZsYXR0ZW5pbmcsIGFzIGZsYXR0ZW5pbmcgbWlnaHQgbWFrZSB0aGVtIHZp
c2libGUuCi0gICAgSW50UmVjdCBib3VuZGluZ1JlY3QgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dCgpOworICAgIEludFJlY3QgYm91bmRpbmdSZWN0ID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJ
Z25vcmluZ1RyYW5zZm9ybXMoKTsKICAgICByZXR1cm4gYm91bmRpbmdSZWN0Lm1heFgoKSA+IDAg
JiYgYm91bmRpbmdSZWN0Lm1heFkoKSA+IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAKaW5kZXggNmNhOWQzZmIxZTkyZDAyY2JjOTBiYTRkYzMzYmExOWJk
ODRiMjgwNC4uM2YwOTYzM2IwMDhkOTU2ZmExZjdlMjE4MmUzMGM0ZGQyMDVhYzNhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTQ2Niw3ICs0NjYsNyBA
QCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICBtX2xpbmVCb3hlcy5wYWludCh0aGlzLCBwYWlu
dEluZm8sIHBhaW50T2Zmc2V0KTsKIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVj
dHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0KQordm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91
dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25z
dAogewogICAgIGlmICghYWx3YXlzQ3JlYXRlTGluZUJveGVzKCkpCiAgICAgICAgIGN1bGxlZElu
bGluZUFic29sdXRlUmVjdHModGhpcywgcmVjdHMsIHRvTGF5b3V0U2l6ZShhY2N1bXVsYXRlZE9m
ZnNldCkpOwpAQCAtNDg1LDcgKzQ4NSw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVJl
Y3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhCiAgICAg
fQogfQogCi12b2lkIFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25z
dCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29u
c3QgTGF5b3V0U2l6ZSYgb2Zmc2V0KQordm9pZCBSZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUFi
c29sdXRlUmVjdHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxMYXlvdXRS
ZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFNpemUmIG9mZnNldCkgY29uc3QKIHsKICAgICBpZiAo
IWN1bGxlZElubGluZUZpcnN0TGluZUJveCgpKSB7CiAgICAgICAgIHJlY3RzLmFwcGVuZChJbnRS
ZWN0KG9mZnNldC53aWR0aCgpLCBvZmZzZXQuaGVpZ2h0KCksIDAsIDApKTsKQEAgLTU1Myw3ICs1
NTMsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25z
dCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJJ
bmxpbmU6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNG
aXhlZCkKK3ZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKCFhbHdheXNDcmVhdGVM
aW5lQm94ZXMoKSkKICAgICAgICAgY3VsbGVkSW5saW5lQWJzb2x1dGVRdWFkcyh0aGlzLCBxdWFk
cyk7CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkKICAgICAgICAgY29udGlu
dWF0aW9uKCktPmFic29sdXRlUXVhZHMocXVhZHMsIHdhc0ZpeGVkKTsKIH0KIAotdm9pZCBSZW5k
ZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRlUXVhZHMoY29uc3QgUmVuZGVySW5saW5lKiBj
b250YWluZXIsIFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykKK3ZvaWQgUmVuZGVySW5saW5lOjpj
dWxsZWRJbmxpbmVBYnNvbHV0ZVF1YWRzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBW
ZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpIGNvbnN0CiB7CiAgICAgaWYgKCFjdWxsZWRJbmxpbmVG
aXJzdExpbmVCb3goKSkgewogICAgICAgICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVh
ZChGbG9hdFJlY3QoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmlu
ZGV4IGFmZDRhYWQ0NDhiMGU4MTgxOTMyOWVhMGFhNjg2ZTViMDljZWI2NjcuLmZlOTVhZjFmZTE4
NzU0MjY1YmE5NzkwOWY3ZWRiNmViM2U3M2FlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmgKQEAgLTQ2LDggKzQ2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5
b3V0VW5pdCBtYXJnaW5TdGFydCgpIGNvbnN0OwogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJn
aW5FbmQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxM
YXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7Ci0gICAg
dmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNG
aXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+
JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKKyAgICB2aXJ0
dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVk
KSBjb25zdDsKIAogICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJl
bmRlck9iamVjdCosIGNvbnN0IExheW91dFBvaW50JikgY29uc3Q7CiAKQEAgLTEwMiw4ICsxMDIs
OCBAQCBwcml2YXRlOgogICAgIExheW91dFJlY3QgY3VsbGVkSW5saW5lVmlzdWFsT3ZlcmZsb3dC
b3VuZGluZ0JveCgpIGNvbnN0OwogICAgIElubGluZUJveCogY3VsbGVkSW5saW5lRmlyc3RMaW5l
Qm94KCkgY29uc3Q7CiAgICAgSW5saW5lQm94KiBjdWxsZWRJbmxpbmVMYXN0TGluZUJveCgpIGNv
bnN0OwotICAgIHZvaWQgY3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25zdCBSZW5kZXJJbmxp
bmUqIGNvbnRhaW5lciwgVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0U2l6ZSYpOwot
ICAgIHZvaWQgY3VsbGVkSW5saW5lQWJzb2x1dGVRdWFkcyhjb25zdCBSZW5kZXJJbmxpbmUqIGNv
bnRhaW5lciwgVmVjdG9yPEZsb2F0UXVhZD4mKTsKKyAgICB2b2lkIGN1bGxlZElubGluZUFic29s
dXRlUmVjdHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxMYXlvdXRSZWN0
PiYsIGNvbnN0IExheW91dFNpemUmKSBjb25zdDsKKyAgICB2b2lkIGN1bGxlZElubGluZUFic29s
dXRlUXVhZHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxGbG9hdFF1YWQ+
JikgY29uc3Q7CiAKICAgICB2b2lkIGFkZENoaWxkVG9Db250aW51YXRpb24oUmVuZGVyT2JqZWN0
KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7CiAgICAgdmlydHVhbCB2b2lk
IGFkZENoaWxkSWdub3JpbmdDb250aW51YXRpb24oUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggODk3YWE4OGVhZjFlYTJhNDZlZDEzNmY1MGY3YzYyNjIz
OTEzOWUwMS4uOWJhM2I1ZTdhMTk3MmNjODRmYzM1NDY0ZGMzZjVkYzIxZGE3NTRhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC0zMDIsNyArMzAy
LDcgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6c2hvd1BvcHVwKCkKICAgICAvLyBDb21wdXRlIHRo
ZSB0b3AgbGVmdCB0YWtpbmcgdHJhbnNmb3JtcyBpbnRvIGFjY291bnQsIGJ1dCB1c2UKICAgICAv
LyB0aGUgYWN0dWFsIHdpZHRoIG9mIHRoZSBlbGVtZW50IHRvIHNpemUgdGhlIHBvcHVwLgogICAg
IEZsb2F0UG9pbnQgYWJzVG9wTGVmdCA9IGxvY2FsVG9BYnNvbHV0ZShGbG9hdFBvaW50KCksIGZh
bHNlLCB0cnVlKTsKLSAgICBMYXlvdXRSZWN0IGFic0JvdW5kcyA9IGFic29sdXRlQm91bmRpbmdC
b3hSZWN0KCk7CisgICAgTGF5b3V0UmVjdCBhYnNCb3VuZHMgPSBhYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOwogICAgIGFic0JvdW5kcy5zZXRMb2NhdGlvbihyb3Vu
ZGVkSW50UG9pbnQoYWJzVG9wTGVmdCkpOwogICAgIG1fcG9wdXAtPnNob3coYWJzQm91bmRzLCBk
b2N1bWVudCgpLT52aWV3KCksCiAgICAgICAgIHNlbGVjdC0+b3B0aW9uVG9MaXN0SW5kZXgoc2Vs
ZWN0LT5zZWxlY3RlZEluZGV4KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKaW5kZXggYTQ1ZTYwZDg2NWRmMGE1NjExYTAxNjI2ZDBhZGVhNTZiMWQ3YmY5NC4u
OTQ5NWUzNDkxMmVlYjQ4Yzc4YmE1NTVhNDE2YmRmMDY2NTFiNTViOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTExNTUsNyArMTE1NSw3IEBAIHZvaWQg
UmVuZGVyT2JqZWN0OjpwYWludE91dGxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIGNvbnN0IExheW91dFJlCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZW5kVHJhbnNwYXJl
bmN5TGF5ZXIoKTsKIH0KIAotSW50UmVjdCBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdC
b3hSZWN0KGJvb2wgdXNlVHJhbnNmb3JtcykKK0ludFJlY3QgUmVuZGVyT2JqZWN0OjphYnNvbHV0
ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybXMpIGNvbnN0CiB7CiAgICAgaWYgKHVz
ZVRyYW5zZm9ybXMpIHsKICAgICAgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7CkBAIC0xMjA1
LDE0ICsxMjA1LDE0IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUZvY3VzUmluZ1F1YWRz
KFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykKIHZvaWQgUmVuZGVyT2JqZWN0OjphZGRBYnNvbHV0
ZVJlY3RGb3JMYXllcihJbnRSZWN0JiByZXN1bHQpCiB7CiAgICAgaWYgKGhhc0xheWVyKCkpCi0g
ICAgICAgIHJlc3VsdC51bml0ZShhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKKyAgICAgICAg
cmVzdWx0LnVuaXRlKGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkp
OwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJyZW50ID0gZmlyc3RDaGlsZCgpOyBjdXJyZW50
OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgY3VycmVudC0+YWRk
QWJzb2x1dGVSZWN0Rm9yTGF5ZXIocmVzdWx0KTsKIH0KIAogTGF5b3V0UmVjdCBSZW5kZXJPYmpl
Y3Q6OnBhaW50aW5nUm9vdFJlY3QoTGF5b3V0UmVjdCYgdG9wTGV2ZWxSZWN0KQogewotICAgIExh
eW91dFJlY3QgcmVzdWx0ID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBMYXlvdXRS
ZWN0IHJlc3VsdCA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7
CiAgICAgdG9wTGV2ZWxSZWN0ID0gcmVzdWx0OwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJy
ZW50ID0gZmlyc3RDaGlsZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxp
bmcoKSkKICAgICAgICAgY3VycmVudC0+YWRkQWJzb2x1dGVSZWN0Rm9yTGF5ZXIocmVzdWx0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBlY2Y1MjI3MjFhODBl
Y2NjN2YyNTM0ODczZWU5Mjg2MWQ1YTgxZmNhLi4wOGRhYjYzZWU0ZGZkMTJmN2E4NzI5ZWJjNWI1
ZGQzODIzMzU0ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBA
IC02MjEsMTIgKzYyMSwxNCBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJv
bSBhbiBvYmplY3QgdXAgdGhlIGNvbnRhaW5lcigpIGNoYWluLiBBc3NlcnRzIHRoYXQgbm9uZSBv
ZiB0aGUgaW50ZXJtZWRpYXRlIG9iamVjdHMgaGF2ZSB0cmFuc2Zvcm1zLgogICAgIExheW91dFNp
emUgb2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKFJlbmRlck9iamVjdCopIGNvbnN0OwogICAg
IAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNv
bnN0IExheW91dFBvaW50JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVj
dG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdCB7IH0KKwogICAgIC8v
IEZJWE1FOiB1c2VUcmFuc2Zvcm1zIHNob3VsZCBnbyBhd2F5IGV2ZW50dWFsbHkKLSAgICBJbnRS
ZWN0IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KGJvb2wgdXNlVHJhbnNmb3JtcyA9IGZhbHNlKTsK
KyAgICBJbnRSZWN0IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KGJvb2wgdXNlVHJhbnNmb3JtID0g
dHJ1ZSkgY29uc3Q7CisgICAgSW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5n
VHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIGFic29sdXRlQm91bmRpbmdCb3hSZWN0KGZhbHNl
KTsgfQogCiAgICAgLy8gQnVpbGQgYW4gYXJyYXkgb2YgcXVhZHMgaW4gYWJzb2x1dGUgY29vcmRz
IGZvciBsaW5lIGJveGVzCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZs
b2F0UXVhZD4mLCBib29sKiAvKndhc0ZpeGVkKi8gPSAwKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIC8qd2FzRml4ZWQqLyA9IDAp
IGNvbnN0IHsgfQogCiAgICAgdm9pZCBhYnNvbHV0ZUZvY3VzUmluZ1F1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCBl
ODg4NjFmM2QwNGEwODY4NDRkM2E3MGQyMTVhNDc0ZGU2ODkyNGM5Li42YjZkYTI0NDRlMTJjNzMy
NmYxOTZkNjRiODgxMjU4ODI3NGY5OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwCkBAIC0zMDEsNyArMzAxLDcgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBSZW5k
ZXJUZXh0OjpvcmlnaW5hbFRleHQoKSBjb25zdAogICAgIHJldHVybiAoZSAmJiBlLT5pc1RleHRO
b2RlKCkpID8gc3RhdGljX2Nhc3Q8VGV4dCo+KGUpLT5kYXRhSW1wbCgpIDogMDsKIH0KIAotdm9p
ZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNv
bnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkKK3ZvaWQgUmVuZGVyVGV4dDo6YWJz
b2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7CiAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3gg
PSBmaXJzdFRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpCiAgICAgICAg
IHJlY3RzLmFwcGVuZChlbmNsb3NpbmdMYXlvdXRSZWN0KEZsb2F0UmVjdChhY2N1bXVsYXRlZE9m
ZnNldCArIGJveC0+dG9wTGVmdCgpLCBib3gtPnNpemUoKSkpKTsKQEAgLTM4OCw3ICszODgsNyBA
QCBzdGF0aWMgSW50UmVjdCBlbGxpcHNpc1JlY3RGb3JCb3goSW5saW5lVGV4dEJveCogYm94LCB1
bnNpZ25lZCBzdGFydFBvcywgdW5zaWduZQogICAgIHJldHVybiBJbnRSZWN0KCk7CiB9CiAgICAg
Ci12b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRz
LCBib29sKiB3YXNGaXhlZCwgQ2xpcHBpbmdPcHRpb24gb3B0aW9uKQordm9pZCBSZW5kZXJUZXh0
OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQs
IENsaXBwaW5nT3B0aW9uIG9wdGlvbikgY29uc3QKIHsKICAgICBmb3IgKElubGluZVRleHRCb3gq
IGJveCA9IGZpcnN0VGV4dEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgewog
ICAgICAgICBJbnRSZWN0IGJvdW5kYXJpZXMgPSBib3gtPmNhbGN1bGF0ZUJvdW5kYXJpZXMoKTsK
QEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCwgQ2xpcHBpbgogICAgIH0KIH0KICAg
ICAKLXZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVh
ZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgYWJzb2x1
dGVRdWFkcyhxdWFkcywgd2FzRml4ZWQsIE5vQ2xpcHBpbmcpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmgKaW5kZXggNDAyMGQ4YWEzNzEyMmQxMjVkMWRjNGVmMTEwNzA5ZDE4
Zjk1MTM5OC4uNDJlOWFlYzk2YjNiMzJiMmQxOWUzYmM1MTk1YzEzZDQ3MWNhMDkzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCkBAIC01NCwxNCArNTQsMTQgQEAgcHVibGlj
OgogICAgIElubGluZVRleHRCb3gqIGNyZWF0ZUlubGluZVRleHRCb3goKTsKICAgICB2b2lkIGRp
cnR5TGluZUJveGVzKGJvb2wgZnVsbExheW91dCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1
dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRS
ZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CiAgICAg
dm9pZCBhYnNvbHV0ZVJlY3RzRm9yUmFuZ2UoVmVjdG9yPEludFJlY3Q+JiwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQgPSBVSU5UX01BWCwgYm9vbCB1c2VTZWxl
Y3Rpb25IZWlnaHQgPSBmYWxzZSwgYm9vbCogd2FzRml4ZWQgPSAwKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOwor
ICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCog
d2FzRml4ZWQpIGNvbnN0OwogICAgIHZvaWQgYWJzb2x1dGVRdWFkc0ZvclJhbmdlKFZlY3RvcjxG
bG9hdFF1YWQ+JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQg
PSBVSU5UX01BWCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSwgYm9vbCogd2FzRml4
ZWQgPSAwKTsKIAogICAgIGVudW0gQ2xpcHBpbmdPcHRpb24geyBOb0NsaXBwaW5nLCBDbGlwVG9F
bGxpcHNpcyB9OwotICAgIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJv
b2wqIHdhc0ZpeGVkID0gMCwgQ2xpcHBpbmdPcHRpb24gPSBOb0NsaXBwaW5nKTsKKyAgICB2b2lk
IGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCA9IDAsIENs
aXBwaW5nT3B0aW9uID0gTm9DbGlwcGluZykgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFZpc2libGVQ
b3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZS5jcHAKaW5kZXggMTcwOTdiMWZiYWIzNjE4MDg4ZTBiNDg5MzdjNjA4ZTVjMmQ4NGNmYS4uZmY5
MDc3MGYwOTU1Nzg5MTA3NWRiOTFlMjllMWRmZTc4NzA0YWZiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAK
QEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6c2hv
d1BvcHVwKCkKICAgICAgICAgbV9zZWFyY2hQb3B1cC0+c2F2ZVJlY2VudFNlYXJjaGVzKG5hbWUs
IG1fcmVjZW50U2VhcmNoZXMpOwogICAgIH0KIAotICAgIG1fc2VhcmNoUG9wdXAtPnBvcHVwTWVu
dSgpLT5zaG93KGFic29sdXRlQm91bmRpbmdCb3hSZWN0KHRydWUpLCBkb2N1bWVudCgpLT52aWV3
KCksIC0xKTsKKyAgICBtX3NlYXJjaFBvcHVwLT5wb3B1cE1lbnUoKS0+c2hvdyhhYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdCgpLCBkb2N1bWVudCgpLT52aWV3KCksIC0xKTsKIH0KIAogdm9pZCBSZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmhpZGVQb3B1cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAppbmRleCBkYmE4NzRkNGFhY2VkYTE1MTNl
NjllNmFlMGQ2NTA2ZWI0MzA4OTk1Li5kMzRkMDc0ODQ0NjNhOWY2NTIyNmY1ZDEyZmMxNzA4NzU3
ODMzMGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVT
YWZhcmkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFy
aS5jcHAKQEAgLTEwODAsNyArMTA4MCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50
U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWluCiAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGlucHV0LT5yZW5kZXJlcigpOwogICAgIEFTU0VSVChy
ZW5kZXJlcik7CiAKLSAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVC
b3VuZGluZ0JveFJlY3QoKTsKKyAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJz
b2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKIAogICAgIHBhaW50VGhl
bWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblBhcnQsIHBhaW50SW5m
by5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNpemVGcm9t
UmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7
CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTEzNCw3ICsxMTM0LDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJlbmRlck9iamVjdCog
bywgY29uc3QKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaW5wdXQtPnJlbmRlcmVyKCk7
CiAgICAgQVNTRVJUKHJlbmRlcmVyKTsKIAotICAgIEludFJlY3Qgc2VhcmNoUmVjdCA9IHJlbmRl
cmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIEludFJlY3Qgc2VhcmNoUmVjdCA9
IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOwog
CiAgICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJjaEZpZWxkUmVzdWx0c0RlY29y
YXRpb25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHNlYXJjaFJl
Y3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qoc2VhcmNoUmVjdCwgc2VhcmNoRmllbGRTaXplcygpKSwg
ZGV0ZXJtaW5lU3RhdGUobykpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTExNTcsNyArMTE1Nyw3
IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9u
KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IGlucHV0LT5yZW5kZXJlcigpOwogICAgIEFTU0VSVChyZW5kZXJlcik7CiAKLSAgICBJbnRSZWN0
IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBJ
bnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25v
cmluZ1RyYW5zZm9ybXMoKTsKIAogICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFy
Y2hGaWVsZFJlc3VsdHNCdXR0b25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCksIHNlYXJjaFJlY3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qoc2VhcmNoUmVjdCwgc2VhcmNo
RmllbGRTaXplcygpKSwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCAxZmVmYWM0ZjAxOTJlYTNl
YjA1NDE1Y2IzNDM0YWY1YjA5ZjZhNzQxLi5mNDIxZjk4MWRhMjY3ZGQ1N2Q1OTk0YWJjM2VjMWE3
NTY1ZDE4MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0z
MjksMTIgKzMyOSwxMiBAQCB2b2lkIFJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgSQogICAgICAgICByZWN0ID0g
bV9sYXllci0+dHJhbnNmb3JtKCktPm1hcFJlY3QocmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyVmll
dzo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCit2b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUmVjdHMo
VmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0KSBjb25zdAogewogICAgIHJlY3RzLmFwcGVuZChMYXlvdXRSZWN0KGFjY3VtdWxhdGVk
T2Zmc2V0LCBtX2xheWVyLT5zaXplKCkpKTsKIH0KIAotdm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0
ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFJl
bmRlclZpZXc6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3
YXNGaXhlZCkgY29uc3QKIHsKICAgICBpZiAod2FzRml4ZWQpCiAgICAgICAgICp3YXNGaXhlZCA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggZTZkN2Q4Zjc1
NWY1Yjc3YmI3ZDk5MDg3MGU1YTZhZGFhYTQ5ZmU2Ny4uOWE2ZjYzZDkwZmJmMjFhNjA3YTVkZDUz
ZDYyMjBjOGFmNDFhZGY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBA
IC04Niw4ICs4Niw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcHJpbnRpbmcoKSBjb25zdDsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0
IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7Ci0gICAgdmlydHVhbCB2b2lkIGFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVh
bCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICB2b2lkIHNldE1heGltYWxPdXRsaW5lU2l6
ZShpbnQgbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0Jsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxv
Y2suY3BwCmluZGV4IDJjODE1OTA4ZWJmNmI5ODkwNjc1N2Q4YmM1NGJlNjk0N2E3MTc5ZTMuLjdi
MTZhNGQ1YmZjOWNiN2JiNjVlNjViYjE1YWJjOGUyZjZlYmFlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwCkBAIC03OCw3ICs3OCw3IEBA
IHZvaWQgUmVuZGVyU1ZHQmxvY2s6OnVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpCiAgICAg
c2V0SGFzT3ZlcmZsb3dDbGlwKGZhbHNlKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdCbG9jazo6YWJz
b2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpCit2b2lk
IFJlbmRlclNWR0Jsb2NrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0
IExheW91dFBvaW50JikgY29uc3QKIHsKICAgICAvLyBUaGlzIGNvZGUgcGF0aCBzaG91bGQgbmV2
ZXIgYmUgdGFrZW4gZm9yIFNWRywgYXMgd2UncmUgYXNzdW1pbmcgdXNlVHJhbnNmb3Jtcz10cnVl
IGV2ZXJ5d2hlcmUsIGFic29sdXRlUXVhZHMgc2hvdWxkIGJlIHVzZWQuCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0Jsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Js
b2NrLmgKaW5kZXggMjJjMWYxOGUzNmUwMjMxMGJlN2U3ZDNlNGVjODEyM2EyOWI1YTcxNC4uNThj
ZjI2MjBhOTgxOGQ2NGFlMjc4MzRmZWQ4ZDQxYjcxNjkyMDQ3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaApAQCAtMzgsNyArMzgsNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPik7
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpOwogCi0gICAg
dmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVS
ZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOwogICAg
IHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5k
ZXJTdHlsZSogbmV3U3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwCmluZGV4IGQyOWQ4NWVjOTM5NzFk
ZWUxOGRiMTJiZDhlNzgwNWY1ODE3NzJmMWUuLjg5NWIyNTQ0OTAwMTIzZmRiZjNlYTAyNTg1NGNi
OWNlZGJlMDRmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBS
ZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OnBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBv
aW50JikKICAgICAvLyBUaGlzIHN1YnRyZWUgZG9lcyBub3QgcGFpbnQuCiB9CiAKLXZvaWQgUmVu
ZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+Jiwg
Ym9vbCopCit2b2lkIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcjo6YWJzb2x1dGVRdWFkcyhWZWN0
b3I8RmxvYXRRdWFkPiYsIGJvb2wqKSBjb25zdAogewogICAgIC8vIFRoaXMgc3VidHJlZSBkb2Vz
IG5vdCB0YWtlIHVwIHNwYWNlIG9yIHBhaW50CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaAppbmRleCBlZmZmOTIx
NTFkMmMzNjFhNmQwYzhkOTc3N2IzMWY2MzQ0NjRkMTBjLi5mMjZjNWZjNjFhMzdmODIwN2Q0ZDY0
OWJlNjgwOWQ1MmEyZjg4MjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmKTsKICAgICAKICAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0
KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYs
IGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBu
b2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24pOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAppbmRleCAw
OTc3MGVmYmYwMjdmYWM5ZWJhN2RiYzdjNGVhNDM3ZjZhYTAxMGI5Li40YzkwNTgwZjEzNTliZjY4
MWM3NzNhZDVkOGJiODE2Y2VkNDJhNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCkBAIC04Miw5ICs4Miw5IEBAIHZvaWQgUmVuZGVy
U1ZHSW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyCiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcih0
aGlzLCByZXBhaW50Q29udGFpbmVyLCB1c2VUcmFuc2Zvcm1zLCBmaXhlZCwgdHJhbnNmb3JtU3Rh
dGUsIHdhc0ZpeGVkKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdJbmxpbmU6OmFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkKK3ZvaWQgUmVuZGVyU1ZH
SW5saW5lOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2Fz
Rml4ZWQpIGNvbnN0CiB7Ci0gICAgUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBSZW5kZXJTVkdUZXh0
Ojpsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3IodGhpcyk7CisgICAgY29uc3QgUmVuZGVyT2Jq
ZWN0KiBvYmplY3QgPSBSZW5kZXJTVkdUZXh0Ojpsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3Io
dGhpcyk7CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKaW5kZXggMGE2MDgzN2Y0Nzc1
OTY5MDM3ZTg0OTc1YmNmMjAwODA2NmJiODJmNy4uZDJmYTFjYzUyNDAyNGI2MWFhN2Q0YWE3N2E0
ZThkZDhlNTYwODQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91
dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJl
Y3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBtYXBMb2Nh
bFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29s
IHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgYm9vbCogd2FzRml4
ZWQgPSAwKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIElubGluZUZsb3dCb3gqIGNyZWF0ZUlubGluZUZsb3dCb3goKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5j
cHAKaW5kZXggMTRjMWRiOGUwZjkzZWFmNTU4YWVlYzg5MmE4NzIzMjNjZDEwZDcyMy4uZmJlNDkz
YjU0ZGNkZWMxYzU3NjdhNDc4YWE2NjM4NmE1NDAzNGJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKQEAgLTcwLDEz
ICs3MCwxMyBAQCBMYXlvdXRSZWN0IFJlbmRlclNWR01vZGVsT2JqZWN0OjpvdXRsaW5lQm91bmRz
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcgogICAgIHJldHVybiBjb250YWluZXJS
ZWxhdGl2ZVF1YWQuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdN
b2RlbE9iamVjdDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlv
dXRQb2ludCYpCit2b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVJlY3RzKFZlY3Rv
cjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JikgY29uc3QKIHsKICAgICAvLyBUaGlz
IGNvZGUgcGF0aCBzaG91bGQgbmV2ZXIgYmUgdGFrZW4gZm9yIFNWRywgYXMgd2UncmUgYXNzdW1p
bmcgdXNlVHJhbnNmb3Jtcz10cnVlIGV2ZXJ5d2hlcmUsIGFic29sdXRlUXVhZHMgc2hvdWxkIGJl
IHVzZWQuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHTW9k
ZWxPYmplY3Q6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3
YXNGaXhlZCkKK3ZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBxdWFkcy5h
cHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChzdHJva2VCb3VuZGluZ0JveCgpLCBmYWxzZSwgd2Fz
Rml4ZWQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHTW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHTW9kZWxPYmplY3QuaAppbmRleCBjMjhkM2M2NjA3ZDU1NGVhMjBjMmJhNWM1YWVlZWRjYzJk
ZTczYjc5Li43MDQxZDQ0OWVmNjMyYzRmYzMwMDkyNjBmOTJjMDAwM2IwMTBkN2UxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5o
CkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RG
b3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRS
ZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKICAgICB2aXJ0dWFsIExheW91dFJlY3Qg
b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIExheW91dFBvaW50KikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVS
ZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQpOwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3Rv
cjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBi
b29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRh
aW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFu
c2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIGJvb2wqIHdhc0ZpeGVkID0gMCkg
Y29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2Us
IGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCBhZjQzOWI1ZDM4ZjA4NGYwMmE5MjFiMmJh
ZmEwZDliMWFiZDQ3MDgxLi4yYTdkODBjZjJlZjUyMWE5NGZiZDk3NzIyMGIxZTRlZTEyNWQ2MGQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAK
QEAgLTIyNSw3ICsyMjUsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyU1ZHVGV4dDo6cG9zaXRp
b25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRlbgogICAgIHJldHVybiBj
bG9zZXN0Qm94LT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KExheW91dFBvaW50KHBvaW50
SW5Db250ZW50cy54KCksIGNsb3Nlc3RCb3gtPnkoKSkpOwogfQogCi12b2lkIFJlbmRlclNWR1Rl
eHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhl
ZCkKK3ZvaWQgUmVuZGVyU1ZHVGV4dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYg
cXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIHF1YWRzLmFwcGVuZChsb2NhbFRv
QWJzb2x1dGVRdWFkKHN0cm9rZUJvdW5kaW5nQm94KCksIGZhbHNlLCB3YXNGaXhlZCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAppbmRleCBiM2Uw
ZjQzZjhmNjQ5YzdmYTY3ZTBiODQyMDM2N2FmMGQ2ZTkyZDNlLi5hMGFkYTRjYjRlZmU5ODBjYWJl
MjdhOWZhNTA0YmFhMzkwMTg5ZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1RleHQuaApAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IHZvaWQgbGF5b3V0KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNv
bXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggZDY0ZDBiN2M0NzY4ZjEzY2ViYjA4Y2FlZDM4MTA0YzI4
YWJkZWFkNi4uZDdhODE1NDBmYTBlZGNkMWE5ZmIzNDI1NzA5NGRmZjAyNTJjNTAwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIFBhc3NSZWZQ
dHI8Q2xpZW50UmVjdD4gSW50ZXJuYWxzOjpib3VuZGluZ0JveChFbGVtZW50KiBlbGVtZW50LCBF
eGNlcHRpb25Db2RlJiBlCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQtPnJl
bmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIENsaWVudFJlY3Q6
OmNyZWF0ZSgpOwotICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUocmVuZGVyZXItPmFic29s
dXRlQm91bmRpbmdCb3hSZWN0KCkpOworICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUocmVu
ZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkpOwogfQog
CiB1bnNpZ25lZCBJbnRlcm5hbHM6Om1hcmtlckNvdW50Rm9yTm9kZShOb2RlKiBub2RlLCBFeGNl
cHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCmluZGV4IDVmMTJlMTAx
NDM5ZjVmYmYwZDZjZGNiMTAzNDExNzA2MWI1OTI3ZjQuLjA3ZjJkZjk4N2QyY2ZmNTZkZmM4ZDg3
ZDdhNWNhYmI1YzE5NjZlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJm
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcApAQCAtMTc1
MSw3ICsxNzUxLDcgQEAgUVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlOjpRV2ViSGl0VGVzdFJlc3Vs
dFByaXZhdGUoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdAogICAgIGltYWdlVXJsID0gaGl0
VGVzdC5hYnNvbHV0ZUltYWdlVVJMKCk7CiAgICAgaW5uZXJOb2RlID0gaGl0VGVzdC5pbm5lck5v
ZGUoKTsKICAgICBpbm5lck5vblNoYXJlZE5vZGUgPSBoaXRUZXN0LmlubmVyTm9uU2hhcmVkTm9k
ZSgpOwotICAgIGJvdW5kaW5nUmVjdCA9IGlubmVyTm9uU2hhcmVkTm9kZSA/IGlubmVyTm9uU2hh
cmVkTm9kZS0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QodHJ1ZSkgOiBJbnRS
ZWN0KCk7CisgICAgYm91bmRpbmdSZWN0ID0gaW5uZXJOb25TaGFyZWROb2RlID8gaW5uZXJOb25T
aGFyZWROb2RlLT5yZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpIDogSW50UmVj
dCgpOwogICAgIFdlYkNvcmU6OkltYWdlICppbWcgPSBoaXRUZXN0LmltYWdlKCk7CiAgICAgaWYg
KGltZykgewogICAgICAgICBRUGl4bWFwICpwaXggPSBpbWctPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDdjNDIzY2EwZjE4NzZhZGVjNjZmNTAwZWE3YjAy
NWI0NjZhMDNlOTYuLjJjZjkwN2NjNzU5MTE3MWQyY2VhOTZlZjIzZjJlNGYzMWYxNDM4N2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDktMjkgIEZhZHkgU2FtdWVsICA8
ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDogTWFrZSBSZW5k
ZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVkIG1ldGhvZHMg
Y29uc3QgYW5kIG1ha2UgaXRzIHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxvbmdlciBkZWZh
dWx0IHRvIGZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02OTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViSGl0VGVzdFJlc3VsdFByaXZh
dGU6OlFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSk6CisKIDIwMTEtMDktMjcgIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHI5NjEwOCwgcjk2MTExLCByOTYxMTMsIGFuZCByOTYxMTYuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMjU1YjkxM2UzZDNiOTdhMjkzYzMzYTcwM2I5MzU1ZWE4NjRhYTM5Yy4uZTk4ZjVjY2JhMDVm
OTA1M2FhZjk0MzRmYWU1ZTRkODNkNTFhZWI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDExLTA5LTI5ICBGYWR5IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIENvZGUgY2xlYW4tdXA6IE1ha2UgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCBhbmQgYXNzb2NpYXRlZCBtZXRob2RzIGNvbnN0IGFuZCBtYWtlIGl0cyBwYXJhbWV0ZXIg
dXNlVHJhbnNmb3JtcyBubyBsb25nZXIgZGVmYXVsdCB0byBmYWxzZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwMDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdpbi9XZWJLaXQyLmRlZjoKKyAgICAg
ICAgKiB3aW4vV2ViS2l0MkNGTGl0ZS5kZWY6CisKIDIwMTEtMDktMjkgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEZvcmNlIHNpbmds
ZSBoZWFkZXIgaW5jbHVkZSBpbiBXZWJLaXQyIEdUSysgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYK
aW5kZXggZmE1MThlMzQwMmExMTI1NDYxOTBiYmJkNTIxMmY2OTQ1OTRmZDEwMi4uYjEwOTBkOTc5
YTExNWRlM2QyMjMyMzczNjQ1ZDk4MzYzOWQ4OTlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgpA
QCAtMTQzLDcgKzE0Myw2IEBAIEVYUE9SVFMKICAgICAgICAgPz8wQ2xpZW50UmVjdEBXZWJDb3Jl
QEBBQUVAWFoKICAgICAgICAgPz8wU3RyaW5nQFdURkBAUUFFQFBCREBaCiAgICAgICAgID8/MFN0
cmluZ0BXVEZAQFFBRUBQQl9XQFoKLSAgICAgICAgP2Fic29sdXRlQm91bmRpbmdCb3hSZWN0QFJl
bmRlck9iamVjdEBXZWJDb3JlQEBRQUU/QVZJbnRSZWN0QDJAX05AWgogICAgICAgICA/YWRkQEF0
b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEJE
QFoKICAgICAgICAgP2FkZFNsb3dDYXNlQEF0b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVm
UHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEFWU3RyaW5nSW1wbEAyQEBaCiAgICAgICAgID9jYWNo
ZURPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBBVlN0cnVjdHVyZUBKU0NAQFBBVkpTRE9NR2xvYmFs
T2JqZWN0QDFAUEFWMjNAUEJVQ2xhc3NJbmZvQDNAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZM
aXRlLmRlZgppbmRleCA4NDgyYjQ5NzE2YzcxY2IyYzMyZDdjMGZiYzk1MmYyN2Y0MWY0ZDFjLi40
YzI5YzQ0NTM1ODJkMzlmMzk1MDM1MTE4NDA2OGQyZjM0M2Y4YjcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2lu
L1dlYktpdDJDRkxpdGUuZGVmCkBAIC0xMzUsNyArMTM1LDYgQEAgRVhQT1JUUwogICAgICAgICA/
PzBTdHJpbmdAV1RGQEBRQUVAUEJfV0BaCiAgICAgICAgID8/MU5vZGVSZW5kZXJpbmdDb250ZXh0
QFdlYkNvcmVAQFFBRUBYWgogICAgICAgICA/PzFSYW5nZUBXZWJDb3JlQEBRQUVAWFoKLSAgICAg
ICAgP2Fic29sdXRlQm91bmRpbmdCb3hSZWN0QFJlbmRlck9iamVjdEBXZWJDb3JlQEBRQUU/QVZJ
bnRSZWN0QDJAX05AWgogICAgICAgICA/YWRkQEF0b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNz
UmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEJEQFoKICAgICAgICAgP2FkZFNsb3dDYXNlQEF0
b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEFW
U3RyaW5nSW1wbEAyQEBaCiAgICAgICAgID9jYWNoZURPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBB
VlN0cnVjdHVyZUBKU0NAQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWMjNAUEJVQ2xhc3NJbmZv
QDNAQFoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109197</attachid>
            <date>2011-09-29 13:31:30 -0700</date>
            <delta_ts>2011-09-29 14:02:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69009-20110929163129.patch</filename>
            <type>text/plain</type>
            <size>46471</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYzMjUKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCA5NGZlNGEwZWIzZDkzOTM0ZjYzZmRkN2VhZTQzM2Q1MjUzNjM4N2MxLi4xZDNh
OTEwYjY3ZWZiOTQ1ZGJlNjRjYTYwNmExZGJmYzQ1YmE1NjAxIDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDktMjkgIEZhZHkgU2Ft
dWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDogTWFr
ZSBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVkIG1l
dGhvZHMgY29uc3QgYW5kIG1ha2UgaXRzIHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxvbmdl
ciBkZWZhdWx0IHRvIGZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02OTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMS0wOS0y
OSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBCdW1wIHZlcnNpb24gdG8gMS43LjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNzY3ZmRjYzQyMjFhNmRi
MzQyNWVmNmMyZTRiNTlmMGEzMjU0MDU4Li5hNzBhMDVmNTBmZTA3Y2U0N2ZlODAyN2U0MTYzMWNj
MmMxMjlhYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODggQEAKKzIwMTEtMDktMjkgIEZhZHkg
U2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDog
TWFrZSBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVk
IG1ldGhvZHMgY29uc3QgYW5kIG1ha2UgaXRzIHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxv
bmdlciBkZWZhdWx0IHRvIGZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02OTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVwY29taW5nIHBhdGNoZXMgbWF5IG1ha2UgdXNlIG9mIGFic29sdXRlQm91
bmRpbmdCb3hSZWN0IG9uIGEgY29uc3QgUmVuZGVyT2JqZWN0LCBzbyB0aGlzIG5lZWRlZCB0byBi
ZSBmaXhlZC4KKyAgICAgICAgTWFraW5nIHVzZVRyYW5zZm9ybXMgZGVmYXVsdCB0byB0cnVlIGlu
c3RlYWQgb2YgZmFsc2UgYW5kIHJlcGxhY2luZyBpbnN0YW5jZXMgb2YgYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoKSB0bworICAgICAgICBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJh
bnNmb3JtcygpIHBhcnRpYWxseSBhZGRyZXNlcyAvLyBGSVhNRTogdXNlVHJhbnNmb3JtcyBzaG91
bGQgZ28gYXdheSBldmVudHVhbGx5LgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAg
ICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2NyZWVu
UmVjdCk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
Z2V0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZW5kZXJSZWN0KToKKyAgICAgICAg
KiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2xpZGVyVGh1bWJFbGVtZW50OjpzZXRQb3NpdGlvbkZyb21Qb2ludCk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzdGFydFNwZWVjaElucHV0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcDoKKyAgICAgICAgKiBwbHVnaW5z
L0lGcmFtZVNoaW1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFBsdWdpbk9jY2x1
c2lvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
RnJhbWU6OmZsYXR0ZW5GcmFtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRlUXVhZHMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6OnNob3dQ
b3B1cCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWRkQWJzb2x1dGVSZWN0Rm9yTGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpwYWludGluZ1Jvb3RSZWN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0
ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmFic29sdXRlUmVjdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZTo6c2hvd1BvcHVwKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVT
YWZhcmkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2Vh
cmNoRmllbGRDYW5jZWxCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZh
cmk6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clZpZXc6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6YWJz
b2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR0Jsb2NrOjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0Jsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5D
b250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVy
OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRl
bkNvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6YWJzb2x1dGVRdWFkcyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmFic29sdXRl
UXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
Ym91bmRpbmdCb3gpOgorCiAyMDExLTA5LTI5ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1ha2Ugc2VhcmNoLWluLXJlc291
cmNlIHRlc3Qgc2ltcGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNDcwNDFiMDAwODcyZWRj
M2ViNDU4ZWU5ZjhjOTdiMjMwYzhlZGEyYS4uMzExYTZkNzRmZWQ4M2U5ODU1MTk2MzI0Zjg0ZGIw
NmNiZTE4NzNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTI4Myw3ICsyODMsNiBAQCBfX1pO
N1dlYkNvcmUxMlByaW50Q29udGV4dDlzcG9vbFJlY3RFUk5TXzE1R3JhcGhpY3NDb250ZXh0RVJL
TlNfN0ludFJlY3RFCiBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dEMxRVBOU181RnJhbWVFCiBf
X1pON1dlYkNvcmUxMlByaW50Q29udGV4dEQxRXYKIF9fWk43V2ViQ29yZTEyUmVuZGVyT2JqZWN0
MTZyZXBhaW50UmVjdGFuZ2xlRVJLTlNfN0ludFJlY3RFYgotX19aTjdXZWJDb3JlMTJSZW5kZXJP
YmplY3QyM2Fic29sdXRlQm91bmRpbmdCb3hSZWN0RWIKIF9fWk43V2ViQ29yZTEyUmVuZGVyV2lk
Z2V0MjhyZXN1bWVXaWRnZXRIaWVyYXJjaHlVcGRhdGVzRXYKIF9fWk43V2ViQ29yZTEyUmVuZGVy
V2lkZ2V0MjlzdXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlc0V2CiBfX1pON1dlYkNvcmUxMlNo
YXJlZEJ1ZmZlcjEwd3JhcE5TRGF0YUVQNk5TRGF0YQpAQCAtMTExMiw2ICsxMTExLDcgQEAgX19a
Tks3V2ViQ29yZTExU2NyaXB0VmFsdWU5Z2V0U3RyaW5nRVBOM0pTQzlFeGVjU3RhdGVFUk4zV1RG
NlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTEyZGF0YWJhc2VQYXRoRXYKIF9f
Wk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTI0c2hvdWxkU3RvcFRocmVhZEFjdGl2aXR5RXYKIF9f
Wk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTlpc0VuYWJsZWRFdgorX19aTks3V2ViQ29yZTEyUmVu
ZGVyT2JqZWN0MjNhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEViCiBfX1pOSzdXZWJDb3JlMTJSZW5k
ZXJPYmplY3QxNGVuY2xvc2luZ0xheWVyRXYKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDE1
bG9jYWxUb0Fic29sdXRlRVJLTlNfMTBGbG9hdFBvaW50RWJiCiBfX1pOSzdXZWJDb3JlMTJSZW5k
ZXJPYmplY3Q0dmlld0V2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYjE2NjIzYmFhYzkzMTAx
YjEzYzIzNGQ0MzM0NTY3YmUyZTY3ZTYwZS4uZTgwMzNlMzUyZDM3YWYzYjdiMDBjMjI3ZWU3MzJj
YjRkMGJkZjQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNTczLDcgKzU3Myw4IEBAIExh
eW91dFJlY3QgRWxlbWVudDo6c2NyZWVuUmVjdCgpIGNvbnN0CiB7CiAgICAgaWYgKCFyZW5kZXJl
cigpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwotICAgIHJldHVybiByZW5kZXJlcigp
LT52aWV3KCktPmZyYW1lVmlldygpLT5jb250ZW50c1RvU2NyZWVuKHJlbmRlcmVyKCktPmFic29s
dXRlQm91bmRpbmdCb3hSZWN0KCkpOworICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBwcm9iYWJs
eSByZXNwZWN0IHRyYW5zZm9ybXMKKyAgICByZXR1cm4gcmVuZGVyZXIoKS0+dmlldygpLT5mcmFt
ZVZpZXcoKS0+Y29udGVudHNUb1NjcmVlbihyZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNob3Vs
ZElnbm9yZUF0dHJpYnV0ZUNhc2UoY29uc3QgRWxlbWVudCogZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRl
eCBiMzM2MzQ5MTM3YWZkNDk2MjJjNjNkZGE2Yjg0ODZlZjZhYTQwYTRiLi40MWMyOWQ0MDBkNjY4
OWM3ZmE0MmUwYWRmYTcyMzc2NTUxMjQyYzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC04MjMsNyAr
ODIzLDcgQEAgUmVuZGVyQm94TW9kZWxPYmplY3QqIE5vZGU6OnJlbmRlckJveE1vZGVsT2JqZWN0
KCkgY29uc3QKIExheW91dFJlY3QgTm9kZTo6Z2V0UmVjdCgpIGNvbnN0CiB7CiAgICAgaWYgKHJl
bmRlcmVyKCkpCi0gICAgICAgIHJldHVybiByZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCh0cnVlKTsKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdC
b3hSZWN0KCk7CiAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKIH0KICAgICAKQEAgLTgzNSw3ICs4
MzUsNyBAQCBMYXlvdXRSZWN0IE5vZGU6OnJlbmRlclJlY3QoYm9vbCogaXNSZXBsYWNlZCkKICAg
ICB3aGlsZSAocmVuZGVyZXIgJiYgIXJlbmRlcmVyLT5pc0JvZHkoKSAmJiAhcmVuZGVyZXItPmlz
Um9vdCgpKSB7CiAgICAgICAgIGlmIChyZW5kZXJlci0+aXNSZW5kZXJCbG9jaygpIHx8IHJlbmRl
cmVyLT5pc0lubGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpIHx8IHJlbmRlcmVyLT5pc1JlcGxhY2Vk
KCkpIHsKICAgICAgICAgICAgICppc1JlcGxhY2VkID0gcmVuZGVyZXItPmlzUmVwbGFjZWQoKTsK
LSAgICAgICAgICAgIHJldHVybiByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QodHJ1
ZSk7CisgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0
KCk7CiAgICAgICAgIH0KICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVu
dC5jcHAKaW5kZXggNWQxNzhhZjA3OWFiNGNmYmQ5ZDBmNzIwNDNmYWYzZDg3YzQ4YmNiOC4uZmM4
MjM3Y2U1MDMzYWE3NjgyZWM3NzhjZDI3MjMyZDFlNDhiYzA5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCkBAIC00MCw2ICs0MCw3
IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQu
aCIKICNpbmNsdWRlICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaCIKKyNpbmNsdWRlICJS
ZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJTbGlkZXIuaCIKICNpbmNsdWRlICJSZW5k
ZXJUaGVtZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKQEAgLTIxNiw3ICsyMTcsOCBAQCB2
b2lkIFNsaWRlclRodW1iRWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tUG9pbnQoY29uc3QgTGF5b3V0
UG9pbnQmIHBvaW50KQogICAgIC8vIFdlIG5lZWQgdG8gY2FsY3VsYXRlIGN1cnJlbnRQb3NpdGlv
biBmcm9tIGFic29sdXRlIHBvaW50cyBiZWNhdWUgdGhlCiAgICAgLy8gcmVuZGVyZXIgZm9yIHRo
aXMgbm9kZSBpcyB1c3VhbGx5IG9uIGEgbGF5ZXIgYW5kIHJlbmRlckJveCgpLT54KCkgYW5kCiAg
ICAgLy8geSgpIGFyZSB1bnVzYWJsZS4KLSAgICBMYXlvdXRQb2ludCBhYnNvbHV0ZVRodW1iT3Jp
Z2luID0gcmVuZGVyQm94KCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkubG9jYXRpb24oKTsK
KyAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgcHJvYmFibHkgcmVzcGVjdCB0cmFuc2Zvcm1zIAor
ICAgIExheW91dFBvaW50IGFic29sdXRlVGh1bWJPcmlnaW4gPSByZW5kZXJCb3goKS0+YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKS5sb2NhdGlvbigpOwogICAgIExh
eW91dFBvaW50IGFic29sdXRlU2xpZGVyQ29udGVudE9yaWdpbiA9IHJvdW5kZWRMYXlvdXRQb2lu
dChpbnB1dC0+cmVuZGVyZXIoKS0+bG9jYWxUb0Fic29sdXRlKCkpOwogICAgIGlmIChpc1ZlcnRp
Y2FsKSB7CiAgICAgICAgIHRyYWNrU2l6ZSA9IGlucHV0LT5yZW5kZXJCb3goKS0+Y29udGVudEhl
aWdodCgpIC0gcmVuZGVyQm94KCktPmhlaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggYmYxODVj
ZjdiMGYwOTZiOTNjODg4MzIwNmJhMzM3NGQwNDkzNDVkNS4uMGJkZGMyMDQwNDNkZDUzYmVkNmE4
MDQwYWNiZmNiOGJjZmMyMDc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAj
aW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5k
ZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgpAQCAtNTM1LDcgKzUzNiw4IEBAIHZvaWQgSW5wdXRG
aWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OnN0YXJ0U3BlZWNoSW5wdXQoKQogICAgIFJlZlB0cjxI
VE1MSW5wdXRFbGVtZW50PiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihz
aGFkb3dBbmNlc3Rvck5vZGUoKSk7CiAgICAgQXRvbWljU3RyaW5nIGxhbmd1YWdlID0gaW5wdXQt
PmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpOwogICAgIFN0cmluZyBncmFtbWFyID0gaW5wdXQt
PmdldEF0dHJpYnV0ZSh3ZWJraXRncmFtbWFyQXR0cik7Ci0gICAgSW50UmVjdCByZWN0ID0gcmVu
ZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICAvLyBGSVhNRTogdGhpcyBz
aG91bGQgcHJvYmFibHkgcmVzcGVjdCB0cmFuc2Zvcm1zCisgICAgSW50UmVjdCByZWN0ID0gcmVu
ZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKICAg
ICBpZiAoc3BlZWNoSW5wdXQoKS0+c3RhcnRSZWNvZ25pdGlvbihtX2xpc3RlbmVySWQsIHJlY3Qs
IGxhbmd1YWdlLCBncmFtbWFyLCBkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKICAgICAg
ICAgc2V0U3RhdGUoUmVjb3JkaW5nKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0RPTU5vZGVIaWdobGlnaHRlci5jcHAKaW5kZXggZTY4OWI1MjUwYjZhODY4ZWE1YTU1MGQ2ZGFh
YmEyOTQ1YTc4ZjY5ZC4uZjhiZmI2MGY5YWRlZDIwYjJlMTA2ODBhMDhjOTY0Mjg0ZGE4NGY1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAK
QEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgSGlnaGxpZ2h0RGF0YSogaGlnaGxpZ2h0RGF0YSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgTGF5b3V0U2l6ZSBtYWluRnJhbWVPZmZzZXQgPSBmcmFtZVRvTWFpbkZyYW1lT2Zm
c2V0KGNvbnRhaW5pbmdGcmFtZSk7Ci0gICAgTGF5b3V0UmVjdCBib3VuZGluZ0JveCA9IHJlbmRl
cmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCh0cnVlKTsKKyAgICBMYXlvdXRSZWN0IGJvdW5k
aW5nQm94ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CiAKICAgICBib3Vu
ZGluZ0JveC5tb3ZlKG1haW5GcmFtZU9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9JRnJhbWVTaGltU3VwcG9ydC5jcHAKaW5kZXggYzBhYTFlNDEzNmM0OTQyZjI5YWY4ODRmMzIx
Njg4NWM3YWM1NWI3OS4uODI2NTc2NTExMGFlNTQ2OGQwMzA1ZjNlZmIwNDZkMjVhZGQ3ZmVmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9JRnJhbWVTaGltU3VwcG9ydC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9JRnJhbWVTaGltU3VwcG9ydC5jcHAKQEAgLTE1
Miw3ICsxNTIsNyBAQCB2b2lkIGdldFBsdWdpbk9jY2x1c2lvbnMoRWxlbWVudCogZWxlbWVudCwg
V2lkZ2V0KiBwYXJlbnRXaWRnZXQsIGNvbnN0IEludFJlY3QmCiAgICAgICAgIFJlbmRlck9iamVj
dCogaWZyYW1lUmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOwogCiAgICAgICAgIGlmIChl
bGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aWZyYW1lVGFnKQotICAgICAgICAgICAgJiYg
aWZyYW1lUmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkuaW50ZXJzZWN0cyhmcmFt
ZVJlY3QpCisgICAgICAgICAgICAmJiBpZnJhbWVSZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKS5pbnRlcnNlY3RzKGZyYW1lUmVjdCkKICAgICAgICAg
ICAgICYmICghaWZyYW1lUmVuZGVyZXItPnN0eWxlKCkgfHwgaWZyYW1lUmVuZGVyZXItPnN0eWxl
KCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSkgewogICAgICAgICAgICAgZ2V0T2JqZWN0U3Rh
Y2soaWZyYW1lUmVuZGVyZXIsICZpZnJhbWVac3RhY2spOwogICAgICAgICAgICAgaWYgKGlmcmFt
ZUlzQWJvdmVQbHVnaW4oaWZyYW1lWnN0YWNrLCBwbHVnaW5ac3RhY2spKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA0NjUxNTRjY2I4YWJlMTQxZTg5YWRh
MzMxZTAyZTMwYWMzNGUwMzgxLi4yYWNlNDhmYWQzZTdiYzQ4NGVkZDc3YjVlY2Q3ODM2NTgwNDg4
ZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTU4NDMs
NyArNTg0Myw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnNldFBhZ2VMb2dpY2FsT2Zmc2V0KGludCBs
b2dpY2FsT2Zmc2V0KQogICAgIG1fcmFyZURhdGEtPm1fcGFnZUxvZ2ljYWxPZmZzZXQgPSBsb2dp
Y2FsT2Zmc2V0OwogfQogCi12b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxM
YXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkK
K3ZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0
cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewogICAgIC8v
IEZvciBibG9ja3MgaW5zaWRlIGlubGluZXMsIHdlIGdvIGFoZWFkIGFuZCBpbmNsdWRlIG1hcmdp
bnMgc28gdGhhdCB3ZSBydW4gcmlnaHQgdXAgdG8gdGhlCiAgICAgLy8gaW5saW5lIGJveGVzIGFi
b3ZlIGFuZCBiZWxvdyB1cyAodGh1cyBnZXR0aW5nIG1lcmdlZCB3aXRoIHRoZW0gdG8gZm9ybSBh
IHNpbmdsZSBpcnJlZ3VsYXIKQEAgLTU4NTksNyArNTg1OSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6
OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9p
bnQmIGFjCiAgICAgICAgIHJlY3RzLmFwcGVuZChMYXlvdXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0
LCBzaXplKCkpKTsKIH0KIAotdm9pZCBSZW5kZXJCbG9jazo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJCbG9jazo6YWJz
b2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25z
dAogewogICAgIC8vIEZvciBibG9ja3MgaW5zaWRlIGlubGluZXMsIHdlIGdvIGFoZWFkIGFuZCBp
bmNsdWRlIG1hcmdpbnMgc28gdGhhdCB3ZSBydW4gcmlnaHQgdXAgdG8gdGhlCiAgICAgLy8gaW5s
aW5lIGJveGVzIGFib3ZlIGFuZCBiZWxvdyB1cyAodGh1cyBnZXR0aW5nIG1lcmdlZCB3aXRoIHRo
ZW0gdG8gZm9ybSBhIHNpbmdsZSBpcnJlZ3VsYXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmgKaW5kZXggMDk3NzI3ZThiNTM1ODJmY2FiN2NkOTMyZTY0YTk3MDdmZjllZDY4NC4u
ZjgxYjJmZTYxNzE2YjlhMGM5NmQ5NzA3NjYwNWM3NDdiOGRmYzU3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTY4Miw4ICs2ODIsOCBAQCBwcml2YXRlOgogICAg
IExheW91dFVuaXQgbG9naWNhbExlZnRTZWxlY3Rpb25PZmZzZXQoUmVuZGVyQmxvY2sqIHJvb3RC
bG9jaywgTGF5b3V0VW5pdCBwb3NpdGlvbik7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRT
ZWxlY3Rpb25PZmZzZXQoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgTGF5b3V0VW5pdCBwb3NpdGlv
bik7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJl
Y3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKLSAgICB2aXJ0dWFs
IHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsK
KyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25z
dCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0
OwogCiAgICAgTGF5b3V0VW5pdCBkZXNpcmVkQ29sdW1uV2lkdGgoKSBjb25zdDsKICAgICB1bnNp
Z25lZCBkZXNpcmVkQ29sdW1uQ291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKaW5kZXggNWM4YmVlOTI1YzNhZjk3YjRiMzJmY2VlMDZhOTA5YjkxOWQzOTJm
MS4uM2I0OTMzMDgxNmU3MjUzZDE3MGFlYzUzZjQ3NDY2ZGVjZTEyOTkzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTQ2NiwxMiArNDY2LDEyIEBAIHZvaWQgUmVu
ZGVyQm94OjpzZXRTY3JvbGxUb3AoTGF5b3V0VW5pdCBuZXdUb3ApCiAgICAgICAgIGxheWVyKCkt
PnNjcm9sbFRvWU9mZnNldChuZXdUb3AsIFJlbmRlckxheWVyOjpTY3JvbGxPZmZzZXRDbGFtcGVk
KTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiBy
ZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KQordm9pZCBSZW5kZXJC
b3g6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewogICAgIHJlY3RzLmFwcGVuZChMYXlvdXRS
ZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBzaXplKCkpKTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OmFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkKK3Zv
aWQgUmVuZGVyQm94OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9v
bCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1
YWQoRmxvYXRSZWN0KDAsIDAsIHdpZHRoKCksIGhlaWdodCgpKSwgZmFsc2UsIHdhc0ZpeGVkKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggNDVkNDQ2MGVlNDg1YzNh
MTg1NGY5MzYwZjZlODRkY2Q1NTc0YWRlZi4uOGM2MjRmZGQ0ZTZhZjA5ZmUxNjE1OWUyZGQ3ZTk0
ZWYyZDlhNGVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMjMyLDgg
KzIzMiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFVuaXQgY29sbGFwc2VkTWFyZ2lu
QmVmb3JlKCkgY29uc3QgeyByZXR1cm4gbWFyZ2luQmVmb3JlKCk7IH0KICAgICB2aXJ0dWFsIExh
eW91dFVuaXQgY29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBtYXJnaW5BZnRl
cigpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAg
IHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91
dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAgICAg
CiAgICAgSW50UmVjdCByZWZsZWN0aW9uQm94KCkgY29uc3Q7CiAgICAgaW50IHJlZmxlY3Rpb25P
ZmZzZXQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2wuY3BwCmluZGV4IGY5NDQ5MWYzMWM1YThlNWZkMjAyMjQ1MDE5NTRl
NGI0NmVmMDg0NjYuLjAxY2VlYWZmY2IwZmU1OWJlNTQxZmY0ZjJhZTM4MDhiMWU4M2E1ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJv
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250
cm9sLmNwcApAQCAtMTMyLDcgKzEzMiw4IEBAIHZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6
OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2luCiAgICAg
ICAgICAgICB0ZXh0WCA9IGNvbnRlbnRMZWZ0ICsgY29udGVudFdpZHRoKCkgLSBidXR0b25BbmRJ
Y29uV2lkdGggLSBmb250LndpZHRoKHRleHRSdW4pOwogICAgICAgICAvLyBXZSB3YW50IHRvIG1h
dGNoIHRoZSBidXR0b24ncyBiYXNlbGluZQogICAgICAgICBSZW5kZXJCdXR0b24qIGJ1dHRvblJl
bmRlcmVyID0gdG9SZW5kZXJCdXR0b24oYnV0dG9uLT5yZW5kZXJlcigpKTsKLSAgICAgICAgTGF5
b3V0VW5pdCB0ZXh0WSA9IGJ1dHRvblJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgp
LnkoKQorICAgICAgICAvLyBGSVhNRTogbWFrZSB0aGlzIHdvcmsgd2l0aCB0cmFuc2Zvcm1zLgor
ICAgICAgICBMYXlvdXRVbml0IHRleHRZID0gYnV0dG9uUmVuZGVyZXItPmFic29sdXRlQm91bmRp
bmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkueSgpCiAgICAgICAgICAgICArIGJ1dHRvblJl
bmRlcmVyLT5iYXNlbGluZVBvc2l0aW9uKEFscGhhYmV0aWNCYXNlbGluZSwgdHJ1ZSwgSG9yaXpv
bnRhbExpbmUsIFBvc2l0aW9uT25Db250YWluaW5nTGluZSk7CiAKICAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPnNldEZpbGxDb2xvcihzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlDb2xvciksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCmluZGV4IDExMjk3YjVkYjdhOWY3YTJkMDllNDY1OTQz
YzQ4N2UxODZmMTVhZDAuLmNlMGY0M2JkMDMwNDE1MWE0MDgzYjBhMDIwYTllMmVkOTYxYjEzZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCkBAIC0xMDUsNyAr
MTA1LDcgQEAgYm9vbCBSZW5kZXJJRnJhbWU6OmZsYXR0ZW5GcmFtZSgpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIC8vIERvIG5vdCBmbGF0dGVuIG9mZnNjcmVlbiBpbm5lciBmcmFtZXMg
ZHVyaW5nIGZyYW1lIGZsYXR0ZW5pbmcsIGFzIGZsYXR0ZW5pbmcgbWlnaHQgbWFrZSB0aGVtIHZp
c2libGUuCi0gICAgSW50UmVjdCBib3VuZGluZ1JlY3QgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dCgpOworICAgIEludFJlY3QgYm91bmRpbmdSZWN0ID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJ
Z25vcmluZ1RyYW5zZm9ybXMoKTsKICAgICByZXR1cm4gYm91bmRpbmdSZWN0Lm1heFgoKSA+IDAg
JiYgYm91bmRpbmdSZWN0Lm1heFkoKSA+IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAKaW5kZXggNmNhOWQzZmIxZTkyZDAyY2JjOTBiYTRkYzMzYmExOWJk
ODRiMjgwNC4uM2YwOTYzM2IwMDhkOTU2ZmExZjdlMjE4MmUzMGM0ZGQyMDVhYzNhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTQ2Niw3ICs0NjYsNyBA
QCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICBtX2xpbmVCb3hlcy5wYWludCh0aGlzLCBwYWlu
dEluZm8sIHBhaW50T2Zmc2V0KTsKIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVj
dHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0KQordm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91
dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25z
dAogewogICAgIGlmICghYWx3YXlzQ3JlYXRlTGluZUJveGVzKCkpCiAgICAgICAgIGN1bGxlZElu
bGluZUFic29sdXRlUmVjdHModGhpcywgcmVjdHMsIHRvTGF5b3V0U2l6ZShhY2N1bXVsYXRlZE9m
ZnNldCkpOwpAQCAtNDg1LDcgKzQ4NSw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVJl
Y3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhCiAgICAg
fQogfQogCi12b2lkIFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25z
dCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29u
c3QgTGF5b3V0U2l6ZSYgb2Zmc2V0KQordm9pZCBSZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUFi
c29sdXRlUmVjdHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxMYXlvdXRS
ZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFNpemUmIG9mZnNldCkgY29uc3QKIHsKICAgICBpZiAo
IWN1bGxlZElubGluZUZpcnN0TGluZUJveCgpKSB7CiAgICAgICAgIHJlY3RzLmFwcGVuZChJbnRS
ZWN0KG9mZnNldC53aWR0aCgpLCBvZmZzZXQuaGVpZ2h0KCksIDAsIDApKTsKQEAgLTU1Myw3ICs1
NTMsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25z
dCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJJ
bmxpbmU6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNG
aXhlZCkKK3ZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKCFhbHdheXNDcmVhdGVM
aW5lQm94ZXMoKSkKICAgICAgICAgY3VsbGVkSW5saW5lQWJzb2x1dGVRdWFkcyh0aGlzLCBxdWFk
cyk7CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkKICAgICAgICAgY29udGlu
dWF0aW9uKCktPmFic29sdXRlUXVhZHMocXVhZHMsIHdhc0ZpeGVkKTsKIH0KIAotdm9pZCBSZW5k
ZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRlUXVhZHMoY29uc3QgUmVuZGVySW5saW5lKiBj
b250YWluZXIsIFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykKK3ZvaWQgUmVuZGVySW5saW5lOjpj
dWxsZWRJbmxpbmVBYnNvbHV0ZVF1YWRzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBW
ZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpIGNvbnN0CiB7CiAgICAgaWYgKCFjdWxsZWRJbmxpbmVG
aXJzdExpbmVCb3goKSkgewogICAgICAgICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVh
ZChGbG9hdFJlY3QoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmlu
ZGV4IGFmZDRhYWQ0NDhiMGU4MTgxOTMyOWVhMGFhNjg2ZTViMDljZWI2NjcuLmZlOTVhZjFmZTE4
NzU0MjY1YmE5NzkwOWY3ZWRiNmViM2U3M2FlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmgKQEAgLTQ2LDggKzQ2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5
b3V0VW5pdCBtYXJnaW5TdGFydCgpIGNvbnN0OwogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJn
aW5FbmQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxM
YXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7Ci0gICAg
dmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNG
aXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+
JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKKyAgICB2aXJ0
dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVk
KSBjb25zdDsKIAogICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJl
bmRlck9iamVjdCosIGNvbnN0IExheW91dFBvaW50JikgY29uc3Q7CiAKQEAgLTEwMiw4ICsxMDIs
OCBAQCBwcml2YXRlOgogICAgIExheW91dFJlY3QgY3VsbGVkSW5saW5lVmlzdWFsT3ZlcmZsb3dC
b3VuZGluZ0JveCgpIGNvbnN0OwogICAgIElubGluZUJveCogY3VsbGVkSW5saW5lRmlyc3RMaW5l
Qm94KCkgY29uc3Q7CiAgICAgSW5saW5lQm94KiBjdWxsZWRJbmxpbmVMYXN0TGluZUJveCgpIGNv
bnN0OwotICAgIHZvaWQgY3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25zdCBSZW5kZXJJbmxp
bmUqIGNvbnRhaW5lciwgVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0U2l6ZSYpOwot
ICAgIHZvaWQgY3VsbGVkSW5saW5lQWJzb2x1dGVRdWFkcyhjb25zdCBSZW5kZXJJbmxpbmUqIGNv
bnRhaW5lciwgVmVjdG9yPEZsb2F0UXVhZD4mKTsKKyAgICB2b2lkIGN1bGxlZElubGluZUFic29s
dXRlUmVjdHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxMYXlvdXRSZWN0
PiYsIGNvbnN0IExheW91dFNpemUmKSBjb25zdDsKKyAgICB2b2lkIGN1bGxlZElubGluZUFic29s
dXRlUXVhZHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxGbG9hdFF1YWQ+
JikgY29uc3Q7CiAKICAgICB2b2lkIGFkZENoaWxkVG9Db250aW51YXRpb24oUmVuZGVyT2JqZWN0
KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7CiAgICAgdmlydHVhbCB2b2lk
IGFkZENoaWxkSWdub3JpbmdDb250aW51YXRpb24oUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggODk3YWE4OGVhZjFlYTJhNDZlZDEzNmY1MGY3YzYyNjIz
OTEzOWUwMS4uOWJhM2I1ZTdhMTk3MmNjODRmYzM1NDY0ZGMzZjVkYzIxZGE3NTRhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC0zMDIsNyArMzAy
LDcgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6c2hvd1BvcHVwKCkKICAgICAvLyBDb21wdXRlIHRo
ZSB0b3AgbGVmdCB0YWtpbmcgdHJhbnNmb3JtcyBpbnRvIGFjY291bnQsIGJ1dCB1c2UKICAgICAv
LyB0aGUgYWN0dWFsIHdpZHRoIG9mIHRoZSBlbGVtZW50IHRvIHNpemUgdGhlIHBvcHVwLgogICAg
IEZsb2F0UG9pbnQgYWJzVG9wTGVmdCA9IGxvY2FsVG9BYnNvbHV0ZShGbG9hdFBvaW50KCksIGZh
bHNlLCB0cnVlKTsKLSAgICBMYXlvdXRSZWN0IGFic0JvdW5kcyA9IGFic29sdXRlQm91bmRpbmdC
b3hSZWN0KCk7CisgICAgTGF5b3V0UmVjdCBhYnNCb3VuZHMgPSBhYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOwogICAgIGFic0JvdW5kcy5zZXRMb2NhdGlvbihyb3Vu
ZGVkSW50UG9pbnQoYWJzVG9wTGVmdCkpOwogICAgIG1fcG9wdXAtPnNob3coYWJzQm91bmRzLCBk
b2N1bWVudCgpLT52aWV3KCksCiAgICAgICAgIHNlbGVjdC0+b3B0aW9uVG9MaXN0SW5kZXgoc2Vs
ZWN0LT5zZWxlY3RlZEluZGV4KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKaW5kZXggYTQ1ZTYwZDg2NWRmMGE1NjExYTAxNjI2ZDBhZGVhNTZiMWQ3YmY5NC4u
OTQ5NWUzNDkxMmVlYjQ4Yzc4YmE1NTVhNDE2YmRmMDY2NTFiNTViOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTExNTUsNyArMTE1NSw3IEBAIHZvaWQg
UmVuZGVyT2JqZWN0OjpwYWludE91dGxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIGNvbnN0IExheW91dFJlCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZW5kVHJhbnNwYXJl
bmN5TGF5ZXIoKTsKIH0KIAotSW50UmVjdCBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdC
b3hSZWN0KGJvb2wgdXNlVHJhbnNmb3JtcykKK0ludFJlY3QgUmVuZGVyT2JqZWN0OjphYnNvbHV0
ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybXMpIGNvbnN0CiB7CiAgICAgaWYgKHVz
ZVRyYW5zZm9ybXMpIHsKICAgICAgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7CkBAIC0xMjA1
LDE0ICsxMjA1LDE0IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUZvY3VzUmluZ1F1YWRz
KFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykKIHZvaWQgUmVuZGVyT2JqZWN0OjphZGRBYnNvbHV0
ZVJlY3RGb3JMYXllcihJbnRSZWN0JiByZXN1bHQpCiB7CiAgICAgaWYgKGhhc0xheWVyKCkpCi0g
ICAgICAgIHJlc3VsdC51bml0ZShhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKKyAgICAgICAg
cmVzdWx0LnVuaXRlKGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkp
OwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJyZW50ID0gZmlyc3RDaGlsZCgpOyBjdXJyZW50
OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgY3VycmVudC0+YWRk
QWJzb2x1dGVSZWN0Rm9yTGF5ZXIocmVzdWx0KTsKIH0KIAogTGF5b3V0UmVjdCBSZW5kZXJPYmpl
Y3Q6OnBhaW50aW5nUm9vdFJlY3QoTGF5b3V0UmVjdCYgdG9wTGV2ZWxSZWN0KQogewotICAgIExh
eW91dFJlY3QgcmVzdWx0ID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBMYXlvdXRS
ZWN0IHJlc3VsdCA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7
CiAgICAgdG9wTGV2ZWxSZWN0ID0gcmVzdWx0OwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJy
ZW50ID0gZmlyc3RDaGlsZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxp
bmcoKSkKICAgICAgICAgY3VycmVudC0+YWRkQWJzb2x1dGVSZWN0Rm9yTGF5ZXIocmVzdWx0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBlY2Y1MjI3MjFhODBl
Y2NjN2YyNTM0ODczZWU5Mjg2MWQ1YTgxZmNhLi4wOGRhYjYzZWU0ZGZkMTJmN2E4NzI5ZWJjNWI1
ZGQzODIzMzU0ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBA
IC02MjEsMTIgKzYyMSwxNCBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJv
bSBhbiBvYmplY3QgdXAgdGhlIGNvbnRhaW5lcigpIGNoYWluLiBBc3NlcnRzIHRoYXQgbm9uZSBv
ZiB0aGUgaW50ZXJtZWRpYXRlIG9iamVjdHMgaGF2ZSB0cmFuc2Zvcm1zLgogICAgIExheW91dFNp
emUgb2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKFJlbmRlck9iamVjdCopIGNvbnN0OwogICAg
IAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNv
bnN0IExheW91dFBvaW50JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVj
dG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdCB7IH0KKwogICAgIC8v
IEZJWE1FOiB1c2VUcmFuc2Zvcm1zIHNob3VsZCBnbyBhd2F5IGV2ZW50dWFsbHkKLSAgICBJbnRS
ZWN0IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KGJvb2wgdXNlVHJhbnNmb3JtcyA9IGZhbHNlKTsK
KyAgICBJbnRSZWN0IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KGJvb2wgdXNlVHJhbnNmb3JtID0g
dHJ1ZSkgY29uc3Q7CisgICAgSW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5n
VHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIGFic29sdXRlQm91bmRpbmdCb3hSZWN0KGZhbHNl
KTsgfQogCiAgICAgLy8gQnVpbGQgYW4gYXJyYXkgb2YgcXVhZHMgaW4gYWJzb2x1dGUgY29vcmRz
IGZvciBsaW5lIGJveGVzCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZs
b2F0UXVhZD4mLCBib29sKiAvKndhc0ZpeGVkKi8gPSAwKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIC8qd2FzRml4ZWQqLyA9IDAp
IGNvbnN0IHsgfQogCiAgICAgdm9pZCBhYnNvbHV0ZUZvY3VzUmluZ1F1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCBl
ODg4NjFmM2QwNGEwODY4NDRkM2E3MGQyMTVhNDc0ZGU2ODkyNGM5Li42YjZkYTI0NDRlMTJjNzMy
NmYxOTZkNjRiODgxMjU4ODI3NGY5OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwCkBAIC0zMDEsNyArMzAxLDcgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBSZW5k
ZXJUZXh0OjpvcmlnaW5hbFRleHQoKSBjb25zdAogICAgIHJldHVybiAoZSAmJiBlLT5pc1RleHRO
b2RlKCkpID8gc3RhdGljX2Nhc3Q8VGV4dCo+KGUpLT5kYXRhSW1wbCgpIDogMDsKIH0KIAotdm9p
ZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNv
bnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkKK3ZvaWQgUmVuZGVyVGV4dDo6YWJz
b2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7CiAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3gg
PSBmaXJzdFRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpCiAgICAgICAg
IHJlY3RzLmFwcGVuZChlbmNsb3NpbmdMYXlvdXRSZWN0KEZsb2F0UmVjdChhY2N1bXVsYXRlZE9m
ZnNldCArIGJveC0+dG9wTGVmdCgpLCBib3gtPnNpemUoKSkpKTsKQEAgLTM4OCw3ICszODgsNyBA
QCBzdGF0aWMgSW50UmVjdCBlbGxpcHNpc1JlY3RGb3JCb3goSW5saW5lVGV4dEJveCogYm94LCB1
bnNpZ25lZCBzdGFydFBvcywgdW5zaWduZQogICAgIHJldHVybiBJbnRSZWN0KCk7CiB9CiAgICAg
Ci12b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRz
LCBib29sKiB3YXNGaXhlZCwgQ2xpcHBpbmdPcHRpb24gb3B0aW9uKQordm9pZCBSZW5kZXJUZXh0
OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQs
IENsaXBwaW5nT3B0aW9uIG9wdGlvbikgY29uc3QKIHsKICAgICBmb3IgKElubGluZVRleHRCb3gq
IGJveCA9IGZpcnN0VGV4dEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgewog
ICAgICAgICBJbnRSZWN0IGJvdW5kYXJpZXMgPSBib3gtPmNhbGN1bGF0ZUJvdW5kYXJpZXMoKTsK
QEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCwgQ2xpcHBpbgogICAgIH0KIH0KICAg
ICAKLXZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVh
ZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgYWJzb2x1
dGVRdWFkcyhxdWFkcywgd2FzRml4ZWQsIE5vQ2xpcHBpbmcpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmgKaW5kZXggNDAyMGQ4YWEzNzEyMmQxMjVkMWRjNGVmMTEwNzA5ZDE4
Zjk1MTM5OC4uNDJlOWFlYzk2YjNiMzJiMmQxOWUzYmM1MTk1YzEzZDQ3MWNhMDkzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCkBAIC01NCwxNCArNTQsMTQgQEAgcHVibGlj
OgogICAgIElubGluZVRleHRCb3gqIGNyZWF0ZUlubGluZVRleHRCb3goKTsKICAgICB2b2lkIGRp
cnR5TGluZUJveGVzKGJvb2wgZnVsbExheW91dCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1
dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRS
ZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CiAgICAg
dm9pZCBhYnNvbHV0ZVJlY3RzRm9yUmFuZ2UoVmVjdG9yPEludFJlY3Q+JiwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQgPSBVSU5UX01BWCwgYm9vbCB1c2VTZWxl
Y3Rpb25IZWlnaHQgPSBmYWxzZSwgYm9vbCogd2FzRml4ZWQgPSAwKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOwor
ICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCog
d2FzRml4ZWQpIGNvbnN0OwogICAgIHZvaWQgYWJzb2x1dGVRdWFkc0ZvclJhbmdlKFZlY3RvcjxG
bG9hdFF1YWQ+JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQg
PSBVSU5UX01BWCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSwgYm9vbCogd2FzRml4
ZWQgPSAwKTsKIAogICAgIGVudW0gQ2xpcHBpbmdPcHRpb24geyBOb0NsaXBwaW5nLCBDbGlwVG9F
bGxpcHNpcyB9OwotICAgIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJv
b2wqIHdhc0ZpeGVkID0gMCwgQ2xpcHBpbmdPcHRpb24gPSBOb0NsaXBwaW5nKTsKKyAgICB2b2lk
IGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCA9IDAsIENs
aXBwaW5nT3B0aW9uID0gTm9DbGlwcGluZykgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFZpc2libGVQ
b3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZS5jcHAKaW5kZXggMTcwOTdiMWZiYWIzNjE4MDg4ZTBiNDg5MzdjNjA4ZTVjMmQ4NGNmYS4uZmY5
MDc3MGYwOTU1Nzg5MTA3NWRiOTFlMjllMWRmZTc4NzA0YWZiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAK
QEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6c2hv
d1BvcHVwKCkKICAgICAgICAgbV9zZWFyY2hQb3B1cC0+c2F2ZVJlY2VudFNlYXJjaGVzKG5hbWUs
IG1fcmVjZW50U2VhcmNoZXMpOwogICAgIH0KIAotICAgIG1fc2VhcmNoUG9wdXAtPnBvcHVwTWVu
dSgpLT5zaG93KGFic29sdXRlQm91bmRpbmdCb3hSZWN0KHRydWUpLCBkb2N1bWVudCgpLT52aWV3
KCksIC0xKTsKKyAgICBtX3NlYXJjaFBvcHVwLT5wb3B1cE1lbnUoKS0+c2hvdyhhYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdCgpLCBkb2N1bWVudCgpLT52aWV3KCksIC0xKTsKIH0KIAogdm9pZCBSZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmhpZGVQb3B1cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAppbmRleCBkYmE4NzRkNGFhY2VkYTE1MTNl
NjllNmFlMGQ2NTA2ZWI0MzA4OTk1Li5kMzRkMDc0ODQ0NjNhOWY2NTIyNmY1ZDEyZmMxNzA4NzU3
ODMzMGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVT
YWZhcmkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFy
aS5jcHAKQEAgLTEwODAsNyArMTA4MCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50
U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWluCiAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGlucHV0LT5yZW5kZXJlcigpOwogICAgIEFTU0VSVChy
ZW5kZXJlcik7CiAKLSAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVC
b3VuZGluZ0JveFJlY3QoKTsKKyAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJz
b2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKIAogICAgIHBhaW50VGhl
bWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblBhcnQsIHBhaW50SW5m
by5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNpemVGcm9t
UmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7
CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTEzNCw3ICsxMTM0LDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJlbmRlck9iamVjdCog
bywgY29uc3QKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaW5wdXQtPnJlbmRlcmVyKCk7
CiAgICAgQVNTRVJUKHJlbmRlcmVyKTsKIAotICAgIEludFJlY3Qgc2VhcmNoUmVjdCA9IHJlbmRl
cmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIEludFJlY3Qgc2VhcmNoUmVjdCA9
IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOwog
CiAgICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJjaEZpZWxkUmVzdWx0c0RlY29y
YXRpb25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHNlYXJjaFJl
Y3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qoc2VhcmNoUmVjdCwgc2VhcmNoRmllbGRTaXplcygpKSwg
ZGV0ZXJtaW5lU3RhdGUobykpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTExNTcsNyArMTE1Nyw3
IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9u
KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IGlucHV0LT5yZW5kZXJlcigpOwogICAgIEFTU0VSVChyZW5kZXJlcik7CiAKLSAgICBJbnRSZWN0
IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBJ
bnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25v
cmluZ1RyYW5zZm9ybXMoKTsKIAogICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFy
Y2hGaWVsZFJlc3VsdHNCdXR0b25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCksIHNlYXJjaFJlY3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qoc2VhcmNoUmVjdCwgc2VhcmNo
RmllbGRTaXplcygpKSwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCAxZmVmYWM0ZjAxOTJlYTNl
YjA1NDE1Y2IzNDM0YWY1YjA5ZjZhNzQxLi5mNDIxZjk4MWRhMjY3ZGQ1N2Q1OTk0YWJjM2VjMWE3
NTY1ZDE4MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0z
MjksMTIgKzMyOSwxMiBAQCB2b2lkIFJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgSQogICAgICAgICByZWN0ID0g
bV9sYXllci0+dHJhbnNmb3JtKCktPm1hcFJlY3QocmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyVmll
dzo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCit2b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUmVjdHMo
VmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0KSBjb25zdAogewogICAgIHJlY3RzLmFwcGVuZChMYXlvdXRSZWN0KGFjY3VtdWxhdGVk
T2Zmc2V0LCBtX2xheWVyLT5zaXplKCkpKTsKIH0KIAotdm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0
ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFJl
bmRlclZpZXc6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3
YXNGaXhlZCkgY29uc3QKIHsKICAgICBpZiAod2FzRml4ZWQpCiAgICAgICAgICp3YXNGaXhlZCA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggZTZkN2Q4Zjc1
NWY1Yjc3YmI3ZDk5MDg3MGU1YTZhZGFhYTQ5ZmU2Ny4uOWE2ZjYzZDkwZmJmMjFhNjA3YTVkZDUz
ZDYyMjBjOGFmNDFhZGY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBA
IC04Niw4ICs4Niw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcHJpbnRpbmcoKSBjb25zdDsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0
IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7Ci0gICAgdmlydHVhbCB2b2lkIGFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVh
bCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICB2b2lkIHNldE1heGltYWxPdXRsaW5lU2l6
ZShpbnQgbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0Jsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxv
Y2suY3BwCmluZGV4IDJjODE1OTA4ZWJmNmI5ODkwNjc1N2Q4YmM1NGJlNjk0N2E3MTc5ZTMuLjdi
MTZhNGQ1YmZjOWNiN2JiNjVlNjViYjE1YWJjOGUyZjZlYmFlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwCkBAIC03OCw3ICs3OCw3IEBA
IHZvaWQgUmVuZGVyU1ZHQmxvY2s6OnVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpCiAgICAg
c2V0SGFzT3ZlcmZsb3dDbGlwKGZhbHNlKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdCbG9jazo6YWJz
b2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpCit2b2lk
IFJlbmRlclNWR0Jsb2NrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0
IExheW91dFBvaW50JikgY29uc3QKIHsKICAgICAvLyBUaGlzIGNvZGUgcGF0aCBzaG91bGQgbmV2
ZXIgYmUgdGFrZW4gZm9yIFNWRywgYXMgd2UncmUgYXNzdW1pbmcgdXNlVHJhbnNmb3Jtcz10cnVl
IGV2ZXJ5d2hlcmUsIGFic29sdXRlUXVhZHMgc2hvdWxkIGJlIHVzZWQuCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0Jsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Js
b2NrLmgKaW5kZXggMjJjMWYxOGUzNmUwMjMxMGJlN2U3ZDNlNGVjODEyM2EyOWI1YTcxNC4uNThj
ZjI2MjBhOTgxOGQ2NGFlMjc4MzRmZWQ4ZDQxYjcxNjkyMDQ3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaApAQCAtMzgsNyArMzgsNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPik7
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpOwogCi0gICAg
dmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVS
ZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOwogICAg
IHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5k
ZXJTdHlsZSogbmV3U3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwCmluZGV4IGQyOWQ4NWVjOTM5NzFk
ZWUxOGRiMTJiZDhlNzgwNWY1ODE3NzJmMWUuLjg5NWIyNTQ0OTAwMTIzZmRiZjNlYTAyNTg1NGNi
OWNlZGJlMDRmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBS
ZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OnBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBv
aW50JikKICAgICAvLyBUaGlzIHN1YnRyZWUgZG9lcyBub3QgcGFpbnQuCiB9CiAKLXZvaWQgUmVu
ZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+Jiwg
Ym9vbCopCit2b2lkIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcjo6YWJzb2x1dGVRdWFkcyhWZWN0
b3I8RmxvYXRRdWFkPiYsIGJvb2wqKSBjb25zdAogewogICAgIC8vIFRoaXMgc3VidHJlZSBkb2Vz
IG5vdCB0YWtlIHVwIHNwYWNlIG9yIHBhaW50CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaAppbmRleCBlZmZmOTIx
NTFkMmMzNjFhNmQwYzhkOTc3N2IzMWY2MzQ0NjRkMTBjLi5mMjZjNWZjNjFhMzdmODIwN2Q0ZDY0
OWJlNjgwOWQ1MmEyZjg4MjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmKTsKICAgICAKICAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0
KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYs
IGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBu
b2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24pOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAppbmRleCAw
OTc3MGVmYmYwMjdmYWM5ZWJhN2RiYzdjNGVhNDM3ZjZhYTAxMGI5Li40YzkwNTgwZjEzNTliZjY4
MWM3NzNhZDVkOGJiODE2Y2VkNDJhNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCkBAIC04Miw5ICs4Miw5IEBAIHZvaWQgUmVuZGVy
U1ZHSW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyCiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcih0
aGlzLCByZXBhaW50Q29udGFpbmVyLCB1c2VUcmFuc2Zvcm1zLCBmaXhlZCwgdHJhbnNmb3JtU3Rh
dGUsIHdhc0ZpeGVkKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdJbmxpbmU6OmFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkKK3ZvaWQgUmVuZGVyU1ZH
SW5saW5lOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2Fz
Rml4ZWQpIGNvbnN0CiB7Ci0gICAgUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBSZW5kZXJTVkdUZXh0
Ojpsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3IodGhpcyk7CisgICAgY29uc3QgUmVuZGVyT2Jq
ZWN0KiBvYmplY3QgPSBSZW5kZXJTVkdUZXh0Ojpsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3Io
dGhpcyk7CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKaW5kZXggMGE2MDgzN2Y0Nzc1
OTY5MDM3ZTg0OTc1YmNmMjAwODA2NmJiODJmNy4uZDJmYTFjYzUyNDAyNGI2MWFhN2Q0YWE3N2E0
ZThkZDhlNTYwODQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91
dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJl
Y3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBtYXBMb2Nh
bFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29s
IHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgYm9vbCogd2FzRml4
ZWQgPSAwKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIElubGluZUZsb3dCb3gqIGNyZWF0ZUlubGluZUZsb3dCb3goKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5j
cHAKaW5kZXggMTRjMWRiOGUwZjkzZWFmNTU4YWVlYzg5MmE4NzIzMjNjZDEwZDcyMy4uZmJlNDkz
YjU0ZGNkZWMxYzU3NjdhNDc4YWE2NjM4NmE1NDAzNGJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKQEAgLTcwLDEz
ICs3MCwxMyBAQCBMYXlvdXRSZWN0IFJlbmRlclNWR01vZGVsT2JqZWN0OjpvdXRsaW5lQm91bmRz
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcgogICAgIHJldHVybiBjb250YWluZXJS
ZWxhdGl2ZVF1YWQuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdN
b2RlbE9iamVjdDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlv
dXRQb2ludCYpCit2b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVJlY3RzKFZlY3Rv
cjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JikgY29uc3QKIHsKICAgICAvLyBUaGlz
IGNvZGUgcGF0aCBzaG91bGQgbmV2ZXIgYmUgdGFrZW4gZm9yIFNWRywgYXMgd2UncmUgYXNzdW1p
bmcgdXNlVHJhbnNmb3Jtcz10cnVlIGV2ZXJ5d2hlcmUsIGFic29sdXRlUXVhZHMgc2hvdWxkIGJl
IHVzZWQuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHTW9k
ZWxPYmplY3Q6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3
YXNGaXhlZCkKK3ZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBxdWFkcy5h
cHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChzdHJva2VCb3VuZGluZ0JveCgpLCBmYWxzZSwgd2Fz
Rml4ZWQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHTW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHTW9kZWxPYmplY3QuaAppbmRleCBjMjhkM2M2NjA3ZDU1NGVhMjBjMmJhNWM1YWVlZWRjYzJk
ZTczYjc5Li43MDQxZDQ0OWVmNjMyYzRmYzMwMDkyNjBmOTJjMDAwM2IwMTBkN2UxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5o
CkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RG
b3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRS
ZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKICAgICB2aXJ0dWFsIExheW91dFJlY3Qg
b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIExheW91dFBvaW50KikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVS
ZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQpOwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3Rv
cjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBi
b29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRh
aW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFu
c2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIGJvb2wqIHdhc0ZpeGVkID0gMCkg
Y29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2Us
IGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCBhZjQzOWI1ZDM4ZjA4NGYwMmE5MjFiMmJh
ZmEwZDliMWFiZDQ3MDgxLi4yYTdkODBjZjJlZjUyMWE5NGZiZDk3NzIyMGIxZTRlZTEyNWQ2MGQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAK
QEAgLTIyNSw3ICsyMjUsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyU1ZHVGV4dDo6cG9zaXRp
b25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRlbgogICAgIHJldHVybiBj
bG9zZXN0Qm94LT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KExheW91dFBvaW50KHBvaW50
SW5Db250ZW50cy54KCksIGNsb3Nlc3RCb3gtPnkoKSkpOwogfQogCi12b2lkIFJlbmRlclNWR1Rl
eHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhl
ZCkKK3ZvaWQgUmVuZGVyU1ZHVGV4dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYg
cXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIHF1YWRzLmFwcGVuZChsb2NhbFRv
QWJzb2x1dGVRdWFkKHN0cm9rZUJvdW5kaW5nQm94KCksIGZhbHNlLCB3YXNGaXhlZCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAppbmRleCBiM2Uw
ZjQzZjhmNjQ5YzdmYTY3ZTBiODQyMDM2N2FmMGQ2ZTkyZDNlLi5hMGFkYTRjYjRlZmU5ODBjYWJl
MjdhOWZhNTA0YmFhMzkwMTg5ZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1RleHQuaApAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IHZvaWQgbGF5b3V0KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNv
bXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggZDY0ZDBiN2M0NzY4ZjEzY2ViYjA4Y2FlZDM4MTA0YzI4
YWJkZWFkNi4uZDdhODE1NDBmYTBlZGNkMWE5ZmIzNDI1NzA5NGRmZjAyNTJjNTAwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIFBhc3NSZWZQ
dHI8Q2xpZW50UmVjdD4gSW50ZXJuYWxzOjpib3VuZGluZ0JveChFbGVtZW50KiBlbGVtZW50LCBF
eGNlcHRpb25Db2RlJiBlCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQtPnJl
bmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIENsaWVudFJlY3Q6
OmNyZWF0ZSgpOwotICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUocmVuZGVyZXItPmFic29s
dXRlQm91bmRpbmdCb3hSZWN0KCkpOworICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUocmVu
ZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkpOwogfQog
CiB1bnNpZ25lZCBJbnRlcm5hbHM6Om1hcmtlckNvdW50Rm9yTm9kZShOb2RlKiBub2RlLCBFeGNl
cHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCmluZGV4IDVmMTJlMTAx
NDM5ZjVmYmYwZDZjZGNiMTAzNDExNzA2MWI1OTI3ZjQuLjA3ZjJkZjk4N2QyY2ZmNTZkZmM4ZDg3
ZDdhNWNhYmI1YzE5NjZlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJm
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcApAQCAtMTc1
MSw3ICsxNzUxLDcgQEAgUVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlOjpRV2ViSGl0VGVzdFJlc3Vs
dFByaXZhdGUoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdAogICAgIGltYWdlVXJsID0gaGl0
VGVzdC5hYnNvbHV0ZUltYWdlVVJMKCk7CiAgICAgaW5uZXJOb2RlID0gaGl0VGVzdC5pbm5lck5v
ZGUoKTsKICAgICBpbm5lck5vblNoYXJlZE5vZGUgPSBoaXRUZXN0LmlubmVyTm9uU2hhcmVkTm9k
ZSgpOwotICAgIGJvdW5kaW5nUmVjdCA9IGlubmVyTm9uU2hhcmVkTm9kZSA/IGlubmVyTm9uU2hh
cmVkTm9kZS0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QodHJ1ZSkgOiBJbnRS
ZWN0KCk7CisgICAgYm91bmRpbmdSZWN0ID0gaW5uZXJOb25TaGFyZWROb2RlID8gaW5uZXJOb25T
aGFyZWROb2RlLT5yZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpIDogSW50UmVj
dCgpOwogICAgIFdlYkNvcmU6OkltYWdlICppbWcgPSBoaXRUZXN0LmltYWdlKCk7CiAgICAgaWYg
KGltZykgewogICAgICAgICBRUGl4bWFwICpwaXggPSBpbWctPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDdjNDIzY2EwZjE4NzZhZGVjNjZmNTAwZWE3YjAy
NWI0NjZhMDNlOTYuLjJjZjkwN2NjNzU5MTE3MWQyY2VhOTZlZjIzZjJlNGYzMWYxNDM4N2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDktMjkgIEZhZHkgU2FtdWVsICA8
ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDogTWFrZSBSZW5k
ZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVkIG1ldGhvZHMg
Y29uc3QgYW5kIG1ha2UgaXRzIHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxvbmdlciBkZWZh
dWx0IHRvIGZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02OTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViSGl0VGVzdFJlc3VsdFByaXZh
dGU6OlFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSk6CisKIDIwMTEtMDktMjcgIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHI5NjEwOCwgcjk2MTExLCByOTYxMTMsIGFuZCByOTYxMTYuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMjU1YjkxM2UzZDNiOTdhMjkzYzMzYTcwM2I5MzU1ZWE4NjRhYTM5Yy4uZTk4ZjVjY2JhMDVm
OTA1M2FhZjk0MzRmYWU1ZTRkODNkNTFhZWI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDExLTA5LTI5ICBGYWR5IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIENvZGUgY2xlYW4tdXA6IE1ha2UgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCBhbmQgYXNzb2NpYXRlZCBtZXRob2RzIGNvbnN0IGFuZCBtYWtlIGl0cyBwYXJhbWV0ZXIg
dXNlVHJhbnNmb3JtcyBubyBsb25nZXIgZGVmYXVsdCB0byBmYWxzZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwMDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdpbi9XZWJLaXQyLmRlZjoKKyAgICAg
ICAgKiB3aW4vV2ViS2l0MkNGTGl0ZS5kZWY6CisKIDIwMTEtMDktMjkgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEZvcmNlIHNpbmds
ZSBoZWFkZXIgaW5jbHVkZSBpbiBXZWJLaXQyIEdUSysgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYK
aW5kZXggZmE1MThlMzQwMmExMTI1NDYxOTBiYmJkNTIxMmY2OTQ1OTRmZDEwMi4uYjEwOTBkOTc5
YTExNWRlM2QyMjMyMzczNjQ1ZDk4MzYzOWQ4OTlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgpA
QCAtMTQzLDcgKzE0Myw2IEBAIEVYUE9SVFMKICAgICAgICAgPz8wQ2xpZW50UmVjdEBXZWJDb3Jl
QEBBQUVAWFoKICAgICAgICAgPz8wU3RyaW5nQFdURkBAUUFFQFBCREBaCiAgICAgICAgID8/MFN0
cmluZ0BXVEZAQFFBRUBQQl9XQFoKLSAgICAgICAgP2Fic29sdXRlQm91bmRpbmdCb3hSZWN0QFJl
bmRlck9iamVjdEBXZWJDb3JlQEBRQUU/QVZJbnRSZWN0QDJAX05AWgogICAgICAgICA/YWRkQEF0
b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEJE
QFoKICAgICAgICAgP2FkZFNsb3dDYXNlQEF0b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVm
UHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEFWU3RyaW5nSW1wbEAyQEBaCiAgICAgICAgID9jYWNo
ZURPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBBVlN0cnVjdHVyZUBKU0NAQFBBVkpTRE9NR2xvYmFs
T2JqZWN0QDFAUEFWMjNAUEJVQ2xhc3NJbmZvQDNAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZM
aXRlLmRlZgppbmRleCA4NDgyYjQ5NzE2YzcxY2IyYzMyZDdjMGZiYzk1MmYyN2Y0MWY0ZDFjLi40
YzI5YzQ0NTM1ODJkMzlmMzk1MDM1MTE4NDA2OGQyZjM0M2Y4YjcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2lu
L1dlYktpdDJDRkxpdGUuZGVmCkBAIC0xMzUsNyArMTM1LDYgQEAgRVhQT1JUUwogICAgICAgICA/
PzBTdHJpbmdAV1RGQEBRQUVAUEJfV0BaCiAgICAgICAgID8/MU5vZGVSZW5kZXJpbmdDb250ZXh0
QFdlYkNvcmVAQFFBRUBYWgogICAgICAgICA/PzFSYW5nZUBXZWJDb3JlQEBRQUVAWFoKLSAgICAg
ICAgP2Fic29sdXRlQm91bmRpbmdCb3hSZWN0QFJlbmRlck9iamVjdEBXZWJDb3JlQEBRQUU/QVZJ
bnRSZWN0QDJAX05AWgogICAgICAgICA/YWRkQEF0b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNz
UmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEJEQFoKICAgICAgICAgP2FkZFNsb3dDYXNlQEF0
b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEFW
U3RyaW5nSW1wbEAyQEBaCiAgICAgICAgID9jYWNoZURPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBB
VlN0cnVjdHVyZUBKU0NAQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWMjNAUEJVQ2xhc3NJbmZv
QDNAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3Vy
Y2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDdkMzljNDVhYzA5ZTRiYmUyMzM1OGJk
M2I2NzU5YTQxNDAzYTkxMGMuLmVhYjljY2UwN2UxNDMzNGY1MDMxNzAxM2RlODFiZjdmZDVhODNk
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291
cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtNDMsNyArNDMsNyBAQCBfWk43V2ViQ29y
ZTExRXZlbnRUYXJnZXQ4dG9TdHJlYW1FdjsKIF9aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTExc2V0
RGlzYWJsZWRFYjsKIF9aTjdXZWJDb3JlMTFtZW1vcnlDYWNoZUV2OwogX1pON1dlYkNvcmUxMkpT
RE9NV3JhcHBlcjM0dmlydHVhbEZ1bmN0aW9uVG9QcmV2ZW50V2Vha1Z0YWJsZUV2OwotX1pON1dl
YkNvcmUxMlJlbmRlck9iamVjdDIzYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RFYjsKK19aTks3V2Vi
Q29yZTEyUmVuZGVyT2JqZWN0MjNhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEViCiBfWk43V2ViQ29y
ZTEzY3JlYXRlV3JhcHBlckVQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0
RVBOU180Tm9kZUU7CiBfWk43V2ViQ29yZTE1c2V0RE9NRXhjZXB0aW9uRVBOM0pTQzlFeGVjU3Rh
dGVFaTsKIF9aTjdXZWJDb3JlMTZIVE1MSW5wdXRFbGVtZW50MTdzZXRTdWdnZXN0ZWRWYWx1ZUVS
S04zV1RGNlN0cmluZ0U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109200</attachid>
            <date>2011-09-29 14:02:27 -0700</date>
            <delta_ts>2011-09-30 10:44:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69009-20110929170226.patch</filename>
            <type>text/plain</type>
            <size>46472</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYzMjUKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCA5NGZlNGEwZWIzZDkzOTM0ZjYzZmRkN2VhZTQzM2Q1MjUzNjM4N2MxLi4xZDNh
OTEwYjY3ZWZiOTQ1ZGJlNjRjYTYwNmExZGJmYzQ1YmE1NjAxIDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDktMjkgIEZhZHkgU2Ft
dWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDogTWFr
ZSBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVkIG1l
dGhvZHMgY29uc3QgYW5kIG1ha2UgaXRzIHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxvbmdl
ciBkZWZhdWx0IHRvIGZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02OTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMS0wOS0y
OSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBCdW1wIHZlcnNpb24gdG8gMS43LjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNzY3ZmRjYzQyMjFhNmRi
MzQyNWVmNmMyZTRiNTlmMGEzMjU0MDU4Li5hNzBhMDVmNTBmZTA3Y2U0N2ZlODAyN2U0MTYzMWNj
MmMxMjlhYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODggQEAKKzIwMTEtMDktMjkgIEZhZHkg
U2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDog
TWFrZSBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVk
IG1ldGhvZHMgY29uc3QgYW5kIG1ha2UgaXRzIHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxv
bmdlciBkZWZhdWx0IHRvIGZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02OTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVwY29taW5nIHBhdGNoZXMgbWF5IG1ha2UgdXNlIG9mIGFic29sdXRlQm91
bmRpbmdCb3hSZWN0IG9uIGEgY29uc3QgUmVuZGVyT2JqZWN0LCBzbyB0aGlzIG5lZWRlZCB0byBi
ZSBmaXhlZC4KKyAgICAgICAgTWFraW5nIHVzZVRyYW5zZm9ybXMgZGVmYXVsdCB0byB0cnVlIGlu
c3RlYWQgb2YgZmFsc2UgYW5kIHJlcGxhY2luZyBpbnN0YW5jZXMgb2YgYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoKSB0bworICAgICAgICBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJh
bnNmb3JtcygpIHBhcnRpYWxseSBhZGRyZXNlcyAvLyBGSVhNRTogdXNlVHJhbnNmb3JtcyBzaG91
bGQgZ28gYXdheSBldmVudHVhbGx5LgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAg
ICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2NyZWVu
UmVjdCk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
Z2V0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZW5kZXJSZWN0KToKKyAgICAgICAg
KiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2xpZGVyVGh1bWJFbGVtZW50OjpzZXRQb3NpdGlvbkZyb21Qb2ludCk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzdGFydFNwZWVjaElucHV0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcDoKKyAgICAgICAgKiBwbHVnaW5z
L0lGcmFtZVNoaW1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFBsdWdpbk9jY2x1
c2lvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
RnJhbWU6OmZsYXR0ZW5GcmFtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRlUXVhZHMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6OnNob3dQ
b3B1cCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWRkQWJzb2x1dGVSZWN0Rm9yTGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpwYWludGluZ1Jvb3RSZWN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0
ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmFic29sdXRlUmVjdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZTo6c2hvd1BvcHVwKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVT
YWZhcmkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2Vh
cmNoRmllbGRDYW5jZWxCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZh
cmk6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clZpZXc6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6YWJz
b2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR0Jsb2NrOjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0Jsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5D
b250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVy
OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRl
bkNvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6YWJzb2x1dGVRdWFkcyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmFic29sdXRl
UXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
Ym91bmRpbmdCb3gpOgorCiAyMDExLTA5LTI5ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1ha2Ugc2VhcmNoLWluLXJlc291
cmNlIHRlc3Qgc2ltcGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNDcwNDFiMDAwODcyZWRj
M2ViNDU4ZWU5ZjhjOTdiMjMwYzhlZGEyYS4uMzExYTZkNzRmZWQ4M2U5ODU1MTk2MzI0Zjg0ZGIw
NmNiZTE4NzNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTI4Myw3ICsyODMsNiBAQCBfX1pO
N1dlYkNvcmUxMlByaW50Q29udGV4dDlzcG9vbFJlY3RFUk5TXzE1R3JhcGhpY3NDb250ZXh0RVJL
TlNfN0ludFJlY3RFCiBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dEMxRVBOU181RnJhbWVFCiBf
X1pON1dlYkNvcmUxMlByaW50Q29udGV4dEQxRXYKIF9fWk43V2ViQ29yZTEyUmVuZGVyT2JqZWN0
MTZyZXBhaW50UmVjdGFuZ2xlRVJLTlNfN0ludFJlY3RFYgotX19aTjdXZWJDb3JlMTJSZW5kZXJP
YmplY3QyM2Fic29sdXRlQm91bmRpbmdCb3hSZWN0RWIKIF9fWk43V2ViQ29yZTEyUmVuZGVyV2lk
Z2V0MjhyZXN1bWVXaWRnZXRIaWVyYXJjaHlVcGRhdGVzRXYKIF9fWk43V2ViQ29yZTEyUmVuZGVy
V2lkZ2V0MjlzdXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlc0V2CiBfX1pON1dlYkNvcmUxMlNo
YXJlZEJ1ZmZlcjEwd3JhcE5TRGF0YUVQNk5TRGF0YQpAQCAtMTExMiw2ICsxMTExLDcgQEAgX19a
Tks3V2ViQ29yZTExU2NyaXB0VmFsdWU5Z2V0U3RyaW5nRVBOM0pTQzlFeGVjU3RhdGVFUk4zV1RG
NlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTEyZGF0YWJhc2VQYXRoRXYKIF9f
Wk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTI0c2hvdWxkU3RvcFRocmVhZEFjdGl2aXR5RXYKIF9f
Wk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTlpc0VuYWJsZWRFdgorX19aTks3V2ViQ29yZTEyUmVu
ZGVyT2JqZWN0MjNhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEViCiBfX1pOSzdXZWJDb3JlMTJSZW5k
ZXJPYmplY3QxNGVuY2xvc2luZ0xheWVyRXYKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDE1
bG9jYWxUb0Fic29sdXRlRVJLTlNfMTBGbG9hdFBvaW50RWJiCiBfX1pOSzdXZWJDb3JlMTJSZW5k
ZXJPYmplY3Q0dmlld0V2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYjE2NjIzYmFhYzkzMTAx
YjEzYzIzNGQ0MzM0NTY3YmUyZTY3ZTYwZS4uZTgwMzNlMzUyZDM3YWYzYjdiMDBjMjI3ZWU3MzJj
YjRkMGJkZjQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNTczLDcgKzU3Myw4IEBAIExh
eW91dFJlY3QgRWxlbWVudDo6c2NyZWVuUmVjdCgpIGNvbnN0CiB7CiAgICAgaWYgKCFyZW5kZXJl
cigpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwotICAgIHJldHVybiByZW5kZXJlcigp
LT52aWV3KCktPmZyYW1lVmlldygpLT5jb250ZW50c1RvU2NyZWVuKHJlbmRlcmVyKCktPmFic29s
dXRlQm91bmRpbmdCb3hSZWN0KCkpOworICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBwcm9iYWJs
eSByZXNwZWN0IHRyYW5zZm9ybXMKKyAgICByZXR1cm4gcmVuZGVyZXIoKS0+dmlldygpLT5mcmFt
ZVZpZXcoKS0+Y29udGVudHNUb1NjcmVlbihyZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNob3Vs
ZElnbm9yZUF0dHJpYnV0ZUNhc2UoY29uc3QgRWxlbWVudCogZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRl
eCBiMzM2MzQ5MTM3YWZkNDk2MjJjNjNkZGE2Yjg0ODZlZjZhYTQwYTRiLi40MWMyOWQ0MDBkNjY4
OWM3ZmE0MmUwYWRmYTcyMzc2NTUxMjQyYzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC04MjMsNyAr
ODIzLDcgQEAgUmVuZGVyQm94TW9kZWxPYmplY3QqIE5vZGU6OnJlbmRlckJveE1vZGVsT2JqZWN0
KCkgY29uc3QKIExheW91dFJlY3QgTm9kZTo6Z2V0UmVjdCgpIGNvbnN0CiB7CiAgICAgaWYgKHJl
bmRlcmVyKCkpCi0gICAgICAgIHJldHVybiByZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCh0cnVlKTsKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdC
b3hSZWN0KCk7CiAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKIH0KICAgICAKQEAgLTgzNSw3ICs4
MzUsNyBAQCBMYXlvdXRSZWN0IE5vZGU6OnJlbmRlclJlY3QoYm9vbCogaXNSZXBsYWNlZCkKICAg
ICB3aGlsZSAocmVuZGVyZXIgJiYgIXJlbmRlcmVyLT5pc0JvZHkoKSAmJiAhcmVuZGVyZXItPmlz
Um9vdCgpKSB7CiAgICAgICAgIGlmIChyZW5kZXJlci0+aXNSZW5kZXJCbG9jaygpIHx8IHJlbmRl
cmVyLT5pc0lubGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpIHx8IHJlbmRlcmVyLT5pc1JlcGxhY2Vk
KCkpIHsKICAgICAgICAgICAgICppc1JlcGxhY2VkID0gcmVuZGVyZXItPmlzUmVwbGFjZWQoKTsK
LSAgICAgICAgICAgIHJldHVybiByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QodHJ1
ZSk7CisgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0
KCk7CiAgICAgICAgIH0KICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVu
dC5jcHAKaW5kZXggNWQxNzhhZjA3OWFiNGNmYmQ5ZDBmNzIwNDNmYWYzZDg3YzQ4YmNiOC4uZmM4
MjM3Y2U1MDMzYWE3NjgyZWM3NzhjZDI3MjMyZDFlNDhiYzA5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCkBAIC00MCw2ICs0MCw3
IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQu
aCIKICNpbmNsdWRlICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaCIKKyNpbmNsdWRlICJS
ZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJTbGlkZXIuaCIKICNpbmNsdWRlICJSZW5k
ZXJUaGVtZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKQEAgLTIxNiw3ICsyMTcsOCBAQCB2
b2lkIFNsaWRlclRodW1iRWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tUG9pbnQoY29uc3QgTGF5b3V0
UG9pbnQmIHBvaW50KQogICAgIC8vIFdlIG5lZWQgdG8gY2FsY3VsYXRlIGN1cnJlbnRQb3NpdGlv
biBmcm9tIGFic29sdXRlIHBvaW50cyBiZWNhdWUgdGhlCiAgICAgLy8gcmVuZGVyZXIgZm9yIHRo
aXMgbm9kZSBpcyB1c3VhbGx5IG9uIGEgbGF5ZXIgYW5kIHJlbmRlckJveCgpLT54KCkgYW5kCiAg
ICAgLy8geSgpIGFyZSB1bnVzYWJsZS4KLSAgICBMYXlvdXRQb2ludCBhYnNvbHV0ZVRodW1iT3Jp
Z2luID0gcmVuZGVyQm94KCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkubG9jYXRpb24oKTsK
KyAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgcHJvYmFibHkgcmVzcGVjdCB0cmFuc2Zvcm1zIAor
ICAgIExheW91dFBvaW50IGFic29sdXRlVGh1bWJPcmlnaW4gPSByZW5kZXJCb3goKS0+YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKS5sb2NhdGlvbigpOwogICAgIExh
eW91dFBvaW50IGFic29sdXRlU2xpZGVyQ29udGVudE9yaWdpbiA9IHJvdW5kZWRMYXlvdXRQb2lu
dChpbnB1dC0+cmVuZGVyZXIoKS0+bG9jYWxUb0Fic29sdXRlKCkpOwogICAgIGlmIChpc1ZlcnRp
Y2FsKSB7CiAgICAgICAgIHRyYWNrU2l6ZSA9IGlucHV0LT5yZW5kZXJCb3goKS0+Y29udGVudEhl
aWdodCgpIC0gcmVuZGVyQm94KCktPmhlaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggYmYxODVj
ZjdiMGYwOTZiOTNjODg4MzIwNmJhMzM3NGQwNDkzNDVkNS4uMGJkZGMyMDQwNDNkZDUzYmVkNmE4
MDQwYWNiZmNiOGJjZmMyMDc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAj
aW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5k
ZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgpAQCAtNTM1LDcgKzUzNiw4IEBAIHZvaWQgSW5wdXRG
aWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OnN0YXJ0U3BlZWNoSW5wdXQoKQogICAgIFJlZlB0cjxI
VE1MSW5wdXRFbGVtZW50PiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihz
aGFkb3dBbmNlc3Rvck5vZGUoKSk7CiAgICAgQXRvbWljU3RyaW5nIGxhbmd1YWdlID0gaW5wdXQt
PmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpOwogICAgIFN0cmluZyBncmFtbWFyID0gaW5wdXQt
PmdldEF0dHJpYnV0ZSh3ZWJraXRncmFtbWFyQXR0cik7Ci0gICAgSW50UmVjdCByZWN0ID0gcmVu
ZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICAvLyBGSVhNRTogdGhpcyBz
aG91bGQgcHJvYmFibHkgcmVzcGVjdCB0cmFuc2Zvcm1zCisgICAgSW50UmVjdCByZWN0ID0gcmVu
ZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKICAg
ICBpZiAoc3BlZWNoSW5wdXQoKS0+c3RhcnRSZWNvZ25pdGlvbihtX2xpc3RlbmVySWQsIHJlY3Qs
IGxhbmd1YWdlLCBncmFtbWFyLCBkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKICAgICAg
ICAgc2V0U3RhdGUoUmVjb3JkaW5nKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0RPTU5vZGVIaWdobGlnaHRlci5jcHAKaW5kZXggZTY4OWI1MjUwYjZhODY4ZWE1YTU1MGQ2ZGFh
YmEyOTQ1YTc4ZjY5ZC4uZjhiZmI2MGY5YWRlZDIwYjJlMTA2ODBhMDhjOTY0Mjg0ZGE4NGY1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAK
QEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgSGlnaGxpZ2h0RGF0YSogaGlnaGxpZ2h0RGF0YSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgTGF5b3V0U2l6ZSBtYWluRnJhbWVPZmZzZXQgPSBmcmFtZVRvTWFpbkZyYW1lT2Zm
c2V0KGNvbnRhaW5pbmdGcmFtZSk7Ci0gICAgTGF5b3V0UmVjdCBib3VuZGluZ0JveCA9IHJlbmRl
cmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCh0cnVlKTsKKyAgICBMYXlvdXRSZWN0IGJvdW5k
aW5nQm94ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CiAKICAgICBib3Vu
ZGluZ0JveC5tb3ZlKG1haW5GcmFtZU9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9JRnJhbWVTaGltU3VwcG9ydC5jcHAKaW5kZXggYzBhYTFlNDEzNmM0OTQyZjI5YWY4ODRmMzIx
Njg4NWM3YWM1NWI3OS4uODI2NTc2NTExMGFlNTQ2OGQwMzA1ZjNlZmIwNDZkMjVhZGQ3ZmVmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9JRnJhbWVTaGltU3VwcG9ydC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9JRnJhbWVTaGltU3VwcG9ydC5jcHAKQEAgLTE1
Miw3ICsxNTIsNyBAQCB2b2lkIGdldFBsdWdpbk9jY2x1c2lvbnMoRWxlbWVudCogZWxlbWVudCwg
V2lkZ2V0KiBwYXJlbnRXaWRnZXQsIGNvbnN0IEludFJlY3QmCiAgICAgICAgIFJlbmRlck9iamVj
dCogaWZyYW1lUmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOwogCiAgICAgICAgIGlmIChl
bGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aWZyYW1lVGFnKQotICAgICAgICAgICAgJiYg
aWZyYW1lUmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkuaW50ZXJzZWN0cyhmcmFt
ZVJlY3QpCisgICAgICAgICAgICAmJiBpZnJhbWVSZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKS5pbnRlcnNlY3RzKGZyYW1lUmVjdCkKICAgICAgICAg
ICAgICYmICghaWZyYW1lUmVuZGVyZXItPnN0eWxlKCkgfHwgaWZyYW1lUmVuZGVyZXItPnN0eWxl
KCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSkgewogICAgICAgICAgICAgZ2V0T2JqZWN0U3Rh
Y2soaWZyYW1lUmVuZGVyZXIsICZpZnJhbWVac3RhY2spOwogICAgICAgICAgICAgaWYgKGlmcmFt
ZUlzQWJvdmVQbHVnaW4oaWZyYW1lWnN0YWNrLCBwbHVnaW5ac3RhY2spKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA0NjUxNTRjY2I4YWJlMTQxZTg5YWRh
MzMxZTAyZTMwYWMzNGUwMzgxLi4yYWNlNDhmYWQzZTdiYzQ4NGVkZDc3YjVlY2Q3ODM2NTgwNDg4
ZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTU4NDMs
NyArNTg0Myw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnNldFBhZ2VMb2dpY2FsT2Zmc2V0KGludCBs
b2dpY2FsT2Zmc2V0KQogICAgIG1fcmFyZURhdGEtPm1fcGFnZUxvZ2ljYWxPZmZzZXQgPSBsb2dp
Y2FsT2Zmc2V0OwogfQogCi12b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxM
YXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkK
K3ZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0
cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewogICAgIC8v
IEZvciBibG9ja3MgaW5zaWRlIGlubGluZXMsIHdlIGdvIGFoZWFkIGFuZCBpbmNsdWRlIG1hcmdp
bnMgc28gdGhhdCB3ZSBydW4gcmlnaHQgdXAgdG8gdGhlCiAgICAgLy8gaW5saW5lIGJveGVzIGFi
b3ZlIGFuZCBiZWxvdyB1cyAodGh1cyBnZXR0aW5nIG1lcmdlZCB3aXRoIHRoZW0gdG8gZm9ybSBh
IHNpbmdsZSBpcnJlZ3VsYXIKQEAgLTU4NTksNyArNTg1OSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6
OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9p
bnQmIGFjCiAgICAgICAgIHJlY3RzLmFwcGVuZChMYXlvdXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0
LCBzaXplKCkpKTsKIH0KIAotdm9pZCBSZW5kZXJCbG9jazo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJCbG9jazo6YWJz
b2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25z
dAogewogICAgIC8vIEZvciBibG9ja3MgaW5zaWRlIGlubGluZXMsIHdlIGdvIGFoZWFkIGFuZCBp
bmNsdWRlIG1hcmdpbnMgc28gdGhhdCB3ZSBydW4gcmlnaHQgdXAgdG8gdGhlCiAgICAgLy8gaW5s
aW5lIGJveGVzIGFib3ZlIGFuZCBiZWxvdyB1cyAodGh1cyBnZXR0aW5nIG1lcmdlZCB3aXRoIHRo
ZW0gdG8gZm9ybSBhIHNpbmdsZSBpcnJlZ3VsYXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmgKaW5kZXggMDk3NzI3ZThiNTM1ODJmY2FiN2NkOTMyZTY0YTk3MDdmZjllZDY4NC4u
ZjgxYjJmZTYxNzE2YjlhMGM5NmQ5NzA3NjYwNWM3NDdiOGRmYzU3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTY4Miw4ICs2ODIsOCBAQCBwcml2YXRlOgogICAg
IExheW91dFVuaXQgbG9naWNhbExlZnRTZWxlY3Rpb25PZmZzZXQoUmVuZGVyQmxvY2sqIHJvb3RC
bG9jaywgTGF5b3V0VW5pdCBwb3NpdGlvbik7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRT
ZWxlY3Rpb25PZmZzZXQoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgTGF5b3V0VW5pdCBwb3NpdGlv
bik7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJl
Y3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKLSAgICB2aXJ0dWFs
IHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsK
KyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25z
dCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0
OwogCiAgICAgTGF5b3V0VW5pdCBkZXNpcmVkQ29sdW1uV2lkdGgoKSBjb25zdDsKICAgICB1bnNp
Z25lZCBkZXNpcmVkQ29sdW1uQ291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKaW5kZXggNWM4YmVlOTI1YzNhZjk3YjRiMzJmY2VlMDZhOTA5YjkxOWQzOTJm
MS4uM2I0OTMzMDgxNmU3MjUzZDE3MGFlYzUzZjQ3NDY2ZGVjZTEyOTkzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTQ2NiwxMiArNDY2LDEyIEBAIHZvaWQgUmVu
ZGVyQm94OjpzZXRTY3JvbGxUb3AoTGF5b3V0VW5pdCBuZXdUb3ApCiAgICAgICAgIGxheWVyKCkt
PnNjcm9sbFRvWU9mZnNldChuZXdUb3AsIFJlbmRlckxheWVyOjpTY3JvbGxPZmZzZXRDbGFtcGVk
KTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiBy
ZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KQordm9pZCBSZW5kZXJC
b3g6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewogICAgIHJlY3RzLmFwcGVuZChMYXlvdXRS
ZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBzaXplKCkpKTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OmFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkKK3Zv
aWQgUmVuZGVyQm94OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9v
bCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1
YWQoRmxvYXRSZWN0KDAsIDAsIHdpZHRoKCksIGhlaWdodCgpKSwgZmFsc2UsIHdhc0ZpeGVkKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggNDVkNDQ2MGVlNDg1YzNh
MTg1NGY5MzYwZjZlODRkY2Q1NTc0YWRlZi4uOGM2MjRmZGQ0ZTZhZjA5ZmUxNjE1OWUyZGQ3ZTk0
ZWYyZDlhNGVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMjMyLDgg
KzIzMiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFVuaXQgY29sbGFwc2VkTWFyZ2lu
QmVmb3JlKCkgY29uc3QgeyByZXR1cm4gbWFyZ2luQmVmb3JlKCk7IH0KICAgICB2aXJ0dWFsIExh
eW91dFVuaXQgY29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBtYXJnaW5BZnRl
cigpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAg
IHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91
dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAgICAg
CiAgICAgSW50UmVjdCByZWZsZWN0aW9uQm94KCkgY29uc3Q7CiAgICAgaW50IHJlZmxlY3Rpb25P
ZmZzZXQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2wuY3BwCmluZGV4IGY5NDQ5MWYzMWM1YThlNWZkMjAyMjQ1MDE5NTRl
NGI0NmVmMDg0NjYuLjAxY2VlYWZmY2IwZmU1OWJlNTQxZmY0ZjJhZTM4MDhiMWU4M2E1ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJv
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250
cm9sLmNwcApAQCAtMTMyLDcgKzEzMiw4IEBAIHZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6
OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2luCiAgICAg
ICAgICAgICB0ZXh0WCA9IGNvbnRlbnRMZWZ0ICsgY29udGVudFdpZHRoKCkgLSBidXR0b25BbmRJ
Y29uV2lkdGggLSBmb250LndpZHRoKHRleHRSdW4pOwogICAgICAgICAvLyBXZSB3YW50IHRvIG1h
dGNoIHRoZSBidXR0b24ncyBiYXNlbGluZQogICAgICAgICBSZW5kZXJCdXR0b24qIGJ1dHRvblJl
bmRlcmVyID0gdG9SZW5kZXJCdXR0b24oYnV0dG9uLT5yZW5kZXJlcigpKTsKLSAgICAgICAgTGF5
b3V0VW5pdCB0ZXh0WSA9IGJ1dHRvblJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgp
LnkoKQorICAgICAgICAvLyBGSVhNRTogbWFrZSB0aGlzIHdvcmsgd2l0aCB0cmFuc2Zvcm1zLgor
ICAgICAgICBMYXlvdXRVbml0IHRleHRZID0gYnV0dG9uUmVuZGVyZXItPmFic29sdXRlQm91bmRp
bmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkueSgpCiAgICAgICAgICAgICArIGJ1dHRvblJl
bmRlcmVyLT5iYXNlbGluZVBvc2l0aW9uKEFscGhhYmV0aWNCYXNlbGluZSwgdHJ1ZSwgSG9yaXpv
bnRhbExpbmUsIFBvc2l0aW9uT25Db250YWluaW5nTGluZSk7CiAKICAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPnNldEZpbGxDb2xvcihzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlDb2xvciksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCmluZGV4IDExMjk3YjVkYjdhOWY3YTJkMDllNDY1OTQz
YzQ4N2UxODZmMTVhZDAuLmNlMGY0M2JkMDMwNDE1MWE0MDgzYjBhMDIwYTllMmVkOTYxYjEzZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCkBAIC0xMDUsNyAr
MTA1LDcgQEAgYm9vbCBSZW5kZXJJRnJhbWU6OmZsYXR0ZW5GcmFtZSgpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIC8vIERvIG5vdCBmbGF0dGVuIG9mZnNjcmVlbiBpbm5lciBmcmFtZXMg
ZHVyaW5nIGZyYW1lIGZsYXR0ZW5pbmcsIGFzIGZsYXR0ZW5pbmcgbWlnaHQgbWFrZSB0aGVtIHZp
c2libGUuCi0gICAgSW50UmVjdCBib3VuZGluZ1JlY3QgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dCgpOworICAgIEludFJlY3QgYm91bmRpbmdSZWN0ID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJ
Z25vcmluZ1RyYW5zZm9ybXMoKTsKICAgICByZXR1cm4gYm91bmRpbmdSZWN0Lm1heFgoKSA+IDAg
JiYgYm91bmRpbmdSZWN0Lm1heFkoKSA+IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAKaW5kZXggNmNhOWQzZmIxZTkyZDAyY2JjOTBiYTRkYzMzYmExOWJk
ODRiMjgwNC4uM2YwOTYzM2IwMDhkOTU2ZmExZjdlMjE4MmUzMGM0ZGQyMDVhYzNhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTQ2Niw3ICs0NjYsNyBA
QCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICBtX2xpbmVCb3hlcy5wYWludCh0aGlzLCBwYWlu
dEluZm8sIHBhaW50T2Zmc2V0KTsKIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVj
dHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0KQordm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91
dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25z
dAogewogICAgIGlmICghYWx3YXlzQ3JlYXRlTGluZUJveGVzKCkpCiAgICAgICAgIGN1bGxlZElu
bGluZUFic29sdXRlUmVjdHModGhpcywgcmVjdHMsIHRvTGF5b3V0U2l6ZShhY2N1bXVsYXRlZE9m
ZnNldCkpOwpAQCAtNDg1LDcgKzQ4NSw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVJl
Y3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhCiAgICAg
fQogfQogCi12b2lkIFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25z
dCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29u
c3QgTGF5b3V0U2l6ZSYgb2Zmc2V0KQordm9pZCBSZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUFi
c29sdXRlUmVjdHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxMYXlvdXRS
ZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFNpemUmIG9mZnNldCkgY29uc3QKIHsKICAgICBpZiAo
IWN1bGxlZElubGluZUZpcnN0TGluZUJveCgpKSB7CiAgICAgICAgIHJlY3RzLmFwcGVuZChJbnRS
ZWN0KG9mZnNldC53aWR0aCgpLCBvZmZzZXQuaGVpZ2h0KCksIDAsIDApKTsKQEAgLTU1Myw3ICs1
NTMsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25z
dCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJJ
bmxpbmU6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNG
aXhlZCkKK3ZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKCFhbHdheXNDcmVhdGVM
aW5lQm94ZXMoKSkKICAgICAgICAgY3VsbGVkSW5saW5lQWJzb2x1dGVRdWFkcyh0aGlzLCBxdWFk
cyk7CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkKICAgICAgICAgY29udGlu
dWF0aW9uKCktPmFic29sdXRlUXVhZHMocXVhZHMsIHdhc0ZpeGVkKTsKIH0KIAotdm9pZCBSZW5k
ZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRlUXVhZHMoY29uc3QgUmVuZGVySW5saW5lKiBj
b250YWluZXIsIFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykKK3ZvaWQgUmVuZGVySW5saW5lOjpj
dWxsZWRJbmxpbmVBYnNvbHV0ZVF1YWRzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBW
ZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpIGNvbnN0CiB7CiAgICAgaWYgKCFjdWxsZWRJbmxpbmVG
aXJzdExpbmVCb3goKSkgewogICAgICAgICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVh
ZChGbG9hdFJlY3QoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmlu
ZGV4IGFmZDRhYWQ0NDhiMGU4MTgxOTMyOWVhMGFhNjg2ZTViMDljZWI2NjcuLmZlOTVhZjFmZTE4
NzU0MjY1YmE5NzkwOWY3ZWRiNmViM2U3M2FlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmgKQEAgLTQ2LDggKzQ2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5
b3V0VW5pdCBtYXJnaW5TdGFydCgpIGNvbnN0OwogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJn
aW5FbmQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxM
YXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7Ci0gICAg
dmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNG
aXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+
JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKKyAgICB2aXJ0
dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVk
KSBjb25zdDsKIAogICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJl
bmRlck9iamVjdCosIGNvbnN0IExheW91dFBvaW50JikgY29uc3Q7CiAKQEAgLTEwMiw4ICsxMDIs
OCBAQCBwcml2YXRlOgogICAgIExheW91dFJlY3QgY3VsbGVkSW5saW5lVmlzdWFsT3ZlcmZsb3dC
b3VuZGluZ0JveCgpIGNvbnN0OwogICAgIElubGluZUJveCogY3VsbGVkSW5saW5lRmlyc3RMaW5l
Qm94KCkgY29uc3Q7CiAgICAgSW5saW5lQm94KiBjdWxsZWRJbmxpbmVMYXN0TGluZUJveCgpIGNv
bnN0OwotICAgIHZvaWQgY3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25zdCBSZW5kZXJJbmxp
bmUqIGNvbnRhaW5lciwgVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0U2l6ZSYpOwot
ICAgIHZvaWQgY3VsbGVkSW5saW5lQWJzb2x1dGVRdWFkcyhjb25zdCBSZW5kZXJJbmxpbmUqIGNv
bnRhaW5lciwgVmVjdG9yPEZsb2F0UXVhZD4mKTsKKyAgICB2b2lkIGN1bGxlZElubGluZUFic29s
dXRlUmVjdHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxMYXlvdXRSZWN0
PiYsIGNvbnN0IExheW91dFNpemUmKSBjb25zdDsKKyAgICB2b2lkIGN1bGxlZElubGluZUFic29s
dXRlUXVhZHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxGbG9hdFF1YWQ+
JikgY29uc3Q7CiAKICAgICB2b2lkIGFkZENoaWxkVG9Db250aW51YXRpb24oUmVuZGVyT2JqZWN0
KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7CiAgICAgdmlydHVhbCB2b2lk
IGFkZENoaWxkSWdub3JpbmdDb250aW51YXRpb24oUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggODk3YWE4OGVhZjFlYTJhNDZlZDEzNmY1MGY3YzYyNjIz
OTEzOWUwMS4uOWJhM2I1ZTdhMTk3MmNjODRmYzM1NDY0ZGMzZjVkYzIxZGE3NTRhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC0zMDIsNyArMzAy
LDcgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6c2hvd1BvcHVwKCkKICAgICAvLyBDb21wdXRlIHRo
ZSB0b3AgbGVmdCB0YWtpbmcgdHJhbnNmb3JtcyBpbnRvIGFjY291bnQsIGJ1dCB1c2UKICAgICAv
LyB0aGUgYWN0dWFsIHdpZHRoIG9mIHRoZSBlbGVtZW50IHRvIHNpemUgdGhlIHBvcHVwLgogICAg
IEZsb2F0UG9pbnQgYWJzVG9wTGVmdCA9IGxvY2FsVG9BYnNvbHV0ZShGbG9hdFBvaW50KCksIGZh
bHNlLCB0cnVlKTsKLSAgICBMYXlvdXRSZWN0IGFic0JvdW5kcyA9IGFic29sdXRlQm91bmRpbmdC
b3hSZWN0KCk7CisgICAgTGF5b3V0UmVjdCBhYnNCb3VuZHMgPSBhYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOwogICAgIGFic0JvdW5kcy5zZXRMb2NhdGlvbihyb3Vu
ZGVkSW50UG9pbnQoYWJzVG9wTGVmdCkpOwogICAgIG1fcG9wdXAtPnNob3coYWJzQm91bmRzLCBk
b2N1bWVudCgpLT52aWV3KCksCiAgICAgICAgIHNlbGVjdC0+b3B0aW9uVG9MaXN0SW5kZXgoc2Vs
ZWN0LT5zZWxlY3RlZEluZGV4KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKaW5kZXggYTQ1ZTYwZDg2NWRmMGE1NjExYTAxNjI2ZDBhZGVhNTZiMWQ3YmY5NC4u
OTQ5NWUzNDkxMmVlYjQ4Yzc4YmE1NTVhNDE2YmRmMDY2NTFiNTViOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTExNTUsNyArMTE1NSw3IEBAIHZvaWQg
UmVuZGVyT2JqZWN0OjpwYWludE91dGxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIGNvbnN0IExheW91dFJlCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZW5kVHJhbnNwYXJl
bmN5TGF5ZXIoKTsKIH0KIAotSW50UmVjdCBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdC
b3hSZWN0KGJvb2wgdXNlVHJhbnNmb3JtcykKK0ludFJlY3QgUmVuZGVyT2JqZWN0OjphYnNvbHV0
ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybXMpIGNvbnN0CiB7CiAgICAgaWYgKHVz
ZVRyYW5zZm9ybXMpIHsKICAgICAgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7CkBAIC0xMjA1
LDE0ICsxMjA1LDE0IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUZvY3VzUmluZ1F1YWRz
KFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykKIHZvaWQgUmVuZGVyT2JqZWN0OjphZGRBYnNvbHV0
ZVJlY3RGb3JMYXllcihJbnRSZWN0JiByZXN1bHQpCiB7CiAgICAgaWYgKGhhc0xheWVyKCkpCi0g
ICAgICAgIHJlc3VsdC51bml0ZShhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKKyAgICAgICAg
cmVzdWx0LnVuaXRlKGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkp
OwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJyZW50ID0gZmlyc3RDaGlsZCgpOyBjdXJyZW50
OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgY3VycmVudC0+YWRk
QWJzb2x1dGVSZWN0Rm9yTGF5ZXIocmVzdWx0KTsKIH0KIAogTGF5b3V0UmVjdCBSZW5kZXJPYmpl
Y3Q6OnBhaW50aW5nUm9vdFJlY3QoTGF5b3V0UmVjdCYgdG9wTGV2ZWxSZWN0KQogewotICAgIExh
eW91dFJlY3QgcmVzdWx0ID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBMYXlvdXRS
ZWN0IHJlc3VsdCA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7
CiAgICAgdG9wTGV2ZWxSZWN0ID0gcmVzdWx0OwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJy
ZW50ID0gZmlyc3RDaGlsZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxp
bmcoKSkKICAgICAgICAgY3VycmVudC0+YWRkQWJzb2x1dGVSZWN0Rm9yTGF5ZXIocmVzdWx0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBlY2Y1MjI3MjFhODBl
Y2NjN2YyNTM0ODczZWU5Mjg2MWQ1YTgxZmNhLi4wOGRhYjYzZWU0ZGZkMTJmN2E4NzI5ZWJjNWI1
ZGQzODIzMzU0ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBA
IC02MjEsMTIgKzYyMSwxNCBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJv
bSBhbiBvYmplY3QgdXAgdGhlIGNvbnRhaW5lcigpIGNoYWluLiBBc3NlcnRzIHRoYXQgbm9uZSBv
ZiB0aGUgaW50ZXJtZWRpYXRlIG9iamVjdHMgaGF2ZSB0cmFuc2Zvcm1zLgogICAgIExheW91dFNp
emUgb2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKFJlbmRlck9iamVjdCopIGNvbnN0OwogICAg
IAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNv
bnN0IExheW91dFBvaW50JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVj
dG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdCB7IH0KKwogICAgIC8v
IEZJWE1FOiB1c2VUcmFuc2Zvcm1zIHNob3VsZCBnbyBhd2F5IGV2ZW50dWFsbHkKLSAgICBJbnRS
ZWN0IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KGJvb2wgdXNlVHJhbnNmb3JtcyA9IGZhbHNlKTsK
KyAgICBJbnRSZWN0IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KGJvb2wgdXNlVHJhbnNmb3JtID0g
dHJ1ZSkgY29uc3Q7CisgICAgSW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5n
VHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIGFic29sdXRlQm91bmRpbmdCb3hSZWN0KGZhbHNl
KTsgfQogCiAgICAgLy8gQnVpbGQgYW4gYXJyYXkgb2YgcXVhZHMgaW4gYWJzb2x1dGUgY29vcmRz
IGZvciBsaW5lIGJveGVzCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZs
b2F0UXVhZD4mLCBib29sKiAvKndhc0ZpeGVkKi8gPSAwKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIC8qd2FzRml4ZWQqLyA9IDAp
IGNvbnN0IHsgfQogCiAgICAgdm9pZCBhYnNvbHV0ZUZvY3VzUmluZ1F1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCBl
ODg4NjFmM2QwNGEwODY4NDRkM2E3MGQyMTVhNDc0ZGU2ODkyNGM5Li42YjZkYTI0NDRlMTJjNzMy
NmYxOTZkNjRiODgxMjU4ODI3NGY5OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwCkBAIC0zMDEsNyArMzAxLDcgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBSZW5k
ZXJUZXh0OjpvcmlnaW5hbFRleHQoKSBjb25zdAogICAgIHJldHVybiAoZSAmJiBlLT5pc1RleHRO
b2RlKCkpID8gc3RhdGljX2Nhc3Q8VGV4dCo+KGUpLT5kYXRhSW1wbCgpIDogMDsKIH0KIAotdm9p
ZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNv
bnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkKK3ZvaWQgUmVuZGVyVGV4dDo6YWJz
b2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7CiAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3gg
PSBmaXJzdFRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpCiAgICAgICAg
IHJlY3RzLmFwcGVuZChlbmNsb3NpbmdMYXlvdXRSZWN0KEZsb2F0UmVjdChhY2N1bXVsYXRlZE9m
ZnNldCArIGJveC0+dG9wTGVmdCgpLCBib3gtPnNpemUoKSkpKTsKQEAgLTM4OCw3ICszODgsNyBA
QCBzdGF0aWMgSW50UmVjdCBlbGxpcHNpc1JlY3RGb3JCb3goSW5saW5lVGV4dEJveCogYm94LCB1
bnNpZ25lZCBzdGFydFBvcywgdW5zaWduZQogICAgIHJldHVybiBJbnRSZWN0KCk7CiB9CiAgICAg
Ci12b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRz
LCBib29sKiB3YXNGaXhlZCwgQ2xpcHBpbmdPcHRpb24gb3B0aW9uKQordm9pZCBSZW5kZXJUZXh0
OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQs
IENsaXBwaW5nT3B0aW9uIG9wdGlvbikgY29uc3QKIHsKICAgICBmb3IgKElubGluZVRleHRCb3gq
IGJveCA9IGZpcnN0VGV4dEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgewog
ICAgICAgICBJbnRSZWN0IGJvdW5kYXJpZXMgPSBib3gtPmNhbGN1bGF0ZUJvdW5kYXJpZXMoKTsK
QEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCwgQ2xpcHBpbgogICAgIH0KIH0KICAg
ICAKLXZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVh
ZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgYWJzb2x1
dGVRdWFkcyhxdWFkcywgd2FzRml4ZWQsIE5vQ2xpcHBpbmcpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmgKaW5kZXggNDAyMGQ4YWEzNzEyMmQxMjVkMWRjNGVmMTEwNzA5ZDE4
Zjk1MTM5OC4uNDJlOWFlYzk2YjNiMzJiMmQxOWUzYmM1MTk1YzEzZDQ3MWNhMDkzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCkBAIC01NCwxNCArNTQsMTQgQEAgcHVibGlj
OgogICAgIElubGluZVRleHRCb3gqIGNyZWF0ZUlubGluZVRleHRCb3goKTsKICAgICB2b2lkIGRp
cnR5TGluZUJveGVzKGJvb2wgZnVsbExheW91dCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1
dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRS
ZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CiAgICAg
dm9pZCBhYnNvbHV0ZVJlY3RzRm9yUmFuZ2UoVmVjdG9yPEludFJlY3Q+JiwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQgPSBVSU5UX01BWCwgYm9vbCB1c2VTZWxl
Y3Rpb25IZWlnaHQgPSBmYWxzZSwgYm9vbCogd2FzRml4ZWQgPSAwKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOwor
ICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCog
d2FzRml4ZWQpIGNvbnN0OwogICAgIHZvaWQgYWJzb2x1dGVRdWFkc0ZvclJhbmdlKFZlY3RvcjxG
bG9hdFF1YWQ+JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQg
PSBVSU5UX01BWCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSwgYm9vbCogd2FzRml4
ZWQgPSAwKTsKIAogICAgIGVudW0gQ2xpcHBpbmdPcHRpb24geyBOb0NsaXBwaW5nLCBDbGlwVG9F
bGxpcHNpcyB9OwotICAgIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJv
b2wqIHdhc0ZpeGVkID0gMCwgQ2xpcHBpbmdPcHRpb24gPSBOb0NsaXBwaW5nKTsKKyAgICB2b2lk
IGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCA9IDAsIENs
aXBwaW5nT3B0aW9uID0gTm9DbGlwcGluZykgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFZpc2libGVQ
b3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZS5jcHAKaW5kZXggMTcwOTdiMWZiYWIzNjE4MDg4ZTBiNDg5MzdjNjA4ZTVjMmQ4NGNmYS4uZmY5
MDc3MGYwOTU1Nzg5MTA3NWRiOTFlMjllMWRmZTc4NzA0YWZiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAK
QEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6c2hv
d1BvcHVwKCkKICAgICAgICAgbV9zZWFyY2hQb3B1cC0+c2F2ZVJlY2VudFNlYXJjaGVzKG5hbWUs
IG1fcmVjZW50U2VhcmNoZXMpOwogICAgIH0KIAotICAgIG1fc2VhcmNoUG9wdXAtPnBvcHVwTWVu
dSgpLT5zaG93KGFic29sdXRlQm91bmRpbmdCb3hSZWN0KHRydWUpLCBkb2N1bWVudCgpLT52aWV3
KCksIC0xKTsKKyAgICBtX3NlYXJjaFBvcHVwLT5wb3B1cE1lbnUoKS0+c2hvdyhhYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdCgpLCBkb2N1bWVudCgpLT52aWV3KCksIC0xKTsKIH0KIAogdm9pZCBSZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmhpZGVQb3B1cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAppbmRleCBkYmE4NzRkNGFhY2VkYTE1MTNl
NjllNmFlMGQ2NTA2ZWI0MzA4OTk1Li5kMzRkMDc0ODQ0NjNhOWY2NTIyNmY1ZDEyZmMxNzA4NzU3
ODMzMGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVT
YWZhcmkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFy
aS5jcHAKQEAgLTEwODAsNyArMTA4MCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50
U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWluCiAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGlucHV0LT5yZW5kZXJlcigpOwogICAgIEFTU0VSVChy
ZW5kZXJlcik7CiAKLSAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVC
b3VuZGluZ0JveFJlY3QoKTsKKyAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJz
b2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKIAogICAgIHBhaW50VGhl
bWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblBhcnQsIHBhaW50SW5m
by5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNpemVGcm9t
UmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7
CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTEzNCw3ICsxMTM0LDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJlbmRlck9iamVjdCog
bywgY29uc3QKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaW5wdXQtPnJlbmRlcmVyKCk7
CiAgICAgQVNTRVJUKHJlbmRlcmVyKTsKIAotICAgIEludFJlY3Qgc2VhcmNoUmVjdCA9IHJlbmRl
cmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIEludFJlY3Qgc2VhcmNoUmVjdCA9
IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOwog
CiAgICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJjaEZpZWxkUmVzdWx0c0RlY29y
YXRpb25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHNlYXJjaFJl
Y3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qoc2VhcmNoUmVjdCwgc2VhcmNoRmllbGRTaXplcygpKSwg
ZGV0ZXJtaW5lU3RhdGUobykpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTExNTcsNyArMTE1Nyw3
IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9u
KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IGlucHV0LT5yZW5kZXJlcigpOwogICAgIEFTU0VSVChyZW5kZXJlcik7CiAKLSAgICBJbnRSZWN0
IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBJ
bnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25v
cmluZ1RyYW5zZm9ybXMoKTsKIAogICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFy
Y2hGaWVsZFJlc3VsdHNCdXR0b25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCksIHNlYXJjaFJlY3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qoc2VhcmNoUmVjdCwgc2VhcmNo
RmllbGRTaXplcygpKSwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCAxZmVmYWM0ZjAxOTJlYTNl
YjA1NDE1Y2IzNDM0YWY1YjA5ZjZhNzQxLi5mNDIxZjk4MWRhMjY3ZGQ1N2Q1OTk0YWJjM2VjMWE3
NTY1ZDE4MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0z
MjksMTIgKzMyOSwxMiBAQCB2b2lkIFJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgSQogICAgICAgICByZWN0ID0g
bV9sYXllci0+dHJhbnNmb3JtKCktPm1hcFJlY3QocmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyVmll
dzo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCit2b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUmVjdHMo
VmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0KSBjb25zdAogewogICAgIHJlY3RzLmFwcGVuZChMYXlvdXRSZWN0KGFjY3VtdWxhdGVk
T2Zmc2V0LCBtX2xheWVyLT5zaXplKCkpKTsKIH0KIAotdm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0
ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFJl
bmRlclZpZXc6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3
YXNGaXhlZCkgY29uc3QKIHsKICAgICBpZiAod2FzRml4ZWQpCiAgICAgICAgICp3YXNGaXhlZCA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggZTZkN2Q4Zjc1
NWY1Yjc3YmI3ZDk5MDg3MGU1YTZhZGFhYTQ5ZmU2Ny4uOWE2ZjYzZDkwZmJmMjFhNjA3YTVkZDUz
ZDYyMjBjOGFmNDFhZGY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBA
IC04Niw4ICs4Niw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcHJpbnRpbmcoKSBjb25zdDsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0
IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7Ci0gICAgdmlydHVhbCB2b2lkIGFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVh
bCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICB2b2lkIHNldE1heGltYWxPdXRsaW5lU2l6
ZShpbnQgbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0Jsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxv
Y2suY3BwCmluZGV4IDJjODE1OTA4ZWJmNmI5ODkwNjc1N2Q4YmM1NGJlNjk0N2E3MTc5ZTMuLjdi
MTZhNGQ1YmZjOWNiN2JiNjVlNjViYjE1YWJjOGUyZjZlYmFlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwCkBAIC03OCw3ICs3OCw3IEBA
IHZvaWQgUmVuZGVyU1ZHQmxvY2s6OnVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpCiAgICAg
c2V0SGFzT3ZlcmZsb3dDbGlwKGZhbHNlKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdCbG9jazo6YWJz
b2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpCit2b2lk
IFJlbmRlclNWR0Jsb2NrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0
IExheW91dFBvaW50JikgY29uc3QKIHsKICAgICAvLyBUaGlzIGNvZGUgcGF0aCBzaG91bGQgbmV2
ZXIgYmUgdGFrZW4gZm9yIFNWRywgYXMgd2UncmUgYXNzdW1pbmcgdXNlVHJhbnNmb3Jtcz10cnVl
IGV2ZXJ5d2hlcmUsIGFic29sdXRlUXVhZHMgc2hvdWxkIGJlIHVzZWQuCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0Jsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Js
b2NrLmgKaW5kZXggMjJjMWYxOGUzNmUwMjMxMGJlN2U3ZDNlNGVjODEyM2EyOWI1YTcxNC4uNThj
ZjI2MjBhOTgxOGQ2NGFlMjc4MzRmZWQ4ZDQxYjcxNjkyMDQ3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaApAQCAtMzgsNyArMzgsNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPik7
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpOwogCi0gICAg
dmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVS
ZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOwogICAg
IHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5k
ZXJTdHlsZSogbmV3U3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwCmluZGV4IGQyOWQ4NWVjOTM5NzFk
ZWUxOGRiMTJiZDhlNzgwNWY1ODE3NzJmMWUuLjg5NWIyNTQ0OTAwMTIzZmRiZjNlYTAyNTg1NGNi
OWNlZGJlMDRmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBS
ZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OnBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBv
aW50JikKICAgICAvLyBUaGlzIHN1YnRyZWUgZG9lcyBub3QgcGFpbnQuCiB9CiAKLXZvaWQgUmVu
ZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+Jiwg
Ym9vbCopCit2b2lkIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcjo6YWJzb2x1dGVRdWFkcyhWZWN0
b3I8RmxvYXRRdWFkPiYsIGJvb2wqKSBjb25zdAogewogICAgIC8vIFRoaXMgc3VidHJlZSBkb2Vz
IG5vdCB0YWtlIHVwIHNwYWNlIG9yIHBhaW50CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaAppbmRleCBlZmZmOTIx
NTFkMmMzNjFhNmQwYzhkOTc3N2IzMWY2MzQ0NjRkMTBjLi5mMjZjNWZjNjFhMzdmODIwN2Q0ZDY0
OWJlNjgwOWQ1MmEyZjg4MjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmKTsKICAgICAKICAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0
KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYs
IGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBu
b2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24pOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAppbmRleCAw
OTc3MGVmYmYwMjdmYWM5ZWJhN2RiYzdjNGVhNDM3ZjZhYTAxMGI5Li40YzkwNTgwZjEzNTliZjY4
MWM3NzNhZDVkOGJiODE2Y2VkNDJhNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCkBAIC04Miw5ICs4Miw5IEBAIHZvaWQgUmVuZGVy
U1ZHSW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyCiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcih0
aGlzLCByZXBhaW50Q29udGFpbmVyLCB1c2VUcmFuc2Zvcm1zLCBmaXhlZCwgdHJhbnNmb3JtU3Rh
dGUsIHdhc0ZpeGVkKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdJbmxpbmU6OmFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkKK3ZvaWQgUmVuZGVyU1ZH
SW5saW5lOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2Fz
Rml4ZWQpIGNvbnN0CiB7Ci0gICAgUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBSZW5kZXJTVkdUZXh0
Ojpsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3IodGhpcyk7CisgICAgY29uc3QgUmVuZGVyT2Jq
ZWN0KiBvYmplY3QgPSBSZW5kZXJTVkdUZXh0Ojpsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3Io
dGhpcyk7CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKaW5kZXggMGE2MDgzN2Y0Nzc1
OTY5MDM3ZTg0OTc1YmNmMjAwODA2NmJiODJmNy4uZDJmYTFjYzUyNDAyNGI2MWFhN2Q0YWE3N2E0
ZThkZDhlNTYwODQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91
dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJl
Y3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBtYXBMb2Nh
bFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29s
IHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgYm9vbCogd2FzRml4
ZWQgPSAwKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIElubGluZUZsb3dCb3gqIGNyZWF0ZUlubGluZUZsb3dCb3goKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5j
cHAKaW5kZXggMTRjMWRiOGUwZjkzZWFmNTU4YWVlYzg5MmE4NzIzMjNjZDEwZDcyMy4uZmJlNDkz
YjU0ZGNkZWMxYzU3NjdhNDc4YWE2NjM4NmE1NDAzNGJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKQEAgLTcwLDEz
ICs3MCwxMyBAQCBMYXlvdXRSZWN0IFJlbmRlclNWR01vZGVsT2JqZWN0OjpvdXRsaW5lQm91bmRz
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcgogICAgIHJldHVybiBjb250YWluZXJS
ZWxhdGl2ZVF1YWQuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdN
b2RlbE9iamVjdDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlv
dXRQb2ludCYpCit2b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVJlY3RzKFZlY3Rv
cjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JikgY29uc3QKIHsKICAgICAvLyBUaGlz
IGNvZGUgcGF0aCBzaG91bGQgbmV2ZXIgYmUgdGFrZW4gZm9yIFNWRywgYXMgd2UncmUgYXNzdW1p
bmcgdXNlVHJhbnNmb3Jtcz10cnVlIGV2ZXJ5d2hlcmUsIGFic29sdXRlUXVhZHMgc2hvdWxkIGJl
IHVzZWQuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHTW9k
ZWxPYmplY3Q6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3
YXNGaXhlZCkKK3ZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBxdWFkcy5h
cHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChzdHJva2VCb3VuZGluZ0JveCgpLCBmYWxzZSwgd2Fz
Rml4ZWQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHTW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHTW9kZWxPYmplY3QuaAppbmRleCBjMjhkM2M2NjA3ZDU1NGVhMjBjMmJhNWM1YWVlZWRjYzJk
ZTczYjc5Li43MDQxZDQ0OWVmNjMyYzRmYzMwMDkyNjBmOTJjMDAwM2IwMTBkN2UxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5o
CkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RG
b3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRS
ZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKICAgICB2aXJ0dWFsIExheW91dFJlY3Qg
b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIExheW91dFBvaW50KikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVS
ZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQpOwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3Rv
cjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBi
b29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRh
aW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFu
c2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIGJvb2wqIHdhc0ZpeGVkID0gMCkg
Y29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2Us
IGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCBhZjQzOWI1ZDM4ZjA4NGYwMmE5MjFiMmJh
ZmEwZDliMWFiZDQ3MDgxLi4yYTdkODBjZjJlZjUyMWE5NGZiZDk3NzIyMGIxZTRlZTEyNWQ2MGQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAK
QEAgLTIyNSw3ICsyMjUsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyU1ZHVGV4dDo6cG9zaXRp
b25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRlbgogICAgIHJldHVybiBj
bG9zZXN0Qm94LT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KExheW91dFBvaW50KHBvaW50
SW5Db250ZW50cy54KCksIGNsb3Nlc3RCb3gtPnkoKSkpOwogfQogCi12b2lkIFJlbmRlclNWR1Rl
eHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhl
ZCkKK3ZvaWQgUmVuZGVyU1ZHVGV4dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYg
cXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIHF1YWRzLmFwcGVuZChsb2NhbFRv
QWJzb2x1dGVRdWFkKHN0cm9rZUJvdW5kaW5nQm94KCksIGZhbHNlLCB3YXNGaXhlZCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAppbmRleCBiM2Uw
ZjQzZjhmNjQ5YzdmYTY3ZTBiODQyMDM2N2FmMGQ2ZTkyZDNlLi5hMGFkYTRjYjRlZmU5ODBjYWJl
MjdhOWZhNTA0YmFhMzkwMTg5ZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1RleHQuaApAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IHZvaWQgbGF5b3V0KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNv
bXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggZDY0ZDBiN2M0NzY4ZjEzY2ViYjA4Y2FlZDM4MTA0YzI4
YWJkZWFkNi4uZDdhODE1NDBmYTBlZGNkMWE5ZmIzNDI1NzA5NGRmZjAyNTJjNTAwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIFBhc3NSZWZQ
dHI8Q2xpZW50UmVjdD4gSW50ZXJuYWxzOjpib3VuZGluZ0JveChFbGVtZW50KiBlbGVtZW50LCBF
eGNlcHRpb25Db2RlJiBlCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQtPnJl
bmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIENsaWVudFJlY3Q6
OmNyZWF0ZSgpOwotICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUocmVuZGVyZXItPmFic29s
dXRlQm91bmRpbmdCb3hSZWN0KCkpOworICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUocmVu
ZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkpOwogfQog
CiB1bnNpZ25lZCBJbnRlcm5hbHM6Om1hcmtlckNvdW50Rm9yTm9kZShOb2RlKiBub2RlLCBFeGNl
cHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCmluZGV4IDVmMTJlMTAx
NDM5ZjVmYmYwZDZjZGNiMTAzNDExNzA2MWI1OTI3ZjQuLjA3ZjJkZjk4N2QyY2ZmNTZkZmM4ZDg3
ZDdhNWNhYmI1YzE5NjZlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJm
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcApAQCAtMTc1
MSw3ICsxNzUxLDcgQEAgUVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlOjpRV2ViSGl0VGVzdFJlc3Vs
dFByaXZhdGUoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdAogICAgIGltYWdlVXJsID0gaGl0
VGVzdC5hYnNvbHV0ZUltYWdlVVJMKCk7CiAgICAgaW5uZXJOb2RlID0gaGl0VGVzdC5pbm5lck5v
ZGUoKTsKICAgICBpbm5lck5vblNoYXJlZE5vZGUgPSBoaXRUZXN0LmlubmVyTm9uU2hhcmVkTm9k
ZSgpOwotICAgIGJvdW5kaW5nUmVjdCA9IGlubmVyTm9uU2hhcmVkTm9kZSA/IGlubmVyTm9uU2hh
cmVkTm9kZS0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QodHJ1ZSkgOiBJbnRS
ZWN0KCk7CisgICAgYm91bmRpbmdSZWN0ID0gaW5uZXJOb25TaGFyZWROb2RlID8gaW5uZXJOb25T
aGFyZWROb2RlLT5yZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpIDogSW50UmVj
dCgpOwogICAgIFdlYkNvcmU6OkltYWdlICppbWcgPSBoaXRUZXN0LmltYWdlKCk7CiAgICAgaWYg
KGltZykgewogICAgICAgICBRUGl4bWFwICpwaXggPSBpbWctPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDdjNDIzY2EwZjE4NzZhZGVjNjZmNTAwZWE3YjAy
NWI0NjZhMDNlOTYuLjJjZjkwN2NjNzU5MTE3MWQyY2VhOTZlZjIzZjJlNGYzMWYxNDM4N2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDktMjkgIEZhZHkgU2FtdWVsICA8
ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDogTWFrZSBSZW5k
ZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVkIG1ldGhvZHMg
Y29uc3QgYW5kIG1ha2UgaXRzIHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxvbmdlciBkZWZh
dWx0IHRvIGZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02OTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViSGl0VGVzdFJlc3VsdFByaXZh
dGU6OlFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSk6CisKIDIwMTEtMDktMjcgIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHI5NjEwOCwgcjk2MTExLCByOTYxMTMsIGFuZCByOTYxMTYuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMjU1YjkxM2UzZDNiOTdhMjkzYzMzYTcwM2I5MzU1ZWE4NjRhYTM5Yy4uZTk4ZjVjY2JhMDVm
OTA1M2FhZjk0MzRmYWU1ZTRkODNkNTFhZWI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDExLTA5LTI5ICBGYWR5IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIENvZGUgY2xlYW4tdXA6IE1ha2UgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCBhbmQgYXNzb2NpYXRlZCBtZXRob2RzIGNvbnN0IGFuZCBtYWtlIGl0cyBwYXJhbWV0ZXIg
dXNlVHJhbnNmb3JtcyBubyBsb25nZXIgZGVmYXVsdCB0byBmYWxzZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwMDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdpbi9XZWJLaXQyLmRlZjoKKyAgICAg
ICAgKiB3aW4vV2ViS2l0MkNGTGl0ZS5kZWY6CisKIDIwMTEtMDktMjkgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEZvcmNlIHNpbmds
ZSBoZWFkZXIgaW5jbHVkZSBpbiBXZWJLaXQyIEdUSysgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYK
aW5kZXggZmE1MThlMzQwMmExMTI1NDYxOTBiYmJkNTIxMmY2OTQ1OTRmZDEwMi4uYjEwOTBkOTc5
YTExNWRlM2QyMjMyMzczNjQ1ZDk4MzYzOWQ4OTlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgpA
QCAtMTQzLDcgKzE0Myw2IEBAIEVYUE9SVFMKICAgICAgICAgPz8wQ2xpZW50UmVjdEBXZWJDb3Jl
QEBBQUVAWFoKICAgICAgICAgPz8wU3RyaW5nQFdURkBAUUFFQFBCREBaCiAgICAgICAgID8/MFN0
cmluZ0BXVEZAQFFBRUBQQl9XQFoKLSAgICAgICAgP2Fic29sdXRlQm91bmRpbmdCb3hSZWN0QFJl
bmRlck9iamVjdEBXZWJDb3JlQEBRQUU/QVZJbnRSZWN0QDJAX05AWgogICAgICAgICA/YWRkQEF0
b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEJE
QFoKICAgICAgICAgP2FkZFNsb3dDYXNlQEF0b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVm
UHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEFWU3RyaW5nSW1wbEAyQEBaCiAgICAgICAgID9jYWNo
ZURPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBBVlN0cnVjdHVyZUBKU0NAQFBBVkpTRE9NR2xvYmFs
T2JqZWN0QDFAUEFWMjNAUEJVQ2xhc3NJbmZvQDNAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZM
aXRlLmRlZgppbmRleCA4NDgyYjQ5NzE2YzcxY2IyYzMyZDdjMGZiYzk1MmYyN2Y0MWY0ZDFjLi40
YzI5YzQ0NTM1ODJkMzlmMzk1MDM1MTE4NDA2OGQyZjM0M2Y4YjcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2lu
L1dlYktpdDJDRkxpdGUuZGVmCkBAIC0xMzUsNyArMTM1LDYgQEAgRVhQT1JUUwogICAgICAgICA/
PzBTdHJpbmdAV1RGQEBRQUVAUEJfV0BaCiAgICAgICAgID8/MU5vZGVSZW5kZXJpbmdDb250ZXh0
QFdlYkNvcmVAQFFBRUBYWgogICAgICAgICA/PzFSYW5nZUBXZWJDb3JlQEBRQUVAWFoKLSAgICAg
ICAgP2Fic29sdXRlQm91bmRpbmdCb3hSZWN0QFJlbmRlck9iamVjdEBXZWJDb3JlQEBRQUU/QVZJ
bnRSZWN0QDJAX05AWgogICAgICAgICA/YWRkQEF0b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNz
UmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEJEQFoKICAgICAgICAgP2FkZFNsb3dDYXNlQEF0
b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEFW
U3RyaW5nSW1wbEAyQEBaCiAgICAgICAgID9jYWNoZURPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBB
VlN0cnVjdHVyZUBKU0NAQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWMjNAUEJVQ2xhc3NJbmZv
QDNAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3Vy
Y2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDdkMzljNDVhYzA5ZTRiYmUyMzM1OGJk
M2I2NzU5YTQxNDAzYTkxMGMuLmY2N2Q1ZjhkZDVhOGJhM2IyYjY0MjQ2ZDUxOGI4OWNmZmJkYzRj
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291
cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtNDMsNyArNDMsNyBAQCBfWk43V2ViQ29y
ZTExRXZlbnRUYXJnZXQ4dG9TdHJlYW1FdjsKIF9aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTExc2V0
RGlzYWJsZWRFYjsKIF9aTjdXZWJDb3JlMTFtZW1vcnlDYWNoZUV2OwogX1pON1dlYkNvcmUxMkpT
RE9NV3JhcHBlcjM0dmlydHVhbEZ1bmN0aW9uVG9QcmV2ZW50V2Vha1Z0YWJsZUV2OwotX1pON1dl
YkNvcmUxMlJlbmRlck9iamVjdDIzYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RFYjsKK19aTks3V2Vi
Q29yZTEyUmVuZGVyT2JqZWN0MjNhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEViOwogX1pON1dlYkNv
cmUxM2NyZWF0ZVdyYXBwZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVj
dEVQTlNfNE5vZGVFOwogX1pON1dlYkNvcmUxNXNldERPTUV4Y2VwdGlvbkVQTjNKU0M5RXhlY1N0
YXRlRWk7CiBfWk43V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDE3c2V0U3VnZ2VzdGVkVmFsdWVF
UktOM1dURjZTdHJpbmdFOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109311</attachid>
            <date>2011-09-30 10:44:07 -0700</date>
            <delta_ts>2011-10-03 13:12:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69009-20110930134405.patch</filename>
            <type>text/plain</type>
            <size>46566</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY0MDIKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCAzMmMzMTZmYzI5NmIyM2RjMWRjYmJjNmZlYTAxZTczYmI5MGZhNGVhLi5lMTE3
MTRiMjcyZTVhN2M5OTIwOTFhOWY3YTZhYjNkNzMwZGYxOWU5IDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDktMzAgIEZhZHkgU2Ft
dWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDogTWFr
ZSBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVkIG1l
dGhvZHMgY29uc3QgYW5kIG1ha2UgaXRzIHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxvbmdl
ciBkZWZhdWx0IHRvIGZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02OTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMS0wOS0y
MyAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CiAKICAgICAg
ICAgW1F0XSBGaXggYnVpbGQgYWdhaW5zdCBRdDUgYWZ0ZXIgcmVmYWN0b3Igb2Ygd2lkZ2V0cyBv
dXQgb2YgUXRHVWkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0YjllYzliNjkxMmFjNzE1NjVmNGM3ZDEyMDdlM2Ew
MDA2Y2Y3NWVmLi42NWFkNzk3ZDhhYmVmOTA2Mzk5OTQ4NWI1MzYyOGRhNjZiMDJiZGQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODggQEAKKzIwMTEtMDktMzAgIEZhZHkgU2FtdWVsICA8ZnNhbXVl
bEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDogTWFrZSBSZW5kZXJPYmpl
Y3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVkIG1ldGhvZHMgY29uc3Qg
YW5kIG1ha2UgaXRzIHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxvbmdlciBkZWZhdWx0IHRv
IGZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
OTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVw
Y29taW5nIHBhdGNoZXMgbWF5IG1ha2UgdXNlIG9mIGFic29sdXRlQm91bmRpbmdCb3hSZWN0IG9u
IGEgY29uc3QgUmVuZGVyT2JqZWN0LCBzbyB0aGlzIG5lZWRlZCB0byBiZSBmaXhlZC4KKyAgICAg
ICAgTWFraW5nIHVzZVRyYW5zZm9ybXMgZGVmYXVsdCB0byB0cnVlIGluc3RlYWQgb2YgZmFsc2Ug
YW5kIHJlcGxhY2luZyBpbnN0YW5jZXMgb2YgYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSB0bwor
ICAgICAgICBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpIHBhcnRp
YWxseSBhZGRyZXNlcyAvLyBGSVhNRTogdXNlVHJhbnNmb3JtcyBzaG91bGQgZ28gYXdheSBldmVu
dHVhbGx5LgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogZG9tL0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2NyZWVuUmVjdCk6CisgICAgICAg
ICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Z2V0UmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpyZW5kZXJSZWN0KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9T
bGlkZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVt
ZW50OjpzZXRQb3NpdGlvbkZyb21Qb2ludCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RmllbGRTcGVl
Y2hCdXR0b25FbGVtZW50OjpzdGFydFNwZWVjaElucHV0KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
RE9NTm9kZUhpZ2hsaWdodGVyLmNwcDoKKyAgICAgICAgKiBwbHVnaW5zL0lGcmFtZVNoaW1TdXBw
b3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFBsdWdpbk9jY2x1c2lvbnMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWJz
b2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjphYnNvbHV0ZVF1
YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlcklGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJRnJhbWU6OmZsYXR0ZW5G
cmFtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlcklubGluZTo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6OnNob3dQb3B1cCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6YWRkQWJzb2x1dGVSZWN0Rm9yTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0OjpwYWludGluZ1Jvb3RSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFic29sdXRlUmVjdHMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dElnbm9yaW5nVHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFi
c29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6c2hv
d1BvcHVwKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNo
RmllbGRSZXN1bHRzRGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNh
ZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmFic29sdXRl
UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6YWJzb2x1dGVRdWFkcyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0Jsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0Jsb2NrOjph
YnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjphYnNvbHV0ZVF1YWRz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR0lubGluZTo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR01vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2Jq
ZWN0OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2Jq
ZWN0OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01v
ZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmFic29sdXRlUXVhZHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Ym91bmRpbmdCb3gpOgor
CiAyMDExLTA5LTMwICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBbY2hyb21pdW1dIGV4cG9zZSBpbnNwZWN0b3IgcHJvdG9jb2wg
dmVyc2lvbiB0byB0aGUgZW1iZWRkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDJlZTA0M2Qy
MTI1NWEwZmMyOTUwYmI5MjJhYWM0ZjA0NzJlNGY5YzAuLjc1ZDNkNjE4YTdiOTY3MTE0NmRlMzNh
NmUyZGQwZDE4ODQzODcyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yODMsNyArMjgzLDYg
QEAgX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQ5c3Bvb2xSZWN0RVJOU18xNUdyYXBoaWNzQ29u
dGV4dEVSS05TXzdJbnRSZWN0RQogX19aTjdXZWJDb3JlMTJQcmludENvbnRleHRDMUVQTlNfNUZy
YW1lRQogX19aTjdXZWJDb3JlMTJQcmludENvbnRleHREMUV2CiBfX1pON1dlYkNvcmUxMlJlbmRl
ck9iamVjdDE2cmVwYWludFJlY3RhbmdsZUVSS05TXzdJbnRSZWN0RWIKLV9fWk43V2ViQ29yZTEy
UmVuZGVyT2JqZWN0MjNhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEViCiBfX1pON1dlYkNvcmUxMlJl
bmRlcldpZGdldDI4cmVzdW1lV2lkZ2V0SGllcmFyY2h5VXBkYXRlc0V2CiBfX1pON1dlYkNvcmUx
MlJlbmRlcldpZGdldDI5c3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNFdgogX19aTjdXZWJD
b3JlMTJTaGFyZWRCdWZmZXIxMHdyYXBOU0RhdGFFUDZOU0RhdGEKQEAgLTExMTEsNiArMTExMCw3
IEBAIF9fWk5LN1dlYkNvcmUxMVNjcmlwdFZhbHVlOWdldFN0cmluZ0VQTjNKU0M5RXhlY1N0YXRl
RVJOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTJJY29uRGF0YWJhc2UxMmRhdGFiYXNlUGF0
aEV2CiBfX1pOSzdXZWJDb3JlMTJJY29uRGF0YWJhc2UyNHNob3VsZFN0b3BUaHJlYWRBY3Rpdml0
eUV2CiBfX1pOSzdXZWJDb3JlMTJJY29uRGF0YWJhc2U5aXNFbmFibGVkRXYKK19fWk5LN1dlYkNv
cmUxMlJlbmRlck9iamVjdDIzYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RFYgogX19aTks3V2ViQ29y
ZTEyUmVuZGVyT2JqZWN0MTRlbmNsb3NpbmdMYXllckV2CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJP
YmplY3QxNWxvY2FsVG9BYnNvbHV0ZUVSS05TXzEwRmxvYXRQb2ludEViYgogX19aTks3V2ViQ29y
ZTEyUmVuZGVyT2JqZWN0NHZpZXdFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGIxNjYyM2Jh
YWM5MzEwMWIxM2MyMzRkNDMzNDU2N2JlMmU2N2U2MGUuLmU4MDMzZTM1MmQzN2FmM2I3YjAwYzIy
N2VlNzMyY2I0ZDBiZGY0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTU3Myw3ICs1NzMs
OCBAQCBMYXlvdXRSZWN0IEVsZW1lbnQ6OnNjcmVlblJlY3QoKSBjb25zdAogewogICAgIGlmICgh
cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKLSAgICByZXR1cm4gcmVu
ZGVyZXIoKS0+dmlldygpLT5mcmFtZVZpZXcoKS0+Y29udGVudHNUb1NjcmVlbihyZW5kZXJlcigp
LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKKyAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQg
cHJvYmFibHkgcmVzcGVjdCB0cmFuc2Zvcm1zCisgICAgcmV0dXJuIHJlbmRlcmVyKCktPnZpZXco
KS0+ZnJhbWVWaWV3KCktPmNvbnRlbnRzVG9TY3JlZW4ocmVuZGVyZXIoKS0+YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKGNvbnN0IEVsZW1lbnQqIGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKaW5kZXggYTZiOWUwMWUwZmFjNzRhZjVhMjg5NTNlYjA5OWI4N2E1MGFmMzJlNC4uNzljYjky
ZTQyYzFkZmVlYWZiNDBiYTE5OWZmNzdlMzM0ZDJmNTdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAt
ODIzLDcgKzgyMyw3IEBAIFJlbmRlckJveE1vZGVsT2JqZWN0KiBOb2RlOjpyZW5kZXJCb3hNb2Rl
bE9iamVjdCgpIGNvbnN0CiBMYXlvdXRSZWN0IE5vZGU6OmdldFJlY3QoKSBjb25zdAogewogICAg
IGlmIChyZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gcmVuZGVyZXIoKS0+YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QodHJ1ZSk7CisgICAgICAgIHJldHVybiByZW5kZXJlcigpLT5hYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdCgpOwogICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiB9CiAgICAgCkBAIC04
MzUsNyArODM1LDcgQEAgTGF5b3V0UmVjdCBOb2RlOjpyZW5kZXJSZWN0KGJvb2wqIGlzUmVwbGFj
ZWQpCiAgICAgd2hpbGUgKHJlbmRlcmVyICYmICFyZW5kZXJlci0+aXNCb2R5KCkgJiYgIXJlbmRl
cmVyLT5pc1Jvb3QoKSkgewogICAgICAgICBpZiAocmVuZGVyZXItPmlzUmVuZGVyQmxvY2soKSB8
fCByZW5kZXJlci0+aXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKSB8fCByZW5kZXJlci0+aXNS
ZXBsYWNlZCgpKSB7CiAgICAgICAgICAgICAqaXNSZXBsYWNlZCA9IHJlbmRlcmVyLT5pc1JlcGxh
Y2VkKCk7Ci0gICAgICAgICAgICByZXR1cm4gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hS
ZWN0KHRydWUpOworICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5n
Qm94UmVjdCgpOwogICAgICAgICB9CiAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVu
dCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVt
YkVsZW1lbnQuY3BwCmluZGV4IDVkMTc4YWYwNzlhYjRjZmJkOWQwZjcyMDQzZmFmM2Q4N2M0OGJj
YjguLmZjODIzN2NlNTAzM2FhNzY4MmVjNzc4Y2QyNzIzMmQxZTQ4YmMwOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcApAQCAtNDAs
NiArNDAsNyBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJNb3Vz
ZUV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgiCisjaW5j
bHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU2xpZGVyLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCkBAIC0yMTYsNyArMjE3
LDggQEAgdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OnNldFBvc2l0aW9uRnJvbVBvaW50KGNvbnN0
IExheW91dFBvaW50JiBwb2ludCkKICAgICAvLyBXZSBuZWVkIHRvIGNhbGN1bGF0ZSBjdXJyZW50
UG9zaXRpb24gZnJvbSBhYnNvbHV0ZSBwb2ludHMgYmVjYXVlIHRoZQogICAgIC8vIHJlbmRlcmVy
IGZvciB0aGlzIG5vZGUgaXMgdXN1YWxseSBvbiBhIGxheWVyIGFuZCByZW5kZXJCb3goKS0+eCgp
IGFuZAogICAgIC8vIHkoKSBhcmUgdW51c2FibGUuCi0gICAgTGF5b3V0UG9pbnQgYWJzb2x1dGVU
aHVtYk9yaWdpbiA9IHJlbmRlckJveCgpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpLmxvY2F0
aW9uKCk7CisgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHByb2JhYmx5IHJlc3BlY3QgdHJhbnNm
b3JtcyAKKyAgICBMYXlvdXRQb2ludCBhYnNvbHV0ZVRodW1iT3JpZ2luID0gcmVuZGVyQm94KCkt
PmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkubG9jYXRpb24oKTsK
ICAgICBMYXlvdXRQb2ludCBhYnNvbHV0ZVNsaWRlckNvbnRlbnRPcmlnaW4gPSByb3VuZGVkTGF5
b3V0UG9pbnQoaW5wdXQtPnJlbmRlcmVyKCktPmxvY2FsVG9BYnNvbHV0ZSgpKTsKICAgICBpZiAo
aXNWZXJ0aWNhbCkgewogICAgICAgICB0cmFja1NpemUgPSBpbnB1dC0+cmVuZGVyQm94KCktPmNv
bnRlbnRIZWlnaHQoKSAtIHJlbmRlckJveCgpLT5oZWlnaHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4
IGJmMTg1Y2Y3YjBmMDk2YjkzYzg4ODMyMDZiYTMzNzRkMDQ5MzQ1ZDUuLjBiZGRjMjA0MDQzZGQ1
M2JlZDZhODA0MGFjYmZjYjhiY2ZjMjA3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMzgsNiArMzgs
NyBAQAogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJS
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKQEAgLTUzNSw3ICs1MzYsOCBAQCB2b2lk
IElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzdGFydFNwZWVjaElucHV0KCkKICAgICBS
ZWZQdHI8SFRNTElucHV0RWxlbWVudD4gaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVt
ZW50Kj4oc2hhZG93QW5jZXN0b3JOb2RlKCkpOwogICAgIEF0b21pY1N0cmluZyBsYW5ndWFnZSA9
IGlucHV0LT5jb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKTsKICAgICBTdHJpbmcgZ3JhbW1hciA9
IGlucHV0LT5nZXRBdHRyaWJ1dGUod2Via2l0Z3JhbW1hckF0dHIpOwotICAgIEludFJlY3QgcmVj
dCA9IHJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgLy8gRklYTUU6
IHRoaXMgc2hvdWxkIHByb2JhYmx5IHJlc3BlY3QgdHJhbnNmb3JtcworICAgIEludFJlY3QgcmVj
dCA9IHJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1z
KCk7CiAgICAgaWYgKHNwZWVjaElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24obV9saXN0ZW5lcklk
LCByZWN0LCBsYW5ndWFnZSwgZ3JhbW1hciwgZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkp
CiAgICAgICAgIHNldFN0YXRlKFJlY29yZGluZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwCmluZGV4IGU2ODliNTI1MGI2YTg2OGVhNWE1
NTBkNmRhYWJhMjk0NWE3OGY2OWQuLmY4YmZiNjBmOWFkZWQyMGIyZTEwNjgwYTA4Yzk2NDI4NGRh
ODRmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxp
Z2h0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0
ZXIuY3BwCkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBkcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIEhpZ2hsaWdodERhdGEqIGhpZ2hsaWdodERhdGEpCiAgICAgICAg
IHJldHVybjsKIAogICAgIExheW91dFNpemUgbWFpbkZyYW1lT2Zmc2V0ID0gZnJhbWVUb01haW5G
cmFtZU9mZnNldChjb250YWluaW5nRnJhbWUpOwotICAgIExheW91dFJlY3QgYm91bmRpbmdCb3gg
PSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QodHJ1ZSk7CisgICAgTGF5b3V0UmVj
dCBib3VuZGluZ0JveCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwogCiAg
ICAgYm91bmRpbmdCb3gubW92ZShtYWluRnJhbWVPZmZzZXQpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuY3BwCmluZGV4IGMwYWExZTQxMzZjNDk0MmYyOWFm
ODg0ZjMyMTY4ODVjN2FjNTViNzkuLjgyNjU3NjUxMTBhZTU0NjhkMDMwNWYzZWZiMDQ2ZDI1YWRk
N2ZlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBv
cnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuY3Bw
CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBnZXRQbHVnaW5PY2NsdXNpb25zKEVsZW1lbnQqIGVs
ZW1lbnQsIFdpZGdldCogcGFyZW50V2lkZ2V0LCBjb25zdCBJbnRSZWN0JgogICAgICAgICBSZW5k
ZXJPYmplY3QqIGlmcmFtZVJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKIAogICAgICAg
ICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlmcmFtZVRhZykKLSAgICAgICAg
ICAgICYmIGlmcmFtZVJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpLmludGVyc2Vj
dHMoZnJhbWVSZWN0KQorICAgICAgICAgICAgJiYgaWZyYW1lUmVuZGVyZXItPmFic29sdXRlQm91
bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkuaW50ZXJzZWN0cyhmcmFtZVJlY3QpCiAg
ICAgICAgICAgICAmJiAoIWlmcmFtZVJlbmRlcmVyLT5zdHlsZSgpIHx8IGlmcmFtZVJlbmRlcmVy
LT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkpIHsKICAgICAgICAgICAgIGdldE9i
amVjdFN0YWNrKGlmcmFtZVJlbmRlcmVyLCAmaWZyYW1lWnN0YWNrKTsKICAgICAgICAgICAgIGlm
IChpZnJhbWVJc0Fib3ZlUGx1Z2luKGlmcmFtZVpzdGFjaywgcGx1Z2luWnN0YWNrKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggNDY1MTU0Y2NiOGFiZTE0
MWU4OWFkYTMzMWUwMmUzMGFjMzRlMDM4MS4uMmFjZTQ4ZmFkM2U3YmM0ODRlZGQ3N2I1ZWNkNzgz
NjU4MDQ4OGQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBA
IC01ODQzLDcgKzU4NDMsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpzZXRQYWdlTG9naWNhbE9mZnNl
dChpbnQgbG9naWNhbE9mZnNldCkKICAgICBtX3JhcmVEYXRhLT5tX3BhZ2VMb2dpY2FsT2Zmc2V0
ID0gbG9naWNhbE9mZnNldDsKIH0KIAotdm9pZCBSZW5kZXJCbG9jazo6YWJzb2x1dGVSZWN0cyhW
ZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQpCit2b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0
PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QKIHsK
ICAgICAvLyBGb3IgYmxvY2tzIGluc2lkZSBpbmxpbmVzLCB3ZSBnbyBhaGVhZCBhbmQgaW5jbHVk
ZSBtYXJnaW5zIHNvIHRoYXQgd2UgcnVuIHJpZ2h0IHVwIHRvIHRoZQogICAgIC8vIGlubGluZSBi
b3hlcyBhYm92ZSBhbmQgYmVsb3cgdXMgKHRodXMgZ2V0dGluZyBtZXJnZWQgd2l0aCB0aGVtIHRv
IGZvcm0gYSBzaW5nbGUgaXJyZWd1bGFyCkBAIC01ODU5LDcgKzU4NTksNyBAQCB2b2lkIFJlbmRl
ckJsb2NrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExh
eW91dFBvaW50JiBhYwogICAgICAgICByZWN0cy5hcHBlbmQoTGF5b3V0UmVjdChhY2N1bXVsYXRl
ZE9mZnNldCwgc2l6ZSgpKSk7CiB9CiAKLXZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkKK3ZvaWQgUmVuZGVyQmxv
Y2s6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhl
ZCkgY29uc3QKIHsKICAgICAvLyBGb3IgYmxvY2tzIGluc2lkZSBpbmxpbmVzLCB3ZSBnbyBhaGVh
ZCBhbmQgaW5jbHVkZSBtYXJnaW5zIHNvIHRoYXQgd2UgcnVuIHJpZ2h0IHVwIHRvIHRoZQogICAg
IC8vIGlubGluZSBib3hlcyBhYm92ZSBhbmQgYmVsb3cgdXMgKHRodXMgZ2V0dGluZyBtZXJnZWQg
d2l0aCB0aGVtIHRvIGZvcm0gYSBzaW5nbGUgaXJyZWd1bGFyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCmluZGV4IDA5NzcyN2U4YjUzNTgyZmNhYjdjZDkzMmU2NGE5NzA3ZmY5
ZWQ2ODQuLmY4MWIyZmU2MTcxNmI5YTBjOTZkOTcwNzY2MDVjNzQ3YjhkZmM1N2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC02ODIsOCArNjgyLDggQEAgcHJpdmF0
ZToKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0KFJlbmRlckJsb2Nr
KiByb290QmxvY2ssIExheW91dFVuaXQgcG9zaXRpb24pOwogICAgIExheW91dFVuaXQgbG9naWNh
bFJpZ2h0U2VsZWN0aW9uT2Zmc2V0KFJlbmRlckJsb2NrKiByb290QmxvY2ssIExheW91dFVuaXQg
cG9zaXRpb24pOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxM
YXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7Ci0gICAg
dmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNG
aXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+
JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKKyAgICB2aXJ0
dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVk
KSBjb25zdDsKIAogICAgIExheW91dFVuaXQgZGVzaXJlZENvbHVtbldpZHRoKCkgY29uc3Q7CiAg
ICAgdW5zaWduZWQgZGVzaXJlZENvbHVtbkNvdW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDVjOGJlZTkyNWMzYWY5N2I0YjMyZmNlZTA2YTkwOWI5
MTlkMzkyZjEuLjNiNDkzMzA4MTZlNzI1M2QxNzBhZWM1M2Y0NzQ2NmRlY2UxMjk5M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC00NjYsMTIgKzQ2NiwxMiBAQCB2
b2lkIFJlbmRlckJveDo6c2V0U2Nyb2xsVG9wKExheW91dFVuaXQgbmV3VG9wKQogICAgICAgICBs
YXllcigpLT5zY3JvbGxUb1lPZmZzZXQobmV3VG9wLCBSZW5kZXJMYXllcjo6U2Nyb2xsT2Zmc2V0
Q2xhbXBlZCk7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRS
ZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkKK3ZvaWQg
UmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExh
eW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QKIHsKICAgICByZWN0cy5hcHBlbmQo
TGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSk7CiB9CiAKLXZvaWQgUmVuZGVy
Qm94OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4
ZWQpCit2b2lkIFJlbmRlckJveDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVh
ZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIHF1YWRzLmFwcGVuZChsb2NhbFRvQWJz
b2x1dGVRdWFkKEZsb2F0UmVjdCgwLCAwLCB3aWR0aCgpLCBoZWlnaHQoKSksIGZhbHNlLCB3YXNG
aXhlZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDQ1ZDQ0NjBl
ZTQ4NWMzYTE4NTRmOTM2MGY2ZTg0ZGNkNTU3NGFkZWYuLjhjNjI0ZmRkNGU2YWYwOWZlMTYxNTll
MmRkN2U5NGVmMmQ5YTRlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAg
LTIzMiw4ICsyMzIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbGxhcHNl
ZE1hcmdpbkJlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIG1hcmdpbkJlZm9yZSgpOyB9CiAgICAgdmly
dHVhbCBMYXlvdXRVbml0IGNvbGxhcHNlZE1hcmdpbkFmdGVyKCkgY29uc3QgeyByZXR1cm4gbWFy
Z2luQWZ0ZXIoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPElu
dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKLSAgICB2aXJ0
dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVk
KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25z
dCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0
OwogICAgIAogICAgIEludFJlY3QgcmVmbGVjdGlvbkJveCgpIGNvbnN0OwogICAgIGludCByZWZs
ZWN0aW9uT2Zmc2V0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAppbmRleCBmOTQ0OTFmMzFjNWE4ZTVmZDIwMjI0
NTAxOTU0ZTRiNDZlZjA4NDY2Li4wMWNlZWFmZmNiMGZlNTliZTU0MWZmNGYyYWUzODA4YjFlODNh
NTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBs
b2FkQ29udHJvbC5jcHAKQEAgLTEzMiw3ICsxMzIsOCBAQCB2b2lkIFJlbmRlckZpbGVVcGxvYWRD
b250cm9sOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bgogICAgICAgICAgICAgdGV4dFggPSBjb250ZW50TGVmdCArIGNvbnRlbnRXaWR0aCgpIC0gYnV0
dG9uQW5kSWNvbldpZHRoIC0gZm9udC53aWR0aCh0ZXh0UnVuKTsKICAgICAgICAgLy8gV2Ugd2Fu
dCB0byBtYXRjaCB0aGUgYnV0dG9uJ3MgYmFzZWxpbmUKICAgICAgICAgUmVuZGVyQnV0dG9uKiBi
dXR0b25SZW5kZXJlciA9IHRvUmVuZGVyQnV0dG9uKGJ1dHRvbi0+cmVuZGVyZXIoKSk7Ci0gICAg
ICAgIExheW91dFVuaXQgdGV4dFkgPSBidXR0b25SZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoKS55KCkKKyAgICAgICAgLy8gRklYTUU6IG1ha2UgdGhpcyB3b3JrIHdpdGggdHJhbnNm
b3Jtcy4KKyAgICAgICAgTGF5b3V0VW5pdCB0ZXh0WSA9IGJ1dHRvblJlbmRlcmVyLT5hYnNvbHV0
ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpLnkoKQogICAgICAgICAgICAgKyBi
dXR0b25SZW5kZXJlci0+YmFzZWxpbmVQb3NpdGlvbihBbHBoYWJldGljQmFzZWxpbmUsIHRydWUs
IEhvcml6b250YWxMaW5lLCBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpOwogCiAgICAgICAgIHBh
aW50SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3Ioc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLT5jb2xvclNwYWNlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcAppbmRleCAxMTI5N2I1ZGI3YTlmN2EyZDA5
ZTQ2NTk0M2M0ODdlMTg2ZjE1YWQwLi5jZTBmNDNiZDAzMDQxNTFhNDA4M2IwYTAyMGE5ZTJlZDk2
MWIxM2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcApAQCAt
MTA1LDcgKzEwNSw3IEBAIGJvb2wgUmVuZGVySUZyYW1lOjpmbGF0dGVuRnJhbWUoKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBEbyBub3QgZmxhdHRlbiBvZmZzY3JlZW4gaW5uZXIg
ZnJhbWVzIGR1cmluZyBmcmFtZSBmbGF0dGVuaW5nLCBhcyBmbGF0dGVuaW5nIG1pZ2h0IG1ha2Ug
dGhlbSB2aXNpYmxlLgotICAgIEludFJlY3QgYm91bmRpbmdSZWN0ID0gYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoKTsKKyAgICBJbnRSZWN0IGJvdW5kaW5nUmVjdCA9IGFic29sdXRlQm91bmRpbmdC
b3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAgICAgcmV0dXJuIGJvdW5kaW5nUmVjdC5tYXhY
KCkgPiAwICYmIGJvdW5kaW5nUmVjdC5tYXhZKCkgPiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDZjYTlkM2ZiMWU5MmQwMmNiYzkwYmE0ZGMz
M2JhMTliZDg0YjI4MDQuLjNmMDk2MzNiMDA4ZDk1NmZhMWY3ZTIxODJlMzBjNGRkMjA1YWMzYTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC00NjYsNyAr
NDY2LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgbV9saW5lQm94ZXMucGFpbnQodGhp
cywgcGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiB9CiAKLXZvaWQgUmVuZGVySW5saW5lOjphYnNv
bHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCkKK3ZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVJlY3RzKFZlY3Rv
cjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNl
dCkgY29uc3QKIHsKICAgICBpZiAoIWFsd2F5c0NyZWF0ZUxpbmVCb3hlcygpKQogICAgICAgICBj
dWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKHRoaXMsIHJlY3RzLCB0b0xheW91dFNpemUoYWNjdW11
bGF0ZWRPZmZzZXQpKTsKQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6YWJz
b2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYg
YQogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRlUmVj
dHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVj
dHMsIGNvbnN0IExheW91dFNpemUmIG9mZnNldCkKK3ZvaWQgUmVuZGVySW5saW5lOjpjdWxsZWRJ
bmxpbmVBYnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8
TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXQpIGNvbnN0CiB7CiAg
ICAgaWYgKCFjdWxsZWRJbmxpbmVGaXJzdExpbmVCb3goKSkgewogICAgICAgICByZWN0cy5hcHBl
bmQoSW50UmVjdChvZmZzZXQud2lkdGgoKSwgb2Zmc2V0LmhlaWdodCgpLCAwLCAwKSk7CkBAIC01
NTMsNyArNTUzLDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRlUmVj
dHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3QKICAgICB9CiB9CiAKLXZvaWQg
UmVuZGVySW5saW5lOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9v
bCogd2FzRml4ZWQpCit2b2lkIFJlbmRlcklubGluZTo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGlmICghYWx3YXlz
Q3JlYXRlTGluZUJveGVzKCkpCiAgICAgICAgIGN1bGxlZElubGluZUFic29sdXRlUXVhZHModGhp
cywgcXVhZHMpOwpAQCAtNTY5LDcgKzU2OSw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0
ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCiAgICAgICAg
IGNvbnRpbnVhdGlvbigpLT5hYnNvbHV0ZVF1YWRzKHF1YWRzLCB3YXNGaXhlZCk7CiB9CiAKLXZv
aWQgUmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVBYnNvbHV0ZVF1YWRzKGNvbnN0IFJlbmRlcklu
bGluZSogY29udGFpbmVyLCBWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpCit2b2lkIFJlbmRlcklu
bGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1dGVRdWFkcyhjb25zdCBSZW5kZXJJbmxpbmUqIGNvbnRh
aW5lciwgVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKSBjb25zdAogewogICAgIGlmICghY3VsbGVk
SW5saW5lRmlyc3RMaW5lQm94KCkpIHsKICAgICAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNv
bHV0ZVF1YWQoRmxvYXRSZWN0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxp
bmUuaAppbmRleCBhZmQ0YWFkNDQ4YjBlODE4MTkzMjllYTBhYTY4NmU1YjA5Y2ViNjY3Li5mZTk1
YWYxZmUxODc1NDI2NWJhOTc5MDlmN2VkYjZlYjNlNzNhZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIExheW91dFVuaXQgbWFyZ2luU3RhcnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIExheW91dFVu
aXQgbWFyZ2luRW5kKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhW
ZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQp
OwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9v
bCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlv
dXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3
YXNGaXhlZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRh
aW5lcihSZW5kZXJPYmplY3QqLCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwogCkBAIC0xMDIs
OCArMTAyLDggQEAgcHJpdmF0ZToKICAgICBMYXlvdXRSZWN0IGN1bGxlZElubGluZVZpc3VhbE92
ZXJmbG93Qm91bmRpbmdCb3goKSBjb25zdDsKICAgICBJbmxpbmVCb3gqIGN1bGxlZElubGluZUZp
cnN0TGluZUJveCgpIGNvbnN0OwogICAgIElubGluZUJveCogY3VsbGVkSW5saW5lTGFzdExpbmVC
b3goKSBjb25zdDsKLSAgICB2b2lkIGN1bGxlZElubGluZUFic29sdXRlUmVjdHMoY29uc3QgUmVu
ZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFNp
emUmKTsKLSAgICB2b2lkIGN1bGxlZElubGluZUFic29sdXRlUXVhZHMoY29uc3QgUmVuZGVySW5s
aW5lKiBjb250YWluZXIsIFZlY3RvcjxGbG9hdFF1YWQ+Jik7CisgICAgdm9pZCBjdWxsZWRJbmxp
bmVBYnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8TGF5
b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRTaXplJikgY29uc3Q7CisgICAgdm9pZCBjdWxsZWRJbmxp
bmVBYnNvbHV0ZVF1YWRzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8Rmxv
YXRRdWFkPiYpIGNvbnN0OwogCiAgICAgdm9pZCBhZGRDaGlsZFRvQ29udGludWF0aW9uKFJlbmRl
ck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpOwogICAgIHZpcnR1
YWwgdm9pZCBhZGRDaGlsZElnbm9yaW5nQ29udGludWF0aW9uKFJlbmRlck9iamVjdCogbmV3Q2hp
bGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IDg5N2FhODhlYWYxZWEyYTQ2ZWQxMzZmNTBm
N2M2MjYyMzkxMzllMDEuLjliYTNiNWU3YTE5NzJjYzg0ZmMzNTQ2NGRjM2Y1ZGMyMWRhNzU0YTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtMzAy
LDcgKzMwMiw3IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OnNob3dQb3B1cCgpCiAgICAgLy8gQ29t
cHV0ZSB0aGUgdG9wIGxlZnQgdGFraW5nIHRyYW5zZm9ybXMgaW50byBhY2NvdW50LCBidXQgdXNl
CiAgICAgLy8gdGhlIGFjdHVhbCB3aWR0aCBvZiB0aGUgZWxlbWVudCB0byBzaXplIHRoZSBwb3B1
cC4KICAgICBGbG9hdFBvaW50IGFic1RvcExlZnQgPSBsb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2lu
dCgpLCBmYWxzZSwgdHJ1ZSk7Ci0gICAgTGF5b3V0UmVjdCBhYnNCb3VuZHMgPSBhYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdCgpOworICAgIExheW91dFJlY3QgYWJzQm91bmRzID0gYWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKICAgICBhYnNCb3VuZHMuc2V0TG9jYXRp
b24ocm91bmRlZEludFBvaW50KGFic1RvcExlZnQpKTsKICAgICBtX3BvcHVwLT5zaG93KGFic0Jv
dW5kcywgZG9jdW1lbnQoKS0+dmlldygpLAogICAgICAgICBzZWxlY3QtPm9wdGlvblRvTGlzdElu
ZGV4KHNlbGVjdC0+c2VsZWN0ZWRJbmRleCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCmluZGV4IGE0NWU2MGQ4NjVkZjBhNTYxMWEwMTYyNmQwYWRlYTU2YjFk
N2JmOTQuLjk0OTVlMzQ5MTJlZWI0OGM3OGJhNTU1YTQxNmJkZjA2NjUxYjU1YjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xMTU1LDcgKzExNTUsNyBA
QCB2b2lkIFJlbmRlck9iamVjdDo6cGFpbnRPdXRsaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0LCBjb25zdCBMYXlvdXRSZQogICAgICAgICBncmFwaGljc0NvbnRleHQtPmVuZFRy
YW5zcGFyZW5jeUxheWVyKCk7CiB9CiAKLUludFJlY3QgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybXMpCitJbnRSZWN0IFJlbmRlck9iamVjdDo6
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm1zKSBjb25zdAogewogICAg
IGlmICh1c2VUcmFuc2Zvcm1zKSB7CiAgICAgICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwpA
QCAtMTIwNSwxNCArMTIwNSwxNCBAQCB2b2lkIFJlbmRlck9iamVjdDo6YWJzb2x1dGVGb2N1c1Jp
bmdRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpCiB2b2lkIFJlbmRlck9iamVjdDo6YWRk
QWJzb2x1dGVSZWN0Rm9yTGF5ZXIoSW50UmVjdCYgcmVzdWx0KQogewogICAgIGlmIChoYXNMYXll
cigpKQotICAgICAgICByZXN1bHQudW5pdGUoYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7Cisg
ICAgICAgIHJlc3VsdC51bml0ZShhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNm
b3JtcygpKTsKICAgICBmb3IgKFJlbmRlck9iamVjdCogY3VycmVudCA9IGZpcnN0Q2hpbGQoKTsg
Y3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGN1cnJl
bnQtPmFkZEFic29sdXRlUmVjdEZvckxheWVyKHJlc3VsdCk7CiB9CiAKIExheW91dFJlY3QgUmVu
ZGVyT2JqZWN0OjpwYWludGluZ1Jvb3RSZWN0KExheW91dFJlY3QmIHRvcExldmVsUmVjdCkKIHsK
LSAgICBMYXlvdXRSZWN0IHJlc3VsdCA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAg
TGF5b3V0UmVjdCByZXN1bHQgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNm
b3JtcygpOwogICAgIHRvcExldmVsUmVjdCA9IHJlc3VsdDsKICAgICBmb3IgKFJlbmRlck9iamVj
dCogY3VycmVudCA9IGZpcnN0Q2hpbGQoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5l
eHRTaWJsaW5nKCkpCiAgICAgICAgIGN1cnJlbnQtPmFkZEFic29sdXRlUmVjdEZvckxheWVyKHJl
c3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggZWNmNTIy
NzIxYTgwZWNjYzdmMjUzNDg3M2VlOTI4NjFkNWE4MWZjYS4uMDhkYWI2M2VlNGRmZDEyZjdhODcy
OWViYzViNWRkMzgyMzM1NGZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaApAQCAtNjIxLDEyICs2MjEsMTQgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUgb2Zm
c2V0IGZyb20gYW4gb2JqZWN0IHVwIHRoZSBjb250YWluZXIoKSBjaGFpbi4gQXNzZXJ0cyB0aGF0
IG5vbmUgb2YgdGhlIGludGVybWVkaWF0ZSBvYmplY3RzIGhhdmUgdHJhbnNmb3Jtcy4KICAgICBM
YXlvdXRTaXplIG9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcihSZW5kZXJPYmplY3QqKSBjb25z
dDsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVj
dD4mLCBjb25zdCBMYXlvdXRQb2ludCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJl
Y3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JikgY29uc3QgeyB9CisK
ICAgICAvLyBGSVhNRTogdXNlVHJhbnNmb3JtcyBzaG91bGQgZ28gYXdheSBldmVudHVhbGx5Ci0g
ICAgSW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybXMgPSBm
YWxzZSk7CisgICAgSW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5z
Zm9ybSA9IHRydWUpIGNvbnN0OworICAgIEludFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJ
Z25vcmluZ1RyYW5zZm9ybXMoKSBjb25zdCB7IHJldHVybiBhYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dChmYWxzZSk7IH0KIAogICAgIC8vIEJ1aWxkIGFuIGFycmF5IG9mIHF1YWRzIGluIGFic29sdXRl
IGNvb3JkcyBmb3IgbGluZSBib3hlcwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZl
Y3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogLyp3YXNGaXhlZCovID0gMCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiAvKndhc0ZpeGVk
Ki8gPSAwKSBjb25zdCB7IH0KIAogICAgIHZvaWQgYWJzb2x1dGVGb2N1c1JpbmdRdWFkcyhWZWN0
b3I8RmxvYXRRdWFkPiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAK
aW5kZXggZTg4ODYxZjNkMDRhMDg2ODQ0ZDNhNzBkMjE1YTQ3NGRlNjg5MjRjOS4uNmI2ZGEyNDQ0
ZTEyYzczMjZmMTk2ZDY0Yjg4MTI1ODgyNzRmOThjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcApAQCAtMzAxLDcgKzMwMSw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gUmVuZGVyVGV4dDo6b3JpZ2luYWxUZXh0KCkgY29uc3QKICAgICByZXR1cm4gKGUgJiYgZS0+
aXNUZXh0Tm9kZSgpKSA/IHN0YXRpY19jYXN0PFRleHQqPihlKS0+ZGF0YUltcGwoKSA6IDA7CiB9
CiAKLXZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJl
Y3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCit2b2lkIFJlbmRlclRl
eHQ6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0
UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewogICAgIGZvciAoSW5saW5lVGV4dEJv
eCogYm94ID0gZmlyc3RUZXh0Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKQog
ICAgICAgICByZWN0cy5hcHBlbmQoZW5jbG9zaW5nTGF5b3V0UmVjdChGbG9hdFJlY3QoYWNjdW11
bGF0ZWRPZmZzZXQgKyBib3gtPnRvcExlZnQoKSwgYm94LT5zaXplKCkpKSk7CkBAIC0zODgsNyAr
Mzg4LDcgQEAgc3RhdGljIEludFJlY3QgZWxsaXBzaXNSZWN0Rm9yQm94KElubGluZVRleHRCb3gq
IGJveCwgdW5zaWduZWQgc3RhcnRQb3MsIHVuc2lnbmUKICAgICByZXR1cm4gSW50UmVjdCgpOwog
fQogICAgIAotdm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiBxdWFkcywgYm9vbCogd2FzRml4ZWQsIENsaXBwaW5nT3B0aW9uIG9wdGlvbikKK3ZvaWQgUmVu
ZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdh
c0ZpeGVkLCBDbGlwcGluZ09wdGlvbiBvcHRpb24pIGNvbnN0CiB7CiAgICAgZm9yIChJbmxpbmVU
ZXh0Qm94KiBib3ggPSBmaXJzdFRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94
KCkpIHsKICAgICAgICAgSW50UmVjdCBib3VuZGFyaWVzID0gYm94LT5jYWxjdWxhdGVCb3VuZGFy
aWVzKCk7CkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRz
KFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQsIENsaXBwaW4KICAgICB9
CiB9CiAgICAgCi12b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVh
ZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkKK3ZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAg
IGFic29sdXRlUXVhZHMocXVhZHMsIHdhc0ZpeGVkLCBOb0NsaXBwaW5nKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCmluZGV4IDQwMjBkOGFhMzcxMjJkMTI1ZDFkYzRlZjEx
MDcwOWQxOGY5NTEzOTguLjQyZTlhZWM5NmIzYjMyYjJkMTllM2JjNTE5NWMxM2Q0NzFjYTA5MzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAtNTQsMTQgKzU0LDE0IEBA
IHB1YmxpYzoKICAgICBJbmxpbmVUZXh0Qm94KiBjcmVhdGVJbmxpbmVUZXh0Qm94KCk7CiAgICAg
dm9pZCBkaXJ0eUxpbmVCb3hlcyhib29sIGZ1bGxMYXlvdXQpOwogCi0gICAgdmlydHVhbCB2b2lk
IGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8
TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0
OwogICAgIHZvaWQgYWJzb2x1dGVSZWN0c0ZvclJhbmdlKFZlY3RvcjxJbnRSZWN0PiYsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gVUlOVF9NQVgsIGJvb2wg
dXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0gMCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0Zp
eGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYs
IGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKICAgICB2b2lkIGFic29sdXRlUXVhZHNGb3JSYW5nZShW
ZWN0b3I8RmxvYXRRdWFkPiYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5k
T2Zmc2V0ID0gVUlOVF9NQVgsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIGJvb2wq
IHdhc0ZpeGVkID0gMCk7CiAKICAgICBlbnVtIENsaXBwaW5nT3B0aW9uIHsgTm9DbGlwcGluZywg
Q2xpcFRvRWxsaXBzaXMgfTsKLSAgICB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVh
ZD4mLCBib29sKiB3YXNGaXhlZCA9IDAsIENsaXBwaW5nT3B0aW9uID0gTm9DbGlwcGluZyk7Cisg
ICAgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQg
PSAwLCBDbGlwcGluZ09wdGlvbiA9IE5vQ2xpcHBpbmcpIGNvbnN0OwogCiAgICAgdmlydHVhbCBW
aXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmUuY3BwCmluZGV4IDE3MDk3YjFmYmFiMzYxODA4OGUwYjQ4OTM3YzYwOGU1YzJkODRj
ZmEuLmZmOTA3NzBmMDk1NTc4OTEwNzVkYjkxZTI5ZTFkZmU3ODcwNGFmYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmUuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmU6OnNob3dQb3B1cCgpCiAgICAgICAgIG1fc2VhcmNoUG9wdXAtPnNhdmVSZWNlbnRTZWFyY2hl
cyhuYW1lLCBtX3JlY2VudFNlYXJjaGVzKTsKICAgICB9CiAKLSAgICBtX3NlYXJjaFBvcHVwLT5w
b3B1cE1lbnUoKS0+c2hvdyhhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCh0cnVlKSwgZG9jdW1lbnQo
KS0+dmlldygpLCAtMSk7CisgICAgbV9zZWFyY2hQb3B1cC0+cG9wdXBNZW51KCktPnNob3coYWJz
b2x1dGVCb3VuZGluZ0JveFJlY3QoKSwgZG9jdW1lbnQoKS0+dmlldygpLCAtMSk7CiB9CiAKIHZv
aWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpoaWRlUG9wdXAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKaW5kZXggZGJhODc0ZDRhYWNl
ZGExNTEzZTY5ZTZhZTBkNjUwNmViNDMwODk5NS4uZDM0ZDA3NDg0NDYzYTlmNjUyMjZmNWQxMmZj
MTcwODc1NzgzMzBjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lU2FmYXJpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVTYWZhcmkuY3BwCkBAIC0xMDgwLDcgKzEwODAsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJp
OjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFp
bgogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpbnB1dC0+cmVuZGVyZXIoKTsKICAgICBB
U1NFUlQocmVuZGVyZXIpOwogCi0gICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFi
c29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVy
ZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAKICAgICBw
YWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6U2VhcmNoRmllbGRDYW5jZWxCdXR0b25QYXJ0LCBw
YWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHNlYXJjaFJlY3QsIGNvbnRyb2xT
aXplRnJvbVJlY3Qoc2VhcmNoUmVjdCwgc2VhcmNoRmllbGRTaXplcygpKSwgZGV0ZXJtaW5lU3Rh
dGUobykpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTExMzQsNyArMTEzNCw3IEBAIGJvb2wgUmVu
ZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJP
YmplY3QqIG8sIGNvbnN0CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGlucHV0LT5yZW5k
ZXJlcigpOwogICAgIEFTU0VSVChyZW5kZXJlcik7CiAKLSAgICBJbnRSZWN0IHNlYXJjaFJlY3Qg
PSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBJbnRSZWN0IHNlYXJj
aFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9y
bXMoKTsKIAogICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZFJlc3Vs
dHNEZWNvcmF0aW9uUGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBz
ZWFyY2hSZWN0LCBjb250cm9sU2l6ZUZyb21SZWN0KHNlYXJjaFJlY3QsIHNlYXJjaEZpZWxkU2l6
ZXMoKSksIGRldGVybWluZVN0YXRlKG8pKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTU3LDcg
KzExNTcsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0
c0J1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaQogICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBpbnB1dC0+cmVuZGVyZXIoKTsKICAgICBBU1NFUlQocmVuZGVyZXIpOwogCi0gICAg
SW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7
CisgICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hS
ZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAKICAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVt
ZTo6U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uUGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLCBzZWFyY2hSZWN0LCBjb250cm9sU2l6ZUZyb21SZWN0KHNlYXJjaFJlY3Qs
IHNlYXJjaEZpZWxkU2l6ZXMoKSksIGRldGVybWluZVN0YXRlKG8pKTsKICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggMWZlZmFjNGYw
MTkyZWEzZWIwNTQxNWNiMzQzNGFmNWIwOWY2YTc0MS4uZjQyMWY5ODFkYTI2N2RkNTdkNTk5NGFi
YzNlYzFhNzU2NWQxODA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cApAQCAtMzI5LDEyICszMjksMTIgQEAgdm9pZCBSZW5kZXJWaWV3Ojpjb21wdXRlUmVjdEZvclJl
cGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEkKICAgICAgICAg
cmVjdCA9IG1fbGF5ZXItPnRyYW5zZm9ybSgpLT5tYXBSZWN0KHJlY3QpOwogfQogCi12b2lkIFJl
bmRlclZpZXc6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3Qg
TGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KQordm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0
ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCkgY29uc3QKIHsKICAgICByZWN0cy5hcHBlbmQoTGF5b3V0UmVjdChhY2N1
bXVsYXRlZE9mZnNldCwgbV9sYXllci0+c2l6ZSgpKSk7CiB9CiAKLXZvaWQgUmVuZGVyVmlldzo6
YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQor
dm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywg
Ym9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKHdhc0ZpeGVkKQogICAgICAgICAqd2Fz
Rml4ZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IGU2
ZDdkOGY3NTVmNWI3N2JiN2Q5OTA4NzBlNWE2YWRhYWE0OWZlNjcuLjlhNmY2M2Q5MGZiZjIxYTYw
N2E1ZGQ1M2Q2MjIwYzhhZjQxYWRmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuaApAQCAtODYsOCArODYsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIHByaW50aW5nKCkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAg
IHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExh
eW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgdm9pZCBzZXRNYXhpbWFsT3V0
bGluZVNpemUoaW50IG8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0Jsb2NrLmNwcAppbmRleCAyYzgxNTkwOGViZjZiOTg5MDY3NTdkOGJjNTRiZTY5NDdhNzE3
OWUzLi43YjE2YTRkNWJmYzljYjdiYjY1ZTY1YmIxNWFiYzhlMmY2ZWJhZWEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcApAQCAtNzgsNyAr
NzgsNyBAQCB2b2lkIFJlbmRlclNWR0Jsb2NrOjp1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUo
KQogICAgIHNldEhhc092ZXJmbG93Q2xpcChmYWxzZSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHQmxv
Y2s6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQm
KQordm9pZCBSZW5kZXJTVkdCbG9jazo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjb2RlIHBhdGggc2hv
dWxkIG5ldmVyIGJlIHRha2VuIGZvciBTVkcsIGFzIHdlJ3JlIGFzc3VtaW5nIHVzZVRyYW5zZm9y
bXM9dHJ1ZSBldmVyeXdoZXJlLCBhYnNvbHV0ZVF1YWRzIHNob3VsZCBiZSB1c2VkLgogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdCbG9jay5oCmluZGV4IDIyYzFmMThlMzZlMDIzMTBiZTdlN2QzZTRlYzgxMjNhMjliNWE3
MTQuLjU4Y2YyNjIwYTk4MThkNjRhZTI3ODM0ZmVkOGQ0MWI3MTY5MjA0NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgKQEAgLTM4LDcgKzM4LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJT
dHlsZT4pOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNv
bnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7CisgICAgdmlydHVhbCB2b2lkIGFi
c29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0KSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29u
c3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcAppbmRleCBkMjlkODVl
YzkzOTcxZGVlMThkYjEyYmQ4ZTc4MDVmNTgxNzcyZjFlLi44OTViMjU0NDkwMDEyM2ZkYmYzZWEw
MjU4NTRjYjljZWRiZTA0ZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBA
IHZvaWQgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjpwYWludChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpCiAgICAgLy8gVGhpcyBzdWJ0cmVlIGRvZXMgbm90IHBhaW50LgogfQogCi12
b2lkIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcjo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRR
dWFkPiYsIGJvb2wqKQordm9pZCBSZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OmFic29sdXRlUXVh
ZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKikgY29uc3QKIHsKICAgICAvLyBUaGlzIHN1YnRy
ZWUgZG9lcyBub3QgdGFrZSB1cCBzcGFjZSBvciBwYWludAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKaW5kZXgg
ZWZmZjkyMTUxZDJjMzYxYTZkMGM4ZDk3NzdiMzFmNjM0NDY0ZDEwYy4uZjI2YzVmYzYxYTM3Zjgy
MDdkNGQ2NDliZTY4MDlkNTJhMmY4ODI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCkBAIC00NCw3ICs0NCw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50Jik7CiAgICAgCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxv
d1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KikgY29uc3QgeyByZXR1cm4gTGF5
b3V0UmVjdCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0
UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFs
IGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1
bHQmLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGlu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAK
aW5kZXggMDk3NzBlZmJmMDI3ZmFjOWViYTdkYmM3YzRlYTQzN2Y2YWEwMTBiOS4uNGM5MDU4MGYx
MzU5YmY2ODFjNzczYWQ1ZDhiYjgxNmNlZDQyYTYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcApAQCAtODIsOSArODIsOSBAQCB2b2lk
IFJlbmRlclNWR0lubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lcgogICAgIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250
YWluZXIodGhpcywgcmVwYWludENvbnRhaW5lciwgdXNlVHJhbnNmb3JtcywgZml4ZWQsIHRyYW5z
Zm9ybVN0YXRlLCB3YXNGaXhlZCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHSW5saW5lOjphYnNvbHV0
ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFJl
bmRlclNWR0lubGluZTo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJv
b2wqIHdhc0ZpeGVkKSBjb25zdAogewotICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0gUmVuZGVy
U1ZHVGV4dDo6bG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKHRoaXMpOworICAgIGNvbnN0IFJl
bmRlck9iamVjdCogb2JqZWN0ID0gUmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVuZGVyU1ZHVGV4dEFu
Y2VzdG9yKHRoaXMpOwogICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCmluZGV4IDBhNjA4
MzdmNDc3NTk2OTAzN2U4NDk3NWJjZjIwMDgwNjZiYjgyZjcuLmQyZmExY2M1MjQwMjRiNjFhYTdk
NGFhNzdhNGU4ZGQ4ZTU2MDg0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbmxpbmUuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0
ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBM
YXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIGJvb2wq
IHdhc0ZpeGVkID0gMCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBJbmxpbmVGbG93Qm94KiBjcmVhdGVJbmxpbmVGbG93Qm94KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVs
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxP
YmplY3QuY3BwCmluZGV4IDE0YzFkYjhlMGY5M2VhZjU1OGFlZWM4OTJhODcyMzIzY2QxMGQ3MjMu
LmZiZTQ5M2I1NGRjZGVjMWM1NzY3YTQ3OGFhNjYzODZhNTQwMzRiZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCkBA
IC03MCwxMyArNzAsMTMgQEAgTGF5b3V0UmVjdCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6b3V0bGlu
ZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHIKICAgICByZXR1cm4gY29u
dGFpbmVyUmVsYXRpdmVRdWFkLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7CiB9CiAKLXZvaWQgUmVu
ZGVyU1ZHTW9kZWxPYmplY3Q6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29u
c3QgTGF5b3V0UG9pbnQmKQordm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVSZWN0
cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0CiB7CiAgICAg
Ly8gVGhpcyBjb2RlIHBhdGggc2hvdWxkIG5ldmVyIGJlIHRha2VuIGZvciBTVkcsIGFzIHdlJ3Jl
IGFzc3VtaW5nIHVzZVRyYW5zZm9ybXM9dHJ1ZSBldmVyeXdoZXJlLCBhYnNvbHV0ZVF1YWRzIHNo
b3VsZCBiZSB1c2VkLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFJlbmRl
clNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywg
Ym9vbCogd2FzRml4ZWQpCit2b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVF1YWRz
KFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAg
cXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1YWQoc3Ryb2tlQm91bmRpbmdCb3goKSwgZmFs
c2UsIHdhc0ZpeGVkKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR01vZGVsT2JqZWN0LmgKaW5kZXggYzI4ZDNjNjYwN2Q1NTRlYTIwYzJiYTVjNWFl
ZWVkY2MyZGU3M2I3OS4uNzA0MWQ0NDllZjYzMmM0ZmMzMDA5MjYwZjkyYzAwMDNiMDEwZDdlMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxP
YmplY3QuaApAQCAtNTUsOCArNTUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1
dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
TGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CiAgICAgdmlydHVhbCBMYXlv
dXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBMYXlvdXRQb2ludCopIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFi
c29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0
cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZz
ZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIG1hcExvY2Fs
VG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wg
dXNlVHJhbnNmb3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBib29sKiB3YXNGaXhl
ZCA9IDApIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZm
ZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKaW5kZXggYWY0MzliNWQzOGYwODRmMDJh
OTIxYjJiYWZhMGQ5YjFhYmQ0NzA4MS4uMmE3ZDgwY2YyZWY1MjFhOTRmYmQ5NzcyMjBiMWU0ZWUx
MjVkNjBkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Rl
eHQuY3BwCkBAIC0yMjUsNyArMjI1LDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlclNWR1RleHQ6
OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Db250ZW4KICAgICBy
ZXR1cm4gY2xvc2VzdEJveC0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChMYXlvdXRQb2lu
dChwb2ludEluQ29udGVudHMueCgpLCBjbG9zZXN0Qm94LT55KCkpKTsKIH0KIAotdm9pZCBSZW5k
ZXJTVkdUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCog
d2FzRml4ZWQpCit2b2lkIFJlbmRlclNWR1RleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0
UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBxdWFkcy5hcHBlbmQo
bG9jYWxUb0Fic29sdXRlUXVhZChzdHJva2VCb3VuZGluZ0JveCgpLCBmYWxzZSwgd2FzRml4ZWQp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKaW5k
ZXggYjNlMGY0M2Y4ZjY0OWM3ZmE2N2UwYjg0MjAzNjdhZjBkNmU5MmQzZS4uYTBhZGE0Y2I0ZWZl
OTgwY2FiZTI3YTlmYTUwNGJhYTM5MDE4OWRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCB2b2lkIGxheW91dCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAK
ICAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGQ2NGQwYjdjNDc2OGYxM2NlYmIwOGNhZWQz
ODEwNGMyOGFiZGVhZDYuLmQ3YTgxNTQwZmEwZWRjZDFhOWZiMzQyNTcwOTRkZmYwMjUyYzUwMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCBQ
YXNzUmVmUHRyPENsaWVudFJlY3Q+IEludGVybmFsczo6Ym91bmRpbmdCb3goRWxlbWVudCogZWxl
bWVudCwgRXhjZXB0aW9uQ29kZSYgZQogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBlbGVt
ZW50LT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBDbGll
bnRSZWN0OjpjcmVhdGUoKTsKLSAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKHJlbmRlcmVy
LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKKyAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3Jl
YXRlKHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3Jtcygp
KTsKIH0KIAogdW5zaWduZWQgSW50ZXJuYWxzOjptYXJrZXJDb3VudEZvck5vZGUoTm9kZSogbm9k
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2ViZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAppbmRleCA1
ZjEyZTEwMTQzOWY1ZmJmMGQ2Y2RjYjEwMzQxMTcwNjFiNTkyN2Y0Li4wN2YyZGY5ODdkMmNmZjU2
ZGZjOGQ4N2Q3YTVjYWJiNWMxOTY2ZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0Fw
aS9xd2ViZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAK
QEAgLTE3NTEsNyArMTc1MSw3IEBAIFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZTo6UVdlYkhpdFRl
c3RSZXN1bHRQcml2YXRlKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQKICAgICBpbWFnZVVy
bCA9IGhpdFRlc3QuYWJzb2x1dGVJbWFnZVVSTCgpOwogICAgIGlubmVyTm9kZSA9IGhpdFRlc3Qu
aW5uZXJOb2RlKCk7CiAgICAgaW5uZXJOb25TaGFyZWROb2RlID0gaGl0VGVzdC5pbm5lck5vblNo
YXJlZE5vZGUoKTsKLSAgICBib3VuZGluZ1JlY3QgPSBpbm5lck5vblNoYXJlZE5vZGUgPyBpbm5l
ck5vblNoYXJlZE5vZGUtPnJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KHRydWUp
IDogSW50UmVjdCgpOworICAgIGJvdW5kaW5nUmVjdCA9IGlubmVyTm9uU2hhcmVkTm9kZSA/IGlu
bmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSA6
IEludFJlY3QoKTsKICAgICBXZWJDb3JlOjpJbWFnZSAqaW1nID0gaGl0VGVzdC5pbWFnZSgpOwog
ICAgIGlmIChpbWcpIHsKICAgICAgICAgUVBpeG1hcCAqcGl4ID0gaW1nLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCAxOTBhYjFhZWJlYzUzOGQxMDk0MWMx
MWNhYjRjNjJhNjI1Y2I3MmM5Li4yOTRiMGQ0NmY3MzZmMWM1MjUzYjZiZTEzZTM5YTQ2NzEzZDA3
ZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTA5LTMwICBGYWR5IFNh
bXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENvZGUgY2xlYW4tdXA6IE1h
a2UgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCBhbmQgYXNzb2NpYXRlZCBt
ZXRob2RzIGNvbnN0IGFuZCBtYWtlIGl0cyBwYXJhbWV0ZXIgdXNlVHJhbnNmb3JtcyBubyBsb25n
ZXIgZGVmYXVsdCB0byBmYWxzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjkwMDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkhpdFRlc3RSZXN1
bHRQcml2YXRlOjpRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGUpOgorCiAyMDExLTA5LTIzICBUb3Ig
QXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRd
IEZpeCBidWlsZCBhZ2FpbnN0IFF0NSBhZnRlciByZWZhY3RvciBvZiB3aWRnZXRzIG91dCBvZiBR
dEdVaQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IGIwZTc5MDc1Y2IyNjIwOGVmOTM2NGRiMTBkOTIzM2E4OTk3ZDY1
MDMuLmUyOTgyZjljYzRkMjQ3MzNjMDBiYjNmZjVmNTMyM2E1NjdkYTgwMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAxMS0wOS0zMCAgRmFkeSBTYW11ZWwgIDxmc2FtdWVsQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBDb2RlIGNsZWFuLXVwOiBNYWtlIFJlbmRlck9iamVjdDo6YWJz
b2x1dGVCb3VuZGluZ0JveFJlY3QgYW5kIGFzc29jaWF0ZWQgbWV0aG9kcyBjb25zdCBhbmQgbWFr
ZSBpdHMgcGFyYW1ldGVyIHVzZVRyYW5zZm9ybXMgbm8gbG9uZ2VyIGRlZmF1bHQgdG8gZmFsc2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MDA5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3aW4vV2Vi
S2l0Mi5kZWY6CisgICAgICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVmOgorCiAyMDExLTA5LTMw
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
VU5JWF0gQWRkIGEgbWV0aG9kIHRvIGdldCBpbmZvcm1hdGlvbiBmb3IgYW4gYWxyZWFkeSBsb2Fk
ZWQgcGx1Z2luIG1vZHVsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIu
ZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IGZhNTE4ZTM0MDJhMTEy
NTQ2MTkwYmJiZDUyMTJmNjk0NTk0ZmQxMDIuLmIxMDkwZDk3OWExMTVkZTNkMjIzMjM3MzY0NWQ5
ODM2MzlkODk5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTE0Myw3ICsxNDMsNiBAQCBF
WFBPUlRTCiAgICAgICAgID8/MENsaWVudFJlY3RAV2ViQ29yZUBAQUFFQFhaCiAgICAgICAgID8/
MFN0cmluZ0BXVEZAQFFBRUBQQkRAWgogICAgICAgICA/PzBTdHJpbmdAV1RGQEBRQUVAUEJfV0Ba
Ci0gICAgICAgID9hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEBSZW5kZXJPYmplY3RAV2ViQ29yZUBA
UUFFP0FWSW50UmVjdEAyQF9OQFoKICAgICAgICAgP2FkZEBBdG9taWNTdHJpbmdAV1RGQEBDQT9B
Vj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAyQFBCREBaCiAgICAgICAgID9hZGRTbG93
Q2FzZUBBdG9taWNTdHJpbmdAV1RGQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZA
QEAyQFBBVlN0cmluZ0ltcGxAMkBAWgogICAgICAgICA/Y2FjaGVET01TdHJ1Y3R1cmVAV2ViQ29y
ZUBAWUFQQVZTdHJ1Y3R1cmVASlNDQEBQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBBVjIzQFBCVUNs
YXNzSW5mb0AzQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0
ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5kZXggODQ4MmI0
OTcxNmM3MWNiMmMzMmQ3YzBmYmM5NTJmMjdmNDFmNGQxYy4uNGMyOWM0NDUzNTgyZDM5ZjM5NTAz
NTExODQwNjhkMmYzNDNmOGI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktp
dDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgpA
QCAtMTM1LDcgKzEzNSw2IEBAIEVYUE9SVFMKICAgICAgICAgPz8wU3RyaW5nQFdURkBAUUFFQFBC
X1dAWgogICAgICAgICA/PzFOb2RlUmVuZGVyaW5nQ29udGV4dEBXZWJDb3JlQEBRQUVAWFoKICAg
ICAgICAgPz8xUmFuZ2VAV2ViQ29yZUBAUUFFQFhaCi0gICAgICAgID9hYnNvbHV0ZUJvdW5kaW5n
Qm94UmVjdEBSZW5kZXJPYmplY3RAV2ViQ29yZUBAUUFFP0FWSW50UmVjdEAyQF9OQFoKICAgICAg
ICAgP2FkZEBBdG9taWNTdHJpbmdAV1RGQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBX
VEZAQEAyQFBCREBaCiAgICAgICAgID9hZGRTbG93Q2FzZUBBdG9taWNTdHJpbmdAV1RGQEBDQT9B
Vj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAyQFBBVlN0cmluZ0ltcGxAMkBAWgogICAg
ICAgICA/Y2FjaGVET01TdHJ1Y3R1cmVAV2ViQ29yZUBAWUFQQVZTdHJ1Y3R1cmVASlNDQEBQQVZK
U0RPTUdsb2JhbE9iamVjdEAxQFBBVjIzQFBCVUNsYXNzSW5mb0AzQEBaCmRpZmYgLS1naXQgYS9T
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xz
LmZpbHRlcgppbmRleCA3ZDM5YzQ1YWMwOWU0YmJlMjMzNThiZDNiNjc1OWE0MTQwM2E5MTBjLi5m
NjdkNWY4ZGQ1YThiYTNiMmI2NDI0NmQ1MThiODljZmZiZGM0Y2Q4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9s
cy5maWx0ZXIKQEAgLTQzLDcgKzQzLDcgQEAgX1pON1dlYkNvcmUxMUV2ZW50VGFyZ2V0OHRvU3Ry
ZWFtRXY7CiBfWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxMXNldERpc2FibGVkRWI7CiBfWk43V2Vi
Q29yZTExbWVtb3J5Q2FjaGVFdjsKIF9aTjdXZWJDb3JlMTJKU0RPTVdyYXBwZXIzNHZpcnR1YWxG
dW5jdGlvblRvUHJldmVudFdlYWtWdGFibGVFdjsKLV9aTjdXZWJDb3JlMTJSZW5kZXJPYmplY3Qy
M2Fic29sdXRlQm91bmRpbmdCb3hSZWN0RWI7CitfWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDIz
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RFYjsKIF9aTjdXZWJDb3JlMTNjcmVhdGVXcmFwcGVyRVBO
M0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzROb2RlRTsKIF9aTjdX
ZWJDb3JlMTVzZXRET01FeGNlcHRpb25FUE4zSlNDOUV4ZWNTdGF0ZUVpOwogX1pON1dlYkNvcmUx
NkhUTUxJbnB1dEVsZW1lbnQxN3NldFN1Z2dlc3RlZFZhbHVlRVJLTjNXVEY2U3RyaW5nRTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109515</attachid>
            <date>2011-10-03 13:12:25 -0700</date>
            <delta_ts>2011-10-04 15:15:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69009-20111003161223.patch</filename>
            <type>text/plain</type>
            <size>46911</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY1MjIKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCAzMmMzMTZmYzI5NmIyM2RjMWRjYmJjNmZlYTAxZTczYmI5MGZhNGVhLi5jNDE3
MzY4NzQ0NmMwZjU0NDNmZGRlNTNlZTEyMzkzYTg4Mzc0NzMxIDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMTAtMDMgIEZhZHkgU2Ft
dWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDogTWFr
ZSBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVkIG1l
dGhvZHMgY29uc3QgYW5kIG1ha2UgaXRzIHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxvbmdl
ciBkZWZhdWx0IHRvIGZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02OTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMS0wOS0y
MyAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CiAKICAgICAg
ICAgW1F0XSBGaXggYnVpbGQgYWdhaW5zdCBRdDUgYWZ0ZXIgcmVmYWN0b3Igb2Ygd2lkZ2V0cyBv
dXQgb2YgUXRHVWkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZjNjYjFkNDY1MWRhYThkODBkODI5MmUyMDU4MmRm
ZWQ0ODFiOTdkLi5mZmE0MWJlMjk5ODQ2NmViMDYxNDZkNzQ5MGEyMWI3M2QwZmZjODliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODggQEAKKzIwMTEtMTAtMDMgIEZhZHkgU2FtdWVsICA8ZnNhbXVl
bEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDogTWFrZSBSZW5kZXJPYmpl
Y3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVkIG1ldGhvZHMgY29uc3Qg
YW5kIG1ha2UgaXRzIHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxvbmdlciBkZWZhdWx0IHRv
IGZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
OTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVw
Y29taW5nIHBhdGNoZXMgbWF5IG1ha2UgdXNlIG9mIGFic29sdXRlQm91bmRpbmdCb3hSZWN0IG9u
IGEgY29uc3QgUmVuZGVyT2JqZWN0LCBzbyB0aGlzIG5lZWRlZCB0byBiZSBmaXhlZC4KKyAgICAg
ICAgTWFraW5nIHVzZVRyYW5zZm9ybXMgZGVmYXVsdCB0byB0cnVlIGluc3RlYWQgb2YgZmFsc2Ug
YW5kIHJlcGxhY2luZyBpbnN0YW5jZXMgb2YgYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSB0bwor
ICAgICAgICBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpIHBhcnRp
YWxseSBhZGRyZXNlcyAvLyBGSVhNRTogdXNlVHJhbnNmb3JtcyBzaG91bGQgZ28gYXdheSBldmVu
dHVhbGx5LgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogZG9tL0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2NyZWVuUmVjdCk6CisgICAgICAg
ICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Z2V0UmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpyZW5kZXJSZWN0KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9T
bGlkZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVt
ZW50OjpzZXRQb3NpdGlvbkZyb21Qb2ludCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RmllbGRTcGVl
Y2hCdXR0b25FbGVtZW50OjpzdGFydFNwZWVjaElucHV0KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
RE9NTm9kZUhpZ2hsaWdodGVyLmNwcDoKKyAgICAgICAgKiBwbHVnaW5zL0lGcmFtZVNoaW1TdXBw
b3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFBsdWdpbk9jY2x1c2lvbnMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWJz
b2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjphYnNvbHV0ZVF1
YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlcklGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJRnJhbWU6OmZsYXR0ZW5G
cmFtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlcklubGluZTo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6OnNob3dQb3B1cCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6YWRkQWJzb2x1dGVSZWN0Rm9yTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0OjpwYWludGluZ1Jvb3RSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFic29sdXRlUmVjdHMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dElnbm9yaW5nVHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFi
c29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6c2hv
d1BvcHVwKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNo
RmllbGRSZXN1bHRzRGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNh
ZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmFic29sdXRl
UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6YWJzb2x1dGVRdWFkcyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0Jsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0Jsb2NrOjph
YnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjphYnNvbHV0ZVF1YWRz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR0lubGluZTo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR01vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2Jq
ZWN0OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2Jq
ZWN0OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01v
ZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmFic29sdXRlUXVhZHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Ym91bmRpbmdCb3gpOgor
CiAyMDExLTEwLTAzICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgQVg6IGNsaWNrIHBvaW50IGZvciBBWEhlYWRpbmdzIG9mdGVuIHJldHVybnMgcG9pbnQg
b24gZW1wdHkgc3BhY2UgKHJlc3VsdHMgaW4gd3JvbmcgY29udGV4dCBtZW51KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCAxODIxNThkOGY3MmRlYmI0MGM5NzQ4Yjc0YmZmNzFiZTMzZTcyY2FjLi4w
MmI3MjgyMTUzMTA1OGYxOGNhZmVlMGE0YjMzMzJiMmVkYzhhZTg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtMjgzLDcgKzI4Myw2IEBAIF9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0OXNwb29s
UmVjdEVSTlNfMTVHcmFwaGljc0NvbnRleHRFUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTEy
UHJpbnRDb250ZXh0QzFFUE5TXzVGcmFtZUUKIF9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0RDFF
dgogX19aTjdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNnJlcGFpbnRSZWN0YW5nbGVFUktOU183SW50
UmVjdEViCi1fX1pON1dlYkNvcmUxMlJlbmRlck9iamVjdDIzYWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3RFYgogX19aTjdXZWJDb3JlMTJSZW5kZXJXaWRnZXQyOHJlc3VtZVdpZGdldEhpZXJhcmNoeVVw
ZGF0ZXNFdgogX19aTjdXZWJDb3JlMTJSZW5kZXJXaWRnZXQyOXN1c3BlbmRXaWRnZXRIaWVyYXJj
aHlVcGRhdGVzRXYKIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyMTB3cmFwTlNEYXRhRVA2TlNE
YXRhCkBAIC0xMTE1LDYgKzExMTQsNyBAQCBfX1pOSzdXZWJDb3JlMTFTY3JpcHRWYWx1ZTlnZXRT
dHJpbmdFUE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29yZTEySWNv
bkRhdGFiYXNlMTJkYXRhYmFzZVBhdGhFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFiYXNlMjRz
aG91bGRTdG9wVGhyZWFkQWN0aXZpdHlFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFiYXNlOWlz
RW5hYmxlZEV2CitfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QyM2Fic29sdXRlQm91bmRpbmdC
b3hSZWN0RWIKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDE0ZW5jbG9zaW5nTGF5ZXJFdgog
X19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTVsb2NhbFRvQWJzb2x1dGVFUktOU18xMEZsb2F0
UG9pbnRFYmIKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDR2aWV3RXYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAppbmRleCBiMTY2MjNiYWFjOTMxMDFiMTNjMjM0ZDQzMzQ1NjdiZTJlNjdlNjBlLi5l
ODAzM2UzNTJkMzdhZjNiN2IwMGMyMjdlZTczMmNiNGQwYmRmNDJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCkBAIC01NzMsNyArNTczLDggQEAgTGF5b3V0UmVjdCBFbGVtZW50OjpzY3JlZW5SZWN0
KCkgY29uc3QKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRS
ZWN0KCk7Ci0gICAgcmV0dXJuIHJlbmRlcmVyKCktPnZpZXcoKS0+ZnJhbWVWaWV3KCktPmNvbnRl
bnRzVG9TY3JlZW4ocmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CisgICAg
Ly8gRklYTUU6IHRoaXMgc2hvdWxkIHByb2JhYmx5IHJlc3BlY3QgdHJhbnNmb3JtcworICAgIHJl
dHVybiByZW5kZXJlcigpLT52aWV3KCktPmZyYW1lVmlldygpLT5jb250ZW50c1RvU2NyZWVuKHJl
bmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkpOwog
fQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZShjb25zdCBF
bGVtZW50KiBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGE2YjllMDFlMGZhYzc0YWY1YTI4OTUzZWIw
OTliODdhNTBhZjMyZTQuLjc5Y2I5MmU0MmMxZGZlZWFmYjQwYmExOTlmZjc3ZTMzNGQyZjU3ZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKQEAgLTgyMyw3ICs4MjMsNyBAQCBSZW5kZXJCb3hNb2RlbE9iamVj
dCogTm9kZTo6cmVuZGVyQm94TW9kZWxPYmplY3QoKSBjb25zdAogTGF5b3V0UmVjdCBOb2RlOjpn
ZXRSZWN0KCkgY29uc3QKIHsKICAgICBpZiAocmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIHJl
bmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KHRydWUpOworICAgICAgICByZXR1cm4g
cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKICAgICByZXR1cm4gTGF5b3V0
UmVjdCgpOwogfQogICAgIApAQCAtODM1LDcgKzgzNSw3IEBAIExheW91dFJlY3QgTm9kZTo6cmVu
ZGVyUmVjdChib29sKiBpc1JlcGxhY2VkKQogICAgIHdoaWxlIChyZW5kZXJlciAmJiAhcmVuZGVy
ZXItPmlzQm9keSgpICYmICFyZW5kZXJlci0+aXNSb290KCkpIHsKICAgICAgICAgaWYgKHJlbmRl
cmVyLT5pc1JlbmRlckJsb2NrKCkgfHwgcmVuZGVyZXItPmlzSW5saW5lQmxvY2tPcklubGluZVRh
YmxlKCkgfHwgcmVuZGVyZXItPmlzUmVwbGFjZWQoKSkgewogICAgICAgICAgICAgKmlzUmVwbGFj
ZWQgPSByZW5kZXJlci0+aXNSZXBsYWNlZCgpOwotICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVy
LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCh0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiByZW5k
ZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKICAgICAgICAgfQogICAgICAgICByZW5k
ZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAppbmRleCA1ZDE3OGFmMDc5YWI0Y2Zi
ZDlkMGY3MjA0M2ZhZjNkODdjNDhiY2I4Li5mYzgyMzdjZTUwMzNhYTc2ODJlYzc3OGNkMjcyMzJk
MWU0OGJjMDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJU
aHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRo
dW1iRWxlbWVudC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJIVE1MUGFyc2VySWRp
b21zLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlJlbmRlckRlcHJlY2F0
ZWRGbGV4aWJsZUJveC5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJl
bmRlclNsaWRlci5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiU2hhZG93
Um9vdC5oIgpAQCAtMjE2LDcgKzIxNyw4IEBAIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpzZXRQ
b3NpdGlvbkZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiAgICAgLy8gV2UgbmVl
ZCB0byBjYWxjdWxhdGUgY3VycmVudFBvc2l0aW9uIGZyb20gYWJzb2x1dGUgcG9pbnRzIGJlY2F1
ZSB0aGUKICAgICAvLyByZW5kZXJlciBmb3IgdGhpcyBub2RlIGlzIHVzdWFsbHkgb24gYSBsYXll
ciBhbmQgcmVuZGVyQm94KCktPngoKSBhbmQKICAgICAvLyB5KCkgYXJlIHVudXNhYmxlLgotICAg
IExheW91dFBvaW50IGFic29sdXRlVGh1bWJPcmlnaW4gPSByZW5kZXJCb3goKS0+YWJzb2x1dGVC
b3VuZGluZ0JveFJlY3QoKS5sb2NhdGlvbigpOworICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBw
cm9iYWJseSByZXNwZWN0IHRyYW5zZm9ybXMgCisgICAgTGF5b3V0UG9pbnQgYWJzb2x1dGVUaHVt
Yk9yaWdpbiA9IHJlbmRlckJveCgpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJh
bnNmb3JtcygpLmxvY2F0aW9uKCk7CiAgICAgTGF5b3V0UG9pbnQgYWJzb2x1dGVTbGlkZXJDb250
ZW50T3JpZ2luID0gcm91bmRlZExheW91dFBvaW50KGlucHV0LT5yZW5kZXJlcigpLT5sb2NhbFRv
QWJzb2x1dGUoKSk7CiAgICAgaWYgKGlzVmVydGljYWwpIHsKICAgICAgICAgdHJhY2tTaXplID0g
aW5wdXQtPnJlbmRlckJveCgpLT5jb250ZW50SGVpZ2h0KCkgLSByZW5kZXJCb3goKS0+aGVpZ2h0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmNwcAppbmRleCBiZjE4NWNmN2IwZjA5NmI5M2M4ODgzMjA2YmEzMzc0ZDA0
OTM0NWQ1Li4wYmRkYzIwNDA0M2RkNTNiZWQ2YTgwNDBhY2JmY2I4YmNmYzIwNzc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisjaW5jbHVkZSAiUmVuZGVy
T2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgiCiAjaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCkBA
IC01MzUsNyArNTM2LDggQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6c3Rh
cnRTcGVlY2hJbnB1dCgpCiAgICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IGlucHV0ID0gc3Rh
dGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yTm9kZSgpKTsKICAgICBB
dG9taWNTdHJpbmcgbGFuZ3VhZ2UgPSBpbnB1dC0+Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCk7
CiAgICAgU3RyaW5nIGdyYW1tYXIgPSBpbnB1dC0+Z2V0QXR0cmlidXRlKHdlYmtpdGdyYW1tYXJB
dHRyKTsKLSAgICBJbnRSZWN0IHJlY3QgPSByZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCgpOworICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBwcm9iYWJseSByZXNwZWN0IHRyYW5z
Zm9ybXMKKyAgICBJbnRSZWN0IHJlY3QgPSByZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOwogICAgIGlmIChzcGVlY2hJbnB1dCgpLT5zdGFydFJl
Y29nbml0aW9uKG1fbGlzdGVuZXJJZCwgcmVjdCwgbGFuZ3VhZ2UsIGdyYW1tYXIsIGRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICBzZXRTdGF0ZShSZWNvcmRpbmcpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcAppbmRl
eCBlNjg5YjUyNTBiNmE4NjhlYTVhNTUwZDZkYWFiYTI5NDVhNzhmNjlkLi5mOGJmYjYwZjlhZGVk
MjBiMmUxMDY4MGEwOGM5NjQyODRkYTg0ZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgZHJh
d05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBIaWdobGlnaHREYXRhKiBo
aWdobGlnaHREYXRhKQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRTaXplIG1haW5GcmFt
ZU9mZnNldCA9IGZyYW1lVG9NYWluRnJhbWVPZmZzZXQoY29udGFpbmluZ0ZyYW1lKTsKLSAgICBM
YXlvdXRSZWN0IGJvdW5kaW5nQm94ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0
KHRydWUpOworICAgIExheW91dFJlY3QgYm91bmRpbmdCb3ggPSByZW5kZXJlci0+YWJzb2x1dGVC
b3VuZGluZ0JveFJlY3QoKTsKIAogICAgIGJvdW5kaW5nQm94Lm1vdmUobWFpbkZyYW1lT2Zmc2V0
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9JRnJhbWVTaGltU3VwcG9y
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmNwcAppbmRl
eCBjMGFhMWU0MTM2YzQ5NDJmMjlhZjg4NGYzMjE2ODg1YzdhYzU1Yjc5Li44MjY1NzY1MTEwYWU1
NDY4ZDAzMDVmM2VmYjA0NmQyNWFkZDdmZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L0lGcmFtZVNoaW1TdXBwb3J0LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgZ2V0UGx1Z2lu
T2NjbHVzaW9ucyhFbGVtZW50KiBlbGVtZW50LCBXaWRnZXQqIHBhcmVudFdpZGdldCwgY29uc3Qg
SW50UmVjdCYKICAgICAgICAgUmVuZGVyT2JqZWN0KiBpZnJhbWVSZW5kZXJlciA9IGVsZW1lbnQt
PnJlbmRlcmVyKCk7CiAKICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVz
OjppZnJhbWVUYWcpCi0gICAgICAgICAgICAmJiBpZnJhbWVSZW5kZXJlci0+YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QoKS5pbnRlcnNlY3RzKGZyYW1lUmVjdCkKKyAgICAgICAgICAgICYmIGlmcmFt
ZVJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpLmlu
dGVyc2VjdHMoZnJhbWVSZWN0KQogICAgICAgICAgICAgJiYgKCFpZnJhbWVSZW5kZXJlci0+c3R5
bGUoKSB8fCBpZnJhbWVSZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUp
KSB7CiAgICAgICAgICAgICBnZXRPYmplY3RTdGFjayhpZnJhbWVSZW5kZXJlciwgJmlmcmFtZVpz
dGFjayk7CiAgICAgICAgICAgICBpZiAoaWZyYW1lSXNBYm92ZVBsdWdpbihpZnJhbWVac3RhY2ss
IHBsdWdpblpzdGFjaykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CmluZGV4IDdmYjFiMTlmZTkwMWQzZGZmYTExNjMwMWYyMjk3YzFkYjBkMGRkNmIuLmRjMzU5M2Y1
NmNkZmJkZTk5MzZkMmEzZDNlZWI1ZGJkYTVhYTRjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcApAQCAtNTg2NCw3ICs1ODY0LDcgQEAgdm9pZCBSZW5kZXJCbG9j
azo6c2V0UGFnZUxvZ2ljYWxPZmZzZXQoaW50IGxvZ2ljYWxPZmZzZXQpCiAgICAgbV9yYXJlRGF0
YS0+bV9wYWdlTG9naWNhbE9mZnNldCA9IGxvZ2ljYWxPZmZzZXQ7CiB9CiAKLXZvaWQgUmVuZGVy
QmxvY2s6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KQordm9pZCBSZW5kZXJCbG9jazo6YWJzb2x1dGVS
ZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11
bGF0ZWRPZmZzZXQpIGNvbnN0CiB7CiAgICAgLy8gRm9yIGJsb2NrcyBpbnNpZGUgaW5saW5lcywg
d2UgZ28gYWhlYWQgYW5kIGluY2x1ZGUgbWFyZ2lucyBzbyB0aGF0IHdlIHJ1biByaWdodCB1cCB0
byB0aGUKICAgICAvLyBpbmxpbmUgYm94ZXMgYWJvdmUgYW5kIGJlbG93IHVzICh0aHVzIGdldHRp
bmcgbWVyZ2VkIHdpdGggdGhlbSB0byBmb3JtIGEgc2luZ2xlIGlycmVndWxhcgpAQCAtNTg4MCw3
ICs1ODgwLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0
UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWMKICAgICAgICAgcmVjdHMuYXBwZW5k
KExheW91dFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIHNpemUoKSkpOwogfQogCi12b2lkIFJlbmRl
ckJsb2NrOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2Fz
Rml4ZWQpCit2b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgLy8gRm9yIGJsb2NrcyBpbnNp
ZGUgaW5saW5lcywgd2UgZ28gYWhlYWQgYW5kIGluY2x1ZGUgbWFyZ2lucyBzbyB0aGF0IHdlIHJ1
biByaWdodCB1cCB0byB0aGUKICAgICAvLyBpbmxpbmUgYm94ZXMgYWJvdmUgYW5kIGJlbG93IHVz
ICh0aHVzIGdldHRpbmcgbWVyZ2VkIHdpdGggdGhlbSB0byBmb3JtIGEgc2luZ2xlIGlycmVndWxh
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBmMzhiNzkyMjEwMDI4
MGYxNmJkNDgzNTFhMjY0ZWE4YjBmOTFhMGNiLi4xZWQ5NWI5YzY0ODMzMmUwMDBjOTVhOTE4MWQ2
ZjQyNWU0N2JkNWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAt
Njg0LDggKzY4NCw4IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdFNlbGVj
dGlvbk9mZnNldChSZW5kZXJCbG9jayogcm9vdEJsb2NrLCBMYXlvdXRVbml0IHBvc2l0aW9uKTsK
ICAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodFNlbGVjdGlvbk9mZnNldChSZW5kZXJCbG9jayog
cm9vdEJsb2NrLCBMYXlvdXRVbml0IHBvc2l0aW9uKTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQg
YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNj
dW11bGF0ZWRPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxG
bG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJl
Y3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9m
ZnNldCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0
UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICAgICBMYXlvdXRVbml0IGRlc2lyZWRD
b2x1bW5XaWR0aCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGRlc2lyZWRDb2x1bW5Db3VudCgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA1NzYxYzY5ZjVi
NzMwYjNhNDYxMzBjMDAxYzAxYzU2ZWJhNWUxMTRjLi5jMzRkZjkxNGU4MGIxOGQ0ZjNlMGEwZDdj
MjcxYjFiNTYzOGM4MWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApA
QCAtNDk4LDEyICs0OTgsMTIgQEAgdm9pZCBSZW5kZXJCb3g6OnNldFNjcm9sbFRvcChMYXlvdXRV
bml0IG5ld1RvcCkKICAgICAgICAgbGF5ZXIoKS0+c2Nyb2xsVG9ZT2Zmc2V0KG5ld1RvcCwgUmVu
ZGVyTGF5ZXI6OlNjcm9sbE9mZnNldENsYW1wZWQpOwogfQogCi12b2lkIFJlbmRlckJveDo6YWJz
b2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNj
dW11bGF0ZWRPZmZzZXQpCit2b2lkIFJlbmRlckJveDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50
UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0
CiB7CiAgICAgcmVjdHMuYXBwZW5kKExheW91dFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIHNpemUo
KSkpOwogfQogCi12b2lkIFJlbmRlckJveDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFk
PiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJCb3g6OmFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBx
dWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QoMCwgMCwgd2lkdGgoKSwg
aGVpZ2h0KCkpLCBmYWxzZSwgd2FzRml4ZWQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaAppbmRleCA0NTgwOTNiOTRmNDg3NDBjMjJiMTY1YWMwMzQ1MjYyYTNhZjlmYzc3Li5k
MGY0ZjM3NjkwNTcyYzIyNDE2MWUzZmY5MjcxZTM4ZTdjNjUwNmZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCkBAIC0yMzQsOCArMjM0LDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgTGF5b3V0VW5pdCBjb2xsYXBzZWRNYXJnaW5CZWZvcmUoKSBjb25zdCB7IHJldHVybiBtYXJn
aW5CZWZvcmUoKTsgfQogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb2xsYXBzZWRNYXJnaW5BZnRl
cigpIGNvbnN0IHsgcmV0dXJuIG1hcmdpbkFmdGVyKCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBh
YnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVs
YXRlZE9mZnNldCk7Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0
UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMo
VmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYs
IGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKICAgICAKICAgICBJbnRSZWN0IHJlZmxlY3Rpb25Cb3go
KSBjb25zdDsKICAgICBpbnQgcmVmbGVjdGlvbk9mZnNldCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKaW5kZXgg
Zjk0NDkxZjMxYzVhOGU1ZmQyMDIyNDUwMTk1NGU0YjQ2ZWYwODQ2Ni4uMDFjZWVhZmZjYjBmZTU5
YmU1NDFmZjRmMmFlMzgwOGIxZTgzYTU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC0xMzIsNyArMTMyLDggQEAg
dm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW4KICAgICAgICAgICAgIHRleHRYID0gY29udGVudExlZnQg
KyBjb250ZW50V2lkdGgoKSAtIGJ1dHRvbkFuZEljb25XaWR0aCAtIGZvbnQud2lkdGgodGV4dFJ1
bik7CiAgICAgICAgIC8vIFdlIHdhbnQgdG8gbWF0Y2ggdGhlIGJ1dHRvbidzIGJhc2VsaW5lCiAg
ICAgICAgIFJlbmRlckJ1dHRvbiogYnV0dG9uUmVuZGVyZXIgPSB0b1JlbmRlckJ1dHRvbihidXR0
b24tPnJlbmRlcmVyKCkpOwotICAgICAgICBMYXlvdXRVbml0IHRleHRZID0gYnV0dG9uUmVuZGVy
ZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkueSgpCisgICAgICAgIC8vIEZJWE1FOiBtYWtl
IHRoaXMgd29yayB3aXRoIHRyYW5zZm9ybXMuCisgICAgICAgIExheW91dFVuaXQgdGV4dFkgPSBi
dXR0b25SZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMo
KS55KCkKICAgICAgICAgICAgICsgYnV0dG9uUmVuZGVyZXItPmJhc2VsaW5lUG9zaXRpb24oQWxw
aGFiZXRpY0Jhc2VsaW5lLCB0cnVlLCBIb3Jpem9udGFsTGluZSwgUG9zaXRpb25PbkNvbnRhaW5p
bmdMaW5lKTsKIAogICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0RmlsbENvbG9yKHN0eWxl
KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUoKS0+Y29s
b3JTcGFjZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
RnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAKaW5k
ZXggMTEyOTdiNWRiN2E5ZjdhMmQwOWU0NjU5NDNjNDg3ZTE4NmYxNWFkMC4uY2UwZjQzYmQwMzA0
MTUxYTQwODNiMGEwMjBhOWUyZWQ5NjFiMTNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklGcmFtZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBib29sIFJlbmRlcklGcmFtZTo6
ZmxhdHRlbkZyYW1lKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRG8gbm90IGZs
YXR0ZW4gb2Zmc2NyZWVuIGlubmVyIGZyYW1lcyBkdXJpbmcgZnJhbWUgZmxhdHRlbmluZywgYXMg
ZmxhdHRlbmluZyBtaWdodCBtYWtlIHRoZW0gdmlzaWJsZS4KLSAgICBJbnRSZWN0IGJvdW5kaW5n
UmVjdCA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgSW50UmVjdCBib3VuZGluZ1Jl
Y3QgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOwogICAgIHJl
dHVybiBib3VuZGluZ1JlY3QubWF4WCgpID4gMCAmJiBib3VuZGluZ1JlY3QubWF4WSgpID4gMDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCA2Y2E5
ZDNmYjFlOTJkMDJjYmM5MGJhNGRjMzNiYTE5YmQ4NGIyODA0Li4zZjA5NjMzYjAwOGQ5NTZmYTFm
N2UyMTgyZTMwYzRkZDIwNWFjM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcApAQCAtNDY2LDcgKzQ2Niw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAg
IG1fbGluZUJveGVzLnBhaW50KHRoaXMsIHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogfQogCi12
b2lkIFJlbmRlcklubGluZTo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3Rz
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCit2b2lkIFJlbmRlcklubGlu
ZTo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7CiAgICAgaWYgKCFhbHdheXNDcmVhdGVM
aW5lQm94ZXMoKSkKICAgICAgICAgY3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyh0aGlzLCByZWN0
cywgdG9MYXlvdXRTaXplKGFjY3VtdWxhdGVkT2Zmc2V0KSk7CkBAIC00ODUsNyArNDg1LDcgQEAg
dm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0
cywgY29uc3QgTGF5b3V0UG9pbnQmIGEKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVySW5saW5lOjpj
dWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBW
ZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXQpCit2b2lk
IFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25zdCBSZW5kZXJJbmxp
bmUqIGNvbnRhaW5lciwgVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0U2l6
ZSYgb2Zmc2V0KSBjb25zdAogewogICAgIGlmICghY3VsbGVkSW5saW5lRmlyc3RMaW5lQm94KCkp
IHsKICAgICAgICAgcmVjdHMuYXBwZW5kKEludFJlY3Qob2Zmc2V0LndpZHRoKCksIG9mZnNldC5o
ZWlnaHQoKSwgMCwgMCkpOwpAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpj
dWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBW
ZWN0CiAgICAgfQogfQogCi12b2lkIFJlbmRlcklubGluZTo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJJbmxpbmU6OmFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29u
c3QKIHsKICAgICBpZiAoIWFsd2F5c0NyZWF0ZUxpbmVCb3hlcygpKQogICAgICAgICBjdWxsZWRJ
bmxpbmVBYnNvbHV0ZVF1YWRzKHRoaXMsIHF1YWRzKTsKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lk
IFJlbmRlcklubGluZTo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJv
b2wqIHdhc0ZpeGVkKQogICAgICAgICBjb250aW51YXRpb24oKS0+YWJzb2x1dGVRdWFkcyhxdWFk
cywgd2FzRml4ZWQpOwogfQogCi12b2lkIFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1
dGVRdWFkcyhjb25zdCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdG9yPEZsb2F0UXVhZD4m
IHF1YWRzKQordm9pZCBSZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRlUXVhZHMoY29u
c3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykgY29u
c3QKIHsKICAgICBpZiAoIWN1bGxlZElubGluZUZpcnN0TGluZUJveCgpKSB7CiAgICAgICAgIHF1
YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdCgpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKaW5kZXggYWZkNGFhZDQ0OGIwZTgxODE5MzI5ZWEw
YWE2ODZlNWIwOWNlYjY2Ny4uZmU5NWFmMWZlMTg3NTQyNjViYTk3OTA5ZjdlZGI2ZWIzZTczYWU2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaApAQCAtNDYsOCArNDYs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpblN0YXJ0KCkgY29uc3Q7
CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkVuZCgpIGNvbnN0OwogCi0gICAgdmlydHVh
bCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJz
b2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11
bGF0ZWRPZmZzZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBMYXlv
dXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UG9p
bnQmKSBjb25zdDsKIApAQCAtMTAyLDggKzEwMiw4IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0UmVj
dCBjdWxsZWRJbmxpbmVWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkgY29uc3Q7CiAgICAgSW5s
aW5lQm94KiBjdWxsZWRJbmxpbmVGaXJzdExpbmVCb3goKSBjb25zdDsKICAgICBJbmxpbmVCb3gq
IGN1bGxlZElubGluZUxhc3RMaW5lQm94KCkgY29uc3Q7Ci0gICAgdm9pZCBjdWxsZWRJbmxpbmVB
YnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8TGF5b3V0
UmVjdD4mLCBjb25zdCBMYXlvdXRTaXplJik7Ci0gICAgdm9pZCBjdWxsZWRJbmxpbmVBYnNvbHV0
ZVF1YWRzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8RmxvYXRRdWFkPiYp
OworICAgIHZvaWQgY3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25zdCBSZW5kZXJJbmxpbmUq
IGNvbnRhaW5lciwgVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0U2l6ZSYpIGNvbnN0
OworICAgIHZvaWQgY3VsbGVkSW5saW5lQWJzb2x1dGVRdWFkcyhjb25zdCBSZW5kZXJJbmxpbmUq
IGNvbnRhaW5lciwgVmVjdG9yPEZsb2F0UXVhZD4mKSBjb25zdDsKIAogICAgIHZvaWQgYWRkQ2hp
bGRUb0NvbnRpbnVhdGlvbihSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJl
Zm9yZUNoaWxkKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRJZ25vcmluZ0NvbnRpbnVhdGlv
bihSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAppbmRleCA4OTdh
YTg4ZWFmMWVhMmE0NmVkMTM2ZjUwZjdjNjI2MjM5MTM5ZTAxLi45YmEzYjVlN2ExOTcyY2M4NGZj
MzU0NjRkYzNmNWRjMjFkYTc1NGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZW51TGlzdC5jcHAKQEAgLTMwMiw3ICszMDIsNyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0Ojpz
aG93UG9wdXAoKQogICAgIC8vIENvbXB1dGUgdGhlIHRvcCBsZWZ0IHRha2luZyB0cmFuc2Zvcm1z
IGludG8gYWNjb3VudCwgYnV0IHVzZQogICAgIC8vIHRoZSBhY3R1YWwgd2lkdGggb2YgdGhlIGVs
ZW1lbnQgdG8gc2l6ZSB0aGUgcG9wdXAuCiAgICAgRmxvYXRQb2ludCBhYnNUb3BMZWZ0ID0gbG9j
YWxUb0Fic29sdXRlKEZsb2F0UG9pbnQoKSwgZmFsc2UsIHRydWUpOwotICAgIExheW91dFJlY3Qg
YWJzQm91bmRzID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBMYXlvdXRSZWN0IGFi
c0JvdW5kcyA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAg
ICAgYWJzQm91bmRzLnNldExvY2F0aW9uKHJvdW5kZWRJbnRQb2ludChhYnNUb3BMZWZ0KSk7CiAg
ICAgbV9wb3B1cC0+c2hvdyhhYnNCb3VuZHMsIGRvY3VtZW50KCktPnZpZXcoKSwKICAgICAgICAg
c2VsZWN0LT5vcHRpb25Ub0xpc3RJbmRleChzZWxlY3QtPnNlbGVjdGVkSW5kZXgoKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAwYzY3NmQ0M2UyNzVk
MmI0YmEyYWNjYjkxNGJmMjgxMzA2OWE3MzMyLi4zYWNlODQ2Njc3ZWNlNTI3NWJmYzJkMTZjZTQ4
YmQ1ZDY2MjEwMjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cApAQCAtMTE1OCw3ICsxMTU4LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50T3V0bGluZShH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UmUKICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogfQogCi1JbnRSZWN0IFJl
bmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm1zKQor
SW50UmVjdCBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0KGJvb2wgdXNlVHJh
bnNmb3JtcykgY29uc3QKIHsKICAgICBpZiAodXNlVHJhbnNmb3JtcykgewogICAgICAgICBWZWN0
b3I8RmxvYXRRdWFkPiBxdWFkczsKQEAgLTEyMDgsMTQgKzEyMDgsMTQgQEAgdm9pZCBSZW5kZXJP
YmplY3Q6OmFic29sdXRlRm9jdXNSaW5nUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKQog
dm9pZCBSZW5kZXJPYmplY3Q6OmFkZEFic29sdXRlUmVjdEZvckxheWVyKEludFJlY3QmIHJlc3Vs
dCkKIHsKICAgICBpZiAoaGFzTGF5ZXIoKSkKLSAgICAgICAgcmVzdWx0LnVuaXRlKGFic29sdXRl
Qm91bmRpbmdCb3hSZWN0KCkpOworICAgICAgICByZXN1bHQudW5pdGUoYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKSk7CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGN1
cnJlbnQgPSBmaXJzdENoaWxkKCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0U2li
bGluZygpKQogICAgICAgICBjdXJyZW50LT5hZGRBYnNvbHV0ZVJlY3RGb3JMYXllcihyZXN1bHQp
OwogfQogCiBMYXlvdXRSZWN0IFJlbmRlck9iamVjdDo6cGFpbnRpbmdSb290UmVjdChMYXlvdXRS
ZWN0JiB0b3BMZXZlbFJlY3QpCiB7Ci0gICAgTGF5b3V0UmVjdCByZXN1bHQgPSBhYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdCgpOworICAgIExheW91dFJlY3QgcmVzdWx0ID0gYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKICAgICB0b3BMZXZlbFJlY3QgPSByZXN1bHQ7
CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGN1cnJlbnQgPSBmaXJzdENoaWxkKCk7IGN1cnJlbnQ7
IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0U2libGluZygpKQogICAgICAgICBjdXJyZW50LT5hZGRB
YnNvbHV0ZVJlY3RGb3JMYXllcihyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oCmluZGV4IDM3N2VhNGM1YWEzYzhiMmY4ODAwYmRkNDhiZTc1OWVmNmRhMGM4ODYu
LmY4YWZlYWZlMDU3NDE1MGQxNGJiZGJlZWE0OTc3NmZmNDRhNTc4MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTYzMSwxMiArNjMxLDE0IEBAIHB1YmxpYzoK
ICAgICAvLyBSZXR1cm4gdGhlIG9mZnNldCBmcm9tIGFuIG9iamVjdCB1cCB0aGUgY29udGFpbmVy
KCkgY2hhaW4uIEFzc2VydHMgdGhhdCBub25lIG9mIHRoZSBpbnRlcm1lZGlhdGUgb2JqZWN0cyBo
YXZlIHRyYW5zZm9ybXMuCiAgICAgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQW5jZXN0b3JDb250YWlu
ZXIoUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRl
UmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlv
dXRQb2ludCYpIGNvbnN0IHsgfQorCiAgICAgLy8gRklYTUU6IHVzZVRyYW5zZm9ybXMgc2hvdWxk
IGdvIGF3YXkgZXZlbnR1YWxseQotICAgIEludFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveFJlY3Qo
Ym9vbCB1c2VUcmFuc2Zvcm1zID0gZmFsc2UpOworICAgIEludFJlY3QgYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm0gPSB0cnVlKSBjb25zdDsKKyAgICBJbnRSZWN0IGFi
c29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkgY29uc3QgeyByZXR1cm4g
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpOyB9CiAKICAgICAvLyBCdWlsZCBhbiBhcnJh
eSBvZiBxdWFkcyBpbiBhYnNvbHV0ZSBjb29yZHMgZm9yIGxpbmUgYm94ZXMKLSAgICB2aXJ0dWFs
IHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIC8qd2FzRml4ZWQq
LyA9IDApIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiwgYm9vbCogLyp3YXNGaXhlZCovID0gMCkgY29uc3QgeyB9CiAKICAgICB2b2lkIGFic29s
dXRlRm9jdXNSaW5nUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGU4ODg2MWYzZDA0YTA4Njg0NGQzYTcwZDIxNWE0
NzRkZTY4OTI0YzkuLjZiNmRhMjQ0NGUxMmM3MzI2ZjE5NmQ2NGI4ODEyNTg4Mjc0Zjk4YzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTMwMSw3ICszMDEsNyBA
QCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFJlbmRlclRleHQ6Om9yaWdpbmFsVGV4dCgpIGNvbnN0
CiAgICAgcmV0dXJuIChlICYmIGUtPmlzVGV4dE5vZGUoKSkgPyBzdGF0aWNfY2FzdDxUZXh0Kj4o
ZSktPmRhdGFJbXBsKCkgOiAwOwogfQogCi12b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUmVjdHMo
VmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0KQordm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0
PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QKIHsK
ICAgICBmb3IgKElubGluZVRleHRCb3gqIGJveCA9IGZpcnN0VGV4dEJveCgpOyBib3g7IGJveCA9
IGJveC0+bmV4dFRleHRCb3goKSkKICAgICAgICAgcmVjdHMuYXBwZW5kKGVuY2xvc2luZ0xheW91
dFJlY3QoRmxvYXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0ICsgYm94LT50b3BMZWZ0KCksIGJveC0+
c2l6ZSgpKSkpOwpAQCAtMzg4LDcgKzM4OCw3IEBAIHN0YXRpYyBJbnRSZWN0IGVsbGlwc2lzUmVj
dEZvckJveChJbmxpbmVUZXh0Qm94KiBib3gsIHVuc2lnbmVkIHN0YXJ0UG9zLCB1bnNpZ25lCiAg
ICAgcmV0dXJuIEludFJlY3QoKTsKIH0KICAgICAKLXZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkLCBDbGlwcGluZ09w
dGlvbiBvcHRpb24pCit2b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0
UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCwgQ2xpcHBpbmdPcHRpb24gb3B0aW9uKSBjb25z
dAogewogICAgIGZvciAoSW5saW5lVGV4dEJveCogYm94ID0gZmlyc3RUZXh0Qm94KCk7IGJveDsg
Ym94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7CiAgICAgICAgIEludFJlY3QgYm91bmRhcmllcyA9
IGJveC0+Y2FsY3VsYXRlQm91bmRhcmllcygpOwpAQCAtNDA1LDcgKzQwNSw3IEBAIHZvaWQgUmVu
ZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdh
c0ZpeGVkLCBDbGlwcGluCiAgICAgfQogfQogICAgIAotdm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0
ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFJl
bmRlclRleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3
YXNGaXhlZCkgY29uc3QKIHsKICAgICBhYnNvbHV0ZVF1YWRzKHF1YWRzLCB3YXNGaXhlZCwgTm9D
bGlwcGluZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAppbmRleCA0MDIw
ZDhhYTM3MTIyZDEyNWQxZGM0ZWYxMTA3MDlkMThmOTUxMzk4Li40MmU5YWVjOTZiM2IzMmIyZDE5
ZTNiYzUxOTVjMTNkNDcxY2EwOTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmgKQEAgLTU0LDE0ICs1NCwxNCBAQCBwdWJsaWM6CiAgICAgSW5saW5lVGV4dEJveCogY3JlYXRl
SW5saW5lVGV4dEJveCgpOwogICAgIHZvaWQgZGlydHlMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYs
IGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7CisgICAgdmlydHVhbCB2b2lk
IGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKICAgICB2b2lkIGFic29sdXRlUmVjdHNGb3JSYW5nZShW
ZWN0b3I8SW50UmVjdD4mLCB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAsIHVuc2lnbmVkIGVuZE9m
ZnNldCA9IFVJTlRfTUFYLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCA9IGZhbHNlLCBib29sKiB3
YXNGaXhlZCA9IDApOwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZs
b2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVh
ZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAgICAgdm9pZCBh
YnNvbHV0ZVF1YWRzRm9yUmFuZ2UoVmVjdG9yPEZsb2F0UXVhZD4mLCB1bnNpZ25lZCBzdGFydE9m
ZnNldCA9IDAsIHVuc2lnbmVkIGVuZE9mZnNldCA9IFVJTlRfTUFYLCBib29sIHVzZVNlbGVjdGlv
bkhlaWdodCA9IGZhbHNlLCBib29sKiB3YXNGaXhlZCA9IDApOwogCiAgICAgZW51bSBDbGlwcGlu
Z09wdGlvbiB7IE5vQ2xpcHBpbmcsIENsaXBUb0VsbGlwc2lzIH07Ci0gICAgdm9pZCBhYnNvbHV0
ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQgPSAwLCBDbGlwcGluZ09w
dGlvbiA9IE5vQ2xpcHBpbmcpOworICAgIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRR
dWFkPiYsIGJvb2wqIHdhc0ZpeGVkID0gMCwgQ2xpcHBpbmdPcHRpb24gPSBOb0NsaXBwaW5nKSBj
b25zdDsKIAogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29u
c3QgTGF5b3V0UG9pbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAppbmRleCAxNzA5N2IxZmJhYjM2MTgw
ODhlMGI0ODkzN2M2MDhlNWMyZDg0Y2ZhLi5mZjkwNzcwZjA5NTU3ODkxMDc1ZGI5MWUyOWUxZGZl
Nzg3MDRhZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpzaG93UG9wdXAoKQogICAgICAgICBtX3NlYXJjaFBv
cHVwLT5zYXZlUmVjZW50U2VhcmNoZXMobmFtZSwgbV9yZWNlbnRTZWFyY2hlcyk7CiAgICAgfQog
Ci0gICAgbV9zZWFyY2hQb3B1cC0+cG9wdXBNZW51KCktPnNob3coYWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QodHJ1ZSksIGRvY3VtZW50KCktPnZpZXcoKSwgLTEpOworICAgIG1fc2VhcmNoUG9wdXAt
PnBvcHVwTWVudSgpLT5zaG93KGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCksIGRvY3VtZW50KCkt
PnZpZXcoKSwgLTEpOwogfQogCiB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6aGlk
ZVBvcHVwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZVNhZmFyaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmku
Y3BwCmluZGV4IGRiYTg3NGQ0YWFjZWRhMTUxM2U2OWU2YWUwZDY1MDZlYjQzMDg5OTUuLmQzNGQw
NzQ4NDQ2M2E5ZjY1MjI2ZjVkMTJmYzE3MDg3NTc4MzMwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcApAQCAtMTA4MCw3ICsxMDgwLDcgQEAg
Ym9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihSZW5k
ZXJPYmplY3QqIG8sIGNvbnN0IFBhaW4KICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaW5w
dXQtPnJlbmRlcmVyKCk7CiAgICAgQVNTRVJUKHJlbmRlcmVyKTsKIAotICAgIEludFJlY3Qgc2Vh
cmNoUmVjdCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIEludFJl
Y3Qgc2VhcmNoUmVjdCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5n
VHJhbnNmb3JtcygpOwogCiAgICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uUGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LCBzZWFyY2hSZWN0LCBjb250cm9sU2l6ZUZyb21SZWN0KHNlYXJjaFJlY3QsIHNlYXJjaEZpZWxk
U2l6ZXMoKSksIGRldGVybWluZVN0YXRlKG8pKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTM0
LDcgKzExMzQsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNlYXJjaEZpZWxkUmVz
dWx0c0RlY29yYXRpb24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdAogICAgIFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBpbnB1dC0+cmVuZGVyZXIoKTsKICAgICBBU1NFUlQocmVuZGVyZXIpOwogCi0g
ICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0
KCk7CisgICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdC
b3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAKICAgICBwYWludFRoZW1lUGFydChTYWZhcmlU
aGVtZTo6U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQsIHBhaW50SW5mby5jb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNpemVGcm9tUmVjdChzZWFy
Y2hSZWN0LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWkK
ICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaW5wdXQtPnJlbmRlcmVyKCk7CiAgICAgQVNT
RVJUKHJlbmRlcmVyKTsKIAotICAgIEludFJlY3Qgc2VhcmNoUmVjdCA9IHJlbmRlcmVyLT5hYnNv
bHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIEludFJlY3Qgc2VhcmNoUmVjdCA9IHJlbmRlcmVy
LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOwogCiAgICAgcGFp
bnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblBhcnQsIHBh
aW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNp
emVGcm9tUmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0
ZShvKSk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwCmluZGV4IDFmZWZhYzRmMDE5MmVhM2ViMDU0MTVjYjM0MzRhZjViMDlmNmE3NDEuLmY0
MjFmOTgxZGEyNjdkZDU3ZDU5OTRhYmMzZWMxYTc1NjVkMTgwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTMyOSwxMiArMzI5LDEyIEBAIHZvaWQgUmVuZGVy
Vmlldzo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBJCiAgICAgICAgIHJlY3QgPSBtX2xheWVyLT50cmFuc2Zvcm0oKS0+bWFwUmVj
dChyZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlv
dXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkKK3Zv
aWQgUmVuZGVyVmlldzo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBj
b25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7CiAgICAgcmVjdHMu
YXBwZW5kKExheW91dFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIG1fbGF5ZXItPnNpemUoKSkpOwog
fQogCi12b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1
YWRzLCBib29sKiB3YXNGaXhlZCkKK3ZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVRdWFkcyhWZWN0
b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGlmICh3
YXNGaXhlZCkKICAgICAgICAgKndhc0ZpeGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuaAppbmRleCBlNmQ3ZDhmNzU1ZjViNzdiYjdkOTkwODcwZTVhNmFkYWFhNDlm
ZTY3Li45YTZmNjNkOTBmYmYyMWE2MDdhNWRkNTNkNjIyMGM4YWY0MWFkZjdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTg2LDggKzg2LDggQEAgcHVibGljOgogCiAg
ICAgYm9vbCBwcmludGluZygpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVj
dHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zm
c2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYs
IGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8
TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9v
bCogd2FzRml4ZWQpIGNvbnN0OwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQog
ICAgIHZvaWQgc2V0TWF4aW1hbE91dGxpbmVTaXplKGludCBvKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAKaW5kZXggMmM4MTU5MDhlYmY2Yjk4
OTA2NzU3ZDhiYzU0YmU2OTQ3YTcxNzllMy4uN2IxNmE0ZDViZmM5Y2I3YmI2NWU2NWJiMTVhYmM4
ZTJmNmViYWVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdCbG9jay5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBSZW5kZXJTVkdCbG9jazo6dXBkYXRl
Qm94TW9kZWxJbmZvRnJvbVN0eWxlKCkKICAgICBzZXRIYXNPdmVyZmxvd0NsaXAoZmFsc2UpOwog
fQogCi12b2lkIFJlbmRlclNWR0Jsb2NrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0
PiYsIGNvbnN0IExheW91dFBvaW50JikKK3ZvaWQgUmVuZGVyU1ZHQmxvY2s6OmFic29sdXRlUmVj
dHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdAogewogICAg
IC8vIFRoaXMgY29kZSBwYXRoIHNob3VsZCBuZXZlciBiZSB0YWtlbiBmb3IgU1ZHLCBhcyB3ZSdy
ZSBhc3N1bWluZyB1c2VUcmFuc2Zvcm1zPXRydWUgZXZlcnl3aGVyZSwgYWJzb2x1dGVRdWFkcyBz
aG91bGQgYmUgdXNlZC4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaAppbmRleCAyMmMxZjE4ZTM2ZTAyMzEw
YmU3ZTdkM2U0ZWM4MTIzYTI5YjVhNzE0Li41OGNmMjYyMGE5ODE4ZDY0YWUyNzgzNGZlZDhkNDFi
NzE2OTIwNDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0Jsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdC
bG9jay5oCkBAIC0zOCw3ICszOCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldFN0
eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQm94
TW9kZWxJbmZvRnJvbVN0eWxlKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhW
ZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQp
OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNv
bnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CiAKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlV2lsbENoYW5n
ZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRh
aW5lci5jcHAKaW5kZXggZDI5ZDg1ZWM5Mzk3MWRlZTE4ZGIxMmJkOGU3ODA1ZjU4MTc3MmYxZS4u
ODk1YjI1NDQ5MDAxMjNmZGJmM2VhMDI1ODU0Y2I5Y2VkYmUwNGZkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVy
LmNwcApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcjo6cGFp
bnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKQogICAgIC8vIFRoaXMgc3VidHJlZSBk
b2VzIG5vdCBwYWludC4KIH0KIAotdm9pZCBSZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OmFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKikKK3ZvaWQgUmVuZGVyU1ZHSGlkZGVu
Q29udGFpbmVyOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCopIGNvbnN0
CiB7CiAgICAgLy8gVGhpcyBzdWJ0cmVlIGRvZXMgbm90IHRha2UgdXAgc3BhY2Ugb3IgcGFpbnQK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlk
ZGVuQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hp
ZGRlbkNvbnRhaW5lci5oCmluZGV4IGVmZmY5MjE1MWQyYzM2MWE2ZDBjOGQ5Nzc3YjMxZjYzNDQ2
NGQxMGMuLmYyNmM1ZmM2MWEzN2Y4MjA3ZDRkNjQ5YmU2ODA5ZDUyYTJmODgyNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250
YWluZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIAogICAgIHZpcnR1YWwgTGF5
b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCopIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBhYnNv
bHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1
YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQp
IGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVu
dCwgSGl0VGVzdEFjdGlvbik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCmluZGV4IDA5NzcwZWZiZjAyN2ZhYzllYmE3ZGJjN2M0ZWE0
MzdmNmFhMDEwYjkuLjRjOTA1ODBmMTM1OWJmNjgxYzc3M2FkNWQ4YmI4MTZjZWQ0MmE2MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAK
QEAgLTgyLDkgKzgyLDkgQEAgdm9pZCBSZW5kZXJTVkdJbmxpbmU6Om1hcExvY2FsVG9Db250YWlu
ZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIKICAgICBTVkdSZW5kZXJT
dXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHVzZVRy
YW5zZm9ybXMsIGZpeGVkLCB0cmFuc2Zvcm1TdGF0ZSwgd2FzRml4ZWQpOwogfQogCi12b2lkIFJl
bmRlclNWR0lubGluZTo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJv
b2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJTVkdJbmxpbmU6OmFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKLSAgICBSZW5kZXJP
YmplY3QqIG9iamVjdCA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3Rv
cih0aGlzKTsKKyAgICBjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCA9IFJlbmRlclNWR1RleHQ6
OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3Rvcih0aGlzKTsKICAgICBpZiAoIW9iamVjdCkKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmUuaAppbmRleCAwYTYwODM3ZjQ3NzU5NjkwMzdlODQ5NzViY2YyMDA4MDY2YmI4MmY3
Li5kMmZhMWNjNTI0MDI0YjYxYWE3ZDRhYTc3YTRlOGRkOGU1NjA4NDQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3JtcywgYm9vbCBmaXhlZCwg
VHJhbnNmb3JtU3RhdGUmLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOwor
ICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCog
d2FzRml4ZWQpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgSW5saW5lRmxvd0JveCog
Y3JlYXRlSW5saW5lRmxvd0JveCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAppbmRleCAxNGMxZGI4ZTBmOTNlYWY1NThh
ZWVjODkyYTg3MjMyM2NkMTBkNzIzLi5mYmU0OTNiNTRkY2RlYzFjNTc2N2E0NzhhYTY2Mzg2YTU0
MDM0YmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R01vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR01vZGVsT2JqZWN0LmNwcApAQCAtNzAsMTMgKzcwLDEzIEBAIExheW91dFJlY3QgUmVuZGVy
U1ZHTW9kZWxPYmplY3Q6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByCiAgICAgcmV0dXJuIGNvbnRhaW5lclJlbGF0aXZlUXVhZC5lbmNsb3NpbmdCb3VuZGlu
Z0JveCgpOwogfQogCi12b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVJlY3RzKFZl
Y3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JikKK3ZvaWQgUmVuZGVyU1ZHTW9k
ZWxPYmplY3Q6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0
UG9pbnQmKSBjb25zdAogewogICAgIC8vIFRoaXMgY29kZSBwYXRoIHNob3VsZCBuZXZlciBiZSB0
YWtlbiBmb3IgU1ZHLCBhcyB3ZSdyZSBhc3N1bWluZyB1c2VUcmFuc2Zvcm1zPXRydWUgZXZlcnl3
aGVyZSwgYWJzb2x1dGVRdWFkcyBzaG91bGQgYmUgdXNlZC4KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVRdWFkcyhWZWN0
b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJTVkdNb2Rl
bE9iamVjdDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdh
c0ZpeGVkKSBjb25zdAogewogICAgIHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKHN0
cm9rZUJvdW5kaW5nQm94KCksIGZhbHNlLCB3YXNGaXhlZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCmluZGV4IGMyOGQz
YzY2MDdkNTU0ZWEyMGMyYmE1YzVhZWVlZGNjMmRlNzNiNzkuLjcwNDFkNDQ5ZWY2MzJjNGZjMzAw
OTI2MGY5MmMwMDAzYjAxMGQ3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKQEAgLTU1LDggKzU1LDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNv
bnN0OwogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UG9pbnQqKSBjb25zdDsK
IAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNv
bnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7Ci0gICAgdmlydHVhbCB2b2lkIGFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmly
dHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0
UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1
dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIFRyYW5zZm9y
bVN0YXRlJiwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc3R5
bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCmlu
ZGV4IGFmNDM5YjVkMzhmMDg0ZjAyYTkyMWIyYmFmYTBkOWIxYWJkNDcwODEuLjJhN2Q4MGNmMmVm
NTIxYTk0ZmJkOTc3MjIwYjFlNGVlMTI1ZDYwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAtMjI1LDcgKzIyNSw3IEBAIFZpc2libGVQ
b3NpdGlvbiBSZW5kZXJTVkdUZXh0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50
JiBwb2ludEluQ29udGVuCiAgICAgcmV0dXJuIGNsb3Nlc3RCb3gtPnJlbmRlcmVyKCktPnBvc2l0
aW9uRm9yUG9pbnQoTGF5b3V0UG9pbnQocG9pbnRJbkNvbnRlbnRzLngoKSwgY2xvc2VzdEJveC0+
eSgpKSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHVGV4dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJTVkdUZXh0OjphYnNv
bHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0
CiB7CiAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1YWQoc3Ryb2tlQm91bmRpbmdC
b3goKSwgZmFsc2UsIHdhc0ZpeGVkKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVGV4dC5oCmluZGV4IGIzZTBmNDNmOGY2NDljN2ZhNjdlMGI4NDIwMzY3YWYw
ZDZlOTJkM2UuLmEwYWRhNGNiNGVmZTk4MGNhYmUyN2E5ZmE1MDRiYWEzOTAxODlkYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCkBAIC02MCw3ICs2
MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQp
OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9v
bCogd2FzRml4ZWQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9
IGZhbHNlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBkNjRk
MGI3YzQ3NjhmMTNjZWJiMDhjYWVkMzgxMDRjMjhhYmRlYWQ2Li5kN2E4MTU0MGZhMGVkY2QxYTlm
YjM0MjU3MDk0ZGZmMDI1MmM1MDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC0yMDgsNyArMjA4LDcgQEAgUGFzc1JlZlB0cjxDbGllbnRSZWN0PiBJbnRlcm5hbHM6OmJv
dW5kaW5nQm94KEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGUKICAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVy
KQogICAgICAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIENsaWVu
dFJlY3Q6OmNyZWF0ZShyZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CisgICAg
cmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZShyZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3RJZ25vcmluZ1RyYW5zZm9ybXMoKSk7CiB9CiAKIHVuc2lnbmVkIEludGVybmFsczo6bWFya2Vy
Q291bnRGb3JOb2RlKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJmcmFtZS5jcHAKaW5kZXggNWYxMmUxMDE0MzlmNWZiZjBkNmNkY2IxMDM0MTE3MDYxYjU5
MjdmNC4uMDdmMmRmOTg3ZDJjZmY1NmRmYzhkODdkN2E1Y2FiYjVjMTk2NmUxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC0xNzUxLDcgKzE3NTEsNyBAQCBRV2ViSGl0VGVzdFJl
c3VsdFByaXZhdGU6OlFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZShjb25zdCBXZWJDb3JlOjpIaXRU
ZXN0UmVzdWx0CiAgICAgaW1hZ2VVcmwgPSBoaXRUZXN0LmFic29sdXRlSW1hZ2VVUkwoKTsKICAg
ICBpbm5lck5vZGUgPSBoaXRUZXN0LmlubmVyTm9kZSgpOwogICAgIGlubmVyTm9uU2hhcmVkTm9k
ZSA9IGhpdFRlc3QuaW5uZXJOb25TaGFyZWROb2RlKCk7Ci0gICAgYm91bmRpbmdSZWN0ID0gaW5u
ZXJOb25TaGFyZWROb2RlID8gaW5uZXJOb25TaGFyZWROb2RlLT5yZW5kZXJlcigpLT5hYnNvbHV0
ZUJvdW5kaW5nQm94UmVjdCh0cnVlKSA6IEludFJlY3QoKTsKKyAgICBib3VuZGluZ1JlY3QgPSBp
bm5lck5vblNoYXJlZE5vZGUgPyBpbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlcmVyKCktPmFic29s
dXRlQm91bmRpbmdCb3hSZWN0KCkgOiBJbnRSZWN0KCk7CiAgICAgV2ViQ29yZTo6SW1hZ2UgKmlt
ZyA9IGhpdFRlc3QuaW1hZ2UoKTsKICAgICBpZiAoaW1nKSB7CiAgICAgICAgIFFQaXhtYXAgKnBp
eCA9IGltZy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXgg
ZWFiZDgyYTA5YmU3ODc0MjAxYmYzYTY2ODAzNTUzNDM1ZGE5ZjNlOS4uMjBmYmE2MzI3ZTU2YTc5
ZWQ0MzE4NTU4OTJhMmZiYzExZDI2NGYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxMS0xMC0wMyAgRmFkeSBTYW11ZWwgIDxmc2FtdWVsQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBDb2RlIGNsZWFuLXVwOiBNYWtlIFJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QgYW5kIGFzc29jaWF0ZWQgbWV0aG9kcyBjb25zdCBhbmQgbWFrZSBpdHMgcGFyYW1ldGVy
IHVzZVRyYW5zZm9ybXMgbm8gbG9uZ2VyIGRlZmF1bHQgdG8gZmFsc2UKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MDA5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAg
ICAgICAgKFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZTo6UVdlYkhpdFRlc3RSZXN1bHRQcml2YXRl
KToKKwogMjAxMS0xMC0wMyAgUGllcnJlIFJvc3NpICA8cGllcnJlLnJvc3NpQGdtYWlsLmNvbT4K
IAogICAgICAgICBbUXRdIEJ1aWxkIGZpeDogUXQ6OmVzY2FwZSBpcyBkZXByZWNhdGVkIGluIFF0
NQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDEwNDJjNDU3MWFiYTc0Y2I1ZTFhZWI3ZTJjNTc4ZTA0NTMyY2U4YTcu
LjcwODI1MDQ4NDdmOTIxYWI4ZDE3ODg1NTY4NjliMDgyN2ZmOGI4ZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxMS0xMC0wMyAgRmFkeSBTYW11ZWwgIDxmc2FtdWVsQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBDb2RlIGNsZWFuLXVwOiBNYWtlIFJlbmRlck9iamVjdDo6YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QgYW5kIGFzc29jaWF0ZWQgbWV0aG9kcyBjb25zdCBhbmQgbWFrZSBp
dHMgcGFyYW1ldGVyIHVzZVRyYW5zZm9ybXMgbm8gbG9uZ2VyIGRlZmF1bHQgdG8gZmFsc2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MDA5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3aW4vV2ViS2l0
Mi5kZWY6CisgICAgICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVmOgorCiAyMDExLTEwLTAzICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RL
XSBBZGQgZmFpbGluZyB1cmkgcGFyYW1ldGVyIHRvIHByb3Zpc2lvbmFsLWxvYWQtZmFpbGVkIGFu
ZCBsb2FkLWZhaWxlZCBzaWduYWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2Vi
S2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKaW5kZXggZmE1MThlMzQw
MmExMTI1NDYxOTBiYmJkNTIxMmY2OTQ1OTRmZDEwMi4uYjdmMmFkNDQ0NjQxNWQ1NzAwZTBkN2Qy
YThjYjEzOWY2NGJhMTMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIu
ZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgpAQCAtMTQzLDcgKzE0Myw4
IEBAIEVYUE9SVFMKICAgICAgICAgPz8wQ2xpZW50UmVjdEBXZWJDb3JlQEBBQUVAWFoKICAgICAg
ICAgPz8wU3RyaW5nQFdURkBAUUFFQFBCREBaCiAgICAgICAgID8/MFN0cmluZ0BXVEZAQFFBRUBQ
Ql9XQFoKLSAgICAgICAgP2Fic29sdXRlQm91bmRpbmdCb3hSZWN0QFJlbmRlck9iamVjdEBXZWJD
b3JlQEBRQUU/QVZJbnRSZWN0QDJAX05AWgorICAgICAgICA/YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3RAUmVuZGVyT2JqZWN0QFdlYkNvcmVAQFFCRT9BVkludFJlY3RAMkBfTkBaCisgICAgICAgID9h
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3Jtc0BSZW5kZXJPYmplY3RAV2Vi
Q29yZUBAUUJFP0FWSW50UmVjdEAyQFhaCiAgICAgICAgID9hZGRAQXRvbWljU3RyaW5nQFdURkBA
Q0E/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBAMkBQQkRAWgogICAgICAgICA/YWRk
U2xvd0Nhc2VAQXRvbWljU3RyaW5nQFdURkBAQ0E/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxA
V1RGQEBAMkBQQVZTdHJpbmdJbXBsQDJAQFoKICAgICAgICAgP2NhY2hlRE9NU3RydWN0dXJlQFdl
YkNvcmVAQFlBUEFWU3RydWN0dXJlQEpTQ0BAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQQVYyM0BQ
QlVDbGFzc0luZm9AM0BAWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJD
RkxpdGUuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCmluZGV4IDg0
ODJiNDk3MTZjNzFjYjJjMzJkN2MwZmJjOTUyZjI3ZjQxZjRkMWMuLjc3MzQ5OTVjN2RkODU1NTFi
MmZkOGUxMzU2NGM0MTIxZjZhZTZlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyQ0ZMaXRlLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5k
ZWYKQEAgLTEzNSw3ICsxMzUsOCBAQCBFWFBPUlRTCiAgICAgICAgID8/MFN0cmluZ0BXVEZAQFFB
RUBQQl9XQFoKICAgICAgICAgPz8xTm9kZVJlbmRlcmluZ0NvbnRleHRAV2ViQ29yZUBAUUFFQFha
CiAgICAgICAgID8/MVJhbmdlQFdlYkNvcmVAQFFBRUBYWgotICAgICAgICA/YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3RAUmVuZGVyT2JqZWN0QFdlYkNvcmVAQFFBRT9BVkludFJlY3RAMkBfTkBaCisg
ICAgICAgID9hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEBSZW5kZXJPYmplY3RAV2ViQ29yZUBAUUJF
P0FWSW50UmVjdEAyQF9OQFoKKyAgICAgICAgP2Fic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3Jp
bmdUcmFuc2Zvcm1zQFJlbmRlck9iamVjdEBXZWJDb3JlQEBRQkU/QVZJbnRSZWN0QDJAWFoKICAg
ICAgICAgP2FkZEBBdG9taWNTdHJpbmdAV1RGQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1w
bEBXVEZAQEAyQFBCREBaCiAgICAgICAgID9hZGRTbG93Q2FzZUBBdG9taWNTdHJpbmdAV1RGQEBD
QT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAyQFBBVlN0cmluZ0ltcGxAMkBAWgog
ICAgICAgICA/Y2FjaGVET01TdHJ1Y3R1cmVAV2ViQ29yZUBAWUFQQVZTdHJ1Y3R1cmVASlNDQEBQ
QVZKU0RPTUdsb2JhbE9iamVjdEAxQFBBVjIzQFBCVUNsYXNzSW5mb0AzQEBaCmRpZmYgLS1naXQg
YS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1i
b2xzLmZpbHRlcgppbmRleCA3ZDM5YzQ1YWMwOWU0YmJlMjMzNThiZDNiNjc1OWE0MTQwM2E5MTBj
Li5mNjdkNWY4ZGQ1YThiYTNiMmI2NDI0NmQ1MThiODljZmZiZGM0Y2Q4IDEwMDY0NAotLS0gYS9T
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIKQEAgLTQzLDcgKzQzLDcgQEAgX1pON1dlYkNvcmUxMUV2ZW50VGFyZ2V0OHRv
U3RyZWFtRXY7CiBfWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxMXNldERpc2FibGVkRWI7CiBfWk43
V2ViQ29yZTExbWVtb3J5Q2FjaGVFdjsKIF9aTjdXZWJDb3JlMTJKU0RPTVdyYXBwZXIzNHZpcnR1
YWxGdW5jdGlvblRvUHJldmVudFdlYWtWdGFibGVFdjsKLV9aTjdXZWJDb3JlMTJSZW5kZXJPYmpl
Y3QyM2Fic29sdXRlQm91bmRpbmdCb3hSZWN0RWI7CitfWk5LN1dlYkNvcmUxMlJlbmRlck9iamVj
dDIzYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RFYjsKIF9aTjdXZWJDb3JlMTNjcmVhdGVXcmFwcGVy
RVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzROb2RlRTsKIF9a
TjdXZWJDb3JlMTVzZXRET01FeGNlcHRpb25FUE4zSlNDOUV4ZWNTdGF0ZUVpOwogX1pON1dlYkNv
cmUxNkhUTUxJbnB1dEVsZW1lbnQxN3NldFN1Z2dlc3RlZFZhbHVlRVJLTjNXVEY2U3RyaW5nRTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109703</attachid>
            <date>2011-10-04 15:15:50 -0700</date>
            <delta_ts>2011-10-06 10:49:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69009-20111004181548.patch</filename>
            <type>text/plain</type>
            <size>46473</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY1MjIKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCAzMmMzMTZmYzI5NmIyM2RjMWRjYmJjNmZlYTAxZTczYmI5MGZhNGVhLi44ZDAz
ODE3MDRjYTAzMDA4ZGYwOGRiYWVjYjhmMDk1Njg4ZTBhMzA0IDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMTAtMDQgIEZhZHkgU2Ft
dWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDogTWFr
ZSBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVkIG1l
dGhvZHMgY29uc3QgYW5kIG1ha2UgaXRzIHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxvbmdl
ciBkZWZhdWx0IHRvIGZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02OTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMS0wOS0y
MyAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CiAKICAgICAg
ICAgW1F0XSBGaXggYnVpbGQgYWdhaW5zdCBRdDUgYWZ0ZXIgcmVmYWN0b3Igb2Ygd2lkZ2V0cyBv
dXQgb2YgUXRHVWkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZjNjYjFkNDY1MWRhYThkODBkODI5MmUyMDU4MmRm
ZWQ0ODFiOTdkLi4xZTJlNWZmZWM5ZTg0MmJiMGQ5YjMxNTM3MzgyNjlkNWRiY2U1MWE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODggQEAKKzIwMTEtMTAtMDQgIEZhZHkgU2FtdWVsICA8ZnNhbXVl
bEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDogTWFrZSBSZW5kZXJPYmpl
Y3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVkIG1ldGhvZHMgY29uc3Qg
YW5kIG1ha2UgaXRzIHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxvbmdlciBkZWZhdWx0IHRv
IGZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
OTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVw
Y29taW5nIHBhdGNoZXMgbWF5IG1ha2UgdXNlIG9mIGFic29sdXRlQm91bmRpbmdCb3hSZWN0IG9u
IGEgY29uc3QgUmVuZGVyT2JqZWN0LCBzbyB0aGlzIG5lZWRlZCB0byBiZSBmaXhlZC4KKyAgICAg
ICAgTWFraW5nIHVzZVRyYW5zZm9ybXMgZGVmYXVsdCB0byB0cnVlIGluc3RlYWQgb2YgZmFsc2Ug
YW5kIHJlcGxhY2luZyBpbnN0YW5jZXMgb2YgYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSB0bwor
ICAgICAgICBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpIHBhcnRp
YWxseSBhZGRyZXNlcyAvLyBGSVhNRTogdXNlVHJhbnNmb3JtcyBzaG91bGQgZ28gYXdheSBldmVu
dHVhbGx5LgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogZG9tL0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2NyZWVuUmVjdCk6CisgICAgICAg
ICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Z2V0UmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpyZW5kZXJSZWN0KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9T
bGlkZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVt
ZW50OjpzZXRQb3NpdGlvbkZyb21Qb2ludCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RmllbGRTcGVl
Y2hCdXR0b25FbGVtZW50OjpzdGFydFNwZWVjaElucHV0KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
RE9NTm9kZUhpZ2hsaWdodGVyLmNwcDoKKyAgICAgICAgKiBwbHVnaW5zL0lGcmFtZVNoaW1TdXBw
b3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFBsdWdpbk9jY2x1c2lvbnMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWJz
b2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjphYnNvbHV0ZVF1
YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlcklGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJRnJhbWU6OmZsYXR0ZW5G
cmFtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlcklubGluZTo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6OnNob3dQb3B1cCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6YWRkQWJzb2x1dGVSZWN0Rm9yTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0OjpwYWludGluZ1Jvb3RSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFic29sdXRlUmVjdHMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dElnbm9yaW5nVHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFi
c29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6c2hv
d1BvcHVwKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNo
RmllbGRSZXN1bHRzRGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNh
ZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmFic29sdXRl
UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6YWJzb2x1dGVRdWFkcyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0Jsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0Jsb2NrOjph
YnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjphYnNvbHV0ZVF1YWRz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR0lubGluZTo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR01vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2Jq
ZWN0OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2Jq
ZWN0OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01v
ZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmFic29sdXRlUXVhZHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Ym91bmRpbmdCb3gpOgor
CiAyMDExLTEwLTAzICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgQVg6IGNsaWNrIHBvaW50IGZvciBBWEhlYWRpbmdzIG9mdGVuIHJldHVybnMgcG9pbnQg
b24gZW1wdHkgc3BhY2UgKHJlc3VsdHMgaW4gd3JvbmcgY29udGV4dCBtZW51KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCAxODIxNThkOGY3MmRlYmI0MGM5NzQ4Yjc0YmZmNzFiZTMzZTcyY2FjLi4w
MmI3MjgyMTUzMTA1OGYxOGNhZmVlMGE0YjMzMzJiMmVkYzhhZTg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtMjgzLDcgKzI4Myw2IEBAIF9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0OXNwb29s
UmVjdEVSTlNfMTVHcmFwaGljc0NvbnRleHRFUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTEy
UHJpbnRDb250ZXh0QzFFUE5TXzVGcmFtZUUKIF9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0RDFF
dgogX19aTjdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNnJlcGFpbnRSZWN0YW5nbGVFUktOU183SW50
UmVjdEViCi1fX1pON1dlYkNvcmUxMlJlbmRlck9iamVjdDIzYWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3RFYgogX19aTjdXZWJDb3JlMTJSZW5kZXJXaWRnZXQyOHJlc3VtZVdpZGdldEhpZXJhcmNoeVVw
ZGF0ZXNFdgogX19aTjdXZWJDb3JlMTJSZW5kZXJXaWRnZXQyOXN1c3BlbmRXaWRnZXRIaWVyYXJj
aHlVcGRhdGVzRXYKIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyMTB3cmFwTlNEYXRhRVA2TlNE
YXRhCkBAIC0xMTE1LDYgKzExMTQsNyBAQCBfX1pOSzdXZWJDb3JlMTFTY3JpcHRWYWx1ZTlnZXRT
dHJpbmdFUE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29yZTEySWNv
bkRhdGFiYXNlMTJkYXRhYmFzZVBhdGhFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFiYXNlMjRz
aG91bGRTdG9wVGhyZWFkQWN0aXZpdHlFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFiYXNlOWlz
RW5hYmxlZEV2CitfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QyM2Fic29sdXRlQm91bmRpbmdC
b3hSZWN0RWIKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDE0ZW5jbG9zaW5nTGF5ZXJFdgog
X19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTVsb2NhbFRvQWJzb2x1dGVFUktOU18xMEZsb2F0
UG9pbnRFYmIKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDR2aWV3RXYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAppbmRleCBiMTY2MjNiYWFjOTMxMDFiMTNjMjM0ZDQzMzQ1NjdiZTJlNjdlNjBlLi5l
ODAzM2UzNTJkMzdhZjNiN2IwMGMyMjdlZTczMmNiNGQwYmRmNDJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCkBAIC01NzMsNyArNTczLDggQEAgTGF5b3V0UmVjdCBFbGVtZW50OjpzY3JlZW5SZWN0
KCkgY29uc3QKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRS
ZWN0KCk7Ci0gICAgcmV0dXJuIHJlbmRlcmVyKCktPnZpZXcoKS0+ZnJhbWVWaWV3KCktPmNvbnRl
bnRzVG9TY3JlZW4ocmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CisgICAg
Ly8gRklYTUU6IHRoaXMgc2hvdWxkIHByb2JhYmx5IHJlc3BlY3QgdHJhbnNmb3JtcworICAgIHJl
dHVybiByZW5kZXJlcigpLT52aWV3KCktPmZyYW1lVmlldygpLT5jb250ZW50c1RvU2NyZWVuKHJl
bmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkpOwog
fQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZShjb25zdCBF
bGVtZW50KiBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGE2YjllMDFlMGZhYzc0YWY1YTI4OTUzZWIw
OTliODdhNTBhZjMyZTQuLjc5Y2I5MmU0MmMxZGZlZWFmYjQwYmExOTlmZjc3ZTMzNGQyZjU3ZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKQEAgLTgyMyw3ICs4MjMsNyBAQCBSZW5kZXJCb3hNb2RlbE9iamVj
dCogTm9kZTo6cmVuZGVyQm94TW9kZWxPYmplY3QoKSBjb25zdAogTGF5b3V0UmVjdCBOb2RlOjpn
ZXRSZWN0KCkgY29uc3QKIHsKICAgICBpZiAocmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIHJl
bmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KHRydWUpOworICAgICAgICByZXR1cm4g
cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKICAgICByZXR1cm4gTGF5b3V0
UmVjdCgpOwogfQogICAgIApAQCAtODM1LDcgKzgzNSw3IEBAIExheW91dFJlY3QgTm9kZTo6cmVu
ZGVyUmVjdChib29sKiBpc1JlcGxhY2VkKQogICAgIHdoaWxlIChyZW5kZXJlciAmJiAhcmVuZGVy
ZXItPmlzQm9keSgpICYmICFyZW5kZXJlci0+aXNSb290KCkpIHsKICAgICAgICAgaWYgKHJlbmRl
cmVyLT5pc1JlbmRlckJsb2NrKCkgfHwgcmVuZGVyZXItPmlzSW5saW5lQmxvY2tPcklubGluZVRh
YmxlKCkgfHwgcmVuZGVyZXItPmlzUmVwbGFjZWQoKSkgewogICAgICAgICAgICAgKmlzUmVwbGFj
ZWQgPSByZW5kZXJlci0+aXNSZXBsYWNlZCgpOwotICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVy
LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCh0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiByZW5k
ZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKICAgICAgICAgfQogICAgICAgICByZW5k
ZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAppbmRleCA1ZDE3OGFmMDc5YWI0Y2Zi
ZDlkMGY3MjA0M2ZhZjNkODdjNDhiY2I4Li45MjZiMzkzZDNkZDE3MDVmNWZlMzFiNzZmZjM4MDg1
YTgzOGQyODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJU
aHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRo
dW1iRWxlbWVudC5jcHAKQEAgLTIxNiw3ICsyMTYsOCBAQCB2b2lkIFNsaWRlclRodW1iRWxlbWVu
dDo6c2V0UG9zaXRpb25Gcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogICAgIC8v
IFdlIG5lZWQgdG8gY2FsY3VsYXRlIGN1cnJlbnRQb3NpdGlvbiBmcm9tIGFic29sdXRlIHBvaW50
cyBiZWNhdWUgdGhlCiAgICAgLy8gcmVuZGVyZXIgZm9yIHRoaXMgbm9kZSBpcyB1c3VhbGx5IG9u
IGEgbGF5ZXIgYW5kIHJlbmRlckJveCgpLT54KCkgYW5kCiAgICAgLy8geSgpIGFyZSB1bnVzYWJs
ZS4KLSAgICBMYXlvdXRQb2ludCBhYnNvbHV0ZVRodW1iT3JpZ2luID0gcmVuZGVyQm94KCktPmFi
c29sdXRlQm91bmRpbmdCb3hSZWN0KCkubG9jYXRpb24oKTsKKyAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgcHJvYmFibHkgcmVzcGVjdCB0cmFuc2Zvcm1zLgorICAgIExheW91dFBvaW50IGFic29s
dXRlVGh1bWJPcmlnaW4gPSByZW5kZXJCb3goKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25v
cmluZ1RyYW5zZm9ybXMoKS5sb2NhdGlvbigpOwogICAgIExheW91dFBvaW50IGFic29sdXRlU2xp
ZGVyQ29udGVudE9yaWdpbiA9IHJvdW5kZWRMYXlvdXRQb2ludChpbnB1dC0+cmVuZGVyZXIoKS0+
bG9jYWxUb0Fic29sdXRlKCkpOwogICAgIGlmIChpc1ZlcnRpY2FsKSB7CiAgICAgICAgIHRyYWNr
U2l6ZSA9IGlucHV0LT5yZW5kZXJCb3goKS0+Y29udGVudEhlaWdodCgpIC0gcmVuZGVyQm94KCkt
PmhlaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggYmYxODVjZjdiMGYwOTZiOTNjODg4MzIwNmJh
MzM3NGQwNDkzNDVkNS4uNDc2MjE4MTM1YmFkNzBiODUzMGUzZmQ3N2EwOTgwZDQzOTY1ZTUyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuY3BwCkBAIC01MzUsNyArNTM1LDggQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNo
QnV0dG9uRWxlbWVudDo6c3RhcnRTcGVlY2hJbnB1dCgpCiAgICAgUmVmUHRyPEhUTUxJbnB1dEVs
ZW1lbnQ+IGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KHNoYWRvd0FuY2Vz
dG9yTm9kZSgpKTsKICAgICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UgPSBpbnB1dC0+Y29tcHV0ZUlu
aGVyaXRlZExhbmd1YWdlKCk7CiAgICAgU3RyaW5nIGdyYW1tYXIgPSBpbnB1dC0+Z2V0QXR0cmli
dXRlKHdlYmtpdGdyYW1tYXJBdHRyKTsKLSAgICBJbnRSZWN0IHJlY3QgPSByZW5kZXJlcigpLT5h
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBwcm9i
YWJseSByZXNwZWN0IHRyYW5zZm9ybXMKKyAgICBJbnRSZWN0IHJlY3QgPSByZW5kZXJlcigpLT5h
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOwogICAgIGlmIChzcGVl
Y2hJbnB1dCgpLT5zdGFydFJlY29nbml0aW9uKG1fbGlzdGVuZXJJZCwgcmVjdCwgbGFuZ3VhZ2Us
IGdyYW1tYXIsIGRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICBzZXRTdGF0
ZShSZWNvcmRpbmcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RP
TU5vZGVIaWdobGlnaHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhp
Z2hsaWdodGVyLmNwcAppbmRleCBlNjg5YjUyNTBiNmE4NjhlYTVhNTUwZDZkYWFiYTI5NDVhNzhm
NjlkLi5mOGJmYjYwZjlhZGVkMjBiMmUxMDY4MGEwOGM5NjQyODRkYTg0ZjU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcApAQCAtMzYxLDcg
KzM2MSw3IEBAIHZvaWQgZHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBIaWdobGlnaHREYXRhKiBoaWdobGlnaHREYXRhKQogICAgICAgICByZXR1cm47CiAKICAgICBM
YXlvdXRTaXplIG1haW5GcmFtZU9mZnNldCA9IGZyYW1lVG9NYWluRnJhbWVPZmZzZXQoY29udGFp
bmluZ0ZyYW1lKTsKLSAgICBMYXlvdXRSZWN0IGJvdW5kaW5nQm94ID0gcmVuZGVyZXItPmFic29s
dXRlQm91bmRpbmdCb3hSZWN0KHRydWUpOworICAgIExheW91dFJlY3QgYm91bmRpbmdCb3ggPSBy
ZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKIAogICAgIGJvdW5kaW5nQm94Lm1v
dmUobWFpbkZyYW1lT2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9JRnJhbWVTaGltU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0lGcmFtZVNo
aW1TdXBwb3J0LmNwcAppbmRleCBjMGFhMWU0MTM2YzQ5NDJmMjlhZjg4NGYzMjE2ODg1YzdhYzU1
Yjc5Li44MjY1NzY1MTEwYWU1NDY4ZDAzMDVmM2VmYjA0NmQyNWFkZDdmZWZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmNwcApAQCAtMTUyLDcgKzE1Miw3
IEBAIHZvaWQgZ2V0UGx1Z2luT2NjbHVzaW9ucyhFbGVtZW50KiBlbGVtZW50LCBXaWRnZXQqIHBh
cmVudFdpZGdldCwgY29uc3QgSW50UmVjdCYKICAgICAgICAgUmVuZGVyT2JqZWN0KiBpZnJhbWVS
ZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCk7CiAKICAgICAgICAgaWYgKGVsZW1lbnQtPmhh
c1RhZ05hbWUoSFRNTE5hbWVzOjppZnJhbWVUYWcpCi0gICAgICAgICAgICAmJiBpZnJhbWVSZW5k
ZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS5pbnRlcnNlY3RzKGZyYW1lUmVjdCkKKyAg
ICAgICAgICAgICYmIGlmcmFtZVJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9y
aW5nVHJhbnNmb3JtcygpLmludGVyc2VjdHMoZnJhbWVSZWN0KQogICAgICAgICAgICAgJiYgKCFp
ZnJhbWVSZW5kZXJlci0+c3R5bGUoKSB8fCBpZnJhbWVSZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJp
bGl0eSgpID09IFZJU0lCTEUpKSB7CiAgICAgICAgICAgICBnZXRPYmplY3RTdGFjayhpZnJhbWVS
ZW5kZXJlciwgJmlmcmFtZVpzdGFjayk7CiAgICAgICAgICAgICBpZiAoaWZyYW1lSXNBYm92ZVBs
dWdpbihpZnJhbWVac3RhY2ssIHBsdWdpblpzdGFjaykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDdmYjFiMTlmZTkwMWQzZGZmYTExNjMwMWYyMjk3YzFk
YjBkMGRkNmIuLmRjMzU5M2Y1NmNkZmJkZTk5MzZkMmEzZDNlZWI1ZGJkYTVhYTRjMmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtNTg2NCw3ICs1ODY0LDcg
QEAgdm9pZCBSZW5kZXJCbG9jazo6c2V0UGFnZUxvZ2ljYWxPZmZzZXQoaW50IGxvZ2ljYWxPZmZz
ZXQpCiAgICAgbV9yYXJlRGF0YS0+bV9wYWdlTG9naWNhbE9mZnNldCA9IGxvZ2ljYWxPZmZzZXQ7
CiB9CiAKLXZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+
JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KQordm9pZCBSZW5k
ZXJCbG9jazo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7CiAgICAgLy8gRm9yIGJsb2Nr
cyBpbnNpZGUgaW5saW5lcywgd2UgZ28gYWhlYWQgYW5kIGluY2x1ZGUgbWFyZ2lucyBzbyB0aGF0
IHdlIHJ1biByaWdodCB1cCB0byB0aGUKICAgICAvLyBpbmxpbmUgYm94ZXMgYWJvdmUgYW5kIGJl
bG93IHVzICh0aHVzIGdldHRpbmcgbWVyZ2VkIHdpdGggdGhlbSB0byBmb3JtIGEgc2luZ2xlIGly
cmVndWxhcgpAQCAtNTg4MCw3ICs1ODgwLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWJzb2x1dGVS
ZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWMKICAg
ICAgICAgcmVjdHMuYXBwZW5kKExheW91dFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIHNpemUoKSkp
OwogfQogCi12b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVF1YWRz
KFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAg
Ly8gRm9yIGJsb2NrcyBpbnNpZGUgaW5saW5lcywgd2UgZ28gYWhlYWQgYW5kIGluY2x1ZGUgbWFy
Z2lucyBzbyB0aGF0IHdlIHJ1biByaWdodCB1cCB0byB0aGUKICAgICAvLyBpbmxpbmUgYm94ZXMg
YWJvdmUgYW5kIGJlbG93IHVzICh0aHVzIGdldHRpbmcgbWVyZ2VkIHdpdGggdGhlbSB0byBmb3Jt
IGEgc2luZ2xlIGlycmVndWxhcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApp
bmRleCBmMzhiNzkyMjEwMDI4MGYxNmJkNDgzNTFhMjY0ZWE4YjBmOTFhMGNiLi4xZWQ5NWI5YzY0
ODMzMmUwMDBjOTVhOTE4MWQ2ZjQyNWU0N2JkNWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suaApAQCAtNjg0LDggKzY4NCw4IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0VW5p
dCBsb2dpY2FsTGVmdFNlbGVjdGlvbk9mZnNldChSZW5kZXJCbG9jayogcm9vdEJsb2NrLCBMYXlv
dXRVbml0IHBvc2l0aW9uKTsKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodFNlbGVjdGlvbk9m
ZnNldChSZW5kZXJCbG9jayogcm9vdEJsb2NrLCBMYXlvdXRVbml0IHBvc2l0aW9uKTsKICAgICAK
LSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25z
dCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9pZCBhYnNv
bHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1
YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRl
UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICAgICBM
YXlvdXRVbml0IGRlc2lyZWRDb2x1bW5XaWR0aCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGRlc2ly
ZWRDb2x1bW5Db3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cAppbmRleCA1NzYxYzY5ZjViNzMwYjNhNDYxMzBjMDAxYzAxYzU2ZWJhNWUxMTRjLi5jMzRkZjkx
NGU4MGIxOGQ0ZjNlMGEwZDdjMjcxYjFiNTYzOGM4MWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcApAQCAtNDk4LDEyICs0OTgsMTIgQEAgdm9pZCBSZW5kZXJCb3g6OnNl
dFNjcm9sbFRvcChMYXlvdXRVbml0IG5ld1RvcCkKICAgICAgICAgbGF5ZXIoKS0+c2Nyb2xsVG9Z
T2Zmc2V0KG5ld1RvcCwgUmVuZGVyTGF5ZXI6OlNjcm9sbE9mZnNldENsYW1wZWQpOwogfQogCi12
b2lkIFJlbmRlckJveDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25z
dCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCit2b2lkIFJlbmRlckJveDo6YWJzb2x1
dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11
bGF0ZWRPZmZzZXQpIGNvbnN0CiB7CiAgICAgcmVjdHMuYXBwZW5kKExheW91dFJlY3QoYWNjdW11
bGF0ZWRPZmZzZXQsIHNpemUoKSkpOwogfQogCi12b2lkIFJlbmRlckJveDo6YWJzb2x1dGVRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJC
b3g6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhl
ZCkgY29uc3QKIHsKICAgICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJl
Y3QoMCwgMCwgd2lkdGgoKSwgaGVpZ2h0KCkpLCBmYWxzZSwgd2FzRml4ZWQpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCA0NTgwOTNiOTRmNDg3NDBjMjJiMTY1YWMw
MzQ1MjYyYTNhZjlmYzc3Li5kMGY0ZjM3NjkwNTcyYzIyNDE2MWUzZmY5MjcxZTM4ZTdjNjUwNmZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC0yMzQsOCArMjM0LDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb2xsYXBzZWRNYXJnaW5CZWZvcmUoKSBj
b25zdCB7IHJldHVybiBtYXJnaW5CZWZvcmUoKTsgfQogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBj
b2xsYXBzZWRNYXJnaW5BZnRlcigpIGNvbnN0IHsgcmV0dXJuIG1hcmdpbkFmdGVyKCk7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExh
eW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRl
UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2
b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKICAgICAKICAgICBJbnRS
ZWN0IHJlZmxlY3Rpb25Cb3goKSBjb25zdDsKICAgICBpbnQgcmVmbGVjdGlvbk9mZnNldCgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxv
YWRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2Fk
Q29udHJvbC5jcHAKaW5kZXggZjk0NDkxZjMxYzVhOGU1ZmQyMDIyNDUwMTk1NGU0YjQ2ZWYwODQ2
Ni4uODViOTRkNmM3MDkzNmU4NzEyYjM5ODJjZTMwMDhjOWQzZjgzNWYyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBA
IC0xMzIsNyArMTMyLDggQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmpl
Y3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW4KICAgICAgICAgICAgIHRl
eHRYID0gY29udGVudExlZnQgKyBjb250ZW50V2lkdGgoKSAtIGJ1dHRvbkFuZEljb25XaWR0aCAt
IGZvbnQud2lkdGgodGV4dFJ1bik7CiAgICAgICAgIC8vIFdlIHdhbnQgdG8gbWF0Y2ggdGhlIGJ1
dHRvbidzIGJhc2VsaW5lCiAgICAgICAgIFJlbmRlckJ1dHRvbiogYnV0dG9uUmVuZGVyZXIgPSB0
b1JlbmRlckJ1dHRvbihidXR0b24tPnJlbmRlcmVyKCkpOwotICAgICAgICBMYXlvdXRVbml0IHRl
eHRZID0gYnV0dG9uUmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkueSgpCisgICAg
ICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgd29yayB3aXRoIHRyYW5zZm9ybXMuCisgICAgICAgIExh
eW91dFVuaXQgdGV4dFkgPSBidXR0b25SZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJ
Z25vcmluZ1RyYW5zZm9ybXMoKS55KCkKICAgICAgICAgICAgICsgYnV0dG9uUmVuZGVyZXItPmJh
c2VsaW5lUG9zaXRpb24oQWxwaGFiZXRpY0Jhc2VsaW5lLCB0cnVlLCBIb3Jpem9udGFsTGluZSwg
UG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKTsKIAogICAgICAgICBwYWludEluZm8uY29udGV4dC0+
c2V0RmlsbENvbG9yKHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNv
bG9yKSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklGcmFtZS5jcHAKaW5kZXggMTEyOTdiNWRiN2E5ZjdhMmQwOWU0NjU5NDNjNDg3ZTE4NmYx
NWFkMC4uY2UwZjQzYmQwMzA0MTUxYTQwODNiMGEwMjBhOWUyZWQ5NjFiMTNkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBi
b29sIFJlbmRlcklGcmFtZTo6ZmxhdHRlbkZyYW1lKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgLy8gRG8gbm90IGZsYXR0ZW4gb2Zmc2NyZWVuIGlubmVyIGZyYW1lcyBkdXJpbmcgZnJh
bWUgZmxhdHRlbmluZywgYXMgZmxhdHRlbmluZyBtaWdodCBtYWtlIHRoZW0gdmlzaWJsZS4KLSAg
ICBJbnRSZWN0IGJvdW5kaW5nUmVjdCA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAg
SW50UmVjdCBib3VuZGluZ1JlY3QgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJh
bnNmb3JtcygpOwogICAgIHJldHVybiBib3VuZGluZ1JlY3QubWF4WCgpID4gMCAmJiBib3VuZGlu
Z1JlY3QubWF4WSgpID4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmNwcAppbmRleCA2Y2E5ZDNmYjFlOTJkMDJjYmM5MGJhNGRjMzNiYTE5YmQ4NGIyODA0Li4z
ZjA5NjMzYjAwOGQ5NTZmYTFmN2UyMTgyZTMwYzRkZDIwNWFjM2EzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtNDY2LDcgKzQ2Niw3IEBAIHZvaWQgUmVu
ZGVySW5saW5lOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0KQogICAgIG1fbGluZUJveGVzLnBhaW50KHRoaXMsIHBhaW50SW5mbywgcGFp
bnRPZmZzZXQpOwogfQogCi12b2lkIFJlbmRlcklubGluZTo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8
TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQp
Cit2b2lkIFJlbmRlcklubGluZTo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJl
Y3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7CiAgICAg
aWYgKCFhbHdheXNDcmVhdGVMaW5lQm94ZXMoKSkKICAgICAgICAgY3VsbGVkSW5saW5lQWJzb2x1
dGVSZWN0cyh0aGlzLCByZWN0cywgdG9MYXlvdXRTaXplKGFjY3VtdWxhdGVkT2Zmc2V0KSk7CkBA
IC00ODUsNyArNDg1LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMoVmVjdG9y
PExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGEKICAgICB9CiB9CiAKLXZv
aWQgUmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlcklu
bGluZSogY29udGFpbmVyLCBWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRT
aXplJiBvZmZzZXQpCit2b2lkIFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0
cyhjb25zdCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdG9yPExheW91dFJlY3Q+JiByZWN0
cywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0KSBjb25zdAogewogICAgIGlmICghY3VsbGVkSW5s
aW5lRmlyc3RMaW5lQm94KCkpIHsKICAgICAgICAgcmVjdHMuYXBwZW5kKEludFJlY3Qob2Zmc2V0
LndpZHRoKCksIG9mZnNldC5oZWlnaHQoKSwgMCwgMCkpOwpAQCAtNTUzLDcgKzU1Myw3IEBAIHZv
aWQgUmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlcklu
bGluZSogY29udGFpbmVyLCBWZWN0CiAgICAgfQogfQogCi12b2lkIFJlbmRlcklubGluZTo6YWJz
b2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9p
ZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBi
b29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBpZiAoIWFsd2F5c0NyZWF0ZUxpbmVCb3hlcygp
KQogICAgICAgICBjdWxsZWRJbmxpbmVBYnNvbHV0ZVF1YWRzKHRoaXMsIHF1YWRzKTsKQEAgLTU2
OSw3ICs1NjksNyBAQCB2b2lkIFJlbmRlcklubGluZTo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQogICAgICAgICBjb250aW51YXRpb24oKS0+
YWJzb2x1dGVRdWFkcyhxdWFkcywgd2FzRml4ZWQpOwogfQogCi12b2lkIFJlbmRlcklubGluZTo6
Y3VsbGVkSW5saW5lQWJzb2x1dGVRdWFkcyhjb25zdCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwg
VmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKQordm9pZCBSZW5kZXJJbmxpbmU6OmN1bGxlZElubGlu
ZUFic29sdXRlUXVhZHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxGbG9h
dFF1YWQ+JiBxdWFkcykgY29uc3QKIHsKICAgICBpZiAoIWN1bGxlZElubGluZUZpcnN0TGluZUJv
eCgpKSB7CiAgICAgICAgIHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVj
dCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKaW5kZXggYWZkNGFh
ZDQ0OGIwZTgxODE5MzI5ZWEwYWE2ODZlNWIwOWNlYjY2Ny4uZmU5NWFmMWZlMTg3NTQyNjViYTk3
OTA5ZjdlZGI2ZWIzZTczYWU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxp
bmUuaApAQCAtNDYsOCArNDYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1h
cmdpblN0YXJ0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkVuZCgpIGNv
bnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+
JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZv
aWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBh
YnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Owog
CiAgICAgdmlydHVhbCBMYXlvdXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0
KiwgY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdDsKIApAQCAtMTAyLDggKzEwMiw4IEBAIHByaXZh
dGU6CiAgICAgTGF5b3V0UmVjdCBjdWxsZWRJbmxpbmVWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94
KCkgY29uc3Q7CiAgICAgSW5saW5lQm94KiBjdWxsZWRJbmxpbmVGaXJzdExpbmVCb3goKSBjb25z
dDsKICAgICBJbmxpbmVCb3gqIGN1bGxlZElubGluZUxhc3RMaW5lQm94KCkgY29uc3Q7Ci0gICAg
dm9pZCBjdWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFp
bmVyLCBWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRTaXplJik7Ci0gICAgdm9pZCBj
dWxsZWRJbmxpbmVBYnNvbHV0ZVF1YWRzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBW
ZWN0b3I8RmxvYXRRdWFkPiYpOworICAgIHZvaWQgY3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyhj
b25zdCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3Qg
TGF5b3V0U2l6ZSYpIGNvbnN0OworICAgIHZvaWQgY3VsbGVkSW5saW5lQWJzb2x1dGVRdWFkcyhj
b25zdCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdG9yPEZsb2F0UXVhZD4mKSBjb25zdDsK
IAogICAgIHZvaWQgYWRkQ2hpbGRUb0NvbnRpbnVhdGlvbihSZW5kZXJPYmplY3QqIG5ld0NoaWxk
LCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRJ
Z25vcmluZ0NvbnRpbnVhdGlvbihSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3Qq
IGJlZm9yZUNoaWxkID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVM
aXN0LmNwcAppbmRleCA4OTdhYTg4ZWFmMWVhMmE0NmVkMTM2ZjUwZjdjNjI2MjM5MTM5ZTAxLi45
YmEzYjVlN2ExOTcyY2M4NGZjMzU0NjRkYzNmNWRjMjFkYTc1NGExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKQEAgLTMwMiw3ICszMDIsNyBAQCB2b2lk
IFJlbmRlck1lbnVMaXN0OjpzaG93UG9wdXAoKQogICAgIC8vIENvbXB1dGUgdGhlIHRvcCBsZWZ0
IHRha2luZyB0cmFuc2Zvcm1zIGludG8gYWNjb3VudCwgYnV0IHVzZQogICAgIC8vIHRoZSBhY3R1
YWwgd2lkdGggb2YgdGhlIGVsZW1lbnQgdG8gc2l6ZSB0aGUgcG9wdXAuCiAgICAgRmxvYXRQb2lu
dCBhYnNUb3BMZWZ0ID0gbG9jYWxUb0Fic29sdXRlKEZsb2F0UG9pbnQoKSwgZmFsc2UsIHRydWUp
OwotICAgIExheW91dFJlY3QgYWJzQm91bmRzID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsK
KyAgICBMYXlvdXRSZWN0IGFic0JvdW5kcyA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3Jp
bmdUcmFuc2Zvcm1zKCk7CiAgICAgYWJzQm91bmRzLnNldExvY2F0aW9uKHJvdW5kZWRJbnRQb2lu
dChhYnNUb3BMZWZ0KSk7CiAgICAgbV9wb3B1cC0+c2hvdyhhYnNCb3VuZHMsIGRvY3VtZW50KCkt
PnZpZXcoKSwKICAgICAgICAgc2VsZWN0LT5vcHRpb25Ub0xpc3RJbmRleChzZWxlY3QtPnNlbGVj
dGVkSW5kZXgoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApp
bmRleCAwYzY3NmQ0M2UyNzVkMmI0YmEyYWNjYjkxNGJmMjgxMzA2OWE3MzMyLi4zYWNlODQ2Njc3
ZWNlNTI3NWJmYzJkMTZjZTQ4YmQ1ZDY2MjEwMjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTE1OCw3ICsxMTU4LDcgQEAgdm9pZCBSZW5kZXJPYmpl
Y3Q6OnBhaW50T3V0bGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3Qg
TGF5b3V0UmUKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigp
OwogfQogCi1JbnRSZWN0IFJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoYm9v
bCB1c2VUcmFuc2Zvcm1zKQorSW50UmVjdCBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdC
b3hSZWN0KGJvb2wgdXNlVHJhbnNmb3JtcykgY29uc3QKIHsKICAgICBpZiAodXNlVHJhbnNmb3Jt
cykgewogICAgICAgICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFkczsKQEAgLTEyMDgsMTQgKzEyMDgs
MTQgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmFic29sdXRlRm9jdXNSaW5nUXVhZHMoVmVjdG9yPEZs
b2F0UXVhZD4mIHF1YWRzKQogdm9pZCBSZW5kZXJPYmplY3Q6OmFkZEFic29sdXRlUmVjdEZvckxh
eWVyKEludFJlY3QmIHJlc3VsdCkKIHsKICAgICBpZiAoaGFzTGF5ZXIoKSkKLSAgICAgICAgcmVz
dWx0LnVuaXRlKGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOworICAgICAgICByZXN1bHQudW5p
dGUoYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKSk7CiAgICAgZm9y
IChSZW5kZXJPYmplY3QqIGN1cnJlbnQgPSBmaXJzdENoaWxkKCk7IGN1cnJlbnQ7IGN1cnJlbnQg
PSBjdXJyZW50LT5uZXh0U2libGluZygpKQogICAgICAgICBjdXJyZW50LT5hZGRBYnNvbHV0ZVJl
Y3RGb3JMYXllcihyZXN1bHQpOwogfQogCiBMYXlvdXRSZWN0IFJlbmRlck9iamVjdDo6cGFpbnRp
bmdSb290UmVjdChMYXlvdXRSZWN0JiB0b3BMZXZlbFJlY3QpCiB7Ci0gICAgTGF5b3V0UmVjdCBy
ZXN1bHQgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIExheW91dFJlY3QgcmVzdWx0
ID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKICAgICB0b3BM
ZXZlbFJlY3QgPSByZXN1bHQ7CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGN1cnJlbnQgPSBmaXJz
dENoaWxkKCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0U2libGluZygpKQogICAg
ICAgICBjdXJyZW50LT5hZGRBYnNvbHV0ZVJlY3RGb3JMYXllcihyZXN1bHQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDM3N2VhNGM1YWEzYzhiMmY4ODAwYmRk
NDhiZTc1OWVmNmRhMGM4ODYuLmY4YWZlYWZlMDU3NDE1MGQxNGJiZGJlZWE0OTc3NmZmNDRhNTc4
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTYzMSwxMiAr
NjMxLDE0IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4gdGhlIG9mZnNldCBmcm9tIGFuIG9iamVj
dCB1cCB0aGUgY29udGFpbmVyKCkgY2hhaW4uIEFzc2VydHMgdGhhdCBub25lIG9mIHRoZSBpbnRl
cm1lZGlhdGUgb2JqZWN0cyBoYXZlIHRyYW5zZm9ybXMuCiAgICAgTGF5b3V0U2l6ZSBvZmZzZXRG
cm9tQW5jZXN0b3JDb250YWluZXIoUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAgCi0gICAgdmly
dHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0
UG9pbnQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0
UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0IHsgfQorCiAgICAgLy8gRklYTUU6IHVz
ZVRyYW5zZm9ybXMgc2hvdWxkIGdvIGF3YXkgZXZlbnR1YWxseQotICAgIEludFJlY3QgYWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm1zID0gZmFsc2UpOworICAgIEludFJl
Y3QgYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm0gPSB0cnVlKSBjb25z
dDsKKyAgICBJbnRSZWN0IGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1z
KCkgY29uc3QgeyByZXR1cm4gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpOyB9CiAKICAg
ICAvLyBCdWlsZCBhbiBhcnJheSBvZiBxdWFkcyBpbiBhYnNvbHV0ZSBjb29yZHMgZm9yIGxpbmUg
Ym94ZXMKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYs
IGJvb2wqIC8qd2FzRml4ZWQqLyA9IDApIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1
YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogLyp3YXNGaXhlZCovID0gMCkgY29uc3QgeyB9
CiAKICAgICB2b2lkIGFic29sdXRlRm9jdXNSaW5nUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGU4ODg2MWYzZDA0
YTA4Njg0NGQzYTcwZDIxNWE0NzRkZTY4OTI0YzkuLjZiNmRhMjQ0NGUxMmM3MzI2ZjE5NmQ2NGI4
ODEyNTg4Mjc0Zjk4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAK
QEAgLTMwMSw3ICszMDEsNyBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFJlbmRlclRleHQ6Om9y
aWdpbmFsVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIChlICYmIGUtPmlzVGV4dE5vZGUoKSkgPyBz
dGF0aWNfY2FzdDxUZXh0Kj4oZSktPmRhdGFJbXBsKCkgOiAwOwogfQogCi12b2lkIFJlbmRlclRl
eHQ6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0
UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KQordm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVJlY3Rz
KFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRl
ZE9mZnNldCkgY29uc3QKIHsKICAgICBmb3IgKElubGluZVRleHRCb3gqIGJveCA9IGZpcnN0VGV4
dEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkKICAgICAgICAgcmVjdHMuYXBw
ZW5kKGVuY2xvc2luZ0xheW91dFJlY3QoRmxvYXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0ICsgYm94
LT50b3BMZWZ0KCksIGJveC0+c2l6ZSgpKSkpOwpAQCAtMzg4LDcgKzM4OCw3IEBAIHN0YXRpYyBJ
bnRSZWN0IGVsbGlwc2lzUmVjdEZvckJveChJbmxpbmVUZXh0Qm94KiBib3gsIHVuc2lnbmVkIHN0
YXJ0UG9zLCB1bnNpZ25lCiAgICAgcmV0dXJuIEludFJlY3QoKTsKIH0KICAgICAKLXZvaWQgUmVu
ZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdh
c0ZpeGVkLCBDbGlwcGluZ09wdGlvbiBvcHRpb24pCit2b2lkIFJlbmRlclRleHQ6OmFic29sdXRl
UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCwgQ2xpcHBpbmdP
cHRpb24gb3B0aW9uKSBjb25zdAogewogICAgIGZvciAoSW5saW5lVGV4dEJveCogYm94ID0gZmly
c3RUZXh0Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7CiAgICAgICAgIElu
dFJlY3QgYm91bmRhcmllcyA9IGJveC0+Y2FsY3VsYXRlQm91bmRhcmllcygpOwpAQCAtNDA1LDcg
KzQwNSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFk
PiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkLCBDbGlwcGluCiAgICAgfQogfQogICAgIAotdm9pZCBS
ZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCog
d2FzRml4ZWQpCit2b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVh
ZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBhYnNvbHV0ZVF1YWRzKHF1
YWRzLCB3YXNGaXhlZCwgTm9DbGlwcGluZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuaAppbmRleCA0MDIwZDhhYTM3MTIyZDEyNWQxZGM0ZWYxMTA3MDlkMThmOTUxMzk4Li40
MmU5YWVjOTZiM2IzMmIyZDE5ZTNiYzUxOTVjMTNkNDcxY2EwOTM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmgKQEAgLTU0LDE0ICs1NCwxNCBAQCBwdWJsaWM6CiAgICAgSW5s
aW5lVGV4dEJveCogY3JlYXRlSW5saW5lVGV4dEJveCgpOwogICAgIHZvaWQgZGlydHlMaW5lQm94
ZXMoYm9vbCBmdWxsTGF5b3V0KTsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZl
Y3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7
CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29u
c3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKICAgICB2b2lkIGFic29s
dXRlUmVjdHNGb3JSYW5nZShWZWN0b3I8SW50UmVjdD4mLCB1bnNpZ25lZCBzdGFydE9mZnNldCA9
IDAsIHVuc2lnbmVkIGVuZE9mZnNldCA9IFVJTlRfTUFYLCBib29sIHVzZVNlbGVjdGlvbkhlaWdo
dCA9IGZhbHNlLCBib29sKiB3YXNGaXhlZCA9IDApOwogCi0gICAgdmlydHVhbCB2b2lkIGFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVh
bCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkg
Y29uc3Q7CiAgICAgdm9pZCBhYnNvbHV0ZVF1YWRzRm9yUmFuZ2UoVmVjdG9yPEZsb2F0UXVhZD4m
LCB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAsIHVuc2lnbmVkIGVuZE9mZnNldCA9IFVJTlRfTUFY
LCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCA9IGZhbHNlLCBib29sKiB3YXNGaXhlZCA9IDApOwog
CiAgICAgZW51bSBDbGlwcGluZ09wdGlvbiB7IE5vQ2xpcHBpbmcsIENsaXBUb0VsbGlwc2lzIH07
Ci0gICAgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4
ZWQgPSAwLCBDbGlwcGluZ09wdGlvbiA9IE5vQ2xpcHBpbmcpOworICAgIHZvaWQgYWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkID0gMCwgQ2xpcHBpbmdPcHRp
b24gPSBOb0NsaXBwaW5nKSBjb25zdDsKIAogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBv
c2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAppbmRl
eCAxNzA5N2IxZmJhYjM2MTgwODhlMGI0ODkzN2M2MDhlNWMyZDg0Y2ZhLi5mZjkwNzcwZjA5NTU3
ODkxMDc1ZGI5MWUyOWUxZGZlNzg3MDRhZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcApAQCAtMTc0LDcg
KzE3NCw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpzaG93UG9wdXAoKQog
ICAgICAgICBtX3NlYXJjaFBvcHVwLT5zYXZlUmVjZW50U2VhcmNoZXMobmFtZSwgbV9yZWNlbnRT
ZWFyY2hlcyk7CiAgICAgfQogCi0gICAgbV9zZWFyY2hQb3B1cC0+cG9wdXBNZW51KCktPnNob3co
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QodHJ1ZSksIGRvY3VtZW50KCktPnZpZXcoKSwgLTEpOwor
ICAgIG1fc2VhcmNoUG9wdXAtPnBvcHVwTWVudSgpLT5zaG93KGFic29sdXRlQm91bmRpbmdCb3hS
ZWN0KCksIGRvY3VtZW50KCktPnZpZXcoKSwgLTEpOwogfQogCiB2b2lkIFJlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZTo6aGlkZVBvcHVwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVTYWZhcmkuY3BwCmluZGV4IGRiYTg3NGQ0YWFjZWRhMTUxM2U2OWU2YWUwZDY1
MDZlYjQzMDg5OTUuLmQzNGQwNzQ4NDQ2M2E5ZjY1MjI2ZjVkMTJmYzE3MDg3NTc4MzMwYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcApAQCAt
MTA4MCw3ICsxMDgwLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVs
ZENhbmNlbEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW4KICAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gaW5wdXQtPnJlbmRlcmVyKCk7CiAgICAgQVNTRVJUKHJlbmRlcmVyKTsK
IAotICAgIEludFJlY3Qgc2VhcmNoUmVjdCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCgpOworICAgIEludFJlY3Qgc2VhcmNoUmVjdCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5k
aW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOwogCiAgICAgcGFpbnRUaGVtZVBhcnQoU2Fm
YXJpVGhlbWU6OlNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uUGFydCwgcGFpbnRJbmZvLmNvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpLCBzZWFyY2hSZWN0LCBjb250cm9sU2l6ZUZyb21SZWN0KHNlYXJj
aFJlY3QsIHNlYXJjaEZpZWxkU2l6ZXMoKSksIGRldGVybWluZVN0YXRlKG8pKTsKICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xMTM0LDcgKzExMzQsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpw
YWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdAog
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpbnB1dC0+cmVuZGVyZXIoKTsKICAgICBBU1NF
UlQocmVuZGVyZXIpOwogCi0gICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFic29s
dXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXIt
PmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAKICAgICBwYWlu
dFRoZW1lUGFydChTYWZhcmlUaGVtZTo6U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQs
IHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJv
bFNpemVGcm9tUmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVT
dGF0ZShvKSk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2Jq
ZWN0KiBvLCBjb25zdCBQYWkKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaW5wdXQtPnJl
bmRlcmVyKCk7CiAgICAgQVNTRVJUKHJlbmRlcmVyKTsKIAotICAgIEludFJlY3Qgc2VhcmNoUmVj
dCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIEludFJlY3Qgc2Vh
cmNoUmVjdCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNm
b3JtcygpOwogCiAgICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJjaEZpZWxkUmVz
dWx0c0J1dHRvblBhcnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgc2Vh
cmNoUmVjdCwgY29udHJvbFNpemVGcm9tUmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNpemVz
KCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDFmZWZhYzRmMDE5MmVhM2ViMDU0MTVjYjM0
MzRhZjViMDlmNmE3NDEuLmY0MjFmOTgxZGEyNjdkZDU3ZDU5OTRhYmMzZWMxYTc1NjVkMTgwNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTMyOSwxMiArMzI5
LDEyIEBAIHZvaWQgUmVuZGVyVmlldzo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBJCiAgICAgICAgIHJlY3QgPSBtX2xheWVyLT50
cmFuc2Zvcm0oKS0+bWFwUmVjdChyZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0
ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCkKK3ZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5
b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNv
bnN0CiB7CiAgICAgcmVjdHMuYXBwZW5kKExheW91dFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIG1f
bGF5ZXItPnNpemUoKSkpOwogfQogCi12b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkKK3ZvaWQgUmVuZGVyVmlldzo6
YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBj
b25zdAogewogICAgIGlmICh3YXNGaXhlZCkKICAgICAgICAgKndhc0ZpeGVkID0gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCBlNmQ3ZDhmNzU1ZjViNzdiYjdk
OTkwODcwZTVhNmFkYWFhNDlmZTY3Li45YTZmNjNkOTBmYmYyMWE2MDdhNWRkNTNkNjIyMGM4YWY0
MWFkZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTg2LDggKzg2
LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBwcmludGluZygpIGNvbnN0OwogCi0gICAgdmlydHVh
bCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJz
b2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11
bGF0ZWRPZmZzZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQogICAgIHZvaWQgc2V0TWF4aW1hbE91dGxpbmVTaXplKGludCBvKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAKaW5k
ZXggMmM4MTU5MDhlYmY2Yjk4OTA2NzU3ZDhiYzU0YmU2OTQ3YTcxNzllMy4uN2IxNmE0ZDViZmM5
Y2I3YmI2NWU2NWJiMTVhYmM4ZTJmNmViYWVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBSZW5k
ZXJTVkdCbG9jazo6dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCkKICAgICBzZXRIYXNPdmVy
Zmxvd0NsaXAoZmFsc2UpOwogfQogCi12b2lkIFJlbmRlclNWR0Jsb2NrOjphYnNvbHV0ZVJlY3Rz
KFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JikKK3ZvaWQgUmVuZGVyU1ZH
QmxvY2s6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9p
bnQmKSBjb25zdAogewogICAgIC8vIFRoaXMgY29kZSBwYXRoIHNob3VsZCBuZXZlciBiZSB0YWtl
biBmb3IgU1ZHLCBhcyB3ZSdyZSBhc3N1bWluZyB1c2VUcmFuc2Zvcm1zPXRydWUgZXZlcnl3aGVy
ZSwgYWJzb2x1dGVRdWFkcyBzaG91bGQgYmUgdXNlZC4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxv
Y2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaAppbmRl
eCAyMmMxZjE4ZTM2ZTAyMzEwYmU3ZTdkM2U0ZWM4MTIzYTI5YjVhNzE0Li41OGNmMjYyMGE5ODE4
ZDY0YWUyNzgzNGZlZDhkNDFiNzE2OTIwNDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCkBAIC0zOCw3ICszOCw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHNldFN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3Rv
cjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CiAgICAgdmlydHVhbCB2
b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBu
ZXdTdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0hpZGRlbkNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHAKaW5kZXggZDI5ZDg1ZWM5Mzk3MWRlZTE4ZGIxMmJk
OGU3ODA1ZjU4MTc3MmYxZS4uODk1YjI1NDQ5MDAxMjNmZGJmM2VhMDI1ODU0Y2I5Y2VkYmUwNGZk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRk
ZW5Db250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSGlkZGVuQ29udGFpbmVyLmNwcApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIFJlbmRlclNWR0hp
ZGRlbkNvbnRhaW5lcjo6cGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKQogICAg
IC8vIFRoaXMgc3VidHJlZSBkb2VzIG5vdCBwYWludC4KIH0KIAotdm9pZCBSZW5kZXJTVkdIaWRk
ZW5Db250YWluZXI6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKikKK3Zv
aWQgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiwgYm9vbCopIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBzdWJ0cmVlIGRvZXMgbm90IHRha2Ug
dXAgc3BhY2Ugb3IgcGFpbnQKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCmluZGV4IGVmZmY5MjE1MWQyYzM2MWE2
ZDBjOGQ5Nzc3YjMxZjYzNDQ2NGQxMGMuLmYyNmM1ZmM2MWEzN2Y4MjA3ZDRkNjQ5YmU2ODA5ZDUy
YTJmODgyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSGlkZGVuQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogICAg
IAogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCopIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQotICAg
IHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2Fz
Rml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdEZsb2F0
UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbik7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCmluZGV4IDA5NzcwZWZiZjAy
N2ZhYzllYmE3ZGJjN2M0ZWE0MzdmNmFhMDEwYjkuLjRjOTA1ODBmMTM1OWJmNjgxYzc3M2FkNWQ4
YmI4MTZjZWQ0MmE2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0lubGluZS5jcHAKQEAgLTgyLDkgKzgyLDkgQEAgdm9pZCBSZW5kZXJTVkdJbmxpbmU6
Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIKICAgICBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKHRoaXMsIHJlcGFp
bnRDb250YWluZXIsIHVzZVRyYW5zZm9ybXMsIGZpeGVkLCB0cmFuc2Zvcm1TdGF0ZSwgd2FzRml4
ZWQpOwogfQogCi12b2lkIFJlbmRlclNWR0lubGluZTo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJTVkdJbmxpbmU6OmFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29u
c3QKIHsKLSAgICBSZW5kZXJPYmplY3QqIG9iamVjdCA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJl
bmRlclNWR1RleHRBbmNlc3Rvcih0aGlzKTsKKyAgICBjb25zdCBSZW5kZXJPYmplY3QqIG9iamVj
dCA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3Rvcih0aGlzKTsKICAg
ICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAppbmRleCAwYTYwODM3ZjQ3NzU5NjkwMzdlODQ5
NzViY2YyMDA4MDY2YmI4MmY3Li5kMmZhMWNjNTI0MDI0YjYxYWE3ZDRhYTc3YTRlOGRkOGU1NjA4
NDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lu
bGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5l
LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlw
cGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lcikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wg
Zml4ZWQgPSBmYWxzZSkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWlu
ZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNm
b3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBib29sKiB3YXNGaXhlZCA9IDApIGNv
bnN0OwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+Jiwg
Ym9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxG
bG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZpcnR1
YWwgSW5saW5lRmxvd0JveCogY3JlYXRlSW5saW5lRmxvd0JveCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAppbmRleCAx
NGMxZGI4ZTBmOTNlYWY1NThhZWVjODkyYTg3MjMyM2NkMTBkNzIzLi5mYmU0OTNiNTRkY2RlYzFj
NTc2N2E0NzhhYTY2Mzg2YTU0MDM0YmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcApAQCAtNzAsMTMgKzcwLDEzIEBA
IExheW91dFJlY3QgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByCiAgICAgcmV0dXJuIGNvbnRhaW5lclJlbGF0aXZlUXVh
ZC5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwogfQogCi12b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0
OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JikK
K3ZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJl
Y3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdAogewogICAgIC8vIFRoaXMgY29kZSBwYXRo
IHNob3VsZCBuZXZlciBiZSB0YWtlbiBmb3IgU1ZHLCBhcyB3ZSdyZSBhc3N1bWluZyB1c2VUcmFu
c2Zvcm1zPXRydWUgZXZlcnl3aGVyZSwgYWJzb2x1dGVRdWFkcyBzaG91bGQgYmUgdXNlZC4KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6
YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQor
dm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFk
PiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIHF1YWRzLmFwcGVuZChsb2Nh
bFRvQWJzb2x1dGVRdWFkKHN0cm9rZUJvdW5kaW5nQm94KCksIGZhbHNlLCB3YXNGaXhlZCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2Rl
bE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9i
amVjdC5oCmluZGV4IGMyOGQzYzY2MDdkNTU0ZWEyMGMyYmE1YzVhZWVlZGNjMmRlNzNiNzkuLjcw
NDFkNDQ5ZWY2MzJjNGZjMzAwOTI2MGY5MmMwMDAzYjAxMGQ3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKQEAgLTU1LDgg
KzU1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29s
IGZpeGVkID0gZmFsc2UpIGNvbnN0OwogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5lQm91
bmRzRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5
b3V0UG9pbnQqKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3Rv
cjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3
YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJl
Y3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKKyAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0Zp
eGVkKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJv
b2wgZml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKICAg
ICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIG5ld1N0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1RleHQuY3BwCmluZGV4IGFmNDM5YjVkMzhmMDg0ZjAyYTkyMWIyYmFmYTBkOWIxYWJk
NDcwODEuLjJhN2Q4MGNmMmVmNTIxYTk0ZmJkOTc3MjIwYjFlNGVlMTI1ZDYwZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAtMjI1LDcg
KzIyNSw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJTVkdUZXh0Ojpwb3NpdGlvbkZvclBvaW50
KGNvbnN0IExheW91dFBvaW50JiBwb2ludEluQ29udGVuCiAgICAgcmV0dXJuIGNsb3Nlc3RCb3gt
PnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQoTGF5b3V0UG9pbnQocG9pbnRJbkNvbnRlbnRz
LngoKSwgY2xvc2VzdEJveC0+eSgpKSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHVGV4dDo6YWJzb2x1
dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBS
ZW5kZXJTVkdUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9v
bCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1
YWQoc3Ryb2tlQm91bmRpbmdCb3goKSwgZmFsc2UsIHdhc0ZpeGVkKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCmluZGV4IGIzZTBmNDNmOGY2NDlj
N2ZhNjdlMGI4NDIwMzY3YWYwZDZlOTJkM2UuLmEwYWRhNGNiNGVmZTk4MGNhYmUyN2E5ZmE1MDRi
YWEzOTAxODlkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VGV4dC5oCkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHJlcXVp
cmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBMYXlv
dXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RG
b3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRS
ZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAppbmRleCBkNjRkMGI3YzQ3NjhmMTNjZWJiMDhjYWVkMzgxMDRjMjhhYmRlYWQ2Li5k
N2E4MTU0MGZhMGVkY2QxYTlmYjM0MjU3MDk0ZGZmMDI1MmM1MDA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMDgsNyArMjA4LDcgQEAgUGFzc1JlZlB0cjxDbGllbnRS
ZWN0PiBJbnRlcm5hbHM6OmJvdW5kaW5nQm94KEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNv
ZGUmIGUKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKTsK
ICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKCk7
Ci0gICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZShyZW5kZXJlci0+YWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoKSk7CisgICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZShyZW5kZXJlci0+YWJz
b2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKSk7CiB9CiAKIHVuc2lnbmVk
IEludGVybmFsczo6bWFya2VyQ291bnRGb3JOb2RlKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKaW5kZXggNWYxMmUxMDE0MzlmNWZiZjBk
NmNkY2IxMDM0MTE3MDYxYjU5MjdmNC4uMDdmMmRmOTg3ZDJjZmY1NmRmYzhkODdkN2E1Y2FiYjVj
MTk2NmUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC0xNzUxLDcgKzE3NTEs
NyBAQCBRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGU6OlFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZShj
b25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0CiAgICAgaW1hZ2VVcmwgPSBoaXRUZXN0LmFic29s
dXRlSW1hZ2VVUkwoKTsKICAgICBpbm5lck5vZGUgPSBoaXRUZXN0LmlubmVyTm9kZSgpOwogICAg
IGlubmVyTm9uU2hhcmVkTm9kZSA9IGhpdFRlc3QuaW5uZXJOb25TaGFyZWROb2RlKCk7Ci0gICAg
Ym91bmRpbmdSZWN0ID0gaW5uZXJOb25TaGFyZWROb2RlID8gaW5uZXJOb25TaGFyZWROb2RlLT5y
ZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCh0cnVlKSA6IEludFJlY3QoKTsKKyAg
ICBib3VuZGluZ1JlY3QgPSBpbm5lck5vblNoYXJlZE5vZGUgPyBpbm5lck5vblNoYXJlZE5vZGUt
PnJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkgOiBJbnRSZWN0KCk7CiAgICAg
V2ViQ29yZTo6SW1hZ2UgKmltZyA9IGhpdFRlc3QuaW1hZ2UoKTsKICAgICBpZiAoaW1nKSB7CiAg
ICAgICAgIFFQaXhtYXAgKnBpeCA9IGltZy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKaW5kZXggZWFiZDgyYTA5YmU3ODc0MjAxYmYzYTY2ODAzNTUzNDM1ZGE5ZjNl
OS4uM2FjNDI5Y2M0ZTM1MmVmNDMxNWIzYTBmZmQ0NzU0OGFiYzMyMmE3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMC0wNCAgRmFkeSBTYW11ZWwgIDxmc2FtdWVsQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBDb2RlIGNsZWFuLXVwOiBNYWtlIFJlbmRlck9iamVjdDo6
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QgYW5kIGFzc29jaWF0ZWQgbWV0aG9kcyBjb25zdCBhbmQg
bWFrZSBpdHMgcGFyYW1ldGVyIHVzZVRyYW5zZm9ybXMgbm8gbG9uZ2VyIGRlZmF1bHQgdG8gZmFs
c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MDA5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBcGkv
cXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZTo6UVdlYkhp
dFRlc3RSZXN1bHRQcml2YXRlKToKKwogMjAxMS0xMC0wMyAgUGllcnJlIFJvc3NpICA8cGllcnJl
LnJvc3NpQGdtYWlsLmNvbT4KIAogICAgICAgICBbUXRdIEJ1aWxkIGZpeDogUXQ6OmVzY2FwZSBp
cyBkZXByZWNhdGVkIGluIFF0NQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDEwNDJjNDU3MWFiYTc0Y2I1ZTFhZWI3
ZTJjNTc4ZTA0NTMyY2U4YTcuLmE0ZWYxODc4NDdhZjAyYWI4NjBkYzc0YTMwYTQ4NWEwMTYzMTU5
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMC0wNCAgRmFkeSBTYW11ZWwg
IDxmc2FtdWVsQGNocm9taXVtLm9yZz4KKworICAgICAgICBDb2RlIGNsZWFuLXVwOiBNYWtlIFJl
bmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QgYW5kIGFzc29jaWF0ZWQgbWV0aG9k
cyBjb25zdCBhbmQgbWFrZSBpdHMgcGFyYW1ldGVyIHVzZVRyYW5zZm9ybXMgbm8gbG9uZ2VyIGRl
ZmF1bHQgdG8gZmFsc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY5MDA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3aW4vV2ViS2l0Mi5kZWY6CisgICAgICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVm
OgorCiAyMDExLTEwLTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXSBBZGQgZmFpbGluZyB1cmkgcGFyYW1ldGVyIHRvIHByb3Zpc2lv
bmFsLWxvYWQtZmFpbGVkIGFuZCBsb2FkLWZhaWxlZCBzaWduYWxzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5k
ZWYKaW5kZXggZmE1MThlMzQwMmExMTI1NDYxOTBiYmJkNTIxMmY2OTQ1OTRmZDEwMi4uYjdmMmFk
NDQ0NjQxNWQ1NzAwZTBkN2QyYThjYjEzOWY2NGJhMTMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRl
ZgpAQCAtMTQzLDcgKzE0Myw4IEBAIEVYUE9SVFMKICAgICAgICAgPz8wQ2xpZW50UmVjdEBXZWJD
b3JlQEBBQUVAWFoKICAgICAgICAgPz8wU3RyaW5nQFdURkBAUUFFQFBCREBaCiAgICAgICAgID8/
MFN0cmluZ0BXVEZAQFFBRUBQQl9XQFoKLSAgICAgICAgP2Fic29sdXRlQm91bmRpbmdCb3hSZWN0
QFJlbmRlck9iamVjdEBXZWJDb3JlQEBRQUU/QVZJbnRSZWN0QDJAX05AWgorICAgICAgICA/YWJz
b2x1dGVCb3VuZGluZ0JveFJlY3RAUmVuZGVyT2JqZWN0QFdlYkNvcmVAQFFCRT9BVkludFJlY3RA
MkBfTkBaCisgICAgICAgID9hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3Jt
c0BSZW5kZXJPYmplY3RAV2ViQ29yZUBAUUJFP0FWSW50UmVjdEAyQFhaCiAgICAgICAgID9hZGRA
QXRvbWljU3RyaW5nQFdURkBAQ0E/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBAMkBQ
QkRAWgogICAgICAgICA/YWRkU2xvd0Nhc2VAQXRvbWljU3RyaW5nQFdURkBAQ0E/QVY/JFBhc3NS
ZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBAMkBQQVZTdHJpbmdJbXBsQDJAQFoKICAgICAgICAgP2Nh
Y2hlRE9NU3RydWN0dXJlQFdlYkNvcmVAQFlBUEFWU3RydWN0dXJlQEpTQ0BAUEFWSlNET01HbG9i
YWxPYmplY3RAMUBQQVYyM0BQQlVDbGFzc0luZm9AM0BAWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJD
RkxpdGUuZGVmCmluZGV4IDg0ODJiNDk3MTZjNzFjYjJjMzJkN2MwZmJjOTUyZjI3ZjQxZjRkMWMu
Ljc3MzQ5OTVjN2RkODU1NTFiMmZkOGUxMzU2NGM0MTIxZjZhZTZlYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0MkNGTGl0ZS5kZWYKQEAgLTEzNSw3ICsxMzUsOCBAQCBFWFBPUlRTCiAgICAgICAg
ID8/MFN0cmluZ0BXVEZAQFFBRUBQQl9XQFoKICAgICAgICAgPz8xTm9kZVJlbmRlcmluZ0NvbnRl
eHRAV2ViQ29yZUBAUUFFQFhaCiAgICAgICAgID8/MVJhbmdlQFdlYkNvcmVAQFFBRUBYWgotICAg
ICAgICA/YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RAUmVuZGVyT2JqZWN0QFdlYkNvcmVAQFFBRT9B
VkludFJlY3RAMkBfTkBaCisgICAgICAgID9hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEBSZW5kZXJP
YmplY3RAV2ViQ29yZUBAUUJFP0FWSW50UmVjdEAyQF9OQFoKKyAgICAgICAgP2Fic29sdXRlQm91
bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zQFJlbmRlck9iamVjdEBXZWJDb3JlQEBRQkU/
QVZJbnRSZWN0QDJAWFoKICAgICAgICAgP2FkZEBBdG9taWNTdHJpbmdAV1RGQEBDQT9BVj8kUGFz
c1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAyQFBCREBaCiAgICAgICAgID9hZGRTbG93Q2FzZUBB
dG9taWNTdHJpbmdAV1RGQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAyQFBB
VlN0cmluZ0ltcGxAMkBAWgogICAgICAgICA/Y2FjaGVET01TdHJ1Y3R1cmVAV2ViQ29yZUBAWUFQ
QVZTdHJ1Y3R1cmVASlNDQEBQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBBVjIzQFBCVUNsYXNzSW5m
b0AzQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291
cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCA3ZDM5YzQ1YWMwOWU0YmJlMjMzNThi
ZDNiNjc1OWE0MTQwM2E5MTBjLi5mNjdkNWY4ZGQ1YThiYTNiMmI2NDI0NmQ1MThiODljZmZiZGM0
Y2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1Nv
dXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTQzLDcgKzQzLDcgQEAgX1pON1dlYkNv
cmUxMUV2ZW50VGFyZ2V0OHRvU3RyZWFtRXY7CiBfWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxMXNl
dERpc2FibGVkRWI7CiBfWk43V2ViQ29yZTExbWVtb3J5Q2FjaGVFdjsKIF9aTjdXZWJDb3JlMTJK
U0RPTVdyYXBwZXIzNHZpcnR1YWxGdW5jdGlvblRvUHJldmVudFdlYWtWdGFibGVFdjsKLV9aTjdX
ZWJDb3JlMTJSZW5kZXJPYmplY3QyM2Fic29sdXRlQm91bmRpbmdCb3hSZWN0RWI7CitfWk5LN1dl
YkNvcmUxMlJlbmRlck9iamVjdDIzYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RFYjsKIF9aTjdXZWJD
b3JlMTNjcmVhdGVXcmFwcGVyRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmpl
Y3RFUE5TXzROb2RlRTsKIF9aTjdXZWJDb3JlMTVzZXRET01FeGNlcHRpb25FUE4zSlNDOUV4ZWNT
dGF0ZUVpOwogX1pON1dlYkNvcmUxNkhUTUxJbnB1dEVsZW1lbnQxN3NldFN1Z2dlc3RlZFZhbHVl
RVJLTjNXVEY2U3RyaW5nRTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109976</attachid>
            <date>2011-10-06 10:50:02 -0700</date>
            <delta_ts>2011-10-06 13:48:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69009-20111006135000.patch</filename>
            <type>text/plain</type>
            <size>46414</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY4MjAKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCBmZmYxYTc2Y2E1NzEwMWNmNTFmZTUzMzdiZGY5YmM5YTI4ZjI5M2Y1Li43NmY4
YzY4ZGEzZDdkOTBlZDE2NTc1NzUzZjA2MjhhYWM0NjI4M2FkIDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMTAtMDYgIEZhZHkgU2Ft
dWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDogTWFr
ZSBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVkIG1l
dGhvZHMgY29uc3QgYW5kIG1ha2UgaXRzIHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxvbmdl
ciBkZWZhdWx0IHRvIGZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02OTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMS0xMC0w
NiAgTmF5YW4gS3VtYXIgSyAgPG5heWFua2tAbW90b3JvbGEuY29tPgogCiAgICAgICAgIFByb3Zp
ZGUgY29uZmlndXJlIG9wdGlvbiB0byBzd2l0Y2ggYmV0d2VlbiBKU0MgYW5kIFY4LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDcyMjY1ZjE5ZGY0OGI2MzY3MmRiNDI0NDUxYzE1NjFkOGZmMGRjNDIuLjU3NWY0NjQ3
YzI5NjM5N2FkNDBmMzZiN2FiNWY3NzQ0YjE3MWQ1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4
OCBAQAorMjAxMS0xMC0wNiAgRmFkeSBTYW11ZWwgIDxmc2FtdWVsQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBDb2RlIGNsZWFuLXVwOiBNYWtlIFJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QgYW5kIGFzc29jaWF0ZWQgbWV0aG9kcyBjb25zdCBhbmQgbWFrZSBpdHMgcGFyYW1l
dGVyIHVzZVRyYW5zZm9ybXMgbm8gbG9uZ2VyIGRlZmF1bHQgdG8gZmFsc2UKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MDA5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBjb21pbmcgcGF0Y2hlcyBtYXkg
bWFrZSB1c2Ugb2YgYWJzb2x1dGVCb3VuZGluZ0JveFJlY3Qgb24gYSBjb25zdCBSZW5kZXJPYmpl
Y3QsIHNvIHRoaXMgbmVlZGVkIHRvIGJlIGZpeGVkLgorICAgICAgICBNYWtpbmcgdXNlVHJhbnNm
b3JtcyBkZWZhdWx0IHRvIHRydWUgaW5zdGVhZCBvZiBmYWxzZSBhbmQgcmVwbGFjaW5nIGluc3Rh
bmNlcyBvZiBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpIHRvCisgICAgICAgIGFic29sdXRlQm91
bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkgcGFydGlhbGx5IGFkZHJlc2VzIC8vIEZJ
WE1FOiB1c2VUcmFuc2Zvcm1zIHNob3VsZCBnbyBhd2F5IGV2ZW50dWFsbHkuCisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpzY3JlZW5SZWN0KToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjpnZXRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OnJlbmRlclJlY3QpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6OnNldFBvc2l0aW9uRnJv
bVBvaW50KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OnN0
YXJ0U3BlZWNoSW5wdXQpOgorICAgICAgICAqIGluc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIu
Y3BwOgorICAgICAgICAqIHBsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0UGx1Z2luT2NjbHVzaW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphYnNvbHV0ZVJlY3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphYnNvbHV0ZVF1YWRzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YWJzb2x1dGVSZWN0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6
OnBhaW50T2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlcklGcmFtZTo6ZmxhdHRlbkZyYW1lKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGlu
ZTo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmN1bGxl
ZElubGluZUFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjph
YnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6Y3VsbGVkSW5s
aW5lQWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJNZW51TGlzdDo6c2hvd1BvcHVwKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphZGRBYnNvbHV0
ZVJlY3RGb3JMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnBhaW50aW5n
Um9vdFJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1z
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVRdWFkcyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGV4dDo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjphYnNv
bHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpzaG93UG9wdXApOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNlYXJjaEZp
ZWxkUmVzdWx0c0J1dHRvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJWaWV3OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVmlldy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQmxvY2s6OmFic29sdXRlUmVjdHMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5s
aW5lOjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lu
bGluZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmFic29sdXRlUmVjdHMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmFic29sdXRlUXVhZHMp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHVGV4dDo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0Lmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpib3VuZGluZ0JveCk6CisKIDIwMTEtMTAtMDYgIEdhdmlu
IFBldGVycyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgc2F2ZSByZXNvdXJjZSB6
ZXJvaW5nIHN0YWNrcyBpbiBTY3JpcHRFbGVtZW50IGZvciBkZWJ1Z2dpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KaW5kZXggYTdkZDMwMWU2NjJiNmE0OTAxN2JmZjkyNmQ3OWQ5NWI0Njk2YjUyNy4uZDA5
OGU2ZGM4MjA1NmFiZDE2YzJmMDY5NDkxMDY4YjgwYjMxNjUwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KQEAgLTI4MSw3ICsyODEsNiBAQCBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDlzcG9vbFJl
Y3RFUk5TXzE1R3JhcGhpY3NDb250ZXh0RVJLTlNfN0ludFJlY3RFCiBfX1pON1dlYkNvcmUxMlBy
aW50Q29udGV4dEMxRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dEQxRXYK
IF9fWk43V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTZyZXBhaW50UmVjdGFuZ2xlRVJLTlNfN0ludFJl
Y3RFYgotX19aTjdXZWJDb3JlMTJSZW5kZXJPYmplY3QyM2Fic29sdXRlQm91bmRpbmdCb3hSZWN0
RWIKIF9fWk43V2ViQ29yZTEyUmVuZGVyV2lkZ2V0MjhyZXN1bWVXaWRnZXRIaWVyYXJjaHlVcGRh
dGVzRXYKIF9fWk43V2ViQ29yZTEyUmVuZGVyV2lkZ2V0MjlzdXNwZW5kV2lkZ2V0SGllcmFyY2h5
VXBkYXRlc0V2CiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjEwd3JhcE5TRGF0YUVQNk5TRGF0
YQpAQCAtMTEzOCw2ICsxMTM3LDcgQEAgX19aTks3V2ViQ29yZTExU2NyaXB0VmFsdWU5Z2V0U3Ry
aW5nRVBOM0pTQzlFeGVjU3RhdGVFUk4zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUxMkljb25E
YXRhYmFzZTEyZGF0YWJhc2VQYXRoRXYKIF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTI0c2hv
dWxkU3RvcFRocmVhZEFjdGl2aXR5RXYKIF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTlpc0Vu
YWJsZWRFdgorX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MjNhYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdEViCiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNGVuY2xvc2luZ0xheWVyRXYKIF9f
Wk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDE1bG9jYWxUb0Fic29sdXRlRVJLTlNfMTBGbG9hdFBv
aW50RWJiCiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3Q0dmlld0V2CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKaW5kZXggYjE2NjIzYmFhYzkzMTAxYjEzYzIzNGQ0MzM0NTY3YmUyZTY3ZTYwZS4uZTgw
MzNlMzUyZDM3YWYzYjdiMDBjMjI3ZWU3MzJjYjRkMGJkZjQyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcApAQCAtNTczLDcgKzU3Myw4IEBAIExheW91dFJlY3QgRWxlbWVudDo6c2NyZWVuUmVjdCgp
IGNvbnN0CiB7CiAgICAgaWYgKCFyZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVj
dCgpOwotICAgIHJldHVybiByZW5kZXJlcigpLT52aWV3KCktPmZyYW1lVmlldygpLT5jb250ZW50
c1RvU2NyZWVuKHJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOworICAgIC8v
IEZJWE1FOiB0aGlzIHNob3VsZCBwcm9iYWJseSByZXNwZWN0IHRyYW5zZm9ybXMKKyAgICByZXR1
cm4gcmVuZGVyZXIoKS0+dmlldygpLT5mcmFtZVZpZXcoKS0+Y29udGVudHNUb1NjcmVlbihyZW5k
ZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpKTsKIH0K
IAogc3RhdGljIGlubGluZSBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UoY29uc3QgRWxl
bWVudCogZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA4OTU5ZjBiNmY3NjBlZmFiYmFjNzgxOWZjZWZi
NzM1Mjc2YTQzMjliLi40NzEyOTkwMjFjMjYxYWU2ODgwMjJiMWFkNzJlYWVlYzcxYWJiNjFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCkBAIC04MTgsNyArODE4LDcgQEAgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IE5vZGU6OnJlbmRlckJveE1vZGVsT2JqZWN0KCkgY29uc3QKIExheW91dFJlY3QgTm9kZTo6Z2V0
UmVjdCgpIGNvbnN0CiB7CiAgICAgaWYgKHJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiByZW5k
ZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCh0cnVlKTsKKyAgICAgICAgcmV0dXJuIHJl
bmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CiAgICAgcmV0dXJuIExheW91dFJl
Y3QoKTsKIH0KICAgICAKQEAgLTgzMCw3ICs4MzAsNyBAQCBMYXlvdXRSZWN0IE5vZGU6OnJlbmRl
clJlY3QoYm9vbCogaXNSZXBsYWNlZCkKICAgICB3aGlsZSAocmVuZGVyZXIgJiYgIXJlbmRlcmVy
LT5pc0JvZHkoKSAmJiAhcmVuZGVyZXItPmlzUm9vdCgpKSB7CiAgICAgICAgIGlmIChyZW5kZXJl
ci0+aXNSZW5kZXJCbG9jaygpIHx8IHJlbmRlcmVyLT5pc0lubGluZUJsb2NrT3JJbmxpbmVUYWJs
ZSgpIHx8IHJlbmRlcmVyLT5pc1JlcGxhY2VkKCkpIHsKICAgICAgICAgICAgICppc1JlcGxhY2Vk
ID0gcmVuZGVyZXItPmlzUmVwbGFjZWQoKTsKLSAgICAgICAgICAgIHJldHVybiByZW5kZXJlci0+
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QodHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gcmVuZGVy
ZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CiAgICAgICAgIH0KICAgICAgICAgcmVuZGVy
ZXIgPSByZW5kZXJlci0+cGFyZW50KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKaW5kZXggNWQxNzhhZjA3OWFiNGNmYmQ5
ZDBmNzIwNDNmYWYzZDg3YzQ4YmNiOC4uOTI2YjM5M2QzZGQxNzA1ZjVmZTMxYjc2ZmYzODA4NWE4
MzhkMjg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1
bWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVt
YkVsZW1lbnQuY3BwCkBAIC0yMTYsNyArMjE2LDggQEAgdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6
OnNldFBvc2l0aW9uRnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKICAgICAvLyBX
ZSBuZWVkIHRvIGNhbGN1bGF0ZSBjdXJyZW50UG9zaXRpb24gZnJvbSBhYnNvbHV0ZSBwb2ludHMg
YmVjYXVlIHRoZQogICAgIC8vIHJlbmRlcmVyIGZvciB0aGlzIG5vZGUgaXMgdXN1YWxseSBvbiBh
IGxheWVyIGFuZCByZW5kZXJCb3goKS0+eCgpIGFuZAogICAgIC8vIHkoKSBhcmUgdW51c2FibGUu
Ci0gICAgTGF5b3V0UG9pbnQgYWJzb2x1dGVUaHVtYk9yaWdpbiA9IHJlbmRlckJveCgpLT5hYnNv
bHV0ZUJvdW5kaW5nQm94UmVjdCgpLmxvY2F0aW9uKCk7CisgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIHByb2JhYmx5IHJlc3BlY3QgdHJhbnNmb3Jtcy4KKyAgICBMYXlvdXRQb2ludCBhYnNvbHV0
ZVRodW1iT3JpZ2luID0gcmVuZGVyQm94KCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3Jp
bmdUcmFuc2Zvcm1zKCkubG9jYXRpb24oKTsKICAgICBMYXlvdXRQb2ludCBhYnNvbHV0ZVNsaWRl
ckNvbnRlbnRPcmlnaW4gPSByb3VuZGVkTGF5b3V0UG9pbnQoaW5wdXQtPnJlbmRlcmVyKCktPmxv
Y2FsVG9BYnNvbHV0ZSgpKTsKICAgICBpZiAoaXNWZXJ0aWNhbCkgewogICAgICAgICB0cmFja1Np
emUgPSBpbnB1dC0+cmVuZGVyQm94KCktPmNvbnRlbnRIZWlnaHQoKSAtIHJlbmRlckJveCgpLT5o
ZWlnaHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IGJmMTg1Y2Y3YjBmMDk2YjkzYzg4ODMyMDZiYTMz
NzRkMDQ5MzQ1ZDUuLjQ3NjIxODEzNWJhZDcwYjg1MzBlM2ZkNzdhMDk4MGQ0Mzk2NWU1MmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnRzLmNwcApAQCAtNTM1LDcgKzUzNSw4IEBAIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1
dHRvbkVsZW1lbnQ6OnN0YXJ0U3BlZWNoSW5wdXQoKQogICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVt
ZW50PiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihzaGFkb3dBbmNlc3Rv
ck5vZGUoKSk7CiAgICAgQXRvbWljU3RyaW5nIGxhbmd1YWdlID0gaW5wdXQtPmNvbXB1dGVJbmhl
cml0ZWRMYW5ndWFnZSgpOwogICAgIFN0cmluZyBncmFtbWFyID0gaW5wdXQtPmdldEF0dHJpYnV0
ZSh3ZWJraXRncmFtbWFyQXR0cik7Ci0gICAgSW50UmVjdCByZWN0ID0gcmVuZGVyZXIoKS0+YWJz
b2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgcHJvYmFi
bHkgcmVzcGVjdCB0cmFuc2Zvcm1zCisgICAgSW50UmVjdCByZWN0ID0gcmVuZGVyZXIoKS0+YWJz
b2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKICAgICBpZiAoc3BlZWNo
SW5wdXQoKS0+c3RhcnRSZWNvZ25pdGlvbihtX2xpc3RlbmVySWQsIHJlY3QsIGxhbmd1YWdlLCBn
cmFtbWFyLCBkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKICAgICAgICAgc2V0U3RhdGUo
UmVjb3JkaW5nKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01O
b2RlSGlnaGxpZ2h0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdo
bGlnaHRlci5jcHAKaW5kZXggZTY4OWI1MjUwYjZhODY4ZWE1YTU1MGQ2ZGFhYmEyOTQ1YTc4ZjY5
ZC4uZjhiZmI2MGY5YWRlZDIwYjJlMTA2ODBhMDhjOTY0Mjg0ZGE4NGY1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAKQEAgLTM2MSw3ICsz
NjEsNyBAQCB2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
SGlnaGxpZ2h0RGF0YSogaGlnaGxpZ2h0RGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5
b3V0U2l6ZSBtYWluRnJhbWVPZmZzZXQgPSBmcmFtZVRvTWFpbkZyYW1lT2Zmc2V0KGNvbnRhaW5p
bmdGcmFtZSk7Ci0gICAgTGF5b3V0UmVjdCBib3VuZGluZ0JveCA9IHJlbmRlcmVyLT5hYnNvbHV0
ZUJvdW5kaW5nQm94UmVjdCh0cnVlKTsKKyAgICBMYXlvdXRSZWN0IGJvdW5kaW5nQm94ID0gcmVu
ZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CiAKICAgICBib3VuZGluZ0JveC5tb3Zl
KG1haW5GcmFtZU9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
SUZyYW1lU2hpbVN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9JRnJhbWVTaGlt
U3VwcG9ydC5jcHAKaW5kZXggYzBhYTFlNDEzNmM0OTQyZjI5YWY4ODRmMzIxNjg4NWM3YWM1NWI3
OS4uODI2NTc2NTExMGFlNTQ2OGQwMzA1ZjNlZmIwNDZkMjVhZGQ3ZmVmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9JRnJhbWVTaGltU3VwcG9ydC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9JRnJhbWVTaGltU3VwcG9ydC5jcHAKQEAgLTE1Miw3ICsxNTIsNyBA
QCB2b2lkIGdldFBsdWdpbk9jY2x1c2lvbnMoRWxlbWVudCogZWxlbWVudCwgV2lkZ2V0KiBwYXJl
bnRXaWRnZXQsIGNvbnN0IEludFJlY3QmCiAgICAgICAgIFJlbmRlck9iamVjdCogaWZyYW1lUmVu
ZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOwogCiAgICAgICAgIGlmIChlbGVtZW50LT5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6aWZyYW1lVGFnKQotICAgICAgICAgICAgJiYgaWZyYW1lUmVuZGVy
ZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkuaW50ZXJzZWN0cyhmcmFtZVJlY3QpCisgICAg
ICAgICAgICAmJiBpZnJhbWVSZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmlu
Z1RyYW5zZm9ybXMoKS5pbnRlcnNlY3RzKGZyYW1lUmVjdCkKICAgICAgICAgICAgICYmICghaWZy
YW1lUmVuZGVyZXItPnN0eWxlKCkgfHwgaWZyYW1lUmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxp
dHkoKSA9PSBWSVNJQkxFKSkgewogICAgICAgICAgICAgZ2V0T2JqZWN0U3RhY2soaWZyYW1lUmVu
ZGVyZXIsICZpZnJhbWVac3RhY2spOwogICAgICAgICAgICAgaWYgKGlmcmFtZUlzQWJvdmVQbHVn
aW4oaWZyYW1lWnN0YWNrLCBwbHVnaW5ac3RhY2spKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAppbmRleCA2YWY5NGI3NTg4ZDM5Nzc5YTliNzcyOGU0ZWQ1ZWMzYWZm
YWM4MjRkLi5iNzllZWFlZjI3ZmY3YTFkYWEwNzgyMWRkNzE1OTdmMGNkYTM5YzgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTU4NjUsNyArNTg2NSw3IEBA
IHZvaWQgUmVuZGVyQmxvY2s6OnNldFBhZ2VMb2dpY2FsT2Zmc2V0KGludCBsb2dpY2FsT2Zmc2V0
KQogICAgIG1fcmFyZURhdGEtPm1fcGFnZUxvZ2ljYWxPZmZzZXQgPSBsb2dpY2FsT2Zmc2V0Owog
fQogCi12b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYg
cmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkKK3ZvaWQgUmVuZGVy
QmxvY2s6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewogICAgIC8vIEZvciBibG9ja3Mg
aW5zaWRlIGlubGluZXMsIHdlIGdvIGFoZWFkIGFuZCBpbmNsdWRlIG1hcmdpbnMgc28gdGhhdCB3
ZSBydW4gcmlnaHQgdXAgdG8gdGhlCiAgICAgLy8gaW5saW5lIGJveGVzIGFib3ZlIGFuZCBiZWxv
dyB1cyAodGh1cyBnZXR0aW5nIG1lcmdlZCB3aXRoIHRoZW0gdG8gZm9ybSBhIHNpbmdsZSBpcnJl
Z3VsYXIKQEAgLTU4ODEsNyArNTg4MSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUmVj
dHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjCiAgICAg
ICAgIHJlY3RzLmFwcGVuZChMYXlvdXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBzaXplKCkpKTsK
IH0KIAotdm9pZCBSZW5kZXJCbG9jazo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYg
cXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJCbG9jazo6YWJzb2x1dGVRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIC8v
IEZvciBibG9ja3MgaW5zaWRlIGlubGluZXMsIHdlIGdvIGFoZWFkIGFuZCBpbmNsdWRlIG1hcmdp
bnMgc28gdGhhdCB3ZSBydW4gcmlnaHQgdXAgdG8gdGhlCiAgICAgLy8gaW5saW5lIGJveGVzIGFi
b3ZlIGFuZCBiZWxvdyB1cyAodGh1cyBnZXR0aW5nIG1lcmdlZCB3aXRoIHRoZW0gdG8gZm9ybSBh
IHNpbmdsZSBpcnJlZ3VsYXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5k
ZXggZjczMzA5YWQwNmRiZThiODI5MGMwN2U4ZjQ3Mjc3N2E1MjM1MGQ1NC4uYzk1NmQyYWEzOTli
M2ViNDRjYzYxOWNhMDQ0YmQ2MmU1YTkzNGU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmgKQEAgLTc0MSw4ICs3NDEsOCBAQCBwcml2YXRlOgogICAgIExheW91dFVuaXQg
bG9naWNhbExlZnRTZWxlY3Rpb25PZmZzZXQoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgTGF5b3V0
VW5pdCBwb3NpdGlvbik7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRTZWxlY3Rpb25PZmZz
ZXQoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgTGF5b3V0VW5pdCBwb3NpdGlvbik7CiAgICAgCi0g
ICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3Qg
TGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1
dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFs
IHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2lu
dCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1
YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiAgICAgTGF5
b3V0VW5pdCBkZXNpcmVkQ29sdW1uV2lkdGgoKSBjb25zdDsKICAgICB1bnNpZ25lZCBkZXNpcmVk
Q29sdW1uQ291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAK
aW5kZXggNWMzNmU1ZTVhMmU5MTg2N2I1YzQ3NTRhNjAwODExMzFjNDkzMDNhNC4uOTA4NGQ1NzZk
MTE3YzE2NDNlYjVmNDZlYTQ2NjliZjYxNzZjNjdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAKQEAgLTUxNiwxMiArNTE2LDEyIEBAIHZvaWQgUmVuZGVyQm94OjpzZXRT
Y3JvbGxUb3AoTGF5b3V0VW5pdCBuZXdUb3ApCiAgICAgICAgIGxheWVyKCktPnNjcm9sbFRvWU9m
ZnNldChuZXdUb3AsIFJlbmRlckxheWVyOjpTY3JvbGxPZmZzZXRDbGFtcGVkKTsKIH0KIAotdm9p
ZCBSZW5kZXJCb3g6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3Qg
TGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KQordm9pZCBSZW5kZXJCb3g6OmFic29sdXRl
UmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0KSBjb25zdAogewogICAgIHJlY3RzLmFwcGVuZChMYXlvdXRSZWN0KGFjY3VtdWxh
dGVkT2Zmc2V0LCBzaXplKCkpKTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OmFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkKK3ZvaWQgUmVuZGVyQm94
OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQp
IGNvbnN0CiB7CiAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0
KDAsIDAsIHdpZHRoKCksIGhlaWdodCgpKSwgZmFsc2UsIHdhc0ZpeGVkKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggMjhjNzY4Yjk0ZmExMGIwMDZmYTg0OTNkYzI3
ZTVmOTU5NDgxMzdkMy4uOTRjYzRlYzc5ZWY5N2UxZWM2MTY0YjhhNGI4YjY1MTA3NWU2ZTA4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMjM0LDggKzIzNCw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFVuaXQgY29sbGFwc2VkTWFyZ2luQmVmb3JlKCkgY29u
c3QgeyByZXR1cm4gbWFyZ2luQmVmb3JlKCk7IH0KICAgICB2aXJ0dWFsIExheW91dFVuaXQgY29s
bGFwc2VkTWFyZ2luQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBtYXJnaW5BZnRlcigpOyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlv
dXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1
YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAgICAgCiAgICAgSW50UmVj
dCByZWZsZWN0aW9uQm94KCkgY29uc3Q7CiAgICAgaW50IHJlZmxlY3Rpb25PZmZzZXQoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2Fk
Q29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENv
bnRyb2wuY3BwCmluZGV4IGY5NDQ5MWYzMWM1YThlNWZkMjAyMjQ1MDE5NTRlNGI0NmVmMDg0NjYu
Ljg1Yjk0ZDZjNzA5MzZlODcxMmIzOTgyY2UzMDA4YzlkM2Y4MzVmMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcApAQCAt
MTMyLDcgKzEzMiw4IEBAIHZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnBhaW50T2JqZWN0
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2luCiAgICAgICAgICAgICB0ZXh0
WCA9IGNvbnRlbnRMZWZ0ICsgY29udGVudFdpZHRoKCkgLSBidXR0b25BbmRJY29uV2lkdGggLSBm
b250LndpZHRoKHRleHRSdW4pOwogICAgICAgICAvLyBXZSB3YW50IHRvIG1hdGNoIHRoZSBidXR0
b24ncyBiYXNlbGluZQogICAgICAgICBSZW5kZXJCdXR0b24qIGJ1dHRvblJlbmRlcmVyID0gdG9S
ZW5kZXJCdXR0b24oYnV0dG9uLT5yZW5kZXJlcigpKTsKLSAgICAgICAgTGF5b3V0VW5pdCB0ZXh0
WSA9IGJ1dHRvblJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpLnkoKQorICAgICAg
ICAvLyBGSVhNRTogTWFrZSB0aGlzIHdvcmsgd2l0aCB0cmFuc2Zvcm1zLgorICAgICAgICBMYXlv
dXRVbml0IHRleHRZID0gYnV0dG9uUmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdu
b3JpbmdUcmFuc2Zvcm1zKCkueSgpCiAgICAgICAgICAgICArIGJ1dHRvblJlbmRlcmVyLT5iYXNl
bGluZVBvc2l0aW9uKEFscGhhYmV0aWNCYXNlbGluZSwgdHJ1ZSwgSG9yaXpvbnRhbExpbmUsIFBv
c2l0aW9uT25Db250YWluaW5nTGluZSk7CiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNl
dEZpbGxDb2xvcihzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xv
ciksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJRnJhbWUuY3BwCmluZGV4IDExMjk3YjVkYjdhOWY3YTJkMDllNDY1OTQzYzQ4N2UxODZmMTVh
ZDAuLmNlMGY0M2JkMDMwNDE1MWE0MDgzYjBhMDIwYTllMmVkOTYxYjEzZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgYm9v
bCBSZW5kZXJJRnJhbWU6OmZsYXR0ZW5GcmFtZSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIC8vIERvIG5vdCBmbGF0dGVuIG9mZnNjcmVlbiBpbm5lciBmcmFtZXMgZHVyaW5nIGZyYW1l
IGZsYXR0ZW5pbmcsIGFzIGZsYXR0ZW5pbmcgbWlnaHQgbWFrZSB0aGVtIHZpc2libGUuCi0gICAg
SW50UmVjdCBib3VuZGluZ1JlY3QgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIElu
dFJlY3QgYm91bmRpbmdSZWN0ID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5z
Zm9ybXMoKTsKICAgICByZXR1cm4gYm91bmRpbmdSZWN0Lm1heFgoKSA+IDAgJiYgYm91bmRpbmdS
ZWN0Lm1heFkoKSA+IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGlu
ZS5jcHAKaW5kZXggNmNhOWQzZmIxZTkyZDAyY2JjOTBiYTRkYzMzYmExOWJkODRiMjgwNC4uM2Yw
OTYzM2IwMDhkOTU2ZmExZjdlMjE4MmUzMGM0ZGQyMDVhYzNhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTQ2Niw3ICs0NjYsNyBAQCB2b2lkIFJlbmRl
cklubGluZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCkKICAgICBtX2xpbmVCb3hlcy5wYWludCh0aGlzLCBwYWludEluZm8sIHBhaW50
T2Zmc2V0KTsKIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMoVmVjdG9yPExh
eW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KQor
dm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0
cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewogICAgIGlm
ICghYWx3YXlzQ3JlYXRlTGluZUJveGVzKCkpCiAgICAgICAgIGN1bGxlZElubGluZUFic29sdXRl
UmVjdHModGhpcywgcmVjdHMsIHRvTGF5b3V0U2l6ZShhY2N1bXVsYXRlZE9mZnNldCkpOwpAQCAt
NDg1LDcgKzQ4NSw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxM
YXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhCiAgICAgfQogfQogCi12b2lk
IFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25zdCBSZW5kZXJJbmxp
bmUqIGNvbnRhaW5lciwgVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0U2l6
ZSYgb2Zmc2V0KQordm9pZCBSZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRlUmVjdHMo
Y29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMs
IGNvbnN0IExheW91dFNpemUmIG9mZnNldCkgY29uc3QKIHsKICAgICBpZiAoIWN1bGxlZElubGlu
ZUZpcnN0TGluZUJveCgpKSB7CiAgICAgICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0KG9mZnNldC53
aWR0aCgpLCBvZmZzZXQuaGVpZ2h0KCksIDAsIDApKTsKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lk
IFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25zdCBSZW5kZXJJbmxp
bmUqIGNvbnRhaW5lciwgVmVjdAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6OmFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkKK3ZvaWQg
UmVuZGVySW5saW5lOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9v
bCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKCFhbHdheXNDcmVhdGVMaW5lQm94ZXMoKSkK
ICAgICAgICAgY3VsbGVkSW5saW5lQWJzb2x1dGVRdWFkcyh0aGlzLCBxdWFkcyk7CkBAIC01Njks
NyArNTY5LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0
UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkKICAgICAgICAgY29udGludWF0aW9uKCktPmFi
c29sdXRlUXVhZHMocXVhZHMsIHdhc0ZpeGVkKTsKIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6OmN1
bGxlZElubGluZUFic29sdXRlUXVhZHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZl
Y3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykKK3ZvaWQgUmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVB
YnNvbHV0ZVF1YWRzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8RmxvYXRR
dWFkPiYgcXVhZHMpIGNvbnN0CiB7CiAgICAgaWYgKCFjdWxsZWRJbmxpbmVGaXJzdExpbmVCb3go
KSkgewogICAgICAgICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3Qo
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmluZGV4IGFmZDRhYWQ0
NDhiMGU4MTgxOTMyOWVhMGFhNjg2ZTViMDljZWI2NjcuLmZlOTVhZjFmZTE4NzU0MjY1YmE5Nzkw
OWY3ZWRiNmViM2U3M2FlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmgKQEAgLTQ2LDggKzQ2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJn
aW5TdGFydCgpIGNvbnN0OwogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5FbmQoKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYs
IGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7Ci0gICAgdmlydHVhbCB2b2lk
IGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAg
dmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJz
b2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCos
IGNvbnN0IExheW91dFBvaW50JikgY29uc3Q7CiAKQEAgLTEwMiw4ICsxMDIsOCBAQCBwcml2YXRl
OgogICAgIExheW91dFJlY3QgY3VsbGVkSW5saW5lVmlzdWFsT3ZlcmZsb3dCb3VuZGluZ0JveCgp
IGNvbnN0OwogICAgIElubGluZUJveCogY3VsbGVkSW5saW5lRmlyc3RMaW5lQm94KCkgY29uc3Q7
CiAgICAgSW5saW5lQm94KiBjdWxsZWRJbmxpbmVMYXN0TGluZUJveCgpIGNvbnN0OwotICAgIHZv
aWQgY3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25zdCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5l
ciwgVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0U2l6ZSYpOwotICAgIHZvaWQgY3Vs
bGVkSW5saW5lQWJzb2x1dGVRdWFkcyhjb25zdCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVj
dG9yPEZsb2F0UXVhZD4mKTsKKyAgICB2b2lkIGN1bGxlZElubGluZUFic29sdXRlUmVjdHMoY29u
c3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExh
eW91dFNpemUmKSBjb25zdDsKKyAgICB2b2lkIGN1bGxlZElubGluZUFic29sdXRlUXVhZHMoY29u
c3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxGbG9hdFF1YWQ+JikgY29uc3Q7CiAK
ICAgICB2b2lkIGFkZENoaWxkVG9Db250aW51YXRpb24oUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwg
UmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkSWdu
b3JpbmdDb250aW51YXRpb24oUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBi
ZWZvcmVDaGlsZCA9IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlz
dC5jcHAKaW5kZXggODk3YWE4OGVhZjFlYTJhNDZlZDEzNmY1MGY3YzYyNjIzOTEzOWUwMS4uOWJh
M2I1ZTdhMTk3MmNjODRmYzM1NDY0ZGMzZjVkYzIxZGE3NTRhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC0zMDIsNyArMzAyLDcgQEAgdm9pZCBS
ZW5kZXJNZW51TGlzdDo6c2hvd1BvcHVwKCkKICAgICAvLyBDb21wdXRlIHRoZSB0b3AgbGVmdCB0
YWtpbmcgdHJhbnNmb3JtcyBpbnRvIGFjY291bnQsIGJ1dCB1c2UKICAgICAvLyB0aGUgYWN0dWFs
IHdpZHRoIG9mIHRoZSBlbGVtZW50IHRvIHNpemUgdGhlIHBvcHVwLgogICAgIEZsb2F0UG9pbnQg
YWJzVG9wTGVmdCA9IGxvY2FsVG9BYnNvbHV0ZShGbG9hdFBvaW50KCksIGZhbHNlLCB0cnVlKTsK
LSAgICBMYXlvdXRSZWN0IGFic0JvdW5kcyA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7Cisg
ICAgTGF5b3V0UmVjdCBhYnNCb3VuZHMgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5n
VHJhbnNmb3JtcygpOwogICAgIGFic0JvdW5kcy5zZXRMb2NhdGlvbihyb3VuZGVkSW50UG9pbnQo
YWJzVG9wTGVmdCkpOwogICAgIG1fcG9wdXAtPnNob3coYWJzQm91bmRzLCBkb2N1bWVudCgpLT52
aWV3KCksCiAgICAgICAgIHNlbGVjdC0+b3B0aW9uVG9MaXN0SW5kZXgoc2VsZWN0LT5zZWxlY3Rl
ZEluZGV4KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5k
ZXggNzMwYmUxZGNkMWUzNDYxMWJjZGYyM2U2NzFkN2EzZDNmYzAyMzAwYi4uOTRjODk4ZDgzMDU4
ODdmMjlkNjkzMWVmODYwNDYzNzQ0NmJhMjEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKQEAgLTExNjUsNyArMTE2NSw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0
OjpwYWludE91dGxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IExh
eW91dFJlCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsK
IH0KIAotSW50UmVjdCBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0KGJvb2wg
dXNlVHJhbnNmb3JtcykKK0ludFJlY3QgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdChib29sIHVzZVRyYW5zZm9ybXMpIGNvbnN0CiB7CiAgICAgaWYgKHVzZVRyYW5zZm9ybXMp
IHsKICAgICAgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7CkBAIC0xMjE1LDE0ICsxMjE1LDE0
IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUZvY3VzUmluZ1F1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+JiBxdWFkcykKIHZvaWQgUmVuZGVyT2JqZWN0OjphZGRBYnNvbHV0ZVJlY3RGb3JMYXll
cihJbnRSZWN0JiByZXN1bHQpCiB7CiAgICAgaWYgKGhhc0xheWVyKCkpCi0gICAgICAgIHJlc3Vs
dC51bml0ZShhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKKyAgICAgICAgcmVzdWx0LnVuaXRl
KGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkpOwogICAgIGZvciAo
UmVuZGVyT2JqZWN0KiBjdXJyZW50ID0gZmlyc3RDaGlsZCgpOyBjdXJyZW50OyBjdXJyZW50ID0g
Y3VycmVudC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgY3VycmVudC0+YWRkQWJzb2x1dGVSZWN0
Rm9yTGF5ZXIocmVzdWx0KTsKIH0KIAogTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OnBhaW50aW5n
Um9vdFJlY3QoTGF5b3V0UmVjdCYgdG9wTGV2ZWxSZWN0KQogewotICAgIExheW91dFJlY3QgcmVz
dWx0ID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBMYXlvdXRSZWN0IHJlc3VsdCA9
IGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAgICAgdG9wTGV2
ZWxSZWN0ID0gcmVzdWx0OwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJyZW50ID0gZmlyc3RD
aGlsZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKSkKICAgICAg
ICAgY3VycmVudC0+YWRkQWJzb2x1dGVSZWN0Rm9yTGF5ZXIocmVzdWx0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCA2ZGQ0YmFjZjcyODM1NDA4M2Q5M2MyZDUw
YjRhYzJjMTg1NTE2YmUxLi4wZjYwNzk0MzE5YTA3YjhkZDI4Zjc2OGEzYzYyNzgwZDc1YmRkZjQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC02MzgsMTIgKzYz
OCwxNCBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJvbSBhbiBvYmplY3Qg
dXAgdGhlIGNvbnRhaW5lcigpIGNoYWluLiBBc3NlcnRzIHRoYXQgbm9uZSBvZiB0aGUgaW50ZXJt
ZWRpYXRlIG9iamVjdHMgaGF2ZSB0cmFuc2Zvcm1zLgogICAgIExheW91dFNpemUgb2Zmc2V0RnJv
bUFuY2VzdG9yQ29udGFpbmVyKFJlbmRlck9iamVjdCopIGNvbnN0OwogICAgIAotICAgIHZpcnR1
YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBv
aW50JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJl
Y3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdCB7IH0KKwogICAgIC8vIEZJWE1FOiB1c2VU
cmFuc2Zvcm1zIHNob3VsZCBnbyBhd2F5IGV2ZW50dWFsbHkKLSAgICBJbnRSZWN0IGFic29sdXRl
Qm91bmRpbmdCb3hSZWN0KGJvb2wgdXNlVHJhbnNmb3JtcyA9IGZhbHNlKTsKKyAgICBJbnRSZWN0
IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KGJvb2wgdXNlVHJhbnNmb3JtID0gdHJ1ZSkgY29uc3Q7
CisgICAgSW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3Jtcygp
IGNvbnN0IHsgcmV0dXJuIGFic29sdXRlQm91bmRpbmdCb3hSZWN0KGZhbHNlKTsgfQogCiAgICAg
Ly8gQnVpbGQgYW4gYXJyYXkgb2YgcXVhZHMgaW4gYWJzb2x1dGUgY29vcmRzIGZvciBsaW5lIGJv
eGVzCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBi
b29sKiAvKndhc0ZpeGVkKi8gPSAwKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIC8qd2FzRml4ZWQqLyA9IDApIGNvbnN0IHsgfQog
CiAgICAgdm9pZCBhYnNvbHV0ZUZvY3VzUmluZ1F1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+Jik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCBlODg4NjFmM2QwNGEw
ODY4NDRkM2E3MGQyMTVhNDc0ZGU2ODkyNGM5Li42YjZkYTI0NDRlMTJjNzMyNmYxOTZkNjRiODgx
MjU4ODI3NGY5OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBA
IC0zMDEsNyArMzAxLDcgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBSZW5kZXJUZXh0Ojpvcmln
aW5hbFRleHQoKSBjb25zdAogICAgIHJldHVybiAoZSAmJiBlLT5pc1RleHROb2RlKCkpID8gc3Rh
dGljX2Nhc3Q8VGV4dCo+KGUpLT5kYXRhSW1wbCgpIDogMDsKIH0KIAotdm9pZCBSZW5kZXJUZXh0
OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCkKK3ZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVSZWN0cyhW
ZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQpIGNvbnN0CiB7CiAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3ggPSBmaXJzdFRleHRC
b3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpCiAgICAgICAgIHJlY3RzLmFwcGVu
ZChlbmNsb3NpbmdMYXlvdXRSZWN0KEZsb2F0UmVjdChhY2N1bXVsYXRlZE9mZnNldCArIGJveC0+
dG9wTGVmdCgpLCBib3gtPnNpemUoKSkpKTsKQEAgLTM4OCw3ICszODgsNyBAQCBzdGF0aWMgSW50
UmVjdCBlbGxpcHNpc1JlY3RGb3JCb3goSW5saW5lVGV4dEJveCogYm94LCB1bnNpZ25lZCBzdGFy
dFBvcywgdW5zaWduZQogICAgIHJldHVybiBJbnRSZWN0KCk7CiB9CiAgICAgCi12b2lkIFJlbmRl
clRleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNG
aXhlZCwgQ2xpcHBpbmdPcHRpb24gb3B0aW9uKQordm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVF1
YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQsIENsaXBwaW5nT3B0
aW9uIG9wdGlvbikgY29uc3QKIHsKICAgICBmb3IgKElubGluZVRleHRCb3gqIGJveCA9IGZpcnN0
VGV4dEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgewogICAgICAgICBJbnRS
ZWN0IGJvdW5kYXJpZXMgPSBib3gtPmNhbGN1bGF0ZUJvdW5kYXJpZXMoKTsKQEAgLTQwNSw3ICs0
MDUsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4m
IHF1YWRzLCBib29sKiB3YXNGaXhlZCwgQ2xpcHBpbgogICAgIH0KIH0KICAgICAKLXZvaWQgUmVu
ZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdh
c0ZpeGVkKQordm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgYWJzb2x1dGVRdWFkcyhxdWFk
cywgd2FzRml4ZWQsIE5vQ2xpcHBpbmcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmgKaW5kZXggNDAyMGQ4YWEzNzEyMmQxMjVkMWRjNGVmMTEwNzA5ZDE4Zjk1MTM5OC4uNDJl
OWFlYzk2YjNiMzJiMmQxOWUzYmM1MTk1YzEzZDQ3MWNhMDkzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5oCkBAIC01NCwxNCArNTQsMTQgQEAgcHVibGljOgogICAgIElubGlu
ZVRleHRCb3gqIGNyZWF0ZUlubGluZVRleHRCb3goKTsKICAgICB2b2lkIGRpcnR5TGluZUJveGVz
KGJvb2wgZnVsbExheW91dCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0
b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwor
ICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0
IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CiAgICAgdm9pZCBhYnNvbHV0
ZVJlY3RzRm9yUmFuZ2UoVmVjdG9yPEludFJlY3Q+JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAw
LCB1bnNpZ25lZCBlbmRPZmZzZXQgPSBVSU5UX01BWCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQg
PSBmYWxzZSwgYm9vbCogd2FzRml4ZWQgPSAwKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0
ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwg
dm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNv
bnN0OwogICAgIHZvaWQgYWJzb2x1dGVRdWFkc0ZvclJhbmdlKFZlY3RvcjxGbG9hdFF1YWQ+Jiwg
dW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQgPSBVSU5UX01BWCwg
Ym9vbCB1c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSwgYm9vbCogd2FzRml4ZWQgPSAwKTsKIAog
ICAgIGVudW0gQ2xpcHBpbmdPcHRpb24geyBOb0NsaXBwaW5nLCBDbGlwVG9FbGxpcHNpcyB9Owot
ICAgIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVk
ID0gMCwgQ2xpcHBpbmdPcHRpb24gPSBOb0NsaXBwaW5nKTsKKyAgICB2b2lkIGFic29sdXRlUXVh
ZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCA9IDAsIENsaXBwaW5nT3B0aW9u
ID0gTm9DbGlwcGluZykgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3Np
dGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKaW5kZXgg
MTcwOTdiMWZiYWIzNjE4MDg4ZTBiNDg5MzdjNjA4ZTVjMmQ4NGNmYS4uZmY5MDc3MGYwOTU1Nzg5
MTA3NWRiOTFlMjllMWRmZTc4NzA0YWZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKQEAgLTE3NCw3ICsx
NzQsNyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6c2hvd1BvcHVwKCkKICAg
ICAgICAgbV9zZWFyY2hQb3B1cC0+c2F2ZVJlY2VudFNlYXJjaGVzKG5hbWUsIG1fcmVjZW50U2Vh
cmNoZXMpOwogICAgIH0KIAotICAgIG1fc2VhcmNoUG9wdXAtPnBvcHVwTWVudSgpLT5zaG93KGFi
c29sdXRlQm91bmRpbmdCb3hSZWN0KHRydWUpLCBkb2N1bWVudCgpLT52aWV3KCksIC0xKTsKKyAg
ICBtX3NlYXJjaFBvcHVwLT5wb3B1cE1lbnUoKS0+c2hvdyhhYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dCgpLCBkb2N1bWVudCgpLT52aWV3KCksIC0xKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmU6OmhpZGVQb3B1cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lU2FmYXJpLmNwcAppbmRleCBkMjcwMjFjOWQxOWExM2Y5NTlhZDIyZjdkYTFiODI5
NzljMGMzYWRjLi45OTlmMmY3M2Q1MzFhMmU0ODc5NGI1NTc2MzUzZTA4NjQ0YWM3ODlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKQEAgLTEw
ODAsNyArMTA4MCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRD
YW5jZWxCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWluCiAgICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IGlucHV0LT5yZW5kZXJlcigpOwogICAgIEFTU0VSVChyZW5kZXJlcik7CiAK
LSAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3QoKTsKKyAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKIAogICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFy
aVRoZW1lOjpTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblBhcnQsIHBhaW50SW5mby5jb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNpemVGcm9tUmVjdChzZWFyY2hS
ZWN0LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTEzNCw3ICsxMTM0LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFp
bnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJlbmRlck9iamVjdCogbywgY29uc3QKICAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaW5wdXQtPnJlbmRlcmVyKCk7CiAgICAgQVNTRVJU
KHJlbmRlcmVyKTsKIAotICAgIEludFJlY3Qgc2VhcmNoUmVjdCA9IHJlbmRlcmVyLT5hYnNvbHV0
ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIEludFJlY3Qgc2VhcmNoUmVjdCA9IHJlbmRlcmVyLT5h
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOwogCiAgICAgcGFpbnRU
aGVtZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0LCBw
YWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHNlYXJjaFJlY3QsIGNvbnRyb2xT
aXplRnJvbVJlY3Qoc2VhcmNoUmVjdCwgc2VhcmNoRmllbGRTaXplcygpKSwgZGV0ZXJtaW5lU3Rh
dGUobykpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTExNTcsNyArMTE1Nyw3IEBAIGJvb2wgUmVu
ZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKFJlbmRlck9iamVj
dCogbywgY29uc3QgUGFpCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGlucHV0LT5yZW5k
ZXJlcigpOwogICAgIEFTU0VSVChyZW5kZXJlcik7CiAKLSAgICBJbnRSZWN0IHNlYXJjaFJlY3Qg
PSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBJbnRSZWN0IHNlYXJj
aFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9y
bXMoKTsKIAogICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZFJlc3Vs
dHNCdXR0b25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHNlYXJj
aFJlY3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qoc2VhcmNoUmVjdCwgc2VhcmNoRmllbGRTaXplcygp
KSwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCAxZmVmYWM0ZjAxOTJlYTNlYjA1NDE1Y2IzNDM0
YWY1YjA5ZjZhNzQxLi5mNDIxZjk4MWRhMjY3ZGQ1N2Q1OTk0YWJjM2VjMWE3NTY1ZDE4MDU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0zMjksMTIgKzMyOSwx
MiBAQCB2b2lkIFJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgSQogICAgICAgICByZWN0ID0gbV9sYXllci0+dHJh
bnNmb3JtKCktPm1hcFJlY3QocmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVS
ZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11
bGF0ZWRPZmZzZXQpCit2b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91
dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25z
dAogewogICAgIHJlY3RzLmFwcGVuZChMYXlvdXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBtX2xh
eWVyLT5zaXplKCkpKTsKIH0KIAotdm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFJlbmRlclZpZXc6OmFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29u
c3QKIHsKICAgICBpZiAod2FzRml4ZWQpCiAgICAgICAgICp3YXNGaXhlZCA9IGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggYmJkZDQ1NDJhMmJlMDgyOWFmN2Q4
MTkyMTBjYjcyNTY2NjRlODUzOC4uOWQ0ZTllNDMwN2IwZjlkMGZkMTVmMGM1MTNmNDE2YzUxMTg0
MTY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBAIC04Niw4ICs4Niw4
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcHJpbnRpbmcoKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
dm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50
JiBhY2N1bXVsYXRlZE9mZnNldCk7Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29s
dXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKICAgICB2b2lkIHNldE1heGltYWxPdXRsaW5lU2l6ZShpbnQgbyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwCmluZGV4
IDJjODE1OTA4ZWJmNmI5ODkwNjc1N2Q4YmM1NGJlNjk0N2E3MTc5ZTMuLjdiMTZhNGQ1YmZjOWNi
N2JiNjVlNjViYjE1YWJjOGUyZjZlYmFlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgUmVuZGVy
U1ZHQmxvY2s6OnVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpCiAgICAgc2V0SGFzT3ZlcmZs
b3dDbGlwKGZhbHNlKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdCbG9jazo6YWJzb2x1dGVSZWN0cyhW
ZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpCit2b2lkIFJlbmRlclNWR0Js
b2NrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50
JikgY29uc3QKIHsKICAgICAvLyBUaGlzIGNvZGUgcGF0aCBzaG91bGQgbmV2ZXIgYmUgdGFrZW4g
Zm9yIFNWRywgYXMgd2UncmUgYXNzdW1pbmcgdXNlVHJhbnNmb3Jtcz10cnVlIGV2ZXJ5d2hlcmUs
IGFic29sdXRlUXVhZHMgc2hvdWxkIGJlIHVzZWQuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2Nr
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgKaW5kZXgg
MjJjMWYxOGUzNmUwMjMxMGJlN2U3ZDNlNGVjODEyM2EyOWI1YTcxNC4uNThjZjI2MjBhOTgxOGQ2
NGFlMjc4MzRmZWQ4ZDQxYjcxNjkyMDQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQmxvY2suaApAQCAtMzgsNyArMzgsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpOwogCi0gICAgdmlydHVhbCB2b2lk
IGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8
TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0
OwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3
U3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdIaWRkZW5Db250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdIaWRkZW5Db250YWluZXIuY3BwCmluZGV4IGQyOWQ4NWVjOTM5NzFkZWUxOGRiMTJiZDhl
NzgwNWY1ODE3NzJmMWUuLjg5NWIyNTQ0OTAwMTIzZmRiZjNlYTAyNTg1NGNiOWNlZGJlMDRmZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVu
Q29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0hpZGRlbkNvbnRhaW5lci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBSZW5kZXJTVkdIaWRk
ZW5Db250YWluZXI6OnBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikKICAgICAv
LyBUaGlzIHN1YnRyZWUgZG9lcyBub3QgcGFpbnQuCiB9CiAKLXZvaWQgUmVuZGVyU1ZHSGlkZGVu
Q29udGFpbmVyOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCopCit2b2lk
IFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcjo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFk
PiYsIGJvb2wqKSBjb25zdAogewogICAgIC8vIFRoaXMgc3VidHJlZSBkb2VzIG5vdCB0YWtlIHVw
IHNwYWNlIG9yIHBhaW50CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaAppbmRleCBlZmZmOTIxNTFkMmMzNjFhNmQw
YzhkOTc3N2IzMWY2MzQ0NjRkMTBjLi5mMjZjNWZjNjFhMzdmODIwN2Q0ZDY0OWJlNjgwOWQ1MmEy
Zjg4MjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0hpZGRlbkNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICAK
ICAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0Zp
eGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYs
IGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRGbG9hdFBv
aW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24pOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAppbmRleCBmNGEyOWUyODRkNGYz
YmE1NzliYjNkOGJjNTc4ZjYwNzE1OGJjZGI2Li5jMjIyNDRmYzZlMTBlOWJmZTBhYTEzZDcwNGRm
N2UyODc2MzEyN2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0lubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbmxpbmUuY3BwCkBAIC04Miw5ICs4Miw5IEBAIHZvaWQgUmVuZGVyU1ZHSW5saW5lOjpt
YXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcih0aGlzLCByZXBhaW50
Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgd2FzRml4ZWQpOwogfQogCi12b2lkIFJlbmRlclNW
R0lubGluZTo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdh
c0ZpeGVkKQordm9pZCBSZW5kZXJTVkdJbmxpbmU6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0
UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKLSAgICBSZW5kZXJPYmplY3Qq
IG9iamVjdCA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3Rvcih0aGlz
KTsKKyAgICBjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCA9IFJlbmRlclNWR1RleHQ6OmxvY2F0
ZVJlbmRlclNWR1RleHRBbmNlc3Rvcih0aGlzKTsKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxp
bmUuaAppbmRleCAwYTYwODM3ZjQ3NzU5NjkwMzdlODQ5NzViY2YyMDA4MDY2YmI4MmY3Li5kMmZh
MWNjNTI0MDI0YjYxYWE3ZDRhYTc3YTRlOGRkOGU1NjA4NDQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3JtcywgYm9vbCBmaXhlZCwgVHJhbnNm
b3JtU3RhdGUmLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBh
YnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZp
cnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4
ZWQpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgSW5saW5lRmxvd0JveCogY3JlYXRl
SW5saW5lRmxvd0JveCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAppbmRleCBjMmUzZmRmZjgwNWQ3Nzg4ZDVlZmU3Y2Ri
YmZjMTVhN2ZlM2M2NmU5Li43MDg2ZDRjZTkxZTY2NDVjMWUxYzcwZDgzYmM0ZjQ5YzgyZmNjYWI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01v
ZGVsT2JqZWN0LmNwcApAQCAtNzAsMTQgKzcwLDE0IEBAIExheW91dFJlY3QgUmVuZGVyU1ZHTW9k
ZWxPYmplY3Q6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
CiAgICAgcmV0dXJuIGNvbnRhaW5lclJlbGF0aXZlUXVhZC5lbmNsb3NpbmdCb3VuZGluZ0JveCgp
OwogfQogCi12b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxM
YXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkK
K3ZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJl
Y3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAog
ewogICAgIExheW91dFJlY3QgcmVjdCA9IGVuY2xvc2luZ0xheW91dFJlY3Qoc3Ryb2tlQm91bmRp
bmdCb3goKSk7CiAgICAgcmVjdC5tb3ZlQnkoYWNjdW11bGF0ZWRPZmZzZXQpOwogICAgIHJlY3Rz
LmFwcGVuZChyZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5k
ZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMs
IGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1
dGVRdWFkKHN0cm9rZUJvdW5kaW5nQm94KCksIGZhbHNlLCB3YXNGaXhlZCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCmlu
ZGV4IGMyOGQzYzY2MDdkNTU0ZWEyMGMyYmE1YzVhZWVlZGNjMmRlNzNiNzkuLjcwNDFkNDQ5ZWY2
MzJjNGZjMzAwOTI2MGY5MmMwMDAzYjAxMGQ3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKQEAgLTU1LDggKzU1LDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0g
ZmFsc2UpIGNvbnN0OwogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9yUmVw
YWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UG9pbnQq
KSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRS
ZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7Ci0gICAgdmlydHVh
bCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7
CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29u
c3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQs
IFRyYW5zZm9ybVN0YXRlJiwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKICAgICB2aXJ0dWFs
IHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUq
IG5ld1N0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Rl
eHQuY3BwCmluZGV4IDU3YjRmNTc0ZWEwMDIwNWQzMzRhMDA2N2Q4ZmY2NmUzNTQ1NWVjMjguLjE0
NTNjYjE2YTYwMmEwMjhmYWI4MzRhNTU2YzI4ZjVmMTQwN2IxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAtMjI1LDcgKzIyNSw3IEBA
IFZpc2libGVQb3NpdGlvbiBSZW5kZXJTVkdUZXh0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExh
eW91dFBvaW50JiBwb2ludEluQ29udGVuCiAgICAgcmV0dXJuIGNsb3Nlc3RCb3gtPnJlbmRlcmVy
KCktPnBvc2l0aW9uRm9yUG9pbnQoTGF5b3V0UG9pbnQocG9pbnRJbkNvbnRlbnRzLngoKSwgY2xv
c2VzdEJveC0+eSgpKSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHVGV4dDo6YWJzb2x1dGVRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJTVkdU
ZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4
ZWQpIGNvbnN0CiB7CiAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1YWQoc3Ryb2tl
Qm91bmRpbmdCb3goKSwgZmFsc2UsIHdhc0ZpeGVkKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCmluZGV4IGIzZTBmNDNmOGY2NDljN2ZhNjdlMGI4
NDIwMzY3YWYwZDZlOTJkM2UuLmEwYWRhNGNiNGVmZTk4MGNhYmUyN2E5ZmE1MDRiYWEzOTAxODlk
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCkBA
IC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCog
d2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9v
bCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCBkZjhhYzJlYWJkMjEyNDUxYzBjNzQ3ZTBlNmU0ZjM3M2RjNmIxMWMzLi5jOTA3YWU4MjI1
MDgwODIyMTYwNDI1OTgzNmZkZDhmYWQ3MDRiNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgUGFzc1JlZlB0cjxDbGllbnRSZWN0PiBJbnRl
cm5hbHM6OmJvdW5kaW5nQm94KEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGUKICAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKICAgICBpZiAo
IXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKCk7Ci0gICAgcmV0
dXJuIENsaWVudFJlY3Q6OmNyZWF0ZShyZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3Qo
KSk7CisgICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZShyZW5kZXJlci0+YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKSk7CiB9CiAKIHVuc2lnbmVkIEludGVybmFs
czo6bWFya2VyQ291bnRGb3JOb2RlKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1NvdXJjZS9XZWJL
aXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKaW5kZXggNWYxMmUxMDE0MzlmNWZiZjBkNmNkY2IxMDM0
MTE3MDYxYjU5MjdmNC4uMDdmMmRmOTg3ZDJjZmY1NmRmYzhkODdkN2E1Y2FiYjVjMTk2NmUxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC0xNzUxLDcgKzE3NTEsNyBAQCBRV2Vi
SGl0VGVzdFJlc3VsdFByaXZhdGU6OlFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZShjb25zdCBXZWJD
b3JlOjpIaXRUZXN0UmVzdWx0CiAgICAgaW1hZ2VVcmwgPSBoaXRUZXN0LmFic29sdXRlSW1hZ2VV
UkwoKTsKICAgICBpbm5lck5vZGUgPSBoaXRUZXN0LmlubmVyTm9kZSgpOwogICAgIGlubmVyTm9u
U2hhcmVkTm9kZSA9IGhpdFRlc3QuaW5uZXJOb25TaGFyZWROb2RlKCk7Ci0gICAgYm91bmRpbmdS
ZWN0ID0gaW5uZXJOb25TaGFyZWROb2RlID8gaW5uZXJOb25TaGFyZWROb2RlLT5yZW5kZXJlcigp
LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCh0cnVlKSA6IEludFJlY3QoKTsKKyAgICBib3VuZGlu
Z1JlY3QgPSBpbm5lck5vblNoYXJlZE5vZGUgPyBpbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlcmVy
KCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkgOiBJbnRSZWN0KCk7CiAgICAgV2ViQ29yZTo6
SW1hZ2UgKmltZyA9IGhpdFRlc3QuaW1hZ2UoKTsKICAgICBpZiAoaW1nKSB7CiAgICAgICAgIFFQ
aXhtYXAgKnBpeCA9IGltZy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cKaW5kZXggZWFiZDgyYTA5YmU3ODc0MjAxYmYzYTY2ODAzNTUzNDM1ZGE5ZjNlOS4uYjM5OGJk
YzJiNjk5YmMxZmRiZWQyMjBjMWQzNTQxYjYxMDJjMzIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMS0xMC0wNiAgRmFkeSBTYW11ZWwgIDxmc2FtdWVsQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBDb2RlIGNsZWFuLXVwOiBNYWtlIFJlbmRlck9iamVjdDo6YWJzb2x1dGVC
b3VuZGluZ0JveFJlY3QgYW5kIGFzc29jaWF0ZWQgbWV0aG9kcyBjb25zdCBhbmQgbWFrZSBpdHMg
cGFyYW1ldGVyIHVzZVRyYW5zZm9ybXMgbm8gbG9uZ2VyIGRlZmF1bHQgdG8gZmFsc2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MDA5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1l
LmNwcDoKKyAgICAgICAgKFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZTo6UVdlYkhpdFRlc3RSZXN1
bHRQcml2YXRlKToKKwogMjAxMS0xMC0wMyAgUGllcnJlIFJvc3NpICA8cGllcnJlLnJvc3NpQGdt
YWlsLmNvbT4KIAogICAgICAgICBbUXRdIEJ1aWxkIGZpeDogUXQ6OmVzY2FwZSBpcyBkZXByZWNh
dGVkIGluIFF0NQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGIyNjEzMWNhNWFiNDBmOTM2MmQyZWFhYTdkMTM1NTMx
YmNjYjE3OGYuLjE5YTJlNTU4NmE5YTQ2YjQzMGQ0NTQ5ZWI5ZjkxM2I3YjRlMTM2NzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMC0wNiAgRmFkeSBTYW11ZWwgIDxmc2FtdWVs
QGNocm9taXVtLm9yZz4KKworICAgICAgICBDb2RlIGNsZWFuLXVwOiBNYWtlIFJlbmRlck9iamVj
dDo6YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QgYW5kIGFzc29jaWF0ZWQgbWV0aG9kcyBjb25zdCBh
bmQgbWFrZSBpdHMgcGFyYW1ldGVyIHVzZVRyYW5zZm9ybXMgbm8gbG9uZ2VyIGRlZmF1bHQgdG8g
ZmFsc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5
MDA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3
aW4vV2ViS2l0Mi5kZWY6CisgICAgICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVmOgorCiAyMDEx
LTEwLTA2ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgogCiAg
ICAgICAgIFtRdF1bV0syXSBDdXJzb3Igc2hvdWxkIGNoYW5nZSB3aGVuIGhvdmVyaW5nIGxpbmtz
IG9yIGlucHV0IGZpZWxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
LmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCBlODIyOTFmNzhiY2Ex
MTQ4MjczYjc5ZWMxN2E2NGM4ODhmYmM5MTIyLi41YWI1NGU5NWNlNThkMDBmMjNjNTlkYjM3ZDE1
ODRmYjhhNzNiYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYK
KysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCkBAIC0xNDMsNyArMTQzLDggQEAg
RVhQT1JUUwogICAgICAgICA/PzBDbGllbnRSZWN0QFdlYkNvcmVAQEFBRUBYWgogICAgICAgICA/
PzBTdHJpbmdAV1RGQEBRQUVAUEJEQFoKICAgICAgICAgPz8wU3RyaW5nQFdURkBAUUFFQFBCX1dA
WgotICAgICAgICA/YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RAUmVuZGVyT2JqZWN0QFdlYkNvcmVA
QFFBRT9BVkludFJlY3RAMkBfTkBaCisgICAgICAgID9hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEBS
ZW5kZXJPYmplY3RAV2ViQ29yZUBAUUJFP0FWSW50UmVjdEAyQF9OQFoKKyAgICAgICAgP2Fic29s
dXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zQFJlbmRlck9iamVjdEBXZWJDb3Jl
QEBRQkU/QVZJbnRSZWN0QDJAWFoKICAgICAgICAgP2FkZEBBdG9taWNTdHJpbmdAV1RGQEBDQT9B
Vj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAyQFBCREBaCiAgICAgICAgID9hZGRTbG93
Q2FzZUBBdG9taWNTdHJpbmdAV1RGQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZA
QEAyQFBBVlN0cmluZ0ltcGxAMkBAWgogICAgICAgICA/Y2FjaGVET01TdHJ1Y3R1cmVAV2ViQ29y
ZUBAWUFQQVZTdHJ1Y3R1cmVASlNDQEBQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBBVjIzQFBCVUNs
YXNzSW5mb0AzQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0
ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5kZXggYWExZDMx
Njk0NGEyZGYxM2IzMzhiNzYxMTY1ZDZiYTM1ZWY4NWI1NC4uN2Q3NDYyOTBlM2IzYTkwM2Y0M2Y1
NjA4OWM3ZjRkOTkwMWI2YmI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktp
dDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgpA
QCAtMTM1LDcgKzEzNSw4IEBAIEVYUE9SVFMKICAgICAgICAgPz8wU3RyaW5nQFdURkBAUUFFQFBC
X1dAWgogICAgICAgICA/PzFOb2RlUmVuZGVyaW5nQ29udGV4dEBXZWJDb3JlQEBRQUVAWFoKICAg
ICAgICAgPz8xUmFuZ2VAV2ViQ29yZUBAUUFFQFhaCi0gICAgICAgID9hYnNvbHV0ZUJvdW5kaW5n
Qm94UmVjdEBSZW5kZXJPYmplY3RAV2ViQ29yZUBAUUFFP0FWSW50UmVjdEAyQF9OQFoKKyAgICAg
ICAgP2Fic29sdXRlQm91bmRpbmdCb3hSZWN0QFJlbmRlck9iamVjdEBXZWJDb3JlQEBRQkU/QVZJ
bnRSZWN0QDJAX05AWgorICAgICAgICA/YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1Ry
YW5zZm9ybXNAUmVuZGVyT2JqZWN0QFdlYkNvcmVAQFFCRT9BVkludFJlY3RAMkBYWgogICAgICAg
ICA/YWRkQEF0b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdU
RkBAQDJAUEJEQFoKICAgICAgICAgP2FkZFNsb3dDYXNlQEF0b21pY1N0cmluZ0BXVEZAQENBP0FW
PyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEFWU3RyaW5nSW1wbEAyQEBaCiAgICAg
ICAgID9jYWNoZURPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBBVlN0cnVjdHVyZUBKU0NAQFBBVkpT
RE9NR2xvYmFsT2JqZWN0QDFAUEFWMjNAUEJVQ2xhc3NJbmZvQDNAQFoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMu
ZmlsdGVyCmluZGV4IDFhYjk3MzczMzU4YzNhOGIyNGZhMzUxNTY2ZmM2Zjg5MTliZGE0ZTMuLjJm
ZmJlOTk1NDdiM2I2NGNlYzVlYTFhNDBkZWFhOGM3YzYwZDU3ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xz
LmZpbHRlcgpAQCAtNDEsNyArNDEsNyBAQCBfWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJLTlNf
N0ludFJlY3RFOwogX1pON1dlYkNvcmUxMUV2ZW50VGFyZ2V0MTd0b0dlbmVyYXRlZFN0cmVhbUV2
OwogX1pON1dlYkNvcmUxMUV2ZW50VGFyZ2V0OHRvU3RyZWFtRXY7CiBfWk43V2ViQ29yZTEySlNE
T01XcmFwcGVyMzR2aXJ0dWFsRnVuY3Rpb25Ub1ByZXZlbnRXZWFrVnRhYmxlRXY7Ci1fWk43V2Vi
Q29yZTEyUmVuZGVyT2JqZWN0MjNhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEViOworX1pOSzdXZWJD
b3JlMTJSZW5kZXJPYmplY3QyM2Fic29sdXRlQm91bmRpbmdCb3hSZWN0RWI7CiBfWk43V2ViQ29y
ZTEzY3JlYXRlV3JhcHBlckVQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0
RVBOU180Tm9kZUU7CiBfWk43V2ViQ29yZTE1c2V0RE9NRXhjZXB0aW9uRVBOM0pTQzlFeGVjU3Rh
dGVFaTsKIF9aTjdXZWJDb3JlMTZIVE1MSW5wdXRFbGVtZW50MTdzZXRTdWdnZXN0ZWRWYWx1ZUVS
S04zV1RGNlN0cmluZ0U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110010</attachid>
            <date>2011-10-06 13:48:50 -0700</date>
            <delta_ts>2011-10-06 13:55:45 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-69009-20111006164848.patch</filename>
            <type>text/plain</type>
            <size>39757</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY4NTMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggM2VmYzQy
YzBmMzRjNDQ5NzQ1YjcxMDE0YWU3Mjc4MzMyN2MyZmQwNi4uMWRmNGQ3ZmYxMjk1MDBiYzdmNjc2
YzBjYjUxNDhlYzk3MmEwOGZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTI4MSw3ICsyODEs
NiBAQCBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDlzcG9vbFJlY3RFUk5TXzE1R3JhcGhpY3ND
b250ZXh0RVJLTlNfN0ludFJlY3RFCiBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dEMxRVBOU181
RnJhbWVFCiBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dEQxRXYKIF9fWk43V2ViQ29yZTEyUmVu
ZGVyT2JqZWN0MTZyZXBhaW50UmVjdGFuZ2xlRVJLTlNfN0ludFJlY3RFYgotX19aTjdXZWJDb3Jl
MTJSZW5kZXJPYmplY3QyM2Fic29sdXRlQm91bmRpbmdCb3hSZWN0RWIKIF9fWk43V2ViQ29yZTEy
UmVuZGVyV2lkZ2V0MjhyZXN1bWVXaWRnZXRIaWVyYXJjaHlVcGRhdGVzRXYKIF9fWk43V2ViQ29y
ZTEyUmVuZGVyV2lkZ2V0MjlzdXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlc0V2CiBfX1pON1dl
YkNvcmUxMlNoYXJlZEJ1ZmZlcjEwd3JhcE5TRGF0YUVQNk5TRGF0YQpAQCAtMTEzOSw2ICsxMTM4
LDcgQEAgX19aTks3V2ViQ29yZTExU2NyaXB0VmFsdWU5Z2V0U3RyaW5nRVBOM0pTQzlFeGVjU3Rh
dGVFUk4zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTEyZGF0YWJhc2VQ
YXRoRXYKIF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTI0c2hvdWxkU3RvcFRocmVhZEFjdGl2
aXR5RXYKIF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTlpc0VuYWJsZWRFdgorX19aTks3V2Vi
Q29yZTEyUmVuZGVyT2JqZWN0MjNhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEViCiBfX1pOSzdXZWJD
b3JlMTJSZW5kZXJPYmplY3QxNGVuY2xvc2luZ0xheWVyRXYKIF9fWk5LN1dlYkNvcmUxMlJlbmRl
ck9iamVjdDE1bG9jYWxUb0Fic29sdXRlRVJLTlNfMTBGbG9hdFBvaW50RWJiCiBfX1pOSzdXZWJD
b3JlMTJSZW5kZXJPYmplY3Q0dmlld0V2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYjE2NjIz
YmFhYzkzMTAxYjEzYzIzNGQ0MzM0NTY3YmUyZTY3ZTYwZS4uZTgwMzNlMzUyZDM3YWYzYjdiMDBj
MjI3ZWU3MzJjYjRkMGJkZjQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNTczLDcgKzU3
Myw4IEBAIExheW91dFJlY3QgRWxlbWVudDo6c2NyZWVuUmVjdCgpIGNvbnN0CiB7CiAgICAgaWYg
KCFyZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwotICAgIHJldHVybiBy
ZW5kZXJlcigpLT52aWV3KCktPmZyYW1lVmlldygpLT5jb250ZW50c1RvU2NyZWVuKHJlbmRlcmVy
KCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOworICAgIC8vIEZJWE1FOiB0aGlzIHNob3Vs
ZCBwcm9iYWJseSByZXNwZWN0IHRyYW5zZm9ybXMKKyAgICByZXR1cm4gcmVuZGVyZXIoKS0+dmll
dygpLT5mcmFtZVZpZXcoKS0+Y29udGVudHNUb1NjcmVlbihyZW5kZXJlcigpLT5hYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpKTsKIH0KIAogc3RhdGljIGlubGluZSBi
b29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UoY29uc3QgRWxlbWVudCogZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAppbmRleCA4OTU5ZjBiNmY3NjBlZmFiYmFjNzgxOWZjZWZiNzM1Mjc2YTQzMjliLi40NzEy
OTkwMjFjMjYxYWU2ODgwMjJiMWFkNzJlYWVlYzcxYWJiNjFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBA
IC04MTgsNyArODE4LDcgQEAgUmVuZGVyQm94TW9kZWxPYmplY3QqIE5vZGU6OnJlbmRlckJveE1v
ZGVsT2JqZWN0KCkgY29uc3QKIExheW91dFJlY3QgTm9kZTo6Z2V0UmVjdCgpIGNvbnN0CiB7CiAg
ICAgaWYgKHJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiByZW5kZXJlcigpLT5hYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdCh0cnVlKTsKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCktPmFic29sdXRl
Qm91bmRpbmdCb3hSZWN0KCk7CiAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKIH0KICAgICAKQEAg
LTgzMCw3ICs4MzAsNyBAQCBMYXlvdXRSZWN0IE5vZGU6OnJlbmRlclJlY3QoYm9vbCogaXNSZXBs
YWNlZCkKICAgICB3aGlsZSAocmVuZGVyZXIgJiYgIXJlbmRlcmVyLT5pc0JvZHkoKSAmJiAhcmVu
ZGVyZXItPmlzUm9vdCgpKSB7CiAgICAgICAgIGlmIChyZW5kZXJlci0+aXNSZW5kZXJCbG9jaygp
IHx8IHJlbmRlcmVyLT5pc0lubGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpIHx8IHJlbmRlcmVyLT5p
c1JlcGxhY2VkKCkpIHsKICAgICAgICAgICAgICppc1JlcGxhY2VkID0gcmVuZGVyZXItPmlzUmVw
bGFjZWQoKTsKLSAgICAgICAgICAgIHJldHVybiByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QodHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXItPmFic29sdXRlQm91bmRp
bmdCb3hSZWN0KCk7CiAgICAgICAgIH0KICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFy
ZW50KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xp
ZGVyVGh1bWJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRo
dW1iRWxlbWVudC5jcHAKaW5kZXggNWQxNzhhZjA3OWFiNGNmYmQ5ZDBmNzIwNDNmYWYzZDg3YzQ4
YmNiOC4uOTI2YjM5M2QzZGQxNzA1ZjVmZTMxYjc2ZmYzODA4NWE4MzhkMjg5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCkBAIC0y
MTYsNyArMjE2LDggQEAgdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OnNldFBvc2l0aW9uRnJvbVBv
aW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKICAgICAvLyBXZSBuZWVkIHRvIGNhbGN1bGF0
ZSBjdXJyZW50UG9zaXRpb24gZnJvbSBhYnNvbHV0ZSBwb2ludHMgYmVjYXVlIHRoZQogICAgIC8v
IHJlbmRlcmVyIGZvciB0aGlzIG5vZGUgaXMgdXN1YWxseSBvbiBhIGxheWVyIGFuZCByZW5kZXJC
b3goKS0+eCgpIGFuZAogICAgIC8vIHkoKSBhcmUgdW51c2FibGUuCi0gICAgTGF5b3V0UG9pbnQg
YWJzb2x1dGVUaHVtYk9yaWdpbiA9IHJlbmRlckJveCgpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dCgpLmxvY2F0aW9uKCk7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHJlc3Bl
Y3QgdHJhbnNmb3Jtcy4KKyAgICBMYXlvdXRQb2ludCBhYnNvbHV0ZVRodW1iT3JpZ2luID0gcmVu
ZGVyQm94KCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkubG9j
YXRpb24oKTsKICAgICBMYXlvdXRQb2ludCBhYnNvbHV0ZVNsaWRlckNvbnRlbnRPcmlnaW4gPSBy
b3VuZGVkTGF5b3V0UG9pbnQoaW5wdXQtPnJlbmRlcmVyKCktPmxvY2FsVG9BYnNvbHV0ZSgpKTsK
ICAgICBpZiAoaXNWZXJ0aWNhbCkgewogICAgICAgICB0cmFja1NpemUgPSBpbnB1dC0+cmVuZGVy
Qm94KCktPmNvbnRlbnRIZWlnaHQoKSAtIHJlbmRlckJveCgpLT5oZWlnaHQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
Y3BwCmluZGV4IGJmMTg1Y2Y3YjBmMDk2YjkzYzg4ODMyMDZiYTMzNzRkMDQ5MzQ1ZDUuLjQ3NjIx
ODEzNWJhZDcwYjg1MzBlM2ZkNzdhMDk4MGQ0Mzk2NWU1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAt
NTM1LDcgKzUzNSw4IEBAIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OnN0YXJ0
U3BlZWNoSW5wdXQoKQogICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBpbnB1dCA9IHN0YXRp
Y19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5vZGUoKSk7CiAgICAgQXRv
bWljU3RyaW5nIGxhbmd1YWdlID0gaW5wdXQtPmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpOwog
ICAgIFN0cmluZyBncmFtbWFyID0gaW5wdXQtPmdldEF0dHJpYnV0ZSh3ZWJraXRncmFtbWFyQXR0
cik7Ci0gICAgSW50UmVjdCByZWN0ID0gcmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3QoKTsKKyAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgcHJvYmFibHkgcmVzcGVjdCB0cmFuc2Zv
cm1zCisgICAgSW50UmVjdCByZWN0ID0gcmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKICAgICBpZiAoc3BlZWNoSW5wdXQoKS0+c3RhcnRSZWNv
Z25pdGlvbihtX2xpc3RlbmVySWQsIHJlY3QsIGxhbmd1YWdlLCBncmFtbWFyLCBkb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpKSkKICAgICAgICAgc2V0U3RhdGUoUmVjb3JkaW5nKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAKaW5kZXgg
ZTY4OWI1MjUwYjZhODY4ZWE1YTU1MGQ2ZGFhYmEyOTQ1YTc4ZjY5ZC4uZjhiZmI2MGY5YWRlZDIw
YjJlMTA2ODBhMDhjOTY0Mjg0ZGE4NGY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIGRyYXdO
b2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSGlnaGxpZ2h0RGF0YSogaGln
aGxpZ2h0RGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0U2l6ZSBtYWluRnJhbWVP
ZmZzZXQgPSBmcmFtZVRvTWFpbkZyYW1lT2Zmc2V0KGNvbnRhaW5pbmdGcmFtZSk7Ci0gICAgTGF5
b3V0UmVjdCBib3VuZGluZ0JveCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCh0
cnVlKTsKKyAgICBMYXlvdXRSZWN0IGJvdW5kaW5nQm94ID0gcmVuZGVyZXItPmFic29sdXRlQm91
bmRpbmdCb3hSZWN0KCk7CiAKICAgICBib3VuZGluZ0JveC5tb3ZlKG1haW5GcmFtZU9mZnNldCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9JRnJhbWVTaGltU3VwcG9ydC5jcHAKaW5kZXgg
YzBhYTFlNDEzNmM0OTQyZjI5YWY4ODRmMzIxNjg4NWM3YWM1NWI3OS4uODI2NTc2NTExMGFlNTQ2
OGQwMzA1ZjNlZmIwNDZkMjVhZGQ3ZmVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9JRnJhbWVTaGltU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9J
RnJhbWVTaGltU3VwcG9ydC5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIGdldFBsdWdpbk9j
Y2x1c2lvbnMoRWxlbWVudCogZWxlbWVudCwgV2lkZ2V0KiBwYXJlbnRXaWRnZXQsIGNvbnN0IElu
dFJlY3QmCiAgICAgICAgIFJlbmRlck9iamVjdCogaWZyYW1lUmVuZGVyZXIgPSBlbGVtZW50LT5y
ZW5kZXJlcigpOwogCiAgICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
aWZyYW1lVGFnKQotICAgICAgICAgICAgJiYgaWZyYW1lUmVuZGVyZXItPmFic29sdXRlQm91bmRp
bmdCb3hSZWN0KCkuaW50ZXJzZWN0cyhmcmFtZVJlY3QpCisgICAgICAgICAgICAmJiBpZnJhbWVS
ZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKS5pbnRl
cnNlY3RzKGZyYW1lUmVjdCkKICAgICAgICAgICAgICYmICghaWZyYW1lUmVuZGVyZXItPnN0eWxl
KCkgfHwgaWZyYW1lUmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSkg
ewogICAgICAgICAgICAgZ2V0T2JqZWN0U3RhY2soaWZyYW1lUmVuZGVyZXIsICZpZnJhbWVac3Rh
Y2spOwogICAgICAgICAgICAgaWYgKGlmcmFtZUlzQWJvdmVQbHVnaW4oaWZyYW1lWnN0YWNrLCBw
bHVnaW5ac3RhY2spKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApp
bmRleCA4NzJkZjQ3MGU4MjNkNGI1YWRlN2FhMWRiZTI5MTI1OGY2MWJkODcwLi45ODMxMmY3ZjI5
YzAyODRkMjAzZGQ0ZjJlYWI1NjFjNTU0ZDBmNTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKQEAgLTU4NzksNyArNTg3OSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6
OnNldFBhZ2VMb2dpY2FsT2Zmc2V0KGludCBsb2dpY2FsT2Zmc2V0KQogICAgIG1fcmFyZURhdGEt
Pm1fcGFnZUxvZ2ljYWxPZmZzZXQgPSBsb2dpY2FsT2Zmc2V0OwogfQogCi12b2lkIFJlbmRlckJs
b2NrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91
dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkKK3ZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUmVj
dHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0KSBjb25zdAogewogICAgIC8vIEZvciBibG9ja3MgaW5zaWRlIGlubGluZXMsIHdl
IGdvIGFoZWFkIGFuZCBpbmNsdWRlIG1hcmdpbnMgc28gdGhhdCB3ZSBydW4gcmlnaHQgdXAgdG8g
dGhlCiAgICAgLy8gaW5saW5lIGJveGVzIGFib3ZlIGFuZCBiZWxvdyB1cyAodGh1cyBnZXR0aW5n
IG1lcmdlZCB3aXRoIHRoZW0gdG8gZm9ybSBhIHNpbmdsZSBpcnJlZ3VsYXIKQEAgLTU4OTUsNyAr
NTg5NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJl
Y3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjCiAgICAgICAgIHJlY3RzLmFwcGVuZChM
YXlvdXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBzaXplKCkpKTsKIH0KIAotdm9pZCBSZW5kZXJC
bG9jazo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0Zp
eGVkKQordm9pZCBSZW5kZXJCbG9jazo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYg
cXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIC8vIEZvciBibG9ja3MgaW5zaWRl
IGlubGluZXMsIHdlIGdvIGFoZWFkIGFuZCBpbmNsdWRlIG1hcmdpbnMgc28gdGhhdCB3ZSBydW4g
cmlnaHQgdXAgdG8gdGhlCiAgICAgLy8gaW5saW5lIGJveGVzIGFib3ZlIGFuZCBiZWxvdyB1cyAo
dGh1cyBnZXR0aW5nIG1lcmdlZCB3aXRoIHRoZW0gdG8gZm9ybSBhIHNpbmdsZSBpcnJlZ3VsYXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggZjczMzA5YWQwNmRiZThi
ODI5MGMwN2U4ZjQ3Mjc3N2E1MjM1MGQ1NC4uYzk1NmQyYWEzOTliM2ViNDRjYzYxOWNhMDQ0YmQ2
MmU1YTkzNGU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTc0
MSw4ICs3NDEsOCBAQCBwcml2YXRlOgogICAgIExheW91dFVuaXQgbG9naWNhbExlZnRTZWxlY3Rp
b25PZmZzZXQoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgTGF5b3V0VW5pdCBwb3NpdGlvbik7CiAg
ICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRTZWxlY3Rpb25PZmZzZXQoUmVuZGVyQmxvY2sqIHJv
b3RCbG9jaywgTGF5b3V0VW5pdCBwb3NpdGlvbik7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGFi
c29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0
cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZz
ZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiAgICAgTGF5b3V0VW5pdCBkZXNpcmVkQ29s
dW1uV2lkdGgoKSBjb25zdDsKICAgICB1bnNpZ25lZCBkZXNpcmVkQ29sdW1uQ291bnQoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNWMzNmU1ZTVhMmU5
MTg2N2I1YzQ3NTRhNjAwODExMzFjNDkzMDNhNC4uOTA4NGQ1NzZkMTE3YzE2NDNlYjVmNDZlYTQ2
NjliZjYxNzZjNjdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAg
LTUxNiwxMiArNTE2LDEyIEBAIHZvaWQgUmVuZGVyQm94OjpzZXRTY3JvbGxUb3AoTGF5b3V0VW5p
dCBuZXdUb3ApCiAgICAgICAgIGxheWVyKCktPnNjcm9sbFRvWU9mZnNldChuZXdUb3AsIFJlbmRl
ckxheWVyOjpTY3JvbGxPZmZzZXRDbGFtcGVkKTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OmFic29s
dXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0KQordm9pZCBSZW5kZXJCb3g6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJl
Y3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAog
ewogICAgIHJlY3RzLmFwcGVuZChMYXlvdXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBzaXplKCkp
KTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4m
IHF1YWRzLCBib29sKiB3YXNGaXhlZCkKK3ZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVF1YWRzKFZl
Y3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgcXVh
ZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KDAsIDAsIHdpZHRoKCksIGhl
aWdodCgpKSwgZmFsc2UsIHdhc0ZpeGVkKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmgKaW5kZXggMjhjNzY4Yjk0ZmExMGIwMDZmYTg0OTNkYzI3ZTVmOTU5NDgxMzdkMy4uOTRj
YzRlYzc5ZWY5N2UxZWM2MTY0YjhhNGI4YjY1MTA3NWU2ZTA4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaApAQCAtMjM0LDggKzIzNCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IExheW91dFVuaXQgY29sbGFwc2VkTWFyZ2luQmVmb3JlKCkgY29uc3QgeyByZXR1cm4gbWFyZ2lu
QmVmb3JlKCk7IH0KICAgICB2aXJ0dWFsIExheW91dFVuaXQgY29sbGFwc2VkTWFyZ2luQWZ0ZXIo
KSBjb25zdCB7IHJldHVybiBtYXJnaW5BZnRlcigpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJz
b2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZl
Y3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBi
b29sKiB3YXNGaXhlZCkgY29uc3Q7CiAgICAgCiAgICAgSW50UmVjdCByZWZsZWN0aW9uQm94KCkg
Y29uc3Q7CiAgICAgaW50IHJlZmxlY3Rpb25PZmZzZXQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCmluZGV4IGY5
NDQ5MWYzMWM1YThlNWZkMjAyMjQ1MDE5NTRlNGI0NmVmMDg0NjYuLjg1Yjk0ZDZjNzA5MzZlODcx
MmIzOTgyY2UzMDA4YzlkM2Y4MzVmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcApAQCAtMTMyLDcgKzEzMiw4IEBAIHZv
aWQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2luCiAgICAgICAgICAgICB0ZXh0WCA9IGNvbnRlbnRMZWZ0ICsg
Y29udGVudFdpZHRoKCkgLSBidXR0b25BbmRJY29uV2lkdGggLSBmb250LndpZHRoKHRleHRSdW4p
OwogICAgICAgICAvLyBXZSB3YW50IHRvIG1hdGNoIHRoZSBidXR0b24ncyBiYXNlbGluZQogICAg
ICAgICBSZW5kZXJCdXR0b24qIGJ1dHRvblJlbmRlcmVyID0gdG9SZW5kZXJCdXR0b24oYnV0dG9u
LT5yZW5kZXJlcigpKTsKLSAgICAgICAgTGF5b3V0VW5pdCB0ZXh0WSA9IGJ1dHRvblJlbmRlcmVy
LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpLnkoKQorICAgICAgICAvLyBGSVhNRTogTWFrZSB0
aGlzIHdvcmsgd2l0aCB0cmFuc2Zvcm1zLgorICAgICAgICBMYXlvdXRVbml0IHRleHRZID0gYnV0
dG9uUmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCku
eSgpCiAgICAgICAgICAgICArIGJ1dHRvblJlbmRlcmVyLT5iYXNlbGluZVBvc2l0aW9uKEFscGhh
YmV0aWNCYXNlbGluZSwgdHJ1ZSwgSG9yaXpvbnRhbExpbmUsIFBvc2l0aW9uT25Db250YWluaW5n
TGluZSk7CiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihzdHlsZSgp
LT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlKCktPmNvbG9y
U3BhY2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZy
YW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCmluZGV4
IDExMjk3YjVkYjdhOWY3YTJkMDllNDY1OTQzYzQ4N2UxODZmMTVhZDAuLmNlMGY0M2JkMDMwNDE1
MWE0MDgzYjBhMDIwYTllMmVkOTYxYjEzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJRnJhbWUuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgYm9vbCBSZW5kZXJJRnJhbWU6OmZs
YXR0ZW5GcmFtZSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIERvIG5vdCBmbGF0
dGVuIG9mZnNjcmVlbiBpbm5lciBmcmFtZXMgZHVyaW5nIGZyYW1lIGZsYXR0ZW5pbmcsIGFzIGZs
YXR0ZW5pbmcgbWlnaHQgbWFrZSB0aGVtIHZpc2libGUuCi0gICAgSW50UmVjdCBib3VuZGluZ1Jl
Y3QgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIEludFJlY3QgYm91bmRpbmdSZWN0
ID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKICAgICByZXR1
cm4gYm91bmRpbmdSZWN0Lm1heFgoKSA+IDAgJiYgYm91bmRpbmdSZWN0Lm1heFkoKSA+IDA7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXggNmNhOWQz
ZmIxZTkyZDAyY2JjOTBiYTRkYzMzYmExOWJkODRiMjgwNC4uM2YwOTYzM2IwMDhkOTU2ZmExZjdl
MjE4MmUzMGM0ZGQyMDVhYzNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklu
bGluZS5jcHAKQEAgLTQ2Niw3ICs0NjYsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICBt
X2xpbmVCb3hlcy5wYWludCh0aGlzLCBwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKIH0KIAotdm9p
ZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywg
Y29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KQordm9pZCBSZW5kZXJJbmxpbmU6
OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewogICAgIGlmICghYWx3YXlzQ3JlYXRlTGlu
ZUJveGVzKCkpCiAgICAgICAgIGN1bGxlZElubGluZUFic29sdXRlUmVjdHModGhpcywgcmVjdHMs
IHRvTGF5b3V0U2l6ZShhY2N1bXVsYXRlZE9mZnNldCkpOwpAQCAtNDg1LDcgKzQ4NSw3IEBAIHZv
aWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMs
IGNvbnN0IExheW91dFBvaW50JiBhCiAgICAgfQogfQogCi12b2lkIFJlbmRlcklubGluZTo6Y3Vs
bGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25zdCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVj
dG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0KQordm9pZCBS
ZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRlUmVjdHMoY29uc3QgUmVuZGVySW5saW5l
KiBjb250YWluZXIsIFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFNpemUm
IG9mZnNldCkgY29uc3QKIHsKICAgICBpZiAoIWN1bGxlZElubGluZUZpcnN0TGluZUJveCgpKSB7
CiAgICAgICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0KG9mZnNldC53aWR0aCgpLCBvZmZzZXQuaGVp
Z2h0KCksIDAsIDApKTsKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6Y3Vs
bGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25zdCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVj
dAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZs
b2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkKK3ZvaWQgUmVuZGVySW5saW5lOjphYnNv
bHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0
CiB7CiAgICAgaWYgKCFhbHdheXNDcmVhdGVMaW5lQm94ZXMoKSkKICAgICAgICAgY3VsbGVkSW5s
aW5lQWJzb2x1dGVRdWFkcyh0aGlzLCBxdWFkcyk7CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBS
ZW5kZXJJbmxpbmU6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29s
KiB3YXNGaXhlZCkKICAgICAgICAgY29udGludWF0aW9uKCktPmFic29sdXRlUXVhZHMocXVhZHMs
IHdhc0ZpeGVkKTsKIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRl
UXVhZHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxGbG9hdFF1YWQ+JiBx
dWFkcykKK3ZvaWQgUmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVBYnNvbHV0ZVF1YWRzKGNvbnN0
IFJlbmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpIGNvbnN0
CiB7CiAgICAgaWYgKCFjdWxsZWRJbmxpbmVGaXJzdExpbmVCb3goKSkgewogICAgICAgICBxdWFk
cy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QoKSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmluZGV4IGFmZDRhYWQ0NDhiMGU4MTgxOTMyOWVhMGFh
Njg2ZTViMDljZWI2NjcuLmZlOTVhZjFmZTE4NzU0MjY1YmE5NzkwOWY3ZWRiNmViM2U3M2FlNjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKQEAgLTQ2LDggKzQ2LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5TdGFydCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5FbmQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
dm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50
JiBhY2N1bXVsYXRlZE9mZnNldCk7Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29s
dXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogICAgIHZpcnR1YWwgTGF5b3V0
U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCosIGNvbnN0IExheW91dFBvaW50
JikgY29uc3Q7CiAKQEAgLTEwMiw4ICsxMDIsOCBAQCBwcml2YXRlOgogICAgIExheW91dFJlY3Qg
Y3VsbGVkSW5saW5lVmlzdWFsT3ZlcmZsb3dCb3VuZGluZ0JveCgpIGNvbnN0OwogICAgIElubGlu
ZUJveCogY3VsbGVkSW5saW5lRmlyc3RMaW5lQm94KCkgY29uc3Q7CiAgICAgSW5saW5lQm94KiBj
dWxsZWRJbmxpbmVMYXN0TGluZUJveCgpIGNvbnN0OwotICAgIHZvaWQgY3VsbGVkSW5saW5lQWJz
b2x1dGVSZWN0cyhjb25zdCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdG9yPExheW91dFJl
Y3Q+JiwgY29uc3QgTGF5b3V0U2l6ZSYpOwotICAgIHZvaWQgY3VsbGVkSW5saW5lQWJzb2x1dGVR
dWFkcyhjb25zdCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdG9yPEZsb2F0UXVhZD4mKTsK
KyAgICB2b2lkIGN1bGxlZElubGluZUFic29sdXRlUmVjdHMoY29uc3QgUmVuZGVySW5saW5lKiBj
b250YWluZXIsIFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFNpemUmKSBjb25zdDsK
KyAgICB2b2lkIGN1bGxlZElubGluZUFic29sdXRlUXVhZHMoY29uc3QgUmVuZGVySW5saW5lKiBj
b250YWluZXIsIFZlY3RvcjxGbG9hdFF1YWQ+JikgY29uc3Q7CiAKICAgICB2b2lkIGFkZENoaWxk
VG9Db250aW51YXRpb24oUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZv
cmVDaGlsZCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkSWdub3JpbmdDb250aW51YXRpb24o
UmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggODk3YWE4
OGVhZjFlYTJhNDZlZDEzNmY1MGY3YzYyNjIzOTEzOWUwMS4uOWJhM2I1ZTdhMTk3MmNjODRmYzM1
NDY0ZGMzZjVkYzIxZGE3NTRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWVudUxpc3QuY3BwCkBAIC0zMDIsNyArMzAyLDcgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6c2hv
d1BvcHVwKCkKICAgICAvLyBDb21wdXRlIHRoZSB0b3AgbGVmdCB0YWtpbmcgdHJhbnNmb3JtcyBp
bnRvIGFjY291bnQsIGJ1dCB1c2UKICAgICAvLyB0aGUgYWN0dWFsIHdpZHRoIG9mIHRoZSBlbGVt
ZW50IHRvIHNpemUgdGhlIHBvcHVwLgogICAgIEZsb2F0UG9pbnQgYWJzVG9wTGVmdCA9IGxvY2Fs
VG9BYnNvbHV0ZShGbG9hdFBvaW50KCksIGZhbHNlLCB0cnVlKTsKLSAgICBMYXlvdXRSZWN0IGFi
c0JvdW5kcyA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgTGF5b3V0UmVjdCBhYnNC
b3VuZHMgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOwogICAg
IGFic0JvdW5kcy5zZXRMb2NhdGlvbihyb3VuZGVkSW50UG9pbnQoYWJzVG9wTGVmdCkpOwogICAg
IG1fcG9wdXAtPnNob3coYWJzQm91bmRzLCBkb2N1bWVudCgpLT52aWV3KCksCiAgICAgICAgIHNl
bGVjdC0+b3B0aW9uVG9MaXN0SW5kZXgoc2VsZWN0LT5zZWxlY3RlZEluZGV4KCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggNzMwYmUxZGNkMWUzNDYx
MWJjZGYyM2U2NzFkN2EzZDNmYzAyMzAwYi4uOTRjODk4ZDgzMDU4ODdmMjlkNjkzMWVmODYwNDYz
NzQ0NmJhMjEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
QEAgLTExNjUsNyArMTE2NSw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpwYWludE91dGxpbmUoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IExheW91dFJlCiAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotSW50UmVjdCBSZW5k
ZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0KGJvb2wgdXNlVHJhbnNmb3JtcykKK0lu
dFJlY3QgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5z
Zm9ybXMpIGNvbnN0CiB7CiAgICAgaWYgKHVzZVRyYW5zZm9ybXMpIHsKICAgICAgICAgVmVjdG9y
PEZsb2F0UXVhZD4gcXVhZHM7CkBAIC0xMjE1LDE0ICsxMjE1LDE0IEBAIHZvaWQgUmVuZGVyT2Jq
ZWN0OjphYnNvbHV0ZUZvY3VzUmluZ1F1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykKIHZv
aWQgUmVuZGVyT2JqZWN0OjphZGRBYnNvbHV0ZVJlY3RGb3JMYXllcihJbnRSZWN0JiByZXN1bHQp
CiB7CiAgICAgaWYgKGhhc0xheWVyKCkpCi0gICAgICAgIHJlc3VsdC51bml0ZShhYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdCgpKTsKKyAgICAgICAgcmVzdWx0LnVuaXRlKGFic29sdXRlQm91bmRpbmdC
b3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkpOwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJy
ZW50ID0gZmlyc3RDaGlsZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxp
bmcoKSkKICAgICAgICAgY3VycmVudC0+YWRkQWJzb2x1dGVSZWN0Rm9yTGF5ZXIocmVzdWx0KTsK
IH0KIAogTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OnBhaW50aW5nUm9vdFJlY3QoTGF5b3V0UmVj
dCYgdG9wTGV2ZWxSZWN0KQogewotICAgIExheW91dFJlY3QgcmVzdWx0ID0gYWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QoKTsKKyAgICBMYXlvdXRSZWN0IHJlc3VsdCA9IGFic29sdXRlQm91bmRpbmdC
b3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAgICAgdG9wTGV2ZWxSZWN0ID0gcmVzdWx0Owog
ICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJyZW50ID0gZmlyc3RDaGlsZCgpOyBjdXJyZW50OyBj
dXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgY3VycmVudC0+YWRkQWJz
b2x1dGVSZWN0Rm9yTGF5ZXIocmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaAppbmRleCA2ZGQ0YmFjZjcyODM1NDA4M2Q5M2MyZDUwYjRhYzJjMTg1NTE2YmUxLi4w
ZjYwNzk0MzE5YTA3YjhkZDI4Zjc2OGEzYzYyNzgwZDc1YmRkZjQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC02MzgsMTIgKzYzOCwxNCBAQCBwdWJsaWM6CiAg
ICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJvbSBhbiBvYmplY3QgdXAgdGhlIGNvbnRhaW5lcigp
IGNoYWluLiBBc3NlcnRzIHRoYXQgbm9uZSBvZiB0aGUgaW50ZXJtZWRpYXRlIG9iamVjdHMgaGF2
ZSB0cmFuc2Zvcm1zLgogICAgIExheW91dFNpemUgb2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVy
KFJlbmRlck9iamVjdCopIGNvbnN0OwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJl
Y3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0
UG9pbnQmKSBjb25zdCB7IH0KKwogICAgIC8vIEZJWE1FOiB1c2VUcmFuc2Zvcm1zIHNob3VsZCBn
byBhd2F5IGV2ZW50dWFsbHkKLSAgICBJbnRSZWN0IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KGJv
b2wgdXNlVHJhbnNmb3JtcyA9IGZhbHNlKTsKKyAgICBJbnRSZWN0IGFic29sdXRlQm91bmRpbmdC
b3hSZWN0KGJvb2wgdXNlVHJhbnNmb3JtID0gdHJ1ZSkgY29uc3Q7CisgICAgSW50UmVjdCBhYnNv
bHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIGFi
c29sdXRlQm91bmRpbmdCb3hSZWN0KGZhbHNlKTsgfQogCiAgICAgLy8gQnVpbGQgYW4gYXJyYXkg
b2YgcXVhZHMgaW4gYWJzb2x1dGUgY29vcmRzIGZvciBsaW5lIGJveGVzCi0gICAgdmlydHVhbCB2
b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiAvKndhc0ZpeGVkKi8g
PSAwKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFk
PiYsIGJvb2wqIC8qd2FzRml4ZWQqLyA9IDApIGNvbnN0IHsgfQogCiAgICAgdm9pZCBhYnNvbHV0
ZUZvY3VzUmluZ1F1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCBlODg4NjFmM2QwNGEwODY4NDRkM2E3MGQyMTVhNDc0
ZGU2ODkyNGM5Li42YjZkYTI0NDRlMTJjNzMyNmYxOTZkNjRiODgxMjU4ODI3NGY5OGMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC0zMDEsNyArMzAxLDcgQEAg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBSZW5kZXJUZXh0OjpvcmlnaW5hbFRleHQoKSBjb25zdAog
ICAgIHJldHVybiAoZSAmJiBlLT5pc1RleHROb2RlKCkpID8gc3RhdGljX2Nhc3Q8VGV4dCo+KGUp
LT5kYXRhSW1wbCgpIDogMDsKIH0KIAotdm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVJlY3RzKFZl
Y3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9m
ZnNldCkKK3ZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4m
IHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7CiAg
ICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3ggPSBmaXJzdFRleHRCb3goKTsgYm94OyBib3ggPSBi
b3gtPm5leHRUZXh0Qm94KCkpCiAgICAgICAgIHJlY3RzLmFwcGVuZChlbmNsb3NpbmdMYXlvdXRS
ZWN0KEZsb2F0UmVjdChhY2N1bXVsYXRlZE9mZnNldCArIGJveC0+dG9wTGVmdCgpLCBib3gtPnNp
emUoKSkpKTsKQEAgLTM4OCw3ICszODgsNyBAQCBzdGF0aWMgSW50UmVjdCBlbGxpcHNpc1JlY3RG
b3JCb3goSW5saW5lVGV4dEJveCogYm94LCB1bnNpZ25lZCBzdGFydFBvcywgdW5zaWduZQogICAg
IHJldHVybiBJbnRSZWN0KCk7CiB9CiAgICAgCi12b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUXVh
ZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCwgQ2xpcHBpbmdPcHRp
b24gb3B0aW9uKQordm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQsIENsaXBwaW5nT3B0aW9uIG9wdGlvbikgY29uc3QK
IHsKICAgICBmb3IgKElubGluZVRleHRCb3gqIGJveCA9IGZpcnN0VGV4dEJveCgpOyBib3g7IGJv
eCA9IGJveC0+bmV4dFRleHRCb3goKSkgewogICAgICAgICBJbnRSZWN0IGJvdW5kYXJpZXMgPSBi
b3gtPmNhbGN1bGF0ZUJvdW5kYXJpZXMoKTsKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIFJlbmRl
clRleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNG
aXhlZCwgQ2xpcHBpbgogICAgIH0KIH0KICAgICAKLXZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5k
ZXJUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2Fz
Rml4ZWQpIGNvbnN0CiB7CiAgICAgYWJzb2x1dGVRdWFkcyhxdWFkcywgd2FzRml4ZWQsIE5vQ2xp
cHBpbmcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKaW5kZXggNDAyMGQ4
YWEzNzEyMmQxMjVkMWRjNGVmMTEwNzA5ZDE4Zjk1MTM5OC4uNDJlOWFlYzk2YjNiMzJiMmQxOWUz
YmM1MTk1YzEzZDQ3MWNhMDkzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5o
CkBAIC01NCwxNCArNTQsMTQgQEAgcHVibGljOgogICAgIElubGluZVRleHRCb3gqIGNyZWF0ZUlu
bGluZVRleHRCb3goKTsKICAgICB2b2lkIGRpcnR5TGluZUJveGVzKGJvb2wgZnVsbExheW91dCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBj
b25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOworICAgIHZpcnR1YWwgdm9pZCBh
YnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCkgY29uc3Q7CiAgICAgdm9pZCBhYnNvbHV0ZVJlY3RzRm9yUmFuZ2UoVmVj
dG9yPEludFJlY3Q+JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZz
ZXQgPSBVSU5UX01BWCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSwgYm9vbCogd2Fz
Rml4ZWQgPSAwKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRz
KFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogICAgIHZvaWQgYWJz
b2x1dGVRdWFkc0ZvclJhbmdlKFZlY3RvcjxGbG9hdFF1YWQ+JiwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQgPSBVSU5UX01BWCwgYm9vbCB1c2VTZWxlY3Rpb25I
ZWlnaHQgPSBmYWxzZSwgYm9vbCogd2FzRml4ZWQgPSAwKTsKIAogICAgIGVudW0gQ2xpcHBpbmdP
cHRpb24geyBOb0NsaXBwaW5nLCBDbGlwVG9FbGxpcHNpcyB9OwotICAgIHZvaWQgYWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkID0gMCwgQ2xpcHBpbmdPcHRp
b24gPSBOb0NsaXBwaW5nKTsKKyAgICB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVh
ZD4mLCBib29sKiB3YXNGaXhlZCA9IDAsIENsaXBwaW5nT3B0aW9uID0gTm9DbGlwcGluZykgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0
IExheW91dFBvaW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKaW5kZXggMTcwOTdiMWZiYWIzNjE4MDg4
ZTBiNDg5MzdjNjA4ZTVjMmQ4NGNmYS4uZmY5MDc3MGYwOTU1Nzg5MTA3NWRiOTFlMjllMWRmZTc4
NzA0YWZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZTo6c2hvd1BvcHVwKCkKICAgICAgICAgbV9zZWFyY2hQb3B1
cC0+c2F2ZVJlY2VudFNlYXJjaGVzKG5hbWUsIG1fcmVjZW50U2VhcmNoZXMpOwogICAgIH0KIAot
ICAgIG1fc2VhcmNoUG9wdXAtPnBvcHVwTWVudSgpLT5zaG93KGFic29sdXRlQm91bmRpbmdCb3hS
ZWN0KHRydWUpLCBkb2N1bWVudCgpLT52aWV3KCksIC0xKTsKKyAgICBtX3NlYXJjaFBvcHVwLT5w
b3B1cE1lbnUoKS0+c2hvdyhhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpLCBkb2N1bWVudCgpLT52
aWV3KCksIC0xKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmhpZGVQ
b3B1cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVT
YWZhcmkuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNw
cAppbmRleCBkMjcwMjFjOWQxOWExM2Y5NTlhZDIyZjdkYTFiODI5NzljMGMzYWRjLi45OTlmMmY3
M2Q1MzFhMmU0ODc5NGI1NTc2MzUzZTA4NjQ0YWM3ODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKQEAgLTEwODAsNyArMTA4MCw3IEBAIGJv
b2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVy
T2JqZWN0KiBvLCBjb25zdCBQYWluCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGlucHV0
LT5yZW5kZXJlcigpOwogICAgIEFTU0VSVChyZW5kZXJlcik7CiAKLSAgICBJbnRSZWN0IHNlYXJj
aFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBJbnRSZWN0
IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1Ry
YW5zZm9ybXMoKTsKIAogICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVs
ZENhbmNlbEJ1dHRvblBhcnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
c2VhcmNoUmVjdCwgY29udHJvbFNpemVGcm9tUmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNp
emVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTEzNCw3
ICsxMTM0LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3Vs
dHNEZWNvcmF0aW9uKFJlbmRlck9iamVjdCogbywgY29uc3QKICAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gaW5wdXQtPnJlbmRlcmVyKCk7CiAgICAgQVNTRVJUKHJlbmRlcmVyKTsKIAotICAg
IEludFJlY3Qgc2VhcmNoUmVjdCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgp
OworICAgIEludFJlY3Qgc2VhcmNoUmVjdCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOwogCiAgICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhl
bWU6OlNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCksIHNlYXJjaFJlY3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qoc2VhcmNo
UmVjdCwgc2VhcmNoRmllbGRTaXplcygpKSwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgIHJldHVy
biBmYWxzZTsKQEAgLTExNTcsNyArMTE1Nyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBh
aW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpCiAg
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGlucHV0LT5yZW5kZXJlcigpOwogICAgIEFTU0VS
VChyZW5kZXJlcik7CiAKLSAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKIAogICAgIHBhaW50
VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25QYXJ0LCBwYWlu
dEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHNlYXJjaFJlY3QsIGNvbnRyb2xTaXpl
RnJvbVJlY3Qoc2VhcmNoUmVjdCwgc2VhcmNoRmllbGRTaXplcygpKSwgZGV0ZXJtaW5lU3RhdGUo
bykpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcAppbmRleCAxZmVmYWM0ZjAxOTJlYTNlYjA1NDE1Y2IzNDM0YWY1YjA5ZjZhNzQxLi5mNDIx
Zjk4MWRhMjY3ZGQ1N2Q1OTk0YWJjM2VjMWE3NTY1ZDE4MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0zMjksMTIgKzMyOSwxMiBAQCB2b2lkIFJlbmRlclZp
ZXc6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgSQogICAgICAgICByZWN0ID0gbV9sYXllci0+dHJhbnNmb3JtKCktPm1hcFJlY3Qo
cmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0
UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCit2b2lk
IFJlbmRlclZpZXc6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29u
c3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewogICAgIHJlY3RzLmFw
cGVuZChMYXlvdXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBtX2xheWVyLT5zaXplKCkpKTsKIH0K
IAotdm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFk
cywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBpZiAod2Fz
Rml4ZWQpCiAgICAgICAgICp3YXNGaXhlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmgKaW5kZXggYmJkZDQ1NDJhMmJlMDgyOWFmN2Q4MTkyMTBjYjcyNTY2NjRlODUz
OC4uOWQ0ZTllNDMwN2IwZjlkMGZkMTVmMGM1MTNmNDE2YzUxMTg0MTY2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBAIC04Niw4ICs4Niw4IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgcHJpbnRpbmcoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3Rz
KFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNl
dCk7Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBi
b29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExh
eW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wq
IHdhc0ZpeGVkKSBjb25zdDsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAg
ICB2b2lkIHNldE1heGltYWxPdXRsaW5lU2l6ZShpbnQgbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwCmluZGV4IDJjODE1OTA4ZWJmNmI5ODkw
Njc1N2Q4YmM1NGJlNjk0N2E3MTc5ZTMuLjdiMTZhNGQ1YmZjOWNiN2JiNjVlNjViYjE1YWJjOGUy
ZjZlYmFlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
QmxvY2suY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgUmVuZGVyU1ZHQmxvY2s6OnVwZGF0ZUJv
eE1vZGVsSW5mb0Zyb21TdHlsZSgpCiAgICAgc2V0SGFzT3ZlcmZsb3dDbGlwKGZhbHNlKTsKIH0K
IAotdm9pZCBSZW5kZXJTVkdCbG9jazo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYpCit2b2lkIFJlbmRlclNWR0Jsb2NrOjphYnNvbHV0ZVJlY3Rz
KFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JikgY29uc3QKIHsKICAgICAv
LyBUaGlzIGNvZGUgcGF0aCBzaG91bGQgbmV2ZXIgYmUgdGFrZW4gZm9yIFNWRywgYXMgd2UncmUg
YXNzdW1pbmcgdXNlVHJhbnNmb3Jtcz10cnVlIGV2ZXJ5d2hlcmUsIGFic29sdXRlUXVhZHMgc2hv
dWxkIGJlIHVzZWQuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgKaW5kZXggMjJjMWYxOGUzNmUwMjMxMGJl
N2U3ZDNlNGVjODEyM2EyOWI1YTcxNC4uNThjZjI2MjBhOTgxOGQ2NGFlMjc4MzRmZWQ4ZDQxYjcx
NjkyMDQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxv
Y2suaApAQCAtMzgsNyArMzgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTdHls
ZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJveE1v
ZGVsSW5mb0Zyb21TdHlsZSgpOwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVj
dG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsK
KyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25z
dCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2
b2lkIHdpbGxCZURlc3Ryb3llZCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2Uo
U3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWlu
ZXIuY3BwCmluZGV4IGQyOWQ4NWVjOTM5NzFkZWUxOGRiMTJiZDhlNzgwNWY1ODE3NzJmMWUuLjg5
NWIyNTQ0OTAwMTIzZmRiZjNlYTAyNTg1NGNiOWNlZGJlMDRmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5j
cHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBSZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OnBhaW50
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikKICAgICAvLyBUaGlzIHN1YnRyZWUgZG9l
cyBub3QgcGFpbnQuCiB9CiAKLXZvaWQgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjphYnNvbHV0
ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCopCit2b2lkIFJlbmRlclNWR0hpZGRlbkNv
bnRhaW5lcjo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqKSBjb25zdAog
ewogICAgIC8vIFRoaXMgc3VidHJlZSBkb2VzIG5vdCB0YWtlIHVwIHNwYWNlIG9yIHBhaW50CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRl
bkNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRk
ZW5Db250YWluZXIuaAppbmRleCBlZmZmOTIxNTFkMmMzNjFhNmQwYzhkOTc3N2IzMWY2MzQ0NjRk
MTBjLi5mMjZjNWZjNjFhMzdmODIwN2Q0ZDY0OWJlNjgwOWQ1MmEyZjg4MjVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFp
bmVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
UGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICAKICAgICB2aXJ0dWFsIExheW91
dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3Qq
KSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1
dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFs
IHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBj
b25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQs
IEhpdFRlc3RBY3Rpb24pOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW5saW5lLmNwcAppbmRleCBmNGEyOWUyODRkNGYzYmE1NzliYjNkOGJjNTc4ZjYw
NzE1OGJjZGI2Li5jMjIyNDRmYzZlMTBlOWJmZTBhYTEzZDcwNGRmN2UyODc2MzEyN2MyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCkBA
IC04Miw5ICs4Miw5IEBAIHZvaWQgUmVuZGVyU1ZHSW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVy
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyCiAgICAgU1ZHUmVuZGVyU3Vw
cG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcih0aGlzLCByZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zv
cm1TdGF0ZSwgd2FzRml4ZWQpOwogfQogCi12b2lkIFJlbmRlclNWR0lubGluZTo6YWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5k
ZXJTVkdJbmxpbmU6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29s
KiB3YXNGaXhlZCkgY29uc3QKIHsKLSAgICBSZW5kZXJPYmplY3QqIG9iamVjdCA9IFJlbmRlclNW
R1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3Rvcih0aGlzKTsKKyAgICBjb25zdCBSZW5k
ZXJPYmplY3QqIG9iamVjdCA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNl
c3Rvcih0aGlzKTsKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAppbmRleCAwYTYwODM3
ZjQ3NzU5NjkwMzdlODQ5NzViY2YyMDA4MDY2YmI4MmY3Li5kMmZhMWNjNTI0MDI0YjYxYWE3ZDRh
YTc3YTRlOGRkOGU1NjA4NDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW5saW5lLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVS
ZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5
b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIG1h
cExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IGJvb2wgdXNlVHJhbnNmb3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBib29sKiB3
YXNGaXhlZCA9IDApIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0
ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiBwcml2
YXRlOgogICAgIHZpcnR1YWwgSW5saW5lRmxvd0JveCogY3JlYXRlSW5saW5lRmxvd0JveCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2Jq
ZWN0LmNwcAppbmRleCBjMmUzZmRmZjgwNWQ3Nzg4ZDVlZmU3Y2RiYmZjMTVhN2ZlM2M2NmU5Li43
MDg2ZDRjZTkxZTY2NDVjMWUxYzcwZDgzYmM0ZjQ5YzgyZmNjYWI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcApAQCAt
NzAsMTQgKzcwLDE0IEBAIExheW91dFJlY3QgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om91dGxpbmVC
b3VuZHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByCiAgICAgcmV0dXJuIGNvbnRh
aW5lclJlbGF0aXZlUXVhZC5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwogfQogCi12b2lkIFJlbmRl
clNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMs
IGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkKK3ZvaWQgUmVuZGVyU1ZHTW9k
ZWxPYmplY3Q6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3Qg
TGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewogICAgIExheW91dFJlY3Qg
cmVjdCA9IGVuY2xvc2luZ0xheW91dFJlY3Qoc3Ryb2tlQm91bmRpbmdCb3goKSk7CiAgICAgcmVj
dC5tb3ZlQnkoYWNjdW11bGF0ZWRPZmZzZXQpOwogICAgIHJlY3RzLmFwcGVuZChyZWN0KTsKIH0K
IAotdm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRR
dWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6
YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBj
b25zdAogewogICAgIHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKHN0cm9rZUJvdW5k
aW5nQm94KCksIGZhbHNlLCB3YXNGaXhlZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCmluZGV4IGMyOGQzYzY2MDdkNTU0
ZWEyMGMyYmE1YzVhZWVlZGNjMmRlNzNiNzkuLjcwNDFkNDQ5ZWY2MzJjNGZjMzAwOTI2MGY5MmMw
MDAzYjAxMGQ3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHTW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR01vZGVsT2JqZWN0LmgKQEAgLTU1LDggKzU1LDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwogICAg
IHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UG9pbnQqKSBjb25zdDsKIAotICAgIHZp
cnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91
dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVh
ZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lk
IGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogICAgIHZpcnR1YWwg
dm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwg
Ym9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hh
bmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCmluZGV4IDU3YjRm
NTc0ZWEwMDIwNWQzMzRhMDA2N2Q4ZmY2NmUzNTQ1NWVjMjguLjE0NTNjYjE2YTYwMmEwMjhmYWI4
MzRhNTU2YzI4ZjVmMTQwN2IxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAtMjI1LDcgKzIyNSw3IEBAIFZpc2libGVQb3NpdGlvbiBS
ZW5kZXJTVkdUZXh0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludElu
Q29udGVuCiAgICAgcmV0dXJuIGNsb3Nlc3RCb3gtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9p
bnQoTGF5b3V0UG9pbnQocG9pbnRJbkNvbnRlbnRzLngoKSwgY2xvc2VzdEJveC0+eSgpKSk7CiB9
CiAKLXZvaWQgUmVuZGVyU1ZHVGV4dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYg
cXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJTVkdUZXh0OjphYnNvbHV0ZVF1YWRz
KFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAg
cXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1YWQoc3Ryb2tlQm91bmRpbmdCb3goKSwgZmFs
c2UsIHdhc0ZpeGVkKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVGV4dC5oCmluZGV4IGIzZTBmNDNmOGY2NDljN2ZhNjdlMGI4NDIwMzY3YWYwZDZlOTJkM2Uu
LmEwYWRhNGNiNGVmZTk4MGNhYmUyN2E5ZmE1MDRiYWEzOTAxODlkYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCkBAIC02MCw3ICs2MCw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBh
YnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZp
cnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4
ZWQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RG
b3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBkZjhhYzJlYWJkMjEy
NDUxYzBjNzQ3ZTBlNmU0ZjM3M2RjNmIxMWMzLi5jOTA3YWU4MjI1MDgwODIyMTYwNDI1OTgzNmZk
ZDhmYWQ3MDRiNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMDIs
NyArMjAyLDcgQEAgUGFzc1JlZlB0cjxDbGllbnRSZWN0PiBJbnRlcm5hbHM6OmJvdW5kaW5nQm94
KEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGUKICAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAg
ICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIENsaWVudFJlY3Q6OmNy
ZWF0ZShyZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CisgICAgcmV0dXJuIENs
aWVudFJlY3Q6OmNyZWF0ZShyZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmlu
Z1RyYW5zZm9ybXMoKSk7CiB9CiAKIHVuc2lnbmVkIEludGVybmFsczo6bWFya2VyQ291bnRGb3JO
b2RlKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFt
ZS5jcHAKaW5kZXggNWYxMmUxMDE0MzlmNWZiZjBkNmNkY2IxMDM0MTE3MDYxYjU5MjdmNC4uMDdm
MmRmOTg3ZDJjZmY1NmRmYzhkODdkN2E1Y2FiYjVjMTk2NmUxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2ViZnJhbWUuY3BwCkBAIC0xNzUxLDcgKzE3NTEsNyBAQCBRV2ViSGl0VGVzdFJlc3VsdFByaXZh
dGU6OlFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0
CiAgICAgaW1hZ2VVcmwgPSBoaXRUZXN0LmFic29sdXRlSW1hZ2VVUkwoKTsKICAgICBpbm5lck5v
ZGUgPSBoaXRUZXN0LmlubmVyTm9kZSgpOwogICAgIGlubmVyTm9uU2hhcmVkTm9kZSA9IGhpdFRl
c3QuaW5uZXJOb25TaGFyZWROb2RlKCk7Ci0gICAgYm91bmRpbmdSZWN0ID0gaW5uZXJOb25TaGFy
ZWROb2RlID8gaW5uZXJOb25TaGFyZWROb2RlLT5yZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5n
Qm94UmVjdCh0cnVlKSA6IEludFJlY3QoKTsKKyAgICBib3VuZGluZ1JlY3QgPSBpbm5lck5vblNo
YXJlZE5vZGUgPyBpbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlcmVyKCktPmFic29sdXRlQm91bmRp
bmdCb3hSZWN0KCkgOiBJbnRSZWN0KCk7CiAgICAgV2ViQ29yZTo6SW1hZ2UgKmltZyA9IGhpdFRl
c3QuaW1hZ2UoKTsKICAgICBpZiAoaW1nKSB7CiAgICAgICAgIFFQaXhtYXAgKnBpeCA9IGltZy0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCBl
ODIyOTFmNzhiY2ExMTQ4MjczYjc5ZWMxN2E2NGM4ODhmYmM5MTIyLi41YWI1NGU5NWNlNThkMDBm
MjNjNTlkYjM3ZDE1ODRmYjhhNzNiYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4v
V2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCkBAIC0xNDMs
NyArMTQzLDggQEAgRVhQT1JUUwogICAgICAgICA/PzBDbGllbnRSZWN0QFdlYkNvcmVAQEFBRUBY
WgogICAgICAgICA/PzBTdHJpbmdAV1RGQEBRQUVAUEJEQFoKICAgICAgICAgPz8wU3RyaW5nQFdU
RkBAUUFFQFBCX1dAWgotICAgICAgICA/YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RAUmVuZGVyT2Jq
ZWN0QFdlYkNvcmVAQFFBRT9BVkludFJlY3RAMkBfTkBaCisgICAgICAgID9hYnNvbHV0ZUJvdW5k
aW5nQm94UmVjdEBSZW5kZXJPYmplY3RAV2ViQ29yZUBAUUJFP0FWSW50UmVjdEAyQF9OQFoKKyAg
ICAgICAgP2Fic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zQFJlbmRlck9i
amVjdEBXZWJDb3JlQEBRQkU/QVZJbnRSZWN0QDJAWFoKICAgICAgICAgP2FkZEBBdG9taWNTdHJp
bmdAV1RGQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAyQFBCREBaCiAgICAg
ICAgID9hZGRTbG93Q2FzZUBBdG9taWNTdHJpbmdAV1RGQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3Ry
aW5nSW1wbEBXVEZAQEAyQFBBVlN0cmluZ0ltcGxAMkBAWgogICAgICAgICA/Y2FjaGVET01TdHJ1
Y3R1cmVAV2ViQ29yZUBAWUFQQVZTdHJ1Y3R1cmVASlNDQEBQQVZKU0RPTUdsb2JhbE9iamVjdEAx
QFBBVjIzQFBCVUNsYXNzSW5mb0AzQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4v
V2ViS2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYK
aW5kZXggYWExZDMxNjk0NGEyZGYxM2IzMzhiNzYxMTY1ZDZiYTM1ZWY4NWI1NC4uN2Q3NDYyOTBl
M2IzYTkwM2Y0M2Y1NjA4OWM3ZjRkOTkwMWI2YmI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
Q0ZMaXRlLmRlZgpAQCAtMTM1LDcgKzEzNSw4IEBAIEVYUE9SVFMKICAgICAgICAgPz8wU3RyaW5n
QFdURkBAUUFFQFBCX1dAWgogICAgICAgICA/PzFOb2RlUmVuZGVyaW5nQ29udGV4dEBXZWJDb3Jl
QEBRQUVAWFoKICAgICAgICAgPz8xUmFuZ2VAV2ViQ29yZUBAUUFFQFhaCi0gICAgICAgID9hYnNv
bHV0ZUJvdW5kaW5nQm94UmVjdEBSZW5kZXJPYmplY3RAV2ViQ29yZUBAUUFFP0FWSW50UmVjdEAy
QF9OQFoKKyAgICAgICAgP2Fic29sdXRlQm91bmRpbmdCb3hSZWN0QFJlbmRlck9iamVjdEBXZWJD
b3JlQEBRQkU/QVZJbnRSZWN0QDJAX05AWgorICAgICAgICA/YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3RJZ25vcmluZ1RyYW5zZm9ybXNAUmVuZGVyT2JqZWN0QFdlYkNvcmVAQFFCRT9BVkludFJlY3RA
MkBYWgogICAgICAgICA/YWRkQEF0b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZT
dHJpbmdJbXBsQFdURkBAQDJAUEJEQFoKICAgICAgICAgP2FkZFNsb3dDYXNlQEF0b21pY1N0cmlu
Z0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEFWU3RyaW5nSW1w
bEAyQEBaCiAgICAgICAgID9jYWNoZURPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBBVlN0cnVjdHVy
ZUBKU0NAQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWMjNAUEJVQ2xhc3NJbmZvQDNAQFoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDFhYjk3MzczMzU4YzNhOGIyNGZhMzUxNTY2ZmM2Zjg5
MTliZGE0ZTMuLjJmZmJlOTk1NDdiM2I2NGNlYzVlYTFhNDBkZWFhOGM3YzYwZDU3ZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90
b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtNDEsNyArNDEsNyBAQCBfWk43V2ViQ29yZTEwQ2xpZW50
UmVjdEMxRVJLTlNfN0ludFJlY3RFOwogX1pON1dlYkNvcmUxMUV2ZW50VGFyZ2V0MTd0b0dlbmVy
YXRlZFN0cmVhbUV2OwogX1pON1dlYkNvcmUxMUV2ZW50VGFyZ2V0OHRvU3RyZWFtRXY7CiBfWk43
V2ViQ29yZTEySlNET01XcmFwcGVyMzR2aXJ0dWFsRnVuY3Rpb25Ub1ByZXZlbnRXZWFrVnRhYmxl
RXY7Ci1fWk43V2ViQ29yZTEyUmVuZGVyT2JqZWN0MjNhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEVi
OworX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QyM2Fic29sdXRlQm91bmRpbmdCb3hSZWN0RWI7
CiBfWk43V2ViQ29yZTEzY3JlYXRlV3JhcHBlckVQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9N
R2xvYmFsT2JqZWN0RVBOU180Tm9kZUU7CiBfWk43V2ViQ29yZTE1c2V0RE9NRXhjZXB0aW9uRVBO
M0pTQzlFeGVjU3RhdGVFaTsKIF9aTjdXZWJDb3JlMTZIVE1MSW5wdXRFbGVtZW50MTdzZXRTdWdn
ZXN0ZWRWYWx1ZUVSS04zV1RGNlN0cmluZ0U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110014</attachid>
            <date>2011-10-06 13:55:52 -0700</date>
            <delta_ts>2011-10-06 14:35:39 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-69009-20111006165550.patch</filename>
            <type>text/plain</type>
            <size>46398</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY4NTQKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCBmZmYxYTc2Y2E1NzEwMWNmNTFmZTUzMzdiZGY5YmM5YTI4ZjI5M2Y1Li43MjM2
NzQ5MWE3ZmQ4OTA2MTAyOWNmYjc3OWE0ZGQyZDc3ZWRjYzY3IDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMTAtMDYgIEZhZHkgU2Ft
dWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDogTWFr
ZSBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVkIG1l
dGhvZHMgY29uc3QgYW5kIG1ha2UgaXRzIHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxvbmdl
ciBkZWZhdWx0IHRvIGZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02OTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKwor
ICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTEtMTAtMDYg
IE5heWFuIEt1bWFyIEsgIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBQcm92aWRl
IGNvbmZpZ3VyZSBvcHRpb24gdG8gc3dpdGNoIGJldHdlZW4gSlNDIGFuZCBWOC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA1MTA1NWJhMjE5N2IzMDBiNGI0N2M5YmUxNWI0MDc5OTBlNTgzODkxLi5kMjJiNWFjMWQy
Nzc1ODg5MGRmZjY1MzA3M2RhNGUzNGY2NTczYmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODgg
QEAKKzIwMTEtMTAtMDYgIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgQ29kZSBjbGVhbi11cDogTWFrZSBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdC
b3hSZWN0IGFuZCBhc3NvY2lhdGVkIG1ldGhvZHMgY29uc3QgYW5kIG1ha2UgaXRzIHBhcmFtZXRl
ciB1c2VUcmFuc2Zvcm1zIG5vIGxvbmdlciBkZWZhdWx0IHRvIGZhbHNlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTAwOQorCisgICAgICAgIFJldmll
d2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBVcGNvbWluZyBwYXRjaGVzIG1heSBtYWtl
IHVzZSBvZiBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCBvbiBhIGNvbnN0IFJlbmRlck9iamVjdCwg
c28gdGhpcyBuZWVkZWQgdG8gYmUgZml4ZWQuCisgICAgICAgIE1ha2luZyB1c2VUcmFuc2Zvcm1z
IGRlZmF1bHQgdG8gdHJ1ZSBpbnN0ZWFkIG9mIGZhbHNlIGFuZCByZXBsYWNpbmcgaW5zdGFuY2Vz
IG9mIGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkgdG8KKyAgICAgICAgYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKSBwYXJ0aWFsbHkgYWRkcmVzZXMgLy8gRklYTUU6
IHVzZVRyYW5zZm9ybXMgc2hvdWxkIGdvIGF3YXkgZXZlbnR1YWxseS4KKworICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OnNjcmVlblJlY3QpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OmdldFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVu
ZGVyUmVjdCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1iRWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tUG9p
bnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6c3RhcnRT
cGVlY2hJbnB1dCk6CisgICAgICAgICogaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHA6
CisgICAgICAgICogcGx1Z2lucy9JRnJhbWVTaGltU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpnZXRQbHVnaW5PY2NsdXNpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFic29sdXRlUmVjdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFp
bnRPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySUZyYW1lOjpmbGF0dGVuRnJhbWUpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjph
YnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6Y3VsbGVkSW5s
aW5lQWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFic29s
dXRlUXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVB
YnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1lbnVMaXN0OjpzaG93UG9wdXApOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5n
Qm94UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkZEFic29sdXRlUmVj
dEZvckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6cGFpbnRpbmdSb290
UmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0
OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmFic29sdXRl
UXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnNob3dQb3B1cCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lU2FmYXJpOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRS
ZXN1bHRzQnV0dG9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclZpZXc6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJWaWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdCbG9jazo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR0hpZGRlbkNvbnRhaW5lcjo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6
OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5l
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVSZWN0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVRdWFkcyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdUZXh0OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1RleHQuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6OmJvdW5kaW5nQm94KToKKwogMjAxMS0xMC0wNiAgR2F2aW4gUGV0
ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9yZz4KIAogICAgICAgICBjb25kaXRpb25hbGl6ZSBtX2Nh
Y2hlZFNjcmlwdCBzdGFja3MgdG8ganVzdCBDaHJvbWl1bSBwb3J0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IDNlZmM0MmMwZjM0YzQ0OTc0NWI3MTAxNGFlNzI3ODMzMjdjMmZkMDYuLjFkZjRkN2Zm
MTI5NTAwYmM3ZjY3NmMwY2I1MTQ4ZWM5NzJhMDhmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC0yODEsNyArMjgxLDYgQEAgX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQ5c3Bvb2xSZWN0RVJO
U18xNUdyYXBoaWNzQ29udGV4dEVSS05TXzdJbnRSZWN0RQogX19aTjdXZWJDb3JlMTJQcmludENv
bnRleHRDMUVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3JlMTJQcmludENvbnRleHREMUV2CiBfX1pO
N1dlYkNvcmUxMlJlbmRlck9iamVjdDE2cmVwYWludFJlY3RhbmdsZUVSS05TXzdJbnRSZWN0RWIK
LV9fWk43V2ViQ29yZTEyUmVuZGVyT2JqZWN0MjNhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEViCiBf
X1pON1dlYkNvcmUxMlJlbmRlcldpZGdldDI4cmVzdW1lV2lkZ2V0SGllcmFyY2h5VXBkYXRlc0V2
CiBfX1pON1dlYkNvcmUxMlJlbmRlcldpZGdldDI5c3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0
ZXNFdgogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXIxMHdyYXBOU0RhdGFFUDZOU0RhdGEKQEAg
LTExMzksNiArMTEzOCw3IEBAIF9fWk5LN1dlYkNvcmUxMVNjcmlwdFZhbHVlOWdldFN0cmluZ0VQ
TjNKU0M5RXhlY1N0YXRlRVJOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTJJY29uRGF0YWJh
c2UxMmRhdGFiYXNlUGF0aEV2CiBfX1pOSzdXZWJDb3JlMTJJY29uRGF0YWJhc2UyNHNob3VsZFN0
b3BUaHJlYWRBY3Rpdml0eUV2CiBfX1pOSzdXZWJDb3JlMTJJY29uRGF0YWJhc2U5aXNFbmFibGVk
RXYKK19fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDIzYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RF
YgogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTRlbmNsb3NpbmdMYXllckV2CiBfX1pOSzdX
ZWJDb3JlMTJSZW5kZXJPYmplY3QxNWxvY2FsVG9BYnNvbHV0ZUVSS05TXzEwRmxvYXRQb2ludEVi
YgogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0NHZpZXdFdgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CmluZGV4IGIxNjYyM2JhYWM5MzEwMWIxM2MyMzRkNDMzNDU2N2JlMmU2N2U2MGUuLmU4MDMzZTM1
MmQzN2FmM2I3YjAwYzIyN2VlNzMyY2I0ZDBiZGY0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
QEAgLTU3Myw3ICs1NzMsOCBAQCBMYXlvdXRSZWN0IEVsZW1lbnQ6OnNjcmVlblJlY3QoKSBjb25z
dAogewogICAgIGlmICghcmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsK
LSAgICByZXR1cm4gcmVuZGVyZXIoKS0+dmlldygpLT5mcmFtZVZpZXcoKS0+Y29udGVudHNUb1Nj
cmVlbihyZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKKyAgICAvLyBGSVhN
RTogdGhpcyBzaG91bGQgcHJvYmFibHkgcmVzcGVjdCB0cmFuc2Zvcm1zCisgICAgcmV0dXJuIHJl
bmRlcmVyKCktPnZpZXcoKS0+ZnJhbWVWaWV3KCktPmNvbnRlbnRzVG9TY3JlZW4ocmVuZGVyZXIo
KS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKSk7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKGNvbnN0IEVsZW1lbnQq
IGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKaW5kZXggODk1OWYwYjZmNzYwZWZhYmJhYzc4MTlmY2VmYjczNTI3
NmE0MzI5Yi4uNDcxMjk5MDIxYzI2MWFlNjg4MDIyYjFhZDcyZWFlZWM3MWFiYjYxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcApAQCAtODE4LDcgKzgxOCw3IEBAIFJlbmRlckJveE1vZGVsT2JqZWN0KiBOb2Rl
OjpyZW5kZXJCb3hNb2RlbE9iamVjdCgpIGNvbnN0CiBMYXlvdXRSZWN0IE5vZGU6OmdldFJlY3Qo
KSBjb25zdAogewogICAgIGlmIChyZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gcmVuZGVyZXIo
KS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QodHJ1ZSk7CisgICAgICAgIHJldHVybiByZW5kZXJl
cigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwogICAgIHJldHVybiBMYXlvdXRSZWN0KCk7
CiB9CiAgICAgCkBAIC04MzAsNyArODMwLDcgQEAgTGF5b3V0UmVjdCBOb2RlOjpyZW5kZXJSZWN0
KGJvb2wqIGlzUmVwbGFjZWQpCiAgICAgd2hpbGUgKHJlbmRlcmVyICYmICFyZW5kZXJlci0+aXNC
b2R5KCkgJiYgIXJlbmRlcmVyLT5pc1Jvb3QoKSkgewogICAgICAgICBpZiAocmVuZGVyZXItPmlz
UmVuZGVyQmxvY2soKSB8fCByZW5kZXJlci0+aXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKSB8
fCByZW5kZXJlci0+aXNSZXBsYWNlZCgpKSB7CiAgICAgICAgICAgICAqaXNSZXBsYWNlZCA9IHJl
bmRlcmVyLT5pc1JlcGxhY2VkKCk7Ci0gICAgICAgICAgICByZXR1cm4gcmVuZGVyZXItPmFic29s
dXRlQm91bmRpbmdCb3hSZWN0KHRydWUpOworICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5h
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwogICAgICAgICB9CiAgICAgICAgIHJlbmRlcmVyID0g
cmVuZGVyZXItPnBhcmVudCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCmluZGV4IDVkMTc4YWYwNzlhYjRjZmJkOWQwZjcy
MDQzZmFmM2Q4N2M0OGJjYjguLjkyNmIzOTNkM2RkMTcwNWY1ZmUzMWI3NmZmMzgwODVhODM4ZDI4
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVt
ZW50LmNwcApAQCAtMjE2LDcgKzIxNiw4IEBAIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpzZXRQ
b3NpdGlvbkZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiAgICAgLy8gV2UgbmVl
ZCB0byBjYWxjdWxhdGUgY3VycmVudFBvc2l0aW9uIGZyb20gYWJzb2x1dGUgcG9pbnRzIGJlY2F1
ZSB0aGUKICAgICAvLyByZW5kZXJlciBmb3IgdGhpcyBub2RlIGlzIHVzdWFsbHkgb24gYSBsYXll
ciBhbmQgcmVuZGVyQm94KCktPngoKSBhbmQKICAgICAvLyB5KCkgYXJlIHVudXNhYmxlLgotICAg
IExheW91dFBvaW50IGFic29sdXRlVGh1bWJPcmlnaW4gPSByZW5kZXJCb3goKS0+YWJzb2x1dGVC
b3VuZGluZ0JveFJlY3QoKS5sb2NhdGlvbigpOworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBw
cm9iYWJseSByZXNwZWN0IHRyYW5zZm9ybXMuCisgICAgTGF5b3V0UG9pbnQgYWJzb2x1dGVUaHVt
Yk9yaWdpbiA9IHJlbmRlckJveCgpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJh
bnNmb3JtcygpLmxvY2F0aW9uKCk7CiAgICAgTGF5b3V0UG9pbnQgYWJzb2x1dGVTbGlkZXJDb250
ZW50T3JpZ2luID0gcm91bmRlZExheW91dFBvaW50KGlucHV0LT5yZW5kZXJlcigpLT5sb2NhbFRv
QWJzb2x1dGUoKSk7CiAgICAgaWYgKGlzVmVydGljYWwpIHsKICAgICAgICAgdHJhY2tTaXplID0g
aW5wdXQtPnJlbmRlckJveCgpLT5jb250ZW50SGVpZ2h0KCkgLSByZW5kZXJCb3goKS0+aGVpZ2h0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmNwcAppbmRleCBiZjE4NWNmN2IwZjA5NmI5M2M4ODgzMjA2YmEzMzc0ZDA0
OTM0NWQ1Li40NzYyMTgxMzViYWQ3MGI4NTMwZTNmZDc3YTA5ODBkNDM5NjVlNTJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHAKQEAgLTUzNSw3ICs1MzUsOCBAQCB2b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25F
bGVtZW50OjpzdGFydFNwZWVjaElucHV0KCkKICAgICBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4g
aW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oc2hhZG93QW5jZXN0b3JOb2Rl
KCkpOwogICAgIEF0b21pY1N0cmluZyBsYW5ndWFnZSA9IGlucHV0LT5jb21wdXRlSW5oZXJpdGVk
TGFuZ3VhZ2UoKTsKICAgICBTdHJpbmcgZ3JhbW1hciA9IGlucHV0LT5nZXRBdHRyaWJ1dGUod2Vi
a2l0Z3JhbW1hckF0dHIpOwotICAgIEludFJlY3QgcmVjdCA9IHJlbmRlcmVyKCktPmFic29sdXRl
Qm91bmRpbmdCb3hSZWN0KCk7CisgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHByb2JhYmx5IHJl
c3BlY3QgdHJhbnNmb3JtcworICAgIEludFJlY3QgcmVjdCA9IHJlbmRlcmVyKCktPmFic29sdXRl
Qm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAgICAgaWYgKHNwZWVjaElucHV0
KCktPnN0YXJ0UmVjb2duaXRpb24obV9saXN0ZW5lcklkLCByZWN0LCBsYW5ndWFnZSwgZ3JhbW1h
ciwgZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCiAgICAgICAgIHNldFN0YXRlKFJlY29y
ZGluZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhp
Z2hsaWdodGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0
ZXIuY3BwCmluZGV4IGU2ODliNTI1MGI2YTg2OGVhNWE1NTBkNmRhYWJhMjk0NWE3OGY2OWQuLmY4
YmZiNjBmOWFkZWQyMGIyZTEwNjgwYTA4Yzk2NDI4NGRhODRmNTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwCkBAIC0zNjEsNyArMzYxLDcg
QEAgdm9pZCBkcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEhpZ2hs
aWdodERhdGEqIGhpZ2hsaWdodERhdGEpCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFNp
emUgbWFpbkZyYW1lT2Zmc2V0ID0gZnJhbWVUb01haW5GcmFtZU9mZnNldChjb250YWluaW5nRnJh
bWUpOwotICAgIExheW91dFJlY3QgYm91bmRpbmdCb3ggPSByZW5kZXJlci0+YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QodHJ1ZSk7CisgICAgTGF5b3V0UmVjdCBib3VuZGluZ0JveCA9IHJlbmRlcmVy
LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwogCiAgICAgYm91bmRpbmdCb3gubW92ZShtYWlu
RnJhbWVPZmZzZXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0lGcmFt
ZVNoaW1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBv
cnQuY3BwCmluZGV4IGMwYWExZTQxMzZjNDk0MmYyOWFmODg0ZjMyMTY4ODVjN2FjNTViNzkuLjgy
NjU3NjUxMTBhZTU0NjhkMDMwNWYzZWZiMDQ2ZDI1YWRkN2ZlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9p
ZCBnZXRQbHVnaW5PY2NsdXNpb25zKEVsZW1lbnQqIGVsZW1lbnQsIFdpZGdldCogcGFyZW50V2lk
Z2V0LCBjb25zdCBJbnRSZWN0JgogICAgICAgICBSZW5kZXJPYmplY3QqIGlmcmFtZVJlbmRlcmVy
ID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKIAogICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFt
ZShIVE1MTmFtZXM6OmlmcmFtZVRhZykKLSAgICAgICAgICAgICYmIGlmcmFtZVJlbmRlcmVyLT5h
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpLmludGVyc2VjdHMoZnJhbWVSZWN0KQorICAgICAgICAg
ICAgJiYgaWZyYW1lUmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFu
c2Zvcm1zKCkuaW50ZXJzZWN0cyhmcmFtZVJlY3QpCiAgICAgICAgICAgICAmJiAoIWlmcmFtZVJl
bmRlcmVyLT5zdHlsZSgpIHx8IGlmcmFtZVJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkg
PT0gVklTSUJMRSkpIHsKICAgICAgICAgICAgIGdldE9iamVjdFN0YWNrKGlmcmFtZVJlbmRlcmVy
LCAmaWZyYW1lWnN0YWNrKTsKICAgICAgICAgICAgIGlmIChpZnJhbWVJc0Fib3ZlUGx1Z2luKGlm
cmFtZVpzdGFjaywgcGx1Z2luWnN0YWNrKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKaW5kZXggODcyZGY0NzBlODIzZDRiNWFkZTdhYTFkYmUyOTEyNThmNjFiZDg3
MC4uOTgzMTJmN2YyOWMwMjg0ZDIwM2RkNGYyZWFiNTYxYzU1NGQwZjU4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC01ODc5LDcgKzU4NzksNyBAQCB2b2lk
IFJlbmRlckJsb2NrOjpzZXRQYWdlTG9naWNhbE9mZnNldChpbnQgbG9naWNhbE9mZnNldCkKICAg
ICBtX3JhcmVEYXRhLT5tX3BhZ2VMb2dpY2FsT2Zmc2V0ID0gbG9naWNhbE9mZnNldDsKIH0KIAot
dm9pZCBSZW5kZXJCbG9jazo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3Rz
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCit2b2lkIFJlbmRlckJsb2Nr
OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QKIHsKICAgICAvLyBGb3IgYmxvY2tzIGluc2lk
ZSBpbmxpbmVzLCB3ZSBnbyBhaGVhZCBhbmQgaW5jbHVkZSBtYXJnaW5zIHNvIHRoYXQgd2UgcnVu
IHJpZ2h0IHVwIHRvIHRoZQogICAgIC8vIGlubGluZSBib3hlcyBhYm92ZSBhbmQgYmVsb3cgdXMg
KHRodXMgZ2V0dGluZyBtZXJnZWQgd2l0aCB0aGVtIHRvIGZvcm0gYSBzaW5nbGUgaXJyZWd1bGFy
CkBAIC01ODk1LDcgKzU4OTUsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVJlY3RzKFZl
Y3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhYwogICAgICAgICBy
ZWN0cy5hcHBlbmQoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSk7CiB9CiAK
LXZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRz
LCBib29sKiB3YXNGaXhlZCkKK3ZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICAvLyBGb3Ig
YmxvY2tzIGluc2lkZSBpbmxpbmVzLCB3ZSBnbyBhaGVhZCBhbmQgaW5jbHVkZSBtYXJnaW5zIHNv
IHRoYXQgd2UgcnVuIHJpZ2h0IHVwIHRvIHRoZQogICAgIC8vIGlubGluZSBib3hlcyBhYm92ZSBh
bmQgYmVsb3cgdXMgKHRodXMgZ2V0dGluZyBtZXJnZWQgd2l0aCB0aGVtIHRvIGZvcm0gYSBzaW5n
bGUgaXJyZWd1bGFyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IGY3
MzMwOWFkMDZkYmU4YjgyOTBjMDdlOGY0NzI3NzdhNTIzNTBkNTQuLmM5NTZkMmFhMzk5YjNlYjQ0
Y2M2MTljYTA0NGJkNjJlNWE5MzRlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5oCkBAIC03NDEsOCArNzQxLDggQEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0IGxvZ2lj
YWxMZWZ0U2VsZWN0aW9uT2Zmc2V0KFJlbmRlckJsb2NrKiByb290QmxvY2ssIExheW91dFVuaXQg
cG9zaXRpb24pOwogICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0U2VsZWN0aW9uT2Zmc2V0KFJl
bmRlckJsb2NrKiByb290QmxvY2ssIExheW91dFVuaXQgcG9zaXRpb24pOwogICAgIAotICAgIHZp
cnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91
dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVh
ZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7CisgICAgdmlydHVhbCB2b2lk
IGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogICAgIExheW91dFVu
aXQgZGVzaXJlZENvbHVtbldpZHRoKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgZGVzaXJlZENvbHVt
bkNvdW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4
IDVjMzZlNWU1YTJlOTE4NjdiNWM0NzU0YTYwMDgxMTMxYzQ5MzAzYTQuLjkwODRkNTc2ZDExN2Mx
NjQzZWI1ZjQ2ZWE0NjY5YmY2MTc2YzY3YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCkBAIC01MTYsMTIgKzUxNiwxMiBAQCB2b2lkIFJlbmRlckJveDo6c2V0U2Nyb2xs
VG9wKExheW91dFVuaXQgbmV3VG9wKQogICAgICAgICBsYXllcigpLT5zY3JvbGxUb1lPZmZzZXQo
bmV3VG9wLCBSZW5kZXJMYXllcjo6U2Nyb2xsT2Zmc2V0Q2xhbXBlZCk7CiB9CiAKLXZvaWQgUmVu
ZGVyQm94OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91
dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkKK3ZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVJlY3Rz
KFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9m
ZnNldCkgY29uc3QKIHsKICAgICByZWN0cy5hcHBlbmQoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9m
ZnNldCwgc2l6ZSgpKSk7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFJlbmRlckJveDo6YWJz
b2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25z
dAogewogICAgIHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdCgwLCAw
LCB3aWR0aCgpLCBoZWlnaHQoKSksIGZhbHNlLCB3YXNGaXhlZCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDI4Yzc2OGI5NGZhMTBiMDA2ZmE4NDkzZGMyN2U1Zjk1
OTQ4MTM3ZDMuLjk0Y2M0ZWM3OWVmOTdlMWVjNjE2NGI4YTRiOGI2NTEwNzVlNmUwOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTIzNCw4ICsyMzQsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbGxhcHNlZE1hcmdpbkJlZm9yZSgpIGNvbnN0IHsg
cmV0dXJuIG1hcmdpbkJlZm9yZSgpOyB9CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbGxhcHNl
ZE1hcmdpbkFmdGVyKCkgY29uc3QgeyByZXR1cm4gbWFyZ2luQWZ0ZXIoKTsgfQogCi0gICAgdmly
dHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJz
b2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxG
bG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogICAgIAogICAgIEludFJlY3QgcmVm
bGVjdGlvbkJveCgpIGNvbnN0OwogICAgIGludCByZWZsZWN0aW9uT2Zmc2V0KCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRy
b2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9s
LmNwcAppbmRleCBmOTQ0OTFmMzFjNWE4ZTVmZDIwMjI0NTAxOTU0ZTRiNDZlZjA4NDY2Li44NWI5
NGQ2YzcwOTM2ZTg3MTJiMzk4MmNlMzAwOGM5ZDNmODM1ZjJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKQEAgLTEzMiw3
ICsxMzIsOCBAQCB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbgogICAgICAgICAgICAgdGV4dFggPSBj
b250ZW50TGVmdCArIGNvbnRlbnRXaWR0aCgpIC0gYnV0dG9uQW5kSWNvbldpZHRoIC0gZm9udC53
aWR0aCh0ZXh0UnVuKTsKICAgICAgICAgLy8gV2Ugd2FudCB0byBtYXRjaCB0aGUgYnV0dG9uJ3Mg
YmFzZWxpbmUKICAgICAgICAgUmVuZGVyQnV0dG9uKiBidXR0b25SZW5kZXJlciA9IHRvUmVuZGVy
QnV0dG9uKGJ1dHRvbi0+cmVuZGVyZXIoKSk7Ci0gICAgICAgIExheW91dFVuaXQgdGV4dFkgPSBi
dXR0b25SZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS55KCkKKyAgICAgICAgLy8g
RklYTUU6IE1ha2UgdGhpcyB3b3JrIHdpdGggdHJhbnNmb3Jtcy4KKyAgICAgICAgTGF5b3V0VW5p
dCB0ZXh0WSA9IGJ1dHRvblJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5n
VHJhbnNmb3JtcygpLnkoKQogICAgICAgICAgICAgKyBidXR0b25SZW5kZXJlci0+YmFzZWxpbmVQ
b3NpdGlvbihBbHBoYWJldGljQmFzZWxpbmUsIHRydWUsIEhvcml6b250YWxMaW5lLCBQb3NpdGlv
bk9uQ29udGFpbmluZ0xpbmUpOwogCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxs
Q29sb3Ioc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBz
dHlsZSgpLT5jb2xvclNwYWNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZy
YW1lLmNwcAppbmRleCAxMTI5N2I1ZGI3YTlmN2EyZDA5ZTQ2NTk0M2M0ODdlMTg2ZjE1YWQwLi5j
ZTBmNDNiZDAzMDQxNTFhNDA4M2IwYTAyMGE5ZTJlZDk2MWIxM2RhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIGJvb2wgUmVu
ZGVySUZyYW1lOjpmbGF0dGVuRnJhbWUoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAv
LyBEbyBub3QgZmxhdHRlbiBvZmZzY3JlZW4gaW5uZXIgZnJhbWVzIGR1cmluZyBmcmFtZSBmbGF0
dGVuaW5nLCBhcyBmbGF0dGVuaW5nIG1pZ2h0IG1ha2UgdGhlbSB2aXNpYmxlLgotICAgIEludFJl
Y3QgYm91bmRpbmdSZWN0ID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBJbnRSZWN0
IGJvdW5kaW5nUmVjdCA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1z
KCk7CiAgICAgcmV0dXJuIGJvdW5kaW5nUmVjdC5tYXhYKCkgPiAwICYmIGJvdW5kaW5nUmVjdC5t
YXhZKCkgPiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3Bw
CmluZGV4IDZjYTlkM2ZiMWU5MmQwMmNiYzkwYmE0ZGMzM2JhMTliZDg0YjI4MDQuLjNmMDk2MzNi
MDA4ZDk1NmZhMWY3ZTIxODJlMzBjNGRkMjA1YWMzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgdm9pZCBSZW5kZXJJbmxp
bmU6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQpCiAgICAgbV9saW5lQm94ZXMucGFpbnQodGhpcywgcGFpbnRJbmZvLCBwYWludE9mZnNl
dCk7CiB9CiAKLXZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRS
ZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkKK3ZvaWQg
UmVuZGVySW5saW5lOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNv
bnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QKIHsKICAgICBpZiAoIWFs
d2F5c0NyZWF0ZUxpbmVCb3hlcygpKQogICAgICAgICBjdWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3Rz
KHRoaXMsIHJlY3RzLCB0b0xheW91dFNpemUoYWNjdW11bGF0ZWRPZmZzZXQpKTsKQEAgLTQ4NSw3
ICs0ODUsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0
UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYQogICAgIH0KIH0KIAotdm9pZCBSZW5k
ZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRlUmVjdHMoY29uc3QgUmVuZGVySW5saW5lKiBj
b250YWluZXIsIFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFNpemUmIG9m
ZnNldCkKK3ZvaWQgUmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKGNvbnN0
IFJlbmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25z
dCBMYXlvdXRTaXplJiBvZmZzZXQpIGNvbnN0CiB7CiAgICAgaWYgKCFjdWxsZWRJbmxpbmVGaXJz
dExpbmVCb3goKSkgewogICAgICAgICByZWN0cy5hcHBlbmQoSW50UmVjdChvZmZzZXQud2lkdGgo
KSwgb2Zmc2V0LmhlaWdodCgpLCAwLCAwKSk7CkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBSZW5k
ZXJJbmxpbmU6OmN1bGxlZElubGluZUFic29sdXRlUmVjdHMoY29uc3QgUmVuZGVySW5saW5lKiBj
b250YWluZXIsIFZlY3QKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVF1
YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFJlbmRl
cklubGluZTo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdh
c0ZpeGVkKSBjb25zdAogewogICAgIGlmICghYWx3YXlzQ3JlYXRlTGluZUJveGVzKCkpCiAgICAg
ICAgIGN1bGxlZElubGluZUFic29sdXRlUXVhZHModGhpcywgcXVhZHMpOwpAQCAtNTY5LDcgKzU2
OSw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpCiAgICAgICAgIGNvbnRpbnVhdGlvbigpLT5hYnNvbHV0
ZVF1YWRzKHF1YWRzLCB3YXNGaXhlZCk7CiB9CiAKLXZvaWQgUmVuZGVySW5saW5lOjpjdWxsZWRJ
bmxpbmVBYnNvbHV0ZVF1YWRzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8
RmxvYXRRdWFkPiYgcXVhZHMpCit2b2lkIFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1
dGVRdWFkcyhjb25zdCBSZW5kZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdG9yPEZsb2F0UXVhZD4m
IHF1YWRzKSBjb25zdAogewogICAgIGlmICghY3VsbGVkSW5saW5lRmlyc3RMaW5lQm94KCkpIHsK
ICAgICAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KCkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCBhZmQ0YWFkNDQ4YjBl
ODE4MTkzMjllYTBhYTY4NmU1YjA5Y2ViNjY3Li5mZTk1YWYxZmUxODc1NDI2NWJhOTc5MDlmN2Vk
YjZlYjNlNzNhZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCkBA
IC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luU3Rh
cnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luRW5kKCkgY29uc3Q7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25z
dCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9pZCBhYnNv
bHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1
YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRl
UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICAgICB2
aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBjb25z
dCBMYXlvdXRQb2ludCYpIGNvbnN0OwogCkBAIC0xMDIsOCArMTAyLDggQEAgcHJpdmF0ZToKICAg
ICBMYXlvdXRSZWN0IGN1bGxlZElubGluZVZpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3goKSBjb25z
dDsKICAgICBJbmxpbmVCb3gqIGN1bGxlZElubGluZUZpcnN0TGluZUJveCgpIGNvbnN0OwogICAg
IElubGluZUJveCogY3VsbGVkSW5saW5lTGFzdExpbmVCb3goKSBjb25zdDsKLSAgICB2b2lkIGN1
bGxlZElubGluZUFic29sdXRlUmVjdHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZl
Y3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFNpemUmKTsKLSAgICB2b2lkIGN1bGxlZElu
bGluZUFic29sdXRlUXVhZHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxG
bG9hdFF1YWQ+Jik7CisgICAgdm9pZCBjdWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKGNvbnN0IFJl
bmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRT
aXplJikgY29uc3Q7CisgICAgdm9pZCBjdWxsZWRJbmxpbmVBYnNvbHV0ZVF1YWRzKGNvbnN0IFJl
bmRlcklubGluZSogY29udGFpbmVyLCBWZWN0b3I8RmxvYXRRdWFkPiYpIGNvbnN0OwogCiAgICAg
dm9pZCBhZGRDaGlsZFRvQ29udGludWF0aW9uKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRl
ck9iamVjdCogYmVmb3JlQ2hpbGQpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZElnbm9yaW5n
Q29udGludWF0aW9uKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3Jl
Q2hpbGQgPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
ZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3Bw
CmluZGV4IDg5N2FhODhlYWYxZWEyYTQ2ZWQxMzZmNTBmN2M2MjYyMzkxMzllMDEuLjliYTNiNWU3
YTE5NzJjYzg0ZmMzNTQ2NGRjM2Y1ZGMyMWRhNzU0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgUmVuZGVy
TWVudUxpc3Q6OnNob3dQb3B1cCgpCiAgICAgLy8gQ29tcHV0ZSB0aGUgdG9wIGxlZnQgdGFraW5n
IHRyYW5zZm9ybXMgaW50byBhY2NvdW50LCBidXQgdXNlCiAgICAgLy8gdGhlIGFjdHVhbCB3aWR0
aCBvZiB0aGUgZWxlbWVudCB0byBzaXplIHRoZSBwb3B1cC4KICAgICBGbG9hdFBvaW50IGFic1Rv
cExlZnQgPSBsb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCgpLCBmYWxzZSwgdHJ1ZSk7Ci0gICAg
TGF5b3V0UmVjdCBhYnNCb3VuZHMgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIExh
eW91dFJlY3QgYWJzQm91bmRzID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5z
Zm9ybXMoKTsKICAgICBhYnNCb3VuZHMuc2V0TG9jYXRpb24ocm91bmRlZEludFBvaW50KGFic1Rv
cExlZnQpKTsKICAgICBtX3BvcHVwLT5zaG93KGFic0JvdW5kcywgZG9jdW1lbnQoKS0+dmlldygp
LAogICAgICAgICBzZWxlY3QtPm9wdGlvblRvTGlzdEluZGV4KHNlbGVjdC0+c2VsZWN0ZWRJbmRl
eCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDcz
MGJlMWRjZDFlMzQ2MTFiY2RmMjNlNjcxZDdhM2QzZmMwMjMwMGIuLjk0Yzg5OGQ4MzA1ODg3ZjI5
ZDY5MzFlZjg2MDQ2Mzc0NDZiYTIxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwCkBAIC0xMTY1LDcgKzExNjUsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6cGFp
bnRPdXRsaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMYXlvdXRS
ZQogICAgICAgICBncmFwaGljc0NvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiB9CiAK
LUludFJlY3QgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRy
YW5zZm9ybXMpCitJbnRSZWN0IFJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0JveFJlY3Qo
Ym9vbCB1c2VUcmFuc2Zvcm1zKSBjb25zdAogewogICAgIGlmICh1c2VUcmFuc2Zvcm1zKSB7CiAg
ICAgICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwpAQCAtMTIxNSwxNCArMTIxNSwxNCBAQCB2
b2lkIFJlbmRlck9iamVjdDo6YWJzb2x1dGVGb2N1c1JpbmdRdWFkcyhWZWN0b3I8RmxvYXRRdWFk
PiYgcXVhZHMpCiB2b2lkIFJlbmRlck9iamVjdDo6YWRkQWJzb2x1dGVSZWN0Rm9yTGF5ZXIoSW50
UmVjdCYgcmVzdWx0KQogewogICAgIGlmIChoYXNMYXllcigpKQotICAgICAgICByZXN1bHQudW5p
dGUoYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CisgICAgICAgIHJlc3VsdC51bml0ZShhYnNv
bHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpKTsKICAgICBmb3IgKFJlbmRl
ck9iamVjdCogY3VycmVudCA9IGZpcnN0Q2hpbGQoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJl
bnQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGN1cnJlbnQtPmFkZEFic29sdXRlUmVjdEZvckxh
eWVyKHJlc3VsdCk7CiB9CiAKIExheW91dFJlY3QgUmVuZGVyT2JqZWN0OjpwYWludGluZ1Jvb3RS
ZWN0KExheW91dFJlY3QmIHRvcExldmVsUmVjdCkKIHsKLSAgICBMYXlvdXRSZWN0IHJlc3VsdCA9
IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgTGF5b3V0UmVjdCByZXN1bHQgPSBhYnNv
bHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOwogICAgIHRvcExldmVsUmVj
dCA9IHJlc3VsdDsKICAgICBmb3IgKFJlbmRlck9iamVjdCogY3VycmVudCA9IGZpcnN0Q2hpbGQo
KTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGN1
cnJlbnQtPmFkZEFic29sdXRlUmVjdEZvckxheWVyKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggNmRkNGJhY2Y3MjgzNTQwODNkOTNjMmQ1MGI0YWMy
YzE4NTUxNmJlMS4uMGY2MDc5NDMxOWEwN2I4ZGQyOGY3NjhhM2M2Mjc4MGQ3NWJkZGY0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtNjM4LDEyICs2MzgsMTQg
QEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUgb2Zmc2V0IGZyb20gYW4gb2JqZWN0IHVwIHRo
ZSBjb250YWluZXIoKSBjaGFpbi4gQXNzZXJ0cyB0aGF0IG5vbmUgb2YgdGhlIGludGVybWVkaWF0
ZSBvYmplY3RzIGhhdmUgdHJhbnNmb3Jtcy4KICAgICBMYXlvdXRTaXplIG9mZnNldEZyb21BbmNl
c3RvckNvbnRhaW5lcihSZW5kZXJPYmplY3QqKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIHZv
aWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYs
IGNvbnN0IExheW91dFBvaW50JikgY29uc3QgeyB9CisKICAgICAvLyBGSVhNRTogdXNlVHJhbnNm
b3JtcyBzaG91bGQgZ28gYXdheSBldmVudHVhbGx5Ci0gICAgSW50UmVjdCBhYnNvbHV0ZUJvdW5k
aW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybXMgPSBmYWxzZSk7CisgICAgSW50UmVjdCBhYnNv
bHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybSA9IHRydWUpIGNvbnN0OworICAg
IEludFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKSBjb25z
dCB7IHJldHVybiBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChmYWxzZSk7IH0KIAogICAgIC8vIEJ1
aWxkIGFuIGFycmF5IG9mIHF1YWRzIGluIGFic29sdXRlIGNvb3JkcyBmb3IgbGluZSBib3hlcwot
ICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCog
Lyp3YXNGaXhlZCovID0gMCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mLCBib29sKiAvKndhc0ZpeGVkKi8gPSAwKSBjb25zdCB7IH0KIAogICAg
IHZvaWQgYWJzb2x1dGVGb2N1c1JpbmdRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggZTg4ODYxZjNkMDRhMDg2ODQ0
ZDNhNzBkMjE1YTQ3NGRlNjg5MjRjOS4uNmI2ZGEyNDQ0ZTEyYzczMjZmMTk2ZDY0Yjg4MTI1ODgy
NzRmOThjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMzAx
LDcgKzMwMSw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gUmVuZGVyVGV4dDo6b3JpZ2luYWxU
ZXh0KCkgY29uc3QKICAgICByZXR1cm4gKGUgJiYgZS0+aXNUZXh0Tm9kZSgpKSA/IHN0YXRpY19j
YXN0PFRleHQqPihlKS0+ZGF0YUltcGwoKSA6IDA7CiB9CiAKLXZvaWQgUmVuZGVyVGV4dDo6YWJz
b2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQpCit2b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUmVjdHMoVmVjdG9y
PExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0
KSBjb25zdAogewogICAgIGZvciAoSW5saW5lVGV4dEJveCogYm94ID0gZmlyc3RUZXh0Qm94KCk7
IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKQogICAgICAgICByZWN0cy5hcHBlbmQoZW5j
bG9zaW5nTGF5b3V0UmVjdChGbG9hdFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQgKyBib3gtPnRvcExl
ZnQoKSwgYm94LT5zaXplKCkpKSk7CkBAIC0zODgsNyArMzg4LDcgQEAgc3RhdGljIEludFJlY3Qg
ZWxsaXBzaXNSZWN0Rm9yQm94KElubGluZVRleHRCb3gqIGJveCwgdW5zaWduZWQgc3RhcnRQb3Ms
IHVuc2lnbmUKICAgICByZXR1cm4gSW50UmVjdCgpOwogfQogICAgIAotdm9pZCBSZW5kZXJUZXh0
OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQs
IENsaXBwaW5nT3B0aW9uIG9wdGlvbikKK3ZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkLCBDbGlwcGluZ09wdGlvbiBv
cHRpb24pIGNvbnN0CiB7CiAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3ggPSBmaXJzdFRleHRC
b3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKICAgICAgICAgSW50UmVjdCBi
b3VuZGFyaWVzID0gYm94LT5jYWxjdWxhdGVCb3VuZGFyaWVzKCk7CkBAIC00MDUsNyArNDA1LDcg
QEAgdm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFk
cywgYm9vbCogd2FzRml4ZWQsIENsaXBwaW4KICAgICB9CiB9CiAgICAgCi12b2lkIFJlbmRlclRl
eHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhl
ZCkKK3ZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVh
ZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGFic29sdXRlUXVhZHMocXVhZHMsIHdh
c0ZpeGVkLCBOb0NsaXBwaW5nKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5o
CmluZGV4IDQwMjBkOGFhMzcxMjJkMTI1ZDFkYzRlZjExMDcwOWQxOGY5NTEzOTguLjQyZTlhZWM5
NmIzYjMyYjJkMTllM2JjNTE5NWMxM2Q0NzFjYTA5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuaApAQCAtNTQsMTQgKzU0LDE0IEBAIHB1YmxpYzoKICAgICBJbmxpbmVUZXh0
Qm94KiBjcmVhdGVJbmxpbmVUZXh0Qm94KCk7CiAgICAgdm9pZCBkaXJ0eUxpbmVCb3hlcyhib29s
IGZ1bGxMYXlvdXQpOwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExh
eW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKKyAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlv
dXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OwogICAgIHZvaWQgYWJzb2x1dGVSZWN0
c0ZvclJhbmdlKFZlY3RvcjxJbnRSZWN0PiYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5z
aWduZWQgZW5kT2Zmc2V0ID0gVUlOVF9NQVgsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFs
c2UsIGJvb2wqIHdhc0ZpeGVkID0gMCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQg
YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsK
ICAgICB2b2lkIGFic29sdXRlUXVhZHNGb3JSYW5nZShWZWN0b3I8RmxvYXRRdWFkPiYsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gVUlOVF9NQVgsIGJvb2wg
dXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0gMCk7CiAKICAgICBl
bnVtIENsaXBwaW5nT3B0aW9uIHsgTm9DbGlwcGluZywgQ2xpcFRvRWxsaXBzaXMgfTsKLSAgICB2
b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCA9IDAs
IENsaXBwaW5nT3B0aW9uID0gTm9DbGlwcGluZyk7CisgICAgdm9pZCBhYnNvbHV0ZVF1YWRzKFZl
Y3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQgPSAwLCBDbGlwcGluZ09wdGlvbiA9IE5v
Q2xpcHBpbmcpIGNvbnN0OwogCiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25G
b3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IDE3MDk3
YjFmYmFiMzYxODA4OGUwYjQ4OTM3YzYwOGU1YzJkODRjZmEuLmZmOTA3NzBmMDk1NTc4OTEwNzVk
YjkxZTI5ZTFkZmU3ODcwNGFmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCkBAIC0xNzQsNyArMTc0LDcg
QEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnNob3dQb3B1cCgpCiAgICAgICAg
IG1fc2VhcmNoUG9wdXAtPnNhdmVSZWNlbnRTZWFyY2hlcyhuYW1lLCBtX3JlY2VudFNlYXJjaGVz
KTsKICAgICB9CiAKLSAgICBtX3NlYXJjaFBvcHVwLT5wb3B1cE1lbnUoKS0+c2hvdyhhYnNvbHV0
ZUJvdW5kaW5nQm94UmVjdCh0cnVlKSwgZG9jdW1lbnQoKS0+dmlldygpLCAtMSk7CisgICAgbV9z
ZWFyY2hQb3B1cC0+cG9wdXBNZW51KCktPnNob3coYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSwg
ZG9jdW1lbnQoKS0+dmlldygpLCAtMSk7CiB9CiAKIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lOjpoaWRlUG9wdXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lU2FmYXJpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZVNhZmFyaS5jcHAKaW5kZXggZDI3MDIxYzlkMTlhMTNmOTU5YWQyMmY3ZGExYjgyOTc5YzBj
M2FkYy4uOTk5ZjJmNzNkNTMxYTJlNDg3OTRiNTU3NjM1M2UwODY0NGFjNzg5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCkBAIC0xMDgwLDcg
KzEwODAsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNlYXJjaEZpZWxkQ2FuY2Vs
QnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbgogICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBpbnB1dC0+cmVuZGVyZXIoKTsKICAgICBBU1NFUlQocmVuZGVyZXIpOwogCi0gICAg
SW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7
CisgICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hS
ZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAKICAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVt
ZTo6U2VhcmNoRmllbGRDYW5jZWxCdXR0b25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCksIHNlYXJjaFJlY3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qoc2VhcmNoUmVjdCwg
c2VhcmNoRmllbGRTaXplcygpKSwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgIHJldHVybiBmYWxz
ZTsKQEAgLTExMzQsNyArMTEzNCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2Vh
cmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0CiAgICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IGlucHV0LT5yZW5kZXJlcigpOwogICAgIEFTU0VSVChyZW5k
ZXJlcik7CiAKLSAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QoKTsKKyAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKIAogICAgIHBhaW50VGhlbWVQ
YXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydCwgcGFpbnRJ
bmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBzZWFyY2hSZWN0LCBjb250cm9sU2l6ZUZy
b21SZWN0KHNlYXJjaFJlY3QsIHNlYXJjaEZpZWxkU2l6ZXMoKSksIGRldGVybWluZVN0YXRlKG8p
KTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTU3LDcgKzExNTcsNyBAQCBib29sIFJlbmRlclRo
ZW1lU2FmYXJpOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihSZW5kZXJPYmplY3QqIG8s
IGNvbnN0IFBhaQogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpbnB1dC0+cmVuZGVyZXIo
KTsKICAgICBBU1NFUlQocmVuZGVyZXIpOwogCi0gICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVu
ZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgSW50UmVjdCBzZWFyY2hSZWN0
ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7
CiAKICAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6U2VhcmNoRmllbGRSZXN1bHRzQnV0
dG9uUGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBzZWFyY2hSZWN0
LCBjb250cm9sU2l6ZUZyb21SZWN0KHNlYXJjaFJlY3QsIHNlYXJjaEZpZWxkU2l6ZXMoKSksIGRl
dGVybWluZVN0YXRlKG8pKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHAKaW5kZXggMWZlZmFjNGYwMTkyZWEzZWIwNTQxNWNiMzQzNGFmNWIw
OWY2YTc0MS4uZjQyMWY5ODFkYTI2N2RkNTdkNTk5NGFiYzNlYzFhNzU2NWQxODA1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtMzI5LDEyICszMjksMTIgQEAg
dm9pZCBSZW5kZXJWaWV3Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIEkKICAgICAgICAgcmVjdCA9IG1fbGF5ZXItPnRyYW5zZm9y
bSgpLT5tYXBSZWN0KHJlY3QpOwogfQogCi12b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUmVjdHMo
VmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0KQordm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0
PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QKIHsK
ICAgICByZWN0cy5hcHBlbmQoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgbV9sYXllci0+
c2l6ZSgpKSk7CiB9CiAKLXZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0
ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7
CiAgICAgaWYgKHdhc0ZpeGVkKQogICAgICAgICAqd2FzRml4ZWQgPSBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IGJiZGQ0NTQyYTJiZTA4MjlhZjdkODE5MjEw
Y2I3MjU2NjY0ZTg1MzguLjlkNGU5ZTQzMDdiMGY5ZDBmZDE1ZjBjNTEzZjQxNmM1MTE4NDE2NmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtODYsOCArODYsOCBAQCBw
dWJsaWM6CiAKICAgICBib29sIHByaW50aW5nKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNj
dW11bGF0ZWRPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxG
bG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJl
Y3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9m
ZnNldCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0
UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCiAgICAgdm9pZCBzZXRNYXhpbWFsT3V0bGluZVNpemUoaW50IG8pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcAppbmRleCAyYzgx
NTkwOGViZjZiOTg5MDY3NTdkOGJjNTRiZTY5NDdhNzE3OWUzLi43YjE2YTRkNWJmYzljYjdiYjY1
ZTY1YmIxNWFiYzhlMmY2ZWJhZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0Jsb2NrLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFJlbmRlclNWR0Js
b2NrOjp1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKQogICAgIHNldEhhc092ZXJmbG93Q2xp
cChmYWxzZSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHQmxvY2s6OmFic29sdXRlUmVjdHMoVmVjdG9y
PExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKQordm9pZCBSZW5kZXJTVkdCbG9jazo6
YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpIGNv
bnN0CiB7CiAgICAgLy8gVGhpcyBjb2RlIHBhdGggc2hvdWxkIG5ldmVyIGJlIHRha2VuIGZvciBT
VkcsIGFzIHdlJ3JlIGFzc3VtaW5nIHVzZVRyYW5zZm9ybXM9dHJ1ZSBldmVyeXdoZXJlLCBhYnNv
bHV0ZVF1YWRzIHNob3VsZCBiZSB1c2VkLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCmluZGV4IDIyYzFm
MThlMzZlMDIzMTBiZTdlN2QzZTRlYzgxMjNhMjliNWE3MTQuLjU4Y2YyNjIwYTk4MThkNjRhZTI3
ODM0ZmVkOGQ0MWI3MTY5MjA0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0Jsb2NrLmgKQEAgLTM4LDcgKzM4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgc2V0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNv
bHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVs
YXRlZE9mZnNldCk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91
dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3R5
bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlk
ZGVuQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SGlkZGVuQ29udGFpbmVyLmNwcAppbmRleCBkMjlkODVlYzkzOTcxZGVlMThkYjEyYmQ4ZTc4MDVm
NTgxNzcyZjFlLi44OTViMjU0NDkwMDEyM2ZkYmYzZWEwMjU4NTRjYjljZWRiZTA0ZmQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRh
aW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRk
ZW5Db250YWluZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgUmVuZGVyU1ZHSGlkZGVuQ29u
dGFpbmVyOjpwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpCiAgICAgLy8gVGhp
cyBzdWJ0cmVlIGRvZXMgbm90IHBhaW50LgogfQogCi12b2lkIFJlbmRlclNWR0hpZGRlbkNvbnRh
aW5lcjo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqKQordm9pZCBSZW5k
ZXJTVkdIaWRkZW5Db250YWluZXI6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBi
b29sKikgY29uc3QKIHsKICAgICAvLyBUaGlzIHN1YnRyZWUgZG9lcyBub3QgdGFrZSB1cCBzcGFj
ZSBvciBwYWludAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKaW5kZXggZWZmZjkyMTUxZDJjMzYxYTZkMGM4ZDk3
NzdiMzFmNjM0NDY0ZDEwYy4uZjI2YzVmYzYxYTM3ZjgyMDdkNGQ2NDliZTY4MDlkNTJhMmY4ODI1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRk
ZW5Db250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0hpZGRlbkNvbnRhaW5lci5oCkBAIC00NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgCiAgICAg
dmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJv
eE1vZGVsT2JqZWN0KikgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCk7
CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29s
KiB3YXNGaXhlZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0RmxvYXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBw
b2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKaW5kZXggZjRhMjllMjg0ZDRmM2JhNTc5
YmIzZDhiYzU3OGY2MDcxNThiY2RiNi4uYzIyMjQ0ZmM2ZTEwZTliZmUwYWExM2Q3MDRkZjdlMjg3
NjMxMjdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW5saW5lLmNwcApAQCAtODIsOSArODIsOSBAQCB2b2lkIFJlbmRlclNWR0lubGluZTo6bWFwTG9j
YWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcgogICAg
IFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIodGhpcywgcmVwYWludENvbnRh
aW5lciwgdHJhbnNmb3JtU3RhdGUsIHdhc0ZpeGVkKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdJbmxp
bmU6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhl
ZCkKK3ZvaWQgUmVuZGVyU1ZHSW5saW5lOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7Ci0gICAgUmVuZGVyT2JqZWN0KiBvYmpl
Y3QgPSBSZW5kZXJTVkdUZXh0Ojpsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3IodGhpcyk7Cisg
ICAgY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBSZW5kZXJTVkdUZXh0Ojpsb2NhdGVSZW5k
ZXJTVkdUZXh0QW5jZXN0b3IodGhpcyk7CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgK
aW5kZXggMGE2MDgzN2Y0Nzc1OTY5MDM3ZTg0OTc1YmNmMjAwODA2NmJiODJmNy4uZDJmYTFjYzUy
NDAyNGI2MWFhN2Q0YWE3N2E0ZThkZDhlNTYwODQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIFRyYW5zZm9ybVN0
YXRlJiwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1
dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKTsKKyAgICB2aXJ0dWFs
IHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBj
b25zdDsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIElubGluZUZsb3dCb3gqIGNyZWF0ZUlubGlu
ZUZsb3dCb3goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHTW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdNb2RlbE9iamVjdC5jcHAKaW5kZXggYzJlM2ZkZmY4MDVkNzc4OGQ1ZWZlN2NkYmJmYzE1
YTdmZTNjNjZlOS4uNzA4NmQ0Y2U5MWU2NjQ1YzFlMWM3MGQ4M2JjNGY0OWM4MmZjY2FiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9i
amVjdC5jcHAKQEAgLTcwLDE0ICs3MCwxNCBAQCBMYXlvdXRSZWN0IFJlbmRlclNWR01vZGVsT2Jq
ZWN0OjpvdXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcgogICAg
IHJldHVybiBjb250YWluZXJSZWxhdGl2ZVF1YWQuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKIH0K
IAotdm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0
UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCit2b2lk
IFJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYg
cmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QKIHsKICAg
ICBMYXlvdXRSZWN0IHJlY3QgPSBlbmNsb3NpbmdMYXlvdXRSZWN0KHN0cm9rZUJvdW5kaW5nQm94
KCkpOwogICAgIHJlY3QubW92ZUJ5KGFjY3VtdWxhdGVkT2Zmc2V0KTsKICAgICByZWN0cy5hcHBl
bmQocmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkKK3ZvaWQgUmVuZGVyU1ZH
TW9kZWxPYmplY3Q6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29s
KiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVh
ZChzdHJva2VCb3VuZGluZ0JveCgpLCBmYWxzZSwgd2FzRml4ZWQpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAppbmRleCBj
MjhkM2M2NjA3ZDU1NGVhMjBjMmJhNWM1YWVlZWRjYzJkZTczYjc5Li43MDQxZDQ0OWVmNjMyYzRm
YzMwMDkyNjBmOTJjMDAwM2IwMTBkN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCkBAIC01NSw4ICs1NSw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNl
KSBjb25zdDsKICAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFBvaW50KikgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpOworICAg
IHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExh
eW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFu
c2Zvcm1TdGF0ZSYsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lk
IHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdT
dHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNw
cAppbmRleCA1N2I0ZjU3NGVhMDAyMDVkMzM0YTAwNjdkOGZmNjZlMzU0NTVlYzI4Li4xNDUzY2Ix
NmE2MDJhMDI4ZmFiODM0YTU1NmMyOGY1ZjE0MDdiMTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTIyNSw3ICsyMjUsNyBAQCBWaXNp
YmxlUG9zaXRpb24gUmVuZGVyU1ZHVGV4dDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQ
b2ludCYgcG9pbnRJbkNvbnRlbgogICAgIHJldHVybiBjbG9zZXN0Qm94LT5yZW5kZXJlcigpLT5w
b3NpdGlvbkZvclBvaW50KExheW91dFBvaW50KHBvaW50SW5Db250ZW50cy54KCksIGNsb3Nlc3RC
b3gtPnkoKSkpOwogfQogCi12b2lkIFJlbmRlclNWR1RleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkKK3ZvaWQgUmVuZGVyU1ZHVGV4dDo6
YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBj
b25zdAogewogICAgIHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKHN0cm9rZUJvdW5k
aW5nQm94KCksIGZhbHNlLCB3YXNGaXhlZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RleHQuaAppbmRleCBiM2UwZjQzZjhmNjQ5YzdmYTY3ZTBiODQyMDM2
N2FmMGQ2ZTkyZDNlLi5hMGFkYTRjYjRlZmU5ODBjYWJlMjdhOWZhNTA0YmFhMzkwMTg5ZGM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaApAQCAtNjAs
NyArNjAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0Zp
eGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYs
IGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lcikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4
ZWQgPSBmYWxzZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXgg
ZGY4YWMyZWFiZDIxMjQ1MWMwYzc0N2UwZTZlNGYzNzNkYzZiMTFjMy4uYzkwN2FlODIyNTA4MDgy
MjE2MDQyNTk4MzZmZGQ4ZmFkNzA0YjVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIFBhc3NSZWZQdHI8Q2xpZW50UmVjdD4gSW50ZXJuYWxz
Ojpib3VuZGluZ0JveChFbGVtZW50KiBlbGVtZW50LCBFeGNlcHRpb25Db2RlJiBlCiAgICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5k
ZXJlcikKICAgICAgICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZSgpOwotICAgIHJldHVybiBD
bGllbnRSZWN0OjpjcmVhdGUocmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOwor
ICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUocmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdC
b3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkpOwogfQogCiB1bnNpZ25lZCBJbnRlcm5hbHM6Om1h
cmtlckNvdW50Rm9yTm9kZShOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2ViZnJhbWUuY3BwCmluZGV4IDVmMTJlMTAxNDM5ZjVmYmYwZDZjZGNiMTAzNDExNzA2
MWI1OTI3ZjQuLjA3ZjJkZjk4N2QyY2ZmNTZkZmM4ZDg3ZDdhNWNhYmI1YzE5NjZlMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcApAQCAtMTc1MSw3ICsxNzUxLDcgQEAgUVdlYkhpdFRl
c3RSZXN1bHRQcml2YXRlOjpRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGUoY29uc3QgV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdAogICAgIGltYWdlVXJsID0gaGl0VGVzdC5hYnNvbHV0ZUltYWdlVVJMKCk7
CiAgICAgaW5uZXJOb2RlID0gaGl0VGVzdC5pbm5lck5vZGUoKTsKICAgICBpbm5lck5vblNoYXJl
ZE5vZGUgPSBoaXRUZXN0LmlubmVyTm9uU2hhcmVkTm9kZSgpOwotICAgIGJvdW5kaW5nUmVjdCA9
IGlubmVyTm9uU2hhcmVkTm9kZSA/IGlubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKS0+YWJz
b2x1dGVCb3VuZGluZ0JveFJlY3QodHJ1ZSkgOiBJbnRSZWN0KCk7CisgICAgYm91bmRpbmdSZWN0
ID0gaW5uZXJOb25TaGFyZWROb2RlID8gaW5uZXJOb25TaGFyZWROb2RlLT5yZW5kZXJlcigpLT5h
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpIDogSW50UmVjdCgpOwogICAgIFdlYkNvcmU6OkltYWdl
ICppbWcgPSBoaXRUZXN0LmltYWdlKCk7CiAgICAgaWYgKGltZykgewogICAgICAgICBRUGl4bWFw
ICpwaXggPSBpbWctPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmlu
ZGV4IGVhYmQ4MmEwOWJlNzg3NDIwMWJmM2E2NjgwMzU1MzQzNWRhOWYzZTkuLjk3NzRmZGJiY2Qy
NGRmYmJkMzRjMTZhMTcwZWJhNGYyOTg2MDBlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTEtMTAtMDYgIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgQ29kZSBjbGVhbi11cDogTWFrZSBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRp
bmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVkIG1ldGhvZHMgY29uc3QgYW5kIG1ha2UgaXRzIHBhcmFt
ZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxvbmdlciBkZWZhdWx0IHRvIGZhbHNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTAwOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgor
ICAgICAgICAoUVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlOjpRV2ViSGl0VGVzdFJlc3VsdFByaXZh
dGUpOgorCiAyMDExLTEwLTAzICBQaWVycmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29t
PgogCiAgICAgICAgIFtRdF0gQnVpbGQgZml4OiBRdDo6ZXNjYXBlIGlzIGRlcHJlY2F0ZWQgaW4g
UXQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggNmY0N2EyZGJiMWJjMmY3NGMwNDMyYTBkMmQ1ZmQzY2RhMDY1NTk3
Mi4uNGEzNjc1NGU4ZTY2MGI1YTAxYTc1NzA5OGI5MjkzMDExNmI4NTc5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDExLTEwLTA2ICBGYWR5IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIENvZGUgY2xlYW4tdXA6IE1ha2UgUmVuZGVyT2JqZWN0OjphYnNv
bHV0ZUJvdW5kaW5nQm94UmVjdCBhbmQgYXNzb2NpYXRlZCBtZXRob2RzIGNvbnN0IGFuZCBtYWtl
IGl0cyBwYXJhbWV0ZXIgdXNlVHJhbnNmb3JtcyBubyBsb25nZXIgZGVmYXVsdCB0byBmYWxzZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwMDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgKiB3aW4vV2ViS2l0
Mi5kZWY6CisgICAgICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVmOgorCiAyMDExLTEwLTA2ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RL
XSBBZGQgZXN0aW1hdGVkLXByb2dyZXNzIHByb3BlcnR5IHRvIFdlYktpdFdlYkxvYWRlckNsaWVu
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IGU4MjI5MWY3OGJjYTExNDgyNzNiNzllYzE3YTY0
Yzg4OGZiYzkxMjIuLjVhYjU0ZTk1Y2U1OGQwMGYyM2M1OWRiMzdkMTU4NGZiOGE3M2JiNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTE0Myw3ICsxNDMsOCBAQCBFWFBPUlRTCiAgICAgICAg
ID8/MENsaWVudFJlY3RAV2ViQ29yZUBAQUFFQFhaCiAgICAgICAgID8/MFN0cmluZ0BXVEZAQFFB
RUBQQkRAWgogICAgICAgICA/PzBTdHJpbmdAV1RGQEBRQUVAUEJfV0BaCi0gICAgICAgID9hYnNv
bHV0ZUJvdW5kaW5nQm94UmVjdEBSZW5kZXJPYmplY3RAV2ViQ29yZUBAUUFFP0FWSW50UmVjdEAy
QF9OQFoKKyAgICAgICAgP2Fic29sdXRlQm91bmRpbmdCb3hSZWN0QFJlbmRlck9iamVjdEBXZWJD
b3JlQEBRQkU/QVZJbnRSZWN0QDJAX05AWgorICAgICAgICA/YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3RJZ25vcmluZ1RyYW5zZm9ybXNAUmVuZGVyT2JqZWN0QFdlYkNvcmVAQFFCRT9BVkludFJlY3RA
MkBYWgogICAgICAgICA/YWRkQEF0b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZT
dHJpbmdJbXBsQFdURkBAQDJAUEJEQFoKICAgICAgICAgP2FkZFNsb3dDYXNlQEF0b21pY1N0cmlu
Z0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEFWU3RyaW5nSW1w
bEAyQEBaCiAgICAgICAgID9jYWNoZURPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBBVlN0cnVjdHVy
ZUBKU0NAQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWMjNAUEJVQ2xhc3NJbmZvQDNAQFoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZiBiL1NvdXJjZS9X
ZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgppbmRleCBhYTFkMzE2OTQ0YTJkZjEzYjMzOGI3
NjExNjVkNmJhMzVlZjg1YjU0Li43ZDc0NjI5MGUzYjNhOTAzZjQzZjU2MDg5YzdmNGQ5OTAxYjZi
YjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKKysr
IGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCkBAIC0xMzUsNyArMTM1LDgg
QEAgRVhQT1JUUwogICAgICAgICA/PzBTdHJpbmdAV1RGQEBRQUVAUEJfV0BaCiAgICAgICAgID8/
MU5vZGVSZW5kZXJpbmdDb250ZXh0QFdlYkNvcmVAQFFBRUBYWgogICAgICAgICA/PzFSYW5nZUBX
ZWJDb3JlQEBRQUVAWFoKLSAgICAgICAgP2Fic29sdXRlQm91bmRpbmdCb3hSZWN0QFJlbmRlck9i
amVjdEBXZWJDb3JlQEBRQUU/QVZJbnRSZWN0QDJAX05AWgorICAgICAgICA/YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3RAUmVuZGVyT2JqZWN0QFdlYkNvcmVAQFFCRT9BVkludFJlY3RAMkBfTkBaCisg
ICAgICAgID9hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3Jtc0BSZW5kZXJP
YmplY3RAV2ViQ29yZUBAUUJFP0FWSW50UmVjdEAyQFhaCiAgICAgICAgID9hZGRAQXRvbWljU3Ry
aW5nQFdURkBAQ0E/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBAMkBQQkRAWgogICAg
ICAgICA/YWRkU2xvd0Nhc2VAQXRvbWljU3RyaW5nQFdURkBAQ0E/QVY/JFBhc3NSZWZQdHJAVlN0
cmluZ0ltcGxAV1RGQEBAMkBQQVZTdHJpbmdJbXBsQDJAQFoKICAgICAgICAgP2NhY2hlRE9NU3Ry
dWN0dXJlQFdlYkNvcmVAQFlBUEFWU3RydWN0dXJlQEpTQ0BAUEFWSlNET01HbG9iYWxPYmplY3RA
MUBQQVYyM0BQQlVDbGFzc0luZm9AM0BAWgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9z
eW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggMWFi
OTczNzMzNThjM2E4YjI0ZmEzNTE1NjZmYzZmODkxOWJkYTRlMy4uMmZmYmU5OTU0N2IzYjY0Y2Vj
NWVhMWE0MGRlYWE4YzdjNjBkNTdlOSAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1i
b2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC00MSw3
ICs0MSw3IEBAIF9aTjdXZWJDb3JlMTBDbGllbnRSZWN0QzFFUktOU183SW50UmVjdEU7CiBfWk43
V2ViQ29yZTExRXZlbnRUYXJnZXQxN3RvR2VuZXJhdGVkU3RyZWFtRXY7CiBfWk43V2ViQ29yZTEx
RXZlbnRUYXJnZXQ4dG9TdHJlYW1FdjsKIF9aTjdXZWJDb3JlMTJKU0RPTVdyYXBwZXIzNHZpcnR1
YWxGdW5jdGlvblRvUHJldmVudFdlYWtWdGFibGVFdjsKLV9aTjdXZWJDb3JlMTJSZW5kZXJPYmpl
Y3QyM2Fic29sdXRlQm91bmRpbmdCb3hSZWN0RWI7CitfWk5LN1dlYkNvcmUxMlJlbmRlck9iamVj
dDIzYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RFYjsKIF9aTjdXZWJDb3JlMTNjcmVhdGVXcmFwcGVy
RVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzROb2RlRTsKIF9a
TjdXZWJDb3JlMTVzZXRET01FeGNlcHRpb25FUE4zSlNDOUV4ZWNTdGF0ZUVpOwogX1pON1dlYkNv
cmUxNkhUTUxJbnB1dEVsZW1lbnQxN3NldFN1Z2dlc3RlZFZhbHVlRVJLTjNXVEY2U3RyaW5nRTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>