<?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>82169</bug_id>
          
          <creation_ts>2012-03-25 23:07:50 -0700</creation_ts>
          <short_desc>[Shadow DOM] Implement a &apos;::distributed()&apos; pseudo element.</short_desc>
          <delta_ts>2013-02-13 23:53:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>100832</dependson>
    
    <dependson>101048</dependson>
    
    <dependson>106879</dependson>
          <blocked>97282</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hayato Ito">hayato</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>a.semenov</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>ericbidelman</cc>
    
    <cc>eric</cc>
    
    <cc>hayato</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>peter</cc>
    
    <cc>peter+ews</cc>
    
    <cc>philn</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>syoichi</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>587463</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-25 23:07:50 -0700</bug_when>
    <thetext>http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#selecting-nodes-distributed-to-insertion-points
We need CSS4 combinar syntax to support this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748281</commentid>
    <comment_count>1</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-22 22:35:17 -0700</bug_when>
    <thetext>Let me try to implement this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748379</commentid>
    <comment_count>2</comment_count>
      <attachid>170083</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-23 01:44:00 -0700</bug_when>
    <thetext>Created attachment 170083
WIP. update a parser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757136</commentid>
    <comment_count>3</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-11-02 06:06:47 -0700</bug_when>
    <thetext>Let me explain the current status and the stragety of implementation what&apos;s in my mind.

This is the first CSS rule which crosses a shadow boundary. Current CSS implementation assumes every final target is applied in current scope. But shadow &apos;/select/&apos; reference combinator is defined in shadow subtree but the node who is matched in the rule is outside of the shadow subtree. This is the first case in the history of CSS, I guess.
That makes the implementation too hard.

To overcome this, I am now thinking the following approach:

In parsing CSS rule:
 - Done (in the WIP patch).

After parsing:
 - When adding a rule which includes a &apos;/select/&apos; reference combinator, we&apos;ll add that to the global scope. ie. Make StyleResolver have m_selectReferenceSelectorCombnatorRuleSet.
 - Preprocess a selector if it includes a &apos;/select/&apos; reference combinator.

    For example, suppose we have the following tree and shadow subtrees:

  - H ---------[SR1]
    - A          - C ---------------------------[SR2]
      - B          - D                            - F
                      - E (&lt;content selct=A&gt;)       - G (&lt;content select=D)

  Also suppose a selector, &apos;F &gt; G /select/ D &gt; E /select/ A &gt; B&apos;, is defined in the shadow DOM subtree of SR2.

  In this case, we&apos;ll add a psuedo combinator, which is used only internally, at the left-most position of the selector like:

    SR2 x F &gt; G /select/ D &gt; E /select/ A &gt; B

  The benefit of this pre-processing is we can check that F is defined in the SR2 scope easily.
  Note that things are not so simple. We have to check SR2&apos;s applyAuthorStyle also.

When matching:
 - Try to match each CSS Selector right-to-left as usual.
 - If we encounter a &apos;/select&apos; reference combinator, we have to check the all *midpoint* insertion points to where a node is distributed either directly or indirectly.
   Continue matching for each recursively. If one of them matches, the selector matches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757169</commentid>
    <comment_count>4</comment_count>
      <attachid>172054</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-11-02 07:14:17 -0700</bug_when>
    <thetext>Created attachment 172054
WIP. A lot of debug code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759349</commentid>
    <comment_count>5</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-11-06 00:38:56 -0800</bug_when>
    <thetext>It seems the WIP patch contains a issue of life cycle of *something*. Maybe it&apos;s StyleRule, I guess.
It causes a crash in V8 garbage collection when reloading.

Let me continue to investigate the cause.

(In reply to comment #4)
&gt; Created an attachment (id=172054) [details]
&gt; WIP. A lot of debug code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761167</commentid>
    <comment_count>6</comment_count>
      <attachid>172889</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-11-07 16:31:00 -0800</bug_when>
    <thetext>Created attachment 172889
WIP. No crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772575</commentid>
    <comment_count>7</comment_count>
      <attachid>175365</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-11-21 00:57:27 -0800</bug_when>
    <thetext>Created attachment 175365
WIP. Clean up and update a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772754</commentid>
    <comment_count>8</comment_count>
      <attachid>175404</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-11-21 03:25:56 -0800</bug_when>
    <thetext>Created attachment 175404
Ready for review. Let me file another bugs later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773034</commentid>
    <comment_count>9</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-21 09:34:49 -0800</bug_when>
    <thetext>This should be announced on webkit-dev first as it&apos;s a new feature.

Was this discussed in a standards body somewhere? I&apos;m not sure &quot;select&quot; is the best term for this. It&apos;s very generic for something so specific.

I&apos;m not opposed to implementing it. I&apos;d just like to make sure we ship something that won&apos;t change on us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773125</commentid>
    <comment_count>10</comment_count>
      <attachid>175404</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-21 11:07:58 -0800</bug_when>
    <thetext>Comment on attachment 175404
Ready for review. Let me file another bugs later.

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

I agree with Ojan, a webkit-dev post would be a good idea. The standardization status of this is also unclear to me. How much review has this received?

&gt; Source/WebCore/css/CSSGrammar.y.in:1012
&gt; +reference_combinator:
&gt; +  &apos;/&apos; IDENT &apos;/&apos; maybe_space {
&gt; +        CSSParserString&amp; str = $2;
&gt; +        if (parser-&gt;m_context.isHTMLDocument)
&gt; +            str.lower();
&gt; +        $$ = str;
&gt; +  }
&gt; +  ;

Please put this feature fully behind a feature flag, ENABLE(SHADOW_DOM) probably.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773507</commentid>
    <comment_count>11</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-11-21 19:57:30 -0800</bug_when>
    <thetext>I agree. Let me announce this in webkit-dev.

(In reply to comment #9)
&gt; This should be announced on webkit-dev first as it&apos;s a new feature.
&gt; 
&gt; Was this discussed in a standards body somewhere? I&apos;m not sure &quot;select&quot; is the best term for this. It&apos;s very generic for something so specific.

The term of &apos;select&apos; is chosen since it&apos;s attribute name of &lt;content&gt; element.
There has been some discussions about this reference combinator in W3C&apos;s Shadow DOM specification&apos;s bugzilla. The current spec is the conclusion of the discussions.

&gt; 
&gt; I&apos;m not opposed to implementing it. I&apos;d just like to make sure we ship something that won&apos;t change on us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773508</commentid>
    <comment_count>12</comment_count>
      <attachid>175404</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-11-21 19:58:58 -0800</bug_when>
    <thetext>Comment on attachment 175404
Ready for review. Let me file another bugs later.

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

&gt;&gt; Source/WebCore/css/CSSGrammar.y.in:1012
&gt;&gt; +  ;
&gt; 
&gt; Please put this feature fully behind a feature flag, ENABLE(SHADOW_DOM) probably.

I agree. Let me update the patch so that this feature is fully behind a SHADOW_DOM flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773562</commentid>
    <comment_count>13</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-21 22:13:31 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; The term of &apos;select&apos; is chosen since it&apos;s attribute name of &lt;content&gt; element.
&gt; There has been some discussions about this reference combinator in W3C&apos;s Shadow DOM specification&apos;s bugzilla. The current spec is the conclusion of the discussions.

I see. No objection from me on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773583</commentid>
    <comment_count>14</comment_count>
      <attachid>175593</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-11-21 22:38:51 -0800</bug_when>
    <thetext>Created attachment 175593
guard by SHADOW_DOM flag</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777682</commentid>
    <comment_count>15</comment_count>
      <attachid>176437</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-11-28 03:12:03 -0800</bug_when>
    <thetext>Created attachment 176437
Update. CSSSelectorList is now correctly divided into each RuleSet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777725</commentid>
    <comment_count>16</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-11-28 04:06:44 -0800</bug_when>
    <thetext>I announced that in webkit-dev a week ago and there is no concerns so far.
https://lists.webkit.org/pipermail/webkit-dev/2012-November/022950.html

I think it&apos;s okay to be reviewed.

(In reply to comment #10)
&gt; (From update of attachment 175404 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175404&amp;action=review
&gt; 
&gt; I agree with Ojan, a webkit-dev post would be a good idea. The standardization status of this is also unclear to me. How much review has this received?
&gt; 
&gt; &gt; Source/WebCore/css/CSSGrammar.y.in:1012
&gt; &gt; +reference_combinator:
&gt; &gt; +  &apos;/&apos; IDENT &apos;/&apos; maybe_space {
&gt; &gt; +        CSSParserString&amp; str = $2;
&gt; &gt; +        if (parser-&gt;m_context.isHTMLDocument)
&gt; &gt; +            str.lower();
&gt; &gt; +        $$ = str;
&gt; &gt; +  }
&gt; &gt; +  ;
&gt; 
&gt; Please put this feature fully behind a feature flag, ENABLE(SHADOW_DOM) probably.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777966</commentid>
    <comment_count>17</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-11-28 09:10:03 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; I announced that in webkit-dev a week ago and there is no concerns so far.
&gt; https://lists.webkit.org/pipermail/webkit-dev/2012-November/022950.html
&gt; 
&gt; I think it&apos;s okay to be reviewed.

Tab started a thread on www-style to make double-darn sure that this is the right approach. Can we give it a couple of days and ensure that we&apos;re using the right combinator?

http://lists.w3.org/Archives/Public/www-style/2012Nov/thread.html#msg428</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778901</commentid>
    <comment_count>18</comment_count>
      <attachid>176698</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-11-29 03:55:53 -0800</bug_when>
    <thetext>Created attachment 176698
Add test. A select reference combinator is used in selecor list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778902</commentid>
    <comment_count>19</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-11-29 03:57:05 -0800</bug_when>
    <thetext>Yeah, let me keep watch on that.

(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; I announced that in webkit-dev a week ago and there is no concerns so far.
&gt; &gt; https://lists.webkit.org/pipermail/webkit-dev/2012-November/022950.html
&gt; &gt; 
&gt; &gt; I think it&apos;s okay to be reviewed.
&gt; 
&gt; Tab started a thread on www-style to make double-darn sure that this is the right approach. Can we give it a couple of days and ensure that we&apos;re using the right combinator?
&gt; 
&gt; http://lists.w3.org/Archives/Public/www-style/2012Nov/thread.html#msg428</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778904</commentid>
    <comment_count>20</comment_count>
      <attachid>176698</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-29 04:08:29 -0800</bug_when>
    <thetext>Comment on attachment 176698
Add test. A select reference combinator is used in selecor list.

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

&gt; Source/WebCore/css/CSSSelector.h:265
&gt; +            QualifiedName m_reference; // used for reference combinator

Could you hide this behind the ifdef? Having empty/dummy API for non-SHADOW_DOM port is OK, but allocating extra memory might not.

&gt; Source/WebCore/css/CSSSelectorList.cpp:219
&gt; +        return selector-&gt;isReferenceCombinator() &amp;&amp; selector-&gt;reference() == &quot;select&quot;;

Let&apos;s define static QualifiedName instead of comparing against string literal.

&gt; Source/WebCore/css/RuleSet.cpp:286
&gt; +#if ENABLE(SHADOW_DOM)

Do you thins it is good idea to move this ifdef in StyleResolver::addStyleRule() ? I guess the ifdef might be narrower without hurting simplicity much.

&gt; Source/WebCore/css/SelectorChecker.cpp:593
&gt; +            if (context.selector-&gt;reference() != &quot;select&quot;)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778921</commentid>
    <comment_count>21</comment_count>
      <attachid>176698</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-11-29 04:46:09 -0800</bug_when>
    <thetext>Comment on attachment 176698
Add test. A select reference combinator is used in selecor list.

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

&gt; Source/WebCore/css/CSSGrammar.y.in:1115
&gt; +        fprintf(stderr, &quot;Reference Combinator!\n&quot;);

Let&apos;s remove this.

&gt; Source/WebCore/css/SelectorChecker.cpp:596
&gt; +            Vector&lt;InsertionPoint*&gt; insertionPoints;

Let&apos;s use Vector&lt;InsertionPoint*, 8&gt; or something so as not to allocate heap memory much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778938</commentid>
    <comment_count>22</comment_count>
      <attachid>176709</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-11-29 05:24:28 -0800</bug_when>
    <thetext>Created attachment 176709
Addressed comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778940</commentid>
    <comment_count>23</comment_count>
      <attachid>176698</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-11-29 05:26:32 -0800</bug_when>
    <thetext>Comment on attachment 176698
Add test. A select reference combinator is used in selecor list.

Thank you for the review.

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

&gt;&gt; Source/WebCore/css/CSSGrammar.y.in:1115
&gt;&gt; +        fprintf(stderr, &quot;Reference Combinator!\n&quot;);
&gt; 
&gt; Let&apos;s remove this.

Done.

&gt;&gt; Source/WebCore/css/CSSSelector.h:265
&gt;&gt; +            QualifiedName m_reference; // used for reference combinator
&gt; 
&gt; Could you hide this behind the ifdef? Having empty/dummy API for non-SHADOW_DOM port is OK, but allocating extra memory might not.

Done.

&gt;&gt; Source/WebCore/css/CSSSelectorList.cpp:219
&gt;&gt; +        return selector-&gt;isReferenceCombinator() &amp;&amp; selector-&gt;reference() == &quot;select&quot;;
&gt; 
&gt; Let&apos;s define static QualifiedName instead of comparing against string literal.

Let me use HTMLNames::selectAttr.

&gt;&gt; Source/WebCore/css/RuleSet.cpp:286
&gt;&gt; +#if ENABLE(SHADOW_DOM)
&gt; 
&gt; Do you thins it is good idea to move this ifdef in StyleResolver::addStyleRule() ? I guess the ifdef might be narrower without hurting simplicity much.

Done. That&apos;s moved.

&gt;&gt; Source/WebCore/css/SelectorChecker.cpp:593
&gt;&gt; +            if (context.selector-&gt;reference() != &quot;select&quot;)
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/WebCore/css/SelectorChecker.cpp:596
&gt;&gt; +            Vector&lt;InsertionPoint*&gt; insertionPoints;
&gt; 
&gt; Let&apos;s use Vector&lt;InsertionPoint*, 8&gt; or something so as not to allocate heap memory much.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779411</commentid>
    <comment_count>24</comment_count>
      <attachid>176709</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-29 13:50:39 -0800</bug_when>
    <thetext>Comment on attachment 176709
Addressed comments

Attachment 176709 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15058006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779712</commentid>
    <comment_count>25</comment_count>
      <attachid>176878</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-11-29 18:23:18 -0800</bug_when>
    <thetext>Created attachment 176878
Fix a mac build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779761</commentid>
    <comment_count>26</comment_count>
      <attachid>176892</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-11-29 19:51:14 -0800</bug_when>
    <thetext>Created attachment 176892
Minor update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788339</commentid>
    <comment_count>27</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-12-11 05:20:41 -0800</bug_when>
    <thetext>The bug in the spec side was updated:
https://www.w3.org/Bugs/Public/show_bug.cgi?id=19684</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795332</commentid>
    <comment_count>28</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-12-20 03:37:07 -0800</bug_when>
    <thetext>I&apos;ve changed the subject of this issue, respecting the recent discussion on the spec.

(In reply to comment #27)
&gt; The bug in the spec side was updated:
&gt; https://www.w3.org/Bugs/Public/show_bug.cgi?id=19684</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795333</commentid>
    <comment_count>29</comment_count>
      <attachid>180316</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-12-20 03:38:48 -0800</bug_when>
    <thetext>Created attachment 180316
Implement a ::distributed pseudo elements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795335</commentid>
    <comment_count>30</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-12-20 03:41:00 -0800</bug_when>
    <thetext>I am aware that we have to update the spec at first, but early feedbacks are welcome for the patch.

(In reply to comment #29)
&gt; Created an attachment (id=180316) [details]
&gt; Implement a ::distributed pseudo elements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795340</commentid>
    <comment_count>31</comment_count>
      <attachid>180316</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-20 03:49:15 -0800</bug_when>
    <thetext>Comment on attachment 180316
Implement a ::distributed pseudo elements

Attachment 180316 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15418917</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795342</commentid>
    <comment_count>32</comment_count>
      <attachid>180316</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-20 03:50:06 -0800</bug_when>
    <thetext>Comment on attachment 180316
Implement a ::distributed pseudo elements

Attachment 180316 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15449035</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795369</commentid>
    <comment_count>33</comment_count>
      <attachid>180316</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-20 04:55:26 -0800</bug_when>
    <thetext>Comment on attachment 180316
Implement a ::distributed pseudo elements

Attachment 180316 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15446071</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795583</commentid>
    <comment_count>34</comment_count>
      <attachid>180316</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-12-20 11:11:28 -0800</bug_when>
    <thetext>Comment on attachment 180316
Implement a ::distributed pseudo elements

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

&gt; Source/WebCore/ChangeLog:17
&gt; +        This patch implements a select reference combinator as the first
&gt; +        reference combinator implemented in WebKit.  Since WebKit has not
&gt; +        supported reference combinators so far, CSS grammer and parser are
&gt; +        updated to support the new syntax used in Selector Level4&apos;s
&gt; +        reference combinators.

This is not necessary anymore, right?

&gt; Source/WebCore/html/shadow/InsertionPoint.h:183
&gt; +// FIXME: Collects only HTMLContentElement since a select reference combinator can be
&gt; +// applied to only &lt;content&gt; elements.

What is here to fix? It&apos;s unclear from the comment. Better yet, provide a link to a bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795981</commentid>
    <comment_count>35</comment_count>
      <attachid>180316</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-20 17:20:33 -0800</bug_when>
    <thetext>Comment on attachment 180316
Implement a ::distributed pseudo elements

Attachment 180316 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15457208</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801154</commentid>
    <comment_count>36</comment_count>
      <attachid>181474</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-06 21:22:31 -0800</bug_when>
    <thetext>Created attachment 181474
Add more tests. Update ChangeLog. Make it compilable without SHADOW_DOM flag. Support Reprojection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801156</commentid>
    <comment_count>37</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-06 21:25:19 -0800</bug_when>
    <thetext>Thank you for the review.

(In reply to comment #34)
&gt; (From update of attachment 180316 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180316&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:17
&gt; &gt; +        This patch implements a select reference combinator as the first
&gt; &gt; +        reference combinator implemented in WebKit.  Since WebKit has not
&gt; &gt; +        supported reference combinators so far, CSS grammer and parser are
&gt; &gt; +        updated to support the new syntax used in Selector Level4&apos;s
&gt; &gt; +        reference combinators.
&gt; 
&gt; This is not necessary anymore, right?

I&apos;ve updated ChangeLog.

&gt; 
&gt; &gt; Source/WebCore/html/shadow/InsertionPoint.h:183
&gt; &gt; +// FIXME: Collects only HTMLContentElement since a select reference combinator can be
&gt; &gt; +// applied to only &lt;content&gt; elements.
&gt; 
&gt; What is here to fix? It&apos;s unclear from the comment. Better yet, provide a link to a bug.

This FIXME comment is valid only for select&apos; reference combinator.
I&apos;ve removed the FIXME comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801157</commentid>
    <comment_count>38</comment_count>
      <attachid>181476</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-06 21:27:53 -0800</bug_when>
    <thetext>Created attachment 181476
Remove rule_bison.py from the previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801217</commentid>
    <comment_count>39</comment_count>
      <attachid>181476</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-07 03:03:15 -0800</bug_when>
    <thetext>Comment on attachment 181476
Remove rule_bison.py from the previous patch.

Attachment 181476 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15740645

New failing tests:
scrollbars/scrollbar-orientation.html
scrollbars/disabled-scrollbar.html
inspector/styles/region-style-crash.html
fast/forms/textarea-metrics.html
scrollbars/scrollbar-buttons.html
scrollbars/scrollbars-on-positioned-content.html
scrollbars/overflow-scrollbar-combinations.html
scrollbars/basic-scrollbar.html
scrollbars/scrollbar-drag-thumb-with-large-content.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801806</commentid>
    <comment_count>40</comment_count>
      <attachid>181476</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-07 16:35:22 -0800</bug_when>
    <thetext>Comment on attachment 181476
Remove rule_bison.py from the previous patch.

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

&gt; Source/WebCore/ChangeLog:25
&gt; +        of each RuleSet mapped by a scope where a &apos;::distributed()&apos; pseudo
&gt; +        element is originally defined. This scope is passed to

it&apos;s not a pseudo element, right? It&apos;s a function.

&gt; Source/WebCore/ChangeLog:27
&gt; +        exists in the scope where the rule is originally defined.

I think using the word &quot;last&quot; here is disorienting, since it&apos;s hard to understand what &quot;last&quot; means in this context. If anything, it&apos;s &quot;first&quot;, since the selectors are resolved backwards.

&gt; Source/WebCore/css/CSSParser.cpp:10608
&gt; +CSSParserSelector* CSSParser::updateSpecifiersWithElementName(const AtomicString&amp; namespacePrefix, const AtomicString&amp; elementName, CSSParserSelector* specifiers)

The name of the function is now misleading. You&apos;re not only updating specifiers, but also occasionally change the specifiers.

&gt; Source/WebCore/css/CSSParser.cpp:10629
&gt; +        end-&gt;setTagHistory(elementNameSelector.release());
&gt; +        end-&gt;setRelation(CSSSelector::ShadowDistributed);

Is this necessary? Can we not just store these like we do in -webkit-any?

&gt; Source/WebCore/css/CSSSelector.h:80
&gt; +            ShadowDistributed,

I am not convinced we need to treat &quot;distributed&quot; function as a relation.

&gt; Source/WebCore/css/SelectorChecker.cpp:289
&gt; +            return context.scopeOfLastElement-&gt;treeScope() == context.element-&gt;treeScope() ? SelectorMatches : SelectorFailsLocally;

Why do you store the element, when all you need is its scope?

&gt; Source/WebCore/css/StyleResolver.cpp:454
&gt; +void StyleResolver::addStyleRule(StyleRule* rule, ContainerNode* scope, RuleSet* ruleSet, AddRuleFlags addRuleFlags)

Ugh, what a nasty detour back into StyleResolver. Is this just because we need to populate the map?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801924</commentid>
    <comment_count>41</comment_count>
      <attachid>181476</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-07 18:49:24 -0800</bug_when>
    <thetext>Comment on attachment 181476
Remove rule_bison.py from the previous patch.

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

New failing tests:
platform/chromium/compositing/layout-width-change.html
platform/chromium/compositing/render-surface-alpha-blending.html
fast/text-autosizing/constrained-then-position-absolute-ancestors.html
platform/chromium/compositing/3d-corners.html
platform/chromium/compositing/video-frame-size-change.html
platform/chromium/compositing/perpendicular-layer-sorting.html
platform/chromium/compositing/child-layer-3d-sorting.html
platform/chromium/compositing/accelerated-drawing/svg-filters.html
fast/css/sticky/sticky-top-zoomed.html
fast/scrolling/scrollbar-tickmarks-styled.html
compositing/scrollbar-painting.html
fast/repaint/fixed-right-in-page-scale.html
platform/chromium/compositing/accelerated-drawing/alpha.html
fast/events/scale-and-scroll-window.html
fast/loader/text-document-wrapping.html
compositing/overflow/clip-content-under-overflow-controls.html
fast/events/scale-and-scroll-body.html
fast/forms/textarea-metrics.html
fast/text-autosizing/constrained-and-overflow-scroll-ancestor.html
platform/chromium/compositing/backface-visibility-transformed.html
fast/frames/transparent-scrollbar.html
fast/repaint/fixed-right-bottom-in-page-scale.html
fast/events/scale-and-scroll-iframe-body.html
fast/events/scale-and-scroll-iframe-window.html
fast/loader/javascript-url-in-object.html
fast/repaint/fixed-in-page-scale.html
platform/chromium/compositing/img-layer-grow.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801949</commentid>
    <comment_count>42</comment_count>
      <attachid>181476</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-07 19:53:58 -0800</bug_when>
    <thetext>Comment on attachment 181476
Remove rule_bison.py from the previous patch.

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

New failing tests:
fast/text-autosizing/constrained-then-position-absolute-ancestors.html
fast/forms/textarea-metrics.html
fast/css/sticky/sticky-top-zoomed.html
fast/scrolling/scrollbar-tickmarks-styled.html
compositing/scrollbar-painting.html
fast/repaint/fixed-right-in-page-scale.html
platform/chromium/virtual/gpu/compositedscrolling/scrollbars/scrollbars-on-positioned-content.html
fast/events/scale-and-scroll-window.html
fast/loader/text-document-wrapping.html
fast/text/international/hindi-spacing.html
compositing/overflow/clip-content-under-overflow-controls.html
fast/events/scale-and-scroll-iframe-body.html
fast/text-autosizing/constrained-and-overflow-scroll-ancestor.html
fast/frames/transparent-scrollbar.html
fast/repaint/fixed-right-bottom-in-page-scale.html
fast/events/scale-and-scroll-body.html
fast/events/scale-and-scroll-iframe-window.html
platform/chromium/virtual/gpu/compositedscrolling/scrollbars/listbox-scrollbar-combinations.html
fast/repaint/fixed-in-page-scale.html
platform/chromium/virtual/gpu/compositedscrolling/scrollbars/basic-scrollbar.html
platform/chromium/virtual/gpu/compositedscrolling/scrollbars/overflow-scrollbar-combinations.html
platform/chromium/virtual/gpu/compositedscrolling/scrollbars/scrollbar-orientation.html
fast/loader/javascript-url-in-object.html
platform/chromium/virtual/gpu/compositedscrolling/scrollbars/scrollbar-buttons.html
platform/chromium/virtual/gpu/compositedscrolling/scrollbars/custom-scrollbar-table-cell.html
platform/chromium/virtual/gpu/compositedscrolling/overflow/clip-content-under-overflow-controls.html
platform/chromium/virtual/gpu/compositedscrolling/scrollbars/disabled-scrollbar.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802063</commentid>
    <comment_count>43</comment_count>
      <attachid>181476</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-07 23:12:30 -0800</bug_when>
    <thetext>Comment on attachment 181476
Remove rule_bison.py from the previous patch.

Thank you for the review. I don&apos;t have a new patch yet. Let me reply your comments for now.


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

&gt;&gt; Source/WebCore/ChangeLog:25
&gt;&gt; +        element is originally defined. This scope is passed to
&gt; 
&gt; it&apos;s not a pseudo element, right? It&apos;s a function.

&apos;::distributed(..)&apos; seems the first pseudo element which can take parameters.

I think we should follow the same naming convention which is used for pseudo classes.
http://dev.w3.org/csswg/selectors4/#pseudo-classes

We should call it &apos;a functional pseudo element&apos;, shouldn&apos;t we?

&gt;&gt; Source/WebCore/ChangeLog:27
&gt;&gt; +        exists in the scope where the rule is originally defined.
&gt; 
&gt; I think using the word &quot;last&quot; here is disorienting, since it&apos;s hard to understand what &quot;last&quot; means in this context. If anything, it&apos;s &quot;first&quot;, since the selectors are resolved backwards.

That&apos;s the &apos;last&apos; element actually in that sense. That&apos;s the left-most element in the selector. Using &apos;lastly&apos; instead of &apos;last&apos; makes sense? Let me update the ChangeLog.

The scope is passed to SelectorChecker and is used to check whether the lastly matched element
exists in the scope where the rule is originally defined.

&gt;&gt; Source/WebCore/css/CSSParser.cpp:10608
&gt;&gt; +CSSParserSelector* CSSParser::updateSpecifiersWithElementName(const AtomicString&amp; namespacePrefix, const AtomicString&amp; elementName, CSSParserSelector* specifiers)
&gt; 
&gt; The name of the function is now misleading. You&apos;re not only updating specifiers, but also occasionally change the specifiers.

Hmm.  Could you clarify a difference between update and change in this context?
I am not confident how we should name this function.

ShadowDecentRelation seems to do the similar things to what I added to this function already.

&gt;&gt; Source/WebCore/css/CSSParser.cpp:10629
&gt;&gt; +        end-&gt;setRelation(CSSSelector::ShadowDistributed);
&gt; 
&gt; Is this necessary? Can we not just store these like we do in -webkit-any?

As long as we use Relation, there is no such &apos;generic&apos; relation which we can reuse with a parameter of &apos;-webkit-any-xx&apos;,

The current enum Relation  is defined as:

        enum Relation {
            Descendant = 0,
            Child,
            DirectAdjacent,
            IndirectAdjacent,
            SubSelector,
            ShadowDescendant,
            ShadowDistributed,
        };


Does this answer makes sense? Are you suggesting we should not use Relation here?

&gt;&gt; Source/WebCore/css/CSSSelector.h:80
&gt;&gt; +            ShadowDistributed,
&gt; 
&gt; I am not convinced we need to treat &quot;distributed&quot; function as a relation.

The makes an implementation much simpler. Let me explain. Let&apos;s assume the following selector is given:

  A &gt; content::distributed(B &gt; content(distributed::(C &gt; D)))

In this selector, D is the element which should be matched and should be checked at first. If we convert this selector to a selector which uses a relation internally like:

  A &gt; content (distributed&gt;) B &gt; content (distributed&gt;) C &gt; D

SelectorChecker::checkSelector can receive &apos;D&apos; at first. It&apos;s right-most element. We cau re-use the current implementation of SelectorChecker (right-to-left, backwards) in this case.

If we don&apos;t convert &apos;::distributed()&apos; to the relation, SelectorChecker::checkSelector will receive a &apos;content&apos; (in &apos;A &gt; content&apos;) as the first element which should be checked.
I am afraid that makes an implementation of checking complicated. We have to retrieve the inner-most element, &apos;D&apos;, somehow, and start matching from &apos;D&apos;. And we have to go backword from &apos;selector given as a parameter&apos; to a insertion point somehow.

I&apos;ve abandonded this idea at early stage since converting it to the relation makes an implementation much simpler.

&gt;&gt; Source/WebCore/css/SelectorChecker.cpp:289
&gt;&gt; +            return context.scopeOfLastElement-&gt;treeScope() == context.element-&gt;treeScope() ? SelectorMatches : SelectorFailsLocally;
&gt; 
&gt; Why do you store the element, when all you need is its scope?

This is a due to a historical reason in this patch.  As FIXME says, this part is WIP. I have to fix this expression, line 289.
To check precisely, we need an element instead of treeScope here. I have not implemented that yet.

For example,

&lt;shadow root&gt;
  &lt;div class=&apos;A&apos;
    &lt;div class=&apos;B&apos;&gt;
      &lt;content&gt;&lt;/content&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div id=&apos;C&apos;&gt;
    &lt;div id=&apos;D&apos;&gt;
      &lt;style scoped&gt;
        .A  .B content distributed::(*) { color: green }
      &lt;/style&gt;
   &lt;/div&gt;
 &lt;/div&gt;

I&apos;ve not tried, but I guess this style rule matches wrongly. Since in this expression,

&gt; return context.scopeOfLastElement-&gt;treeScope() == context.element-&gt;treeScope() ? SelectorMatches : SelectorFailsLocally

context.scopeOfLastElement is &apos;D&apos; and context.elemetn is &apos;A&apos;. The treeScopes of both are same. So we need to store ContainerNode, &apos;D&apos;, instead of its treeScope. Let me try to implement checking correctly using a given element in the following patch.

&gt;&gt; Source/WebCore/css/StyleResolver.cpp:454
&gt;&gt; +void StyleResolver::addStyleRule(StyleRule* rule, ContainerNode* scope, RuleSet* ruleSet, AddRuleFlags addRuleFlags)
&gt; 
&gt; Ugh, what a nasty detour back into StyleResolver. Is this just because we need to populate the map?

I feel the same thing.  Agreed that&apos;s ugly. 

&gt; Is this just because we need to populate the map?

Yes. That&apos;s the reason. I am hoping we have a better way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802077</commentid>
    <comment_count>44</comment_count>
      <attachid>181656</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-07 23:32:28 -0800</bug_when>
    <thetext>Created attachment 181656
Update ChangeLog. Check scopeOfLastElement using isDescendantof</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802091</commentid>
    <comment_count>45</comment_count>
      <attachid>181659</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-08 00:00:25 -0800</bug_when>
    <thetext>Created attachment 181659
Add a test for ::distributed() used in scoped style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802140</commentid>
    <comment_count>46</comment_count>
      <attachid>181659</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-08 01:39:45 -0800</bug_when>
    <thetext>Comment on attachment 181659
Add a test for ::distributed() used in scoped style.

Attachment 181659 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15740987

New failing tests:
scrollbars/scrollbar-orientation.html
scrollbars/disabled-scrollbar.html
inspector/styles/region-style-crash.html
fast/forms/textarea-metrics.html
scrollbars/scrollbar-drag-thumb-with-large-content.html
scrollbars/scrollbars-on-positioned-content.html
scrollbars/overflow-scrollbar-combinations.html
scrollbars/basic-scrollbar.html
scrollbars/scrollbar-buttons.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802229</commentid>
    <comment_count>47</comment_count>
      <attachid>181659</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-08 06:32:25 -0800</bug_when>
    <thetext>Comment on attachment 181659
Add a test for ::distributed() used in scoped style.

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

&gt; Source/WebCore/css/RuleSet.cpp:291
&gt;          if (rule-&gt;isStyleRule())
&gt; -            addStyleRule(static_cast&lt;StyleRule*&gt;(rule), addRuleFlags);
&gt; +            resolver-&gt;addStyleRule(static_cast&lt;StyleRule*&gt;(rule), const_cast&lt;ContainerNode*&gt;(scope), this, addRuleFlags);

RuleSet calls to StyleResolver::addStyleRule which then calls back to RuleSet::addStyleRule. This is bit of spaghetti. Please factor differently (for example by adding accessors for getting m_shadowDistributedRuleSetMap here).

&gt; Source/WebCore/css/SelectorChecker.cpp:394
&gt; +
&gt; +    case CSSSelector::ShadowDistributed:

Please use SHADOW_DOM guards consistently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802950</commentid>
    <comment_count>48</comment_count>
      <attachid>181830</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-08 20:30:03 -0800</bug_when>
    <thetext>Created attachment 181830
factor addStyleRule.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802952</commentid>
    <comment_count>49</comment_count>
      <attachid>181659</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-08 20:34:34 -0800</bug_when>
    <thetext>Comment on attachment 181659
Add a test for ::distributed() used in scoped style.

Thank you for the review.

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

&gt;&gt; Source/WebCore/css/RuleSet.cpp:291
&gt;&gt; +            resolver-&gt;addStyleRule(static_cast&lt;StyleRule*&gt;(rule), const_cast&lt;ContainerNode*&gt;(scope), this, addRuleFlags);
&gt; 
&gt; RuleSet calls to StyleResolver::addStyleRule which then calls back to RuleSet::addStyleRule. This is bit of spaghetti. Please factor differently (for example by adding accessors for getting m_shadowDistributedRuleSetMap here).

Done.

I&apos;ve removed StyleResolver::addStyleRule. Most of code came back to RuleSet::addRulesFromSheet.
I&apos;ve introduced a StyleResolver::addShadowDistributedRule() which is called from there.

&gt;&gt; Source/WebCore/css/SelectorChecker.cpp:394
&gt;&gt; +    case CSSSelector::ShadowDistributed:
&gt; 
&gt; Please use SHADOW_DOM guards consistently.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802957</commentid>
    <comment_count>50</comment_count>
      <attachid>181830</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-08 20:37:42 -0800</bug_when>
    <thetext>Comment on attachment 181830
factor addStyleRule.

Attachment 181830 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15754564</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802959</commentid>
    <comment_count>51</comment_count>
      <attachid>181830</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-08 20:38:56 -0800</bug_when>
    <thetext>Comment on attachment 181830
factor addStyleRule.

Attachment 181830 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15771312</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802963</commentid>
    <comment_count>52</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-08 20:40:27 -0800</bug_when>
    <thetext>Let me fix a build without SHADOW_DOM flag.

(In reply to comment #50)
&gt; (From update of attachment 181830 [details])
&gt; Attachment 181830 [details] did not pass qt-ews (qt):
&gt; Output: http://queues.webkit.org/results/15754564</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802971</commentid>
    <comment_count>53</comment_count>
      <attachid>181830</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-08 20:51:59 -0800</bug_when>
    <thetext>Comment on attachment 181830
factor addStyleRule.

Attachment 181830 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15757360</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802975</commentid>
    <comment_count>54</comment_count>
      <attachid>181830</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-08 20:59:05 -0800</bug_when>
    <thetext>Comment on attachment 181830
factor addStyleRule.

Attachment 181830 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15775198</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802977</commentid>
    <comment_count>55</comment_count>
      <attachid>181830</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-08 21:02:45 -0800</bug_when>
    <thetext>Comment on attachment 181830
factor addStyleRule.

Attachment 181830 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15758388</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802982</commentid>
    <comment_count>56</comment_count>
      <attachid>181830</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-08 21:08:58 -0800</bug_when>
    <thetext>Comment on attachment 181830
factor addStyleRule.

Attachment 181830 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15755414</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802984</commentid>
    <comment_count>57</comment_count>
      <attachid>181830</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-01-08 21:12:26 -0800</bug_when>
    <thetext>Comment on attachment 181830
factor addStyleRule.

Attachment 181830 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15756419</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803003</commentid>
    <comment_count>58</comment_count>
      <attachid>181830</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2013-01-08 21:29:08 -0800</bug_when>
    <thetext>Comment on attachment 181830
factor addStyleRule.

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Implements a &apos;::distributed()&apos; pseudo element.

Is this a pseudo-element or a pseudo-class?

&gt; Source/WebCore/ChangeLog:11
&gt; +        http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#selecting-nodes-distributed-to-insertion-points

There seems to be a gap between this spec—/select/—and what you’ve implemented here—::distributed(). Who is responsible for resolving this inconsistency?

&gt; Source/WebCore/ChangeLog:13
&gt; +        A &apos;::distributed()&apos; pseudo element is the first CSS rule which

Great explanation of why this is special.

&gt; Source/WebCore/ChangeLog:26
&gt; +        SelectorChecker and is used to check whether the lastly matched element

I think you should give an example in concrete syntax to make this clearer (and avoid &quot;lastly&quot;.) I think you mean

A::distributed(B)

This scope is passed to SelectorChecker and is used to check whether A exists in the scope where the rule is defined.

&gt; Source/WebCore/ChangeLog:31
&gt; +        from a distrirbuted pseudo element to a ShadowDistributed is done

Spelling distributed

&gt; Source/WebCore/css/CSSParser.cpp:9504
&gt; +        else if (isEqualToCSSIdentifier(name, &quot;distributed&quot;))

Should this be webkit- prefixed for now?

&gt; Source/WebCore/css/CSSParser.cpp:10608
&gt; +CSSParserSelector* CSSParser::updateSpecifiersWithElementName(const AtomicString&amp; namespacePrefix, const AtomicString&amp; elementName, CSSParserSelector* specifiers)

Would it be less error-prone to leave this returning void and make it take CSSParserSelector**?

Perhaps this should be renamed, for example

rewriteSpecifiersWtihElementName

&gt; Source/WebCore/css/CSSParserValues.h:194
&gt; +    bool isPseudoDistributedElement() const { return m_selector-&gt;isDistributedPseudoElement(); }

It seems needlessly inconsistent to have isPseudoDistributedElement and isDistributedPseudoElement.

&gt; Source/WebCore/css/CSSSelector.h:318
&gt; +

Nit: Delete this blank line.

&gt; Source/WebCore/css/StyleResolver.cpp:368
&gt; +    m_shadowDistributedRuleSetMap.clear();

Is this enough to stop m_shadowDistributedRuleSetMap growing unboundedly in common uses of web components? For example, if we add and remove a lot of components over time, will that reset styles and cause this map to shrink?

Who owns the key to the map? What stops the key outliving the actual node?

&gt; Source/WebCore/html/shadow/InsertionPoint.h:182
&gt; +inline void collectAllMidpointInsertionPoints(const Node* projectedNode, Vector&lt;InsertionPoint*, 8&gt;&amp; results)

What does &apos;Midpoint&apos; mean here? Maybe intermediate is a better word? Maybe collectAllInsertionPoints is even clearer?

&gt; Source/WebCore/html/shadow/InsertionPoint.h:184
&gt; +    InsertionPoint* insertionPoint = 0;

Why do you need this variable? Just use the local variable scoped to the if.

&gt; LayoutTests/fast/dom/shadow/distributed-pseudo-element-nested.html:10
&gt; +shadowStyle.innerHTML = &apos;div content::distributed(div content::distributed(div.green)) { color: green; }&apos;;

You should include a test where the thing directly to the left of ::distributed is neither content nor shadow, and does match (eg *) and does not match (eg span or some other non-insertion-point.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803527</commentid>
    <comment_count>59</comment_count>
      <attachid>181830</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-09 11:30:29 -0800</bug_when>
    <thetext>Comment on attachment 181830
factor addStyleRule.

All these ifdefs and extra gobs of code in StyleResolver make me super-sad. There has got to be a better way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803638</commentid>
    <comment_count>60</comment_count>
      <attachid>181476</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-09 13:12:54 -0800</bug_when>
    <thetext>Comment on attachment 181476
Remove rule_bison.py from the previous patch.

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:27
&gt;&gt;&gt; +        exists in the scope where the rule is originally defined.
&gt;&gt; 
&gt;&gt; I think using the word &quot;last&quot; here is disorienting, since it&apos;s hard to understand what &quot;last&quot; means in this context. If anything, it&apos;s &quot;first&quot;, since the selectors are resolved backwards.
&gt; 
&gt; That&apos;s the &apos;last&apos; element actually in that sense. That&apos;s the left-most element in the selector. Using &apos;lastly&apos; instead of &apos;last&apos; makes sense? Let me update the ChangeLog.
&gt; 
&gt; The scope is passed to SelectorChecker and is used to check whether the lastly matched element
&gt; exists in the scope where the rule is originally defined.

lastly sounds awkward.

&gt;&gt;&gt; Source/WebCore/css/CSSParser.cpp:10608
&gt;&gt;&gt; +CSSParserSelector* CSSParser::updateSpecifiersWithElementName(const AtomicString&amp; namespacePrefix, const AtomicString&amp; elementName, CSSParserSelector* specifiers)
&gt;&gt; 
&gt;&gt; The name of the function is now misleading. You&apos;re not only updating specifiers, but also occasionally change the specifiers.
&gt; 
&gt; Hmm.  Could you clarify a difference between update and change in this context?
&gt; I am not confident how we should name this function.
&gt; 
&gt; ShadowDecentRelation seems to do the similar things to what I added to this function already.

True, though ShadowDescendantRelation doesn&apos;t turn around and return a whole different selector to replace the one that&apos;s being processed as $$.

&gt;&gt;&gt; Source/WebCore/css/CSSParser.cpp:10629
&gt;&gt;&gt; +        end-&gt;setRelation(CSSSelector::ShadowDistributed);
&gt;&gt; 
&gt;&gt; Is this necessary? Can we not just store these like we do in -webkit-any?
&gt; 
&gt; As long as we use Relation, there is no such &apos;generic&apos; relation which we can reuse with a parameter of &apos;-webkit-any-xx&apos;,
&gt; 
&gt; The current enum Relation  is defined as:
&gt; 
&gt;         enum Relation {
&gt;             Descendant = 0,
&gt;             Child,
&gt;             DirectAdjacent,
&gt;             IndirectAdjacent,
&gt;             SubSelector,
&gt;             ShadowDescendant,
&gt;             ShadowDistributed,
&gt;         };
&gt; 
&gt; 
&gt; Does this answer makes sense? Are you suggesting we should not use Relation here?

I was suggesting not using relation, but now I realize I need to first fully comprehend whether it&apos;s possible.

&gt; Source/WebCore/css/CSSParserValues.h:194
&gt; +    bool isPseudoDistributedElement() const { return m_selector-&gt;isDistributedPseudoElement(); }

Do we need this anywhere? I wonder if the &quot;::distributed(&quot; is not the name of the function, but rather the name of the relation.

&gt;&gt;&gt; Source/WebCore/css/CSSSelector.h:80
&gt;&gt;&gt; +            ShadowDistributed,
&gt;&gt; 
&gt;&gt; I am not convinced we need to treat &quot;distributed&quot; function as a relation.
&gt; 
&gt; The makes an implementation much simpler. Let me explain. Let&apos;s assume the following selector is given:
&gt; 
&gt;   A &gt; content::distributed(B &gt; content(distributed::(C &gt; D)))
&gt; 
&gt; In this selector, D is the element which should be matched and should be checked at first. If we convert this selector to a selector which uses a relation internally like:
&gt; 
&gt;   A &gt; content (distributed&gt;) B &gt; content (distributed&gt;) C &gt; D
&gt; 
&gt; SelectorChecker::checkSelector can receive &apos;D&apos; at first. It&apos;s right-most element. We cau re-use the current implementation of SelectorChecker (right-to-left, backwards) in this case.
&gt; 
&gt; If we don&apos;t convert &apos;::distributed()&apos; to the relation, SelectorChecker::checkSelector will receive a &apos;content&apos; (in &apos;A &gt; content&apos;) as the first element which should be checked.
&gt; I am afraid that makes an implementation of checking complicated. We have to retrieve the inner-most element, &apos;D&apos;, somehow, and start matching from &apos;D&apos;. And we have to go backword from &apos;selector given as a parameter&apos; to a insertion point somehow.
&gt; 
&gt; I&apos;ve abandonded this idea at early stage since converting it to the relation makes an implementation much simpler.

I understand. We are introducing a whole new type of CSS functions into WebKit, the CSS pseudo element functions. Per discussion with Tab, this is just a first one (lucky us).

&gt;&gt;&gt; Source/WebCore/css/SelectorChecker.cpp:289
&gt;&gt;&gt; +            return context.scopeOfLastElement-&gt;treeScope() == context.element-&gt;treeScope() ? SelectorMatches : SelectorFailsLocally;
&gt;&gt; 
&gt;&gt; Why do you store the element, when all you need is its scope?
&gt; 
&gt; This is a due to a historical reason in this patch.  As FIXME says, this part is WIP. I have to fix this expression, line 289.
&gt; To check precisely, we need an element instead of treeScope here. I have not implemented that yet.
&gt; 
&gt; For example,
&gt; 
&gt; &lt;shadow root&gt;
&gt;   &lt;div class=&apos;A&apos;
&gt;     &lt;div class=&apos;B&apos;&gt;
&gt;       &lt;content&gt;&lt;/content&gt;
&gt;     &lt;/div&gt;
&gt;   &lt;/div&gt;
&gt;   &lt;div id=&apos;C&apos;&gt;
&gt;     &lt;div id=&apos;D&apos;&gt;
&gt;       &lt;style scoped&gt;
&gt;         .A  .B content distributed::(*) { color: green }
&gt;       &lt;/style&gt;
&gt;    &lt;/div&gt;
&gt;  &lt;/div&gt;
&gt; 
&gt; I&apos;ve not tried, but I guess this style rule matches wrongly. Since in this expression,

I see. You really need to expand on this. Also, we should have a type that&apos;s different from ContainerNode to denote a scoping element. Even if it&apos;s a typedef.

&gt; Source/WebCore/css/StyleResolver.cpp:838
&gt; +        collectMatchingRules(it-&gt;value.get(), result.ranges.firstAuthorRule, result.ranges.lastAuthorRule, options);

Ideally, the data structure that deals with ::distributed rules should be completely factored out of the StyleResolver and its logic encapsulated. This collectMatchingRules call is what makes it difficult.

I am wondering if it&apos;s time to decouple collecting rules for an element into a separate class from StyleResolver, and then allow passing around its instance to collect rules. This should enable creating ::distributed rules class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803639</commentid>
    <comment_count>61</comment_count>
      <attachid>181830</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-09 13:15:35 -0800</bug_when>
    <thetext>Comment on attachment 181830
factor addStyleRule.

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

&gt;&gt; Source/WebCore/ChangeLog:13
&gt;&gt; +        A &apos;::distributed()&apos; pseudo element is the first CSS rule which
&gt; 
&gt; Great explanation of why this is special.

It&apos;s also the first-ever pseudo element function in WebKit.

&gt;&gt; Source/WebCore/css/CSSParser.cpp:10608
&gt;&gt; +CSSParserSelector* CSSParser::updateSpecifiersWithElementName(const AtomicString&amp; namespacePrefix, const AtomicString&amp; elementName, CSSParserSelector* specifiers)
&gt; 
&gt; Would it be less error-prone to leave this returning void and make it take CSSParserSelector**?
&gt; 
&gt; Perhaps this should be renamed, for example
&gt; 
&gt; rewriteSpecifiersWtihElementName

It seems to me this whole bit of machinery needs to be first cleaned up and named according to purpose. Stuffing more stuff in it just looks bad.

&gt; Source/WebCore/css/SelectorChecker.h:79
&gt; +        const ContainerNode* scopeOfLastElement;

I am still unhappy about the name. If I have to think about what this means, imagine what a person who didn&apos;t write the Shadow DOM spec would. We must do better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804055</commentid>
    <comment_count>62</comment_count>
      <attachid>182063</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-09 22:14:56 -0800</bug_when>
    <thetext>Created attachment 182063
iteration. A lot of refinements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804078</commentid>
    <comment_count>63</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-09 22:45:05 -0800</bug_when>
    <thetext>Thank you for the review. Let me reply to only the comments I&apos;ve addressed.
There still remains to-do things.

(In reply to comment #58)
&gt; (From update of attachment 181830 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=181830&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Implements a &apos;::distributed()&apos; pseudo element.
&gt; 
&gt; Is this a pseudo-element or a pseudo-class?

As discussed in another threads, it should be a pseudo element.

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#selecting-nodes-distributed-to-insertion-points
&gt; 
&gt; There seems to be a gap between this spec—/select/—and what you’ve implemented here—::distributed(). Who is responsible for resolving this inconsistency?
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:13
&gt; &gt; +        A &apos;::distributed()&apos; pseudo element is the first CSS rule which
&gt; 
&gt; Great explanation of why this is special.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:26
&gt; &gt; +        SelectorChecker and is used to check whether the lastly matched element
&gt; 
&gt; I think you should give an example in concrete syntax to make this clearer (and avoid &quot;lastly&quot;.) I think you mean
&gt; 
&gt; A::distributed(B)
&gt; 
&gt; This scope is passed to SelectorChecker and is used to check whether A exists in the scope where the rule is defined.

I&apos;ve updated the ChangeLog.

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:31
&gt; &gt; +        from a distrirbuted pseudo element to a ShadowDistributed is done
&gt; 
&gt; Spelling distributed

Done.

&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:9504
&gt; &gt; +        else if (isEqualToCSSIdentifier(name, &quot;distributed&quot;))
&gt; 
&gt; Should this be webkit- prefixed for now?

Done. Now it&apos;s a &apos;-webkit-distributed::(...)&apos;

&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:10608
&gt; &gt; +CSSParserSelector* CSSParser::updateSpecifiersWithElementName(const AtomicString&amp; namespacePrefix, const AtomicString&amp; elementName, CSSParserSelector* specifiers)
&gt; 
&gt; Would it be less error-prone to leave this returning void and make it take CSSParserSelector**?

I don&apos;t think it&apos;s worth introducing CSSParseSelector** here. The current code is not so match bad so far and be consistent with updateSpecifiers() which also returns CSSParserSelector*.

&gt; 
&gt; Perhaps this should be renamed, for example
&gt; 
&gt; rewriteSpecifiersWtihElementName

Agreed on renaming. Done.


&gt; 
&gt; &gt; Source/WebCore/css/CSSParserValues.h:194
&gt; &gt; +    bool isPseudoDistributedElement() const { return m_selector-&gt;isDistributedPseudoElement(); }
&gt; 
&gt; It seems needlessly inconsistent to have isPseudoDistributedElement and isDistributedPseudoElement.

Done.

&gt; 
&gt; &gt; Source/WebCore/css/CSSSelector.h:318
&gt; &gt; +
&gt; 
&gt; Nit: Delete this blank line.

Done.

&gt; 
&gt; &gt; Source/WebCore/css/StyleResolver.cpp:368
&gt; &gt; +    m_shadowDistributedRuleSetMap.clear();
&gt; 
&gt; Is this enough to stop m_shadowDistributedRuleSetMap growing unboundedly in common uses of web components? For example, if we add and remove a lot of components over time, will that reset styles and cause this map to shrink?
&gt; 
&gt; Who owns the key to the map? What stops the key outliving the actual node?

At the first glance, if a node of scope where style is defined is deleted, style node is also deleted as well. So eventually StyleResolver&apos;s reset() will be called.

Let me investigate that.

&gt; 
&gt; &gt; Source/WebCore/html/shadow/InsertionPoint.h:182
&gt; &gt; +inline void collectAllMidpointInsertionPoints(const Node* projectedNode, Vector&lt;InsertionPoint*, 8&gt;&amp; results)
&gt; 
&gt; What does &apos;Midpoint&apos; mean here? Maybe intermediate is a better word? Maybe collectAllInsertionPoints is even clearer?

Done. Renamed it to collectAllInsertionPoints.

&gt; 
&gt; &gt; Source/WebCore/html/shadow/InsertionPoint.h:184
&gt; &gt; +    InsertionPoint* insertionPoint = 0;
&gt; 
&gt; Why do you need this variable? Just use the local variable scoped to the if.

Right. This is a mistake. Done.

&gt; 
&gt; &gt; LayoutTests/fast/dom/shadow/distributed-pseudo-element-nested.html:10
&gt; &gt; +shadowStyle.innerHTML = &apos;div content::distributed(div content::distributed(div.green)) { color: green; }&apos;;
&gt; 
&gt; You should include a test where the thing directly to the left of ::distributed is neither content nor shadow, and does match (eg *) and does not match (eg span or some other non-insertion-point.)

Done. I&apos;ve added a few more tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804096</commentid>
    <comment_count>64</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-09 23:11:49 -0800</bug_when>
    <thetext>Thank you for the review.

(In reply to comment #60)
&gt; (From update of attachment 181476 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=181476&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/ChangeLog:27
&gt; &gt;&gt;&gt; +        exists in the scope where the rule is originally defined.
&gt; &gt;&gt; 
&gt; &gt;&gt; I think using the word &quot;last&quot; here is disorienting, since it&apos;s hard to understand what &quot;last&quot; means in this context. If anything, it&apos;s &quot;first&quot;, since the selectors are resolved backwards.
&gt; &gt; 
&gt; &gt; That&apos;s the &apos;last&apos; element actually in that sense. That&apos;s the left-most element in the selector. Using &apos;lastly&apos; instead of &apos;last&apos; makes sense? Let me update the ChangeLog.
&gt; &gt; 
&gt; &gt; The scope is passed to SelectorChecker and is used to check whether the lastly matched element
&gt; &gt; exists in the scope where the rule is originally defined.
&gt; 
&gt; lastly sounds awkward.

I&apos;ve updated the ChangeLog.

&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/css/CSSParser.cpp:10608
&gt; &gt;&gt;&gt; +CSSParserSelector* CSSParser::updateSpecifiersWithElementName(const AtomicString&amp; namespacePrefix, const AtomicString&amp; elementName, CSSParserSelector* specifiers)
&gt; &gt;&gt; 
&gt; &gt;&gt; The name of the function is now misleading. You&apos;re not only updating specifiers, but also occasionally change the specifiers.
&gt; &gt; 
&gt; &gt; Hmm.  Could you clarify a difference between update and change in this context?
&gt; &gt; I am not confident how we should name this function.
&gt; &gt; 
&gt; &gt; ShadowDecentRelation seems to do the similar things to what I added to this function already.
&gt; 
&gt; True, though ShadowDescendantRelation doesn&apos;t turn around and return a whole different selector to replace the one that&apos;s being processed as $$.
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/css/CSSParser.cpp:10629
&gt; &gt;&gt;&gt; +        end-&gt;setRelation(CSSSelector::ShadowDistributed);
&gt; &gt;&gt; 
&gt; &gt;&gt; Is this necessary? Can we not just store these like we do in -webkit-any?
&gt; &gt; 
&gt; &gt; As long as we use Relation, there is no such &apos;generic&apos; relation which we can reuse with a parameter of &apos;-webkit-any-xx&apos;,
&gt; &gt; 
&gt; &gt; The current enum Relation  is defined as:
&gt; &gt; 
&gt; &gt;         enum Relation {
&gt; &gt;             Descendant = 0,
&gt; &gt;             Child,
&gt; &gt;             DirectAdjacent,
&gt; &gt;             IndirectAdjacent,
&gt; &gt;             SubSelector,
&gt; &gt;             ShadowDescendant,
&gt; &gt;             ShadowDistributed,
&gt; &gt;         };
&gt; &gt; 
&gt; &gt; 
&gt; &gt; Does this answer makes sense? Are you suggesting we should not use Relation here?
&gt; 
&gt; I was suggesting not using relation, but now I realize I need to first fully comprehend whether it&apos;s possible.

Okay. I think using relation is the best way to represent this *relation*.

&gt; 
&gt; &gt; Source/WebCore/css/CSSParserValues.h:194
&gt; &gt; +    bool isPseudoDistributedElement() const { return m_selector-&gt;isDistributedPseudoElement(); }
&gt; 
&gt; Do we need this anywhere? I wonder if the &quot;::distributed(&quot; is not the name of the function, but rather the name of the relation.

It&apos;s used in parsing stage. After paring &apos;::distributed() as a functional pseudo element, it is transformed to the relation.
The ShadowDistributed relation does not have a name (as a string) internally.

&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/css/CSSSelector.h:80
&gt; &gt;&gt;&gt; +            ShadowDistributed,
&gt; &gt;&gt; 
&gt; &gt;&gt; I am not convinced we need to treat &quot;distributed&quot; function as a relation.
&gt; &gt; 
&gt; &gt; The makes an implementation much simpler. Let me explain. Let&apos;s assume the following selector is given:
&gt; &gt; 
&gt; &gt;   A &gt; content::distributed(B &gt; content(distributed::(C &gt; D)))
&gt; &gt; 
&gt; &gt; In this selector, D is the element which should be matched and should be checked at first. If we convert this selector to a selector which uses a relation internally like:
&gt; &gt; 
&gt; &gt;   A &gt; content (distributed&gt;) B &gt; content (distributed&gt;) C &gt; D
&gt; &gt; 
&gt; &gt; SelectorChecker::checkSelector can receive &apos;D&apos; at first. It&apos;s right-most element. We cau re-use the current implementation of SelectorChecker (right-to-left, backwards) in this case.
&gt; &gt; 
&gt; &gt; If we don&apos;t convert &apos;::distributed()&apos; to the relation, SelectorChecker::checkSelector will receive a &apos;content&apos; (in &apos;A &gt; content&apos;) as the first element which should be checked.
&gt; &gt; I am afraid that makes an implementation of checking complicated. We have to retrieve the inner-most element, &apos;D&apos;, somehow, and start matching from &apos;D&apos;. And we have to go backword from &apos;selector given as a parameter&apos; to a insertion point somehow.
&gt; &gt; 
&gt; &gt; I&apos;ve abandonded this idea at early stage since converting it to the relation makes an implementation much simpler.
&gt; 
&gt; I understand. We are introducing a whole new type of CSS functions into WebKit, the CSS pseudo element functions. Per discussion with Tab, this is just a first one (lucky us).

Yay. Good luck to us :)

&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/css/SelectorChecker.cpp:289
&gt; &gt;&gt;&gt; +            return context.scopeOfLastElement-&gt;treeScope() == context.element-&gt;treeScope() ? SelectorMatches : SelectorFailsLocally;
&gt; &gt;&gt; 
&gt; &gt;&gt; Why do you store the element, when all you need is its scope?
&gt; &gt; 
&gt; &gt; This is a due to a historical reason in this patch.  As FIXME says, this part is WIP. I have to fix this expression, line 289.
&gt; &gt; To check precisely, we need an element instead of treeScope here. I have not implemented that yet.
&gt; &gt; 
&gt; &gt; For example,
&gt; &gt; 
&gt; &gt; &lt;shadow root&gt;
&gt; &gt;   &lt;div class=&apos;A&apos;
&gt; &gt;     &lt;div class=&apos;B&apos;&gt;
&gt; &gt;       &lt;content&gt;&lt;/content&gt;
&gt; &gt;     &lt;/div&gt;
&gt; &gt;   &lt;/div&gt;
&gt; &gt;   &lt;div id=&apos;C&apos;&gt;
&gt; &gt;     &lt;div id=&apos;D&apos;&gt;
&gt; &gt;       &lt;style scoped&gt;
&gt; &gt;         .A  .B content distributed::(*) { color: green }
&gt; &gt;       &lt;/style&gt;
&gt; &gt;    &lt;/div&gt;
&gt; &gt;  &lt;/div&gt;
&gt; &gt; 
&gt; &gt; I&apos;ve not tried, but I guess this style rule matches wrongly. Since in this expression,
x
&gt; 
&gt; I see. You really need to expand on this. Also, we should have a type that&apos;s different from ContainerNode to denote a scoping element. Even if it&apos;s a typedef.

I&apos;ve fixed this, though it&apos;s still ContainerNode.

&gt; 
&gt; &gt; Source/WebCore/css/StyleResolver.cpp:838
&gt; &gt; +        collectMatchingRules(it-&gt;value.get(), result.ranges.firstAuthorRule, result.ranges.lastAuthorRule, options);
&gt; 
&gt; Ideally, the data structure that deals with ::distributed rules should be completely factored out of the StyleResolver and its logic encapsulated. This collectMatchingRules call is what makes it difficult.
&gt; 
&gt; I am wondering if it&apos;s time to decouple collecting rules for an element into a separate class from StyleResolver, and then allow passing around its instance to collect rules. This should enable creating ::distributed rules class.

Let me try what you are suggesting. I&apos;ve never tried that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804097</commentid>
    <comment_count>65</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-09 23:14:45 -0800</bug_when>
    <thetext>Thank you for the review again.

(In reply to comment #61)
&gt; (From update of attachment 181830 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=181830&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:13
&gt; &gt;&gt; +        A &apos;::distributed()&apos; pseudo element is the first CSS rule which
&gt; &gt; 
&gt; &gt; Great explanation of why this is special.
&gt; 
&gt; It&apos;s also the first-ever pseudo element function in WebKit.
&gt; 
&gt; &gt;&gt; Source/WebCore/css/CSSParser.cpp:10608
&gt; &gt;&gt; +CSSParserSelector* CSSParser::updateSpecifiersWithElementName(const AtomicString&amp; namespacePrefix, const AtomicString&amp; elementName, CSSParserSelector* specifiers)
&gt; &gt; 
&gt; &gt; Would it be less error-prone to leave this returning void and make it take CSSParserSelector**?
&gt; &gt; 
&gt; &gt; Perhaps this should be renamed, for example
&gt; &gt; 
&gt; &gt; rewriteSpecifiersWtihElementName
&gt; 
&gt; It seems to me this whole bit of machinery needs to be first cleaned up and named according to purpose. Stuffing more stuff in it just looks bad.
&gt; 
&gt; &gt; Source/WebCore/css/SelectorChecker.h:79
&gt; &gt; +        const ContainerNode* scopeOfLastElement;
&gt; 
&gt; I am still unhappy about the name. If I have to think about what this means, imagine what a person who didn&apos;t write the Shadow DOM spec would. We must do better.

Okay. Let me think a better name. That&apos;s my bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804116</commentid>
    <comment_count>66</comment_count>
      <attachid>182063</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-10 00:03:08 -0800</bug_when>
    <thetext>Comment on attachment 182063
iteration. A lot of refinements.

Attachment 182063 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15795079

New failing tests:
scrollbars/scrollbar-orientation.html
scrollbars/disabled-scrollbar.html
inspector/styles/region-style-crash.html
fast/forms/textarea-metrics.html
scrollbars/scrollbar-buttons.html
scrollbars/scrollbars-on-positioned-content.html
scrollbars/overflow-scrollbar-combinations.html
scrollbars/basic-scrollbar.html
scrollbars/scrollbar-drag-thumb-with-large-content.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804117</commentid>
    <comment_count>67</comment_count>
      <attachid>182077</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-10 00:05:44 -0800</bug_when>
    <thetext>Created attachment 182077
use enum CrossBoundary instead of scopeOfLastElement. Reuse scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804120</commentid>
    <comment_count>68</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-10 00:10:04 -0800</bug_when>
    <thetext>I&apos;ve removed the usage of scopeOfLastElement. Instead of it, I&apos;ve decided to use enum, CrossBoundary.
We can use an existing scope parameter to remember *scopeOfLastElement* since they are never mutually used.

(In reply to comment #67)
&gt; Created an attachment (id=182077) [details]
&gt; use enum CrossBoundary instead of scopeOfLastElement. Reuse scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804122</commentid>
    <comment_count>69</comment_count>
      <attachid>182079</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-10 00:24:31 -0800</bug_when>
    <thetext>Created attachment 182079
Remove DISTRIBUTED from RenderStyleConstants.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804930</commentid>
    <comment_count>70</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-10 20:58:42 -0800</bug_when>
    <thetext>(In reply to comment #64)

&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/css/StyleResolver.cpp:838
&gt; &gt; &gt; +        collectMatchingRules(it-&gt;value.get(), result.ranges.firstAuthorRule, result.ranges.lastAuthorRule, options);
&gt; &gt; 
&gt; &gt; Ideally, the data structure that deals with ::distributed rules should be completely factored out of the StyleResolver and its logic encapsulated. This collectMatchingRules call is what makes it difficult.
&gt; &gt; 
&gt; &gt; I am wondering if it&apos;s time to decouple collecting rules for an element into a separate class from StyleResolver, and then allow passing around its instance to collect rules. This should enable creating ::distributed rules class.
&gt; 
&gt; Let me try what you are suggesting. I&apos;ve never tried that.

I&apos;ve tried that, but it turned out that it requires non-trivial refactoring. I think that should be done as another fix from a wider perspective. Maybe soon after this patch is landed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804935</commentid>
    <comment_count>71</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-10 21:06:04 -0800</bug_when>
    <thetext>(In reply to comment #70)

&gt; I&apos;ve tried that, but it turned out that it requires non-trivial refactoring. I think that should be done as another fix from a wider perspective. Maybe soon after this patch is landed?

There&apos;s no great hurry to land this patch. Let&apos;s do this right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804938</commentid>
    <comment_count>72</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-10 21:07:26 -0800</bug_when>
    <thetext>I&apos;m okay to land this patch after refactoring. I think It depends on the urgency of the need of this feature for Web developers.

(In reply to comment #70)
&gt; (In reply to comment #64)
&gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/css/StyleResolver.cpp:838
&gt; &gt; &gt; &gt; +        collectMatchingRules(it-&gt;value.get(), result.ranges.firstAuthorRule, result.ranges.lastAuthorRule, options);
&gt; &gt; &gt; 
&gt; &gt; &gt; Ideally, the data structure that deals with ::distributed rules should be completely factored out of the StyleResolver and its logic encapsulated. This collectMatchingRules call is what makes it difficult.
&gt; &gt; &gt; 
&gt; &gt; &gt; I am wondering if it&apos;s time to decouple collecting rules for an element into a separate class from StyleResolver, and then allow passing around its instance to collect rules. This should enable creating ::distributed rules class.
&gt; &gt; 
&gt; &gt; Let me try what you are suggesting. I&apos;ve never tried that.
&gt; 
&gt; I&apos;ve tried that, but it turned out that it requires non-trivial refactoring. I think that should be done as another fix from a wider perspective. Maybe soon after this patch is landed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804945</commentid>
    <comment_count>73</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-10 21:21:59 -0800</bug_when>
    <thetext>A). One benefit of landing this before refactoring is that it forces those who will refactor StyleResolver to consider how these cross-boundary CSS rules should be implemented in their refactoring process.

B). Of course, landing this before refactoring will increase a maximum value of current StyleResolver&apos;s spaghetti a bit.

I don&apos;t have a strong opinion, but A is worth than B, isn&apos;t it?


(In reply to comment #72)
&gt; I&apos;m okay to land this patch after refactoring. I think It depends on the urgency of the need of this feature for Web developers.
&gt; 
&gt; (In reply to comment #70)
&gt; &gt; (In reply to comment #64)
&gt; &gt; 
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Source/WebCore/css/StyleResolver.cpp:838
&gt; &gt; &gt; &gt; &gt; +        collectMatchingRules(it-&gt;value.get(), result.ranges.firstAuthorRule, result.ranges.lastAuthorRule, options);
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Ideally, the data structure that deals with ::distributed rules should be completely factored out of the StyleResolver and its logic encapsulated. This collectMatchingRules call is what makes it difficult.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I am wondering if it&apos;s time to decouple collecting rules for an element into a separate class from StyleResolver, and then allow passing around its instance to collect rules. This should enable creating ::distributed rules class.
&gt; &gt; &gt; 
&gt; &gt; &gt; Let me try what you are suggesting. I&apos;ve never tried that.
&gt; &gt; 
&gt; &gt; I&apos;ve tried that, but it turned out that it requires non-trivial refactoring. I think that should be done as another fix from a wider perspective. Maybe soon after this patch is landed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804954</commentid>
    <comment_count>74</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-10 21:45:00 -0800</bug_when>
    <thetext>(In reply to comment #73)
&gt; A). One benefit of landing this before refactoring is that it forces those who will refactor StyleResolver to consider how these cross-boundary CSS rules should be implemented in their refactoring process.

That&apos;s true, but this is a classic paying back the technical debt scenario. You swipe the card, and then some time later &quot;those who will refactor StyleResolver&quot; will have to put up the cash.

What I am suggesting is that we treat StyleResolver refactoring as a yak standing in font of us. And there&apos;s no way around shaving it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804961</commentid>
    <comment_count>75</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-10 22:00:18 -0800</bug_when>
    <thetext>Okay.  I understand it. But I&apos;d like to note that I meant that landing this before refactoring will be beneficial for us, who will refactor, instead of technical debt.

We can get benefits from landed layout tests written for &apos;::distributed()&apos; in refactoring process. That will give us a confidence in refactoring process. I think how to implement crossing shadow boundary rules should be considered altogether in our refactoring process.

(In reply to comment #74)
&gt; (In reply to comment #73)
&gt; &gt; A). One benefit of landing this before refactoring is that it forces those who will refactor StyleResolver to consider how these cross-boundary CSS rules should be implemented in their refactoring process.
&gt; 
&gt; That&apos;s true, but this is a classic paying back the technical debt scenario. You swipe the card, and then some time later &quot;those who will refactor StyleResolver&quot; will have to put up the cash.
&gt; 
&gt; What I am suggesting is that we treat StyleResolver refactoring as a yak standing in font of us. And there&apos;s no way around shaving it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804978</commentid>
    <comment_count>76</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-10 22:27:05 -0800</bug_when>
    <thetext>(In reply to comment #75)
&gt; We can get benefits from landed layout tests written for &apos;::distributed()&apos; in refactoring process. That will give us a confidence in refactoring process. I think how to implement crossing shadow boundary rules should be considered altogether in our refactoring process.

That is actually a pretty good point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805037</commentid>
    <comment_count>77</comment_count>
      <attachid>182283</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-11 00:37:43 -0800</bug_when>
    <thetext>Created attachment 182283
Refactor StyleResolver so that a class ShadowDistributedRules can be separataed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805039</commentid>
    <comment_count>78</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-11 00:39:40 -0800</bug_when>
    <thetext>I&apos;ve done a small refactoring for StyleResolver so that we can have a ShadowDistributedRules as a separated class from StyleResolver.

- Introduces a MatchRequest class, which replaces a MatchOptions.
- Let ShadowDistributedRules return a set of MatchRequest so that we don&apos;t have to call StyleResolver::collectMatchRules() from there.

WDYT?

(In reply to comment #77)
&gt; Created an attachment (id=182283) [details]
&gt; Refactor StyleResolver so that a class ShadowDistributedRules can be separataed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805058</commentid>
    <comment_count>79</comment_count>
      <attachid>182293</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-11 01:19:40 -0800</bug_when>
    <thetext>Created attachment 182293
Update a ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805318</commentid>
    <comment_count>80</comment_count>
      <attachid>182293</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-11 09:25:38 -0800</bug_when>
    <thetext>Comment on attachment 182293
Update a ChangeLog

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

Now we&apos;re cooking with gas! This looks interesting. It seems the first yak to shave is to introduce MatchRequest.

&gt; Source/WebCore/css/StyleResolver.cpp:262
&gt; +void ShadowDistributedRules::addShadowDistributedRule(StyleRule* rule, size_t selectorIndex, ContainerNode* scope, AddRuleFlags addRuleFlags)

addRule

&gt; Source/WebCore/css/StyleResolver.cpp:479
&gt; +void StyleResolver::addShadowDistributedRule(StyleRule* rule, size_t selectorIndex, ContainerNode* scope, AddRuleFlags addRuleFlags)
&gt; +{
&gt; +    m_shadowDistributedRules.addShadowDistributedRule(rule, selectorIndex, scope, addRuleFlags);
&gt; +}

This is not needed anymore. RuleSet can add directly: styleResolver.shadowDistributedRules().addRule(...)

&gt; Source/WebCore/css/StyleResolver.cpp:850
&gt; +    m_shadowDistributedRules.collectMatchRequests(includeEmptyRules, matchRequests);
&gt; +    for (size_t i = 0; i &lt; matchRequests.size(); ++i)
&gt; +        collectMatchingRules(matchRequests[i], result.ranges.firstAuthorRule, result.ranges.lastAuthorRule);

This is where stuff falls apart somewhat. If there was a RuleCollector class factored out of StyleResolver, you could just give it to ShadowDistributedRules, so that it could use it directly, instead of queueing up requests.

&gt; Source/WebCore/css/StyleResolver.h:134
&gt; +class MatchRequest {

MatchRequest looks like the right data structure here.

&gt; Source/WebCore/css/StyleResolver.h:145
&gt; +    MatchRequest updated(RuleSet* newRuleSet) const { return MatchRequest(newRuleSet, scope, includeEmptyRules, crossBoundary); }

This sounds like a copy constructor-style thing. &quot;updated&quot; is awkward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806984</commentid>
    <comment_count>81</comment_count>
      <attachid>182702</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-14 22:08:19 -0800</bug_when>
    <thetext>Created attachment 182702
iter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806990</commentid>
    <comment_count>82</comment_count>
      <attachid>182293</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-14 22:14:50 -0800</bug_when>
    <thetext>Comment on attachment 182293
Update a ChangeLog

Thank you for the review.

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

&gt;&gt; Source/WebCore/css/StyleResolver.cpp:262
&gt;&gt; +void ShadowDistributedRules::addShadowDistributedRule(StyleRule* rule, size_t selectorIndex, ContainerNode* scope, AddRuleFlags addRuleFlags)
&gt; 
&gt; addRule

Done.

&gt;&gt; Source/WebCore/css/StyleResolver.cpp:479
&gt;&gt; +}
&gt; 
&gt; This is not needed anymore. RuleSet can add directly: styleResolver.shadowDistributedRules().addRule(...)

Okay. It&apos;s like a WebKit style. Done.

&gt;&gt; Source/WebCore/css/StyleResolver.cpp:850
&gt;&gt; +        collectMatchingRules(matchRequests[i], result.ranges.firstAuthorRule, result.ranges.lastAuthorRule);
&gt; 
&gt; This is where stuff falls apart somewhat. If there was a RuleCollector class factored out of StyleResolver, you could just give it to ShadowDistributedRules, so that it could use it directly, instead of queueing up requests.

Actually I&apos;ve tried that before sending the patch and decided not to include that in the patch :). It requires non-trivial refactoring since collectMatchingXXX families depend on a lot of member variables in StyleResolver and these variables seems to be used in other function in the StyleResolver.

Let me retry that. I am aware that it is worth trying.

&gt;&gt; Source/WebCore/css/StyleResolver.h:145
&gt;&gt; +    MatchRequest updated(RuleSet* newRuleSet) const { return MatchRequest(newRuleSet, scope, includeEmptyRules, crossBoundary); }
&gt; 
&gt; This sounds like a copy constructor-style thing. &quot;updated&quot; is awkward.

Okay. I&apos;ve renamed it to &apos;cloneWith&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806995</commentid>
    <comment_count>83</comment_count>
      <attachid>182702</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-14 22:22:10 -0800</bug_when>
    <thetext>Comment on attachment 182702
iter

Attachment 182702 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15875825</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806996</commentid>
    <comment_count>84</comment_count>
      <attachid>182702</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-14 22:22:32 -0800</bug_when>
    <thetext>Comment on attachment 182702
iter

Attachment 182702 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15845814</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806998</commentid>
    <comment_count>85</comment_count>
      <attachid>182702</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-14 22:23:43 -0800</bug_when>
    <thetext>Comment on attachment 182702
iter

Attachment 182702 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15867767</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807000</commentid>
    <comment_count>86</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-14 22:27:08 -0800</bug_when>
    <thetext>Before proceeding further refactoring for StyleResolver, I am feeling that this patch might become big.

So let me separate this patch into small patches, one of which only introduces MatchRequest in another bug.

(In reply to comment #82)
&gt; (From update of attachment 182293 [details])
&gt; Thank you for the review.
&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=182293&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/css/StyleResolver.cpp:262
&gt; &gt;&gt; +void ShadowDistributedRules::addShadowDistributedRule(StyleRule* rule, size_t selectorIndex, ContainerNode* scope, AddRuleFlags addRuleFlags)
&gt; &gt; 
&gt; &gt; addRule
&gt; 
&gt; Done.
&gt; 
&gt; &gt;&gt; Source/WebCore/css/StyleResolver.cpp:479
&gt; &gt;&gt; +}
&gt; &gt; 
&gt; &gt; This is not needed anymore. RuleSet can add directly: styleResolver.shadowDistributedRules().addRule(...)
&gt; 
&gt; Okay. It&apos;s like a WebKit style. Done.
&gt; 
&gt; &gt;&gt; Source/WebCore/css/StyleResolver.cpp:850
&gt; &gt;&gt; +        collectMatchingRules(matchRequests[i], result.ranges.firstAuthorRule, result.ranges.lastAuthorRule);
&gt; &gt; 
&gt; &gt; This is where stuff falls apart somewhat. If there was a RuleCollector class factored out of StyleResolver, you could just give it to ShadowDistributedRules, so that it could use it directly, instead of queueing up requests.
&gt; 
&gt; Actually I&apos;ve tried that before sending the patch and decided not to include that in the patch :). It requires non-trivial refactoring since collectMatchingXXX families depend on a lot of member variables in StyleResolver and these variables seems to be used in other function in the StyleResolver.
&gt; 
&gt; Let me retry that. I am aware that it is worth trying.
&gt; 
&gt; &gt;&gt; Source/WebCore/css/StyleResolver.h:145
&gt; &gt;&gt; +    MatchRequest updated(RuleSet* newRuleSet) const { return MatchRequest(newRuleSet, scope, includeEmptyRules, crossBoundary); }
&gt; &gt; 
&gt; &gt; This sounds like a copy constructor-style thing. &quot;updated&quot; is awkward.
&gt; 
&gt; Okay. I&apos;ve renamed it to &apos;cloneWith&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807004</commentid>
    <comment_count>87</comment_count>
      <attachid>182702</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-14 22:40:05 -0800</bug_when>
    <thetext>Comment on attachment 182702
iter

Attachment 182702 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15875829</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807106</commentid>
    <comment_count>88</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-15 01:30:53 -0800</bug_when>
    <thetext>Filed as a https://bugs.webkit.org/show_bug.cgi?id=106879.

(In reply to comment #86)
&gt; Before proceeding further refactoring for StyleResolver, I am feeling that this patch might become big.
&gt; 
&gt; So let me separate this patch into small patches, one of which only introduces MatchRequest in another bug.
&gt; 
&gt; (In reply to comment #82)
&gt; &gt; (From update of attachment 182293 [details] [details])
&gt; &gt; Thank you for the review.
&gt; &gt; 
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=182293&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/css/StyleResolver.cpp:262
&gt; &gt; &gt;&gt; +void ShadowDistributedRules::addShadowDistributedRule(StyleRule* rule, size_t selectorIndex, ContainerNode* scope, AddRuleFlags addRuleFlags)
&gt; &gt; &gt; 
&gt; &gt; &gt; addRule
&gt; &gt; 
&gt; &gt; Done.
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/css/StyleResolver.cpp:479
&gt; &gt; &gt;&gt; +}
&gt; &gt; &gt; 
&gt; &gt; &gt; This is not needed anymore. RuleSet can add directly: styleResolver.shadowDistributedRules().addRule(...)
&gt; &gt; 
&gt; &gt; Okay. It&apos;s like a WebKit style. Done.
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/css/StyleResolver.cpp:850
&gt; &gt; &gt;&gt; +        collectMatchingRules(matchRequests[i], result.ranges.firstAuthorRule, result.ranges.lastAuthorRule);
&gt; &gt; &gt; 
&gt; &gt; &gt; This is where stuff falls apart somewhat. If there was a RuleCollector class factored out of StyleResolver, you could just give it to ShadowDistributedRules, so that it could use it directly, instead of queueing up requests.
&gt; &gt; 
&gt; &gt; Actually I&apos;ve tried that before sending the patch and decided not to include that in the patch :). It requires non-trivial refactoring since collectMatchingXXX families depend on a lot of member variables in StyleResolver and these variables seems to be used in other function in the StyleResolver.
&gt; &gt; 
&gt; &gt; Let me retry that. I am aware that it is worth trying.
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/css/StyleResolver.h:145
&gt; &gt; &gt;&gt; +    MatchRequest updated(RuleSet* newRuleSet) const { return MatchRequest(newRuleSet, scope, includeEmptyRules, crossBoundary); }
&gt; &gt; &gt; 
&gt; &gt; &gt; This sounds like a copy constructor-style thing. &quot;updated&quot; is awkward.
&gt; &gt; 
&gt; &gt; Okay. I&apos;ve renamed it to &apos;cloneWith&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807361</commentid>
    <comment_count>89</comment_count>
      <attachid>182702</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-15 09:10:32 -0800</bug_when>
    <thetext>Comment on attachment 182702
iter

removing review flag, since this is just an iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808156</commentid>
    <comment_count>90</comment_count>
      <attachid>182936</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-16 01:31:04 -0800</bug_when>
    <thetext>Created attachment 182936
Rebased on a factored patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808383</commentid>
    <comment_count>91</comment_count>
      <attachid>182936</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2013-01-16 08:17:26 -0800</bug_when>
    <thetext>Comment on attachment 182936
Rebased on a factored patch.

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        # FIXME: Update URL after the spec is updated.

Assuming this will be fixed when the spec is updated?

&gt; Source/WebCore/ChangeLog:35
&gt; +        pseudo element which takes parameter.  It&apos;s also the first CSS

parameter =&gt; a parameter

&gt; Source/WebCore/ChangeLog:37
&gt; +        tree of its shadow host. That means a &apos;::distributed()&apos; pseudo

What about @host? It also crosses the boundary.

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

Excellent change description. Very clear and easy to understand.

&gt; Source/WebCore/css/SelectorChecker.cpp:286
&gt; +        if (context.crossBoundary == CrossesBoundary) {

Both crossBoundary and CrossesBoundary sound like booleans; maybe the field should be behaviorAtBoundary, or even behaviorAtParentScopeBoundary to be really specific.

I guess this naming was set in an earlier patch. What was the review feedback? Would you consider revisiting the naming?

&gt; Source/WebCore/css/StyleResolver.h:226
&gt; +

Two blank lines?

&gt; Source/WebCore/html/shadow/InsertionPoint.h:164
&gt; +inline void collectAllInsertionPoints(const Node* projectedNode, Vector&lt;InsertionPoint*, 8&gt;&amp; results)

Thank you for working on renaming this.

Now I’m concerned that the meaning of this method is only clear when you see the parameter name projectedNode. If you just see a callsite:

collectAllInsertionPoints(element, &amp;result)

I would guess it means something like collect all of the insertion points that are children or descendants of this node.

What about collectInsertionPointsWhichProject(node, &amp;result)? Not great. Do you have any ideas?

Is there a precise difference in meaning between distributed (ie the child of a host) and projected (anything presented via an insertion point)?

&gt; LayoutTests/fast/dom/shadow/distributed-pseudo-element-expected.html:1
&gt; +&lt;!DOCTYPE html&gt;

Excellent use of reftests.

&gt; LayoutTests/fast/dom/shadow/distributed-pseudo-element-match-all.html:20
&gt; +                        createDOM(&apos;div&apos;, {&apos;class&apos;: &apos;hello&apos;},

So A::distributed(B) actually has a kind of implicit descendant selector, A::distributed(* B)?

&gt; LayoutTests/fast/dom/shadow/distributed-pseudo-element.html:1
&gt; +&lt;!DOCTYPE html&gt;

Could we have tests with chained and nested ::distributed? eg

A::distributed(B)::distributed(C) (what does it mean? What does it do?)

A::distributed(B::distributed(C))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809032</commentid>
    <comment_count>92</comment_count>
      <attachid>182936</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-16 20:42:53 -0800</bug_when>
    <thetext>Comment on attachment 182936
Rebased on a factored patch.

Thank you for the review. Let me upload new patch soon, which also updates the ChangeLog.

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

&gt;&gt; Source/WebCore/css/SelectorChecker.cpp:286
&gt;&gt; +        if (context.crossBoundary == CrossesBoundary) {
&gt; 
&gt; Both crossBoundary and CrossesBoundary sound like booleans; maybe the field should be behaviorAtBoundary, or even behaviorAtParentScopeBoundary to be really specific.
&gt; 
&gt; I guess this naming was set in an earlier patch. What was the review feedback? Would you consider revisiting the naming?

No review for this in an earlier patch.

&apos;behaviorAtBoundary&apos; sounds good. &apos;behaviorAtParentScopeBoundary&apos; sounds unnatural in this context for me.
I&apos;ve renamed the field to &apos;behaviorAtBoundary&apos; and enum itself to BehaviorAtBoundary.

&gt;&gt; Source/WebCore/css/StyleResolver.h:226
&gt;&gt; +
&gt; 
&gt; Two blank lines?

Done.

&gt;&gt; Source/WebCore/html/shadow/InsertionPoint.h:164
&gt;&gt; +inline void collectAllInsertionPoints(const Node* projectedNode, Vector&lt;InsertionPoint*, 8&gt;&amp; results)
&gt; 
&gt; Thank you for working on renaming this.
&gt; 
&gt; Now I’m concerned that the meaning of this method is only clear when you see the parameter name projectedNode. If you just see a callsite:
&gt; 
&gt; collectAllInsertionPoints(element, &amp;result)
&gt; 
&gt; I would guess it means something like collect all of the insertion points that are children or descendants of this node.
&gt; 
&gt; What about collectInsertionPointsWhichProject(node, &amp;result)? Not great. Do you have any ideas?
&gt; 
&gt; Is there a precise difference in meaning between distributed (ie the child of a host) and projected (anything presented via an insertion point)?

Okay. Let&apos;s rename it.

The spec says:
https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#reprojection
&gt; The effect of a node being distributed into more than one insertion point is called reprojection.

So I&apos;ve renamed it to the &apos;collectInsertionPointsWhereNodeIsDistributed(node, &amp;results)&apos;. We can say &apos;NodeIsDistributed&apos; into more than one insertion point in this context.

&gt;&gt; LayoutTests/fast/dom/shadow/distributed-pseudo-element-match-all.html:20
&gt;&gt; +                        createDOM(&apos;div&apos;, {&apos;class&apos;: &apos;hello&apos;},
&gt; 
&gt; So A::distributed(B) actually has a kind of implicit descendant selector, A::distributed(* B)?

Yes. That&apos;s an intentional behavior.
A distributed-pseudo-element-match-descendant.html tests that.

&gt;&gt; LayoutTests/fast/dom/shadow/distributed-pseudo-element.html:1
&gt;&gt; +&lt;!DOCTYPE html&gt;
&gt; 
&gt; Could we have tests with chained and nested ::distributed? eg
&gt; 
&gt; A::distributed(B)::distributed(C) (what does it mean? What does it do?)
&gt; 
&gt; A::distributed(B::distributed(C))

A nested case is already covered by a distributed-pseudo-element-nested.html.

A *chained* case, A::distributed(B)::distributed(C), is not allowed according to the selector spec.
http://dev.w3.org/csswg/selectors4/#pseudo-elements
&gt; A future version of this specification may allow multiple pseudo-elements per selector.

So I&apos;d like to leave the behavior in this case &apos;undefined&apos; for a while.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809040</commentid>
    <comment_count>93</comment_count>
      <attachid>183111</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-16 20:47:14 -0800</bug_when>
    <thetext>Created attachment 183111
Addressed. We need to update the URL in the ChangeLog once the spec is updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814297</commentid>
    <comment_count>94</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-23 10:04:11 -0800</bug_when>
    <thetext>*** Bug 107654 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829903</commentid>
    <comment_count>95</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-02-11 11:10:29 -0800</bug_when>
    <thetext>I wonder how much smaller this patch has gotten in light of all the recent refactorings?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830485</commentid>
    <comment_count>96</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-02-11 20:00:50 -0800</bug_when>
    <thetext>I don&apos;t expect this patch get any benefits from the recent refactorings.

I guess there isn&apos;t any meaningful difference between landing this patch before and after refactoring.

(In reply to comment #95)
&gt; I wonder how much smaller this patch has gotten in light of all the recent refactorings?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830488</commentid>
    <comment_count>97</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-02-11 20:09:25 -0800</bug_when>
    <thetext>(In reply to comment #96)
&gt; I don&apos;t expect this patch get any benefits from the recent refactorings.
&gt; 
&gt; I guess there isn&apos;t any meaningful difference between landing this patch before and after refactoring.

Ok. Can you rebase and let me look at it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830493</commentid>
    <comment_count>98</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-02-11 20:14:12 -0800</bug_when>
    <thetext>Sure. Let me rebase.

(In reply to comment #97)
&gt; (In reply to comment #96)
&gt; &gt; I don&apos;t expect this patch get any benefits from the recent refactorings.
&gt; &gt; 
&gt; &gt; I guess there isn&apos;t any meaningful difference between landing this patch before and after refactoring.
&gt; 
&gt; Ok. Can you rebase and let me look at it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830636</commentid>
    <comment_count>99</comment_count>
      <attachid>187789</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-02-12 00:13:58 -0800</bug_when>
    <thetext>Created attachment 187789
Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831102</commentid>
    <comment_count>100</comment_count>
      <attachid>187789</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-02-12 11:10:05 -0800</bug_when>
    <thetext>Comment on attachment 187789
Rebased.

The rebase didn&apos;t work? All EWSes are purple.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831680</commentid>
    <comment_count>101</comment_count>
      <attachid>188023</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-02-12 23:47:39 -0800</bug_when>
    <thetext>Created attachment 188023
Rabased again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831682</commentid>
    <comment_count>102</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-02-12 23:49:21 -0800</bug_when>
    <thetext>I rebased again. This rebase was not simple one since DocumentRuleSets had been introduced.
ShadowDistributedRules have moved from StyleResolver to DocumentRuleSets.

(In reply to comment #101)
&gt; Created an attachment (id=188023) [details]
&gt; Rabased again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832692</commentid>
    <comment_count>103</comment_count>
      <attachid>188023</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-02-13 20:14:39 -0800</bug_when>
    <thetext>Comment on attachment 188023
Rabased again.

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

I&apos;ve made peace with this patch.

&gt; Source/WebCore/ChangeLog:50
&gt; +        scope is &apos;D&apos;.  The scope is used to check whether the left-most

Wait... isn&apos;t the scope [A&apos;s ShadowRoot] here? This is not a scoped style.

&gt; Source/WebCore/ChangeLog:75
&gt; +        * css/CSSGrammar.y.in:

If you&apos;re not enumerating changes in each file, probably don&apos;t need this generated list.

&gt; Source/WebCore/css/SelectorChecker.cpp:288
&gt; +            return context.scope-&gt;contains(context.element) ? SelectorMatches : SelectorFailsLocally;

Linear ancestor search, ugh. We can get away with TreeScope comparisons, except for cases where the scope is created by &lt;style scoped&gt;. We should consider optimizing this somehow.

&gt; Source/WebCore/css/StyleResolver.cpp:597
&gt; +    m_ruleSets.shadowDistributedRules().collectMatchRequests(includeEmptyRules, matchRequests);
&gt; +    for (size_t i = 0; i &lt; matchRequests.size(); ++i)
&gt; +        collectMatchingRules(matchRequests[i], ruleRange);

This is about the only place in the patch where I wish we could do better. In my crazy imagination, the collector of rules is decoupled from StyleResolver and could be passed to various actors, but I understand this is probably not feasible.

&gt; Source/WebCore/css/StyleResolver.h:139
&gt; +class MatchRequest {

This didn&apos;t need to move up in the file anymore. Probably would make the diff look better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832708</commentid>
    <comment_count>104</comment_count>
      <attachid>188023</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-02-13 21:20:07 -0800</bug_when>
    <thetext>Comment on attachment 188023
Rabased again.

Thank you for the review. Let me land this patch after addressing the comments.
Since StyleResolver has still been hot recently, it might be good timing to land this.

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#selecting-nodes-distributed-to-insertion-points

Let me update the URL to the W3C&apos;s bug&apos;s one: https://www.w3.org/Bugs/Public/show_bug.cgi?id=19684

&gt;&gt; Source/WebCore/ChangeLog:50
&gt;&gt; +        scope is &apos;D&apos;.  The scope is used to check whether the left-most
&gt; 
&gt; Wait... isn&apos;t the scope [A&apos;s ShadowRoot] here? This is not a scoped style.

Right. The example is not a scoped style. Fixed.

&gt;&gt; Source/WebCore/ChangeLog:75
&gt;&gt; +        * css/CSSGrammar.y.in:
&gt; 
&gt; If you&apos;re not enumerating changes in each file, probably don&apos;t need this generated list.

Since this patch is becoming stable, let me enumerate changes in each file briefly.

&gt;&gt; Source/WebCore/css/SelectorChecker.cpp:288
&gt;&gt; +            return context.scope-&gt;contains(context.element) ? SelectorMatches : SelectorFailsLocally;
&gt; 
&gt; Linear ancestor search, ugh. We can get away with TreeScope comparisons, except for cases where the scope is created by &lt;style scoped&gt;. We should consider optimizing this somehow.

Good point. I am sure we can improve this.
Let me improve this in another bug since this code path is hit only when &apos;::distributed&apos; is used.

&gt;&gt; Source/WebCore/css/StyleResolver.cpp:597
&gt;&gt; +        collectMatchingRules(matchRequests[i], ruleRange);
&gt; 
&gt; This is about the only place in the patch where I wish we could do better. In my crazy imagination, the collector of rules is decoupled from StyleResolver and could be passed to various actors, but I understand this is probably not feasible.

Agreed. I felt the same thing.
We can do better if we factor StyleResolver further. Let me think further how we can factor StyleResolver.

&gt;&gt; Source/WebCore/css/StyleResolver.h:139
&gt;&gt; +class MatchRequest {
&gt; 
&gt; This didn&apos;t need to move up in the file anymore. Probably would make the diff look better.

Unfortunately, ShadowDistributedRules::collectMatchRequests() in DocumentRuleSets.h needs MatchRequest.
Therefore, MatchRequest needs to be in a top level class in WebCore namespace. I don&apos;t think this is an ideal situation, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832758</commentid>
    <comment_count>105</comment_count>
      <attachid>188267</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-02-13 23:24:10 -0800</bug_when>
    <thetext>Created attachment 188267
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832772</commentid>
    <comment_count>106</comment_count>
      <attachid>188267</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 23:53:24 -0800</bug_when>
    <thetext>Comment on attachment 188267
Patch for landing

Clearing flags on attachment: 188267

Committed r142855: &lt;http://trac.webkit.org/changeset/142855&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832773</commentid>
    <comment_count>107</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 23:53:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170083</attachid>
            <date>2012-10-23 01:44:00 -0700</date>
            <delta_ts>2012-11-02 07:14:14 -0700</delta_ts>
            <desc>WIP. update a parser.</desc>
            <filename>bug-82169-20121023174237.patch</filename>
            <type>text/plain</type>
            <size>8722</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjhmZmY2NzhkNjcyZGQ2
ZGViOGI0NDkyNWE3YzhmZmNlYzhlMDAwMi4uNjgwNjcyMzc4OTNkZjI2NjU2MzZmNmFjN2UzY2Rh
MGZkODJkZDQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTEwLTIzICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gTmVl
ZHMgL3NlbGVjdC8gcmVmZXJlbmNlIGNvbWJpbmF0b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjE2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNo
YW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9u
IGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogY3NzL0NTU0dyYW1tYXIueS5pbjoKKyAgICAgICAgKiBjc3MvQ1NT
UGFyc2VyVmFsdWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6c2V0
UmVmZXJlbmNlKToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU2VsZWN0b3I6OnNldFJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpSYXJlRGF0YTo6UmFyZURhdGEpOgorICAgICAg
ICAqIGNzcy9DU1NTZWxlY3Rvci5oOgorICAgICAgICAoQ1NTU2VsZWN0b3IpOgorICAgICAgICAo
UmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnJlZmVyZW5jZSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y29sbGVjdElkZW50aWZpZXJIYXNoZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKToKKyAg
ICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjpzdHlsZUZvckVsZW1lbnQpOgorCiAyMDEyLTEwLTIxICBTaGlueWEgS2F3YW5ha2Eg
IDxzaGlueWFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBTaGFkb3cg
RE9NOiBOb2RlIHJlbW92YWwgZG9lc24ndCByZWZsZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFy
LnkuaW4KaW5kZXggNGI4OTRmYjk1OTdkZWY1MmEyNGI5M2ZkNTRlZjc0MzI0MGE1Yzc2OC4uOWE2
Mjk2YmQ3MzhhNzg4ZGVlYTMxNDk4ODcxYjdkYTZmNjBmMDdlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
R3JhbW1hci55LmluCkBAIC0yNzgsNiArMjc4LDcgQEAgc3RhdGljIGlubGluZSBpbnQgY3NzeXll
cnJvcih2b2lkKiwgY29uc3QgY2hhciopCiAKICV0eXBlIDxzdHJpbmc+IGVsZW1lbnRfbmFtZQog
JXR5cGUgPHN0cmluZz4gYXR0cl9uYW1lCisldHlwZSA8c3RyaW5nPiByZWZlcmVuY2VfY29tYmlu
YXRvcgogCiAlJQogCkBAIC05MzUsNiArOTM2LDE1IEBAIGNvbWJpbmF0b3I6CiAgIHwgJz4nIG1h
eWJlX3NwYWNlIHsgJCQgPSBDU1NTZWxlY3Rvcjo6Q2hpbGQ7IH0KICAgOwogCityZWZlcmVuY2Vf
Y29tYmluYXRvcjoKKyAgJy8nIElERU5UICcvJyBtYXliZV9zcGFjZSB7CisgICAgICAgIENTU1Bh
cnNlclN0cmluZyYgc3RyID0gJDI7CisgICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5pc0hU
TUxEb2N1bWVudCkKKyAgICAgICAgICAgIHN0ci5sb3dlcigpOworICAgICAgICAkJCA9IHN0cjsK
KyAgfQorICA7CisKIG1heWJlX3VuYXJ5X29wZXJhdG9yOgogICAgIHVuYXJ5X29wZXJhdG9yIHsg
JCQgPSAkMTsgfQogICAgIHwgeyAkJCA9IDE7IH0KQEAgLTEwMzAsNiArMTA0MCwyMSBAQCBzZWxl
Y3RvcjoKICAgICAgICAgICAgIGVuZC0+c2V0VGFnSGlzdG9yeShwYXJzZXItPnNpbmtGbG9hdGlu
Z1NlbGVjdG9yKCQxKSk7CiAgICAgICAgIH0KICAgICB9CisgICAgfCBzZWxlY3RvciByZWZlcmVu
Y2VfY29tYmluYXRvciBzaW1wbGVfc2VsZWN0b3IgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
IlJlZmVyZW5jZSBDb21iaW5hdG9yIVxuIik7CisgICAgICAgICQkID0gJDM7CisgICAgICAgIGlm
ICghJDEpCisgICAgICAgICAgICAkJCA9IDA7CisgICAgICAgIGVsc2UgaWYgKCQkKSB7CisgICAg
ICAgICAgICBDU1NQYXJzZXJTZWxlY3RvciogZW5kID0gJCQ7CisgICAgICAgICAgICB3aGlsZSAo
ZW5kLT50YWdIaXN0b3J5KCkpCisgICAgICAgICAgICAgICAgZW5kID0gZW5kLT50YWdIaXN0b3J5
KCk7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlJlZmVyZW5jZSBDb21iaW5hdG9yIDIh
XG4iKTsKKyAgICAgICAgICAgIGVuZC0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6OlJlZmVyZW5j
ZSk7CisgICAgICAgICAgICBlbmQtPnNldFJlZmVyZW5jZShRdWFsaWZpZWROYW1lKG51bGxBdG9t
LCAkMiwgbnVsbEF0b20pKTsKKyAgICAgICAgICAgIGVuZC0+c2V0VGFnSGlzdG9yeShwYXJzZXIt
PnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQxKSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgfCBzZWxl
Y3RvciBlcnJvciB7CiAgICAgICAgICQkID0gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyVmFsdWVzLmgKaW5kZXggZDNmYzQwMzUzMDI5ZmYwYTI3ZDlhZTViOWQ0YzA2YTljN2U5MjI4
Mi4uYjQwYTFiM2RmYTA5OWM0ZWRkY2EyNWI3MjhlMmYyMjQzZmJlOWI0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaApAQCAtMTg3LDYgKzE4Nyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldE1hdGNoKENTU1NlbGVjdG9yOjpNYXRjaCB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5tX21h
dGNoID0gdmFsdWU7IH0KICAgICB2b2lkIHNldFJlbGF0aW9uKENTU1NlbGVjdG9yOjpSZWxhdGlv
biB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5tX3JlbGF0aW9uID0gdmFsdWU7IH0KICAgICB2b2lkIHNl
dEZvclBhZ2UoKSB7IG1fc2VsZWN0b3ItPnNldEZvclBhZ2UoKTsgfQorICAgIHZvaWQgc2V0UmVm
ZXJlbmNlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHZhbHVlKSB7IG1fc2VsZWN0b3ItPnNldFJlZmVy
ZW5jZSh2YWx1ZSk7IH0KIAogICAgIHZvaWQgYWRvcHRTZWxlY3RvclZlY3RvcihDU1NTZWxlY3Rv
clZlY3RvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCBkMmJhNzU2Nzc3
MjIzZWNiNWZmY2VlYjFmNjhhNTQxYzMyN2UyZjFmLi4xMzUxNjE3ZmVkMjM3NjExNjZjZDY1Mzdj
ZTgzMWQ2MjBhNzlmZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKQEAgLTY1MCw2
ICs2NTAsMTIgQEAgdm9pZCBDU1NTZWxlY3Rvcjo6c2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHZhbHVlKQogICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2F0dHJpYnV0ZSA9IHZhbHVl
OwogfQogCit2b2lkIENTU1NlbGVjdG9yOjpzZXRSZWZlcmVuY2UoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdmFsdWUpCit7CisgICAgY3JlYXRlUmFyZURhdGEoKTsKKyAgICBtX2RhdGEubV9yYXJlRGF0
YS0+bV9yZWZlcmVuY2UgPSB2YWx1ZTsKK30KKwogdm9pZCBDU1NTZWxlY3Rvcjo6c2V0QXJndW1l
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBjcmVhdGVSYXJlRGF0YSgpOwpA
QCAtNzA4LDYgKzcxNCw3IEBAIENTU1NlbGVjdG9yOjpSYXJlRGF0YTo6UmFyZURhdGEoUGFzc1Jl
ZlB0cjxBdG9taWNTdHJpbmdJbXBsPiB2YWx1ZSkKICAgICAsIG1fYSgwKQogICAgICwgbV9iKDAp
CiAgICAgLCBtX2F0dHJpYnV0ZShhbnlRTmFtZSgpKQorICAgICwgbV9yZWZlcmVuY2UoYW55UU5h
bWUoKSkKICAgICAsIG1fYXJndW1lbnQobnVsbEF0b20pCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxl
Y3Rvci5oCmluZGV4IDVjYTI0ZjRlMDMxZGY1M2IxMmUxMmNjMjUxYmQzOTQzOTRjODgyZGQuLmVl
NzUzNjZhMDRkNzE0YzYzZTM4Y2I2ODRmOTlkNTgzMGNkZjFkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvci5oCkBAIC03Niw3ICs3Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
ICAgIERpcmVjdEFkamFjZW50LAogICAgICAgICAgICAgSW5kaXJlY3RBZGphY2VudCwKICAgICAg
ICAgICAgIFN1YlNlbGVjdG9yLAotICAgICAgICAgICAgU2hhZG93RGVzY2VuZGFudAorICAgICAg
ICAgICAgU2hhZG93RGVzY2VuZGFudCwKKyAgICAgICAgICAgIFJlZmVyZW5jZQogICAgICAgICB9
OwogCiAgICAgICAgIGVudW0gUHNldWRvVHlwZSB7CkBAIC0xOTcsMTIgKzE5OCwxNCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEZJWE1FOiBQZXJoYXBzIGNhbGwgc2l0ZXMgY291
bGQgYmUgY2hhbmdlZCB0byBhY2NlcHQgQXRvbWljU3RyaW5nSW1wbD8KICAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNv
bnN0IEF0b21pY1N0cmluZyo+KG1faGFzUmFyZURhdGEgPyAmbV9kYXRhLm1fcmFyZURhdGEtPm1f
dmFsdWUgOiAmbV9kYXRhLm1fdmFsdWUpOyB9CiAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZSgpIGNvbnN0OworICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiByZWZlcmVu
Y2UoKSBjb25zdDsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmd1bWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1faGFzUmFyZURhdGEgPyBtX2RhdGEubV9yYXJlRGF0YS0+bV9hcmd1bWVudCA6
IG51bGxBdG9tOyB9CiAgICAgICAgIENTU1NlbGVjdG9yTGlzdCogc2VsZWN0b3JMaXN0KCkgY29u
c3QgeyByZXR1cm4gbV9oYXNSYXJlRGF0YSA/IG1fZGF0YS5tX3JhcmVEYXRhLT5tX3NlbGVjdG9y
TGlzdC5nZXQoKSA6IDA7IH0KIAogICAgICAgICB2b2lkIHNldFRhZyhjb25zdCBRdWFsaWZpZWRO
YW1lJiB2YWx1ZSkgeyBtX3RhZyA9IHZhbHVlOyB9CiAgICAgICAgIHZvaWQgc2V0VmFsdWUoY29u
c3QgQXRvbWljU3RyaW5nJik7CiAgICAgICAgIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKKyAgICAgICAgdm9pZCBzZXRSZWZlcmVuY2UoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgICAgICB2b2lkIHNldEFyZ3VtZW50KGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAg
ICAgICB2b2lkIHNldFNlbGVjdG9yTGlzdChQYXNzT3duUHRyPENTU1NlbGVjdG9yTGlzdD4pOwog
CkBAIC0yNTUsNiArMjU4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgaW50
IG1fYTsgLy8gVXNlZCBmb3IgOm50aC0qCiAgICAgICAgICAgICBpbnQgbV9iOyAvLyBVc2VkIGZv
ciA6bnRoLSoKICAgICAgICAgICAgIFF1YWxpZmllZE5hbWUgbV9hdHRyaWJ1dGU7IC8vIHVzZWQg
Zm9yIGF0dHJpYnV0ZSBzZWxlY3RvcgorICAgICAgICAgICAgUXVhbGlmaWVkTmFtZSBtX3JlZmVy
ZW5jZTsgLy8gdXNlZCBmb3IgcmVmZXJlbmNlIGNvbWJpbmF0b3IKICAgICAgICAgICAgIEF0b21p
Y1N0cmluZyBtX2FyZ3VtZW50OyAvLyBVc2VkIGZvciA6Y29udGFpbnMsIDpsYW5nIGFuZCA6bnRo
LSoKICAgICAgICAgICAgIE93blB0cjxDU1NTZWxlY3Rvckxpc3Q+IG1fc2VsZWN0b3JMaXN0OyAv
LyBVc2VkIGZvciA6LXdlYmtpdC1hbnkgYW5kIDpub3QKICAgICAgICAgCkBAIC0yNzksNiArMjgz
LDEzIEBAIGlubGluZSBjb25zdCBRdWFsaWZpZWROYW1lJiBDU1NTZWxlY3Rvcjo6YXR0cmlidXRl
KCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhLm1fcmFyZURhdGEtPm1fYXR0cmlidXRlOwogfQog
CitpbmxpbmUgY29uc3QgUXVhbGlmaWVkTmFtZSYgQ1NTU2VsZWN0b3I6OnJlZmVyZW5jZSgpIGNv
bnN0Cit7CisgICAgQVNTRVJUKGlzQXR0cmlidXRlU2VsZWN0b3IoKSk7CisgICAgQVNTRVJUKG1f
aGFzUmFyZURhdGEpOworICAgIHJldHVybiBtX2RhdGEubV9yYXJlRGF0YS0+bV9yZWZlcmVuY2U7
Cit9CisKIGlubGluZSBib29sIENTU1NlbGVjdG9yOjptYXRjaGVzUHNldWRvRWxlbWVudCgpIGNv
bnN0CiB7CiAgICAgaWYgKG1fcHNldWRvVHlwZSA9PSBQc2V1ZG9Vbmtub3duKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCBlYjViOWYzODdiZTlhYmU1Y2VmMjM0MjY1
MWQwNDIwZTAwZDdiZTMzLi4xZjE2NzEyOWViMGEwMjdlZDdlOTlkYWY2OTYxZDA2Yzc2OTE1MGQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtMTk0LDYgKzE5NCw3
IEBAIHZvaWQgU2VsZWN0b3JDaGVja2VyOjpjb2xsZWN0SWRlbnRpZmllckhhc2hlcyhjb25zdCBD
U1NTZWxlY3Rvciogc2VsZWN0b3IsIHVuc2lnCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudDoKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
Q2hpbGQ6CisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlJlZmVyZW5jZToKICAgICAgICAgICAg
IHNraXBPdmVyU3Vic2VsZWN0b3JzID0gZmFsc2U7CiAgICAgICAgICAgICBjb2xsZWN0RGVzY2Vu
ZGFudFNlbGVjdG9ySWRlbnRpZmllckhhc2hlcyhzZWxlY3RvciwgaGFzaCwgZW5kKTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtNTc1LDYgKzU3NiwxMSBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVj
dG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hl
YwogICAgICAgICAgICAgbmV4dENvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlID0gMDsKICAgICAg
ICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKG5leHRDb250ZXh0LCBpZ25vcmVEeW5hbWljUHNl
dWRvLCBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpOwogICAgICAgICB9CisKKyAgICBjYXNlIENT
U1NlbGVjdG9yOjpSZWZlcmVuY2U6CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBo
YXlhdG8KKyAgICAgICAgfQogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDkzMThiN2ExNjVmZGYwYzA2MWVhNTk3
NTBhZjgxN2YxZTc4ZDQwMWUuLjcwYTRiYzBkYjgyMzcwYmUyZTNlMjFhNjdlZWI4NGNlMmNjMWYy
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE0OTcsNiArMTQ5Nyw5
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0F0U2hhZG93Qm91bmRhcnkoY29uc3QgRWxlbWVudCog
ZWxlbWVudCkKIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9y
RWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBSZW5kZXJTdHlsZSogZGVmYXVsdFBhcmVudCwKICAg
ICBTdHlsZVNoYXJpbmdCZWhhdmlvciBzaGFyaW5nQmVoYXZpb3IsIFJ1bGVNYXRjaGluZ0JlaGF2
aW9yIG1hdGNoaW5nQmVoYXZpb3IsIFJlbmRlclJlZ2lvbiogcmVnaW9uRm9yU3R5bGluZykKIHsK
KyAgICBmcHJpbnRmKHN0ZGVyciwgIj4+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudDoi
KTsKKyAgICBpZiAoZWxlbWVudCkKKyAgICAgICAgZWxlbWVudC0+c2hvd05vZGVQYXRoRm9yVGhp
cygpOwogICAgIC8vIE9uY2UgYW4gZWxlbWVudCBoYXMgYSByZW5kZXJlciwgd2UgZG9uJ3QgdHJ5
IHRvIGRlc3Ryb3kgaXQsIHNpbmNlIG90aGVyd2lzZSB0aGUgcmVuZGVyZXIKICAgICAvLyB3aWxs
IHZhbmlzaCBpZiBhIHN0eWxlIHJlY2FsYyBoYXBwZW5zIGR1cmluZyBsb2FkaW5nLgogICAgIGlm
IChzaGFyaW5nQmVoYXZpb3IgPT0gQWxsb3dTdHlsZVNoYXJpbmcgJiYgIWVsZW1lbnQtPmRvY3Vt
ZW50KCktPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpICYmICFlbGVtZW50LT5yZW5kZXJlcigpKSB7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172054</attachid>
            <date>2012-11-02 07:14:17 -0700</date>
            <delta_ts>2012-11-07 16:30:56 -0800</delta_ts>
            <desc>WIP. A lot of debug code.</desc>
            <filename>bug-82169-20121102231237.patch</filename>
            <type>text/plain</type>
            <size>43738</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWJlYmQzNjdjODNkNTI3
ZTZkNGIzNzUxNjhmNzE5MmRjOGM1Njk0Yi4uNWQxZmQyZWI3OGE0MWQ1OGUyODVkZjY5ZjU4NDM1
M2IyZGJjYzUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTEwLTIzICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gTmVl
ZHMgL3NlbGVjdC8gcmVmZXJlbmNlIGNvbWJpbmF0b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjE2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNo
YW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9u
IGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogY3NzL0NTU0dyYW1tYXIueS5pbjoKKyAgICAgICAgKiBjc3MvQ1NT
UGFyc2VyVmFsdWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6c2V0
UmVmZXJlbmNlKToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU2VsZWN0b3I6OnNldFJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpSYXJlRGF0YTo6UmFyZURhdGEpOgorICAgICAg
ICAqIGNzcy9DU1NTZWxlY3Rvci5oOgorICAgICAgICAoQ1NTU2VsZWN0b3IpOgorICAgICAgICAo
UmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnJlZmVyZW5jZSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y29sbGVjdElkZW50aWZpZXJIYXNoZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKToKKyAg
ICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjpzdHlsZUZvckVsZW1lbnQpOgorCiAyMDEyLTEwLTMxICBTdGVwaGVuIFdoaXRlICA8
c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxMzMxMDcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55
LmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgppbmRleCAyMjk1N2M2ODk2
ZWFlZmE5ZjEzYzFiNWI0ZjU5ZTkxNmRiYWNjMDRmLi5mMjcyMzMzNGVkNzM5NWNiZGMyYjNlZDlk
ZmI0ZTQ1MDEzNWI4ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1h
ci55LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KQEAgLTI4OSw2
ICsyODksNyBAQCBzdGF0aWMgaW5saW5lIGludCBjc3N5eWVycm9yKHZvaWQqLCBjb25zdCBjaGFy
KikKIAogJXR5cGUgPHN0cmluZz4gZWxlbWVudF9uYW1lCiAldHlwZSA8c3RyaW5nPiBhdHRyX25h
bWUKKyV0eXBlIDxzdHJpbmc+IHJlZmVyZW5jZV9jb21iaW5hdG9yCiAKICUlCiAKQEAgLTEwMDEs
NiArMTAwMiwxNSBAQCBjb21iaW5hdG9yOgogICB8ICc+JyBtYXliZV9zcGFjZSB7ICQkID0gQ1NT
U2VsZWN0b3I6OkNoaWxkOyB9CiAgIDsKIAorcmVmZXJlbmNlX2NvbWJpbmF0b3I6CisgICcvJyBJ
REVOVCAnLycgbWF5YmVfc3BhY2UgeworICAgICAgICBDU1NQYXJzZXJTdHJpbmcmIHN0ciA9ICQy
OworICAgICAgICBpZiAocGFyc2VyLT5tX2NvbnRleHQuaXNIVE1MRG9jdW1lbnQpCisgICAgICAg
ICAgICBzdHIubG93ZXIoKTsKKyAgICAgICAgJCQgPSBzdHI7CisgIH0KKyAgOworCiBtYXliZV91
bmFyeV9vcGVyYXRvcjoKICAgICB1bmFyeV9vcGVyYXRvciB7ICQkID0gJDE7IH0KICAgICB8IHsg
JCQgPSAxOyB9CkBAIC0xMDk2LDYgKzExMDYsMjEgQEAgc2VsZWN0b3I6CiAgICAgICAgICAgICBl
bmQtPnNldFRhZ0hpc3RvcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOwogICAg
ICAgICB9CiAgICAgfQorICAgIHwgc2VsZWN0b3IgcmVmZXJlbmNlX2NvbWJpbmF0b3Igc2ltcGxl
X3NlbGVjdG9yIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJSZWZlcmVuY2UgQ29tYmluYXRv
ciFcbiIpOworICAgICAgICAkJCA9ICQzOworICAgICAgICBpZiAoISQxKQorICAgICAgICAgICAg
JCQgPSAwOworICAgICAgICBlbHNlIGlmICgkJCkgeworICAgICAgICAgICAgQ1NTUGFyc2VyU2Vs
ZWN0b3IqIGVuZCA9ICQkOworICAgICAgICAgICAgd2hpbGUgKGVuZC0+dGFnSGlzdG9yeSgpKQor
ICAgICAgICAgICAgICAgIGVuZCA9IGVuZC0+dGFnSGlzdG9yeSgpOworICAgICAgICAgICAgZnBy
aW50ZihzdGRlcnIsICJSZWZlcmVuY2UgQ29tYmluYXRvciAyIVxuIik7CisgICAgICAgICAgICBl
bmQtPnNldFJlbGF0aW9uKENTU1NlbGVjdG9yOjpSZWZlcmVuY2UpOworICAgICAgICAgICAgZW5k
LT5zZXRSZWZlcmVuY2UoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDIsIG51bGxBdG9tKSk7Cisg
ICAgICAgICAgICBlbmQtPnNldFRhZ0hpc3RvcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3Rv
cigkMSkpOworICAgICAgICB9CisgICAgfQogICAgIHwgc2VsZWN0b3IgZXJyb3IgewogICAgICAg
ICAkJCA9IDA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
clZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCmluZGV4IGQz
ZmM0MDM1MzAyOWZmMGEyN2Q5YWU1YjlkNGMwNmE5YzdlOTIyODIuLmI0MGExYjNkZmEwOTljNGVk
ZGNhMjViNzI4ZTJmMjI0M2ZiZTliNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXJWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVz
LmgKQEAgLTE4Nyw2ICsxODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNYXRjaChDU1NTZWxl
Y3Rvcjo6TWF0Y2ggdmFsdWUpIHsgbV9zZWxlY3Rvci0+bV9tYXRjaCA9IHZhbHVlOyB9CiAgICAg
dm9pZCBzZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6UmVsYXRpb24gdmFsdWUpIHsgbV9zZWxlY3Rv
ci0+bV9yZWxhdGlvbiA9IHZhbHVlOyB9CiAgICAgdm9pZCBzZXRGb3JQYWdlKCkgeyBtX3NlbGVj
dG9yLT5zZXRGb3JQYWdlKCk7IH0KKyAgICB2b2lkIHNldFJlZmVyZW5jZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5zZXRSZWZlcmVuY2UodmFsdWUpOyB9CiAKICAg
ICB2b2lkIGFkb3B0U2VsZWN0b3JWZWN0b3IoQ1NTU2VsZWN0b3JWZWN0b3ImKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXggZDJiYTc1Njc3NzIyM2VjYjVmZmNlZWIxZjY4YTU0
MWMzMjdlMmYxZi4uMDYwZjg1YWVlM2YzNzkxYzc5NjkxZDBiYjg1YTRmZjQ3NmY0YmE5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCkBAIC02MjcsMTcgKzYyNywyMSBAQCBTdHJpbmcg
Q1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCgpIGNvbnN0CiAKICAgICBpZiAoQ1NTU2VsZWN0b3Iq
IHRhZ0hpc3RvcnkgPSBjcy0+dGFnSGlzdG9yeSgpKSB7CiAgICAgICAgIFN0cmluZyB0YWdIaXN0
b3J5VGV4dCA9IHRhZ0hpc3RvcnktPnNlbGVjdG9yVGV4dCgpOwotICAgICAgICBpZiAoY3MtPnJl
bGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50KQorICAgICAgICBzd2l0Y2gg
KGNzLT5yZWxhdGlvbigpKSB7CisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQ6
CisgICAgICAgICAgICByZXR1cm4gdGFnSGlzdG9yeVRleHQgKyAiICIgKyBzdHIudG9TdHJpbmco
KTsKKyAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6Q2hpbGQ6CisgICAgICAgICAgICByZXR1cm4g
dGFnSGlzdG9yeVRleHQgKyAiID4gIiArIHN0ci50b1N0cmluZygpOworICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpEaXJlY3RBZGphY2VudDoKICAgICAgICAgICAgIHJldHVybiB0YWdIaXN0b3J5
VGV4dCArICIgKyAiICsgc3RyLnRvU3RyaW5nKCk7Ci0gICAgICAgIGVsc2UgaWYgKGNzLT5yZWxh
dGlvbigpID09IENTU1NlbGVjdG9yOjpJbmRpcmVjdEFkamFjZW50KQorICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpJbmRpcmVjdEFkamFjZW50OgogICAgICAgICAgICAgcmV0dXJuIHRhZ0hpc3Rv
cnlUZXh0ICsgIiB+ICIgKyBzdHIudG9TdHJpbmcoKTsKLSAgICAgICAgZWxzZSBpZiAoY3MtPnJl
bGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OkNoaWxkKQotICAgICAgICAgICAgcmV0dXJuIHRhZ0hp
c3RvcnlUZXh0ICsgIiA+ICIgKyBzdHIudG9TdHJpbmcoKTsKLSAgICAgICAgZWxzZSBpZiAoY3Mt
PnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OlNoYWRvd0Rlc2NlbmRhbnQpCisgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yOgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rlc2NlbmRhbnQ6CiAgICAg
ICAgICAgICByZXR1cm4gdGFnSGlzdG9yeVRleHQgKyBzdHIudG9TdHJpbmcoKTsKLSAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAvLyBEZXNjZW5kYW50Ci0gICAgICAgICAgICByZXR1cm4gdGFn
SGlzdG9yeVRleHQgKyAiICIgKyBzdHIudG9TdHJpbmcoKTsKKyAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UmVmZXJlbmNlOgorICAgICAgICAgICAgcmV0dXJuIHRhZ0hpc3RvcnlUZXh0ICsgIiAv
IiArIGNzLT5yZWZlcmVuY2UoKS50b1N0cmluZygpICsgIi8gIiArICBzdHIudG9TdHJpbmcoKTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtNjUwLDYgKzY1NCwxMiBAQCB2b2lkIENTU1NlbGVjdG9y
OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdmFsdWUpCiAgICAgbV9kYXRhLm1f
cmFyZURhdGEtPm1fYXR0cmlidXRlID0gdmFsdWU7CiB9CiAKK3ZvaWQgQ1NTU2VsZWN0b3I6OnNl
dFJlZmVyZW5jZShjb25zdCBRdWFsaWZpZWROYW1lJiB2YWx1ZSkKK3sKKyAgICBjcmVhdGVSYXJl
RGF0YSgpOworICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX3JlZmVyZW5jZSA9IHZhbHVlOworfQor
CiB2b2lkIENTU1NlbGVjdG9yOjpzZXRBcmd1bWVudChjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
KQogewogICAgIGNyZWF0ZVJhcmVEYXRhKCk7CkBAIC03MDMsMTEgKzcxMywxNyBAQCBib29sIENT
U1NlbGVjdG9yOjppc1NpbXBsZSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bUNvbmRpdGlvbnMgPD0g
MTsKIH0KIAordm9pZCBDU1NTZWxlY3Rvcjo6ZHVtcCgpIGNvbnN0Cit7CisgICAgZnByaW50Zihz
dGRlcnIsICJzZWxlY3RvcjogJXMgXG4iLCBzZWxlY3RvclRleHQoKS51dGY4KCkuZGF0YSgpKTsK
K30KKwogQ1NTU2VsZWN0b3I6OlJhcmVEYXRhOjpSYXJlRGF0YShQYXNzUmVmUHRyPEF0b21pY1N0
cmluZ0ltcGw+IHZhbHVlKQogICAgIDogbV92YWx1ZSh2YWx1ZS5sZWFrUmVmKCkpCiAgICAgLCBt
X2EoMCkKICAgICAsIG1fYigwKQogICAgICwgbV9hdHRyaWJ1dGUoYW55UU5hbWUoKSkKKyAgICAs
IG1fcmVmZXJlbmNlKGFueVFOYW1lKCkpCiAgICAgLCBtX2FyZ3VtZW50KG51bGxBdG9tKQogewog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCA1Y2EyNGY0ZTAzMWRmNTNiMTJlMTJjYzI1
MWJkMzk0Mzk0Yzg4MmRkLi45N2QwOTlkNzA4NDUzNzNhMzRiY2I2OGQ2MDZiMmE1MjEzNWIxMTEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApAQCAtNzYsNyArNzYsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgICAgICBEaXJlY3RBZGphY2VudCwKICAgICAgICAgICAgIEluZGly
ZWN0QWRqYWNlbnQsCiAgICAgICAgICAgICBTdWJTZWxlY3RvciwKLSAgICAgICAgICAgIFNoYWRv
d0Rlc2NlbmRhbnQKKyAgICAgICAgICAgIFNoYWRvd0Rlc2NlbmRhbnQsCisgICAgICAgICAgICBS
ZWZlcmVuY2UKICAgICAgICAgfTsKIAogICAgICAgICBlbnVtIFBzZXVkb1R5cGUgewpAQCAtMTk3
LDEyICsxOTgsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBGSVhNRTogUGVy
aGFwcyBjYWxsIHNpdGVzIGNvdWxkIGJlIGNoYW5nZWQgdG8gYWNjZXB0IEF0b21pY1N0cmluZ0lt
cGw/CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiAq
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBBdG9taWNTdHJpbmcqPihtX2hhc1JhcmVEYXRhID8gJm1f
ZGF0YS5tX3JhcmVEYXRhLT5tX3ZhbHVlIDogJm1fZGF0YS5tX3ZhbHVlKTsgfQogICAgICAgICBj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUoKSBjb25zdDsKKyAgICAgICAgY29uc3QgUXVh
bGlmaWVkTmFtZSYgcmVmZXJlbmNlKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXJndW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2hhc1JhcmVEYXRhID8gbV9kYXRhLm1fcmFy
ZURhdGEtPm1fYXJndW1lbnQgOiBudWxsQXRvbTsgfQogICAgICAgICBDU1NTZWxlY3Rvckxpc3Qq
IHNlbGVjdG9yTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmFyZURhdGEgPyBtX2RhdGEubV9y
YXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QuZ2V0KCkgOiAwOyB9CiAKICAgICAgICAgdm9pZCBzZXRU
YWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgdmFsdWUpIHsgbV90YWcgPSB2YWx1ZTsgfQogICAgICAg
ICB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgICAgICB2b2lkIHNldEF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgICAgIHZvaWQgc2V0UmVmZXJlbmNl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICAgICAgdm9pZCBzZXRBcmd1bWVudChjb25zdCBB
dG9taWNTdHJpbmcmKTsKICAgICAgICAgdm9pZCBzZXRTZWxlY3Rvckxpc3QoUGFzc093blB0cjxD
U1NTZWxlY3Rvckxpc3Q+KTsKIApAQCAtMjEzLDYgKzIxNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgYm9vbCBpc1Vua25vd25Qc2V1ZG9FbGVtZW50KCkgY29uc3Q7CiAgICAgICAg
IGJvb2wgaXNTaWJsaW5nU2VsZWN0b3IoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc0F0dHJpYnV0
ZVNlbGVjdG9yKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNSZWZlcmVuY2VDb21iaW5hdG9yKCkg
Y29uc3Q7CiAKICAgICAgICAgUmVsYXRpb24gcmVsYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxSZWxhdGlvbj4obV9yZWxhdGlvbik7IH0KIApAQCAtMjMwLDYgKzIzNCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX21hdGNoICAgICAg
OiA0OyAvLyBlbnVtIE1hdGNoCiAgICAgICAgIG11dGFibGUgdW5zaWduZWQgbV9wc2V1ZG9UeXBl
IDogODsgLy8gUHNldWRvVHlwZQogCisgICAgICAgIHZvaWQgZHVtcCgpIGNvbnN0OworCiAgICAg
cHJpdmF0ZToKICAgICAgICAgYm9vbCBtX3BhcnNlZE50aCAgICAgICAgICAgICAgOiAxOyAvLyBV
c2VkIGZvciA6bnRoLSoKICAgICAgICAgYm9vbCBtX2lzTGFzdEluU2VsZWN0b3JMaXN0ICAgOiAx
OwpAQCAtMjU1LDYgKzI2MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIGlu
dCBtX2E7IC8vIFVzZWQgZm9yIDpudGgtKgogICAgICAgICAgICAgaW50IG1fYjsgLy8gVXNlZCBm
b3IgOm50aC0qCiAgICAgICAgICAgICBRdWFsaWZpZWROYW1lIG1fYXR0cmlidXRlOyAvLyB1c2Vk
IGZvciBhdHRyaWJ1dGUgc2VsZWN0b3IKKyAgICAgICAgICAgIFF1YWxpZmllZE5hbWUgbV9yZWZl
cmVuY2U7IC8vIHVzZWQgZm9yIHJlZmVyZW5jZSBjb21iaW5hdG9yCiAgICAgICAgICAgICBBdG9t
aWNTdHJpbmcgbV9hcmd1bWVudDsgLy8gVXNlZCBmb3IgOmNvbnRhaW5zLCA6bGFuZyBhbmQgOm50
aC0qCiAgICAgICAgICAgICBPd25QdHI8Q1NTU2VsZWN0b3JMaXN0PiBtX3NlbGVjdG9yTGlzdDsg
Ly8gVXNlZCBmb3IgOi13ZWJraXQtYW55IGFuZCA6bm90CiAgICAgICAgIApAQCAtMjc5LDYgKzI4
NiwxMyBAQCBpbmxpbmUgY29uc3QgUXVhbGlmaWVkTmFtZSYgQ1NTU2VsZWN0b3I6OmF0dHJpYnV0
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2F0dHJpYnV0ZTsKIH0K
IAoraW5saW5lIGNvbnN0IFF1YWxpZmllZE5hbWUmIENTU1NlbGVjdG9yOjpyZWZlcmVuY2UoKSBj
b25zdAoreworICAgIEFTU0VSVChpc1JlZmVyZW5jZUNvbWJpbmF0b3IoKSk7CisgICAgQVNTRVJU
KG1faGFzUmFyZURhdGEpOworICAgIHJldHVybiBtX2RhdGEubV9yYXJlRGF0YS0+bV9yZWZlcmVu
Y2U7Cit9CisKIGlubGluZSBib29sIENTU1NlbGVjdG9yOjptYXRjaGVzUHNldWRvRWxlbWVudCgp
IGNvbnN0CiB7CiAgICAgaWYgKG1fcHNldWRvVHlwZSA9PSBQc2V1ZG9Vbmtub3duKQpAQCAtMzIw
LDYgKzMzNCwxMSBAQCBpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6aXNBdHRyaWJ1dGVTZWxlY3Rv
cigpIGNvbnN0CiAgICAgICAgIHx8IG1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OkVuZDsKIH0KIAor
aW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6OmlzUmVmZXJlbmNlQ29tYmluYXRvcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6OlJlZmVyZW5jZTsKK30KKwog
aW5saW5lIHZvaWQgQ1NTU2VsZWN0b3I6OnNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUpCiB7CiAgICAgLy8gTmVlZCB0byBkbyByZWYgY291bnRpbmcgbWFudWFsbHkgZm9yIHRoZSB1
bmlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaAppbmRleCBkMmNlMTEzNGM2M2Y5
ZjY3NjFkN2JjZTZiMzBiN2QxOTY2ZmRiOGJkLi42YjIwOTNmM2RlNDRkMzAxYTIyNTI3YTQ4MDhj
OWZkOGQ0NWIyYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JM
aXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCkBAIC02Myw2
ICs2MywxMCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgc2VsZWN0b3JzVGV4dCgpIGNvbnN0Owog
CisgICAgdm9pZCBkdW1wKCkgY29uc3QgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNTU1Nl
bGVjdG9yTGlzdDogJXNcbiIsIHNlbGVjdG9yc1RleHQoKS51dGY4KCkuZGF0YSgpKTsKKyAgICB9
CisKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsK
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAppbmRleCBmNzVmNGY0MjViZGZmMTAxY2Y3
Njk0MWQ2YTJjYzU5ZWUxMjFmMmMxLi42YTAyZWExMTllZGNmMWFmZTkyY2JiM2UwYTJhY2ZkZWY2
MjY1NmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCkBAIC0xNzgsNiArMTc4LDM3IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBjb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3IoUnVsZUZlYXR1cmVTZXQm
IGZlYXR1cmVzLCBjb25zdCBDCiAgICAgfQogfQogCit2b2lkIFJ1bGVTZXQ6OmR1bXBSdWxlRGF0
YVZlY3Rvcihjb25zdCBWZWN0b3I8UnVsZURhdGE+JiBydWxlcykgY29uc3QKK3sKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHJ1bGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiICAgICAgIik7CisgICAgICAgIHJ1bGVzW2ldLnJ1bGUoKS0+ZHVtcCgpOworICAg
IH0KK30KKwordm9pZCBSdWxlU2V0OjpkdW1wUnVsZU1hcChjb25zdCBBdG9tUnVsZU1hcCYgcnVs
ZU1hcCkgY29uc3QKK3sKKyAgICBmb3IgKEF0b21SdWxlTWFwOjpjb25zdF9pdGVyYXRvciBpdGVy
ID0gcnVsZU1hcC5iZWdpbigpOyBpdGVyICE9IHJ1bGVNYXAuZW5kKCk7ICsraXRlcikgeworICAg
ICAgICBBdG9taWNTdHJpbmcgayhpdGVyLT5rZXkpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
IiAgICA+PiBrZXk6OiVzXG4iLCBrLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBk
dW1wUnVsZURhdGFWZWN0b3IoKml0ZXItPnZhbHVlLmdldCgpKTsKKyAgICB9Cit9CisKK3ZvaWQg
UnVsZVNldDo6ZHVtcCgpIGNvbnN0Cit7CisgICAgZnByaW50ZihzdGRlcnIsICI+PiBSdWxlU2V0
OjpkdW1wXG4iKTsKKworICAgIGZwcmludGYoc3RkZXJyLCAiICA+PiBpZFJ1bGVzOlxuIik7Cisg
ICAgZHVtcFJ1bGVNYXAobV9pZFJ1bGVzKTsKKworICAgIGZwcmludGYoc3RkZXJyLCAiICA+PiBj
bGFzc1J1bGVzOlxuIik7CisgICAgZHVtcFJ1bGVNYXAobV9jbGFzc1J1bGVzKTsKKworICAgIGZw
cmludGYoc3RkZXJyLCAiICA+PiB0YWdSdWxlczpcbiIpOworICAgIGR1bXBSdWxlTWFwKG1fdGFn
UnVsZXMpOworfQorCiBzdGF0aWMgdm9pZCBjb2xsZWN0RmVhdHVyZXNGcm9tUnVsZURhdGEoUnVs
ZUZlYXR1cmVTZXQmIGZlYXR1cmVzLCBjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEpCiB7CiAgICAg
Ym9vbCBmb3VuZFNpYmxpbmdTZWxlY3RvciA9IGZhbHNlOwpAQCAtMjExLDYgKzI0Miw3IEBAIHZv
aWQgUnVsZVNldDo6YWRkVG9SdWxlU2V0KEF0b21pY1N0cmluZ0ltcGwqIGtleSwgQXRvbVJ1bGVN
YXAmIG1hcCwgY29uc3QgUnVsZURhCiAKIHZvaWQgUnVsZVNldDo6YWRkUnVsZShTdHlsZVJ1bGUq
IHJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIEFkZFJ1bGVGbGFncyBhZGRSdWxlRmxhZ3Mp
CiB7CisgICAgLy8gRklYTUU6IGhheWF0bzogSWYgd2UgZm91bmQgL3NlbGVjdC8gcnVsZSwgd2Ug
c2hvdWxkIGFkZCB0aGUgcnVsZSB0byB0aGUgc2hhZG93IGhvc3QncyBSdWxlU2V0KCkuCiAgICAg
UnVsZURhdGEgcnVsZURhdGEocnVsZSwgc2VsZWN0b3JJbmRleCwgbV9ydWxlQ291bnQrKywgYWRk
UnVsZUZsYWdzKTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgYXRob3N0UnVsZVNwZWNpZmlj
aXR5ID0gMHgxMDAwMDA7CiAKQEAgLTI3Nyw2ICszMDksNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFJl
Z2lvblJ1bGUoU3R5bGVSdWxlUmVnaW9uKiByZWdpb25SdWxlLCBib29sIGhhc0RvY3VtZW50U2Vj
dXJpdAogICAgICAgICBTdHlsZVJ1bGVCYXNlKiByZWdpb25TdHlsaW5nUnVsZSA9IGNoaWxkUnVs
ZXNbaV0uZ2V0KCk7CiAgICAgICAgIGlmIChyZWdpb25TdHlsaW5nUnVsZS0+aXNTdHlsZVJ1bGUo
KSkKICAgICAgICAgICAgIHJlZ2lvblJ1bGVTZXQtPmFkZFN0eWxlUnVsZShzdGF0aWNfY2FzdDxT
dHlsZVJ1bGUqPihyZWdpb25TdHlsaW5nUnVsZSksIGFkZFJ1bGVGbGFncyk7CisgICAgICAgIC8v
IHJlZ2lvblJ1bGVTZXQtPmFkZFN0eWxlUnVsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihyZWdp
b25TdHlsaW5nUnVsZSksIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIHRydWUsIHRydWUsIDAs
IDApOwogICAgIH0KICAgICAvLyBVcGRhdGUgdGhlICJnbG9iYWwiIHJ1bGUgY291bnQgc28gdGhh
dCBwcm9wZXIgb3JkZXIgaXMgbWFpbnRhaW5lZAogICAgIG1fcnVsZUNvdW50ID0gcmVnaW9uUnVs
ZVNldC0+bV9ydWxlQ291bnQ7CkBAIC0yODQsNiArMzE3LDIwIEBAIHZvaWQgUnVsZVNldDo6YWRk
UmVnaW9uUnVsZShTdHlsZVJ1bGVSZWdpb24qIHJlZ2lvblJ1bGUsIGJvb2wgaGFzRG9jdW1lbnRT
ZWN1cml0CiAgICAgbV9yZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cy5hcHBlbmQoUnVsZVNldFNl
bGVjdG9yUGFpcihyZWdpb25SdWxlLT5zZWxlY3Rvckxpc3QoKS5maXJzdCgpLCByZWdpb25SdWxl
U2V0LnJlbGVhc2UoKSkpOwogfQogCitzdGF0aWMgYm9vbCBpbmNsdWRlc1NlbGVjdFJlZmVyZW5j
ZUNvbWJpbmF0b3IoY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QpCit7CisgICAg
ZnByaW50ZihzdGRlcnIsICJpbmNsdWRlc1NoYWRvd1NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3Ig
Pj5cbiIpOworICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JM
aXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IHNlbGVjdG9yLT50YWdIaXN0b3J5KCkp
IHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIgPj4gc2VsZWN0b3I6ICVwIFxuIiwgc2VsZWN0
b3IpOworICAgICAgICBpZiAoc2VsZWN0b3ItPmlzUmVmZXJlbmNlQ29tYmluYXRvcigpKSB7Cisg
ICAgICAgICAgICBpZiAoc2VsZWN0b3ItPnJlZmVyZW5jZSgpID09ICJzZWxlY3QiKSB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0
KFN0eWxlU2hlZXRDb250ZW50cyogc2hlZXQsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1l
ZGl1bSwgU3R5bGVSZXNvbHZlciogcmVzb2x2ZXIsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3Bl
KQogewogICAgIEFTU0VSVChzaGVldCk7CkBAIC0zMDIsOCArMzQ5LDE1IEBAIHZvaWQgUnVsZVNl
dDo6YWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVldENvbnRlbnRzKiBzaGVldCwgY29uc3QgTWVk
aWFRdWVyeUV2YWx1CiAgICAgICAgIFN0eWxlUnVsZUJhc2UqIHJ1bGUgPSBydWxlc1tpXS5nZXQo
KTsKIAogICAgICAgICBBU1NFUlQoIXJ1bGUtPmlzSW1wb3J0UnVsZSgpKTsKLSAgICAgICAgaWYg
KHJ1bGUtPmlzU3R5bGVSdWxlKCkpCi0gICAgICAgICAgICBhZGRTdHlsZVJ1bGUoc3RhdGljX2Nh
c3Q8U3R5bGVSdWxlKj4ocnVsZSksIGFkZFJ1bGVGbGFncyk7CisgICAgICAgIGlmIChydWxlLT5p
c1N0eWxlUnVsZSgpKSB7CisgICAgICAgICAgICBTdHlsZVJ1bGUqIHN0eWxlUnVsZSA9IHN0YXRp
Y19jYXN0PFN0eWxlUnVsZSo+KHJ1bGUpOworICAgICAgICAgICAgaWYgKHNjb3BlICYmIGluY2x1
ZGVzU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvcihzdHlsZVJ1bGUtPnNlbGVjdG9yTGlzdCgpKSkg
eworICAgICAgICAgICAgICAgIHJlc29sdmVyLT5hZGRTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9y
UnVsZShzdHlsZVJ1bGUsIGFkb3B0UmVmKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSo+KHNjb3Bl
KSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogVHVy
biBmbGFnIHdoZW4gcGFyc2luZy4KKyAgICAgICAgICAgICAgICBhZGRTdHlsZVJ1bGUoc3R5bGVS
dWxlLCBhZGRSdWxlRmxhZ3MpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIGVs
c2UgaWYgKHJ1bGUtPmlzUGFnZVJ1bGUoKSkKICAgICAgICAgICAgIGFkZFBhZ2VSdWxlKHN0YXRp
Y19jYXN0PFN0eWxlUnVsZVBhZ2UqPihydWxlKSk7CiAgICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlz
TWVkaWFSdWxlKCkpIHsKQEAgLTMxNiw2ICszNzAsNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVz
RnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyogc2hlZXQsIGNvbnN0IE1lZGlhUXVlcnlFdmFs
dQogICAgICAgICAgICAgICAgICAgICBTdHlsZVJ1bGVCYXNlKiBjaGlsZFJ1bGUgPSBjaGlsZFJ1
bGVzW2pdLmdldCgpOwogICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRSdWxlLT5pc1N0eWxl
UnVsZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgYWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0
PFN0eWxlUnVsZSo+KGNoaWxkUnVsZSksIGFkZFJ1bGVGbGFncyk7CisgICAgICAgICAgICAgICAg
ICAgIC8vIGFkZFN0eWxlUnVsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihjaGlsZFJ1bGUpLCBo
YXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCAhc2NvcGUsIGZhbHNlLCByZXNvbHZlciwgc2NvcGUp
OwogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGlsZFJ1bGUtPmlzUGFnZVJ1bGUoKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFBhZ2VSdWxlKHN0YXRpY19jYXN0PFN0eWxlUnVs
ZVBhZ2UqPihjaGlsZFJ1bGUpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGRS
dWxlLT5pc0ZvbnRGYWNlUnVsZSgpICYmIHJlc29sdmVyKSB7CkBAIC0zNjYsNyArNDIxLDIyIEBA
IHZvaWQgUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVldENvbnRlbnRzKiBzaGVl
dCwgY29uc3QgTWVkaWFRdWVyeUV2YWx1CiAgICAgICAgIHNocmlua1RvRml0KCk7CiB9CiAKKy8v
dm9pZCBSdWxlU2V0OjphZGRTdHlsZVJ1bGUoU3R5bGVSdWxlKiBydWxlLCBBZGRSdWxlRmxhZ3Mg
YWRkUnVsZUZsYWdzLCBTdHlsZVJlc29sdmVyKiByZXNvbHZlciwgY29uc3QgQ29udGFpbmVyTm9k
ZSogc2NvcGUpCisvL3sKKy8vICAgIC8vIEZJWE1FOiBoYXlhdG86IEFkZCBSdWxlIHRvIHRoZSBT
aGFkb3cgSG9zdCdzIFJ1bGVTZXQ/Pz8KKy8vICAgIGlmIChzY29wZSAmJiBpbmNsdWRlc1NoYWRv
d1NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3IocnVsZS0+c2VsZWN0b3JMaXN0KCkpKSB7CisvLyAg
ICAgICAgaWYgKEVsZW1lbnQqIHNoYWRvd0hvc3QgPSBzY29wZS0+c2hhZG93SG9zdCgpKSB7Cisv
LyAgICAgICAgICAgIGlmIChyZXNvbHZlcikKKy8vICAgICAgICAgICAgICAgIHJlc29sdmVyLT5l
bnN1cmVSdWxlU2V0Rm9yKHNoYWRvd0hvc3QpLT5hZGRTdHlsZVJ1bGVJbnRlcm5hbChydWxlLCBh
ZGRSdWxlRmxhZ3MpOworLy8gICAgICAgIH0KKy8vICAgICAgICByZXR1cm47CisvLyAgICB9Cisv
LyAgICBhZGRTdHlsZVJ1bGVJbnRlcm5hbChydWxlLCBhZGRSdWxlRmxhZ3MpOworLy99CisKKy8v
IEZJWE1FOiBoYXlhdG8gUmVuYW1lCiB2b2lkIFJ1bGVTZXQ6OmFkZFN0eWxlUnVsZShTdHlsZVJ1
bGUqIHJ1bGUsIEFkZFJ1bGVGbGFncyBhZGRSdWxlRmxhZ3MpCisgICAgICAgIC8vIHZvaWQgUnVs
ZVNldDo6YWRkU3R5bGVSdWxlSW50ZXJuYWwoU3R5bGVSdWxlKiBydWxlLCBib29sIGhhc0RvY3Vt
ZW50U2VjdXJpdHlPcmlnaW4sIGJvb2wgY2FuVXNlRmFzdENoZWNrU2VsZWN0b3IsIGJvb2wgaXNJ
blJlZ2lvblJ1bGUsIFN0eWxlUmVzb2x2ZXIqIHJlc29sdmVyLCBjb25zdCBDb250YWluZXJOb2Rl
KiBzY29wZSkKIHsKICAgICBmb3IgKHNpemVfdCBzZWxlY3RvckluZGV4ID0gMDsgc2VsZWN0b3JJ
bmRleCAhPSBub3RGb3VuZDsgc2VsZWN0b3JJbmRleCA9IHJ1bGUtPnNlbGVjdG9yTGlzdCgpLmlu
ZGV4T2ZOZXh0U2VsZWN0b3JBZnRlcihzZWxlY3RvckluZGV4KSkKICAgICAgICAgYWRkUnVsZShy
dWxlLCBzZWxlY3RvckluZGV4LCBhZGRSdWxlRmxhZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1J1bGVTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmgKaW5kZXgg
YTJmYmVjYmMwMGIyY2ExYjUzMmY0OTZhOTVjMDkzNTAyNmZhNGY3ZC4uNDY1YjZmNWRmZTg2Y2E4
NWQ5ZWEwMzExZjdkMmZlNDU1MGMzNmUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1J1bGVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5oCkBAIC0xMDgsNyAr
MTA4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRD
b250ZW50cyosIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImLCBTdHlsZVJlc29sdmVyKiA9IDAs
IGNvbnN0IENvbnRhaW5lck5vZGUqID0gMCk7CiAKICAgICB2b2lkIGFkZFN0eWxlUnVsZShTdHls
ZVJ1bGUqLCBBZGRSdWxlRmxhZ3MpOworICAgIC8vIHZvaWQgYWRkU3R5bGVSdWxlKFN0eWxlUnVs
ZSosIEFkZFJ1bGVGbGFncywgU3R5bGVSZXNvbHZlciogPSAwLCBjb25zdCBDb250YWluZXJOb2Rl
KiBzY29wZSA9IDApOwogICAgIHZvaWQgYWRkUnVsZShTdHlsZVJ1bGUqLCB1bnNpZ25lZCBzZWxl
Y3RvckluZGV4LCBBZGRSdWxlRmxhZ3MpOworICAgIC8vIHZvaWQgYWRkU3R5bGVSdWxlKFN0eWxl
UnVsZSosIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgYm9vbCBjYW5Vc2VGYXN0Q2hl
Y2tTZWxlY3RvciwgYm9vbCBpc0luUmVnaW9uUnVsZSA9IGZhbHNlLCBTdHlsZVJlc29sdmVyKiA9
IDAsIGNvbnN0IENvbnRhaW5lck5vZGUqID0gMCk7CisgICAgLy8gdm9pZCBhZGRSdWxlKFN0eWxl
UnVsZSosIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9y
aWdpbiwgYm9vbCBjYW5Vc2VGYXN0Q2hlY2tTZWxlY3RvciwgYm9vbCBpc0luUmVnaW9uUnVsZSA9
IGZhbHNlKTsKICAgICB2b2lkIGFkZFBhZ2VSdWxlKFN0eWxlUnVsZVBhZ2UqKTsKICAgICB2b2lk
IGFkZFRvUnVsZVNldChBdG9taWNTdHJpbmdJbXBsKiBrZXksIEF0b21SdWxlTWFwJiwgY29uc3Qg
UnVsZURhdGEmKTsKICAgICB2b2lkIGFkZFJlZ2lvblJ1bGUoU3R5bGVSdWxlUmVnaW9uKiwgYm9v
bCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKTsKQEAgLTEyNiw2ICsxMjksMTAgQEAgcHVibGlj
OgogICAgIGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIHVuaXZlcnNhbFJ1bGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fdW5pdmVyc2FsUnVsZXM7IH0KICAgICBjb25zdCBWZWN0b3I8U3R5bGVSdWxlUGFn
ZSo+JiBwYWdlUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VSdWxlczsgfQogCisgICAgdm9p
ZCBkdW1wKCkgY29uc3Q7CisgICAgdm9pZCBkdW1wUnVsZU1hcChjb25zdCBBdG9tUnVsZU1hcCYp
IGNvbnN0OworICAgIHZvaWQgZHVtcFJ1bGVEYXRhVmVjdG9yKGNvbnN0IFZlY3RvcjxSdWxlRGF0
YT4mKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0OwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3Bw
CmluZGV4IGI2NjA1MGZlNDc1MDcyM2Q3MTRhYzU5NjBkODgzMmZkZDhiNTMwNmQuLmU5NGVmNmZk
MzlhZWJiMzE2NWZiYzZlOTYxOGMzYzQzMzFlZjU5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxl
Y3RvckNoZWNrZXIuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUHJvZ3Jlc3NFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TFN0eWxlRWxlbWVudC5oIgorI2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTk0LDYgKzE5NSw3IEBAIHZvaWQgU2VsZWN0b3JDaGVj
a2VyOjpjb2xsZWN0SWRlbnRpZmllckhhc2hlcyhjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3Is
IHVuc2lnCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RGVz
Y2VuZGFudDoKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6Q2hpbGQ6CisgICAgICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OlJlZmVyZW5jZToKICAgICAgICAgICAgIHNraXBPdmVyU3Vic2VsZWN0b3Jz
ID0gZmFsc2U7CiAgICAgICAgICAgICBjb2xsZWN0RGVzY2VuZGFudFNlbGVjdG9ySWRlbnRpZmll
ckhhc2hlcyhzZWxlY3RvciwgaGFzaCwgZW5kKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTcz
LDYgKzU3NSwzNiBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVj
a2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlYwogICAgICAgICAgICAgbmV4dENv
bnRleHQuZWxlbWVudFBhcmVudFN0eWxlID0gMDsKICAgICAgICAgICAgIHJldHVybiBjaGVja1Nl
bGVjdG9yKG5leHRDb250ZXh0LCBpZ25vcmVEeW5hbWljUHNldWRvKTsKICAgICAgICAgfQorCisg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6UmVmZXJlbmNlOgorICAgICAgICB7CisgICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIiAgICoqKiBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3I6IE1l
ZXRzIENTU1NlbGVjdG9yOjpSZWZlcmVuY2UgXG4iKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBE
ZWZpbmUgInNlbGVjdCIgYXMgY29uc3RhbnQgc29tZXdoZXJlLgorICAgICAgICAgICAgaWYgKGNv
bnRleHQuc2VsZWN0b3ItPnJlZmVyZW5jZSgpICE9ICJzZWxlY3QiKQorICAgICAgICAgICAgICAg
IHJldHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKKyAgICAgICAgICAgIC8vIFRPRE8oaGF5
YXRvKTogCisgICAgICAgICAgICBWZWN0b3I8SW5zZXJ0aW9uUG9pbnQqPiBpbnNlcnRpb25Qb2lu
dHM7CisgICAgICAgICAgICBjb2xsZWN0QWxsTWlkcG9pbnRJbnNlcnRpb25Qb2ludHMoY29udGV4
dC5lbGVtZW50LCBpbnNlcnRpb25Qb2ludHMpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBpbnNlcnRpb25Qb2ludHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIiAgICoqKiBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3I6IENT
U1NlbGVjdG9yOjpSZWZlcmVuY2UgaW5zZXJ0aW9uUG9pbnQgWyVsZF1cbiIsIGkpOworICAgICAg
ICAgICAgICAgIC8vIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0IG5leHRDb250ZXh0KGNvbnRleHQp
OworICAgICAgICAgICAgICAgIC8vIG5leHRDb250ZXh0LnNlbGVjdG9yID0gaGlzdG9yeVNlbGVj
dG9yOworICAgICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnQgPSBpbnNlcnRpb25Qb2lu
dHNbaV07CisgICAgICAgICAgICAgICAgbmV4dENvbnRleHQuaXNTdWJTZWxlY3RvciA9IGZhbHNl
OworICAgICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnRTdHlsZSA9IDA7CisgICAgICAg
ICAgICAgICAgbmV4dENvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlID0gMDsKKyAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBjaGVjayB0aGUgZmluYWwgbm9kZSBpcyBpbnNpZGUg
b2Ygc2NvcGUgd2hlcmUgYQorICAgICAgICAgICAgICAgIC8vIHJ1bGUgaXMgZGVmaW5lZC4uCisg
ICAgICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3IobmV4dENv
bnRleHQsIGlnbm9yZUR5bmFtaWNQc2V1ZG8pOworICAgICAgICAgICAgICAgIGlmIChtYXRjaCA9
PSBTZWxlY3Rvck1hdGNoZXMgfHwgbWF0Y2ggPT0gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkpIHsK
KyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICoqKiBTZWxlY3RvckNoZWNrZXI6
OmNoZWNrU2VsZWN0b3I6IENTU1NlbGVjdG9yOjpSZWZlcmVuY2UgaW5zZXJ0aW9uUG9pbnQgWyVs
ZF0gUmV0dXJuc1xuIiwgaSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgICAqKiog
U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yOiBDU1NTZWxlY3Rvcjo6UmVmZXJlbmNlIGlu
c2VydGlvblBvaW50IFslbGRdIEZhaWxzXG4iLCBpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiICAgKioqIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rv
cjogQ1NTU2VsZWN0b3I6OlJlZmVyZW5jZSBGYWlsIGNvbXBsZXRlbHlzXG4iKTsKKyAgICAgICAg
ICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CmluZGV4IGI0ODRlMTY5ZTEyOWI0MjU5ZWVjYmU2MGNjNmI0YzdlMGFiOGMwNDkuLmFlZGM2N2Qz
ZGVkMzc3MzllN2RjNDM0MmNhODIwMDIwMDEzZTg2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKQEAgLTM4NiwxMCArMzg2LDMyIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29s
bGVjdEZlYXR1cmVzKCkKICAgICBtX3VuY29tbW9uQXR0cmlidXRlUnVsZVNldCA9IG1ha2VSdWxl
U2V0KG1fZmVhdHVyZXMudW5jb21tb25BdHRyaWJ1dGVSdWxlcyk7CiB9CiAKKy8vdm9pZCBTdHls
ZVJlc29sdmVyOjpjb2xsZWN0U2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVzKCkKKy8vewor
Ly8gICAgbV9yZWZlcmVuY2VDb21iaW5hdG9yUnVsZVNldC5jbGVhcigpOworLy8KKy8vCisvLyAg
ICAvLyBDb2xsZWN0IGFsbCBpZHMgYW5kIHJ1bGVzIHVzaW5nIHNpYmxpbmcgc2VsZWN0b3JzICg6
Zmlyc3QtY2hpbGQgYW5kIHNpbWlsYXIpCisvLyAgICAvLyBpbiB0aGUgY3VycmVudCBzZXQgb2Yg
c3R5bGVzaGVldHMuIFN0eWxlIHNoYXJpbmcgY29kZSB1c2VzIHRoaXMgaW5mb3JtYXRpb24gdG8g
cmVqZWN0CisvLyAgICAvLyBzaGFyaW5nIGNhbmRpZGF0ZXMuCisvLyAgICBtX2ZlYXR1cmVzLmFk
ZChkZWZhdWx0U3R5bGUtPmZlYXR1cmVzKCkpOworLy8gICAgbV9mZWF0dXJlcy5hZGQobV9hdXRo
b3JTdHlsZS0+ZmVhdHVyZXMoKSk7CisvLyAgICBpZiAobV9zY29wZVJlc29sdmVyKQorLy8gICAg
ICAgIG1fc2NvcGVSZXNvbHZlci0+Y29sbGVjdEZlYXR1cmVzVG8obV9mZWF0dXJlcyk7CisvLyAg
ICBpZiAobV91c2VyU3R5bGUpCisvLyAgICAgICAgbV9mZWF0dXJlcy5hZGQobV91c2VyU3R5bGUt
PmZlYXR1cmVzKCkpOworLy8KKy8vICAgIG1fc2libGluZ1J1bGVTZXQgPSBtYWtlUnVsZVNldCht
X2ZlYXR1cmVzLnNpYmxpbmdSdWxlcyk7CisvLyAgICBtX3VuY29tbW9uQXR0cmlidXRlUnVsZVNl
dCA9IG1ha2VSdWxlU2V0KG1fZmVhdHVyZXMudW5jb21tb25BdHRyaWJ1dGVSdWxlcyk7CisvL30K
KworCiB2b2lkIFN0eWxlUmVzb2x2ZXI6OnJlc2V0QXV0aG9yU3R5bGUoKQogewogICAgIG1fYXV0
aG9yU3R5bGUgPSBSdWxlU2V0OjpjcmVhdGUoKTsKICAgICBtX2F1dGhvclN0eWxlLT5kaXNhYmxl
QXV0b1Nocmlua1RvRml0KCk7CisgICAgbV9zZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZVNl
dCA9IFJ1bGVTZXQ6OmNyZWF0ZSgpOworICAgIG1fc2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1
bGVTZXQtPmRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKTsKIH0KIAogdm9pZCBTdHlsZVJlc29sdmVy
OjphcHBlbmRBdXRob3JTdHlsZVNoZWV0cyh1bnNpZ25lZCBmaXJzdE5ldywgY29uc3QgVmVjdG9y
PFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBzdHlsZVNoZWV0cykKQEAgLTQwNiw2ICs0MjgsNyBA
QCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKHVuc2lnbmVkIGZp
cnN0TmV3LCBjb25zdCBWZWN0b3I8UmVmUAogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpIHx8IEVO
QUJMRShTSEFET1dfRE9NKQogICAgICAgICBpZiAoY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUg
PSBTdHlsZVNjb3BlUmVzb2x2ZXI6OnNjb3BlRm9yKGNzc1NoZWV0KSkgewogICAgICAgICAgICAg
ZW5zdXJlU2NvcGVSZXNvbHZlcigpLT5lbnN1cmVSdWxlU2V0Rm9yKHNjb3BlKS0+YWRkUnVsZXNG
cm9tU2hlZXQoc2hlZXQsICptX21lZGl1bSwgdGhpcywgc2NvcGUpOworICAgICAgICAgICAgLy8g
Y29sbGVjdFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlcyhzaGVldCwgc2NvcGUpOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtNDE1LDYgKzQzOCw4IEBA
IHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwZW5kQXV0aG9yU3R5bGVTaGVldHModW5zaWduZWQgZmly
c3ROZXcsIGNvbnN0IFZlY3RvcjxSZWZQCiAgICAgICAgICAgICBjb2xsZWN0Q1NTT01XcmFwcGVy
cyhtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLCBjc3NTaGVldCk7CiAgICAgfQogICAgIG1f
YXV0aG9yU3R5bGUtPnNocmlua1RvRml0KCk7CisKKwogICAgIGNvbGxlY3RGZWF0dXJlcygpOwog
ICAgIAogICAgIGlmIChkb2N1bWVudCgpLT5yZW5kZXJlcigpICYmIGRvY3VtZW50KCktPnJlbmRl
cmVyKCktPnN0eWxlKCkpCkBAIC00NzAsNiArNDk1LDE2IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6
YWRkS2V5ZnJhbWVTdHlsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gcnVsZSkKICAg
ICBtX2tleWZyYW1lc1J1bGVNYXAuc2V0KHMuaW1wbCgpLCBydWxlKTsKIH0KIAorU3R5bGVSZXNv
bHZlcjo6U2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGU6OlNlbGVjdFJlZmVyZW5jZUNvbWJp
bmF0b3JSdWxlKFBhc3NSZWZQdHI8U3R5bGVSdWxlPiBydWxlLCBQYXNzUmVmUHRyPENvbnRhaW5l
ck5vZGU+IHNjb3BlKQorICAgOiBtX3J1bGUocnVsZSksIG1fc2NvcGUoc2NvcGUpIHsgfQorCit2
b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlKFN0eWxl
UnVsZSogcnVsZSwgUGFzc1JlZlB0cjxDb250YWluZXJOb2RlPiBzY29wZSkKK3sKKyAgICAvLyBU
T0RPKGhheWF0byk6IFByb2Nlc3MgcnVsZS4gQWRkIHNjb3BlIHRvIHRoZSBsZWZ0LW1vc3Qgc2Vs
ZWN0b3IuCisgICAgQVNTRVJUKG1fc2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVTZXQpOwor
ICAgIG1fc2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVTZXQtPmFkZFN0eWxlUnVsZShydWxl
LCBSdWxlSGFzTm9TcGVjaWFsU3RhdGUpOworfQorCiBTdHlsZVJlc29sdmVyOjp+U3R5bGVSZXNv
bHZlcigpCiB7CiAgICAgbV9mb250U2VsZWN0b3ItPmNsZWFyRG9jdW1lbnQoKTsKQEAgLTcxMiw2
ICs3NDcsMTAgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJl
Z2lvbihSdWxlU2V0KiBydWxlcywgaW50JiBmaXJzdFJ1bGUKICAgICB9CiB9CiAKK3ZvaWQgU3R5
bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWZlcmVuY2VDb21iaW5hdG9yKFJ1
bGVTZXQqIHJ1bGVzLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGNv
bnN0IE1hdGNoT3B0aW9ucyYgb3B0aW9ucykKK3sKK30KKwogdm9pZCBTdHlsZVJlc29sdmVyOjpz
b3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCkKIHsKICAgICBp
ZiAobV9tYXRjaGVkUnVsZXMuaXNFbXB0eSgpKQpAQCAtNzQyLDYgKzc4MSw4IEBAIHZvaWQgU3R5
bGVSZXNvbHZlcjo6c29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1
bHQpCiAKIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hTY29wZWRBdXRob3JSdWxlcyhNYXRjaFJl
c3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQogeworICAgIGZwcmludGYoc3Rk
ZXJyLCAiICA+PiBTdHlsZVJlc29sdmVyOjptYXRjaFNjb3BlZEF1dGhvclJ1bGVzXG4iKTsKKwog
I2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpIHx8IEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmICgh
bV9zY29wZVJlc29sdmVyKQogICAgICAgICByZXR1cm47CkBAIC03OTEsNiArODMyLDggQEAgaW5s
aW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6c3R5bGVTaGFyaW5nQ2FuZGlkYXRlTWF0Y2hlc0hvc3RS
dWxlcygpCiAKIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hIb3N0UnVsZXMoTWF0Y2hSZXN1bHQm
IHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKIHsKKyAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgIiAgPj4gU3R5bGVSZXNvbHZlcjo6bWF0Y2hIb3N0UnVsZXNcbiIpOworCiAjaWYgRU5BQkxF
KFNIQURPV19ET00pCiAgICAgQVNTRVJUKG1fc2NvcGVSZXNvbHZlcik7CiAKQEAgLTgwOSwyMCAr
ODUyLDc2IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hIb3N0UnVsZXMoTWF0Y2hSZXN1bHQm
IHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKICNlbmRpZgogfQogCit2b2lkIFN0eWxl
UmVzb2x2ZXI6Om1hdGNoU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVzKE1hdGNoUmVzdWx0
JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpCit7CisjaWYgRU5BQkxFKFNIQURPV19E
T00pCisKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiAgPj4gU3R5bGVSZXNvbHZlcjo6bWF0Y2hTZWxl
Y3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZXNcbiIpOworICAgIE1hdGNoT3B0aW9ucyBvcHRpb25z
KGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhtX3NlbGVjdFJl
ZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0LmdldCgpLCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9y
UnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7CisKKy8vICAgIFZl
Y3RvcjxSdWxlRGF0YSo+IHJ1bGVzOworLy8gICAgZm9yICh1bnNpZ25lZCBpID0gbV9zZWxlY3RS
ZWZlcmVuY2VDb21iaW5hdG9yUnVsZUxpc3Quc2l6ZSgpOyBpID4gMDsgLS1pKSB7CisvLyAgICAg
ICAgU3R5bGVSdWxlKiBydWxlID0gbV9zZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZUxpc3Rb
aSAtIDFdLm1fcnVsZS5nZXQoKTsKKy8vICAgICAgICBDb250YWluZXJOb2RlKiBzY29wZSA9IG1f
c2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVMaXN0W2kgLSAxXS5tX3Njb3BlLmdldCgpOwor
Ly8gICAgICAgIHByaW50ZigiICAqKiogc2VsZWN0IHJlZmVyZW5jZSBjb21iaW5hdG9yIFslZF0g
XG4iLCBpKTsKKy8vICAgICAgICBydWxlLT5kdW1wKCk7CisvLyAgICAgICAgc2hvd05vZGVQYXRo
KHNjb3BlKTsKKy8vICAgICAgICAvLyBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhtYXRjaGVkUnVsZXMu
YXQoaS0xKSwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFz
dEF1dGhvclJ1bGUsIG9wdGlvbnMpOworLy8gICAgICAgIC8vIHJ1bGVzLT5hcHBlbmQocnVsZS0+
cykKKy8vICAgICAgICAvLyBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QocnVsZXMtPnNoYWRv
d1BzZXVkb0VsZW1lbnRSdWxlcyhwc2V1ZG9JZC5pbXBsKCkpLCBmaXJzdFJ1bGVJbmRleCwgbGFz
dFJ1bGVJbmRleCwgb3B0aW9ucyk7CisvLyAgICB9CisKKyAgICAvLyBGSVhNRTogVG9kbzoKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7CisgICAgVU5VU0VEX1BBUkFNKGluY2x1ZGVF
bXB0eVJ1bGVzKTsKKyNlbmRpZgorfQorCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmR1bXBNYXRjaFJl
c3VsdChjb25zdCBNYXRjaFJlc3VsdCYgcmVzdWx0KQoreworLy8gICAgZnByaW50ZihzdGRlcnIs
ICJNYXRjaFJlc3VsdDpcbiIpOworLy8gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXN1bHQu
bWF0Y2hlZFJ1bGVzLnNpemUoKTsgKytpKSB7CisvLyAgICAgICAgZnByaW50ZihzdGRlcnIsICIg
ICAgbWF0Y2hlZFJ1bGVbJWxkXTogIiwgaSk7CisvLyAgICAgICAgcmVzdWx0Lm1hdGNoZWRSdWxl
c1tpXS0+ZHVtcCgpOworLy8gICAgfQorICAgIGlmIChyZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9y
UnVsZSAhPSAtMSAmJiByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlICE9IC0xKSB7CisgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiKioqKiBNYXRjaFJlc3VsdCBBdXRob3JSdWxlOiBmcm9tICVk
IHRvICVkXG4iLCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5s
YXN0QXV0aG9yUnVsZSk7CisgICAgICAgIGZvciAoaW50IGkgPSByZXN1bHQucmFuZ2VzLmZpcnN0
QXV0aG9yUnVsZTsgaSA8PSByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlOyArK2kpIHsKKyAg
ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAgIG1hdGNoZWRBdXRob3JSdWxlWyVkXTogIiwg
aSk7CisgICAgICAgICAgICByZXN1bHQubWF0Y2hlZFJ1bGVzW2ldLT5kdW1wKCk7CisgICAgICAg
IH0KKyAgICB9Cit9CisKIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxlcyhNYXRj
aFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQogeworICAgIGZwcmludGYo
c3RkZXJyLCAiICA+PiBTdHlsZVJlc29sdmVyOjptYXRjaEF1dGhvclJ1bGVzXG4iKTsKKwogICAg
IG1fbWF0Y2hlZFJ1bGVzLmNsZWFyKCk7CiAgICAgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVs
ZSA9IHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcy5zaXplKCkgLSAxOwogCiAgICAgaWYgKCFtX2Vs
ZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX2VsZW1lbnQtPmdldElkQXR0cmli
dXRlKCkgPT0gImhvc3QtY2hpbGQiKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiXG5cblxu
Pj4gU3R5bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxlczo6IGlkPWhvc3QtY2hpbGRcbiIpOwor
CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiXG5cblxuPj4gQXV0aG9yU3R5bGUgUnVsZVNldCBk
dW1wXG4iKTsKKyAgICAgICAgbV9hdXRob3JTdHlsZS0+ZHVtcCgpOworCisgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiXG5cblxuPj4gU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvIFJ1bGVTZXQgZHVt
cFxuIik7CisgICAgICAgIG1fc2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVTZXQtPmR1bXAo
KTsKKyAgICB9CisKICAgICAvLyBNYXRjaCBnbG9iYWwgYXV0aG9yIHJ1bGVzLgogICAgIE1hdGNo
T3B0aW9ucyBvcHRpb25zKGluY2x1ZGVFbXB0eVJ1bGVzKTsKICAgICBjb2xsZWN0TWF0Y2hpbmdS
dWxlcyhtX2F1dGhvclN0eWxlLmdldCgpLCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwg
cmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7CiAgICAgY29sbGVjdE1hdGNo
aW5nUnVsZXNGb3JSZWdpb24obV9hdXRob3JTdHlsZS5nZXQoKSwgcmVzdWx0LnJhbmdlcy5maXJz
dEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOwogCiAg
ICAgbWF0Y2hTY29wZWRBdXRob3JSdWxlcyhyZXN1bHQsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyAg
ICBtYXRjaFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlcyhyZXN1bHQsIGluY2x1ZGVFbXB0
eVJ1bGVzKTsKIAogICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhyZXN1bHQpOwogfQpA
QCAtODU4LDEzICs5NTcsMTYgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdS
dWxlc0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogcnVsZXMsIGkKIAogICAgIC8vIElu
IHNvbWUgY2FzZXMgd2UgbWF5IGVuZCB1cCBsb29raW5nIHVwIHN0eWxlIGZvciByYW5kb20gZWxl
bWVudHMgaW4gdGhlIG1pZGRsZSBvZiBhIHJlY3Vyc2l2ZSB0cmVlIHJlc29sdmUuCiAgICAgLy8g
QW5jZXN0b3IgaWRlbnRpZmllciBmaWx0ZXIgd29uJ3QgYmUgdXAtdG8tZGF0ZSBpbiB0aGF0IGNh
c2UgYW5kIHdlIGNhbid0IHVzZSB0aGUgZmFzdCBwYXRoLgotICAgIGJvb2wgY2FuVXNlRmFzdFJl
amVjdCA9IG1fY2hlY2tlci5wYXJlbnRTdGFja0lzQ29uc2lzdGVudChtX3BhcmVudE5vZGUpOwor
ICAgIC8vIEZJWE1FOiBoYXlhdG8gVW5jb21tZW50LgorICAgIC8vIGJvb2wgY2FuVXNlRmFzdFJl
amVjdCA9IG1fY2hlY2tlci5wYXJlbnRTdGFja0lzQ29uc2lzdGVudChtX3BhcmVudE5vZGUpOwog
CiAgICAgdW5zaWduZWQgc2l6ZSA9IHJ1bGVzLT5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEg
PSBydWxlcy0+YXQoaSk7Ci0gICAgICAgIGlmIChjYW5Vc2VGYXN0UmVqZWN0ICYmIG1fY2hlY2tl
ci5mYXN0UmVqZWN0U2VsZWN0b3I8UnVsZURhdGE6Om1heGltdW1JZGVudGlmaWVyQ291bnQ+KHJ1
bGVEYXRhLmRlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXMoKSkpCi0gICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAvLyBGSVhNRTogVW5jb21tZW50LgorLy8gICAgICAgIGlm
IChjYW5Vc2VGYXN0UmVqZWN0ICYmIG1fY2hlY2tlci5mYXN0UmVqZWN0U2VsZWN0b3I8UnVsZURh
dGE6Om1heGltdW1JZGVudGlmaWVyQ291bnQ+KHJ1bGVEYXRhLmRlc2NlbmRhbnRTZWxlY3Rvcklk
ZW50aWZpZXJIYXNoZXMoKSkpCisvLyAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFN0
eWxlUnVsZSogcnVsZSA9IHJ1bGVEYXRhLnJ1bGUoKTsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1h
dGNoUnVsZShkb2N1bWVudCgpLCBydWxlKTsKQEAgLTk0Myw2ICsxMDQ1LDggQEAgdm9pZCBTdHls
ZVJlc29sdmVyOjptYXRjaEFsbFJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVk
ZVNNSUxQcm9wZXJ0aWUKICAgICB9CiAgICAgCiAgICAgLy8gQ2hlY2sgdGhlIHJ1bGVzIGluIGF1
dGhvciBzaGVldHMgbmV4dC4KKworCiAgICAgaWYgKG1fbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVz
KQogICAgICAgICBtYXRjaEF1dGhvclJ1bGVzKHJlc3VsdCwgZmFsc2UpOwogCkBAIC0xNTE0LDYg
KzE2MTgsMTQgQEAgc3RhdGljIGlubGluZSBib29sIGlzQXRTaGFkb3dCb3VuZGFyeShjb25zdCBF
bGVtZW50KiBlbGVtZW50KQogUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6
c3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIFJlbmRlclN0eWxlKiBkZWZhdWx0UGFy
ZW50LAogICAgIFN0eWxlU2hhcmluZ0JlaGF2aW9yIHNoYXJpbmdCZWhhdmlvciwgUnVsZU1hdGNo
aW5nQmVoYXZpb3IgbWF0Y2hpbmdCZWhhdmlvciwgUmVuZGVyUmVnaW9uKiByZWdpb25Gb3JTdHls
aW5nKQogeworICAgIGZwcmludGYoc3RkZXJyLCAiXG5cblxuPj4gU3R5bGVyZXNvbHZlcjo6U3R5
bGVmb3JFbGVtZW50OiIpOworICAgIGlmIChlbGVtZW50KSB7CisgICAgICAgIGVsZW1lbnQtPnNo
b3dOb2RlUGF0aEZvclRoaXMoKTsKKyAgICAgICAgaWYgKGVsZW1lbnQtPmdldElkQXR0cmlidXRl
KCkgPT0gImhvc3QtY2hpbGQiKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIj4+IFN0
eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudDo6IGlkPWhvc3QtY2hpbGRcbiIpOworICAgICAg
ICB9CisgICAgfQorCiAgICAgLy8gT25jZSBhbiBlbGVtZW50IGhhcyBhIHJlbmRlcmVyLCB3ZSBk
b24ndCB0cnkgdG8gZGVzdHJveSBpdCwgc2luY2Ugb3RoZXJ3aXNlIHRoZSByZW5kZXJlcgogICAg
IC8vIHdpbGwgdmFuaXNoIGlmIGEgc3R5bGUgcmVjYWxjIGhhcHBlbnMgZHVyaW5nIGxvYWRpbmcu
CiAgICAgaWYgKHNoYXJpbmdCZWhhdmlvciA9PSBBbGxvd1N0eWxlU2hhcmluZyAmJiAhZWxlbWVu
dC0+ZG9jdW1lbnQoKS0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkgJiYgIWVsZW1lbnQtPnJlbmRl
cmVyKCkpIHsKQEAgLTE1NzMsNiArMTY4NSw5IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFN0
eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBSZW5kZXJTCiAg
ICAgZWxzZQogICAgICAgICBtYXRjaEFsbFJ1bGVzKG1hdGNoUmVzdWx0LCBtYXRjaGluZ0JlaGF2
aW9yICE9IE1hdGNoQWxsUnVsZXNFeGNsdWRpbmdTTUlMKTsKIAorICAgIC8vIGZwcmludGYoc3Rk
ZXJyLCAiLi4gU3R5bGVSZXNvbHZlcjo6U3R5bGVmb3JFbGVtZW50OiBtYXRjaFJlc3VsdCIpOwor
ICAgIGR1bXBNYXRjaFJlc3VsdChtYXRjaFJlc3VsdCk7CisKICAgICBhcHBseU1hdGNoZWRQcm9w
ZXJ0aWVzKG1hdGNoUmVzdWx0LCBlbGVtZW50KTsKIAogICAgIC8vIENsZWFuIHVwIG91ciBzdHls
ZSBvYmplY3QncyBkaXNwbGF5IGFuZCB0ZXh0IGRlY29yYXRpb25zIChhbW9uZyBvdGhlciBmaXh1
cHMpLgpAQCAtNTE4OCw2ICs1MzAzLDE0IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6TWF0Y2hlZFBy
b3BlcnRpZXM6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yCiAgICAg
aW5mby5hZGRNZW1iZXIocHJvcGVydGllcyk7CiB9CiAKKworUnVsZVNldCogU3R5bGVSZXNvbHZl
cjo6ZW5zdXJlUnVsZVNldEZvcihjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSkgeworICAgIEFT
U0VSVChtX3Njb3BlUmVzb2x2ZXIpOworICAgIGZwcmludGYoc3RkZXJyLCAiICA+PiBTdHlsZVJl
c29sdmVyOjplbnN1cmVSdWxlU2V0Rm9yIFxuIik7CisgICAgc2hvd05vZGVQYXRoKHNjb3BlKTsK
KyAgICByZXR1cm4gbV9zY29wZVJlc29sdmVyLT5lbnN1cmVSdWxlU2V0Rm9yKHNjb3BlKTsKK30K
Kwogdm9pZCBTdHlsZVJlc29sdmVyOjpNYXRjaGVkUHJvcGVydGllc0NhY2hlSXRlbTo6cmVwb3J0
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsK
ICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3Jl
TWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCA0MWVh
YmRhODBkY2ZkNzQ1ZmVhMDJlMmVlN2E2NDM2ZGM1MDkyNTAwLi44ZTAzYThlMTZmMTgwYTU4NWJk
M2MyNGViNGRmOWY3MGI5MzEwNjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAg
LTE4OSw2ICsxODksNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbml0Rm9yU3R5bGVSZXNvbHZl
KEVsZW1lbnQqLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSAwLCBQc2V1ZG9JZCA9IE5PUFNF
VURPKTsKICAgICB2b2lkIGluaXRFbGVtZW50KEVsZW1lbnQqKTsKKyAgICB2b2lkIGNvbGxlY3RS
ZWZlcmVuY2VDb21iaW5hdG9yUnVsZVNldCgpOwogICAgIHZvaWQgY29sbGVjdEZlYXR1cmVzKCk7
CiAgICAgUmVuZGVyU3R5bGUqIGxvY2F0ZVNoYXJlZFN0eWxlKCk7CiAgICAgYm9vbCBzdHlsZVNo
YXJpbmdDYW5kaWRhdGVNYXRjaGVzUnVsZVNldChSdWxlU2V0Kik7CkBAIC0yNTUsNiArMjU2LDgg
QEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRLZXlmcmFtZVN0eWxlKFBhc3NSZWZQdHI8U3R5bGVS
dWxlS2V5ZnJhbWVzPik7CiAKKyAgICB2b2lkIGFkZFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JS
dWxlKFN0eWxlUnVsZSosIFBhc3NSZWZQdHI8Q29udGFpbmVyTm9kZT4gc2NvcGUpOworCiAgICAg
Ym9vbCBjaGVja1JlZ2lvblN0eWxlKEVsZW1lbnQqIHJlZ2lvbkVsZW1lbnQpOwogCiAgICAgYm9v
bCB1c2VzU2libGluZ1J1bGVzKCkgY29uc3QgeyByZXR1cm4gIW1fZmVhdHVyZXMuc2libGluZ1J1
bGVzLmlzRW1wdHkoKTsgfQpAQCAtMzMyLDYgKzMzNSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGJv
b2wgaXNDYWNoZWFibGU7CiAgICAgfTsKIAorICAgIHN0YXRpYyB2b2lkIGR1bXBNYXRjaFJlc3Vs
dChjb25zdCBNYXRjaFJlc3VsdCYgcmVzdWx0KTsKKwogICAgIHN0cnVjdCBNYXRjaE9wdGlvbnMg
ewogICAgICAgICBNYXRjaE9wdGlvbnMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcywgY29uc3QgQ29u
dGFpbmVyTm9kZSogc2NvcGUgPSAwKSA6IHNjb3BlKHNjb3BlKSwgaW5jbHVkZUVtcHR5UnVsZXMo
aW5jbHVkZUVtcHR5UnVsZXMpIHsgfQogICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBzY29w
ZTsKQEAgLTM0OCw5ICszNTMsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1hdGNoVXNlclJ1bGVz
KE1hdGNoUmVzdWx0JiwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAgICAgdm9pZCBtYXRjaFNj
b3BlZEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAg
ICAgdm9pZCBtYXRjaEhvc3RSdWxlcyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVs
ZXMpOworCisgICAgdm9pZCBtYXRjaFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlcyhNYXRj
aFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOworCiAgICAgdm9pZCBjb2xsZWN0TWF0
Y2hpbmdSdWxlcyhSdWxlU2V0KiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUlu
ZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmKTsKICAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVz
Rm9yUmVnaW9uKFJ1bGVTZXQqLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5k
ZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYpOwogICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNG
b3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQm
IGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYpOworCisgICAgdm9pZCBjb2xsZWN0
TWF0Y2hpbmdSdWxlc0ZvclJlZmVyZW5jZUNvbWJpbmF0b3IoUnVsZVNldCosIGludCYgZmlyc3RS
dWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJik7CisKICAg
ICBib29sIGZhc3RSZWplY3RTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYpIGNvbnN0OwogICAgIHZv
aWQgc29ydE1hdGNoZWRSdWxlcygpOwogICAgIHZvaWQgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1
bGVzKE1hdGNoUmVzdWx0Jik7CkBAIC0zODYsMTAgKzM5NywyMiBAQCBwcml2YXRlOgogICAgIE93
blB0cjxSdWxlU2V0PiBtX2F1dGhvclN0eWxlOwogICAgIE93blB0cjxSdWxlU2V0PiBtX3VzZXJT
dHlsZTsKIAorICAgIHN0cnVjdCBTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZSB7CisgICAg
ICAgIFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlKFBhc3NSZWZQdHI8U3R5bGVSdWxlPiBy
dWxlLCBQYXNzUmVmUHRyPENvbnRhaW5lck5vZGU+IHNjb3BlKTsKKyAgICAgICAgUmVmUHRyPFN0
eWxlUnVsZT4gbV9ydWxlOworICAgICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gbV9zY29wZTsK
KyAgICB9OworCisgICAgLy8gVmVjdG9yPFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlPiBt
X3NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlTGlzdDsKKyAgICAvLyB0eXBlZGVmIEhhc2hN
YXA8UmVmUHRyPFN0eWxlUnVsZT4sIFJlZlB0cjxjb25zdCBDb250YWluZXJOb2RlPiA+IFNlbGVj
dFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlTWFwOworICAgIC8vIFNlbGVjdFJlZmVyZW5jZUNvbWJp
bmF0b3JSdWxlTWFwIG1fc2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVNYXA7CisgICAgT3du
UHRyPFJ1bGVTZXQ+IG1fc2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVTZXQ7CisKICAgICBS
dWxlRmVhdHVyZVNldCBtX2ZlYXR1cmVzOwogICAgIE93blB0cjxSdWxlU2V0PiBtX3NpYmxpbmdS
dWxlU2V0OwogICAgIE93blB0cjxSdWxlU2V0PiBtX3VuY29tbW9uQXR0cmlidXRlUnVsZVNldDsK
IAorCiAgICAgYm9vbCBtX2hhc1VBQXBwZWFyYW5jZTsKICAgICBCb3JkZXJEYXRhIG1fYm9yZGVy
RGF0YTsKICAgICBGaWxsTGF5ZXIgbV9iYWNrZ3JvdW5kRGF0YTsKQEAgLTQxOCw2ICs0NDEsOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
KSBjb25zdDsKICAgICAKKyAgICBSdWxlU2V0KiBlbnN1cmVSdWxlU2V0Rm9yKGNvbnN0IENvbnRh
aW5lck5vZGUqIHNjb3BlKTsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgUmVuZGVyU3R5bGUqIHNf
c3R5bGVOb3RZZXRBdmFpbGFibGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAppbmRleCA0ZDQzNDBh
NmQ4YTIwMTJjODQyMTViYjI5MmU1ZjJkNDA0ZmJkYTQwLi40M2QxODQ3NDgxYmZiOWYxNmY0YTVi
MjdjYWY5OWRlNWI1NGFjYzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
dWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCkBAIC0xMDUsNiArMTA1
LDEwIEBAIHB1YmxpYzoKICAgICAKICAgICB+U3R5bGVSdWxlKCk7CiAKKyAgICB2b2lkIGR1bXAo
KSBjb25zdCB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiU3R5bGVSdWxlOiAlcyAgbV9zb3Vy
Y2VMaW5lOiAlZFxuIiwgc2VsZWN0b3JMaXN0KCkuc2VsZWN0b3JzVGV4dCgpLnV0ZjgoKS5kYXRh
KCksIHNvdXJjZUxpbmUoKSk7CisgICAgfQorCiAgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBz
ZWxlY3Rvckxpc3QoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yTGlzdDsgfQogICAgIGNvbnN0
IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnRp
ZXMuZ2V0KCk7IH0KICAgICBTdHlsZVByb3BlcnR5U2V0KiBtdXRhYmxlUHJvcGVydGllcygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcAppbmRleCA1ZmYyYjNlMGIx
MTU0OTk0NDdlMjFjODZmNThmNjQ2MTMwMWNmMGZkLi5iNzhhM2U5MTIyMTIzNzI2MWU1Y2MyMDI5
ZmQ1MTZhOWNmNTM2NmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29w
ZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVy
LmNwcApAQCAtNzksOCArNzksMTAgQEAgY29uc3QgQ29udGFpbmVyTm9kZSogU3R5bGVTY29wZVJl
c29sdmVyOjpzY29wZUZvcihjb25zdCBDU1NTdHlsZVNoZWV0KiBzaGVldCkKIAogaW5saW5lIFJ1
bGVTZXQqIFN0eWxlU2NvcGVSZXNvbHZlcjo6cnVsZVNldEZvcihjb25zdCBDb250YWluZXJOb2Rl
KiBzY29wZSkgY29uc3QKIHsKLSAgICBpZiAoIXNjb3BlLT5oYXNTY29wZWRIVE1MU3R5bGVDaGls
ZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAvLyBGSVhNRTogVGVtcHBvcmFyeSBjb21tZW50
IG91dC4KKy8vICAgIGlmICghc2NvcGUtPmhhc1Njb3BlZEhUTUxTdHlsZUNoaWxkKCkpCisvLyAg
ICAgICAgcmV0dXJuIDA7CisKICAgICBTY29wZWRSdWxlU2V0TWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IG1fYXV0aG9yU3R5bGVzLmZpbmQoc2NvcGUpOwogICAgIHJldHVybiBpdCAhPSBtX2F1dGhv
clN0eWxlcy5lbmQoKSA/IGl0LT52YWx1ZS5nZXQoKSA6IDA7IAogfQpAQCAtMTEzLDYgKzExNSwx
NSBAQCB2b2lkIFN0eWxlU2NvcGVSZXNvbHZlcjo6c2V0dXBTdGFjayhjb25zdCBDb250YWluZXJO
b2RlKiBwYXJlbnQpCiAgICAgbV9zdGFja1BhcmVudEJvdW5kc0luZGV4ID0gMDsKIH0KIAordm9p
ZCBTdHlsZVNjb3BlUmVzb2x2ZXI6OmR1bXAoKSBjb25zdAoreworICAgIGZwcmludGYoc3RkZXJy
LCAiPj4gU3R5bGVTY29wZVJlc29sdmVyOjpkdW1wXG4iKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fc3RhY2suc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIg
WyVsZF0iLCBpKTsKKyAgICAgICAgc2hvd05vZGVQYXRoKHN0YWNrRnJhbWVBdChpKS5tX3Njb3Bl
KTsKKyAgICB9Cit9CisKIHZvaWQgU3R5bGVTY29wZVJlc29sdmVyOjpwdXNoKGNvbnN0IENvbnRh
aW5lck5vZGUqIHNjb3BlLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZVBhcmVudCkKIHsKICAg
ICAvLyBTaG9ydGN1dDogRG9uJ3QgYm90aGVyIHdpdGggdGhlIHNjb3BpbmcgZWxlbWVudCBzdGFj
ayBpZiA8c3R5bGUgc2NvcGVkPiBpc24ndCB1c2VkIGFueXdoZXJlLgpAQCAtMTM2LDYgKzE0Nywx
MCBAQCB2b2lkIFN0eWxlU2NvcGVSZXNvbHZlcjo6cHVzaChjb25zdCBDb250YWluZXJOb2RlKiBz
Y29wZSwgY29uc3QgQ29udGFpbmVyTm9kZSogcwogICAgIGlmIChydWxlU2V0KQogICAgICAgICBt
X3N0YWNrLmFwcGVuZChTdGFja0ZyYW1lKHNjb3BlLCBtX3N0YWNrUGFyZW50Qm91bmRzSW5kZXgs
IHJ1bGVTZXQpKTsKICAgICBtX3N0YWNrUGFyZW50ID0gc2NvcGU7CisvLyAgICBmcHJpbnRmKHN0
ZGVyciwgIj4+IFN0eWxlU2NvcGVSZXNvbHZlcjo6cHVzaFxuIik7CisvLyAgICBmcHJpbnRmKHN0
ZGVyciwgIiAgc2NvcGU6Iik7CisvLyAgICBzaG93Tm9kZVBhdGgoc2NvcGUpOworLy8gICAgZHVt
cCgpOwogfQogCiB2b2lkIFN0eWxlU2NvcGVSZXNvbHZlcjo6cG9wKGNvbnN0IENvbnRhaW5lck5v
ZGUqIHNjb3BlKQpAQCAtMTQ4LDYgKzE2MywxMCBAQCB2b2lkIFN0eWxlU2NvcGVSZXNvbHZlcjo6
cG9wKGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKQogICAgICAgICAgICAgLS1tX3N0YWNrUGFy
ZW50Qm91bmRzSW5kZXg7CiAgICAgICAgIG1fc3RhY2tQYXJlbnQgPSBzY29wZS0+cGFyZW50T3JI
b3N0Tm9kZSgpOwogICAgIH0KKy8vICAgIGZwcmludGYoc3RkZXJyLCAiPj4gU3R5bGVTY29wZVJl
c29sdmVyOjpwb3BcbiIpOworLy8gICAgZnByaW50ZihzdGRlcnIsICIgIHNjb3BlOiIpOworLy8g
ICAgc2hvd05vZGVQYXRoKHNjb3BlKTsKKy8vICAgIGR1bXAoKTsKIH0KIAogdm9pZCBTdHlsZVNj
b3BlUmVzb2x2ZXI6OmNvbGxlY3RGZWF0dXJlc1RvKFJ1bGVGZWF0dXJlU2V0JiBmZWF0dXJlcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuaAppbmRleCAzYmUzZmY0ZjcwYzcz
NzViZDAxNDI2YTAwYmE0MjQxMjg0NjJjYzBlLi42YzAwMWFmOTRkMWEyMDlkZTIxMTk2OTNmYTc0
MDM5NDIxYTZmYzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJl
c29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5oCkBA
IC04MSw2ICs4MSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCisgICAgdm9pZCBkdW1wKCkgY29uc3Q7CisKIHByaXZh
dGU6CiAgICAgUnVsZVNldCogcnVsZVNldEZvcihjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSkg
Y29uc3Q7CiAgICAgdm9pZCBzZXR1cFN0YWNrKGNvbnN0IENvbnRhaW5lck5vZGUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKaW5kZXggMTlm
NWJjMzk5NDg0ZjFlMzAyMzk3ZTZjNWZmODNmNjU4MmFjODcxOS4uNjdkMTYxMGE0Y2EwZDI4ZjU4
YWZiM2MxMDk5ZTE1OTMzZWJkMDg3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBv
c2VkU2hhZG93VHJlZVdhbGtlci5jcHAKQEAgLTUzLDE3ICs1Myw2IEBAIHN0YXRpYyBpbmxpbmUg
RWxlbWVudFNoYWRvdyogc2hhZG93T2ZQYXJlbnQoY29uc3QgTm9kZSogbm9kZSkKICAgICByZXR1
cm4gMDsKIH0KIAotc3RhdGljIGlubGluZSBFbGVtZW50U2hhZG93KiBzaGFkb3dPZlBhcmVudEZv
ckRpc3RyaWJ1dGlvbihjb25zdCBOb2RlKiBub2RlKQotewotICAgIGlmICghbm9kZSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoRWxlbWVudCogcGFyZW50ID0gcGFyZW50RWxlbWVudEZv
ckRpc3RyaWJ1dGlvbihub2RlKSkKLSAgICAgICAgcmV0dXJuIHBhcmVudC0+c2hhZG93KCk7Ci0K
LSAgICByZXR1cm4gMDsgICAgCi19Ci0KIHN0YXRpYyBpbmxpbmUgYm9vbCBub2RlQ2FuQmVEaXN0
cmlidXRlZChjb25zdCBOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlKTsKQEAgLTgwLDM1
ICs2OSw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBub2RlQ2FuQmVEaXN0cmlidXRlZChjb25zdCBO
b2RlKiBub2RlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGlubGluZSBJbnNlcnRp
b25Qb2ludCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlKQot
ewotICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IDA7Ci0gICAgY29uc3QgTm9k
ZSogY3VycmVudCA9IHByb2plY3RlZE5vZGU7Ci0KLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAg
ICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRp
b24oY3VycmVudCkpIHsKLSAgICAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7
Ci0gICAgICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBzaGFkb3ctPmRp
c3RyaWJ1dG9yKCkuZmluZEluc2VydGlvblBvaW50Rm9yKHByb2plY3RlZE5vZGUpKSB7Ci0gICAg
ICAgICAgICAgICAgY3VycmVudCA9IGluc2VydGVkVG87Ci0gICAgICAgICAgICAgICAgaW5zZXJ0
aW9uUG9pbnQgPSBpbnNlcnRlZFRvOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKE5vZGUqIHBhcmVudCA9IHBhcmVudE5v
ZGVGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKLSAgICAgICAgICAgIGlmIChJbnNlcnRpb25Q
b2ludCogaW5zZXJ0ZWRUbyA9IHBhcmVudC0+aXNTaGFkb3dSb290KCkgPyB0b1NoYWRvd1Jvb3Qo
cGFyZW50KS0+YXNzaWduZWRUbygpIDogMCkgewotICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBp
bnNlcnRlZFRvOwotICAgICAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0g
ICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHJldHVybiBpbnNlcnRpb25Qb2ludDsKLX0KLQog
aW5saW5lIHZvaWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpQYXJlbnRUcmF2ZXJzYWxEZXRh
aWxzOjpkaWRUcmF2ZXJzZUluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Q
b2ludCkKIHsKICAgICBpZiAoIW1faW5zZXJ0aW9uUG9pbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAppbmRleCAyNjg1NmRkNzUxOGQ0M2VlZmViNjZhN2Y4
ODYyMjIxOGMxY2E5ZDdkLi42MGE1YjFiMjkwMzcxNGYxNjNkMjVkN2NlNTU0NGIxMzc0MjQ2NGFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKQEAgLTMy
LDYgKzMyLDcgQEAKICNkZWZpbmUgSW5zZXJ0aW9uUG9pbnRfaAogCiAjaW5jbHVkZSAiQ29udGVu
dERpc3RyaWJ1dG9yLmgiCisjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgogI2luY2x1ZGUgIkhU
TUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9v
dC5oIgpAQCAtMTM5LDYgKzE0MCw3OSBAQCBpbmxpbmUgRWxlbWVudCogcGFyZW50RWxlbWVudEZv
ckRpc3RyaWJ1dGlvbihjb25zdCBOb2RlKiBub2RlKQogICAgIHJldHVybiAwOwogfQogCitpbmxp
bmUgRWxlbWVudFNoYWRvdyogc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY29uc3QgTm9k
ZSogbm9kZSkKK3sKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYg
KEVsZW1lbnQqIHBhcmVudCA9IHBhcmVudEVsZW1lbnRGb3JEaXN0cmlidXRpb24obm9kZSkpCisg
ICAgICAgIHJldHVybiBwYXJlbnQtPnNoYWRvdygpOworCisgICAgcmV0dXJuIDA7Cit9CisKK2lu
bGluZSBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKiBwcm9q
ZWN0ZWROb2RlKQoreworICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IDA7Cisg
ICAgY29uc3QgTm9kZSogY3VycmVudCA9IHByb2plY3RlZE5vZGU7CisKKyAgICB3aGlsZSAodHJ1
ZSkgeworICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRG
b3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKKyAgICAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlz
dHJpYnV0aW9uKCk7CisgICAgICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8g
PSBzaGFkb3ctPmRpc3RyaWJ1dG9yKCkuZmluZEluc2VydGlvblBvaW50Rm9yKHByb2plY3RlZE5v
ZGUpKSB7CisgICAgICAgICAgICAgICAgY3VycmVudCA9IGluc2VydGVkVG87CisgICAgICAgICAg
ICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKE5vZGUqIHBhcmVu
dCA9IHBhcmVudE5vZGVGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKKyAgICAgICAgICAgIGlm
IChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHBhcmVudC0+aXNTaGFkb3dSb290KCkgPyB0
b1NoYWRvd1Jvb3QocGFyZW50KS0+YXNzaWduZWRUbygpIDogMCkgeworICAgICAgICAgICAgICAg
IGN1cnJlbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0g
aW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBpbnNlcnRpb25Q
b2ludDsKK30KKworLy8gRklYTUU6IGNvbGxlY3RzIG9ubHkgQ29udGVudHNFbGVtZW50cyBzaW5j
ZSAvc2VsZWN0LyByZWZlcmVuY2UgY29tYmluYXRvciBjYW4gYmUKKy8vIGFwcGxpZWQgdG8gb25s
eSA8Y29udGVudHM+CitpbmxpbmUgdm9pZCBjb2xsZWN0QWxsTWlkcG9pbnRJbnNlcnRpb25Qb2lu
dHMoY29uc3QgTm9kZSogcHJvamVjdGVkTm9kZSwgVmVjdG9yPEluc2VydGlvblBvaW50Kj4mIHJl
c3VsdHMpCit7CisgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gMDsKKyAgICBj
b25zdCBOb2RlKiBjdXJyZW50ID0gcHJvamVjdGVkTm9kZTsKKworICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBzaGFkb3dPZlBhcmVudEZvckRp
c3RyaWJ1dGlvbihjdXJyZW50KSkgeworICAgICAgICAgICAgc2hhZG93LT5lbnN1cmVEaXN0cmli
dXRpb24oKTsKKyAgICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHNo
YWRvdy0+ZGlzdHJpYnV0b3IoKS5maW5kSW5zZXJ0aW9uUG9pbnRGb3IocHJvamVjdGVkTm9kZSkp
IHsKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAg
ICBpbnNlcnRpb25Qb2ludCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgcmVzdWx0cy5h
cHBlbmQoaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKE5vZGUqIHBhcmVudCA9IHBhcmVudE5v
ZGVGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKKyAgICAgICAgICAgIGlmIChJbnNlcnRpb25Q
b2ludCogaW5zZXJ0ZWRUbyA9IHBhcmVudC0+aXNTaGFkb3dSb290KCkgPyB0b1NoYWRvd1Jvb3Qo
cGFyZW50KS0+YXNzaWduZWRUbygpIDogMCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBp
bnNlcnRlZFRvOworICAgICAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsK
KyAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChpbnNlcnRpb25Qb2ludCk7CisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm47CisgICAgfQorfQorCisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gSW5zZXJ0aW9uUG9pbnRfaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUz
ZmNlOTgzY2VhY2M1YzllYjQ2NDA5MjU5MjQ1MTY2N2NiNmY5ZGUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9y
Lmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPHN0eWxl
PgorICBkaXYgeworICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmM7CisgIH0KKyAgI3NhbmRib3gg
eworICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmQ7CisgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+
Cis8c2NyaXB0PgorCit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdz
dHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2RpdiB7IGJhY2tncm91bmQtY29sb3I6
ICNjY2Y7IH0nICsKKyAgJyNzaGFkb3ctY29udGVudCAvc2VsZWN0LyBkaXYgeyBjb2xvcjogcmVk
OyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcp
Oworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9z
dCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAg
c2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAn
c2hhZG93LWNoaWxkJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgnc2hhZG93IGNoaWxkJykpLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdjb250ZW50JywgeydpZCc6ICdzaGFkb3ctY29udGVudCd9KSksCisgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0LWNoaWxkJ30sCisgICAgICAgICAgICAgICAgICAg
ICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnaG9zdCBjaGlsZCcpKSkpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172889</attachid>
            <date>2012-11-07 16:31:00 -0800</date>
            <delta_ts>2012-11-21 00:57:23 -0800</delta_ts>
            <desc>WIP. No crash.</desc>
            <filename>bug-82169-20121108092910.patch</filename>
            <type>text/plain</type>
            <size>42142</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmNTA5YWQyNWZlYjc3YTAwOWM2MDJkZmI1YWQyMzllN2FmMjUxNzdmLi42
ZTRhOTRmZjhhODQ5ZTQ0NDllYTI1MGQzMTZiZWIxMWNkYWJiN2VhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNzkgQEAKKzIwMTItMTAtMjMgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBOZWVkcyAvc2VsZWN0LyByZWZlcmVuY2UgY29tYmlu
YXRvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgy
MTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
aXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlv
bmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBjc3MvQ1NTR3Jh
bW1hci55LmluOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpzZXRSZWZlcmVuY2UpOgorICAgICAgICAqIGNzcy9D
U1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2VsZWN0b3JU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZXRSZWZlcmVuY2UpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6ZHVtcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6UmFyZURhdGE6OlJhcmVEYXRhKToKKyAgICAg
ICAgKiBjc3MvQ1NTU2VsZWN0b3IuaDoKKyAgICAgICAgKENTU1NlbGVjdG9yKToKKyAgICAgICAg
KFJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpyZWZlcmVuY2UpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6aXNSZWZl
cmVuY2VDb21iaW5hdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxpc3Q6OmR1bXApOgorICAgICAgICAoQ1NTU2VsZWN0
b3JMaXN0KToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
dWxlU2V0OjpkdW1wUnVsZURhdGFWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpSdWxlU2V0OjpkdW1wUnVsZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpSdWxl
U2V0OjpkdW1wKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFJ1bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UnVsZVNldDo6YWRkUmVnaW9uUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpp
bmNsdWRlc1NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UnVs
ZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6YWRk
U3R5bGVSdWxlKToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5oOgorICAgICAgICAoUnVsZVNldCk6
CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3RvckNoZWNrZXI6OmNvbGxlY3RJZGVudGlmaWVySGFzaGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcik6CisgICAgICAgICogY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVJlc29sdmVyOjpyZXNldEF1dGhvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVz
b2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UmVzb2x2ZXI6OmFkZFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVmZXJlbmNlQ29t
YmluYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRjaFNjb3BlZEF1
dGhvclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Om1hdGNoSG9zdFJ1
bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Om1hdGNoU2VsZWN0UmVmZXJl
bmNlQ29tYmluYXRvclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmR1
bXBNYXRjaFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRjaEF1
dGhvclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRj
aGluZ1J1bGVzRm9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRj
aEFsbFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjplbnN1cmVSdWxlU2V0Rm9y
KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAoU3R5bGVSZXNvbHZl
cik6CisgICAgICAgICogY3NzL1N0eWxlUnVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
dWxlOjpkdW1wKToKKyAgICAgICAgKFN0eWxlUnVsZSk6CisgICAgICAgICogY3NzL1N0eWxlU2Nv
cGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNjb3BlUmVzb2x2ZXI6OnJ1
bGVTZXRGb3IpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTY29wZVJlc29sdmVyOjpkdW1wKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTY29wZVJlc29sdmVy
OjpwdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2NvcGVSZXNvbHZlcjo6cG9wKToKKyAg
ICAgICAgKiBjc3MvU3R5bGVTY29wZVJlc29sdmVyLmg6CisgICAgICAgIChTdHlsZVNjb3BlUmVz
b2x2ZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50Lmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RBbGxNaWRwb2ludEluc2VydGlv
blBvaW50cyk6CisKIDIwMTItMTEtMDIgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSmF2YVNjcmlwdCB3ZWIgd29ya2VycyBk
ZWJ1Z2dpbmcgY3Jhc2hlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1t
YXIueS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KaW5kZXggMjI5NTdj
Njg5NmVhZWZhOWYxM2MxYjViNGY1OWU5MTZkYmFjYzA0Zi4uN2U0MTMwOTljN2E2YzNlNGE4ZmZh
NmRjZDM0MmM1MmY5MWMxYWJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dy
YW1tYXIueS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCkBAIC0y
ODksNiArMjg5LDcgQEAgc3RhdGljIGlubGluZSBpbnQgY3NzeXllcnJvcih2b2lkKiwgY29uc3Qg
Y2hhciopCiAKICV0eXBlIDxzdHJpbmc+IGVsZW1lbnRfbmFtZQogJXR5cGUgPHN0cmluZz4gYXR0
cl9uYW1lCisldHlwZSA8c3RyaW5nPiByZWZlcmVuY2VfY29tYmluYXRvcgogCiAlJQogCkBAIC0x
MDAxLDYgKzEwMDIsMTUgQEAgY29tYmluYXRvcjoKICAgfCAnPicgbWF5YmVfc3BhY2UgeyAkJCA9
IENTU1NlbGVjdG9yOjpDaGlsZDsgfQogICA7CiAKK3JlZmVyZW5jZV9jb21iaW5hdG9yOgorICAn
LycgSURFTlQgJy8nIG1heWJlX3NwYWNlIHsKKyAgICAgICAgQ1NTUGFyc2VyU3RyaW5nJiBzdHIg
PSAkMjsKKyAgICAgICAgaWYgKHBhcnNlci0+bV9jb250ZXh0LmlzSFRNTERvY3VtZW50KQorICAg
ICAgICAgICAgc3RyLmxvd2VyKCk7CisgICAgICAgICQkID0gc3RyOworICB9CisgIDsKKwogbWF5
YmVfdW5hcnlfb3BlcmF0b3I6CiAgICAgdW5hcnlfb3BlcmF0b3IgeyAkJCA9ICQxOyB9CiAgICAg
fCB7ICQkID0gMTsgfQpAQCAtMTA5Niw2ICsxMTA2LDIxIEBAIHNlbGVjdG9yOgogICAgICAgICAg
ICAgZW5kLT5zZXRUYWdIaXN0b3J5KHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsK
ICAgICAgICAgfQogICAgIH0KKyAgICB8IHNlbGVjdG9yIHJlZmVyZW5jZV9jb21iaW5hdG9yIHNp
bXBsZV9zZWxlY3RvciB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiUmVmZXJlbmNlIENvbWJp
bmF0b3IhXG4iKTsKKyAgICAgICAgJCQgPSAkMzsKKyAgICAgICAgaWYgKCEkMSkKKyAgICAgICAg
ICAgICQkID0gMDsKKyAgICAgICAgZWxzZSBpZiAoJCQpIHsKKyAgICAgICAgICAgIENTU1BhcnNl
clNlbGVjdG9yKiBlbmQgPSAkJDsKKyAgICAgICAgICAgIHdoaWxlIChlbmQtPnRhZ0hpc3Rvcnko
KSkKKyAgICAgICAgICAgICAgICBlbmQgPSBlbmQtPnRhZ0hpc3RvcnkoKTsKKyAgICAgICAgICAg
IGZwcmludGYoc3RkZXJyLCAiUmVmZXJlbmNlIENvbWJpbmF0b3IgMiFcbiIpOworICAgICAgICAg
ICAgZW5kLT5zZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6UmVmZXJlbmNlKTsKKyAgICAgICAgICAg
IGVuZC0+c2V0UmVmZXJlbmNlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQyLCBudWxsQXRvbSkp
OworICAgICAgICAgICAgZW5kLT5zZXRUYWdIaXN0b3J5KHBhcnNlci0+c2lua0Zsb2F0aW5nU2Vs
ZWN0b3IoJDEpKTsKKyAgICAgICAgfSAKKyAgICB9CiAgICAgfCBzZWxlY3RvciBlcnJvciB7CiAg
ICAgICAgICQkID0gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyVmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKaW5k
ZXggZDNmYzQwMzUzMDI5ZmYwYTI3ZDlhZTViOWQ0YzA2YTljN2U5MjI4Mi4uYjQwYTFiM2RmYTA5
OWM0ZWRkY2EyNWI3MjhlMmYyMjQzZmJlOWI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlclZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJW
YWx1ZXMuaApAQCAtMTg3LDYgKzE4Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1hdGNoKENT
U1NlbGVjdG9yOjpNYXRjaCB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5tX21hdGNoID0gdmFsdWU7IH0K
ICAgICB2b2lkIHNldFJlbGF0aW9uKENTU1NlbGVjdG9yOjpSZWxhdGlvbiB2YWx1ZSkgeyBtX3Nl
bGVjdG9yLT5tX3JlbGF0aW9uID0gdmFsdWU7IH0KICAgICB2b2lkIHNldEZvclBhZ2UoKSB7IG1f
c2VsZWN0b3ItPnNldEZvclBhZ2UoKTsgfQorICAgIHZvaWQgc2V0UmVmZXJlbmNlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHZhbHVlKSB7IG1fc2VsZWN0b3ItPnNldFJlZmVyZW5jZSh2YWx1ZSk7IH0K
IAogICAgIHZvaWQgYWRvcHRTZWxlY3RvclZlY3RvcihDU1NTZWxlY3RvclZlY3RvciYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCAyZTMzN2FkODA0ZjgxZDQ3NGM0MWE4Mjhk
YTI2OWVhNGFmMTc3ZmIxLi40YmYzOWI3MmViODYwNjdkMzhkMGQ3OWIyNjcwZmM5YzM3YWNkYzIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKQEAgLTY0MCw2ICs2NDAsMTAgQEAgU3Ry
aW5nIENTU1NlbGVjdG9yOjpzZWxlY3RvclRleHQoKSBjb25zdAogICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rlc2NlbmRh
bnQ6CiAgICAgICAgICAgICByZXR1cm4gdGFnSGlzdG9yeVRleHQgKyBzdHIudG9TdHJpbmcoKTsK
KyAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UmVmZXJlbmNlOgorICAgICAgICAgICAgLy8gZml4
bWUKKyAgICAgICAgICAgIHJldHVybiB0YWdIaXN0b3J5VGV4dCArICIgLyIgKyBjcy0+cmVmZXJl
bmNlKCkudG9TdHJpbmcoKSArICIvICIgKyAgc3RyLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAv
LyByZXR1cm4gdGFnSGlzdG9yeVRleHQgKyAiIC9zZWxlY3QvICIgKyAgc3RyLnRvU3RyaW5nKCk7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY1Miw2ICs2NTYsMTIgQEAgdm9pZCBDU1NTZWxlY3Rv
cjo6c2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHZhbHVlKQogICAgIG1fZGF0YS5t
X3JhcmVEYXRhLT5tX2F0dHJpYnV0ZSA9IHZhbHVlOwogfQogCit2b2lkIENTU1NlbGVjdG9yOjpz
ZXRSZWZlcmVuY2UoY29uc3QgUXVhbGlmaWVkTmFtZSYgdmFsdWUpCit7CisgICAgY3JlYXRlUmFy
ZURhdGEoKTsKKyAgICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fcmVmZXJlbmNlID0gdmFsdWU7Cit9
CisKIHZvaWQgQ1NTU2VsZWN0b3I6OnNldEFyZ3VtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUpCiB7CiAgICAgY3JlYXRlUmFyZURhdGEoKTsKQEAgLTcwNSwxMSArNzE1LDE3IEBAIGJvb2wg
Q1NTU2VsZWN0b3I6OmlzU2ltcGxlKCkgY29uc3QKICAgICByZXR1cm4gbnVtQ29uZGl0aW9ucyA8
PSAxOwogfQogCit2b2lkIENTU1NlbGVjdG9yOjpkdW1wKCkgY29uc3QKK3sKKyAgICBmcHJpbnRm
KHN0ZGVyciwgInNlbGVjdG9yOiAlcyBcbiIsIHNlbGVjdG9yVGV4dCgpLnV0ZjgoKS5kYXRhKCkp
OworfQorCiBDU1NTZWxlY3Rvcjo6UmFyZURhdGE6OlJhcmVEYXRhKFBhc3NSZWZQdHI8QXRvbWlj
U3RyaW5nSW1wbD4gdmFsdWUpCiAgICAgOiBtX3ZhbHVlKHZhbHVlLmxlYWtSZWYoKSkKICAgICAs
IG1fYSgwKQogICAgICwgbV9iKDApCiAgICAgLCBtX2F0dHJpYnV0ZShhbnlRTmFtZSgpKQorICAg
ICwgbV9yZWZlcmVuY2UoYW55UU5hbWUoKSkKICAgICAsIG1fYXJndW1lbnQobnVsbEF0b20pCiB7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCmluZGV4IDVjYTI0ZjRlMDMxZGY1M2IxMmUxMmNj
MjUxYmQzOTQzOTRjODgyZGQuLjRkNGYwZmE0ZGZkM2FlOGRiMDJiZTRhYjlhMGZhODU1MGUxNDE1
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCkBAIC03Niw3ICs3Niw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERpcmVjdEFkamFjZW50LAogICAgICAgICAgICAgSW5k
aXJlY3RBZGphY2VudCwKICAgICAgICAgICAgIFN1YlNlbGVjdG9yLAotICAgICAgICAgICAgU2hh
ZG93RGVzY2VuZGFudAorICAgICAgICAgICAgU2hhZG93RGVzY2VuZGFudCwKKyAgICAgICAgICAg
IFJlZmVyZW5jZQogICAgICAgICB9OwogCiAgICAgICAgIGVudW0gUHNldWRvVHlwZSB7CkBAIC0x
OTcsMTIgKzE5OCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEZJWE1FOiBQ
ZXJoYXBzIGNhbGwgc2l0ZXMgY291bGQgYmUgY2hhbmdlZCB0byBhY2NlcHQgQXRvbWljU3RyaW5n
SW1wbD8KICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJu
ICpyZWludGVycHJldF9jYXN0PGNvbnN0IEF0b21pY1N0cmluZyo+KG1faGFzUmFyZURhdGEgPyAm
bV9kYXRhLm1fcmFyZURhdGEtPm1fdmFsdWUgOiAmbV9kYXRhLm1fdmFsdWUpOyB9CiAgICAgICAg
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSgpIGNvbnN0OworICAgICAgICBjb25zdCBR
dWFsaWZpZWROYW1lJiByZWZlcmVuY2UoKSBjb25zdDsKICAgICAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBhcmd1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmFyZURhdGEgPyBtX2RhdGEubV9y
YXJlRGF0YS0+bV9hcmd1bWVudCA6IG51bGxBdG9tOyB9CiAgICAgICAgIENTU1NlbGVjdG9yTGlz
dCogc2VsZWN0b3JMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNSYXJlRGF0YSA/IG1fZGF0YS5t
X3JhcmVEYXRhLT5tX3NlbGVjdG9yTGlzdC5nZXQoKSA6IDA7IH0KIAogICAgICAgICB2b2lkIHNl
dFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJiB2YWx1ZSkgeyBtX3RhZyA9IHZhbHVlOyB9CiAgICAg
ICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgICAgIHZvaWQgc2V0
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICAgICAgdm9pZCBzZXRSZWZlcmVu
Y2UoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgICAgICB2b2lkIHNldEFyZ3VtZW50KGNvbnN0
IEF0b21pY1N0cmluZyYpOwogICAgICAgICB2b2lkIHNldFNlbGVjdG9yTGlzdChQYXNzT3duUHRy
PENTU1NlbGVjdG9yTGlzdD4pOwogCkBAIC0yMTMsNiArMjE2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBib29sIGlzVW5rbm93blBzZXVkb0VsZW1lbnQoKSBjb25zdDsKICAgICAg
ICAgYm9vbCBpc1NpYmxpbmdTZWxlY3RvcigpIGNvbnN0OwogICAgICAgICBib29sIGlzQXR0cmli
dXRlU2VsZWN0b3IoKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc1JlZmVyZW5jZUNvbWJpbmF0b3Io
KSBjb25zdDsKIAogICAgICAgICBSZWxhdGlvbiByZWxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PFJlbGF0aW9uPihtX3JlbGF0aW9uKTsgfQogCkBAIC0yMzAsNiArMjM0LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fbWF0Y2ggICAg
ICA6IDQ7IC8vIGVudW0gTWF0Y2gKICAgICAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3BzZXVkb1R5
cGUgOiA4OyAvLyBQc2V1ZG9UeXBlCiAKKyAgICAgICAgdm9pZCBkdW1wKCkgY29uc3Q7CisKICAg
ICBwcml2YXRlOgogICAgICAgICBib29sIG1fcGFyc2VkTnRoICAgICAgICAgICAgICA6IDE7IC8v
IFVzZWQgZm9yIDpudGgtKgogICAgICAgICBib29sIG1faXNMYXN0SW5TZWxlY3Rvckxpc3QgICA6
IDE7CkBAIC0yNTUsNiArMjYxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
aW50IG1fYTsgLy8gVXNlZCBmb3IgOm50aC0qCiAgICAgICAgICAgICBpbnQgbV9iOyAvLyBVc2Vk
IGZvciA6bnRoLSoKICAgICAgICAgICAgIFF1YWxpZmllZE5hbWUgbV9hdHRyaWJ1dGU7IC8vIHVz
ZWQgZm9yIGF0dHJpYnV0ZSBzZWxlY3RvcgorICAgICAgICAgICAgUXVhbGlmaWVkTmFtZSBtX3Jl
ZmVyZW5jZTsgLy8gdXNlZCBmb3IgcmVmZXJlbmNlIGNvbWJpbmF0b3IKICAgICAgICAgICAgIEF0
b21pY1N0cmluZyBtX2FyZ3VtZW50OyAvLyBVc2VkIGZvciA6Y29udGFpbnMsIDpsYW5nIGFuZCA6
bnRoLSoKICAgICAgICAgICAgIE93blB0cjxDU1NTZWxlY3Rvckxpc3Q+IG1fc2VsZWN0b3JMaXN0
OyAvLyBVc2VkIGZvciA6LXdlYmtpdC1hbnkgYW5kIDpub3QKICAgICAgICAgCkBAIC0yNzksNiAr
Mjg2LDEzIEBAIGlubGluZSBjb25zdCBRdWFsaWZpZWROYW1lJiBDU1NTZWxlY3Rvcjo6YXR0cmli
dXRlKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhLm1fcmFyZURhdGEtPm1fYXR0cmlidXRlOwog
fQogCitpbmxpbmUgY29uc3QgUXVhbGlmaWVkTmFtZSYgQ1NTU2VsZWN0b3I6OnJlZmVyZW5jZSgp
IGNvbnN0Cit7CisgICBBU1NFUlQoaXNSZWZlcmVuY2VDb21iaW5hdG9yKCkpOworICAgQVNTRVJU
KG1faGFzUmFyZURhdGEpOworICAgcmV0dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5tX3JlZmVyZW5j
ZTsKK30KKwogaW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6Om1hdGNoZXNQc2V1ZG9FbGVtZW50KCkg
Y29uc3QKIHsKICAgICBpZiAobV9wc2V1ZG9UeXBlID09IFBzZXVkb1Vua25vd24pCkBAIC0zMjAs
NiArMzM0LDExIEBAIGlubGluZSBib29sIENTU1NlbGVjdG9yOjppc0F0dHJpYnV0ZVNlbGVjdG9y
KCkgY29uc3QKICAgICAgICAgfHwgbV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6RW5kOwogfQogCitp
bmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6aXNSZWZlcmVuY2VDb21iaW5hdG9yKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9yZWxhdGlvbiA9PSBDU1NTZWxlY3Rvcjo6UmVmZXJlbmNlOworfQorCiBp
bmxpbmUgdm9pZCBDU1NTZWxlY3Rvcjo6c2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSkKIHsKICAgICAvLyBOZWVkIHRvIGRvIHJlZiBjb3VudGluZyBtYW51YWxseSBmb3IgdGhlIHVu
aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCmluZGV4IGQyY2UxMTM0YzYzZjlm
Njc2MWQ3YmNlNmIzMGI3ZDE5NjZmZGI4YmQuLjZiMjA5M2YzZGU0NGQzMDFhMjI1MjdhNDgwOGM5
ZmQ4ZDQ1YjJiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxp
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgKQEAgLTYzLDYg
KzYzLDEwIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBzZWxlY3RvcnNUZXh0KCkgY29uc3Q7CiAK
KyAgICB2b2lkIGR1bXAoKSBjb25zdCB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ1NTU2Vs
ZWN0b3JMaXN0OiAlc1xuIiwgc2VsZWN0b3JzVGV4dCgpLnV0ZjgoKS5kYXRhKCkpOworICAgIH0K
KwogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0Owog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCmluZGV4IGY3NWY0ZjQyNWJkZmYxMDFjZjc2
OTQxZDZhMmNjNTllZTEyMWYyYzEuLjQ3NzEzNGE0OWE5NjM2MDY4NjM2MjdkZmVhMzMyN2M0MzE3
OTFiMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKQEAgLTE3OCw2ICsxNzgsMzcgQEAgc3RhdGlj
IGlubGluZSB2b2lkIGNvbGxlY3RGZWF0dXJlc0Zyb21TZWxlY3RvcihSdWxlRmVhdHVyZVNldCYg
ZmVhdHVyZXMsIGNvbnN0IEMKICAgICB9CiB9CiAKK3ZvaWQgUnVsZVNldDo6ZHVtcFJ1bGVEYXRh
VmVjdG9yKGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4mIHJ1bGVzKSBjb25zdAoreworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcnVsZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZnByaW50Zihz
dGRlcnIsICIgICAgICAiKTsKKyAgICAgICAgcnVsZXNbaV0ucnVsZSgpLT5kdW1wKCk7CisgICAg
fQorfQorCit2b2lkIFJ1bGVTZXQ6OmR1bXBSdWxlTWFwKGNvbnN0IEF0b21SdWxlTWFwJiBydWxl
TWFwKSBjb25zdAoreworICAgIGZvciAoQXRvbVJ1bGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIg
PSBydWxlTWFwLmJlZ2luKCk7IGl0ZXIgIT0gcnVsZU1hcC5lbmQoKTsgKytpdGVyKSB7CisgICAg
ICAgIEF0b21pY1N0cmluZyBrKGl0ZXItPmtleSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
ICAgID4+IGtleTo6JXNcbiIsIGsuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGR1
bXBSdWxlRGF0YVZlY3RvcigqaXRlci0+dmFsdWUuZ2V0KCkpOworICAgIH0KK30KKwordm9pZCBS
dWxlU2V0OjpkdW1wKCkgY29uc3QKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgIj4+IFJ1bGVTZXQ6
OmR1bXBcbiIpOworCisgICAgZnByaW50ZihzdGRlcnIsICIgID4+IGlkUnVsZXM6XG4iKTsKKyAg
ICBkdW1wUnVsZU1hcChtX2lkUnVsZXMpOworCisgICAgZnByaW50ZihzdGRlcnIsICIgID4+IGNs
YXNzUnVsZXM6XG4iKTsKKyAgICBkdW1wUnVsZU1hcChtX2NsYXNzUnVsZXMpOworCisgICAgZnBy
aW50ZihzdGRlcnIsICIgID4+IHRhZ1J1bGVzOlxuIik7CisgICAgZHVtcFJ1bGVNYXAobV90YWdS
dWxlcyk7Cit9CisKIHN0YXRpYyB2b2lkIGNvbGxlY3RGZWF0dXJlc0Zyb21SdWxlRGF0YShSdWxl
RmVhdHVyZVNldCYgZmVhdHVyZXMsIGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkKIHsKICAgICBi
b29sIGZvdW5kU2libGluZ1NlbGVjdG9yID0gZmFsc2U7CkBAIC0yMTEsNiArMjQyLDcgQEAgdm9p
ZCBSdWxlU2V0OjphZGRUb1J1bGVTZXQoQXRvbWljU3RyaW5nSW1wbCoga2V5LCBBdG9tUnVsZU1h
cCYgbWFwLCBjb25zdCBSdWxlRGEKIAogdm9pZCBSdWxlU2V0OjphZGRSdWxlKFN0eWxlUnVsZSog
cnVsZSwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCwgQWRkUnVsZUZsYWdzIGFkZFJ1bGVGbGFncykK
IHsKKyAgICAvLyBGSVhNRTogaGF5YXRvOiBJZiB3ZSBmb3VuZCAvc2VsZWN0LyBydWxlLCB3ZSBz
aG91bGQgYWRkIHRoZSBydWxlIHRvIHRoZSBzaGFkb3cgaG9zdCdzIFJ1bGVTZXQoKS4KICAgICBS
dWxlRGF0YSBydWxlRGF0YShydWxlLCBzZWxlY3RvckluZGV4LCBtX3J1bGVDb3VudCsrLCBhZGRS
dWxlRmxhZ3MpOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBhdGhvc3RSdWxlU3BlY2lmaWNp
dHkgPSAweDEwMDAwMDsKIApAQCAtMjc3LDYgKzMwOSw3IEBAIHZvaWQgUnVsZVNldDo6YWRkUmVn
aW9uUnVsZShTdHlsZVJ1bGVSZWdpb24qIHJlZ2lvblJ1bGUsIGJvb2wgaGFzRG9jdW1lbnRTZWN1
cml0CiAgICAgICAgIFN0eWxlUnVsZUJhc2UqIHJlZ2lvblN0eWxpbmdSdWxlID0gY2hpbGRSdWxl
c1tpXS5nZXQoKTsKICAgICAgICAgaWYgKHJlZ2lvblN0eWxpbmdSdWxlLT5pc1N0eWxlUnVsZSgp
KQogICAgICAgICAgICAgcmVnaW9uUnVsZVNldC0+YWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0PFN0
eWxlUnVsZSo+KHJlZ2lvblN0eWxpbmdSdWxlKSwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAgLy8g
cmVnaW9uUnVsZVNldC0+YWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0PFN0eWxlUnVsZSo+KHJlZ2lv
blN0eWxpbmdSdWxlKSwgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgdHJ1ZSwgdHJ1ZSwgMCwg
MCk7CiAgICAgfQogICAgIC8vIFVwZGF0ZSB0aGUgImdsb2JhbCIgcnVsZSBjb3VudCBzbyB0aGF0
IHByb3BlciBvcmRlciBpcyBtYWludGFpbmVkCiAgICAgbV9ydWxlQ291bnQgPSByZWdpb25SdWxl
U2V0LT5tX3J1bGVDb3VudDsKQEAgLTI4NCw2ICszMTcsMjAgQEAgdm9pZCBSdWxlU2V0OjphZGRS
ZWdpb25SdWxlKFN0eWxlUnVsZVJlZ2lvbiogcmVnaW9uUnVsZSwgYm9vbCBoYXNEb2N1bWVudFNl
Y3VyaXQKICAgICBtX3JlZ2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzLmFwcGVuZChSdWxlU2V0U2Vs
ZWN0b3JQYWlyKHJlZ2lvblJ1bGUtPnNlbGVjdG9yTGlzdCgpLmZpcnN0KCksIHJlZ2lvblJ1bGVT
ZXQucmVsZWFzZSgpKSk7CiB9CiAKK3N0YXRpYyBib29sIGluY2x1ZGVzU2VsZWN0UmVmZXJlbmNl
Q29tYmluYXRvcihjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCkKK3sKKyAgICBm
cHJpbnRmKHN0ZGVyciwgImluY2x1ZGVzU2hhZG93U2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvciA+
PlxuIik7CisgICAgZm9yIChjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rvckxp
c3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKSkg
eworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiA+PiBzZWxlY3RvcjogJXAgXG4iLCBzZWxlY3Rv
cik7CisgICAgICAgIGlmIChzZWxlY3Rvci0+aXNSZWZlcmVuY2VDb21iaW5hdG9yKCkpIHsKKyAg
ICAgICAgICAgIGlmIChzZWxlY3Rvci0+cmVmZXJlbmNlKCkgPT0gInNlbGVjdCIpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQo
U3R5bGVTaGVldENvbnRlbnRzKiBzaGVldCwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgbWVk
aXVtLCBTdHlsZVJlc29sdmVyKiByZXNvbHZlciwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUp
CiB7CiAgICAgQVNTRVJUKHNoZWV0KTsKQEAgLTMwMiw4ICszNDksMTcgQEAgdm9pZCBSdWxlU2V0
OjphZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVudHMqIHNoZWV0LCBjb25zdCBNZWRp
YVF1ZXJ5RXZhbHUKICAgICAgICAgU3R5bGVSdWxlQmFzZSogcnVsZSA9IHJ1bGVzW2ldLmdldCgp
OwogCiAgICAgICAgIEFTU0VSVCghcnVsZS0+aXNJbXBvcnRSdWxlKCkpOwotICAgICAgICBpZiAo
cnVsZS0+aXNTdHlsZVJ1bGUoKSkKLSAgICAgICAgICAgIGFkZFN0eWxlUnVsZShzdGF0aWNfY2Fz
dDxTdHlsZVJ1bGUqPihydWxlKSwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAgaWYgKHJ1bGUtPmlz
U3R5bGVSdWxlKCkpIHsKKyAgICAgICAgICAgIFN0eWxlUnVsZSogc3R5bGVSdWxlID0gc3RhdGlj
X2Nhc3Q8U3R5bGVSdWxlKj4ocnVsZSk7CisgICAgICAgICAgICBpZiAoc2NvcGUgJiYgaW5jbHVk
ZXNTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yKHN0eWxlUnVsZS0+c2VsZWN0b3JMaXN0KCkpKSB7
CisgICAgICAgICAgICAgICAgLy8gU2NvcGUgKHNoYWRvdyByb290KSBtaWdodCBiZSBmcmVlZWQu
Li4uCisgICAgICAgICAgICAgICAgLy8gcmVzb2x2ZXItPmFkZFNlbGVjdFJlZmVyZW5jZUNvbWJp
bmF0b3JSdWxlKHN0eWxlUnVsZSwgYWRvcHRSZWYoY29uc3RfY2FzdDxDb250YWluZXJOb2RlKj4o
c2NvcGUpKSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZXItPmFkZFNlbGVjdFJlZmVyZW5jZUNv
bWJpbmF0b3JSdWxlKHN0eWxlUnVsZSwgY29uc3RfY2FzdDxDb250YWluZXJOb2RlKj4oc2NvcGUp
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFR1cm4g
ZmxhZyB3aGVuIHBhcnNpbmcuCisgICAgICAgICAgICAgICAgYWRkU3R5bGVSdWxlKHN0eWxlUnVs
ZSwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBlbHNl
IGlmIChydWxlLT5pc1BhZ2VSdWxlKCkpCiAgICAgICAgICAgICBhZGRQYWdlUnVsZShzdGF0aWNf
Y2FzdDxTdHlsZVJ1bGVQYWdlKj4ocnVsZSkpOwogICAgICAgICBlbHNlIGlmIChydWxlLT5pc01l
ZGlhUnVsZSgpKSB7CkBAIC0zMTYsNiArMzcyLDcgQEAgdm9pZCBSdWxlU2V0OjphZGRSdWxlc0Zy
b21TaGVldChTdHlsZVNoZWV0Q29udGVudHMqIHNoZWV0LCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHUK
ICAgICAgICAgICAgICAgICAgICAgU3R5bGVSdWxlQmFzZSogY2hpbGRSdWxlID0gY2hpbGRSdWxl
c1tqXS5nZXQoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkUnVsZS0+aXNTdHlsZVJ1
bGUoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFN0eWxlUnVsZShzdGF0aWNfY2FzdDxT
dHlsZVJ1bGUqPihjaGlsZFJ1bGUpLCBhZGRSdWxlRmxhZ3MpOworICAgICAgICAgICAgICAgICAg
ICAvLyBhZGRTdHlsZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlKj4oY2hpbGRSdWxlKSwgaGFz
RG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgIXNjb3BlLCBmYWxzZSwgcmVzb2x2ZXIsIHNjb3BlKTsK
ICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGRSdWxlLT5pc1BhZ2VSdWxlKCkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICBhZGRQYWdlUnVsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGVQ
YWdlKj4oY2hpbGRSdWxlKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkUnVs
ZS0+aXNGb250RmFjZVJ1bGUoKSAmJiByZXNvbHZlcikgewpAQCAtMzY2LDcgKzQyMywyMiBAQCB2
b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyogc2hlZXQs
IGNvbnN0IE1lZGlhUXVlcnlFdmFsdQogICAgICAgICBzaHJpbmtUb0ZpdCgpOwogfQogCisvL3Zv
aWQgUnVsZVNldDo6YWRkU3R5bGVSdWxlKFN0eWxlUnVsZSogcnVsZSwgQWRkUnVsZUZsYWdzIGFk
ZFJ1bGVGbGFncywgU3R5bGVSZXNvbHZlciogcmVzb2x2ZXIsIGNvbnN0IENvbnRhaW5lck5vZGUq
IHNjb3BlKQorLy97CisvLyAgICAvLyBGSVhNRTogaGF5YXRvOiBBZGQgUnVsZSB0byB0aGUgU2hh
ZG93IEhvc3QncyBSdWxlU2V0Pz8/CisvLyAgICBpZiAoc2NvcGUgJiYgaW5jbHVkZXNTaGFkb3dT
ZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yKHJ1bGUtPnNlbGVjdG9yTGlzdCgpKSkgeworLy8gICAg
ICAgIGlmIChFbGVtZW50KiBzaGFkb3dIb3N0ID0gc2NvcGUtPnNoYWRvd0hvc3QoKSkgeworLy8g
ICAgICAgICAgICBpZiAocmVzb2x2ZXIpCisvLyAgICAgICAgICAgICAgICByZXNvbHZlci0+ZW5z
dXJlUnVsZVNldEZvcihzaGFkb3dIb3N0KS0+YWRkU3R5bGVSdWxlSW50ZXJuYWwocnVsZSwgYWRk
UnVsZUZsYWdzKTsKKy8vICAgICAgICB9CisvLyAgICAgICAgcmV0dXJuOworLy8gICAgfQorLy8g
ICAgYWRkU3R5bGVSdWxlSW50ZXJuYWwocnVsZSwgYWRkUnVsZUZsYWdzKTsKKy8vfQorCisvLyBG
SVhNRTogaGF5YXRvIFJlbmFtZQogdm9pZCBSdWxlU2V0OjphZGRTdHlsZVJ1bGUoU3R5bGVSdWxl
KiBydWxlLCBBZGRSdWxlRmxhZ3MgYWRkUnVsZUZsYWdzKQorICAgICAgICAvLyB2b2lkIFJ1bGVT
ZXQ6OmFkZFN0eWxlUnVsZUludGVybmFsKFN0eWxlUnVsZSogcnVsZSwgYm9vbCBoYXNEb2N1bWVu
dFNlY3VyaXR5T3JpZ2luLCBib29sIGNhblVzZUZhc3RDaGVja1NlbGVjdG9yLCBib29sIGlzSW5S
ZWdpb25SdWxlLCBTdHlsZVJlc29sdmVyKiByZXNvbHZlciwgY29uc3QgQ29udGFpbmVyTm9kZSog
c2NvcGUpCiB7CiAgICAgZm9yIChzaXplX3Qgc2VsZWN0b3JJbmRleCA9IDA7IHNlbGVjdG9ySW5k
ZXggIT0gbm90Rm91bmQ7IHNlbGVjdG9ySW5kZXggPSBydWxlLT5zZWxlY3Rvckxpc3QoKS5pbmRl
eE9mTmV4dFNlbGVjdG9yQWZ0ZXIoc2VsZWN0b3JJbmRleCkpCiAgICAgICAgIGFkZFJ1bGUocnVs
ZSwgc2VsZWN0b3JJbmRleCwgYWRkUnVsZUZsYWdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9SdWxlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5oCmluZGV4IGEy
ZmJlY2JjMDBiMmNhMWI1MzJmNDk2YTk1YzA5MzUwMjZmYTRmN2QuLjQ2NWI2ZjVkZmU4NmNhODVk
OWVhMDMxMWY3ZDJmZTQ1NTBjMzZlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9S
dWxlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaApAQCAtMTA4LDcgKzEw
OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29u
dGVudHMqLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiwgU3R5bGVSZXNvbHZlciogPSAwLCBj
b25zdCBDb250YWluZXJOb2RlKiA9IDApOwogCiAgICAgdm9pZCBhZGRTdHlsZVJ1bGUoU3R5bGVS
dWxlKiwgQWRkUnVsZUZsYWdzKTsKKyAgICAvLyB2b2lkIGFkZFN0eWxlUnVsZShTdHlsZVJ1bGUq
LCBBZGRSdWxlRmxhZ3MsIFN0eWxlUmVzb2x2ZXIqID0gMCwgY29uc3QgQ29udGFpbmVyTm9kZSog
c2NvcGUgPSAwKTsKICAgICB2b2lkIGFkZFJ1bGUoU3R5bGVSdWxlKiwgdW5zaWduZWQgc2VsZWN0
b3JJbmRleCwgQWRkUnVsZUZsYWdzKTsKKyAgICAvLyB2b2lkIGFkZFN0eWxlUnVsZShTdHlsZVJ1
bGUqLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIGJvb2wgY2FuVXNlRmFzdENoZWNr
U2VsZWN0b3IsIGJvb2wgaXNJblJlZ2lvblJ1bGUgPSBmYWxzZSwgU3R5bGVSZXNvbHZlciogPSAw
LCBjb25zdCBDb250YWluZXJOb2RlKiA9IDApOworICAgIC8vIHZvaWQgYWRkUnVsZShTdHlsZVJ1
bGUqLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmln
aW4sIGJvb2wgY2FuVXNlRmFzdENoZWNrU2VsZWN0b3IsIGJvb2wgaXNJblJlZ2lvblJ1bGUgPSBm
YWxzZSk7CiAgICAgdm9pZCBhZGRQYWdlUnVsZShTdHlsZVJ1bGVQYWdlKik7CiAgICAgdm9pZCBh
ZGRUb1J1bGVTZXQoQXRvbWljU3RyaW5nSW1wbCoga2V5LCBBdG9tUnVsZU1hcCYsIGNvbnN0IFJ1
bGVEYXRhJik7CiAgICAgdm9pZCBhZGRSZWdpb25SdWxlKFN0eWxlUnVsZVJlZ2lvbiosIGJvb2wg
aGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbik7CkBAIC0xMjYsNiArMTI5LDEwIEBAIHB1YmxpYzoK
ICAgICBjb25zdCBWZWN0b3I8UnVsZURhdGE+KiB1bml2ZXJzYWxSdWxlcygpIGNvbnN0IHsgcmV0
dXJuICZtX3VuaXZlcnNhbFJ1bGVzOyB9CiAgICAgY29uc3QgVmVjdG9yPFN0eWxlUnVsZVBhZ2Uq
PiYgcGFnZVJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlUnVsZXM7IH0KIAorICAgIHZvaWQg
ZHVtcCgpIGNvbnN0OworICAgIHZvaWQgZHVtcFJ1bGVNYXAoY29uc3QgQXRvbVJ1bGVNYXAmKSBj
b25zdDsKKyAgICB2b2lkIGR1bXBSdWxlRGF0YVZlY3Rvcihjb25zdCBWZWN0b3I8UnVsZURhdGE+
JikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
KSBjb25zdDsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVj
dG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApp
bmRleCBiNjYwNTBmZTQ3NTA3MjNkNzE0YWM1OTYwZDg4MzJmZGQ4YjUzMDZkLi4zOTlhZmY3NzBj
NDhlY2E1MmVjMzIxNmU0MWQ4ZjI4ZWZiODUwMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JDaGVja2VyLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTFByb2dyZXNzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxT
dHlsZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTE5NCw2ICsxOTUsNyBAQCB2b2lkIFNlbGVjdG9yQ2hlY2tl
cjo6Y29sbGVjdElkZW50aWZpZXJIYXNoZXMoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCB1
bnNpZwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRlc2Nl
bmRhbnQ6CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkNoaWxkOgorICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpSZWZlcmVuY2U6CiAgICAgICAgICAgICBza2lwT3ZlclN1YnNlbGVjdG9ycyA9
IGZhbHNlOwogICAgICAgICAgICAgY29sbGVjdERlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJI
YXNoZXMoc2VsZWN0b3IsIGhhc2gsIGVuZCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU3Myw2
ICs1NzUsMzkgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tl
cjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWMKICAgICAgICAgICAgIG5leHRDb250
ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9IDA7CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxl
Y3RvcihuZXh0Q29udGV4dCwgaWdub3JlRHluYW1pY1BzZXVkbyk7CiAgICAgICAgIH0KKworICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlJlZmVyZW5jZToKKyAgICAgICAgeworICAgICAgICAgICAgLy8g
cmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OworCisgICAgICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIiAgICoqKiBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3I6IE1lZXRzIENTU1Nl
bGVjdG9yOjpSZWZlcmVuY2UgXG4iKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBEZWZpbmUgInNl
bGVjdCIgYXMgY29uc3RhbnQgc29tZXdoZXJlLgorICAgICAgICAgICAgaWYgKGNvbnRleHQuc2Vs
ZWN0b3ItPnJlZmVyZW5jZSgpICE9ICJzZWxlY3QiKQorICAgICAgICAgICAgICAgIHJldHVybiBT
ZWxlY3RvckZhaWxzQ29tcGxldGVseTsKKyAgICAgICAgICAgIC8vIFRPRE8oaGF5YXRvKToKKwor
ICAgICAgICAgICAgVmVjdG9yPEluc2VydGlvblBvaW50Kj4gaW5zZXJ0aW9uUG9pbnRzOworICAg
ICAgICAgICAgY29sbGVjdEFsbE1pZHBvaW50SW5zZXJ0aW9uUG9pbnRzKGNvbnRleHQuZWxlbWVu
dCwgaW5zZXJ0aW9uUG9pbnRzKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
aW5zZXJ0aW9uUG9pbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgZnByaW50Zihz
dGRlcnIsICIgICAqKiogU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yOiBDU1NTZWxlY3Rv
cjo6UmVmZXJlbmNlIGluc2VydGlvblBvaW50IFslbGRdXG4iLCBpKTsKKyAgICAgICAgICAgICAg
ICAvLyBTZWxlY3RvckNoZWNraW5nQ29udGV4dCBuZXh0Q29udGV4dChjb250ZXh0KTsKKyAgICAg
ICAgICAgICAgICAvLyBuZXh0Q29udGV4dC5zZWxlY3RvciA9IGhpc3RvcnlTZWxlY3RvcjsKKyAg
ICAgICAgICAgICAgICBuZXh0Q29udGV4dC5lbGVtZW50ID0gaW5zZXJ0aW9uUG9pbnRzW2ldOwor
ICAgICAgICAgICAgICAgIG5leHRDb250ZXh0LmlzU3ViU2VsZWN0b3IgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICBuZXh0Q29udGV4dC5lbGVtZW50U3R5bGUgPSAwOworICAgICAgICAgICAgICAg
IG5leHRDb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9IDA7CisgICAgICAgICAgICAgICAgLy8g
RklYTUU6IFdlIG5lZWQgdG8gY2hlY2sgdGhlIGZpbmFsIG5vZGUgaXMgaW5zaWRlIG9mIHNjb3Bl
IHdoZXJlIGEKKyAgICAgICAgICAgICAgICAvLyBydWxlIGlzIGRlZmluZWQuLgorICAgICAgICAg
ICAgICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKG5leHRDb250ZXh0LCBp
Z25vcmVEeW5hbWljUHNldWRvKTsKKyAgICAgICAgICAgICAgICBpZiAobWF0Y2ggPT0gU2VsZWN0
b3JNYXRjaGVzIHx8IG1hdGNoID09IFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5KSB7CisgICAgICAg
ICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgICAqKiogU2VsZWN0b3JDaGVja2VyOjpjaGVja1Nl
bGVjdG9yOiBDU1NTZWxlY3Rvcjo6UmVmZXJlbmNlIGluc2VydGlvblBvaW50IFslbGRdIFJldHVy
bnNcbiIsIGkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAgKioqIFNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tTZWxlY3RvcjogQ1NTU2VsZWN0b3I6OlJlZmVyZW5jZSBpbnNlcnRpb25Q
b2ludCBbJWxkXSBGYWlsc1xuIiwgaSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIiAgICoqKiBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3I6IENTU1Nl
bGVjdG9yOjpSZWZlcmVuY2UgRmFpbCBjb21wbGV0ZWx5c1xuIik7CisgICAgICAgICAgICByZXR1
cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA3
Y2NkZmZmZDcwNjQ1YjYxZjE2YzZjNzE0ZjRjYzJlMDc0MWYwY2U3Li5iMDQ1YTQ2OTUzNGJmOWNk
Yzc5ZDk4MGZmMWI2MzFjMWU5OTMyY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCkBAIC0zODYsMTAgKzM4NiwzNCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RGZWF0
dXJlcygpCiAgICAgbV91bmNvbW1vbkF0dHJpYnV0ZVJ1bGVTZXQgPSBtYWtlUnVsZVNldChtX2Zl
YXR1cmVzLnVuY29tbW9uQXR0cmlidXRlUnVsZXMpOwogfQogCisvL3ZvaWQgU3R5bGVSZXNvbHZl
cjo6Y29sbGVjdFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlcygpCisvL3sKKy8vICAgIG1f
cmVmZXJlbmNlQ29tYmluYXRvclJ1bGVTZXQuY2xlYXIoKTsKKy8vCisvLworLy8gICAgLy8gQ29s
bGVjdCBhbGwgaWRzIGFuZCBydWxlcyB1c2luZyBzaWJsaW5nIHNlbGVjdG9ycyAoOmZpcnN0LWNo
aWxkIGFuZCBzaW1pbGFyKQorLy8gICAgLy8gaW4gdGhlIGN1cnJlbnQgc2V0IG9mIHN0eWxlc2hl
ZXRzLiBTdHlsZSBzaGFyaW5nIGNvZGUgdXNlcyB0aGlzIGluZm9ybWF0aW9uIHRvIHJlamVjdAor
Ly8gICAgLy8gc2hhcmluZyBjYW5kaWRhdGVzLgorLy8gICAgbV9mZWF0dXJlcy5hZGQoZGVmYXVs
dFN0eWxlLT5mZWF0dXJlcygpKTsKKy8vICAgIG1fZmVhdHVyZXMuYWRkKG1fYXV0aG9yU3R5bGUt
PmZlYXR1cmVzKCkpOworLy8gICAgaWYgKG1fc2NvcGVSZXNvbHZlcikKKy8vICAgICAgICBtX3Nj
b3BlUmVzb2x2ZXItPmNvbGxlY3RGZWF0dXJlc1RvKG1fZmVhdHVyZXMpOworLy8gICAgaWYgKG1f
dXNlclN0eWxlKQorLy8gICAgICAgIG1fZmVhdHVyZXMuYWRkKG1fdXNlclN0eWxlLT5mZWF0dXJl
cygpKTsKKy8vCisvLyAgICBtX3NpYmxpbmdSdWxlU2V0ID0gbWFrZVJ1bGVTZXQobV9mZWF0dXJl
cy5zaWJsaW5nUnVsZXMpOworLy8gICAgbV91bmNvbW1vbkF0dHJpYnV0ZVJ1bGVTZXQgPSBtYWtl
UnVsZVNldChtX2ZlYXR1cmVzLnVuY29tbW9uQXR0cmlidXRlUnVsZXMpOworLy99CisKKwogdm9p
ZCBTdHlsZVJlc29sdmVyOjpyZXNldEF1dGhvclN0eWxlKCkKIHsKICAgICBtX2F1dGhvclN0eWxl
ID0gUnVsZVNldDo6Y3JlYXRlKCk7CiAgICAgbV9hdXRob3JTdHlsZS0+ZGlzYWJsZUF1dG9TaHJp
bmtUb0ZpdCgpOworCisgICAgLy8gRklYTUU6IHRlbXBvcmFyeSBjb21tZW50IG91dAorICAgICBt
X3NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0ID0gUnVsZVNldDo6Y3JlYXRlKCk7Cisg
ICAgIG1fc2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVTZXQtPmRpc2FibGVBdXRvU2hyaW5r
VG9GaXQoKTsKIH0KIAogdm9pZCBTdHlsZVJlc29sdmVyOjphcHBlbmRBdXRob3JTdHlsZVNoZWV0
cyh1bnNpZ25lZCBmaXJzdE5ldywgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+
JiBzdHlsZVNoZWV0cykKQEAgLTQwNiw2ICs0MzAsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFw
cGVuZEF1dGhvclN0eWxlU2hlZXRzKHVuc2lnbmVkIGZpcnN0TmV3LCBjb25zdCBWZWN0b3I8UmVm
UAogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpIHx8IEVOQUJMRShTSEFET1dfRE9NKQogICAgICAg
ICBpZiAoY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUgPSBTdHlsZVNjb3BlUmVzb2x2ZXI6OnNj
b3BlRm9yKGNzc1NoZWV0KSkgewogICAgICAgICAgICAgZW5zdXJlU2NvcGVSZXNvbHZlcigpLT5l
bnN1cmVSdWxlU2V0Rm9yKHNjb3BlKS0+YWRkUnVsZXNGcm9tU2hlZXQoc2hlZXQsICptX21lZGl1
bSwgdGhpcywgc2NvcGUpOworICAgICAgICAgICAgLy8gY29sbGVjdFNlbGVjdFJlZmVyZW5jZUNv
bWJpbmF0b3JSdWxlcyhzaGVldCwgc2NvcGUpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KICNlbmRpZgpAQCAtNDE1LDYgKzQ0MCw4IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBw
ZW5kQXV0aG9yU3R5bGVTaGVldHModW5zaWduZWQgZmlyc3ROZXcsIGNvbnN0IFZlY3RvcjxSZWZQ
CiAgICAgICAgICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyhtX3N0eWxlUnVsZVRvQ1NTT01XcmFw
cGVyTWFwLCBjc3NTaGVldCk7CiAgICAgfQogICAgIG1fYXV0aG9yU3R5bGUtPnNocmlua1RvRml0
KCk7CisKKwogICAgIGNvbGxlY3RGZWF0dXJlcygpOwogICAgIAogICAgIGlmIChkb2N1bWVudCgp
LT5yZW5kZXJlcigpICYmIGRvY3VtZW50KCktPnJlbmRlcmVyKCktPnN0eWxlKCkpCkBAIC00NzAs
NiArNDk3LDE1IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHlsZShQYXNzUmVm
UHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gcnVsZSkKICAgICBtX2tleWZyYW1lc1J1bGVNYXAuc2V0
KHMuaW1wbCgpLCBydWxlKTsKIH0KIAordm9pZCBTdHlsZVJlc29sdmVyOjphZGRTZWxlY3RSZWZl
cmVuY2VDb21iaW5hdG9yUnVsZShTdHlsZVJ1bGUqIHJ1bGUsIENvbnRhaW5lck5vZGUqIHNjb3Bl
KQoreworICAgIC8vIFRPRE8oaGF5YXRvKTogUHJvY2VzcyBydWxlLiBVc2Ugc2NvcGUgaW4gdGhl
IGxlZnQtbW9zdCBzZWxlY3Rvci4gTWF5YmUgd2Ugc2hvdWRsIHVzZSBSZWZQdHIuCisKKyAgICAv
LyBGSVhNRTogdGVtcG9yYXJ5IGNvbW1lbnQgb3V0IGZvciBpbnZlc3RpZ2F0ZSBjcmFzaGVzLgor
ICAgIEFTU0VSVChtX3NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0KTsKKyAgICBtX3Nl
bGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0LT5hZGRTdHlsZVJ1bGUocnVsZSwgUnVsZUhh
c05vU3BlY2lhbFN0YXRlKTsKK30KKwogU3R5bGVSZXNvbHZlcjo6flN0eWxlUmVzb2x2ZXIoKQog
ewogICAgIG1fZm9udFNlbGVjdG9yLT5jbGVhckRvY3VtZW50KCk7CkBAIC03MTIsNiArNzQ4LDEw
IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24oUnVs
ZVNldCogcnVsZXMsIGludCYgZmlyc3RSdWxlCiAgICAgfQogfQogCit2b2lkIFN0eWxlUmVzb2x2
ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVmZXJlbmNlQ29tYmluYXRvcihSdWxlU2V0KiBy
dWxlcywgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4LCBjb25zdCBNYXRj
aE9wdGlvbnMmIG9wdGlvbnMpCit7Cit9CisKIHZvaWQgU3R5bGVSZXNvbHZlcjo6c29ydEFuZFRy
YW5zZmVyTWF0Y2hlZFJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQpCiB7CiAgICAgaWYgKG1fbWF0
Y2hlZFJ1bGVzLmlzRW1wdHkoKSkKQEAgLTc0Miw2ICs3ODIsOCBAQCB2b2lkIFN0eWxlUmVzb2x2
ZXI6OnNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0KQogCiB2
b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoU2NvcGVkQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJl
c3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiAg
Pj4gU3R5bGVSZXNvbHZlcjo6bWF0Y2hTY29wZWRBdXRob3JSdWxlc1xuIik7CisKICNpZiBFTkFC
TEUoU1RZTEVfU0NPUEVEKSB8fCBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoIW1fc2NvcGVS
ZXNvbHZlcikKICAgICAgICAgcmV0dXJuOwpAQCAtNzkxLDYgKzgzMyw4IEBAIGlubGluZSBib29s
IFN0eWxlUmVzb2x2ZXI6OnN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNIb3N0UnVsZXMoKQog
CiB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoSG9zdFJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQs
IGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpCiB7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICIgID4+
IFN0eWxlUmVzb2x2ZXI6Om1hdGNoSG9zdFJ1bGVzXG4iKTsKKwogI2lmIEVOQUJMRShTSEFET1df
RE9NKQogICAgIEFTU0VSVChtX3Njb3BlUmVzb2x2ZXIpOwogCkBAIC04MDksMjAgKzg1Myw3MyBA
QCB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoSG9zdFJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQs
IGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpCiAjZW5kaWYKIH0KIAordm9pZCBTdHlsZVJlc29sdmVy
OjptYXRjaFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0
LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQoreworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCisg
ICAgZnByaW50ZihzdGRlcnIsICIgID4+IFN0eWxlUmVzb2x2ZXI6Om1hdGNoU2VsZWN0UmVmZXJl
bmNlQ29tYmluYXRvclJ1bGVzXG4iKTsKKyAgICBNYXRjaE9wdGlvbnMgb3B0aW9ucyhpbmNsdWRl
RW1wdHlSdWxlcyk7CisKKyAgICAvLyB0ZW1wb3JhcnkgY29tbWVudCBvdXQKKyAgICBjb2xsZWN0
TWF0Y2hpbmdSdWxlcyhtX3NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0LmdldCgpLCBy
ZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVs
ZSwgb3B0aW9ucyk7CisKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7CisgICAgVU5V
U0VEX1BBUkFNKGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyNlbmRpZgorfQorCit2b2lkIFN0eWxlUmVz
b2x2ZXI6OmR1bXBNYXRjaFJlc3VsdChjb25zdCBNYXRjaFJlc3VsdCYgcmVzdWx0KQoreworLy8g
ICAgZnByaW50ZihzdGRlcnIsICJNYXRjaFJlc3VsdDpcbiIpOworLy8gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCByZXN1bHQubWF0Y2hlZFJ1bGVzLnNpemUoKTsgKytpKSB7CisvLyAgICAgICAg
ZnByaW50ZihzdGRlcnIsICIgICAgbWF0Y2hlZFJ1bGVbJWxkXTogIiwgaSk7CisvLyAgICAgICAg
cmVzdWx0Lm1hdGNoZWRSdWxlc1tpXS0+ZHVtcCgpOworLy8gICAgfQorCisgICAgLy8gQ3Jhc2g/
PworICAgIGlmIChyZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSAhPSAtMSAmJiByZXN1bHQu
cmFuZ2VzLmxhc3RBdXRob3JSdWxlICE9IC0xKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
KioqKiBNYXRjaFJlc3VsdCBBdXRob3JSdWxlOiBmcm9tICVkIHRvICVkXG4iLCByZXN1bHQucmFu
Z2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSk7CisgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiICAgIG1hdGNoUnVybGVzLnNpemU6WyVsZF1cbiIsIHJlc3Vs
dC5tYXRjaGVkUnVsZXMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IHJlc3VsdC5yYW5n
ZXMuZmlyc3RBdXRob3JSdWxlOyBpID49IDAgJiYgaSA8PSByZXN1bHQucmFuZ2VzLmxhc3RBdXRo
b3JSdWxlOyArK2kpIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAgIG1hdGNoZWRB
dXRob3JSdWxlWyVkXTogIiwgaSk7CisgICAgICAgICAgICBpZiAocmVzdWx0Lm1hdGNoZWRSdWxl
c1tpXSkKKyAgICAgICAgICAgICAgICByZXN1bHQubWF0Y2hlZFJ1bGVzW2ldLT5kdW1wKCk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiBOdWxsXG4iKTsK
KyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaEF1dGhvclJ1
bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpCiB7CisgICAg
ZnByaW50ZihzdGRlcnIsICIgID4+IFN0eWxlUmVzb2x2ZXI6Om1hdGNoQXV0aG9yUnVsZXNcbiIp
OworCiAgICAgbV9tYXRjaGVkUnVsZXMuY2xlYXIoKTsKICAgICByZXN1bHQucmFuZ2VzLmxhc3RB
dXRob3JSdWxlID0gcmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzLnNpemUoKSAtIDE7CiAKICAgICBp
ZiAoIW1fZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fZWxlbWVudC0+Z2V0
SWRBdHRyaWJ1dGUoKSA9PSAiaG9zdC1jaGlsZCIpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIs
ICJcblxuXG4+PiBTdHlsZVJlc29sdmVyOjptYXRjaEF1dGhvclJ1bGVzOjogaWQ9aG9zdC1jaGls
ZFxuIik7CisKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJcblxuXG4+PiBBdXRob3JTdHlsZSBS
dWxlU2V0IGR1bXBcbiIpOworICAgICAgICBtX2F1dGhvclN0eWxlLT5kdW1wKCk7CisKKyAgICAg
ICAgZnByaW50ZihzdGRlcnIsICJcblxuXG4+PiBTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG8gUnVs
ZVNldCBkdW1wXG4iKTsKKyAgICAgICAgLy8gdGVtcG9yYXJ5IGNvbW1lbnQgb3V0LgorICAgICAg
ICBtX3NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0LT5kdW1wKCk7CisgICAgfQorCiAg
ICAgLy8gTWF0Y2ggZ2xvYmFsIGF1dGhvciBydWxlcy4KICAgICBNYXRjaE9wdGlvbnMgb3B0aW9u
cyhpbmNsdWRlRW1wdHlSdWxlcyk7CisKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhtX2F1dGhv
clN0eWxlLmdldCgpLCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdl
cy5sYXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7CiAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JS
ZWdpb24obV9hdXRob3JTdHlsZS5nZXQoKSwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUs
IHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOwogCiAgICAgbWF0Y2hTY29w
ZWRBdXRob3JSdWxlcyhyZXN1bHQsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyAgICBtYXRjaFNlbGVj
dFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlcyhyZXN1bHQsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKIAog
ICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhyZXN1bHQpOwogfQpAQCAtODU4LDEzICs5
NTUsMTYgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qo
Y29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogcnVsZXMsIGkKIAogICAgIC8vIEluIHNvbWUgY2FzZXMg
d2UgbWF5IGVuZCB1cCBsb29raW5nIHVwIHN0eWxlIGZvciByYW5kb20gZWxlbWVudHMgaW4gdGhl
IG1pZGRsZSBvZiBhIHJlY3Vyc2l2ZSB0cmVlIHJlc29sdmUuCiAgICAgLy8gQW5jZXN0b3IgaWRl
bnRpZmllciBmaWx0ZXIgd29uJ3QgYmUgdXAtdG8tZGF0ZSBpbiB0aGF0IGNhc2UgYW5kIHdlIGNh
bid0IHVzZSB0aGUgZmFzdCBwYXRoLgotICAgIGJvb2wgY2FuVXNlRmFzdFJlamVjdCA9IG1fY2hl
Y2tlci5wYXJlbnRTdGFja0lzQ29uc2lzdGVudChtX3BhcmVudE5vZGUpOworICAgIC8vIEZJWE1F
OiBoYXlhdG8gVW5jb21tZW50LgorICAgIC8vIGJvb2wgY2FuVXNlRmFzdFJlamVjdCA9IG1fY2hl
Y2tlci5wYXJlbnRTdGFja0lzQ29uc2lzdGVudChtX3BhcmVudE5vZGUpOwogCiAgICAgdW5zaWdu
ZWQgc2l6ZSA9IHJ1bGVzLT5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNp
emU7ICsraSkgewogICAgICAgICBjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEgPSBydWxlcy0+YXQo
aSk7Ci0gICAgICAgIGlmIChjYW5Vc2VGYXN0UmVqZWN0ICYmIG1fY2hlY2tlci5mYXN0UmVqZWN0
U2VsZWN0b3I8UnVsZURhdGE6Om1heGltdW1JZGVudGlmaWVyQ291bnQ+KHJ1bGVEYXRhLmRlc2Nl
bmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXMoKSkpCi0gICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICAvLyBGSVhNRTogVW5jb21tZW50LgorLy8gICAgICAgIGlmIChjYW5Vc2VGYXN0
UmVqZWN0ICYmIG1fY2hlY2tlci5mYXN0UmVqZWN0U2VsZWN0b3I8UnVsZURhdGE6Om1heGltdW1J
ZGVudGlmaWVyQ291bnQ+KHJ1bGVEYXRhLmRlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNo
ZXMoKSkpCisvLyAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFN0eWxlUnVsZSogcnVs
ZSA9IHJ1bGVEYXRhLnJ1bGUoKTsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1hdGNoUnVsZShkb2N1
bWVudCgpLCBydWxlKTsKQEAgLTk0Myw2ICsxMDQzLDggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpt
YXRjaEFsbFJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZVNNSUxQcm9wZXJ0
aWUKICAgICB9CiAgICAgCiAgICAgLy8gQ2hlY2sgdGhlIHJ1bGVzIGluIGF1dGhvciBzaGVldHMg
bmV4dC4KKworCiAgICAgaWYgKG1fbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzKQogICAgICAgICBt
YXRjaEF1dGhvclJ1bGVzKHJlc3VsdCwgZmFsc2UpOwogCkBAIC0xNTE0LDYgKzE2MTYsMTQgQEAg
c3RhdGljIGlubGluZSBib29sIGlzQXRTaGFkb3dCb3VuZGFyeShjb25zdCBFbGVtZW50KiBlbGVt
ZW50KQogUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JFbGVt
ZW50KEVsZW1lbnQqIGVsZW1lbnQsIFJlbmRlclN0eWxlKiBkZWZhdWx0UGFyZW50LAogICAgIFN0
eWxlU2hhcmluZ0JlaGF2aW9yIHNoYXJpbmdCZWhhdmlvciwgUnVsZU1hdGNoaW5nQmVoYXZpb3Ig
bWF0Y2hpbmdCZWhhdmlvciwgUmVuZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nKQogeworICAg
IGZwcmludGYoc3RkZXJyLCAiXG5cblxuPj4gU3R5bGVyZXNvbHZlcjo6U3R5bGVmb3JFbGVtZW50
OiIpOworICAgIGlmIChlbGVtZW50KSB7CisgICAgICAgIGVsZW1lbnQtPnNob3dOb2RlUGF0aEZv
clRoaXMoKTsKKyAgICAgICAgaWYgKGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkgPT0gImhvc3Qt
Y2hpbGQiKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIj4+IFN0eWxlUmVzb2x2ZXI6
OnN0eWxlRm9yRWxlbWVudDo6IGlkPWhvc3QtY2hpbGRcbiIpOworICAgICAgICB9CisgICAgfQor
CiAgICAgLy8gT25jZSBhbiBlbGVtZW50IGhhcyBhIHJlbmRlcmVyLCB3ZSBkb24ndCB0cnkgdG8g
ZGVzdHJveSBpdCwgc2luY2Ugb3RoZXJ3aXNlIHRoZSByZW5kZXJlcgogICAgIC8vIHdpbGwgdmFu
aXNoIGlmIGEgc3R5bGUgcmVjYWxjIGhhcHBlbnMgZHVyaW5nIGxvYWRpbmcuCiAgICAgaWYgKHNo
YXJpbmdCZWhhdmlvciA9PSBBbGxvd1N0eWxlU2hhcmluZyAmJiAhZWxlbWVudC0+ZG9jdW1lbnQo
KS0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkgJiYgIWVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKQEAg
LTE1NzMsNiArMTY4Myw5IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6
OnN0eWxlRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBSZW5kZXJTCiAgICAgZWxzZQogICAg
ICAgICBtYXRjaEFsbFJ1bGVzKG1hdGNoUmVzdWx0LCBtYXRjaGluZ0JlaGF2aW9yICE9IE1hdGNo
QWxsUnVsZXNFeGNsdWRpbmdTTUlMKTsKIAorICAgIC8vIGZwcmludGYoc3RkZXJyLCAiLi4gU3R5
bGVSZXNvbHZlcjo6U3R5bGVmb3JFbGVtZW50OiBtYXRjaFJlc3VsdCIpOworICAgIGR1bXBNYXRj
aFJlc3VsdChtYXRjaFJlc3VsdCk7CisKICAgICBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzKG1hdGNo
UmVzdWx0LCBlbGVtZW50KTsKIAogICAgIC8vIENsZWFuIHVwIG91ciBzdHlsZSBvYmplY3QncyBk
aXNwbGF5IGFuZCB0ZXh0IGRlY29yYXRpb25zIChhbW9uZyBvdGhlciBmaXh1cHMpLgpAQCAtNTE2
OSw2ICs1MjgyLDE0IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6TWF0Y2hlZFByb3BlcnRpZXM6OnJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yCiAgICAgaW5mby5hZGRNZW1i
ZXIocHJvcGVydGllcyk7CiB9CiAKKworUnVsZVNldCogU3R5bGVSZXNvbHZlcjo6ZW5zdXJlUnVs
ZVNldEZvcihjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSkgeworICAgIEFTU0VSVChtX3Njb3Bl
UmVzb2x2ZXIpOworICAgIGZwcmludGYoc3RkZXJyLCAiICA+PiBTdHlsZVJlc29sdmVyOjplbnN1
cmVSdWxlU2V0Rm9yIFxuIik7CisgICAgc2hvd05vZGVQYXRoKHNjb3BlKTsKKyAgICByZXR1cm4g
bV9zY29wZVJlc29sdmVyLT5lbnN1cmVSdWxlU2V0Rm9yKHNjb3BlKTsKK30KKwogdm9pZCBTdHls
ZVJlc29sdmVyOjpNYXRjaGVkUHJvcGVydGllc0NhY2hlSXRlbTo6cmVwb3J0TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlD
bGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6
OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCBmNzY5OTM0NDI1MTEzOTlm
NzliYWVlNzdjNGQ3ZWQzMzc1MDYzNzUyLi5hOWQ0NTcyY2YwNDQ2YmI0NDViMDVlOGUyZmFmMTY5
M2IyZGQ2M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTE4OSw2ICsxODks
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbml0Rm9yU3R5bGVSZXNvbHZlKEVsZW1lbnQqLCBS
ZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSAwLCBQc2V1ZG9JZCA9IE5PUFNFVURPKTsKICAgICB2
b2lkIGluaXRFbGVtZW50KEVsZW1lbnQqKTsKKyAgICB2b2lkIGNvbGxlY3RSZWZlcmVuY2VDb21i
aW5hdG9yUnVsZVNldCgpOwogICAgIHZvaWQgY29sbGVjdEZlYXR1cmVzKCk7CiAgICAgUmVuZGVy
U3R5bGUqIGxvY2F0ZVNoYXJlZFN0eWxlKCk7CiAgICAgYm9vbCBzdHlsZVNoYXJpbmdDYW5kaWRh
dGVNYXRjaGVzUnVsZVNldChSdWxlU2V0Kik7CkBAIC0yNTUsNiArMjU2LDkgQEAgcHVibGljOgog
CiAgICAgdm9pZCBhZGRLZXlmcmFtZVN0eWxlKFBhc3NSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVz
Pik7CiAKKyAgICAvLyB2b2lkIGFkZFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlKFN0eWxl
UnVsZSosIFBhc3NSZWZQdHI8Q29udGFpbmVyTm9kZT4gc2NvcGUpOworICAgIHZvaWQgYWRkU2Vs
ZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGUoU3R5bGVSdWxlKiwgQ29udGFpbmVyTm9kZSogc2Nv
cGUpOworCiAgICAgYm9vbCBjaGVja1JlZ2lvblN0eWxlKEVsZW1lbnQqIHJlZ2lvbkVsZW1lbnQp
OwogCiAgICAgYm9vbCB1c2VzU2libGluZ1J1bGVzKCkgY29uc3QgeyByZXR1cm4gIW1fZmVhdHVy
ZXMuc2libGluZ1J1bGVzLmlzRW1wdHkoKTsgfQpAQCAtMzMyLDYgKzMzNiw4IEBAIHByaXZhdGU6
CiAgICAgICAgIGJvb2wgaXNDYWNoZWFibGU7CiAgICAgfTsKIAorICAgIHN0YXRpYyB2b2lkIGR1
bXBNYXRjaFJlc3VsdChjb25zdCBNYXRjaFJlc3VsdCYgcmVzdWx0KTsKKwogICAgIHN0cnVjdCBN
YXRjaE9wdGlvbnMgewogICAgICAgICBNYXRjaE9wdGlvbnMoYm9vbCBpbmNsdWRlRW1wdHlSdWxl
cywgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUgPSAwKSA6IHNjb3BlKHNjb3BlKSwgaW5jbHVk
ZUVtcHR5UnVsZXMoaW5jbHVkZUVtcHR5UnVsZXMpIHsgfQogICAgICAgICBjb25zdCBDb250YWlu
ZXJOb2RlKiBzY29wZTsKQEAgLTM0OCw5ICszNTQsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1h
dGNoVXNlclJ1bGVzKE1hdGNoUmVzdWx0JiwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAgICAg
dm9pZCBtYXRjaFNjb3BlZEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiwgYm9vbCBpbmNsdWRlRW1w
dHlSdWxlcyk7CiAgICAgdm9pZCBtYXRjaEhvc3RSdWxlcyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5j
bHVkZUVtcHR5UnVsZXMpOworCisgICAgdm9pZCBtYXRjaFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0
b3JSdWxlcyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOworCiAgICAgdm9p
ZCBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhSdWxlU2V0KiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50
JiBsYXN0UnVsZUluZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmKTsKICAgICB2b2lkIGNvbGxlY3RN
YXRjaGluZ1J1bGVzRm9yUmVnaW9uKFJ1bGVTZXQqLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQm
IGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYpOwogICAgIHZvaWQgY29sbGVjdE1h
dGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qLCBpbnQmIGZpcnN0UnVs
ZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYpOworCisgICAg
dm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZmVyZW5jZUNvbWJpbmF0b3IoUnVsZVNldCos
IGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRp
b25zJik7CisKICAgICBib29sIGZhc3RSZWplY3RTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYpIGNv
bnN0OwogICAgIHZvaWQgc29ydE1hdGNoZWRSdWxlcygpOwogICAgIHZvaWQgc29ydEFuZFRyYW5z
ZmVyTWF0Y2hlZFJ1bGVzKE1hdGNoUmVzdWx0Jik7CkBAIC0zODYsMTAgKzM5OCwyMyBAQCBwcml2
YXRlOgogICAgIE93blB0cjxSdWxlU2V0PiBtX2F1dGhvclN0eWxlOwogICAgIE93blB0cjxSdWxl
U2V0PiBtX3VzZXJTdHlsZTsKIAorLy8gICAgc3RydWN0IFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0
b3JSdWxlIHsKKy8vICAgICAgICBTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZShQYXNzUmVm
UHRyPFN0eWxlUnVsZT4gcnVsZSwgUGFzc1JlZlB0cjxDb250YWluZXJOb2RlPiBzY29wZSk7Cisv
LyAgICAgICAgUmVmUHRyPFN0eWxlUnVsZT4gbV9ydWxlOworLy8gICAgICAgIFJlZlB0cjxDb250
YWluZXJOb2RlPiBtX3Njb3BlOworLy8gICAgfTsKKworICAgIC8vIFZlY3RvcjxTZWxlY3RSZWZl
cmVuY2VDb21iaW5hdG9yUnVsZT4gbV9zZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZUxpc3Q7
CisvLyAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHlsZVJ1bGU+LCBSZWZQdHI8Y29uc3Qg
Q29udGFpbmVyTm9kZT4gPiBTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZU1hcDsKKy8vICAg
ICBTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZU1hcCBtX3NlbGVjdFJlZmVyZW5jZUNvbWJp
bmF0b3JSdWxlTWFwOworCisgICAgT3duUHRyPFJ1bGVTZXQ+IG1fc2VsZWN0UmVmZXJlbmNlQ29t
YmluYXRvclJ1bGVTZXQ7CisKICAgICBSdWxlRmVhdHVyZVNldCBtX2ZlYXR1cmVzOwogICAgIE93
blB0cjxSdWxlU2V0PiBtX3NpYmxpbmdSdWxlU2V0OwogICAgIE93blB0cjxSdWxlU2V0PiBtX3Vu
Y29tbW9uQXR0cmlidXRlUnVsZVNldDsKIAorCiAgICAgYm9vbCBtX2hhc1VBQXBwZWFyYW5jZTsK
ICAgICBCb3JkZXJEYXRhIG1fYm9yZGVyRGF0YTsKICAgICBGaWxsTGF5ZXIgbV9iYWNrZ3JvdW5k
RGF0YTsKQEAgLTQxOCw2ICs0NDMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKICAgICAKKyAgICBSdWxlU2V0KiBlbnN1
cmVSdWxlU2V0Rm9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKTsKKwogcHJpdmF0ZToKICAg
ICBzdGF0aWMgUmVuZGVyU3R5bGUqIHNfc3R5bGVOb3RZZXRBdmFpbGFibGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGUuaAppbmRleCA0ZDQzNDBhNmQ4YTIwMTJjODQyMTViYjI5MmU1ZjJkNDA0ZmJkYTQw
Li40M2QxODQ3NDgxYmZiOWYxNmY0YTViMjdjYWY5OWRlNWI1NGFjYzVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUnVsZS5oCkBAIC0xMDUsNiArMTA1LDEwIEBAIHB1YmxpYzoKICAgICAKICAgICB+U3R5bGVS
dWxlKCk7CiAKKyAgICB2b2lkIGR1bXAoKSBjb25zdCB7CisgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiU3R5bGVSdWxlOiAlcyAgbV9zb3VyY2VMaW5lOiAlZFxuIiwgc2VsZWN0b3JMaXN0KCkuc2Vs
ZWN0b3JzVGV4dCgpLnV0ZjgoKS5kYXRhKCksIHNvdXJjZUxpbmUoKSk7CisgICAgfQorCiAgICAg
Y29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QoKSBjb25zdCB7IHJldHVybiBtX3Nl
bGVjdG9yTGlzdDsgfQogICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMoKSBj
b25zdCB7IHJldHVybiBtX3Byb3BlcnRpZXMuZ2V0KCk7IH0KICAgICBTdHlsZVByb3BlcnR5U2V0
KiBtdXRhYmxlUHJvcGVydGllcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlU2NvcGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29s
dmVyLmNwcAppbmRleCA1ZmYyYjNlMGIxMTU0OTk0NDdlMjFjODZmNThmNjQ2MTMwMWNmMGZkLi5i
NzhhM2U5MTIyMTIzNzI2MWU1Y2MyMDI5ZmQ1MTZhOWNmNTM2NmQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcApAQCAtNzksOCArNzksMTAgQEAgY29uc3QgQ29u
dGFpbmVyTm9kZSogU3R5bGVTY29wZVJlc29sdmVyOjpzY29wZUZvcihjb25zdCBDU1NTdHlsZVNo
ZWV0KiBzaGVldCkKIAogaW5saW5lIFJ1bGVTZXQqIFN0eWxlU2NvcGVSZXNvbHZlcjo6cnVsZVNl
dEZvcihjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSkgY29uc3QKIHsKLSAgICBpZiAoIXNjb3Bl
LT5oYXNTY29wZWRIVE1MU3R5bGVDaGlsZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAvLyBG
SVhNRTogVGVtcHBvcmFyeSBjb21tZW50IG91dC4KKy8vICAgIGlmICghc2NvcGUtPmhhc1Njb3Bl
ZEhUTUxTdHlsZUNoaWxkKCkpCisvLyAgICAgICAgcmV0dXJuIDA7CisKICAgICBTY29wZWRSdWxl
U2V0TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fYXV0aG9yU3R5bGVzLmZpbmQoc2NvcGUpOwog
ICAgIHJldHVybiBpdCAhPSBtX2F1dGhvclN0eWxlcy5lbmQoKSA/IGl0LT52YWx1ZS5nZXQoKSA6
IDA7IAogfQpAQCAtMTEzLDYgKzExNSwxNSBAQCB2b2lkIFN0eWxlU2NvcGVSZXNvbHZlcjo6c2V0
dXBTdGFjayhjb25zdCBDb250YWluZXJOb2RlKiBwYXJlbnQpCiAgICAgbV9zdGFja1BhcmVudEJv
dW5kc0luZGV4ID0gMDsKIH0KIAordm9pZCBTdHlsZVNjb3BlUmVzb2x2ZXI6OmR1bXAoKSBjb25z
dAoreworICAgIGZwcmludGYoc3RkZXJyLCAiPj4gU3R5bGVTY29wZVJlc29sdmVyOjpkdW1wXG4i
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc3RhY2suc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgZnByaW50ZihzdGRlcnIsICIgWyVsZF0iLCBpKTsKKyAgICAgICAgc2hvd05vZGVQYXRo
KHN0YWNrRnJhbWVBdChpKS5tX3Njb3BlKTsKKyAgICB9Cit9CisKIHZvaWQgU3R5bGVTY29wZVJl
c29sdmVyOjpwdXNoKGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlLCBjb25zdCBDb250YWluZXJO
b2RlKiBzY29wZVBhcmVudCkKIHsKICAgICAvLyBTaG9ydGN1dDogRG9uJ3QgYm90aGVyIHdpdGgg
dGhlIHNjb3BpbmcgZWxlbWVudCBzdGFjayBpZiA8c3R5bGUgc2NvcGVkPiBpc24ndCB1c2VkIGFu
eXdoZXJlLgpAQCAtMTM2LDYgKzE0NywxMCBAQCB2b2lkIFN0eWxlU2NvcGVSZXNvbHZlcjo6cHVz
aChjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSwgY29uc3QgQ29udGFpbmVyTm9kZSogcwogICAg
IGlmIChydWxlU2V0KQogICAgICAgICBtX3N0YWNrLmFwcGVuZChTdGFja0ZyYW1lKHNjb3BlLCBt
X3N0YWNrUGFyZW50Qm91bmRzSW5kZXgsIHJ1bGVTZXQpKTsKICAgICBtX3N0YWNrUGFyZW50ID0g
c2NvcGU7CisvLyAgICBmcHJpbnRmKHN0ZGVyciwgIj4+IFN0eWxlU2NvcGVSZXNvbHZlcjo6cHVz
aFxuIik7CisvLyAgICBmcHJpbnRmKHN0ZGVyciwgIiAgc2NvcGU6Iik7CisvLyAgICBzaG93Tm9k
ZVBhdGgoc2NvcGUpOworLy8gICAgZHVtcCgpOwogfQogCiB2b2lkIFN0eWxlU2NvcGVSZXNvbHZl
cjo6cG9wKGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKQpAQCAtMTQ4LDYgKzE2MywxMCBAQCB2
b2lkIFN0eWxlU2NvcGVSZXNvbHZlcjo6cG9wKGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKQog
ICAgICAgICAgICAgLS1tX3N0YWNrUGFyZW50Qm91bmRzSW5kZXg7CiAgICAgICAgIG1fc3RhY2tQ
YXJlbnQgPSBzY29wZS0+cGFyZW50T3JIb3N0Tm9kZSgpOwogICAgIH0KKy8vICAgIGZwcmludGYo
c3RkZXJyLCAiPj4gU3R5bGVTY29wZVJlc29sdmVyOjpwb3BcbiIpOworLy8gICAgZnByaW50Zihz
dGRlcnIsICIgIHNjb3BlOiIpOworLy8gICAgc2hvd05vZGVQYXRoKHNjb3BlKTsKKy8vICAgIGR1
bXAoKTsKIH0KIAogdm9pZCBTdHlsZVNjb3BlUmVzb2x2ZXI6OmNvbGxlY3RGZWF0dXJlc1RvKFJ1
bGVGZWF0dXJlU2V0JiBmZWF0dXJlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVNjb3BlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2
ZXIuaAppbmRleCAzYmUzZmY0ZjcwYzczNzViZDAxNDI2YTAwYmE0MjQxMjg0NjJjYzBlLi42YzAw
MWFmOTRkMWEyMDlkZTIxMTk2OTNmYTc0MDM5NDIxYTZmYzFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlU2NvcGVSZXNvbHZlci5oCkBAIC04MSw2ICs4MSw4IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCisgICAgdm9p
ZCBkdW1wKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgUnVsZVNldCogcnVsZVNldEZvcihjb25z
dCBDb250YWluZXJOb2RlKiBzY29wZSkgY29uc3Q7CiAgICAgdm9pZCBzZXR1cFN0YWNrKGNvbnN0
IENvbnRhaW5lck5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5oCmluZGV4IDI0M2EwOGMxOGEzNDYxMDMwMzk1ZDlhNWJhN2QyMDU1OWI2NzExYTkuLjYw
YTViMWIyOTAzNzE0ZjE2M2QyNWQ3Y2U1NTQ0YjEzNzQyNDY0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtMTgwLDYgKzE4MCwzOSBAQCBpbmxp
bmUgSW5zZXJ0aW9uUG9pbnQqIHJlc29sdmVSZXByb2plY3Rpb24oY29uc3QgTm9kZSogcHJvamVj
dGVkTm9kZSkKICAgICByZXR1cm4gaW5zZXJ0aW9uUG9pbnQ7CiB9CiAKKy8vIEZJWE1FOiBjb2xs
ZWN0cyBvbmx5IENvbnRlbnRzRWxlbWVudHMgc2luY2UgL3NlbGVjdC8gcmVmZXJlbmNlIGNvbWJp
bmF0b3IgY2FuIGJlCisvLyBhcHBsaWVkIHRvIG9ubHkgPGNvbnRlbnRzPgoraW5saW5lIHZvaWQg
Y29sbGVjdEFsbE1pZHBvaW50SW5zZXJ0aW9uUG9pbnRzKGNvbnN0IE5vZGUqIHByb2plY3RlZE5v
ZGUsIFZlY3RvcjxJbnNlcnRpb25Qb2ludCo+JiByZXN1bHRzKQoreworICAgIEluc2VydGlvblBv
aW50KiBpbnNlcnRpb25Qb2ludCA9IDA7CisgICAgY29uc3QgTm9kZSogY3VycmVudCA9IHByb2pl
Y3RlZE5vZGU7CisKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpZiAoRWxlbWVudFNoYWRv
dyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKKyAg
ICAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7CisgICAgICAgICAgICBpZiAo
SW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBzaGFkb3ctPmRpc3RyaWJ1dG9yKCkuZmluZElu
c2VydGlvblBvaW50Rm9yKHByb2plY3RlZE5vZGUpKSB7CisgICAgICAgICAgICAgICAgY3VycmVu
dCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBpbnNlcnRl
ZFRvOworICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKGluc2VydGlvblBvaW50KTsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlRm9yRGlzdHJpYnV0aW9uKGN1cnJlbnQp
KSB7CisgICAgICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBwYXJlbnQt
PmlzU2hhZG93Um9vdCgpID8gdG9TaGFkb3dSb290KHBhcmVudCktPmFzc2lnbmVkVG8oKSA6IDAp
IHsKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAg
ICBpbnNlcnRpb25Qb2ludCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgcmVzdWx0cy5h
cHBlbmQoaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEluc2VydGlvblBvaW50X2gKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA4ZGI1Y2UwZDc1MjY1YzE3Y2Y2MjZhYzJhYWU4YzcyMDFiOGM0OTVhLi41ZjdmZmI2NzJlNTUy
YjE1YTY0MTg3NGM1YWFhNTBhY2JmNDliZTQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTIt
MTEtMDcgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtTaGFk
b3cgRE9NXSBOZWVkcyAvc2VsZWN0LyByZWZlcmVuY2UgY29tYmluYXRvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIxNjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9u
IG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBl
ci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3Qv
ZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3IuaHRtbDogQWRkZWQuCisKIDIw
MTItMTEtMDUgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogSmF2YVNjcmlwdCB3ZWIgd29ya2VycyBkZWJ1Z2dpbmcgY3Jhc2hl
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVu
Y2UtY29tYmluYXRvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NlbGVjdC1y
ZWZlcmVuY2UtY29tYmluYXRvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwYjBiZDBiMDFjM2JkNjZhZTQ1
NDM4MWFiMTVkZDE4NTkxYWQxYTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLmh0bWwKQEAgLTAsMCArMSwz
NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICBkaXYgeworICAgIGJh
Y2tncm91bmQtY29sb3I6ICNmZmM7CisgIH0KKyAgI3NhbmRib3ggeworICAgIGNvbG9yOiByZWQ7
CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2Pgor
PHNjcmlwdD4KKwordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5
bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdkaXYgeyBiYWNrZ3JvdW5kLWNvbG9yOiAj
Ymx1ZTsgfScgKworICAnI3NoYWRvdy1jb250ZW50IC9zZWxlY3QvIGRpdiB7IGNvbG9yOiBibHVl
OyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcp
Oworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9z
dCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAg
c2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAn
c2hhZG93LWNoaWxkJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgnc2hhZG93IGNoaWxkJykpLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdjb250ZW50JywgeydpZCc6ICdzaGFkb3ctY29udGVudCd9KSksCisgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0LWNoaWxkJ30sCisgICAgICAgICAgICAgICAgICAg
ICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnaG9zdCBjaGlsZCcpKSkpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175365</attachid>
            <date>2012-11-21 00:57:27 -0800</date>
            <delta_ts>2012-11-21 03:25:52 -0800</delta_ts>
            <desc>WIP. Clean up and update a test.</desc>
            <filename>bug-82169-20121121175514.patch</filename>
            <type>text/plain</type>
            <size>29066</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzg5NzhjMmZiNjkyZmM3
MmNlNmI4NDIzMTNmMTIyMTAzYzMzYzgzOC4uODA5YmI1YmE3MzA4YzRjZDE2NjIxY2QxNzZiZjli
N2E3OTU1NTZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTEwLTIzICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gTmVl
ZHMgL3NlbGVjdC8gcmVmZXJlbmNlIGNvbWJpbmF0b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjE2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNo
YW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9u
IGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogY3NzL0NTU0dyYW1tYXIueS5pbjoKKyAgICAgICAgKiBjc3MvQ1NT
UGFyc2VyVmFsdWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6c2V0
UmVmZXJlbmNlKToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
ZWxlY3Rvcjo6c2V0UmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU2VsZWN0b3I6OlJhcmVEYXRhOjpSYXJlRGF0YSk6CisgICAgICAgICogY3NzL0NT
U1NlbGVjdG9yLmg6CisgICAgICAgIChDU1NTZWxlY3Rvcik6CisgICAgICAgIChSYXJlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6cmVmZXJlbmNlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmlzUmVmZXJlbmNlQ29tYmlu
YXRvcik6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHA6CisgICAgICAgIChTZWxl
Y3Rvckhhc1NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JIYXNTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yOjpvcGVyYXRvcigpKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JMaXN0OjpoYXNTZWxlY3RS
ZWZlcmVuY2VDb21iaW5hdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0Lmg6Cisg
ICAgICAgIChDU1NTZWxlY3Rvckxpc3QpOgorICAgICAgICAqIGNzcy9SdWxlU2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6YWRkUnVsZXNGcm9t
U2hlZXQpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0b3JDaGVja2VyOjpjb2xsZWN0SWRlbnRpZmllckhhc2hlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IpOgorICAgICAgICAqIGNz
cy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6
U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0KToKKyAgICAg
ICAgKFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpyZXNldEF1dGhvclN0eWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkZFNlbGVjdFJlZmVyZW5jZUNv
bWJpbmF0b3JSdWxlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSZXNvbHZlcjo6bWF0Y2hTY29wZWRBdXRob3JSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjptYXRjaFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRjaEF1dGhvclJ1bGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjaGVja1NlbGVjdG9yKToKKyAgICAgICAg
KiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAoU3R5bGVSZXNvbHZlcik6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpNYXRjaE9wdGlvbnM6Ok1hdGNoT3B0aW9ucyk6Cisg
ICAgICAgIChNYXRjaE9wdGlvbnMpOgorICAgICAgICAqIGNzcy9TdHlsZVNjb3BlUmVzb2x2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTY29wZVJlc29sdmVyOjpydWxlU2V0Rm9yKToK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0QWxsTWlkcG9pbnRJbnNlcnRpb25Qb2ludHMp
OgorCiAyMDEyLTExLTIwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgNyUgcmVncmVzc2lvbiBpbiBkcm9tYWVvX2RvbWNvcmVxdWVyeS9kb21fcXVlcnlfZ2V0RWxl
bWVudHNCeVRhZ05hbWVfX25vdF9pbl9kb2N1bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyYW1tYXIueS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnku
aW4KaW5kZXggMjFiMDE2MTM1YmE1OGU0ZTIwNGVmNzY5YTE5N2YwYjg3MTRiNmU5NC4uYmFiODgy
MmFlOGNkMmVmMDc0NjQxODUwNGZiMDRmZTlhNmZkZjIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55LmluCkBAIC0yODksNiArMjg5LDcgQEAgc3RhdGljIGlubGluZSBpbnQgY3NzeXllcnJv
cih2b2lkKiwgY29uc3QgY2hhciopCiAKICV0eXBlIDxzdHJpbmc+IGVsZW1lbnRfbmFtZQogJXR5
cGUgPHN0cmluZz4gYXR0cl9uYW1lCisldHlwZSA8c3RyaW5nPiByZWZlcmVuY2VfY29tYmluYXRv
cgogCiAlJQogCkBAIC0xMDAxLDYgKzEwMDIsMTUgQEAgY29tYmluYXRvcjoKICAgfCAnPicgbWF5
YmVfc3BhY2UgeyAkJCA9IENTU1NlbGVjdG9yOjpDaGlsZDsgfQogICA7CiAKK3JlZmVyZW5jZV9j
b21iaW5hdG9yOgorICAnLycgSURFTlQgJy8nIG1heWJlX3NwYWNlIHsKKyAgICAgICAgQ1NTUGFy
c2VyU3RyaW5nJiBzdHIgPSAkMjsKKyAgICAgICAgaWYgKHBhcnNlci0+bV9jb250ZXh0LmlzSFRN
TERvY3VtZW50KQorICAgICAgICAgICAgc3RyLmxvd2VyKCk7CisgICAgICAgICQkID0gc3RyOwor
ICB9CisgIDsKKwogbWF5YmVfdW5hcnlfb3BlcmF0b3I6CiAgICAgdW5hcnlfb3BlcmF0b3IgeyAk
JCA9ICQxOyB9CiAgICAgfCB7ICQkID0gMTsgfQpAQCAtMTA5Niw2ICsxMTA2LDIwIEBAIHNlbGVj
dG9yOgogICAgICAgICAgICAgZW5kLT5zZXRUYWdIaXN0b3J5KHBhcnNlci0+c2lua0Zsb2F0aW5n
U2VsZWN0b3IoJDEpKTsKICAgICAgICAgfQogICAgIH0KKyAgICB8IHNlbGVjdG9yIHJlZmVyZW5j
ZV9jb21iaW5hdG9yIHNpbXBsZV9zZWxlY3RvciB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
UmVmZXJlbmNlIENvbWJpbmF0b3IhXG4iKTsKKyAgICAgICAgJCQgPSAkMzsKKyAgICAgICAgaWYg
KCEkMSkKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAgZWxzZSBpZiAoJCQpIHsKKyAgICAg
ICAgICAgIENTU1BhcnNlclNlbGVjdG9yKiBlbmQgPSAkJDsKKyAgICAgICAgICAgIHdoaWxlIChl
bmQtPnRhZ0hpc3RvcnkoKSkKKyAgICAgICAgICAgICAgICBlbmQgPSBlbmQtPnRhZ0hpc3Rvcnko
KTsKKyAgICAgICAgICAgIGVuZC0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6OlJlZmVyZW5jZSk7
CisgICAgICAgICAgICBlbmQtPnNldFJlZmVyZW5jZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAk
MiwgbnVsbEF0b20pKTsKKyAgICAgICAgICAgIGVuZC0+c2V0VGFnSGlzdG9yeShwYXJzZXItPnNp
bmtGbG9hdGluZ1NlbGVjdG9yKCQxKSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgfCBzZWxlY3Rv
ciBlcnJvciB7CiAgICAgICAgICQkID0gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
VmFsdWVzLmgKaW5kZXggMTMwMWIxY2UwZTExMzcyM2NjZjgyMTYyOGVlMDVlMmUzMTAyMzY3Yi4u
ZTIzZGVkNTBlMjc5Y2MxZDlmMTYxZTA5NjY0ZDQ0ZWQ4YTc5NjcwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXJWYWx1ZXMuaApAQCAtMTgzLDYgKzE4Myw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldE1hdGNoKENTU1NlbGVjdG9yOjpNYXRjaCB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5tX21hdGNo
ID0gdmFsdWU7IH0KICAgICB2b2lkIHNldFJlbGF0aW9uKENTU1NlbGVjdG9yOjpSZWxhdGlvbiB2
YWx1ZSkgeyBtX3NlbGVjdG9yLT5tX3JlbGF0aW9uID0gdmFsdWU7IH0KICAgICB2b2lkIHNldEZv
clBhZ2UoKSB7IG1fc2VsZWN0b3ItPnNldEZvclBhZ2UoKTsgfQorICAgIHZvaWQgc2V0UmVmZXJl
bmNlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHZhbHVlKSB7IG1fc2VsZWN0b3ItPnNldFJlZmVyZW5j
ZSh2YWx1ZSk7IH0KIAogICAgIHZvaWQgYWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRy
PENTU1BhcnNlclNlbGVjdG9yPiA+JiBzZWxlY3RvclZlY3Rvcik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3IuY3BwCmluZGV4IGM5ZGQxOTM3YTU4ZTZmMWM4NzdjNzFjYzk4NmQ2ZWQwNmY1MzQ3
NTAuLmIwYmM3NTFjODNhYjBmNzNjZTE3NTczODBjNmRhZjBjNzc5OTYwZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1NlbGVjdG9yLmNwcApAQCAtNjU0LDYgKzY1NCw4IEBAIFN0cmluZyBDU1NTZWxlY3Rv
cjo6c2VsZWN0b3JUZXh0KCkgY29uc3QKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50OgogICAgICAgICAg
ICAgcmV0dXJuIHRhZ0hpc3RvcnlUZXh0ICsgc3RyLnRvU3RyaW5nKCk7CisgICAgICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OlJlZmVyZW5jZToKKyAgICAgICAgICAgIHJldHVybiB0YWdIaXN0b3J5VGV4
dCArICIgLyIgKyBjcy0+cmVmZXJlbmNlKCkudG9TdHJpbmcoKSArICIvICIgKyAgc3RyLnRvU3Ry
aW5nKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY2Niw2ICs2NjgsMTIgQEAgdm9pZCBDU1NT
ZWxlY3Rvcjo6c2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHZhbHVlKQogICAgIG1f
ZGF0YS5tX3JhcmVEYXRhLT5tX2F0dHJpYnV0ZSA9IHZhbHVlOwogfQogCit2b2lkIENTU1NlbGVj
dG9yOjpzZXRSZWZlcmVuY2UoY29uc3QgUXVhbGlmaWVkTmFtZSYgdmFsdWUpCit7CisgICAgY3Jl
YXRlUmFyZURhdGEoKTsKKyAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9yZWZlcmVuY2UgPSB2YWx1
ZTsKK30KKwogdm9pZCBDU1NTZWxlY3Rvcjo6c2V0QXJndW1lbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBjcmVhdGVSYXJlRGF0YSgpOwpAQCAtNzI0LDYgKzczMiw3IEBAIENT
U1NlbGVjdG9yOjpSYXJlRGF0YTo6UmFyZURhdGEoUGFzc1JlZlB0cjxBdG9taWNTdHJpbmdJbXBs
PiB2YWx1ZSkKICAgICAsIG1fYSgwKQogICAgICwgbV9iKDApCiAgICAgLCBtX2F0dHJpYnV0ZShh
bnlRTmFtZSgpKQorICAgICwgbV9yZWZlcmVuY2UoYW55UU5hbWUoKSkKICAgICAsIG1fYXJndW1l
bnQobnVsbEF0b20pCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCmluZGV4IGFlZTUwNzRk
NzVmN2JiM2Y2ZTQxMjk1ZGQxYmFhYzA5NzYzMDg0NWYuLjY0NDUyNDEzY2E4YTA2ZDY2YTQwYTVh
ZWI5NmI0ODdlYzQ1NmI1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxl
Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCkBAIC03Niw3ICs3
Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERpcmVjdEFkamFjZW50LAog
ICAgICAgICAgICAgSW5kaXJlY3RBZGphY2VudCwKICAgICAgICAgICAgIFN1YlNlbGVjdG9yLAot
ICAgICAgICAgICAgU2hhZG93RGVzY2VuZGFudAorICAgICAgICAgICAgU2hhZG93RGVzY2VuZGFu
dCwKKyAgICAgICAgICAgIFJlZmVyZW5jZQogICAgICAgICB9OwogCiAgICAgICAgIGVudW0gUHNl
dWRvVHlwZSB7CkBAIC0xOTksMTIgKzIwMCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBQZXJoYXBzIGNhbGwgc2l0ZXMgY291bGQgYmUgY2hhbmdlZCB0byBhY2Nl
cHQgQXRvbWljU3RyaW5nSW1wbD8KICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IEF0b21pY1N0cmluZyo+KG1f
aGFzUmFyZURhdGEgPyAmbV9kYXRhLm1fcmFyZURhdGEtPm1fdmFsdWUgOiAmbV9kYXRhLm1fdmFs
dWUpOyB9CiAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSgpIGNvbnN0Owor
ICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiByZWZlcmVuY2UoKSBjb25zdDsKICAgICAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBhcmd1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmFyZURh
dGEgPyBtX2RhdGEubV9yYXJlRGF0YS0+bV9hcmd1bWVudCA6IG51bGxBdG9tOyB9CiAgICAgICAg
IENTU1NlbGVjdG9yTGlzdCogc2VsZWN0b3JMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNSYXJl
RGF0YSA/IG1fZGF0YS5tX3JhcmVEYXRhLT5tX3NlbGVjdG9yTGlzdC5nZXQoKSA6IDA7IH0KIAog
ICAgICAgICB2b2lkIHNldFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJiB2YWx1ZSkgeyBtX3RhZyA9
IHZhbHVlOyB9CiAgICAgICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAg
ICAgICAgIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICAgICAg
dm9pZCBzZXRSZWZlcmVuY2UoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgICAgICB2b2lkIHNl
dEFyZ3VtZW50KGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgICAgICB2b2lkIHNldFNlbGVjdG9y
TGlzdChQYXNzT3duUHRyPENTU1NlbGVjdG9yTGlzdD4pOwogCkBAIC0yMTYsNiArMjE5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzQ3VzdG9tUHNldWRvRWxlbWVudCgp
IGNvbnN0OwogICAgICAgICBib29sIGlzU2libGluZ1NlbGVjdG9yKCkgY29uc3Q7CiAgICAgICAg
IGJvb2wgaXNBdHRyaWJ1dGVTZWxlY3RvcigpIGNvbnN0OworICAgICAgICBib29sIGlzUmVmZXJl
bmNlQ29tYmluYXRvcigpIGNvbnN0OwogCiAgICAgICAgIFJlbGF0aW9uIHJlbGF0aW9uKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVsYXRpb24+KG1fcmVsYXRpb24pOyB9CiAKQEAgLTI1
OCw2ICsyNjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBpbnQgbV9hOyAv
LyBVc2VkIGZvciA6bnRoLSoKICAgICAgICAgICAgIGludCBtX2I7IC8vIFVzZWQgZm9yIDpudGgt
KgogICAgICAgICAgICAgUXVhbGlmaWVkTmFtZSBtX2F0dHJpYnV0ZTsgLy8gdXNlZCBmb3IgYXR0
cmlidXRlIHNlbGVjdG9yCisgICAgICAgICAgICBRdWFsaWZpZWROYW1lIG1fcmVmZXJlbmNlOyAv
LyB1c2VkIGZvciByZWZlcmVuY2UgY29tYmluYXRvcgogICAgICAgICAgICAgQXRvbWljU3RyaW5n
IG1fYXJndW1lbnQ7IC8vIFVzZWQgZm9yIDpjb250YWlucywgOmxhbmcgYW5kIDpudGgtKgogICAg
ICAgICAgICAgT3duUHRyPENTU1NlbGVjdG9yTGlzdD4gbV9zZWxlY3Rvckxpc3Q7IC8vIFVzZWQg
Zm9yIDotd2Via2l0LWFueSBhbmQgOm5vdAogICAgICAgICAKQEAgLTI4Miw2ICsyODcsMTMgQEAg
aW5saW5lIGNvbnN0IFF1YWxpZmllZE5hbWUmIENTU1NlbGVjdG9yOjphdHRyaWJ1dGUoKSBjb25z
dAogICAgIHJldHVybiBtX2RhdGEubV9yYXJlRGF0YS0+bV9hdHRyaWJ1dGU7CiB9CiAKK2lubGlu
ZSBjb25zdCBRdWFsaWZpZWROYW1lJiBDU1NTZWxlY3Rvcjo6cmVmZXJlbmNlKCkgY29uc3QKK3sK
KyAgICBBU1NFUlQoaXNSZWZlcmVuY2VDb21iaW5hdG9yKCkpOworICAgIEFTU0VSVChtX2hhc1Jh
cmVEYXRhKTsKKyAgICByZXR1cm4gbV9kYXRhLm1fcmFyZURhdGEtPm1fcmVmZXJlbmNlOworfQor
CiBpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6bWF0Y2hlc1BzZXVkb0VsZW1lbnQoKSBjb25zdAog
ewogICAgIGlmIChtX3BzZXVkb1R5cGUgPT0gUHNldWRvVW5rbm93bikKQEAgLTMyOCw2ICszNDAs
MTEgQEAgaW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6OmlzQXR0cmlidXRlU2VsZWN0b3IoKSBjb25z
dAogICAgICAgICB8fCBtX21hdGNoID09IENTU1NlbGVjdG9yOjpFbmQ7CiB9CiAKK2lubGluZSBi
b29sIENTU1NlbGVjdG9yOjppc1JlZmVyZW5jZUNvbWJpbmF0b3IoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3JlbGF0aW9uID09IENTU1NlbGVjdG9yOjpSZWZlcmVuY2U7Cit9CisKIGlubGluZSB2
b2lkIENTU1NlbGVjdG9yOjpzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewog
ICAgIC8vIE5lZWQgdG8gZG8gcmVmIGNvdW50aW5nIG1hbnVhbGx5IGZvciB0aGUgdW5pb24uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCmluZGV4IDQzMTM2ZDFjOTAxYzYzNDFi
YWNiZWY4Mzk0OWRmOTRlNjBmMWMzNmMuLjkxNTM1NmE1NThhMDczZmYxY2UzNDA2YmQyNjIwMjFm
YzkzMmQyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCkBAIC0yMTIs
NSArMjEyLDE4IEBAIGJvb2wgQ1NTU2VsZWN0b3JMaXN0OjpoYXNJbnZhbGlkU2VsZWN0b3IoKSBj
b25zdAogfQogCiAKK2NsYXNzIFNlbGVjdG9ySGFzU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvciB7
CitwdWJsaWM6CisgICAgYm9vbCBvcGVyYXRvcigpKENTU1NlbGVjdG9yKiBzZWxlY3RvcikKKyAg
ICB7CisgICAgICAgIHJldHVybiBzZWxlY3Rvci0+aXNSZWZlcmVuY2VDb21iaW5hdG9yKCkgJiYg
c2VsZWN0b3ItPnJlZmVyZW5jZSgpID09ICJzZWxlY3QiOworICAgIH0KK307CisKK2Jvb2wgQ1NT
U2VsZWN0b3JMaXN0OjpoYXNTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yKCkgY29uc3QKK3sKKyAg
ICBTZWxlY3Rvckhhc1NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3IgZnVuY3RvcjsKKyAgICByZXR1
cm4gZm9yRWFjaFNlbGVjdG9yKGZ1bmN0b3IsIHRoaXMpOworfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgKaW5kZXggNGZjZmVlMmZhYTQx
ODJkN2E5YWIwNTViY2NlNTE5ZmU3NGUyMjcxNS4uZjY5MTAzYjgyNTM0YzQ3ZWYzMTg3ZGJiYzNj
YjQ0ZmI2MTAyNTdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaApAQCAtNTks
NiArNTksNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHNlbGVjdG9yc05lZWROYW1lc3BhY2VSZXNv
bHV0aW9uKCk7CiAgICAgYm9vbCBoYXNJbnZhbGlkU2VsZWN0b3IoKSBjb25zdDsKKyAgICBib29s
IGhhc1NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3IoKSBjb25zdDsKIAogICAgIFN0cmluZyBzZWxl
Y3RvcnNUZXh0KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxl
U2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAppbmRleCA5YTc4YzBmZjkw
Mzg5YzkwYzQ0ZGE1YTZiOWY1ZmY3YWUyMGM2ZTMxLi45OGE0ZDQ1ZjFiMTAwZThmZTNiMTJlMzFk
M2M2YTA2ZTAwZmQ2ZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCkBAIC0yNjMsNiArMjYzLDcg
QEAgdm9pZCBSdWxlU2V0OjphZGRSZWdpb25SdWxlKFN0eWxlUnVsZVJlZ2lvbiogcmVnaW9uUnVs
ZSwgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXQKICAgICBtX3JlZ2lvblNlbGVjdG9yc0FuZFJ1bGVT
ZXRzLmFwcGVuZChSdWxlU2V0U2VsZWN0b3JQYWlyKHJlZ2lvblJ1bGUtPnNlbGVjdG9yTGlzdCgp
LmZpcnN0KCksIHJlZ2lvblJ1bGVTZXQucmVsZWFzZSgpKSk7CiB9CiAKKwogdm9pZCBSdWxlU2V0
OjphZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVudHMqIHNoZWV0LCBjb25zdCBNZWRp
YVF1ZXJ5RXZhbHVhdG9yJiBtZWRpdW0sIFN0eWxlUmVzb2x2ZXIqIHJlc29sdmVyLCBjb25zdCBD
b250YWluZXJOb2RlKiBzY29wZSkKIHsKICAgICBBU1NFUlQoc2hlZXQpOwpAQCAtMjgxLDggKzI4
MiwxNSBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50
cyogc2hlZXQsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdQogICAgICAgICBTdHlsZVJ1bGVCYXNlKiBy
dWxlID0gcnVsZXNbaV0uZ2V0KCk7CiAKICAgICAgICAgQVNTRVJUKCFydWxlLT5pc0ltcG9ydFJ1
bGUoKSk7Ci0gICAgICAgIGlmIChydWxlLT5pc1N0eWxlUnVsZSgpKQotICAgICAgICAgICAgYWRk
U3R5bGVSdWxlKHN0YXRpY19jYXN0PFN0eWxlUnVsZSo+KHJ1bGUpLCBhZGRSdWxlRmxhZ3MpOwor
ICAgICAgICBpZiAocnVsZS0+aXNTdHlsZVJ1bGUoKSkgeworICAgICAgICAgICAgU3R5bGVSdWxl
KiBzdHlsZVJ1bGUgPSBzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihydWxlKTsKKyAgICAgICAgICAg
IGlmIChzY29wZSAmJiBzdHlsZVJ1bGUtPnNlbGVjdG9yTGlzdCgpLmhhc1NlbGVjdFJlZmVyZW5j
ZUNvbWJpbmF0b3IoKSkKKyAgICAgICAgICAgICAgICByZXNvbHZlci0+YWRkU2VsZWN0UmVmZXJl
bmNlQ29tYmluYXRvclJ1bGUoc3R5bGVSdWxlLCBjb25zdF9jYXN0PENvbnRhaW5lck5vZGUqPihz
Y29wZSkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFR1
cm4gZmxhZyB3aGVuIHBhcnNpbmcuCisgICAgICAgICAgICAgICAgYWRkU3R5bGVSdWxlKHN0eWxl
UnVsZSwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBl
bHNlIGlmIChydWxlLT5pc1BhZ2VSdWxlKCkpCiAgICAgICAgICAgICBhZGRQYWdlUnVsZShzdGF0
aWNfY2FzdDxTdHlsZVJ1bGVQYWdlKj4ocnVsZSkpOwogICAgICAgICBlbHNlIGlmIChydWxlLT5p
c01lZGlhUnVsZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4
IDM4ZDQxZjc4NDg4NjVkYzhhYzNjMTY0OTE5MjYzODY0NjU5MWJkMzIuLjViYjViMzE3ZTc0MjBm
MGE1ZDY0MjVjMDRkODgyZjY5YjVjZTg3M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNo
ZWNrZXIuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MUHJvZ3Jlc3NFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFN0eWxl
RWxlbWVudC5oIgorI2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgpAQCAtMTk1LDYgKzE5Niw3IEBAIHZvaWQgU2VsZWN0b3JDaGVja2VyOjpj
b2xsZWN0SWRlbnRpZmllckhhc2hlcyhjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIHVuc2ln
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RGVzY2VuZGFu
dDoKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6Q2hpbGQ6CisgICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OlJlZmVyZW5jZToKICAgICAgICAgICAgIHNraXBPdmVyU3Vic2VsZWN0b3JzID0gZmFs
c2U7CiAgICAgICAgICAgICBjb2xsZWN0RGVzY2VuZGFudFNlbGVjdG9ySWRlbnRpZmllckhhc2hl
cyhzZWxlY3RvciwgaGFzaCwgZW5kKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDc1LDggKzQ3
NywxMSBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpj
aGVja1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlYwogCiAgICAgLy8gUHJlcGFyZSBuZXh0IHNl
bGVjdG9yCiAgICAgQ1NTU2VsZWN0b3IqIGhpc3RvcnlTZWxlY3RvciA9IGNvbnRleHQuc2VsZWN0
b3ItPnRhZ0hpc3RvcnkoKTsKLSAgICBpZiAoIWhpc3RvcnlTZWxlY3RvcikKKyAgICBpZiAoIWhp
c3RvcnlTZWxlY3RvcikgeworICAgICAgICBpZiAoY29udGV4dC5zY29wZU9mTGFzdEVsZW1lbnQp
CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5zY29wZU9mTGFzdEVsZW1lbnQtPnRyZWVTY29w
ZSgpID09IGNvbnRleHQuZWxlbWVudC0+dHJlZVNjb3BlKCkgPyBTZWxlY3Rvck1hdGNoZXMgOiBT
ZWxlY3RvckZhaWxzTG9jYWxseTsKICAgICAgICAgcmV0dXJuIFNlbGVjdG9yTWF0Y2hlczsKKyAg
ICB9CiAKICAgICBTZWxlY3RvckNoZWNraW5nQ29udGV4dCBuZXh0Q29udGV4dChjb250ZXh0KTsK
ICAgICBuZXh0Q29udGV4dC5zZWxlY3RvciA9IGhpc3RvcnlTZWxlY3RvcjsKQEAgLTU4MCw2ICs1
ODUsMjUgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6
Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWMKICAgICAgICAgICAgIG5leHRDb250ZXh0
LmVsZW1lbnRQYXJlbnRTdHlsZSA9IDA7CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3Rv
cihuZXh0Q29udGV4dCwgaWdub3JlRHluYW1pY1BzZXVkbyk7CiAgICAgICAgIH0KKworICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlJlZmVyZW5jZToKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGNv
bnRleHQuc2VsZWN0b3ItPnJlZmVyZW5jZSgpICE9ICJzZWxlY3QiKQorICAgICAgICAgICAgICAg
IHJldHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKKworICAgICAgICAgICAgVmVjdG9yPElu
c2VydGlvblBvaW50Kj4gaW5zZXJ0aW9uUG9pbnRzOworICAgICAgICAgICAgY29sbGVjdEFsbE1p
ZHBvaW50SW5zZXJ0aW9uUG9pbnRzKGNvbnRleHQuZWxlbWVudCwgaW5zZXJ0aW9uUG9pbnRzKTsK
KyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zZXJ0aW9uUG9pbnRzLnNpemUo
KTsgKytpKSB7CisgICAgICAgICAgICAgICAgbmV4dENvbnRleHQuZWxlbWVudCA9IGluc2VydGlv
blBvaW50c1tpXTsKKyAgICAgICAgICAgICAgICBuZXh0Q29udGV4dC5pc1N1YlNlbGVjdG9yID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgbmV4dENvbnRleHQuZWxlbWVudFN0eWxlID0gMDsKKyAg
ICAgICAgICAgICAgICBuZXh0Q29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgPSAwOworICAgICAg
ICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKG5leHRDb250ZXh0
LCBpZ25vcmVEeW5hbWljUHNldWRvKTsKKyAgICAgICAgICAgICAgICBpZiAobWF0Y2ggPT0gU2Vs
ZWN0b3JNYXRjaGVzIHx8IG1hdGNoID09IFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5KQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxl
Y3RvckNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAppbmRl
eCA5YmRiNjY5YjI0NmVlNjQzZDVlMmVlMjJiNWExYTI0ZWUwOTE4ZTZhLi40N2IzOTBjZTc5YTE4
OTRiNWQ0YmQyOTZiMDMyNWE1ZmY2NTIyYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU2VsZWN0b3JDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlci5oCkBAIC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICwgaXNTdWJTZWxl
Y3RvcihmYWxzZSkKICAgICAgICAgICAgICwgaGFzU2Nyb2xsYmFyUHNldWRvKGZhbHNlKQogICAg
ICAgICAgICAgLCBoYXNTZWxlY3Rpb25Qc2V1ZG8oZmFsc2UpCisgICAgICAgICAgICAsIHNjb3Bl
T2ZMYXN0RWxlbWVudCgwKQogICAgICAgICB7IH0KIAogICAgICAgICBDU1NTZWxlY3Rvciogc2Vs
ZWN0b3I7CkBAIC03OSw2ICs4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc1N1YlNlbGVj
dG9yOwogICAgICAgICBib29sIGhhc1Njcm9sbGJhclBzZXVkbzsKICAgICAgICAgYm9vbCBoYXNT
ZWxlY3Rpb25Qc2V1ZG87CisgICAgICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlT2ZMYXN0
RWxlbWVudDsKICAgICB9OwogCiAgICAgYm9vbCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwg
RWxlbWVudCosIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IgPSBmYWxzZSkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMDc2NzA0MWZhMTZiNzZiNDllMjY2
MjFlYTllNzMxMjUxYzRiZTFkZS4uYjdhMjM3ZjBlM2EyMDk5NTA2MjQ4NWJhNGQ4NzUyMDQyYTNk
ZmVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMzY2LDYgKzM2Niw3
IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6cmVzZXRBdXRob3JTdHlsZSgpCiB7CiAgICAgbV9hdXRo
b3JTdHlsZSA9IFJ1bGVTZXQ6OmNyZWF0ZSgpOwogICAgIG1fYXV0aG9yU3R5bGUtPmRpc2FibGVB
dXRvU2hyaW5rVG9GaXQoKTsKKyAgICBtX3NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0
TWFwLmNsZWFyKCk7CiB9CiAKIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwZW5kQXV0aG9yU3R5bGVT
aGVldHModW5zaWduZWQgZmlyc3ROZXcsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4gPiYgc3R5bGVTaGVldHMpCkBAIC00NTAsNiArNDUxLDE4IEBAIHZvaWQgU3R5bGVSZXNvbHZl
cjo6YWRkS2V5ZnJhbWVTdHlsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gcnVsZSkK
ICAgICBtX2tleWZyYW1lc1J1bGVNYXAuc2V0KHMuaW1wbCgpLCBydWxlKTsKIH0KIAordm9pZCBT
dHlsZVJlc29sdmVyOjphZGRTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZShTdHlsZVJ1bGUq
IHJ1bGUsIENvbnRhaW5lck5vZGUqIHNjb3BlKQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
bm90IGFkZCBhbiBlbnRpcmUgc3R5bGUgcnVsZSwgYnV0IG9ubHkgYSBzZWxlY3RvciB3aGljaCBo
YXMgYSAnL3NlbGVjdC8nIHJlZmVyZW5jZSBjb21iaW5hdG9yLgorICAgIGlmIChtX3NlbGVjdFJl
ZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0TWFwLmNvbnRhaW5zKHNjb3BlKSkKKyAgICAgICAgbV9z
ZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZVNldE1hcC5nZXQoc2NvcGUpLT5hZGRTdHlsZVJ1
bGUocnVsZSwgUnVsZUhhc05vU3BlY2lhbFN0YXRlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgT3du
UHRyPFJ1bGVTZXQ+IHJ1bGVTZXQgPSBhZG9wdFB0cihuZXcgUnVsZVNldCgpKTsKKyAgICAgICAg
cnVsZVNldC0+YWRkU3R5bGVSdWxlKHJ1bGUsIFJ1bGVIYXNOb1NwZWNpYWxTdGF0ZSk7CisgICAg
ICAgIG1fc2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVTZXRNYXAuYWRkKHNjb3BlLCBydWxl
U2V0LnJlbGVhc2UoKSk7CisgICAgfQorfQorCiBTdHlsZVJlc29sdmVyOjp+U3R5bGVSZXNvbHZl
cigpCiB7CiAgICAgbV9mb250U2VsZWN0b3ItPmNsZWFyRG9jdW1lbnQoKTsKQEAgLTc1Miw3ICs3
NjUsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoU2NvcGVkQXV0aG9yUnVsZXMoTWF0Y2hS
ZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdAogICAgICAgICAgICAgaWYgKCFtX3Njb3Bl
UmVzb2x2ZXItPm1hdGNoZXNTdHlsZUJvdW5kcyhmcmFtZSkpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KLSAgICAgICAgICAgCisKICAgICAgICAgTWF0Y2hPcHRpb25zIG9w
dGlvbnMoaW5jbHVkZUVtcHR5UnVsZXMsIGZyYW1lLm1fc2NvcGUpOwogICAgICAgICBjb2xsZWN0
TWF0Y2hpbmdSdWxlcyhmcmFtZS5tX3J1bGVTZXQsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JS
dWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKICAgICAgICAgY29s
bGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24oZnJhbWUubV9ydWxlU2V0LCByZXN1bHQucmFuZ2Vz
LmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7
CkBAIC03OTMsNiArODA2LDIwIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hIb3N0UnVsZXMo
TWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKICNlbmRpZgogfQog
Cit2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVz
KE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpCit7CisjaWYgRU5B
QkxFKFNIQURPV19ET00pCisgICAgZm9yIChTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZVNl
dE1hcDo6aXRlcmF0b3IgaXQgPSBtX3NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0TWFw
LmJlZ2luKCk7IGl0ICE9IG1fc2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVTZXRNYXAuZW5k
KCk7ICsraXQpIHsKKyAgICAgICAgTWF0Y2hPcHRpb25zIG9wdGlvbnMoaW5jbHVkZUVtcHR5UnVs
ZXMsIDApOworICAgICAgICBvcHRpb25zLnNjb3BlT2ZMYXN0RWxlbWVudCA9IGl0LT5rZXk7Cisg
ICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKGl0LT52YWx1ZS5nZXQoKSwgcmVzdWx0LnJhbmdl
cy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMp
OworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7CisgICAgVU5VU0VEX1BB
UkFNKGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyNlbmRpZgorfQorCiB2b2lkIFN0eWxlUmVzb2x2ZXI6
Om1hdGNoQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlS
dWxlcykKIHsKICAgICBtX21hdGNoZWRSdWxlcy5jbGVhcigpOwpAQCAtODA3LDYgKzgzNCw3IEBA
IHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0
LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzCiAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdp
b24obV9hdXRob3JTdHlsZS5nZXQoKSwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJl
c3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOwogCiAgICAgbWF0Y2hTY29wZWRB
dXRob3JSdWxlcyhyZXN1bHQsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyAgICBtYXRjaFNlbGVjdFJl
ZmVyZW5jZUNvbWJpbmF0b3JSdWxlcyhyZXN1bHQsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKIAogICAg
IHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhyZXN1bHQpOwogfQpAQCAtODQyLDcgKzg3MCw3
IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0
IFZlY3RvcjxSdWxlRGF0YT4qIHJ1bGVzLCBpCiAKICAgICAvLyBJbiBzb21lIGNhc2VzIHdlIG1h
eSBlbmQgdXAgbG9va2luZyB1cCBzdHlsZSBmb3IgcmFuZG9tIGVsZW1lbnRzIGluIHRoZSBtaWRk
bGUgb2YgYSByZWN1cnNpdmUgdHJlZSByZXNvbHZlLgogICAgIC8vIEFuY2VzdG9yIGlkZW50aWZp
ZXIgZmlsdGVyIHdvbid0IGJlIHVwLXRvLWRhdGUgaW4gdGhhdCBjYXNlIGFuZCB3ZSBjYW4ndCB1
c2UgdGhlIGZhc3QgcGF0aC4KLSAgICBib29sIGNhblVzZUZhc3RSZWplY3QgPSBtX2NoZWNrZXIu
cGFyZW50U3RhY2tJc0NvbnNpc3RlbnQobV9wYXJlbnROb2RlKTsKKyAgICBib29sIGNhblVzZUZh
c3RSZWplY3QgPSBtX2NoZWNrZXIucGFyZW50U3RhY2tJc0NvbnNpc3RlbnQobV9wYXJlbnROb2Rl
KSAmJiAhb3B0aW9ucy5zY29wZU9mTGFzdEVsZW1lbnQ7CiAKICAgICB1bnNpZ25lZCBzaXplID0g
cnVsZXMtPnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
CkBAIC04NTIsNyArODgwLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdS
dWxlc0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogcnVsZXMsIGkKIAogICAgICAgICBT
dHlsZVJ1bGUqIHJ1bGUgPSBydWxlRGF0YS5ydWxlKCk7CiAgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxN
YXRjaFJ1bGUoZG9jdW1lbnQoKSwgcnVsZSk7Ci0gICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHJ1
bGVEYXRhLCBvcHRpb25zLnNjb3BlKSkgeworICAgICAgICBpZiAoY2hlY2tTZWxlY3RvcihydWxl
RGF0YSwgb3B0aW9ucy5zY29wZSwgb3B0aW9ucy5zY29wZU9mTGFzdEVsZW1lbnQpKSB7CiAgICAg
ICAgICAgICAvLyBJZiB0aGUgcnVsZSBoYXMgbm8gcHJvcGVydGllcyB0byBhcHBseSwgdGhlbiBp
Z25vcmUgaXQgaW4gdGhlIG5vbi1kZWJ1ZyBtb2RlLgogICAgICAgICAgICAgY29uc3QgU3R5bGVQ
cm9wZXJ0eVNldCogcHJvcGVydGllcyA9IHJ1bGUtPnByb3BlcnRpZXMoKTsKICAgICAgICAgICAg
IGlmICghcHJvcGVydGllcyB8fCAocHJvcGVydGllcy0+aXNFbXB0eSgpICYmICFvcHRpb25zLmlu
Y2x1ZGVFbXB0eVJ1bGVzKSkgewpAQCAtMjE2Nyw3ICsyMTk1LDcgQEAgUGFzc1JlZlB0cjxDU1NS
dWxlTGlzdD4gU3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVu
dCogZSwgUHMKICAgICByZXR1cm4gbV9ydWxlTGlzdC5yZWxlYXNlKCk7CiB9CiAKLWlubGluZSBi
b29sIFN0eWxlUmVzb2x2ZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRh
LCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSkKK2lubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6
OmNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCBjb25zdCBDb250YWluZXJO
b2RlKiBzY29wZSwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGVPZkxhc3RFbGVtZW50KQogewog
ICAgIG1fZHluYW1pY1BzZXVkbyA9IE5PUFNFVURPOwogCkBAIC0yMTkyLDYgKzIyMjAsNyBAQCBp
bmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJiBy
dWxlRGF0YSwgY29uc3QgQ29udGFpbgogICAgIGNvbnRleHQuZWxlbWVudFN0eWxlID0gc3R5bGUo
KTsKICAgICBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9IG1fcGFyZW50Tm9kZSA/IG1fcGFy
ZW50Tm9kZS0+cmVuZGVyU3R5bGUoKSA6IDA7CiAgICAgY29udGV4dC5zY29wZSA9IHNjb3BlOwor
ICAgIGNvbnRleHQuc2NvcGVPZkxhc3RFbGVtZW50ID0gc2NvcGVPZkxhc3RFbGVtZW50OwogICAg
IGNvbnRleHQucHNldWRvU3R5bGUgPSBtX3BzZXVkb1N0eWxlOwogICAgIFNlbGVjdG9yQ2hlY2tl
cjo6U2VsZWN0b3JNYXRjaCBtYXRjaCA9IG1fY2hlY2tlci5jaGVja1NlbGVjdG9yKGNvbnRleHQs
IG1fZHluYW1pY1BzZXVkbyk7CiAgICAgaWYgKG1hdGNoICE9IFNlbGVjdG9yQ2hlY2tlcjo6U2Vs
ZWN0b3JNYXRjaGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggMDU1ZDgxM2Vk
YjU2YjA1MGNiNjEzMzcyNDU0ODUxMWRjNjBmYjIyYi4uODM0OTc5MTBiZDIzNmU5M2JkMjQwZTg4
MWRlMzcyMzQxYWJjMGRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC0yNjAs
NiArMjYwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRLZXlmcmFtZVN0eWxlKFBhc3NSZWZQ
dHI8U3R5bGVSdWxlS2V5ZnJhbWVzPik7CiAKKyAgICB2b2lkIGFkZFNlbGVjdFJlZmVyZW5jZUNv
bWJpbmF0b3JSdWxlKFN0eWxlUnVsZSosIENvbnRhaW5lck5vZGUqIHNjb3BlKTsKKwogICAgIGJv
b2wgY2hlY2tSZWdpb25TdHlsZShFbGVtZW50KiByZWdpb25FbGVtZW50KTsKIAogICAgIGJvb2wg
dXNlc1NpYmxpbmdSdWxlcygpIGNvbnN0IHsgcmV0dXJuICFtX2ZlYXR1cmVzLnNpYmxpbmdSdWxl
cy5pc0VtcHR5KCk7IH0KQEAgLTMzOCw5ICszNDAsMTEgQEAgcHJpdmF0ZToKICAgICB9OwogCiAg
ICAgc3RydWN0IE1hdGNoT3B0aW9ucyB7Ci0gICAgICAgIE1hdGNoT3B0aW9ucyhib29sIGluY2x1
ZGVFbXB0eVJ1bGVzLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9IDApIDogc2NvcGUoc2Nv
cGUpLCBpbmNsdWRlRW1wdHlSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcykgeyB9CisgICAgICAgIE1h
dGNoT3B0aW9ucyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBjb25zdCBDb250YWluZXJOb2RlKiBz
Y29wZSA9IDApCisgICAgICAgICAgICA6IHNjb3BlKHNjb3BlKSwgaW5jbHVkZUVtcHR5UnVsZXMo
aW5jbHVkZUVtcHR5UnVsZXMpLCBzY29wZU9mTGFzdEVsZW1lbnQoMCkgeyB9CiAgICAgICAgIGNv
bnN0IENvbnRhaW5lck5vZGUqIHNjb3BlOwogICAgICAgICBib29sIGluY2x1ZGVFbXB0eVJ1bGVz
OworICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZU9mTGFzdEVsZW1lbnQ7CiAgICAg
fTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1hdGNoZWRQcm9wZXJ0aWVzKE1hdGNoUmVzdWx0Jiwg
Y29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcywgU3R5bGVSdWxlKiA9IDAsIHVuc2ln
bmVkIGxpbmtNYXRjaFR5cGUgPSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoQWxsLCBib29sIGluUmVn
aW9uUnVsZSA9IGZhbHNlKTsKQEAgLTM1Myw2ICszNTcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
bWF0Y2hVc2VyUnVsZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKICAg
ICB2b2lkIG1hdGNoU2NvcGVkQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1ZGVF
bXB0eVJ1bGVzKTsKICAgICB2b2lkIG1hdGNoSG9zdFJ1bGVzKE1hdGNoUmVzdWx0JiwgYm9vbCBp
bmNsdWRlRW1wdHlSdWxlcyk7CisgICAgdm9pZCBtYXRjaFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0
b3JSdWxlcyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOworCiAgICAgdm9p
ZCBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhSdWxlU2V0KiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50
JiBsYXN0UnVsZUluZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmKTsKICAgICB2b2lkIGNvbGxlY3RN
YXRjaGluZ1J1bGVzRm9yUmVnaW9uKFJ1bGVTZXQqLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQm
IGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYpOwogICAgIHZvaWQgY29sbGVjdE1h
dGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qLCBpbnQmIGZpcnN0UnVs
ZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYpOwpAQCAtMzYw
LDcgKzM2Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzb3J0TWF0Y2hlZFJ1bGVzKCk7CiAgICAg
dm9pZCBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoTWF0Y2hSZXN1bHQmKTsKIAotICAgIGJv
b2wgY2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNj
b3BlKTsKKyAgICBib29sIGNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmLCBjb25zdCBDb250
YWluZXJOb2RlKiBzY29wZSwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGVPZkxhc3RFbGVtZW50
KTsKICAgICBib29sIGNoZWNrUmVnaW9uU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHJlZ2lvblNlbGVj
dG9yLCBFbGVtZW50KiByZWdpb25FbGVtZW50KTsKICAgICB2b2lkIGFwcGx5TWF0Y2hlZFByb3Bl
cnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBjb25zdCBFbGVtZW50Kik7CiAgICAgZW51bSBTdHls
ZUFwcGxpY2F0aW9uUGFzcyB7CkBAIC0zOTEsNiArMzk3LDkgQEAgcHJpdmF0ZToKICAgICBPd25Q
dHI8UnVsZVNldD4gbV9hdXRob3JTdHlsZTsKICAgICBPd25QdHI8UnVsZVNldD4gbV91c2VyU3R5
bGU7CiAKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ29udGFpbmVyTm9kZSosIE93blB0cjxS
dWxlU2V0PiA+IFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0TWFwOworICAgIFNlbGVj
dFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0TWFwIG1fc2VsZWN0UmVmZXJlbmNlQ29tYmluYXRv
clJ1bGVTZXRNYXA7CisKICAgICBSdWxlRmVhdHVyZVNldCBtX2ZlYXR1cmVzOwogICAgIE93blB0
cjxSdWxlU2V0PiBtX3NpYmxpbmdSdWxlU2V0OwogICAgIE93blB0cjxSdWxlU2V0PiBtX3VuY29t
bW9uQXR0cmlidXRlUnVsZVNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVNjb3BlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZl
ci5jcHAKaW5kZXggNWZmMmIzZTBiMTE1NDk5NDQ3ZTIxYzg2ZjU4ZjY0NjEzMDFjZjBmZC4uOTVm
NjlhNjg0MWNkMDQzOGYyMjM0YjFjMDY5MWJiOWJlYTVmOTI3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAKQEAgLTc5LDggKzc5LDkgQEAgY29uc3QgQ29udGFp
bmVyTm9kZSogU3R5bGVTY29wZVJlc29sdmVyOjpzY29wZUZvcihjb25zdCBDU1NTdHlsZVNoZWV0
KiBzaGVldCkKIAogaW5saW5lIFJ1bGVTZXQqIFN0eWxlU2NvcGVSZXNvbHZlcjo6cnVsZVNldEZv
cihjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSkgY29uc3QKIHsKLSAgICBpZiAoIXNjb3BlLT5o
YXNTY29wZWRIVE1MU3R5bGVDaGlsZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgIGlmICghc2Nv
cGUtPmhhc1Njb3BlZEhUTUxTdHlsZUNoaWxkKCkpCisgICAgICAgcmV0dXJuIDA7CisKICAgICBT
Y29wZWRSdWxlU2V0TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fYXV0aG9yU3R5bGVzLmZpbmQo
c2NvcGUpOwogICAgIHJldHVybiBpdCAhPSBtX2F1dGhvclN0eWxlcy5lbmQoKSA/IGl0LT52YWx1
ZS5nZXQoKSA6IDA7IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBv
aW50LmgKaW5kZXggZDRiN2Q3ZDBkOTEzMDNjNjA3MGQ1OWE5MWVjNjhkNzZlM2RmYjRiNS4uNTZj
MWRmZjFmMzE3Y2NhNWVjNjJhODNlMGVkYjhiOTY4YTcwZGUxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC0xNzEsNiArMTcxLDM3IEBAIGlubGlu
ZSBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKiBwcm9qZWN0
ZWROb2RlKQogICAgIHJldHVybiBpbnNlcnRpb25Qb2ludDsKIH0KIAorLy8gRklYTUU6IENvbGxl
Y3RzIG9ubHkgQ29udGVudHNFbGVtZW50cyBzaW5jZSAvc2VsZWN0LyByZWZlcmVuY2UgY29tYmlu
YXRvciBjYW4gYmUKKy8vIGFwcGxpZWQgdG8gb25seSA8Y29udGVudHM+CitpbmxpbmUgdm9pZCBj
b2xsZWN0QWxsTWlkcG9pbnRJbnNlcnRpb25Qb2ludHMoY29uc3QgTm9kZSogcHJvamVjdGVkTm9k
ZSwgVmVjdG9yPEluc2VydGlvblBvaW50Kj4mIHJlc3VsdHMpCit7CisgICAgSW5zZXJ0aW9uUG9p
bnQqIGluc2VydGlvblBvaW50ID0gMDsKKyAgICBjb25zdCBOb2RlKiBjdXJyZW50ID0gcHJvamVj
dGVkTm9kZTsKKworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGlmIChFbGVtZW50U2hhZG93
KiBzaGFkb3cgPSBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbihjdXJyZW50KSkgeworICAg
ICAgICAgICAgc2hhZG93LT5lbnN1cmVEaXN0cmlidXRpb24oKTsKKyAgICAgICAgICAgIGlmIChJ
bnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5maW5kSW5z
ZXJ0aW9uUG9pbnRGb3IocHJvamVjdGVkTm9kZSkpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50
ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAgICBpbnNlcnRpb25Qb2ludCA9IGluc2VydGVk
VG87CisgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoaW5zZXJ0aW9uUG9pbnQpOworICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgaWYgKE5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGVGb3JEaXN0cmlidXRpb24oY3VycmVudCkp
IHsKKyAgICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHBhcmVudC0+
aXNTaGFkb3dSb290KCkgPyB0b1NoYWRvd1Jvb3QocGFyZW50KS0+YXNzaWduZWRUbygpIDogMCkg
eworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAg
IGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAgICByZXN1bHRzLmFw
cGVuZChpbnNlcnRpb25Qb2ludCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm47CisgICAgfQorfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBJbnNlcnRpb25Qb2ludF9oCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzk2
M2M2MGQzNWI5NjhiOWZjNzZjMzgyNTdiNTExNTI5NmViODM2Yy4uYTQ5OTJiM2U5NmJiYmZjMGY2
NDcyOWFlNzNlMDE4ZjI2MzIxMTY5ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTExLTA3
ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERP
TV0gTmVlZHMgL3NlbGVjdC8gcmVmZXJlbmNlIGNvbWJpbmF0b3IKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMTY5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0
aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVu
Y3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9z
aGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3IuaHRt
bDogQWRkZWQuCisKIDIwMTItMTEtMjAgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW0pTQ10gTXV0YXRpb25PYnNlcnZlciB3cmFwcGVyIHNob3VsZCBub3QgYmUg
Y29sbGVjdGVkIHdoaWxlIHN0aWxsIG9ic2VydmluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRv
ci1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyNGZkZmI5M2Y2Y2U1NWI3MzZjOTZlM2U3M2Zl
MmE1YmNhOTE1MGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwx
OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+
Cis8ZGl2PgorICA8ZGl2PnNoYWRvdyBjaGlsZDwvZGl2PgorICA8ZGl2PgorICAgIDxkaXY+Cisg
ICAgICA8ZGl2PgorICAgICAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+
CisgICAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgICAgIDwv
ZGl2PgorICAgIDwvZGl2PgorICA8L2Rpdj4KKyAgPGRpdiBzdHlsZT0iY29sb3I6IGJsdWUiPmJs
dWU8L2Rpdj4KKyAgPGRpdiBzdHlsZT0iY29sb3I6IHJlZCI+cmVkPC9kaXY+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJl
ZmVyZW5jZS1jb21iaW5hdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2Vs
ZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhkZWVhY2E2NmM4MGEw
ZjY3YWY4NTZjNTQ0YzQxZmZkMTE2MGNiMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3IuaHRtbApAQCAtMCww
ICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2RpdiBj
b250ZW50IC9zZWxlY3QvIGRpdiBkaXYgeyBjb2xvcjogZ3JlZW47IH0nCisgICAgKyAnICNzaGFk
b3ctY29udGVudCAvc2VsZWN0LyBkaXYuYmx1ZSB7IGNvbG9yOiBibHVlOyB9JworICAgICsgJyAj
c2hhZG93LWNvbnRlbnQgL3NlbGVjdC8gZGl2LnJlZCB7IGNvbG9yOiByZWQ7IH0nOworCit2YXIg
c2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFw
cGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAg
ICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwK
KyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3NoYWRvdyBjaGlsZCcpKSwKKyAg
ICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnZGl2LmdyZWVuJ30p
KSksCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J2lkJzogJ3NoYWRv
dy1jb250ZW50JywgJ3NlbGVjdCc6ICdkaXYnfSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHsnY2xhc3MnOiAnZ3JlZW4nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHsnY2xhc3MnOiAnYmx1ZSd9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ2JsdWUnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2
JywgeydjbGFzcyc6ICdyZWQnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCdyZWQnKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175404</attachid>
            <date>2012-11-21 03:25:56 -0800</date>
            <delta_ts>2012-11-21 22:38:46 -0800</delta_ts>
            <desc>Ready for review. Let me file another bugs later.</desc>
            <filename>bug-82169-20121121202343.patch</filename>
            <type>text/plain</type>
            <size>33461</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzg5NzhjMmZiNjkyZmM3
MmNlNmI4NDIzMTNmMTIyMTAzYzMzYzgzOC4uODA3MWJhODdhYWQ0OWI2NjAxMjU4MmY4YjZjOTky
OGYwYjRjMzYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDEyLTEwLTIzICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gSW1w
bGVtZW50cyBhIC9zZWxlY3QvIHJlZmVyZW5jZSBjb21iaW5hdG9yLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIxNjkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgJ3NlbGVjdCcgcmVm
ZXJlbmNlIGNvbWJpbmF0b3IuCisgICAgICAgIFNlZSB0aGUgU2VsZWN0b3JzIExldmVsIDQgc3Bl
Y2lmaWNhdGlvbiBhbmQgdGhlIFNoYWRvdyBET00gc3BlY2lmaWNhdGlvbiBmb3IgdGhlIGRldGFp
bC4KKworICAgICAgICBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9zZWxlY3RvcnM0LyNpZHJlZi1j
b21iaW5hdG9ycworICAgICAgICBodHRwOi8vZHZjcy53My5vcmcvaGcvd2ViY29tcG9uZW50cy9y
YXctZmlsZS90aXAvc3BlYy9zaGFkb3cvaW5kZXguaHRtbCNzZWxlY3Rpbmctbm9kZXMtZGlzdHJp
YnV0ZWQtdG8taW5zZXJ0aW9uLXBvaW50cworCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50
cyBhIHNlbGVjdCByZWZlcmVuY2UgY29tYmluYXRvciBhcyB0aGUgZmlyc3QKKyAgICAgICAgcmVm
ZXJlbmNlIGNvbWJpbmF0b3IgaW1wbGVtZW50ZWQgaW4gV2ViS2l0LiAgU2luY2UgV2ViS2l0IGhh
cyBub3QKKyAgICAgICAgc3VwcG9ydGVkIHJlZmVyZW5jZSBjb21iaW5hdG9ycyBzbyBmYXIsIENT
UyBncmFtbWVyIGFuZCBwYXJzZXIgYXJlCisgICAgICAgIHVwZGF0ZWQgdG8gc3VwcG9ydCB0aGUg
bmV3IHN5bnRheCB1c2VkIGluIFNlbGVjdG9yIExldmVsNCdzCisgICAgICAgIHJlZmVyZW5jZSBj
b21iaW5hdG9ycy4KKworICAgICAgICBBIHNlbGVjdCByZWZlcmVuY2UgY29tYmluYXRvciBpcyB0
aGUgZmlyc3QgQ1NTIHJ1bGUgd2hpY2ggY3Jvc3NlcworICAgICAgICB0aGUgc2hhZG93IGJvdW5k
YXJ5IGZyb20gYSBzaGFkb3cgdHJlZSB0byB0aGUgdHJlZSBvZiBpdHMgc2hhZG93CisgICAgICAg
IGhvc3QuIFRoYXQgbWVhbnMgYSBzZWxlY3QgcmVmZXJlbmNlIGNvbWJpbmF0b3IgaXMgZGVmaW5l
ZCBpbgorICAgICAgICBzaGFkb3cgdHJlZSwgYnV0IHRoZSBub2RlIHdoaWNoIGlzIG1hdGNoZWQg
aW4gdGhlIHJ1bGUgaXMgb3V0c2lkZQorICAgICAgICBvZiB0aGUgc2hhZG93IHRyZWUuCisKKyAg
ICAgICAgU28gd2UgY2Fubm90IHByZWRpY3QgYSBzY29wZSB3aGVyZSB0aGUgbWF0Y2hlZCBub2Rl
IHdpbGwgYmUgYmVmb3JlaGFuZC4KKyAgICAgICAgQ3VycmVudCBDU1MgaW1wbGVtZW50YXRpb24g
YXNzdW1lcyBldmVyeSBmaW5hbCB0YXJnZXQgaXMgYXBwbGllZCBpbiBjdXJyZW50IHNjb3BlLgor
CisgICAgICAgIFRvIG92ZXJjb21lIHRoaXMgaXNzdWUsIEkgdXBkYXRlZCBTdHlsZVJlc29sdmVy
IHNvIHRoYXQgaXQgaGFzCisgICAgICAgIFNlbGVjdFJlZmVyZWNlQ29tYmluYXRvclJ1bGVTZXRN
YXAuIFRoZSBSdWxlU2V0TWFwIGlzIHVzZWQgdG8ga2VlcAorICAgICAgICB0cmFjayBvZiBSdWxl
U2V0IG1hcHBlZCBieSBhIHNjb3BlIHdoZXJlIGEgc2VsZWN0IHJlZmVyZW5jZQorICAgICAgICBj
b21iaW5hdG9yIGlzIG9yaWdpbmFsbHkgZGVmaW5lZC4gVGhlIHNjb3BlIGlzIHVzZWQgdG8gY2hl
Y2sKKyAgICAgICAgd2hldGhlciB0aGUgbGFzdCBlbGVtZW50IG1hdGNoZWQgYnkgU2VsZWN0b3JD
aGVja2VyIGV4aXN0cyBpbiB0aGUKKyAgICAgICAgc2NvcGUgd2hlcmUgdGhlIHJ1bGUgaXMgb3Jp
Z2luYWxseSBkZWZpbmVkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9zaGFkb3cvc2VsZWN0
LXJlZmVyZW5jZS1jb21iaW5hdG9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRv
dy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItbmVzdGVkLmh0bWwKKworICAgICAgICAqIGNz
cy9DU1NHcmFtbWFyLnkuaW46CisgICAgICAgICogY3NzL0NTU1BhcnNlclZhbHVlcy5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnNldFJlZmVyZW5jZSk6CisgICAgICAg
ICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpz
ZWxlY3RvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnNldFJlZmVyZW5j
ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpS
YXJlRGF0YTo6UmFyZURhdGEpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOgorICAgICAg
ICAoQ1NTU2VsZWN0b3IpOgorICAgICAgICAoUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU2VsZWN0b3I6OnJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1NlbGVjdG9yOjppc1JlZmVyZW5jZUNvbWJpbmF0b3IpOgorICAgICAgICAqIGNz
cy9DU1NTZWxlY3Rvckxpc3QuY3BwOgorICAgICAgICAoU2VsZWN0b3JIYXNTZWxlY3RSZWZlcmVu
Y2VDb21iaW5hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9ySGFzU2VsZWN0UmVmZXJl
bmNlQ29tYmluYXRvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1NlbGVjdG9yTGlzdDo6aGFzU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvcik6
CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yTGlzdC5oOgorICAgICAgICAoQ1NTU2VsZWN0b3JM
aXN0KToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KToKKyAgICAgICAgKiBj
c3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tl
cjo6Y29sbGVjdElkZW50aWZpZXJIYXNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JD
aGVja2VyOjpjaGVja1NlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250
ZXh0OjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCk6CisgICAgICAgIChTZWxlY3RvckNoZWNraW5n
Q29udGV4dCk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6cmVzZXRBdXRob3JTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJlc29sdmVyOjphZGRTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Om1hdGNoU2Nv
cGVkQXV0aG9yUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bWF0Y2hT
ZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSZXNvbHZlcjo6Y2hlY2tTZWxlY3Rvcik6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIu
aDoKKyAgICAgICAgKFN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNv
bHZlcjo6TWF0Y2hPcHRpb25zOjpNYXRjaE9wdGlvbnMpOgorICAgICAgICAoTWF0Y2hPcHRpb25z
KToKKyAgICAgICAgKiBjc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlU2NvcGVSZXNvbHZlcjo6cnVsZVNldEZvcik6CisgICAgICAgICogaHRtbC9zaGFk
b3cvSW5zZXJ0aW9uUG9pbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Y29sbGVjdEFsbE1pZHBvaW50SW5zZXJ0aW9uUG9pbnRzKToKKwogMjAxMi0xMS0yMCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIDclIHJlZ3Jlc3Npb24gaW4g
ZHJvbWFlb19kb21jb3JlcXVlcnkvZG9tX3F1ZXJ5X2dldEVsZW1lbnRzQnlUYWdOYW1lX19ub3Rf
aW5fZG9jdW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnku
aW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCmluZGV4IDIxYjAxNjEzNWJh
NThlNGUyMDRlZjc2OWExOTdmMGI4NzE0YjZlOTQuLmJhYjg4MjJhZThjZDJlZjA3NDY0MTg1MDRm
YjA0ZmU5YTZmZGYyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFy
LnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgpAQCAtMjg5LDYg
KzI4OSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGNzc3l5ZXJyb3Iodm9pZCosIGNvbnN0IGNoYXIq
KQogCiAldHlwZSA8c3RyaW5nPiBlbGVtZW50X25hbWUKICV0eXBlIDxzdHJpbmc+IGF0dHJfbmFt
ZQorJXR5cGUgPHN0cmluZz4gcmVmZXJlbmNlX2NvbWJpbmF0b3IKIAogJSUKIApAQCAtMTAwMSw2
ICsxMDAyLDE1IEBAIGNvbWJpbmF0b3I6CiAgIHwgJz4nIG1heWJlX3NwYWNlIHsgJCQgPSBDU1NT
ZWxlY3Rvcjo6Q2hpbGQ7IH0KICAgOwogCityZWZlcmVuY2VfY29tYmluYXRvcjoKKyAgJy8nIElE
RU5UICcvJyBtYXliZV9zcGFjZSB7CisgICAgICAgIENTU1BhcnNlclN0cmluZyYgc3RyID0gJDI7
CisgICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5pc0hUTUxEb2N1bWVudCkKKyAgICAgICAg
ICAgIHN0ci5sb3dlcigpOworICAgICAgICAkJCA9IHN0cjsKKyAgfQorICA7CisKIG1heWJlX3Vu
YXJ5X29wZXJhdG9yOgogICAgIHVuYXJ5X29wZXJhdG9yIHsgJCQgPSAkMTsgfQogICAgIHwgeyAk
JCA9IDE7IH0KQEAgLTEwOTYsNiArMTEwNiwyMCBAQCBzZWxlY3RvcjoKICAgICAgICAgICAgIGVu
ZC0+c2V0VGFnSGlzdG9yeShwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQxKSk7CiAgICAg
ICAgIH0KICAgICB9CisgICAgfCBzZWxlY3RvciByZWZlcmVuY2VfY29tYmluYXRvciBzaW1wbGVf
c2VsZWN0b3IgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlJlZmVyZW5jZSBDb21iaW5hdG9y
IVxuIik7CisgICAgICAgICQkID0gJDM7CisgICAgICAgIGlmICghJDEpCisgICAgICAgICAgICAk
JCA9IDA7CisgICAgICAgIGVsc2UgaWYgKCQkKSB7CisgICAgICAgICAgICBDU1NQYXJzZXJTZWxl
Y3RvciogZW5kID0gJCQ7CisgICAgICAgICAgICB3aGlsZSAoZW5kLT50YWdIaXN0b3J5KCkpCisg
ICAgICAgICAgICAgICAgZW5kID0gZW5kLT50YWdIaXN0b3J5KCk7CisgICAgICAgICAgICBlbmQt
PnNldFJlbGF0aW9uKENTU1NlbGVjdG9yOjpSZWZlcmVuY2UpOworICAgICAgICAgICAgZW5kLT5z
ZXRSZWZlcmVuY2UoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDIsIG51bGxBdG9tKSk7CisgICAg
ICAgICAgICBlbmQtPnNldFRhZ0hpc3RvcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3Rvcigk
MSkpOworICAgICAgICB9CisgICAgfQogICAgIHwgc2VsZWN0b3IgZXJyb3IgewogICAgICAgICAk
JCA9IDA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZh
bHVlcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCmluZGV4IDEzMDFi
MWNlMGUxMTM3MjNjY2Y4MjE2MjhlZTA1ZTJlMzEwMjM2N2IuLmUyM2RlZDUwZTI3OWNjMWQ5ZjE2
MWUwOTY2NGQ0NGVkOGE3OTY3MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXJWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgK
QEAgLTE4Myw2ICsxODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNYXRjaChDU1NTZWxlY3Rv
cjo6TWF0Y2ggdmFsdWUpIHsgbV9zZWxlY3Rvci0+bV9tYXRjaCA9IHZhbHVlOyB9CiAgICAgdm9p
ZCBzZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6UmVsYXRpb24gdmFsdWUpIHsgbV9zZWxlY3Rvci0+
bV9yZWxhdGlvbiA9IHZhbHVlOyB9CiAgICAgdm9pZCBzZXRGb3JQYWdlKCkgeyBtX3NlbGVjdG9y
LT5zZXRGb3JQYWdlKCk7IH0KKyAgICB2b2lkIHNldFJlZmVyZW5jZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5zZXRSZWZlcmVuY2UodmFsdWUpOyB9CiAKICAgICB2
b2lkIGFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4g
PiYgc2VsZWN0b3JWZWN0b3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCBj
OWRkMTkzN2E1OGU2ZjFjODc3YzcxY2M5ODZkNmVkMDZmNTM0NzUwLi5iMGJjNzUxYzgzYWIwZjcz
Y2UxNzU3MzgwYzZkYWYwYzc3OTk2MGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAK
QEAgLTY1NCw2ICs2NTQsOCBAQCBTdHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCgpIGNv
bnN0CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6U2hhZG93RGVzY2VuZGFudDoKICAgICAgICAgICAgIHJldHVybiB0YWdIaXN0b3J5
VGV4dCArIHN0ci50b1N0cmluZygpOworICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpSZWZlcmVu
Y2U6CisgICAgICAgICAgICByZXR1cm4gdGFnSGlzdG9yeVRleHQgKyAiIC8iICsgY3MtPnJlZmVy
ZW5jZSgpLnRvU3RyaW5nKCkgKyAiLyAiICsgIHN0ci50b1N0cmluZygpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC02NjYsNiArNjY4LDEyIEBAIHZvaWQgQ1NTU2VsZWN0b3I6OnNldEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB2YWx1ZSkKICAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9h
dHRyaWJ1dGUgPSB2YWx1ZTsKIH0KIAordm9pZCBDU1NTZWxlY3Rvcjo6c2V0UmVmZXJlbmNlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHZhbHVlKQoreworICAgIGNyZWF0ZVJhcmVEYXRhKCk7CisgICAg
bV9kYXRhLm1fcmFyZURhdGEtPm1fcmVmZXJlbmNlID0gdmFsdWU7Cit9CisKIHZvaWQgQ1NTU2Vs
ZWN0b3I6OnNldEFyZ3VtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgY3Jl
YXRlUmFyZURhdGEoKTsKQEAgLTcyNCw2ICs3MzIsNyBAQCBDU1NTZWxlY3Rvcjo6UmFyZURhdGE6
OlJhcmVEYXRhKFBhc3NSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gdmFsdWUpCiAgICAgLCBtX2Eo
MCkKICAgICAsIG1fYigwKQogICAgICwgbV9hdHRyaWJ1dGUoYW55UU5hbWUoKSkKKyAgICAsIG1f
cmVmZXJlbmNlKGFueVFOYW1lKCkpCiAgICAgLCBtX2FyZ3VtZW50KG51bGxBdG9tKQogewogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCBhZWU1MDc0ZDc1ZjdiYjNmNmU0MTI5NWRkMWJh
YWMwOTc2MzA4NDVmLi42NDQ1MjQxM2NhOGEwNmQ2NmE0MGE1YWViOTZiNDg3ZWM0NTZiNWVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApAQCAtNzYsNyArNzYsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgICAgICBEaXJlY3RBZGphY2VudCwKICAgICAgICAgICAgIEluZGlyZWN0
QWRqYWNlbnQsCiAgICAgICAgICAgICBTdWJTZWxlY3RvciwKLSAgICAgICAgICAgIFNoYWRvd0Rl
c2NlbmRhbnQKKyAgICAgICAgICAgIFNoYWRvd0Rlc2NlbmRhbnQsCisgICAgICAgICAgICBSZWZl
cmVuY2UKICAgICAgICAgfTsKIAogICAgICAgICBlbnVtIFBzZXVkb1R5cGUgewpAQCAtMTk5LDEy
ICsyMDAsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBGSVhNRTogUGVyaGFw
cyBjYWxsIHNpdGVzIGNvdWxkIGJlIGNoYW5nZWQgdG8gYWNjZXB0IEF0b21pY1N0cmluZ0ltcGw/
CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiAqcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBBdG9taWNTdHJpbmcqPihtX2hhc1JhcmVEYXRhID8gJm1fZGF0
YS5tX3JhcmVEYXRhLT5tX3ZhbHVlIDogJm1fZGF0YS5tX3ZhbHVlKTsgfQogICAgICAgICBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUoKSBjb25zdDsKKyAgICAgICAgY29uc3QgUXVhbGlm
aWVkTmFtZSYgcmVmZXJlbmNlKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
YXJndW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2hhc1JhcmVEYXRhID8gbV9kYXRhLm1fcmFyZURh
dGEtPm1fYXJndW1lbnQgOiBudWxsQXRvbTsgfQogICAgICAgICBDU1NTZWxlY3Rvckxpc3QqIHNl
bGVjdG9yTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmFyZURhdGEgPyBtX2RhdGEubV9yYXJl
RGF0YS0+bV9zZWxlY3Rvckxpc3QuZ2V0KCkgOiAwOyB9CiAKICAgICAgICAgdm9pZCBzZXRUYWco
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdmFsdWUpIHsgbV90YWcgPSB2YWx1ZTsgfQogICAgICAgICB2
b2lkIHNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgICAgICB2b2lkIHNldEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgICAgIHZvaWQgc2V0UmVmZXJlbmNlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICAgICAgdm9pZCBzZXRBcmd1bWVudChjb25zdCBBdG9t
aWNTdHJpbmcmKTsKICAgICAgICAgdm9pZCBzZXRTZWxlY3Rvckxpc3QoUGFzc093blB0cjxDU1NT
ZWxlY3Rvckxpc3Q+KTsKIApAQCAtMjE2LDYgKzIxOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgYm9vbCBpc0N1c3RvbVBzZXVkb0VsZW1lbnQoKSBjb25zdDsKICAgICAgICAgYm9v
bCBpc1NpYmxpbmdTZWxlY3RvcigpIGNvbnN0OwogICAgICAgICBib29sIGlzQXR0cmlidXRlU2Vs
ZWN0b3IoKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc1JlZmVyZW5jZUNvbWJpbmF0b3IoKSBjb25z
dDsKIAogICAgICAgICBSZWxhdGlvbiByZWxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFJlbGF0aW9uPihtX3JlbGF0aW9uKTsgfQogCkBAIC0yNTgsNiArMjYyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAgICAgaW50IG1fYTsgLy8gVXNlZCBmb3IgOm50aC0qCiAg
ICAgICAgICAgICBpbnQgbV9iOyAvLyBVc2VkIGZvciA6bnRoLSoKICAgICAgICAgICAgIFF1YWxp
ZmllZE5hbWUgbV9hdHRyaWJ1dGU7IC8vIHVzZWQgZm9yIGF0dHJpYnV0ZSBzZWxlY3RvcgorICAg
ICAgICAgICAgUXVhbGlmaWVkTmFtZSBtX3JlZmVyZW5jZTsgLy8gdXNlZCBmb3IgcmVmZXJlbmNl
IGNvbWJpbmF0b3IKICAgICAgICAgICAgIEF0b21pY1N0cmluZyBtX2FyZ3VtZW50OyAvLyBVc2Vk
IGZvciA6Y29udGFpbnMsIDpsYW5nIGFuZCA6bnRoLSoKICAgICAgICAgICAgIE93blB0cjxDU1NT
ZWxlY3Rvckxpc3Q+IG1fc2VsZWN0b3JMaXN0OyAvLyBVc2VkIGZvciA6LXdlYmtpdC1hbnkgYW5k
IDpub3QKICAgICAgICAgCkBAIC0yODIsNiArMjg3LDEzIEBAIGlubGluZSBjb25zdCBRdWFsaWZp
ZWROYW1lJiBDU1NTZWxlY3Rvcjo6YXR0cmlidXRlKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRh
Lm1fcmFyZURhdGEtPm1fYXR0cmlidXRlOwogfQogCitpbmxpbmUgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgQ1NTU2VsZWN0b3I6OnJlZmVyZW5jZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzUmVmZXJl
bmNlQ29tYmluYXRvcigpKTsKKyAgICBBU1NFUlQobV9oYXNSYXJlRGF0YSk7CisgICAgcmV0dXJu
IG1fZGF0YS5tX3JhcmVEYXRhLT5tX3JlZmVyZW5jZTsKK30KKwogaW5saW5lIGJvb2wgQ1NTU2Vs
ZWN0b3I6Om1hdGNoZXNQc2V1ZG9FbGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAobV9wc2V1ZG9U
eXBlID09IFBzZXVkb1Vua25vd24pCkBAIC0zMjgsNiArMzQwLDExIEBAIGlubGluZSBib29sIENT
U1NlbGVjdG9yOjppc0F0dHJpYnV0ZVNlbGVjdG9yKCkgY29uc3QKICAgICAgICAgfHwgbV9tYXRj
aCA9PSBDU1NTZWxlY3Rvcjo6RW5kOwogfQogCitpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6aXNS
ZWZlcmVuY2VDb21iaW5hdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWxhdGlvbiA9PSBD
U1NTZWxlY3Rvcjo6UmVmZXJlbmNlOworfQorCiBpbmxpbmUgdm9pZCBDU1NTZWxlY3Rvcjo6c2V0
VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyBOZWVkIHRvIGRvIHJl
ZiBjb3VudGluZyBtYW51YWxseSBmb3IgdGhlIHVuaW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3JMaXN0LmNwcAppbmRleCA0MzEzNmQxYzkwMWM2MzQxYmFjYmVmODM5NDlkZjk0ZTYwZjFj
MzZjLi45MTUzNTZhNTU4YTA3M2ZmMWNlMzQwNmJkMjYyMDIxZmM5MzJkMmFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcApAQCAtMjEyLDUgKzIxMiwxOCBAQCBib29sIENT
U1NlbGVjdG9yTGlzdDo6aGFzSW52YWxpZFNlbGVjdG9yKCkgY29uc3QKIH0KIAogCitjbGFzcyBT
ZWxlY3Rvckhhc1NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3IgeworcHVibGljOgorICAgIGJvb2wg
b3BlcmF0b3IoKShDU1NTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgeworICAgICAgICByZXR1cm4g
c2VsZWN0b3ItPmlzUmVmZXJlbmNlQ29tYmluYXRvcigpICYmIHNlbGVjdG9yLT5yZWZlcmVuY2Uo
KSA9PSAic2VsZWN0IjsKKyAgICB9Cit9OworCitib29sIENTU1NlbGVjdG9yTGlzdDo6aGFzU2Vs
ZWN0UmVmZXJlbmNlQ29tYmluYXRvcigpIGNvbnN0Cit7CisgICAgU2VsZWN0b3JIYXNTZWxlY3RS
ZWZlcmVuY2VDb21iaW5hdG9yIGZ1bmN0b3I7CisgICAgcmV0dXJuIGZvckVhY2hTZWxlY3Rvcihm
dW5jdG9yLCB0aGlzKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yTGlzdC5oCmluZGV4IDRmY2ZlZTJmYWE0MTgyZDdhOWFiMDU1YmNjZTUxOWZl
NzRlMjI3MTUuLmY2OTEwM2I4MjUzNGM0N2VmMzE4N2RiYmMzY2I0NGZiNjEwMjU3YmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgog
CiAgICAgYm9vbCBzZWxlY3RvcnNOZWVkTmFtZXNwYWNlUmVzb2x1dGlvbigpOwogICAgIGJvb2wg
aGFzSW52YWxpZFNlbGVjdG9yKCkgY29uc3Q7CisgICAgYm9vbCBoYXNTZWxlY3RSZWZlcmVuY2VD
b21iaW5hdG9yKCkgY29uc3Q7CiAKICAgICBTdHJpbmcgc2VsZWN0b3JzVGV4dCgpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvUnVsZVNldC5jcHAKaW5kZXggOWE3OGMwZmY5MDM4OWM5MGM0NGRhNWE2YjlmNWZm
N2FlMjBjNmUzMS4uOThhNGQ0NWYxYjEwMGU4ZmUzYjEyZTMxZDNjNmEwNmUwMGZkNmYxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9SdWxlU2V0LmNwcApAQCAtMjYzLDYgKzI2Myw3IEBAIHZvaWQgUnVsZVNldDo6YWRk
UmVnaW9uUnVsZShTdHlsZVJ1bGVSZWdpb24qIHJlZ2lvblJ1bGUsIGJvb2wgaGFzRG9jdW1lbnRT
ZWN1cml0CiAgICAgbV9yZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cy5hcHBlbmQoUnVsZVNldFNl
bGVjdG9yUGFpcihyZWdpb25SdWxlLT5zZWxlY3Rvckxpc3QoKS5maXJzdCgpLCByZWdpb25SdWxl
U2V0LnJlbGVhc2UoKSkpOwogfQogCisKIHZvaWQgUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQo
U3R5bGVTaGVldENvbnRlbnRzKiBzaGVldCwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgbWVk
aXVtLCBTdHlsZVJlc29sdmVyKiByZXNvbHZlciwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUp
CiB7CiAgICAgQVNTRVJUKHNoZWV0KTsKQEAgLTI4MSw4ICsyODIsMTUgQEAgdm9pZCBSdWxlU2V0
OjphZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVudHMqIHNoZWV0LCBjb25zdCBNZWRp
YVF1ZXJ5RXZhbHUKICAgICAgICAgU3R5bGVSdWxlQmFzZSogcnVsZSA9IHJ1bGVzW2ldLmdldCgp
OwogCiAgICAgICAgIEFTU0VSVCghcnVsZS0+aXNJbXBvcnRSdWxlKCkpOwotICAgICAgICBpZiAo
cnVsZS0+aXNTdHlsZVJ1bGUoKSkKLSAgICAgICAgICAgIGFkZFN0eWxlUnVsZShzdGF0aWNfY2Fz
dDxTdHlsZVJ1bGUqPihydWxlKSwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAgaWYgKHJ1bGUtPmlz
U3R5bGVSdWxlKCkpIHsKKyAgICAgICAgICAgIFN0eWxlUnVsZSogc3R5bGVSdWxlID0gc3RhdGlj
X2Nhc3Q8U3R5bGVSdWxlKj4ocnVsZSk7CisgICAgICAgICAgICBpZiAoc2NvcGUgJiYgc3R5bGVS
dWxlLT5zZWxlY3Rvckxpc3QoKS5oYXNTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yKCkpCisgICAg
ICAgICAgICAgICAgcmVzb2x2ZXItPmFkZFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlKHN0
eWxlUnVsZSwgY29uc3RfY2FzdDxDb250YWluZXJOb2RlKj4oc2NvcGUpKTsKKyAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUdXJuIGZsYWcgd2hlbiBwYXJzaW5n
LgorICAgICAgICAgICAgICAgIGFkZFN0eWxlUnVsZShzdHlsZVJ1bGUsIGFkZFJ1bGVGbGFncyk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAocnVsZS0+aXNQYWdl
UnVsZSgpKQogICAgICAgICAgICAgYWRkUGFnZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlUGFn
ZSo+KHJ1bGUpKTsKICAgICAgICAgZWxzZSBpZiAocnVsZS0+aXNNZWRpYVJ1bGUoKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCAzOGQ0MWY3ODQ4ODY1ZGM4YWMz
YzE2NDkxOTI2Mzg2NDY1OTFiZDMyLi41YmI1YjMxN2U3NDIwZjBhNWQ2NDI1YzA0ZDg4MmY2OWI1
Y2U4NzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtNDIsNiAr
NDIsNyBAQAogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBy
b2dyZXNzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJJbnNlcnRpb25Qb2ludC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTE5
NSw2ICsxOTYsNyBAQCB2b2lkIFNlbGVjdG9yQ2hlY2tlcjo6Y29sbGVjdElkZW50aWZpZXJIYXNo
ZXMoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCB1bnNpZwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQ6CiAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OkNoaWxkOgorICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpSZWZlcmVuY2U6CiAg
ICAgICAgICAgICBza2lwT3ZlclN1YnNlbGVjdG9ycyA9IGZhbHNlOwogICAgICAgICAgICAgY29s
bGVjdERlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXMoc2VsZWN0b3IsIGhhc2gsIGVu
ZCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ3NSw4ICs0NzcsMTEgQEAgU2VsZWN0b3JDaGVj
a2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBT
ZWxlY3RvckNoZWMKIAogICAgIC8vIFByZXBhcmUgbmV4dCBzZWxlY3RvcgogICAgIENTU1NlbGVj
dG9yKiBoaXN0b3J5U2VsZWN0b3IgPSBjb250ZXh0LnNlbGVjdG9yLT50YWdIaXN0b3J5KCk7Ci0g
ICAgaWYgKCFoaXN0b3J5U2VsZWN0b3IpCisgICAgaWYgKCFoaXN0b3J5U2VsZWN0b3IpIHsKKyAg
ICAgICAgaWYgKGNvbnRleHQuc2NvcGVPZkxhc3RFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJu
IGNvbnRleHQuc2NvcGVPZkxhc3RFbGVtZW50LT50cmVlU2NvcGUoKSA9PSBjb250ZXh0LmVsZW1l
bnQtPnRyZWVTY29wZSgpID8gU2VsZWN0b3JNYXRjaGVzIDogU2VsZWN0b3JGYWlsc0xvY2FsbHk7
CiAgICAgICAgIHJldHVybiBTZWxlY3Rvck1hdGNoZXM7CisgICAgfQogCiAgICAgU2VsZWN0b3JD
aGVja2luZ0NvbnRleHQgbmV4dENvbnRleHQoY29udGV4dCk7CiAgICAgbmV4dENvbnRleHQuc2Vs
ZWN0b3IgPSBoaXN0b3J5U2VsZWN0b3I7CkBAIC01ODAsNiArNTg1LDI1IEBAIFNlbGVjdG9yQ2hl
Y2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoY29uc3Qg
U2VsZWN0b3JDaGVjCiAgICAgICAgICAgICBuZXh0Q29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUg
PSAwOwogICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3IobmV4dENvbnRleHQsIGlnbm9y
ZUR5bmFtaWNQc2V1ZG8pOwogICAgICAgICB9CisKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpSZWZl
cmVuY2U6CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LnNlbGVjdG9yLT5yZWZl
cmVuY2UoKSAhPSAic2VsZWN0IikKKyAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWls
c0NvbXBsZXRlbHk7CisKKyAgICAgICAgICAgIFZlY3RvcjxJbnNlcnRpb25Qb2ludCo+IGluc2Vy
dGlvblBvaW50czsKKyAgICAgICAgICAgIGNvbGxlY3RBbGxNaWRwb2ludEluc2VydGlvblBvaW50
cyhjb250ZXh0LmVsZW1lbnQsIGluc2VydGlvblBvaW50cyk7CisgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGluc2VydGlvblBvaW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAg
ICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnQgPSBpbnNlcnRpb25Qb2ludHNbaV07CisgICAgICAg
ICAgICAgICAgbmV4dENvbnRleHQuaXNTdWJTZWxlY3RvciA9IGZhbHNlOworICAgICAgICAgICAg
ICAgIG5leHRDb250ZXh0LmVsZW1lbnRTdHlsZSA9IDA7CisgICAgICAgICAgICAgICAgbmV4dENv
bnRleHQuZWxlbWVudFBhcmVudFN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICBTZWxlY3Rvck1h
dGNoIG1hdGNoID0gY2hlY2tTZWxlY3RvcihuZXh0Q29udGV4dCwgaWdub3JlRHluYW1pY1BzZXVk
byk7CisgICAgICAgICAgICAgICAgaWYgKG1hdGNoID09IFNlbGVjdG9yTWF0Y2hlcyB8fCBtYXRj
aCA9PSBTZWxlY3RvckZhaWxzQ29tcGxldGVseSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG1hdGNoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHND
b21wbGV0ZWx5OworICAgICAgICB9CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXggOWJkYjY2OWIyNDZlZTY0M2Q1
ZTJlZTIyYjVhMWEyNGVlMDkxOGU2YS4uNDdiMzkwY2U3OWExODk0YjVkNGJkMjk2YjAzMjVhNWZm
NjUyMmI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaApAQCAtNjcsNiArNjcs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAsIGlzU3ViU2VsZWN0b3IoZmFsc2UpCiAgICAgICAg
ICAgICAsIGhhc1Njcm9sbGJhclBzZXVkbyhmYWxzZSkKICAgICAgICAgICAgICwgaGFzU2VsZWN0
aW9uUHNldWRvKGZhbHNlKQorICAgICAgICAgICAgLCBzY29wZU9mTGFzdEVsZW1lbnQoMCkKICAg
ICAgICAgeyB9CiAKICAgICAgICAgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yOwpAQCAtNzksNiArODAs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXNTdWJTZWxlY3RvcjsKICAgICAgICAgYm9vbCBo
YXNTY3JvbGxiYXJQc2V1ZG87CiAgICAgICAgIGJvb2wgaGFzU2VsZWN0aW9uUHNldWRvOworICAg
ICAgICBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZU9mTGFzdEVsZW1lbnQ7CiAgICAgfTsKIAog
ICAgIGJvb2wgY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBib29sIGlzRmFz
dENoZWNrYWJsZVNlbGVjdG9yID0gZmFsc2UpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCmluZGV4IDA3NjcwNDFmYTE2Yjc2YjQ5ZTI2NjIxZWE5ZTczMTI1MWM0YmUxZGUu
LmI3YTIzN2YwZTNhMjA5OTUwNjI0ODViYTRkODc1MjA0MmEzZGZlZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTM2Niw2ICszNjYsNyBAQCB2b2lkIFN0eWxlUmVzb2x2
ZXI6OnJlc2V0QXV0aG9yU3R5bGUoKQogewogICAgIG1fYXV0aG9yU3R5bGUgPSBSdWxlU2V0Ojpj
cmVhdGUoKTsKICAgICBtX2F1dGhvclN0eWxlLT5kaXNhYmxlQXV0b1Nocmlua1RvRml0KCk7Cisg
ICAgbV9zZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZVNldE1hcC5jbGVhcigpOwogfQogCiB2
b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKHVuc2lnbmVkIGZpcnN0
TmV3LCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHN0eWxlU2hlZXRzKQpA
QCAtNDUwLDYgKzQ1MSwxOCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZEtleWZyYW1lU3R5bGUo
UGFzc1JlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IHJ1bGUpCiAgICAgbV9rZXlmcmFtZXNSdWxl
TWFwLnNldChzLmltcGwoKSwgcnVsZSk7CiB9CiAKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkU2Vs
ZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGUoU3R5bGVSdWxlKiBydWxlLCBDb250YWluZXJOb2Rl
KiBzY29wZSkKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBhZGQgYW4gZW50aXJlIHN0
eWxlIHJ1bGUsIGJ1dCBvbmx5IGEgc2VsZWN0b3Igd2hpY2ggaGFzIGEgJy9zZWxlY3QvJyByZWZl
cmVuY2UgY29tYmluYXRvci4KKyAgICBpZiAobV9zZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVs
ZVNldE1hcC5jb250YWlucyhzY29wZSkpCisgICAgICAgIG1fc2VsZWN0UmVmZXJlbmNlQ29tYmlu
YXRvclJ1bGVTZXRNYXAuZ2V0KHNjb3BlKS0+YWRkU3R5bGVSdWxlKHJ1bGUsIFJ1bGVIYXNOb1Nw
ZWNpYWxTdGF0ZSk7CisgICAgZWxzZSB7CisgICAgICAgIE93blB0cjxSdWxlU2V0PiBydWxlU2V0
ID0gYWRvcHRQdHIobmV3IFJ1bGVTZXQoKSk7CisgICAgICAgIHJ1bGVTZXQtPmFkZFN0eWxlUnVs
ZShydWxlLCBSdWxlSGFzTm9TcGVjaWFsU3RhdGUpOworICAgICAgICBtX3NlbGVjdFJlZmVyZW5j
ZUNvbWJpbmF0b3JSdWxlU2V0TWFwLmFkZChzY29wZSwgcnVsZVNldC5yZWxlYXNlKCkpOworICAg
IH0KK30KKwogU3R5bGVSZXNvbHZlcjo6flN0eWxlUmVzb2x2ZXIoKQogewogICAgIG1fZm9udFNl
bGVjdG9yLT5jbGVhckRvY3VtZW50KCk7CkBAIC03NTIsNyArNzY1LDcgQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjptYXRjaFNjb3BlZEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wg
aW5jbHVkZUVtcHQKICAgICAgICAgICAgIGlmICghbV9zY29wZVJlc29sdmVyLT5tYXRjaGVzU3R5
bGVCb3VuZHMoZnJhbWUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0g
ICAgICAgICAgIAorCiAgICAgICAgIE1hdGNoT3B0aW9ucyBvcHRpb25zKGluY2x1ZGVFbXB0eVJ1
bGVzLCBmcmFtZS5tX3Njb3BlKTsKICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMoZnJhbWUu
bV9ydWxlU2V0LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5s
YXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7CiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9y
UmVnaW9uKGZyYW1lLm1fcnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJl
c3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOwpAQCAtNzkzLDYgKzgwNiwyMCBA
QCB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoSG9zdFJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQs
IGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpCiAjZW5kaWYKIH0KIAordm9pZCBTdHlsZVJlc29sdmVy
OjptYXRjaFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0
LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQoreworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAg
IGZvciAoU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVTZXRNYXA6Oml0ZXJhdG9yIGl0ID0g
bV9zZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZVNldE1hcC5iZWdpbigpOyBpdCAhPSBtX3Nl
bGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0TWFwLmVuZCgpOyArK2l0KSB7CisgICAgICAg
IE1hdGNoT3B0aW9ucyBvcHRpb25zKGluY2x1ZGVFbXB0eVJ1bGVzLCAwKTsKKyAgICAgICAgb3B0
aW9ucy5zY29wZU9mTGFzdEVsZW1lbnQgPSBpdC0+a2V5OworICAgICAgICBjb2xsZWN0TWF0Y2hp
bmdSdWxlcyhpdC0+dmFsdWUuZ2V0KCksIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCBy
ZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKKyAgICB9CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShyZXN1bHQpOworICAgIFVOVVNFRF9QQVJBTShpbmNsdWRlRW1wdHlSdWxl
cyk7CisjZW5kaWYKK30KKwogdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaEF1dGhvclJ1bGVzKE1h
dGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpCiB7CiAgICAgbV9tYXRj
aGVkUnVsZXMuY2xlYXIoKTsKQEAgLTgwNyw2ICs4MzQsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6
Om1hdGNoQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlS
dWxlcwogICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKG1fYXV0aG9yU3R5bGUuZ2V0
KCksIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRo
b3JSdWxlLCBvcHRpb25zKTsKIAogICAgIG1hdGNoU2NvcGVkQXV0aG9yUnVsZXMocmVzdWx0LCBp
bmNsdWRlRW1wdHlSdWxlcyk7CisgICAgbWF0Y2hTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVs
ZXMocmVzdWx0LCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAKICAgICBzb3J0QW5kVHJhbnNmZXJNYXRj
aGVkUnVsZXMocmVzdWx0KTsKIH0KQEAgLTg0Miw3ICs4NzAsNyBAQCB2b2lkIFN0eWxlUmVzb2x2
ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBy
dWxlcywgaQogCiAgICAgLy8gSW4gc29tZSBjYXNlcyB3ZSBtYXkgZW5kIHVwIGxvb2tpbmcgdXAg
c3R5bGUgZm9yIHJhbmRvbSBlbGVtZW50cyBpbiB0aGUgbWlkZGxlIG9mIGEgcmVjdXJzaXZlIHRy
ZWUgcmVzb2x2ZS4KICAgICAvLyBBbmNlc3RvciBpZGVudGlmaWVyIGZpbHRlciB3b24ndCBiZSB1
cC10by1kYXRlIGluIHRoYXQgY2FzZSBhbmQgd2UgY2FuJ3QgdXNlIHRoZSBmYXN0IHBhdGguCi0g
ICAgYm9vbCBjYW5Vc2VGYXN0UmVqZWN0ID0gbV9jaGVja2VyLnBhcmVudFN0YWNrSXNDb25zaXN0
ZW50KG1fcGFyZW50Tm9kZSk7CisgICAgYm9vbCBjYW5Vc2VGYXN0UmVqZWN0ID0gbV9jaGVja2Vy
LnBhcmVudFN0YWNrSXNDb25zaXN0ZW50KG1fcGFyZW50Tm9kZSkgJiYgIW9wdGlvbnMuc2NvcGVP
Zkxhc3RFbGVtZW50OwogCiAgICAgdW5zaWduZWQgc2l6ZSA9IHJ1bGVzLT5zaXplKCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewpAQCAtODUyLDcgKzg4MCw3IEBA
IHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZl
Y3RvcjxSdWxlRGF0YT4qIHJ1bGVzLCBpCiAKICAgICAgICAgU3R5bGVSdWxlKiBydWxlID0gcnVs
ZURhdGEucnVsZSgpOwogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29v
a2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTWF0Y2hSdWxlKGRvY3VtZW50KCks
IHJ1bGUpOwotICAgICAgICBpZiAoY2hlY2tTZWxlY3RvcihydWxlRGF0YSwgb3B0aW9ucy5zY29w
ZSkpIHsKKyAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3IocnVsZURhdGEsIG9wdGlvbnMuc2NvcGUs
IG9wdGlvbnMuc2NvcGVPZkxhc3RFbGVtZW50KSkgewogICAgICAgICAgICAgLy8gSWYgdGhlIHJ1
bGUgaGFzIG5vIHByb3BlcnRpZXMgdG8gYXBwbHksIHRoZW4gaWdub3JlIGl0IGluIHRoZSBub24t
ZGVidWcgbW9kZS4KICAgICAgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRp
ZXMgPSBydWxlLT5wcm9wZXJ0aWVzKCk7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnRpZXMgfHwg
KHByb3BlcnRpZXMtPmlzRW1wdHkoKSAmJiAhb3B0aW9ucy5pbmNsdWRlRW1wdHlSdWxlcykpIHsK
QEAgLTIxNjcsNyArMjE5NSw3IEBAIFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IFN0eWxlUmVzb2x2
ZXI6OnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqIGUsIFBzCiAgICAgcmV0dXJu
IG1fcnVsZUxpc3QucmVsZWFzZSgpOwogfQogCi1pbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpj
aGVja1NlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgY29uc3QgQ29udGFpbmVyTm9k
ZSogc2NvcGUpCitpbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpjaGVja1NlbGVjdG9yKGNvbnN0
IFJ1bGVEYXRhJiBydWxlRGF0YSwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUsIGNvbnN0IENv
bnRhaW5lck5vZGUqIHNjb3BlT2ZMYXN0RWxlbWVudCkKIHsKICAgICBtX2R5bmFtaWNQc2V1ZG8g
PSBOT1BTRVVETzsKIApAQCAtMjE5Miw2ICsyMjIwLDcgQEAgaW5saW5lIGJvb2wgU3R5bGVSZXNv
bHZlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0IENvbnRh
aW4KICAgICBjb250ZXh0LmVsZW1lbnRTdHlsZSA9IHN0eWxlKCk7CiAgICAgY29udGV4dC5lbGVt
ZW50UGFyZW50U3R5bGUgPSBtX3BhcmVudE5vZGUgPyBtX3BhcmVudE5vZGUtPnJlbmRlclN0eWxl
KCkgOiAwOwogICAgIGNvbnRleHQuc2NvcGUgPSBzY29wZTsKKyAgICBjb250ZXh0LnNjb3BlT2ZM
YXN0RWxlbWVudCA9IHNjb3BlT2ZMYXN0RWxlbWVudDsKICAgICBjb250ZXh0LnBzZXVkb1N0eWxl
ID0gbV9wc2V1ZG9TdHlsZTsKICAgICBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggbWF0
Y2ggPSBtX2NoZWNrZXIuY2hlY2tTZWxlY3Rvcihjb250ZXh0LCBtX2R5bmFtaWNQc2V1ZG8pOwog
ICAgIGlmIChtYXRjaCAhPSBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2hlcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IDA1NWQ4MTNlZGI1NmIwNTBjYjYxMzM3MjQ1NDg1
MTFkYzYwZmIyMmIuLjgzNDk3OTEwYmQyMzZlOTNiZDI0MGU4ODFkZTM3MjM0MWFiYzBkYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtMjYwLDYgKzI2MCw4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgYWRkS2V5ZnJhbWVTdHlsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1l
cz4pOwogCisgICAgdm9pZCBhZGRTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZShTdHlsZVJ1
bGUqLCBDb250YWluZXJOb2RlKiBzY29wZSk7CisKICAgICBib29sIGNoZWNrUmVnaW9uU3R5bGUo
RWxlbWVudCogcmVnaW9uRWxlbWVudCk7CiAKICAgICBib29sIHVzZXNTaWJsaW5nUnVsZXMoKSBj
b25zdCB7IHJldHVybiAhbV9mZWF0dXJlcy5zaWJsaW5nUnVsZXMuaXNFbXB0eSgpOyB9CkBAIC0z
MzgsOSArMzQwLDExIEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIHN0cnVjdCBNYXRjaE9wdGlv
bnMgewotICAgICAgICBNYXRjaE9wdGlvbnMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcywgY29uc3Qg
Q29udGFpbmVyTm9kZSogc2NvcGUgPSAwKSA6IHNjb3BlKHNjb3BlKSwgaW5jbHVkZUVtcHR5UnVs
ZXMoaW5jbHVkZUVtcHR5UnVsZXMpIHsgfQorICAgICAgICBNYXRjaE9wdGlvbnMoYm9vbCBpbmNs
dWRlRW1wdHlSdWxlcywgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUgPSAwKQorICAgICAgICAg
ICAgOiBzY29wZShzY29wZSksIGluY2x1ZGVFbXB0eVJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKSwg
c2NvcGVPZkxhc3RFbGVtZW50KDApIHsgfQogICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBz
Y29wZTsKICAgICAgICAgYm9vbCBpbmNsdWRlRW1wdHlSdWxlczsKKyAgICAgICAgY29uc3QgQ29u
dGFpbmVyTm9kZSogc2NvcGVPZkxhc3RFbGVtZW50OwogICAgIH07CiAKICAgICBzdGF0aWMgdm9p
ZCBhZGRNYXRjaGVkUHJvcGVydGllcyhNYXRjaFJlc3VsdCYsIGNvbnN0IFN0eWxlUHJvcGVydHlT
ZXQqIHByb3BlcnRpZXMsIFN0eWxlUnVsZSogPSAwLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlID0g
U2VsZWN0b3JDaGVja2VyOjpNYXRjaEFsbCwgYm9vbCBpblJlZ2lvblJ1bGUgPSBmYWxzZSk7CkBA
IC0zNTMsNiArMzU3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIG1hdGNoVXNlclJ1bGVzKE1hdGNo
UmVzdWx0JiwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAgICAgdm9pZCBtYXRjaFNjb3BlZEF1
dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAgICAgdm9p
ZCBtYXRjaEhvc3RSdWxlcyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOwor
ICAgIHZvaWQgbWF0Y2hTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZXMoTWF0Y2hSZXN1bHQm
LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKwogICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVs
ZXMoUnVsZVNldCosIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgY29u
c3QgTWF0Y2hPcHRpb25zJik7CiAgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lv
bihSdWxlU2V0KiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4LCBjb25z
dCBNYXRjaE9wdGlvbnMmKTsKICAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChj
b25zdCBWZWN0b3I8UnVsZURhdGE+KiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVs
ZUluZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmKTsKQEAgLTM2MCw3ICszNjYsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc29ydE1hdGNoZWRSdWxlcygpOwogICAgIHZvaWQgc29ydEFuZFRyYW5zZmVy
TWF0Y2hlZFJ1bGVzKE1hdGNoUmVzdWx0Jik7CiAKLSAgICBib29sIGNoZWNrU2VsZWN0b3IoY29u
c3QgUnVsZURhdGEmLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSk7CisgICAgYm9vbCBjaGVj
a1NlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJiwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUsIGNv
bnN0IENvbnRhaW5lck5vZGUqIHNjb3BlT2ZMYXN0RWxlbWVudCk7CiAgICAgYm9vbCBjaGVja1Jl
Z2lvblNlbGVjdG9yKENTU1NlbGVjdG9yKiByZWdpb25TZWxlY3RvciwgRWxlbWVudCogcmVnaW9u
RWxlbWVudCk7CiAgICAgdm9pZCBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzKGNvbnN0IE1hdGNoUmVz
dWx0JiwgY29uc3QgRWxlbWVudCopOwogICAgIGVudW0gU3R5bGVBcHBsaWNhdGlvblBhc3MgewpA
QCAtMzkxLDYgKzM5Nyw5IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFJ1bGVTZXQ+IG1fYXV0aG9y
U3R5bGU7CiAgICAgT3duUHRyPFJ1bGVTZXQ+IG1fdXNlclN0eWxlOwogCisgICAgdHlwZWRlZiBI
YXNoTWFwPGNvbnN0IENvbnRhaW5lck5vZGUqLCBPd25QdHI8UnVsZVNldD4gPiBTZWxlY3RSZWZl
cmVuY2VDb21iaW5hdG9yUnVsZVNldE1hcDsKKyAgICBTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9y
UnVsZVNldE1hcCBtX3NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0TWFwOworCiAgICAg
UnVsZUZlYXR1cmVTZXQgbV9mZWF0dXJlczsKICAgICBPd25QdHI8UnVsZVNldD4gbV9zaWJsaW5n
UnVsZVNldDsKICAgICBPd25QdHI8UnVsZVNldD4gbV91bmNvbW1vbkF0dHJpYnV0ZVJ1bGVTZXQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwCmluZGV4IDVmZjJiM2Uw
YjExNTQ5OTQ0N2UyMWM4NmY1OGY2NDYxMzAxY2YwZmQuLmY3MTE1YjJmZTBmZDM3MmJhZGY1ZmJk
MDE5YzM1ZDJkMzAxZmM4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNj
b3BlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2
ZXIuY3BwCkBAIC04MSw2ICs4MSw3IEBAIGlubGluZSBSdWxlU2V0KiBTdHlsZVNjb3BlUmVzb2x2
ZXI6OnJ1bGVTZXRGb3IoY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUpIGNvbnN0CiB7CiAgICAg
aWYgKCFzY29wZS0+aGFzU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKSkKICAgICAgICAgcmV0dXJuIDA7
CisKICAgICBTY29wZWRSdWxlU2V0TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fYXV0aG9yU3R5
bGVzLmZpbmQoc2NvcGUpOwogICAgIHJldHVybiBpdCAhPSBtX2F1dGhvclN0eWxlcy5lbmQoKSA/
IGl0LT52YWx1ZS5nZXQoKSA6IDA7IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0lu
c2VydGlvblBvaW50LmgKaW5kZXggZDRiN2Q3ZDBkOTEzMDNjNjA3MGQ1OWE5MWVjNjhkNzZlM2Rm
YjRiNS4uNTZjMWRmZjFmMzE3Y2NhNWVjNjJhODNlMGVkYjhiOTY4YTcwZGUxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC0xNzEsNiArMTcxLDM3
IEBAIGlubGluZSBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2Rl
KiBwcm9qZWN0ZWROb2RlKQogICAgIHJldHVybiBpbnNlcnRpb25Qb2ludDsKIH0KIAorLy8gRklY
TUU6IENvbGxlY3RzIG9ubHkgQ29udGVudHNFbGVtZW50cyBzaW5jZSAvc2VsZWN0LyByZWZlcmVu
Y2UgY29tYmluYXRvciBjYW4gYmUKKy8vIGFwcGxpZWQgdG8gb25seSA8Y29udGVudHM+Citpbmxp
bmUgdm9pZCBjb2xsZWN0QWxsTWlkcG9pbnRJbnNlcnRpb25Qb2ludHMoY29uc3QgTm9kZSogcHJv
amVjdGVkTm9kZSwgVmVjdG9yPEluc2VydGlvblBvaW50Kj4mIHJlc3VsdHMpCit7CisgICAgSW5z
ZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gMDsKKyAgICBjb25zdCBOb2RlKiBjdXJyZW50
ID0gcHJvamVjdGVkTm9kZTsKKworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGlmIChFbGVt
ZW50U2hhZG93KiBzaGFkb3cgPSBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbihjdXJyZW50
KSkgeworICAgICAgICAgICAgc2hhZG93LT5lbnN1cmVEaXN0cmlidXRpb24oKTsKKyAgICAgICAg
ICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHNoYWRvdy0+ZGlzdHJpYnV0b3Io
KS5maW5kSW5zZXJ0aW9uUG9pbnRGb3IocHJvamVjdGVkTm9kZSkpIHsKKyAgICAgICAgICAgICAg
ICBjdXJyZW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAgICBpbnNlcnRpb25Qb2ludCA9
IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoaW5zZXJ0aW9uUG9p
bnQpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgaWYgKE5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGVGb3JEaXN0cmlidXRpb24o
Y3VycmVudCkpIHsKKyAgICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9
IHBhcmVudC0+aXNTaGFkb3dSb290KCkgPyB0b1NoYWRvd1Jvb3QocGFyZW50KS0+YXNzaWduZWRU
bygpIDogMCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBpbnNlcnRlZFRvOworICAgICAg
ICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAgICBy
ZXN1bHRzLmFwcGVuZChpbnNlcnRpb25Qb2ludCk7CisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm47CisgICAgfQorfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBJbnNlcnRpb25Qb2ludF9oCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMzk2M2M2MGQzNWI5NjhiOWZjNzZjMzgyNTdiNTExNTI5NmViODM2Yy4uNWI4MGYxYTBk
ZjNiYjlkY2JjZWJiNjA1ZjE0M2IxMzM2NTFiNzZkZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDEyLTExLTA3ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
U2hhZG93IERPTV0gSW1wbGVtZW50cyBhIC9zZWxlY3QvIHJlZmVyZW5jZSBjb21iaW5hdG9yLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIxNjkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9t
L3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItZXhwZWN0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1j
b21iaW5hdG9yLW5lc3RlZDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NlbGVj
dC1yZWZlcmVuY2UtY29tYmluYXRvci1uZXN0ZWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisKIDIw
MTItMTEtMjAgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0pT
Q10gTXV0YXRpb25PYnNlcnZlciB3cmFwcGVyIHNob3VsZCBub3QgYmUgY29sbGVjdGVkIHdoaWxl
IHN0aWxsIG9ic2VydmluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBhNDk1OWI4NjI0MDI5MjVlMDdlZTg2ZjViODJhZDUwYzEwZDdkYTIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVy
ZW5jZS1jb21iaW5hdG9yLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXY+CisgICAg
PGRpdj5zaGFkb3cgY2hpbGQ8L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgPGRpdj4KKyAgICAgICAg
PGRpdj4KKyAgICAgICAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+Cisg
ICAgICAgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBi
bHVlIj5ibHVlPC9kaXY+CisgICAgPGRpdiBzdHlsZT0iY29sb3I6IHJlZCI+cmVkPC9kaXY+Cisg
IDwvZGl2PgorICA8ZGl2PgorICAgIDxkaXY+CisgICAgICA8ZGl2PgorICAgICAgICA8ZGl2PlN0
eWxlIHNob3VsZCBub3QgYmUgYXBwbGllZC48L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2
PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItbmVzdGVkLWV4cGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21i
aW5hdG9yLW5lc3RlZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1MTgzNDQyYTA3NmM3Zjgx
YTljNTQyMTMxZTc5ZmI3NzZmMDExY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLW5lc3RlZC1leHBlY3Rl
ZC5odG1sCkBAIC0wLDAgKzEsMjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4K
KzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2IGlkPSJuZXN0
ZWQtaG9zdCI+CisgICAgICB0ZXh0MQorICAgICAgPGRpdj4KKyAgICAgICAgdGV4dDIKKyAgICAg
ICAgPGRpdj4KKyAgICAgICAgICB0ZXh0MworICAgICAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBn
cmVlbiI+Z3JlZW48L2Rpdj4KKyAgICAgICAgICA8ZGl2Pm5vcm1hbDwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8L2Rpdj4KKzwvZGl2PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NlbGVj
dC1yZWZlcmVuY2UtY29tYmluYXRvci1uZXN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItbmVzdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmViNGZlNDFmOTMwMDczNjhmZjE0OTQ3YWM3NDU0OWFjYzhhZGNmNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJp
bmF0b3ItbmVzdGVkLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0Pgor
dmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRv
d1N0eWxlLmlubmVySFRNTCA9ICdkaXYgY29udGVudCAvc2VsZWN0LyBkaXYgY29udGVudCAvc2Vs
ZWN0LyBkaXYuZ3JlZW4geyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAg
IGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNo
YWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnbmVz
dGVkLWhvc3QnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3RleHQxJyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgndGV4dDInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJ2Rpdid9KSkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdncmVlbid9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgndGV4dDMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdjb250ZW50Jywge30pKSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHsnY2xhc3MnOiAnZ3JlZW4nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCdncmVlbicpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3Jt
YWwnKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIzMzc2MmQyMTczOGE5MTE3Y2EyOTk0NWI0MzBlOGFlN2VlN2QxMmYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJl
ZmVyZW5jZS1jb21iaW5hdG9yLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2Ny
aXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsK
K3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdkaXYgY29udGVudCAvc2VsZWN0LyBkaXYgZGl2IHsg
Y29sb3I6IGdyZWVuOyB9JworICAgICsgJyAjc2hhZG93LWNvbnRlbnQgL3NlbGVjdC8gZGl2LmJs
dWUgeyBjb2xvcjogYmx1ZTsgfScKKyAgICArICcgI3NoYWRvdy1jb250ZW50IC9zZWxlY3QvIGRp
di5yZWQgeyBjb2xvcjogcmVkOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00o
J2RpdicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAor
ICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCdzaGFkb3cgY2hpbGQnKSksCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
e30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29u
dGVudCcsIHsnc2VsZWN0JzogJ2Rpdi5ncmVlbid9KSkpLAorICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdjb250ZW50JywgeydpZCc6ICdzaGFkb3ctY29udGVudCcsICdzZWxlY3QnOiAnZGl2
J30pKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2dyZWVuJ30s
CisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicp
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVu
JykpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2JsdWUnfSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdibHVlJykp
LAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAncmVkJ30sCisgICAg
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgncmVkJykpKSk7Citz
YW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdvdGhlci1o
b3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnY29udGVudCcsIHt9KSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9
LAorICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnU3R5bGUg
c2hvdWxkIG5vdCBiZSBhcHBsaWVkLicpKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175593</attachid>
            <date>2012-11-21 22:38:51 -0800</date>
            <delta_ts>2012-11-28 03:11:57 -0800</delta_ts>
            <desc>guard by SHADOW_DOM flag</desc>
            <filename>bug-82169-20121122153636.patch</filename>
            <type>text/plain</type>
            <size>32274</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzg5NzhjMmZiNjkyZmM3
MmNlNmI4NDIzMTNmMTIyMTAzYzMzYzgzOC4uNGU4ZjQ2Y2NkODA3MjUxMThiOGVkZjk5NWU5MGMx
ZWY0YTlmZGM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDEyLTEwLTIzICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gSW1w
bGVtZW50cyBhIC9zZWxlY3QvIHJlZmVyZW5jZSBjb21iaW5hdG9yLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIxNjkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgJ3NlbGVjdCcgcmVm
ZXJlbmNlIGNvbWJpbmF0b3IgYmVoaW5kIGEgU0hBRE9XX0RPTSBmbGFnLgorICAgICAgICBTZWUg
dGhlIFNlbGVjdG9ycyBMZXZlbCA0IHNwZWNpZmljYXRpb24gYW5kIHRoZSBTaGFkb3cgRE9NIHNw
ZWNpZmljYXRpb24gZm9yIHRoZSBkZXRhaWwuCisKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcv
Y3Nzd2cvc2VsZWN0b3JzNC8jaWRyZWYtY29tYmluYXRvcnMKKyAgICAgICAgaHR0cDovL2R2Y3Mu
dzMub3JnL2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0
bWwjc2VsZWN0aW5nLW5vZGVzLWRpc3RyaWJ1dGVkLXRvLWluc2VydGlvbi1wb2ludHMKKworICAg
ICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBzZWxlY3QgcmVmZXJlbmNlIGNvbWJpbmF0b3Ig
YXMgdGhlIGZpcnN0CisgICAgICAgIHJlZmVyZW5jZSBjb21iaW5hdG9yIGltcGxlbWVudGVkIGlu
IFdlYktpdC4gIFNpbmNlIFdlYktpdCBoYXMgbm90CisgICAgICAgIHN1cHBvcnRlZCByZWZlcmVu
Y2UgY29tYmluYXRvcnMgc28gZmFyLCBDU1MgZ3JhbW1lciBhbmQgcGFyc2VyIGFyZQorICAgICAg
ICB1cGRhdGVkIHRvIHN1cHBvcnQgdGhlIG5ldyBzeW50YXggdXNlZCBpbiBTZWxlY3RvciBMZXZl
bDQncworICAgICAgICByZWZlcmVuY2UgY29tYmluYXRvcnMuCisKKyAgICAgICAgQSBzZWxlY3Qg
cmVmZXJlbmNlIGNvbWJpbmF0b3IgaXMgdGhlIGZpcnN0IENTUyBydWxlIHdoaWNoIGNyb3NzZXMK
KyAgICAgICAgdGhlIHNoYWRvdyBib3VuZGFyeSBmcm9tIGEgc2hhZG93IHRyZWUgdG8gdGhlIHRy
ZWUgb2YgaXRzIHNoYWRvdworICAgICAgICBob3N0LiBUaGF0IG1lYW5zIGEgc2VsZWN0IHJlZmVy
ZW5jZSBjb21iaW5hdG9yIGlzIGRlZmluZWQgaW4KKyAgICAgICAgc2hhZG93IHRyZWUsIGJ1dCB0
aGUgbm9kZSB3aGljaCBpcyBtYXRjaGVkIGluIHRoZSBydWxlIGlzIG91dHNpZGUKKyAgICAgICAg
b2YgdGhlIHNoYWRvdyB0cmVlLgorCisgICAgICAgIFNvIHdlIGNhbm5vdCBwcmVkaWN0IGEgc2Nv
cGUgd2hlcmUgdGhlIG1hdGNoZWQgbm9kZSB3aWxsIGJlIGJlZm9yZWhhbmQuCisgICAgICAgIEN1
cnJlbnQgQ1NTIGltcGxlbWVudGF0aW9uIGFzc3VtZXMgZXZlcnkgZmluYWwgdGFyZ2V0IGlzIGFw
cGxpZWQgaW4gY3VycmVudCBzY29wZS4KKworICAgICAgICBUbyBvdmVyY29tZSB0aGlzIGlzc3Vl
LCBJIHVwZGF0ZWQgU3R5bGVSZXNvbHZlciBzbyB0aGF0IGl0IGhhcworICAgICAgICBTZWxlY3RS
ZWZlcmVjZUNvbWJpbmF0b3JSdWxlU2V0TWFwLiBUaGUgUnVsZVNldE1hcCBpcyB1c2VkIHRvIGtl
ZXAKKyAgICAgICAgdHJhY2sgb2YgUnVsZVNldCBtYXBwZWQgYnkgYSBzY29wZSB3aGVyZSBhIHNl
bGVjdCByZWZlcmVuY2UKKyAgICAgICAgY29tYmluYXRvciBpcyBvcmlnaW5hbGx5IGRlZmluZWQu
IFRoZSBzY29wZSBpcyB1c2VkIHRvIGNoZWNrCisgICAgICAgIHdoZXRoZXIgdGhlIGxhc3QgZWxl
bWVudCBtYXRjaGVkIGJ5IFNlbGVjdG9yQ2hlY2tlciBleGlzdHMgaW4gdGhlCisgICAgICAgIHNj
b3BlIHdoZXJlIHRoZSBydWxlIGlzIG9yaWdpbmFsbHkgZGVmaW5lZC4KKworICAgICAgICBUZXN0
czogZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLW5l
c3RlZC5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOgorICAgICAgICAqIGNz
cy9DU1NQYXJzZXJWYWx1ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9y
OjpzZXRSZWZlcmVuY2UpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NlbGVjdG9yOjpzZXRSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6UmFyZURhdGE6OlJhcmVEYXRhKToKKyAgICAgICAgKiBj
c3MvQ1NTU2VsZWN0b3IuaDoKKyAgICAgICAgKENTU1NlbGVjdG9yKToKKyAgICAgICAgKFJhcmVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpyZWZlcmVuY2UpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6aXNSZWZlcmVuY2VD
b21iaW5hdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoU2VsZWN0b3JIYXNTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9ySGFzU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRv
cjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxpc3Q6Omhhc1Nl
bGVjdFJlZmVyZW5jZUNvbWJpbmF0b3IpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvckxpc3Qu
aDoKKyAgICAgICAgKENTU1NlbGVjdG9yTGlzdCk6CisgICAgICAgICogY3NzL1J1bGVTZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQpOgorICAgICAg
ICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JD
aGVja2VyOjpjb2xsZWN0SWRlbnRpZmllckhhc2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNr
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2lu
Z0NvbnRleHQ6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0KToKKyAgICAgICAgKFNlbGVjdG9yQ2hl
Y2tpbmdDb250ZXh0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpyZXNldEF1dGhvclN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRkU2VsZWN0UmVmZXJl
bmNlQ29tYmluYXRvclJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bWF0
Y2hTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6Y2hlY2tTZWxlY3Rvcik6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2
ZXIuaDoKKyAgICAgICAgKFN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6TWF0Y2hPcHRpb25zOjpNYXRjaE9wdGlvbnMpOgorICAgICAgICAoTWF0Y2hPcHRp
b25zKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0QWxsTWlkcG9pbnRJbnNlcnRpb25Q
b2ludHMpOgorCiAyMDEyLTExLTIwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgNyUgcmVncmVzc2lvbiBpbiBkcm9tYWVvX2RvbWNvcmVxdWVyeS9kb21fcXVlcnlf
Z2V0RWxlbWVudHNCeVRhZ05hbWVfX25vdF9pbl9kb2N1bWVudApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFt
bWFyLnkuaW4KaW5kZXggMjFiMDE2MTM1YmE1OGU0ZTIwNGVmNzY5YTE5N2YwYjg3MTRiNmU5NC4u
OGNhNzE3MTMxNzk4ODYyYWFkNTRmYTlkNDI3YTBhNTFjZmQxNzBhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTR3JhbW1hci55LmluCkBAIC0yODksNiArMjg5LDkgQEAgc3RhdGljIGlubGluZSBpbnQgY3Nz
eXllcnJvcih2b2lkKiwgY29uc3QgY2hhciopCiAKICV0eXBlIDxzdHJpbmc+IGVsZW1lbnRfbmFt
ZQogJXR5cGUgPHN0cmluZz4gYXR0cl9uYW1lCisjaWYgRU5BQkxFX1NIQURPV19ET00KKyV0eXBl
IDxzdHJpbmc+IHJlZmVyZW5jZV9jb21iaW5hdG9yCisjZW5kaWYKIAogJSUKIApAQCAtMTAwMSw2
ICsxMDA0LDE3IEBAIGNvbWJpbmF0b3I6CiAgIHwgJz4nIG1heWJlX3NwYWNlIHsgJCQgPSBDU1NT
ZWxlY3Rvcjo6Q2hpbGQ7IH0KICAgOwogCisjaWYgRU5BQkxFX1NIQURPV19ET00KK3JlZmVyZW5j
ZV9jb21iaW5hdG9yOgorICAnLycgSURFTlQgJy8nIG1heWJlX3NwYWNlIHsKKyAgICAgICAgQ1NT
UGFyc2VyU3RyaW5nJiBzdHIgPSAkMjsKKyAgICAgICAgaWYgKHBhcnNlci0+bV9jb250ZXh0Lmlz
SFRNTERvY3VtZW50KQorICAgICAgICAgICAgc3RyLmxvd2VyKCk7CisgICAgICAgICQkID0gc3Ry
OworICB9CisgIDsKKyNlbmRpZgorCiBtYXliZV91bmFyeV9vcGVyYXRvcjoKICAgICB1bmFyeV9v
cGVyYXRvciB7ICQkID0gJDE7IH0KICAgICB8IHsgJCQgPSAxOyB9CkBAIC0xMDk2LDYgKzExMTAs
MjIgQEAgc2VsZWN0b3I6CiAgICAgICAgICAgICBlbmQtPnNldFRhZ0hpc3RvcnkocGFyc2VyLT5z
aW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOwogICAgICAgICB9CiAgICAgfQorI2lmIEVOQUJMRV9T
SEFET1dfRE9NCisgICAgfCBzZWxlY3RvciByZWZlcmVuY2VfY29tYmluYXRvciBzaW1wbGVfc2Vs
ZWN0b3IgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlJlZmVyZW5jZSBDb21iaW5hdG9yIVxu
Iik7CisgICAgICAgICQkID0gJDM7CisgICAgICAgIGlmICghJDEpCisgICAgICAgICAgICAkJCA9
IDA7CisgICAgICAgIGVsc2UgaWYgKCQkKSB7CisgICAgICAgICAgICBDU1NQYXJzZXJTZWxlY3Rv
ciogZW5kID0gJCQ7CisgICAgICAgICAgICB3aGlsZSAoZW5kLT50YWdIaXN0b3J5KCkpCisgICAg
ICAgICAgICAgICAgZW5kID0gZW5kLT50YWdIaXN0b3J5KCk7CisgICAgICAgICAgICBlbmQtPnNl
dFJlbGF0aW9uKENTU1NlbGVjdG9yOjpSZWZlcmVuY2UpOworICAgICAgICAgICAgZW5kLT5zZXRS
ZWZlcmVuY2UoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDIsIG51bGxBdG9tKSk7CisgICAgICAg
ICAgICBlbmQtPnNldFRhZ0hpc3RvcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkp
OworICAgICAgICB9CisgICAgfQorI2VuZGlmCiAgICAgfCBzZWxlY3RvciBlcnJvciB7CiAgICAg
ICAgICQkID0gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyVmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKaW5kZXgg
MTMwMWIxY2UwZTExMzcyM2NjZjgyMTYyOGVlMDVlMmUzMTAyMzY3Yi4uZTIzZGVkNTBlMjc5Y2Mx
ZDlmMTYxZTA5NjY0ZDQ0ZWQ4YTc5NjcwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlclZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1
ZXMuaApAQCAtMTgzLDYgKzE4Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1hdGNoKENTU1Nl
bGVjdG9yOjpNYXRjaCB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5tX21hdGNoID0gdmFsdWU7IH0KICAg
ICB2b2lkIHNldFJlbGF0aW9uKENTU1NlbGVjdG9yOjpSZWxhdGlvbiB2YWx1ZSkgeyBtX3NlbGVj
dG9yLT5tX3JlbGF0aW9uID0gdmFsdWU7IH0KICAgICB2b2lkIHNldEZvclBhZ2UoKSB7IG1fc2Vs
ZWN0b3ItPnNldEZvclBhZ2UoKTsgfQorICAgIHZvaWQgc2V0UmVmZXJlbmNlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHZhbHVlKSB7IG1fc2VsZWN0b3ItPnNldFJlZmVyZW5jZSh2YWx1ZSk7IH0KIAog
ICAgIHZvaWQgYWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVj
dG9yPiA+JiBzZWxlY3RvclZlY3Rvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCmlu
ZGV4IGM5ZGQxOTM3YTU4ZTZmMWM4NzdjNzFjYzk4NmQ2ZWQwNmY1MzQ3NTAuLmIwYmM3NTFjODNh
YjBmNzNjZTE3NTczODBjNmRhZjBjNzc5OTYwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmNwcApAQCAtNjU0LDYgKzY1NCw4IEBAIFN0cmluZyBDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0
KCkgY29uc3QKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50OgogICAgICAgICAgICAgcmV0dXJuIHRhZ0hp
c3RvcnlUZXh0ICsgc3RyLnRvU3RyaW5nKCk7CisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlJl
ZmVyZW5jZToKKyAgICAgICAgICAgIHJldHVybiB0YWdIaXN0b3J5VGV4dCArICIgLyIgKyBjcy0+
cmVmZXJlbmNlKCkudG9TdHJpbmcoKSArICIvICIgKyAgc3RyLnRvU3RyaW5nKCk7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTY2Niw2ICs2NjgsMTIgQEAgdm9pZCBDU1NTZWxlY3Rvcjo6c2V0QXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHZhbHVlKQogICAgIG1fZGF0YS5tX3JhcmVEYXRh
LT5tX2F0dHJpYnV0ZSA9IHZhbHVlOwogfQogCit2b2lkIENTU1NlbGVjdG9yOjpzZXRSZWZlcmVu
Y2UoY29uc3QgUXVhbGlmaWVkTmFtZSYgdmFsdWUpCit7CisgICAgY3JlYXRlUmFyZURhdGEoKTsK
KyAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9yZWZlcmVuY2UgPSB2YWx1ZTsKK30KKwogdm9pZCBD
U1NTZWxlY3Rvcjo6c2V0QXJndW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAg
ICBjcmVhdGVSYXJlRGF0YSgpOwpAQCAtNzI0LDYgKzczMiw3IEBAIENTU1NlbGVjdG9yOjpSYXJl
RGF0YTo6UmFyZURhdGEoUGFzc1JlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiB2YWx1ZSkKICAgICAs
IG1fYSgwKQogICAgICwgbV9iKDApCiAgICAgLCBtX2F0dHJpYnV0ZShhbnlRTmFtZSgpKQorICAg
ICwgbV9yZWZlcmVuY2UoYW55UU5hbWUoKSkKICAgICAsIG1fYXJndW1lbnQobnVsbEF0b20pCiB7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCmluZGV4IGFlZTUwNzRkNzVmN2JiM2Y2ZTQxMjk1
ZGQxYmFhYzA5NzYzMDg0NWYuLjY0NDUyNDEzY2E4YTA2ZDY2YTQwYTVhZWI5NmI0ODdlYzQ1NmI1
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCkBAIC03Niw3ICs3Niw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERpcmVjdEFkamFjZW50LAogICAgICAgICAgICAgSW5k
aXJlY3RBZGphY2VudCwKICAgICAgICAgICAgIFN1YlNlbGVjdG9yLAotICAgICAgICAgICAgU2hh
ZG93RGVzY2VuZGFudAorICAgICAgICAgICAgU2hhZG93RGVzY2VuZGFudCwKKyAgICAgICAgICAg
IFJlZmVyZW5jZQogICAgICAgICB9OwogCiAgICAgICAgIGVudW0gUHNldWRvVHlwZSB7CkBAIC0x
OTksMTIgKzIwMCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEZJWE1FOiBQ
ZXJoYXBzIGNhbGwgc2l0ZXMgY291bGQgYmUgY2hhbmdlZCB0byBhY2NlcHQgQXRvbWljU3RyaW5n
SW1wbD8KICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJu
ICpyZWludGVycHJldF9jYXN0PGNvbnN0IEF0b21pY1N0cmluZyo+KG1faGFzUmFyZURhdGEgPyAm
bV9kYXRhLm1fcmFyZURhdGEtPm1fdmFsdWUgOiAmbV9kYXRhLm1fdmFsdWUpOyB9CiAgICAgICAg
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSgpIGNvbnN0OworICAgICAgICBjb25zdCBR
dWFsaWZpZWROYW1lJiByZWZlcmVuY2UoKSBjb25zdDsKICAgICAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBhcmd1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmFyZURhdGEgPyBtX2RhdGEubV9y
YXJlRGF0YS0+bV9hcmd1bWVudCA6IG51bGxBdG9tOyB9CiAgICAgICAgIENTU1NlbGVjdG9yTGlz
dCogc2VsZWN0b3JMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNSYXJlRGF0YSA/IG1fZGF0YS5t
X3JhcmVEYXRhLT5tX3NlbGVjdG9yTGlzdC5nZXQoKSA6IDA7IH0KIAogICAgICAgICB2b2lkIHNl
dFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJiB2YWx1ZSkgeyBtX3RhZyA9IHZhbHVlOyB9CiAgICAg
ICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgICAgIHZvaWQgc2V0
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICAgICAgdm9pZCBzZXRSZWZlcmVu
Y2UoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgICAgICB2b2lkIHNldEFyZ3VtZW50KGNvbnN0
IEF0b21pY1N0cmluZyYpOwogICAgICAgICB2b2lkIHNldFNlbGVjdG9yTGlzdChQYXNzT3duUHRy
PENTU1NlbGVjdG9yTGlzdD4pOwogCkBAIC0yMTYsNiArMjE5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBib29sIGlzQ3VzdG9tUHNldWRvRWxlbWVudCgpIGNvbnN0OwogICAgICAg
ICBib29sIGlzU2libGluZ1NlbGVjdG9yKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNBdHRyaWJ1
dGVTZWxlY3RvcigpIGNvbnN0OworICAgICAgICBib29sIGlzUmVmZXJlbmNlQ29tYmluYXRvcigp
IGNvbnN0OwogCiAgICAgICAgIFJlbGF0aW9uIHJlbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8UmVsYXRpb24+KG1fcmVsYXRpb24pOyB9CiAKQEAgLTI1OCw2ICsyNjIsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBpbnQgbV9hOyAvLyBVc2VkIGZvciA6bnRo
LSoKICAgICAgICAgICAgIGludCBtX2I7IC8vIFVzZWQgZm9yIDpudGgtKgogICAgICAgICAgICAg
UXVhbGlmaWVkTmFtZSBtX2F0dHJpYnV0ZTsgLy8gdXNlZCBmb3IgYXR0cmlidXRlIHNlbGVjdG9y
CisgICAgICAgICAgICBRdWFsaWZpZWROYW1lIG1fcmVmZXJlbmNlOyAvLyB1c2VkIGZvciByZWZl
cmVuY2UgY29tYmluYXRvcgogICAgICAgICAgICAgQXRvbWljU3RyaW5nIG1fYXJndW1lbnQ7IC8v
IFVzZWQgZm9yIDpjb250YWlucywgOmxhbmcgYW5kIDpudGgtKgogICAgICAgICAgICAgT3duUHRy
PENTU1NlbGVjdG9yTGlzdD4gbV9zZWxlY3Rvckxpc3Q7IC8vIFVzZWQgZm9yIDotd2Via2l0LWFu
eSBhbmQgOm5vdAogICAgICAgICAKQEAgLTI4Miw2ICsyODcsMTMgQEAgaW5saW5lIGNvbnN0IFF1
YWxpZmllZE5hbWUmIENTU1NlbGVjdG9yOjphdHRyaWJ1dGUoKSBjb25zdAogICAgIHJldHVybiBt
X2RhdGEubV9yYXJlRGF0YS0+bV9hdHRyaWJ1dGU7CiB9CiAKK2lubGluZSBjb25zdCBRdWFsaWZp
ZWROYW1lJiBDU1NTZWxlY3Rvcjo6cmVmZXJlbmNlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNS
ZWZlcmVuY2VDb21iaW5hdG9yKCkpOworICAgIEFTU0VSVChtX2hhc1JhcmVEYXRhKTsKKyAgICBy
ZXR1cm4gbV9kYXRhLm1fcmFyZURhdGEtPm1fcmVmZXJlbmNlOworfQorCiBpbmxpbmUgYm9vbCBD
U1NTZWxlY3Rvcjo6bWF0Y2hlc1BzZXVkb0VsZW1lbnQoKSBjb25zdAogewogICAgIGlmIChtX3Bz
ZXVkb1R5cGUgPT0gUHNldWRvVW5rbm93bikKQEAgLTMyOCw2ICszNDAsMTEgQEAgaW5saW5lIGJv
b2wgQ1NTU2VsZWN0b3I6OmlzQXR0cmlidXRlU2VsZWN0b3IoKSBjb25zdAogICAgICAgICB8fCBt
X21hdGNoID09IENTU1NlbGVjdG9yOjpFbmQ7CiB9CiAKK2lubGluZSBib29sIENTU1NlbGVjdG9y
Ojppc1JlZmVyZW5jZUNvbWJpbmF0b3IoKSBjb25zdAoreworICAgIHJldHVybiBtX3JlbGF0aW9u
ID09IENTU1NlbGVjdG9yOjpSZWZlcmVuY2U7Cit9CisKIGlubGluZSB2b2lkIENTU1NlbGVjdG9y
OjpzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIC8vIE5lZWQgdG8g
ZG8gcmVmIGNvdW50aW5nIG1hbnVhbGx5IGZvciB0aGUgdW5pb24uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvckxpc3QuY3BwCmluZGV4IDQzMTM2ZDFjOTAxYzYzNDFiYWNiZWY4Mzk0OWRmOTRl
NjBmMWMzNmMuLjZjMDAyMzNlZGYzODNkYmU4ZTQ2ZDNkYjk4ZDdhOGY0ODMwYjcwNGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCkBAIC0yMTEsNiArMjExLDIwIEBAIGJv
b2wgQ1NTU2VsZWN0b3JMaXN0OjpoYXNJbnZhbGlkU2VsZWN0b3IoKSBjb25zdAogICAgIHJldHVy
biBmb3JFYWNoU2VsZWN0b3IoZnVuY3RvciwgdGhpcyk7CiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKK2NsYXNzIFNlbGVjdG9ySGFzU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvciB7CitwdWJs
aWM6CisgICAgYm9vbCBvcGVyYXRvcigpKENTU1NlbGVjdG9yKiBzZWxlY3RvcikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBzZWxlY3Rvci0+aXNSZWZlcmVuY2VDb21iaW5hdG9yKCkgJiYgc2VsZWN0
b3ItPnJlZmVyZW5jZSgpID09ICJzZWxlY3QiOworICAgIH0KK307CiAKK2Jvb2wgQ1NTU2VsZWN0
b3JMaXN0OjpoYXNTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yKCkgY29uc3QKK3sKKyAgICBTZWxl
Y3Rvckhhc1NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3IgZnVuY3RvcjsKKyAgICByZXR1cm4gZm9y
RWFjaFNlbGVjdG9yKGZ1bmN0b3IsIHRoaXMpOworfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaAppbmRleCA0ZmNmZWUyZmFh
NDE4MmQ3YTlhYjA1NWJjY2U1MTlmZTc0ZTIyNzE1Li45ZjAxZWFmMWUwMTNhZjYxOGFkYzQ5MGE5
MWEzNDRkZmM3NTc3MjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3JMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCkBAIC01
OSw2ICs1OSw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2VsZWN0b3JzTmVlZE5hbWVzcGFjZVJl
c29sdXRpb24oKTsKICAgICBib29sIGhhc0ludmFsaWRTZWxlY3RvcigpIGNvbnN0OworI2lmIEVO
QUJMRShTSEFET1dfRE9NKQorICAgIGJvb2wgaGFzU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvcigp
IGNvbnN0OworI2VuZGlmCiAKICAgICBTdHJpbmcgc2VsZWN0b3JzVGV4dCgpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUnVsZVNldC5jcHAKaW5kZXggOWE3OGMwZmY5MDM4OWM5MGM0NGRhNWE2YjlmNWZmN2Fl
MjBjNmUzMS4uMTdjODQzMjM3ZjI3YjkxNTFiNWQ1NTU0ZWIyYjViNjE1YThjNzBmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9SdWxlU2V0LmNwcApAQCAtMjgxLDggKzI4MSwxOCBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFJ1
bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyogc2hlZXQsIGNvbnN0IE1lZGlhUXVlcnlF
dmFsdQogICAgICAgICBTdHlsZVJ1bGVCYXNlKiBydWxlID0gcnVsZXNbaV0uZ2V0KCk7CiAKICAg
ICAgICAgQVNTRVJUKCFydWxlLT5pc0ltcG9ydFJ1bGUoKSk7Ci0gICAgICAgIGlmIChydWxlLT5p
c1N0eWxlUnVsZSgpKQotICAgICAgICAgICAgYWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0PFN0eWxl
UnVsZSo+KHJ1bGUpLCBhZGRSdWxlRmxhZ3MpOworICAgICAgICBpZiAocnVsZS0+aXNTdHlsZVJ1
bGUoKSkgeworICAgICAgICAgICAgU3R5bGVSdWxlKiBzdHlsZVJ1bGUgPSBzdGF0aWNfY2FzdDxT
dHlsZVJ1bGUqPihydWxlKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgICAgIGlm
IChzY29wZSAmJiBzdHlsZVJ1bGUtPnNlbGVjdG9yTGlzdCgpLmhhc1NlbGVjdFJlZmVyZW5jZUNv
bWJpbmF0b3IoKSkKKyAgICAgICAgICAgICAgICByZXNvbHZlci0+YWRkU2VsZWN0UmVmZXJlbmNl
Q29tYmluYXRvclJ1bGUoc3R5bGVSdWxlLCBjb25zdF9jYXN0PENvbnRhaW5lck5vZGUqPihzY29w
ZSkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGFkZFN0eWxlUnVsZShzdHls
ZVJ1bGUsIGFkZFJ1bGVGbGFncyk7CisjZWxzZQorICAgICAgICAgICAgLy8gRklYTUU6IFR1cm4g
ZmxhZyB3aGVuIHBhcnNpbmcuCisgICAgICAgICAgICBhZGRTdHlsZVJ1bGUoc3R5bGVSdWxlLCBh
ZGRSdWxlRmxhZ3MpOworI2VuZGlmCisgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAocnVsZS0+
aXNQYWdlUnVsZSgpKQogICAgICAgICAgICAgYWRkUGFnZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5bGVS
dWxlUGFnZSo+KHJ1bGUpKTsKICAgICAgICAgZWxzZSBpZiAocnVsZS0+aXNNZWRpYVJ1bGUoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCAzOGQ0MWY3ODQ4ODY1
ZGM4YWMzYzE2NDkxOTI2Mzg2NDY1OTFiZDMyLi44ZWZhYTg3NjcyYTRhOWI4NDIwYmQxOGFjMDhh
MDczMjBiNjJkZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAt
NDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTFByb2dyZXNzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKKyNp
bmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
QEAgLTE5NSw2ICsxOTYsNyBAQCB2b2lkIFNlbGVjdG9yQ2hlY2tlcjo6Y29sbGVjdElkZW50aWZp
ZXJIYXNoZXMoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCB1bnNpZwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQ6CiAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OkNoaWxkOgorICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpSZWZlcmVu
Y2U6CiAgICAgICAgICAgICBza2lwT3ZlclN1YnNlbGVjdG9ycyA9IGZhbHNlOwogICAgICAgICAg
ICAgY29sbGVjdERlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXMoc2VsZWN0b3IsIGhh
c2gsIGVuZCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ3NSw4ICs0NzcsMTUgQEAgU2VsZWN0
b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihj
b25zdCBTZWxlY3RvckNoZWMKIAogICAgIC8vIFByZXBhcmUgbmV4dCBzZWxlY3RvcgogICAgIENT
U1NlbGVjdG9yKiBoaXN0b3J5U2VsZWN0b3IgPSBjb250ZXh0LnNlbGVjdG9yLT50YWdIaXN0b3J5
KCk7Ci0gICAgaWYgKCFoaXN0b3J5U2VsZWN0b3IpCisgICAgaWYgKCFoaXN0b3J5U2VsZWN0b3Ip
IHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgaWYgKGNvbnRleHQuc2NvcGVPZkxh
c3RFbGVtZW50KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogQ2hlY2sgdGhlIHNjb3BlIG1vcmUg
c3RyaWN0bHkuCisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5zY29wZU9mTGFzdEVsZW1lbnQt
PnRyZWVTY29wZSgpID09IGNvbnRleHQuZWxlbWVudC0+dHJlZVNjb3BlKCkgPyBTZWxlY3Rvck1h
dGNoZXMgOiBTZWxlY3RvckZhaWxzTG9jYWxseTsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgICAg
IHJldHVybiBTZWxlY3Rvck1hdGNoZXM7CisgICAgfQogCiAgICAgU2VsZWN0b3JDaGVja2luZ0Nv
bnRleHQgbmV4dENvbnRleHQoY29udGV4dCk7CiAgICAgbmV4dENvbnRleHQuc2VsZWN0b3IgPSBo
aXN0b3J5U2VsZWN0b3I7CkBAIC01ODAsNiArNTg5LDI1IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2Vs
ZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JD
aGVjCiAgICAgICAgICAgICBuZXh0Q29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgPSAwOwogICAg
ICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3IobmV4dENvbnRleHQsIGlnbm9yZUR5bmFtaWNQ
c2V1ZG8pOwogICAgICAgICB9CisKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpSZWZlcmVuY2U6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LnNlbGVjdG9yLT5yZWZlcmVuY2UoKSAh
PSAic2VsZWN0IikKKyAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRl
bHk7CisKKyAgICAgICAgICAgIFZlY3RvcjxJbnNlcnRpb25Qb2ludCo+IGluc2VydGlvblBvaW50
czsKKyAgICAgICAgICAgIGNvbGxlY3RBbGxNaWRwb2ludEluc2VydGlvblBvaW50cyhjb250ZXh0
LmVsZW1lbnQsIGluc2VydGlvblBvaW50cyk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGluc2VydGlvblBvaW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIG5l
eHRDb250ZXh0LmVsZW1lbnQgPSBpbnNlcnRpb25Qb2ludHNbaV07CisgICAgICAgICAgICAgICAg
bmV4dENvbnRleHQuaXNTdWJTZWxlY3RvciA9IGZhbHNlOworICAgICAgICAgICAgICAgIG5leHRD
b250ZXh0LmVsZW1lbnRTdHlsZSA9IDA7CisgICAgICAgICAgICAgICAgbmV4dENvbnRleHQuZWxl
bWVudFBhcmVudFN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNo
ID0gY2hlY2tTZWxlY3RvcihuZXh0Q29udGV4dCwgaWdub3JlRHluYW1pY1BzZXVkbyk7CisgICAg
ICAgICAgICAgICAgaWYgKG1hdGNoID09IFNlbGVjdG9yTWF0Y2hlcyB8fCBtYXRjaCA9PSBTZWxl
Y3RvckZhaWxzQ29tcGxldGVseSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5
OworICAgICAgICB9CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXggOWJkYjY2OWIyNDZlZTY0M2Q1ZTJlZTIyYjVh
MWEyNGVlMDkxOGU2YS4uNDdiMzkwY2U3OWExODk0YjVkNGJkMjk2YjAzMjVhNWZmNjUyMmI0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaApAQCAtNjcsNiArNjcsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAsIGlzU3ViU2VsZWN0b3IoZmFsc2UpCiAgICAgICAgICAgICAsIGhh
c1Njcm9sbGJhclBzZXVkbyhmYWxzZSkKICAgICAgICAgICAgICwgaGFzU2VsZWN0aW9uUHNldWRv
KGZhbHNlKQorICAgICAgICAgICAgLCBzY29wZU9mTGFzdEVsZW1lbnQoMCkKICAgICAgICAgeyB9
CiAKICAgICAgICAgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yOwpAQCAtNzksNiArODAsNyBAQCBwdWJs
aWM6CiAgICAgICAgIGJvb2wgaXNTdWJTZWxlY3RvcjsKICAgICAgICAgYm9vbCBoYXNTY3JvbGxi
YXJQc2V1ZG87CiAgICAgICAgIGJvb2wgaGFzU2VsZWN0aW9uUHNldWRvOworICAgICAgICBjb25z
dCBDb250YWluZXJOb2RlKiBzY29wZU9mTGFzdEVsZW1lbnQ7CiAgICAgfTsKIAogICAgIGJvb2wg
Y2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBib29sIGlzRmFzdENoZWNrYWJs
ZVNlbGVjdG9yID0gZmFsc2UpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CmluZGV4IDA3NjcwNDFmYTE2Yjc2YjQ5ZTI2NjIxZWE5ZTczMTI1MWM0YmUxZGUuLjgzNDMwYjRj
MjI0NjFiMDQ5MTU2M2YwMmE2NGFjNTZhYzYzNzlhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKQEAgLTM2Niw2ICszNjYsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnJlc2V0
QXV0aG9yU3R5bGUoKQogewogICAgIG1fYXV0aG9yU3R5bGUgPSBSdWxlU2V0OjpjcmVhdGUoKTsK
ICAgICBtX2F1dGhvclN0eWxlLT5kaXNhYmxlQXV0b1Nocmlua1RvRml0KCk7CisgICAgbV9zZWxl
Y3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZVNldE1hcC5jbGVhcigpOwogfQogCiB2b2lkIFN0eWxl
UmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKHVuc2lnbmVkIGZpcnN0TmV3LCBjb25z
dCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHN0eWxlU2hlZXRzKQpAQCAtNDUwLDYg
KzQ1MSwyMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZEtleWZyYW1lU3R5bGUoUGFzc1JlZlB0
cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IHJ1bGUpCiAgICAgbV9rZXlmcmFtZXNSdWxlTWFwLnNldChz
LmltcGwoKSwgcnVsZSk7CiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKK3ZvaWQgU3R5bGVS
ZXNvbHZlcjo6YWRkU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGUoU3R5bGVSdWxlKiBydWxl
LCBDb250YWluZXJOb2RlKiBzY29wZSkKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBh
ZGQgYW4gZW50aXJlIHN0eWxlIHJ1bGUsIGJ1dCBvbmx5IGEgc2VsZWN0b3Igd2hpY2ggaGFzIGEg
Jy9zZWxlY3QvJyByZWZlcmVuY2UgY29tYmluYXRvci4KKyAgICBpZiAobV9zZWxlY3RSZWZlcmVu
Y2VDb21iaW5hdG9yUnVsZVNldE1hcC5jb250YWlucyhzY29wZSkpCisgICAgICAgIG1fc2VsZWN0
UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVTZXRNYXAuZ2V0KHNjb3BlKS0+YWRkU3R5bGVSdWxlKHJ1
bGUsIFJ1bGVIYXNOb1NwZWNpYWxTdGF0ZSk7CisgICAgZWxzZSB7CisgICAgICAgIE93blB0cjxS
dWxlU2V0PiBydWxlU2V0ID0gYWRvcHRQdHIobmV3IFJ1bGVTZXQoKSk7CisgICAgICAgIHJ1bGVT
ZXQtPmFkZFN0eWxlUnVsZShydWxlLCBSdWxlSGFzTm9TcGVjaWFsU3RhdGUpOworICAgICAgICBt
X3NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0TWFwLmFkZChzY29wZSwgcnVsZVNldC5y
ZWxlYXNlKCkpOworICAgIH0KK30KKyNlbmRpZgorCiBTdHlsZVJlc29sdmVyOjp+U3R5bGVSZXNv
bHZlcigpCiB7CiAgICAgbV9mb250U2VsZWN0b3ItPmNsZWFyRG9jdW1lbnQoKTsKQEAgLTc5Myw2
ICs4MDgsMTcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaEhvc3RSdWxlcyhNYXRjaFJlc3Vs
dCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQogI2VuZGlmCiB9CiAKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hTZWxlY3RSZWZlcmVuY2VD
b21iaW5hdG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxl
cykKK3sKKyAgICBmb3IgKFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0TWFwOjppdGVy
YXRvciBpdCA9IG1fc2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVTZXRNYXAuYmVnaW4oKTsg
aXQgIT0gbV9zZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZVNldE1hcC5lbmQoKTsgKytpdCkg
eworICAgICAgICBNYXRjaE9wdGlvbnMgb3B0aW9ucyhpbmNsdWRlRW1wdHlSdWxlcywgMCk7Cisg
ICAgICAgIG9wdGlvbnMuc2NvcGVPZkxhc3RFbGVtZW50ID0gaXQtPmtleTsKKyAgICAgICAgY29s
bGVjdE1hdGNoaW5nUnVsZXMoaXQtPnZhbHVlLmdldCgpLCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0
aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7CisgICAgfQor
fQorI2VuZGlmCisKIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxlcyhNYXRjaFJl
c3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQogewogICAgIG1fbWF0Y2hlZFJ1
bGVzLmNsZWFyKCk7CkBAIC04MDcsNiArODMzLDkgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRj
aEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMK
ICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtX2F1dGhvclN0eWxlLmdldCgpLCBy
ZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVs
ZSwgb3B0aW9ucyk7CiAKICAgICBtYXRjaFNjb3BlZEF1dGhvclJ1bGVzKHJlc3VsdCwgaW5jbHVk
ZUVtcHR5UnVsZXMpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIG1hdGNoU2VsZWN0UmVm
ZXJlbmNlQ29tYmluYXRvclJ1bGVzKHJlc3VsdCwgaW5jbHVkZUVtcHR5UnVsZXMpOworI2VuZGlm
CiAKICAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMocmVzdWx0KTsKIH0KQEAgLTg0Miw3
ICs4NzEsMTEgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxp
c3QoY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogcnVsZXMsIGkKIAogICAgIC8vIEluIHNvbWUgY2Fz
ZXMgd2UgbWF5IGVuZCB1cCBsb29raW5nIHVwIHN0eWxlIGZvciByYW5kb20gZWxlbWVudHMgaW4g
dGhlIG1pZGRsZSBvZiBhIHJlY3Vyc2l2ZSB0cmVlIHJlc29sdmUuCiAgICAgLy8gQW5jZXN0b3Ig
aWRlbnRpZmllciBmaWx0ZXIgd29uJ3QgYmUgdXAtdG8tZGF0ZSBpbiB0aGF0IGNhc2UgYW5kIHdl
IGNhbid0IHVzZSB0aGUgZmFzdCBwYXRoLgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGJv
b2wgY2FuVXNlRmFzdFJlamVjdCA9IG1fY2hlY2tlci5wYXJlbnRTdGFja0lzQ29uc2lzdGVudCht
X3BhcmVudE5vZGUpICYmICFvcHRpb25zLnNjb3BlT2ZMYXN0RWxlbWVudDsKKyNlbHNlCiAgICAg
Ym9vbCBjYW5Vc2VGYXN0UmVqZWN0ID0gbV9jaGVja2VyLnBhcmVudFN0YWNrSXNDb25zaXN0ZW50
KG1fcGFyZW50Tm9kZSk7CisjZW5kaWYKIAogICAgIHVuc2lnbmVkIHNpemUgPSBydWxlcy0+c2l6
ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKQEAgLTg1Miw3
ICs4ODUsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlz
dChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBydWxlcywgaQogCiAgICAgICAgIFN0eWxlUnVsZSog
cnVsZSA9IHJ1bGVEYXRhLnJ1bGUoKTsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1hdGNoUnVsZShk
b2N1bWVudCgpLCBydWxlKTsKLSAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3IocnVsZURhdGEsIG9w
dGlvbnMuc2NvcGUpKSB7CisgICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHJ1bGVEYXRhLCBvcHRp
b25zLnNjb3BlLCBvcHRpb25zLnNjb3BlT2ZMYXN0RWxlbWVudCkpIHsKICAgICAgICAgICAgIC8v
IElmIHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0aWVzIHRvIGFwcGx5LCB0aGVuIGlnbm9yZSBpdCBp
biB0aGUgbm9uLWRlYnVnIG1vZGUuCiAgICAgICAgICAgICBjb25zdCBTdHlsZVByb3BlcnR5U2V0
KiBwcm9wZXJ0aWVzID0gcnVsZS0+cHJvcGVydGllcygpOwogICAgICAgICAgICAgaWYgKCFwcm9w
ZXJ0aWVzIHx8IChwcm9wZXJ0aWVzLT5pc0VtcHR5KCkgJiYgIW9wdGlvbnMuaW5jbHVkZUVtcHR5
UnVsZXMpKSB7CkBAIC0yMTY3LDcgKzIyMDAsNyBAQCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBT
dHlsZVJlc29sdmVyOjpwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCBQcwog
ICAgIHJldHVybiBtX3J1bGVMaXN0LnJlbGVhc2UoKTsKIH0KIAotaW5saW5lIGJvb2wgU3R5bGVS
ZXNvbHZlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0IENv
bnRhaW5lck5vZGUqIHNjb3BlKQoraW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y2hlY2tTZWxl
Y3Rvcihjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3Bl
LCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZU9mTGFzdEVsZW1lbnQpCiB7CiAgICAgbV9keW5h
bWljUHNldWRvID0gTk9QU0VVRE87CiAKQEAgLTIxOTIsNiArMjIyNSw3IEBAIGlubGluZSBib29s
IFN0eWxlUmVzb2x2ZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCBj
b25zdCBDb250YWluCiAgICAgY29udGV4dC5lbGVtZW50U3R5bGUgPSBzdHlsZSgpOwogICAgIGNv
bnRleHQuZWxlbWVudFBhcmVudFN0eWxlID0gbV9wYXJlbnROb2RlID8gbV9wYXJlbnROb2RlLT5y
ZW5kZXJTdHlsZSgpIDogMDsKICAgICBjb250ZXh0LnNjb3BlID0gc2NvcGU7CisgICAgY29udGV4
dC5zY29wZU9mTGFzdEVsZW1lbnQgPSBzY29wZU9mTGFzdEVsZW1lbnQ7CiAgICAgY29udGV4dC5w
c2V1ZG9TdHlsZSA9IG1fcHNldWRvU3R5bGU7CiAgICAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rv
ck1hdGNoIG1hdGNoID0gbV9jaGVja2VyLmNoZWNrU2VsZWN0b3IoY29udGV4dCwgbV9keW5hbWlj
UHNldWRvKTsKICAgICBpZiAobWF0Y2ggIT0gU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNo
ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCAwNTVkODEzZWRiNTZiMDUwY2I2
MTMzNzI0NTQ4NTExZGM2MGZiMjJiLi4zOTBmZmY0YzY3ZjhmNTFjMWRkZGVkMmIwODg3MzlhZTJj
MzE1MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTI2MCw2ICsyNjAsMTAg
QEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRLZXlmcmFtZVN0eWxlKFBhc3NSZWZQdHI8U3R5bGVS
dWxlS2V5ZnJhbWVzPik7CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICB2b2lkIGFkZFNl
bGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlKFN0eWxlUnVsZSosIENvbnRhaW5lck5vZGUqIHNj
b3BlKTsKKyNlbmRpZgorCiAgICAgYm9vbCBjaGVja1JlZ2lvblN0eWxlKEVsZW1lbnQqIHJlZ2lv
bkVsZW1lbnQpOwogCiAgICAgYm9vbCB1c2VzU2libGluZ1J1bGVzKCkgY29uc3QgeyByZXR1cm4g
IW1fZmVhdHVyZXMuc2libGluZ1J1bGVzLmlzRW1wdHkoKTsgfQpAQCAtMzM4LDkgKzM0MiwxMSBA
QCBwcml2YXRlOgogICAgIH07CiAKICAgICBzdHJ1Y3QgTWF0Y2hPcHRpb25zIHsKLSAgICAgICAg
TWF0Y2hPcHRpb25zKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIGNvbnN0IENvbnRhaW5lck5vZGUq
IHNjb3BlID0gMCkgOiBzY29wZShzY29wZSksIGluY2x1ZGVFbXB0eVJ1bGVzKGluY2x1ZGVFbXB0
eVJ1bGVzKSB7IH0KKyAgICAgICAgTWF0Y2hPcHRpb25zKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMs
IGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlID0gMCkKKyAgICAgICAgICAgIDogc2NvcGUoc2Nv
cGUpLCBpbmNsdWRlRW1wdHlSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcyksIHNjb3BlT2ZMYXN0RWxl
bWVudCgwKSB7IH0KICAgICAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGU7CiAgICAgICAg
IGJvb2wgaW5jbHVkZUVtcHR5UnVsZXM7CisgICAgICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHNj
b3BlT2ZMYXN0RWxlbWVudDsKICAgICB9OwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWF0Y2hlZFBy
b3BlcnRpZXMoTWF0Y2hSZXN1bHQmLCBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVz
LCBTdHlsZVJ1bGUqID0gMCwgdW5zaWduZWQgbGlua01hdGNoVHlwZSA9IFNlbGVjdG9yQ2hlY2tl
cjo6TWF0Y2hBbGwsIGJvb2wgaW5SZWdpb25SdWxlID0gZmFsc2UpOwpAQCAtMzUzLDYgKzM1OSwx
MCBAQCBwcml2YXRlOgogICAgIHZvaWQgbWF0Y2hVc2VyUnVsZXMoTWF0Y2hSZXN1bHQmLCBib29s
IGluY2x1ZGVFbXB0eVJ1bGVzKTsKICAgICB2b2lkIG1hdGNoU2NvcGVkQXV0aG9yUnVsZXMoTWF0
Y2hSZXN1bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKICAgICB2b2lkIG1hdGNoSG9zdFJ1
bGVzKE1hdGNoUmVzdWx0JiwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CisjaWYgRU5BQkxFKFNI
QURPV19ET00pCisgICAgdm9pZCBtYXRjaFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlcyhN
YXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOworI2VuZGlmCisKICAgICB2b2lk
IGNvbGxlY3RNYXRjaGluZ1J1bGVzKFJ1bGVTZXQqLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQm
IGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYpOwogICAgIHZvaWQgY29sbGVjdE1h
dGNoaW5nUnVsZXNGb3JSZWdpb24oUnVsZVNldCosIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYg
bGFzdFJ1bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJik7CiAgICAgdm9pZCBjb2xsZWN0TWF0
Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiosIGludCYgZmlyc3RSdWxl
SW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJik7CkBAIC0zNjAs
NyArMzcwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNvcnRNYXRjaGVkUnVsZXMoKTsKICAgICB2
b2lkIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhNYXRjaFJlc3VsdCYpOwogCi0gICAgYm9v
bCBjaGVja1NlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJiwgY29uc3QgQ29udGFpbmVyTm9kZSogc2Nv
cGUpOworICAgIGJvb2wgY2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYsIGNvbnN0IENvbnRh
aW5lck5vZGUqIHNjb3BlLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZU9mTGFzdEVsZW1lbnQp
OwogICAgIGJvb2wgY2hlY2tSZWdpb25TZWxlY3RvcihDU1NTZWxlY3RvciogcmVnaW9uU2VsZWN0
b3IsIEVsZW1lbnQqIHJlZ2lvbkVsZW1lbnQpOwogICAgIHZvaWQgYXBwbHlNYXRjaGVkUHJvcGVy
dGllcyhjb25zdCBNYXRjaFJlc3VsdCYsIGNvbnN0IEVsZW1lbnQqKTsKICAgICBlbnVtIFN0eWxl
QXBwbGljYXRpb25QYXNzIHsKQEAgLTM5MSw2ICs0MDEsOSBAQCBwcml2YXRlOgogICAgIE93blB0
cjxSdWxlU2V0PiBtX2F1dGhvclN0eWxlOwogICAgIE93blB0cjxSdWxlU2V0PiBtX3VzZXJTdHls
ZTsKIAorICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBDb250YWluZXJOb2RlKiwgT3duUHRyPFJ1
bGVTZXQ+ID4gU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVTZXRNYXA7CisgICAgU2VsZWN0
UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVTZXRNYXAgbV9zZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9y
UnVsZVNldE1hcDsKKwogICAgIFJ1bGVGZWF0dXJlU2V0IG1fZmVhdHVyZXM7CiAgICAgT3duUHRy
PFJ1bGVTZXQ+IG1fc2libGluZ1J1bGVTZXQ7CiAgICAgT3duUHRyPFJ1bGVTZXQ+IG1fdW5jb21t
b25BdHRyaWJ1dGVSdWxlU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlv
blBvaW50LmgKaW5kZXggZDRiN2Q3ZDBkOTEzMDNjNjA3MGQ1OWE5MWVjNjhkNzZlM2RmYjRiNS4u
ZDQ2YzRmOWVkNzhmYjlmZDlkNzhkNjVhMmQ5NWI4Mzk2MTU3YTNmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC0xNzEsNiArMTcxLDM3IEBAIGlu
bGluZSBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKiBwcm9q
ZWN0ZWROb2RlKQogICAgIHJldHVybiBpbnNlcnRpb25Qb2ludDsKIH0KIAorLy8gRklYTUU6IENv
bGxlY3RzIG9ubHkgSFRNTENvbnRlbnRFbGVtZW50IHNpbmNlIGEgc2VsZWN0IHJlZmVyZW5jZSBj
b21iaW5hdG9yIGNhbiBiZQorLy8gYXBwbGllZCB0byBvbmx5IDxjb250ZW50PiBlbGVtZW50cy4K
K2lubGluZSB2b2lkIGNvbGxlY3RBbGxNaWRwb2ludEluc2VydGlvblBvaW50cyhjb25zdCBOb2Rl
KiBwcm9qZWN0ZWROb2RlLCBWZWN0b3I8SW5zZXJ0aW9uUG9pbnQqPiYgcmVzdWx0cykKK3sKKyAg
ICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSAwOworICAgIGNvbnN0IE5vZGUqIGN1
cnJlbnQgPSBwcm9qZWN0ZWROb2RlOworCisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYg
KEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKGN1
cnJlbnQpKSB7CisgICAgICAgICAgICBzaGFkb3ctPmVuc3VyZURpc3RyaWJ1dGlvbigpOworICAg
ICAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRlZFRvID0gc2hhZG93LT5kaXN0cmli
dXRvcigpLmZpbmRJbnNlcnRpb25Qb2ludEZvcihwcm9qZWN0ZWROb2RlKSkgeworICAgICAgICAg
ICAgICAgIGN1cnJlbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAgIGluc2VydGlvblBv
aW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChpbnNlcnRp
b25Qb2ludCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZUZvckRpc3RyaWJ1
dGlvbihjdXJyZW50KSkgeworICAgICAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRl
ZFRvID0gcGFyZW50LT5pc1NoYWRvd1Jvb3QoKSA/IHRvU2hhZG93Um9vdChwYXJlbnQpLT5hc3Np
Z25lZFRvKCkgOiAwKSB7CisgICAgICAgICAgICAgICAgY3VycmVudCA9IGluc2VydGVkVG87Cisg
ICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAg
ICAgIHJlc3VsdHMuYXBwZW5kKGluc2VydGlvblBvaW50KTsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybjsKKyAgICB9
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEluc2VydGlvblBvaW50
X2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCAzOTYzYzYwZDM1Yjk2OGI5ZmM3NmMzODI1N2I1MTE1Mjk2ZWI4MzZjLi44MTYz
ZmEyOTI0ZWQ1YTczMzA1ZjUzZWE3MGE0MjAzYTczYmJhNTlkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTItMTEtMDcgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtTaGFkb3cgRE9NXSBJbXBsZW1lbnRzIGEgL3NlbGVjdC8gcmVmZXJlbmNlIGNvbWJpbmF0
b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjE2
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFz
dC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci1leHBlY3RlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5h
dG9yLW5lc3RlZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFk
b3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLW5lc3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLmh0bWw6IEFk
ZGVkLgorCiAyMDEyLTExLTIwICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtKU0NdIE11dGF0aW9uT2JzZXJ2ZXIgd3JhcHBlciBzaG91bGQgbm90IGJlIGNvbGxl
Y3RlZCB3aGlsZSBzdGlsbCBvYnNlcnZpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItZXhw
ZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTQ5NTliODYyNDAyOTI1ZTA3ZWU4NmY1YjgyYWQ1MGMx
MGQ3ZGEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3Nl
bGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjYgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8
ZGl2PgorICAgIDxkaXY+c2hhZG93IGNoaWxkPC9kaXY+CisgICAgPGRpdj4KKyAgICAgIDxkaXY+
CisgICAgICAgIDxkaXY+CisgICAgICAgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVl
bjwvZGl2PgorICAgICAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4K
KyAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IHN0eWxl
PSJjb2xvcjogYmx1ZSI+Ymx1ZTwvZGl2PgorICAgIDxkaXYgc3R5bGU9ImNvbG9yOiByZWQiPnJl
ZDwvZGl2PgorICA8L2Rpdj4KKyAgPGRpdj4KKyAgICA8ZGl2PgorICAgICAgPGRpdj4KKyAgICAg
ICAgPGRpdj5TdHlsZSBzaG91bGQgbm90IGJlIGFwcGxpZWQuPC9kaXY+CisgICAgICA8L2Rpdj4K
KyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLW5lc3Rl
ZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZl
cmVuY2UtY29tYmluYXRvci1uZXN0ZWQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTE4MzQ0
MmEwNzZjN2Y4MWE5YzU0MjEzMWU3OWZiNzc2ZjAxMWNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci1uZXN0
ZWQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAgPGRp
diBpZD0ibmVzdGVkLWhvc3QiPgorICAgICAgdGV4dDEKKyAgICAgIDxkaXY+CisgICAgICAgIHRl
eHQyCisgICAgICAgIDxkaXY+CisgICAgICAgICAgdGV4dDMKKyAgICAgICAgICA8ZGl2IHN0eWxl
PSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAgICAgICAgPGRpdj5ub3JtYWw8L2Rpdj4K
KyAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItbmVzdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLW5lc3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlYjRmZTQxZjkzMDA3MzY4ZmYxNDk0N2FjNzQ1NDlhY2M4YWRjZjUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVy
ZW5jZS1jb21iaW5hdG9yLW5lc3RlZC5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2Pgor
PHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxl
Jyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnZGl2IGNvbnRlbnQgL3NlbGVjdC8gZGl2IGNv
bnRlbnQgL3NlbGVjdC8gZGl2LmdyZWVuIHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNhbmRi
b3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRD
aGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAgICAg
ICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7
J2lkJzogJ25lc3RlZC1ob3N0J30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRl
U2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KCd0ZXh0MScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rp
dicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ3RleHQyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICdkaXYnfSkpKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAn
Z3JlZW4nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoJ3RleHQzJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHt9KSkpKSwKKyAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdkaXYnLCB7J2NsYXNzJzogJ2dyZWVuJ30sCisgICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSksCisgICAgICAgICAgICAgIGNyZWF0ZURP
TSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgnbm9ybWFsJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0
b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNv
bWJpbmF0b3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzM3NjJkMjE3MzhhOTExN2NhMjk5NDViNDMwZThh
ZTdlZTdkMTJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci5odG1sCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93
LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwv
ZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnZGl2IGNvbnRlbnQgL3NlbGVjdC8g
ZGl2IGRpdiB7IGNvbG9yOiBncmVlbjsgfScKKyAgICArICcgI3NoYWRvdy1jb250ZW50IC9zZWxl
Y3QvIGRpdi5ibHVlIHsgY29sb3I6IGJsdWU7IH0nCisgICAgKyAnICNzaGFkb3ctY29udGVudCAv
c2VsZWN0LyBkaXYucmVkIHsgY29sb3I6IHJlZDsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hh
ZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnc2hhZG93IGNoaWxkJykpLAorICAgICAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVh
dGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICdkaXYuZ3JlZW4nfSkpKSwKKyAgICAgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAnc2hhZG93LWNvbnRlbnQnLCAnc2Vs
ZWN0JzogJ2Rpdid9KSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6
ICdncmVlbid9LAorICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSgnZ3JlZW4nKSksCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCdncmVlbicpKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6
ICdibHVlJ30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSgnYmx1ZScpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ3Jl
ZCd9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3Jl
ZCcpKSkpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnb3RoZXItaG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7fSkpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJ1N0eWxlIHNob3VsZCBub3QgYmUgYXBwbGllZC4nKSkpKSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176437</attachid>
            <date>2012-11-28 03:12:03 -0800</date>
            <delta_ts>2012-11-29 03:55:48 -0800</delta_ts>
            <desc>Update. CSSSelectorList is now correctly divided into each RuleSet.</desc>
            <filename>bug-82169-20121128200938.patch</filename>
            <type>text/plain</type>
            <size>32518</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiODBhMmUyNzVjMmM2YmNkYWQ4ZDVhNGQ2NzkyMjIyYWRiMmViNmE4Li5j
YjE1MzQ3OTg2YmVmODI4NjJkYWQ0ZWUwZTY1MWJhMTNjMTUxY2JiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsODYgQEAKKzIwMTItMTAtMjMgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBJbXBsZW1lbnRzIGEgL3NlbGVjdC8gcmVmZXJlbmNl
IGNvbWJpbmF0b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MjE2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudHMgYSAnc2VsZWN0JyByZWZlcmVuY2UgY29tYmluYXRvciBiZWhpbmQgYSBT
SEFET1dfRE9NIGZsYWcuCisgICAgICAgIFNlZSB0aGUgU2VsZWN0b3JzIExldmVsIDQgc3BlY2lm
aWNhdGlvbiBhbmQgdGhlIFNoYWRvdyBET00gc3BlY2lmaWNhdGlvbiBmb3IgdGhlIGRldGFpbC4K
KworICAgICAgICBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9zZWxlY3RvcnM0LyNpZHJlZi1jb21i
aW5hdG9ycworICAgICAgICBodHRwOi8vZHZjcy53My5vcmcvaGcvd2ViY29tcG9uZW50cy9yYXct
ZmlsZS90aXAvc3BlYy9zaGFkb3cvaW5kZXguaHRtbCNzZWxlY3Rpbmctbm9kZXMtZGlzdHJpYnV0
ZWQtdG8taW5zZXJ0aW9uLXBvaW50cworCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBh
IHNlbGVjdCByZWZlcmVuY2UgY29tYmluYXRvciBhcyB0aGUgZmlyc3QKKyAgICAgICAgcmVmZXJl
bmNlIGNvbWJpbmF0b3IgaW1wbGVtZW50ZWQgaW4gV2ViS2l0LiAgU2luY2UgV2ViS2l0IGhhcyBu
b3QKKyAgICAgICAgc3VwcG9ydGVkIHJlZmVyZW5jZSBjb21iaW5hdG9ycyBzbyBmYXIsIENTUyBn
cmFtbWVyIGFuZCBwYXJzZXIgYXJlCisgICAgICAgIHVwZGF0ZWQgdG8gc3VwcG9ydCB0aGUgbmV3
IHN5bnRheCB1c2VkIGluIFNlbGVjdG9yIExldmVsNCdzCisgICAgICAgIHJlZmVyZW5jZSBjb21i
aW5hdG9ycy4KKworICAgICAgICBBIHNlbGVjdCByZWZlcmVuY2UgY29tYmluYXRvciBpcyB0aGUg
Zmlyc3QgQ1NTIHJ1bGUgd2hpY2ggY3Jvc3NlcworICAgICAgICB0aGUgc2hhZG93IGJvdW5kYXJ5
IGZyb20gYSBzaGFkb3cgdHJlZSB0byB0aGUgdHJlZSBvZiBpdHMgc2hhZG93CisgICAgICAgIGhv
c3QuIFRoYXQgbWVhbnMgYSBzZWxlY3QgcmVmZXJlbmNlIGNvbWJpbmF0b3IgaXMgZGVmaW5lZCBp
bgorICAgICAgICBzaGFkb3cgdHJlZSwgYnV0IHRoZSBub2RlIHdoaWNoIGlzIG1hdGNoZWQgaW4g
dGhlIHJ1bGUgaXMgb3V0c2lkZQorICAgICAgICBvZiB0aGUgc2hhZG93IHRyZWUuCisKKyAgICAg
ICAgU28gd2UgY2Fubm90IHByZWRpY3QgYSBzY29wZSB3aGVyZSB0aGUgbWF0Y2hlZCBub2RlIHdp
bGwgYmUgYmVmb3JlaGFuZC4KKyAgICAgICAgQ3VycmVudCBDU1MgaW1wbGVtZW50YXRpb24gYXNz
dW1lcyBldmVyeSBmaW5hbCB0YXJnZXQgaXMgYXBwbGllZCBpbiBjdXJyZW50IHNjb3BlLgorCisg
ICAgICAgIFRvIG92ZXJjb21lIHRoaXMgaXNzdWUsIEkgdXBkYXRlZCBTdHlsZVJlc29sdmVyIHNv
IHRoYXQgaXQgaGFzCisgICAgICAgIFNlbGVjdFJlZmVyZWNlQ29tYmluYXRvclJ1bGVTZXRNYXAu
IFRoZSBSdWxlU2V0TWFwIGlzIHVzZWQgdG8ga2VlcAorICAgICAgICB0cmFjayBvZiBSdWxlU2V0
IG1hcHBlZCBieSBhIHNjb3BlIHdoZXJlIGEgc2VsZWN0IHJlZmVyZW5jZQorICAgICAgICBjb21i
aW5hdG9yIGlzIG9yaWdpbmFsbHkgZGVmaW5lZC4gVGhlIHNjb3BlIGlzIHVzZWQgdG8gY2hlY2sK
KyAgICAgICAgd2hldGhlciB0aGUgbGFzdCBlbGVtZW50IG1hdGNoZWQgYnkgU2VsZWN0b3JDaGVj
a2VyIGV4aXN0cyBpbiB0aGUKKyAgICAgICAgc2NvcGUgd2hlcmUgdGhlIHJ1bGUgaXMgb3JpZ2lu
YWxseSBkZWZpbmVkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJl
ZmVyZW5jZS1jb21iaW5hdG9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9z
ZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItbmVzdGVkLmh0bWwKKworICAgICAgICAqIGNzcy9D
U1NHcmFtbWFyLnkuaW46CisgICAgICAgICogY3NzL0NTU1BhcnNlclZhbHVlcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnNldFJlZmVyZW5jZSk6CisgICAgICAgICog
Y3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZWxl
Y3RvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnNldFJlZmVyZW5jZSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpSYXJl
RGF0YTo6UmFyZURhdGEpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOgorICAgICAgICAo
Q1NTU2VsZWN0b3IpOgorICAgICAgICAoUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2VsZWN0b3I6OnJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NlbGVjdG9yOjppc1JlZmVyZW5jZUNvbWJpbmF0b3IpOgorICAgICAgICAqIGNzcy9D
U1NTZWxlY3Rvckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTZWxlY3Rv
ckhhc1NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JIYXNTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yOjpvcGVyYXRvcigpKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1NlbGVjdG9yTGlzdDo6aGFzU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvckF0KToK
KyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0Lmg6CisgICAgICAgIChDU1NTZWxlY3Rvckxp
c3QpOgorICAgICAgICAqIGNzcy9SdWxlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVT
ZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y29sbGVjdElkZW50aWZpZXJI
YXNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9y
KToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0OjpTZWxlY3RvckNoZWNraW5n
Q29udGV4dCk6CisgICAgICAgIChTZWxlY3RvckNoZWNraW5nQ29udGV4dCk6CisgICAgICAgICog
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
cmVzZXRBdXRob3JTdHlsZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OmFkZFN0eWxlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjptYXRjaFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRjaEF1dGhvclJ1bGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjaGVja1NlbGVjdG9yKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5oOgorICAgICAgICAoU3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjpNYXRjaE9wdGlvbnM6Ok1hdGNoT3B0aW9ucyk6CisgICAgICAg
IChNYXRjaE9wdGlvbnMpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50Lmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RBbGxNaWRwb2lu
dEluc2VydGlvblBvaW50cyk6CisKIDIwMTItMTEtMjcgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hh
ZmZyYWl4QHdlYmtpdC5vcmc+CiAKICAgICAgICAgU3VwcG9ydCBwcm9wZXIgPHBlcmNlbnQ+IC8g
Y2FsYygpIHJlc29sdXRpb24gZm9yIGdyaWQgaXRlbXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55
LmluCmluZGV4IDIxYjAxNjEzNWJhNThlNGUyMDRlZjc2OWExOTdmMGI4NzE0YjZlOTQuLjhjYTcx
NzEzMTc5ODg2MmFhZDU0ZmE5ZDQyN2EwYTUxY2ZkMTcwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dy
YW1tYXIueS5pbgpAQCAtMjg5LDYgKzI4OSw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IGNzc3l5ZXJy
b3Iodm9pZCosIGNvbnN0IGNoYXIqKQogCiAldHlwZSA8c3RyaW5nPiBlbGVtZW50X25hbWUKICV0
eXBlIDxzdHJpbmc+IGF0dHJfbmFtZQorI2lmIEVOQUJMRV9TSEFET1dfRE9NCisldHlwZSA8c3Ry
aW5nPiByZWZlcmVuY2VfY29tYmluYXRvcgorI2VuZGlmCiAKICUlCiAKQEAgLTEwMDEsNiArMTAw
NCwxNyBAQCBjb21iaW5hdG9yOgogICB8ICc+JyBtYXliZV9zcGFjZSB7ICQkID0gQ1NTU2VsZWN0
b3I6OkNoaWxkOyB9CiAgIDsKIAorI2lmIEVOQUJMRV9TSEFET1dfRE9NCityZWZlcmVuY2VfY29t
YmluYXRvcjoKKyAgJy8nIElERU5UICcvJyBtYXliZV9zcGFjZSB7CisgICAgICAgIENTU1BhcnNl
clN0cmluZyYgc3RyID0gJDI7CisgICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5pc0hUTUxE
b2N1bWVudCkKKyAgICAgICAgICAgIHN0ci5sb3dlcigpOworICAgICAgICAkJCA9IHN0cjsKKyAg
fQorICA7CisjZW5kaWYKKwogbWF5YmVfdW5hcnlfb3BlcmF0b3I6CiAgICAgdW5hcnlfb3BlcmF0
b3IgeyAkJCA9ICQxOyB9CiAgICAgfCB7ICQkID0gMTsgfQpAQCAtMTA5Niw2ICsxMTEwLDIyIEBA
IHNlbGVjdG9yOgogICAgICAgICAgICAgZW5kLT5zZXRUYWdIaXN0b3J5KHBhcnNlci0+c2lua0Zs
b2F0aW5nU2VsZWN0b3IoJDEpKTsKICAgICAgICAgfQogICAgIH0KKyNpZiBFTkFCTEVfU0hBRE9X
X0RPTQorICAgIHwgc2VsZWN0b3IgcmVmZXJlbmNlX2NvbWJpbmF0b3Igc2ltcGxlX3NlbGVjdG9y
IHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJSZWZlcmVuY2UgQ29tYmluYXRvciFcbiIpOwor
ICAgICAgICAkJCA9ICQzOworICAgICAgICBpZiAoISQxKQorICAgICAgICAgICAgJCQgPSAwOwor
ICAgICAgICBlbHNlIGlmICgkJCkgeworICAgICAgICAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGVu
ZCA9ICQkOworICAgICAgICAgICAgd2hpbGUgKGVuZC0+dGFnSGlzdG9yeSgpKQorICAgICAgICAg
ICAgICAgIGVuZCA9IGVuZC0+dGFnSGlzdG9yeSgpOworICAgICAgICAgICAgZW5kLT5zZXRSZWxh
dGlvbihDU1NTZWxlY3Rvcjo6UmVmZXJlbmNlKTsKKyAgICAgICAgICAgIGVuZC0+c2V0UmVmZXJl
bmNlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQyLCBudWxsQXRvbSkpOworICAgICAgICAgICAg
ZW5kLT5zZXRUYWdIaXN0b3J5KHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKKyAg
ICAgICAgfQorICAgIH0KKyNlbmRpZgogICAgIHwgc2VsZWN0b3IgZXJyb3IgewogICAgICAgICAk
JCA9IDA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZh
bHVlcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCmluZGV4IDEzMDFi
MWNlMGUxMTM3MjNjY2Y4MjE2MjhlZTA1ZTJlMzEwMjM2N2IuLmUyM2RlZDUwZTI3OWNjMWQ5ZjE2
MWUwOTY2NGQ0NGVkOGE3OTY3MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXJWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgK
QEAgLTE4Myw2ICsxODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNYXRjaChDU1NTZWxlY3Rv
cjo6TWF0Y2ggdmFsdWUpIHsgbV9zZWxlY3Rvci0+bV9tYXRjaCA9IHZhbHVlOyB9CiAgICAgdm9p
ZCBzZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6UmVsYXRpb24gdmFsdWUpIHsgbV9zZWxlY3Rvci0+
bV9yZWxhdGlvbiA9IHZhbHVlOyB9CiAgICAgdm9pZCBzZXRGb3JQYWdlKCkgeyBtX3NlbGVjdG9y
LT5zZXRGb3JQYWdlKCk7IH0KKyAgICB2b2lkIHNldFJlZmVyZW5jZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5zZXRSZWZlcmVuY2UodmFsdWUpOyB9CiAKICAgICB2
b2lkIGFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4g
PiYgc2VsZWN0b3JWZWN0b3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCBj
OWRkMTkzN2E1OGU2ZjFjODc3YzcxY2M5ODZkNmVkMDZmNTM0NzUwLi5iMGJjNzUxYzgzYWIwZjcz
Y2UxNzU3MzgwYzZkYWYwYzc3OTk2MGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAK
QEAgLTY1NCw2ICs2NTQsOCBAQCBTdHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCgpIGNv
bnN0CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6U2hhZG93RGVzY2VuZGFudDoKICAgICAgICAgICAgIHJldHVybiB0YWdIaXN0b3J5
VGV4dCArIHN0ci50b1N0cmluZygpOworICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpSZWZlcmVu
Y2U6CisgICAgICAgICAgICByZXR1cm4gdGFnSGlzdG9yeVRleHQgKyAiIC8iICsgY3MtPnJlZmVy
ZW5jZSgpLnRvU3RyaW5nKCkgKyAiLyAiICsgIHN0ci50b1N0cmluZygpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC02NjYsNiArNjY4LDEyIEBAIHZvaWQgQ1NTU2VsZWN0b3I6OnNldEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB2YWx1ZSkKICAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9h
dHRyaWJ1dGUgPSB2YWx1ZTsKIH0KIAordm9pZCBDU1NTZWxlY3Rvcjo6c2V0UmVmZXJlbmNlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHZhbHVlKQoreworICAgIGNyZWF0ZVJhcmVEYXRhKCk7CisgICAg
bV9kYXRhLm1fcmFyZURhdGEtPm1fcmVmZXJlbmNlID0gdmFsdWU7Cit9CisKIHZvaWQgQ1NTU2Vs
ZWN0b3I6OnNldEFyZ3VtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgY3Jl
YXRlUmFyZURhdGEoKTsKQEAgLTcyNCw2ICs3MzIsNyBAQCBDU1NTZWxlY3Rvcjo6UmFyZURhdGE6
OlJhcmVEYXRhKFBhc3NSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gdmFsdWUpCiAgICAgLCBtX2Eo
MCkKICAgICAsIG1fYigwKQogICAgICwgbV9hdHRyaWJ1dGUoYW55UU5hbWUoKSkKKyAgICAsIG1f
cmVmZXJlbmNlKGFueVFOYW1lKCkpCiAgICAgLCBtX2FyZ3VtZW50KG51bGxBdG9tKQogewogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCBhZWU1MDc0ZDc1ZjdiYjNmNmU0MTI5NWRkMWJh
YWMwOTc2MzA4NDVmLi42NDQ1MjQxM2NhOGEwNmQ2NmE0MGE1YWViOTZiNDg3ZWM0NTZiNWVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApAQCAtNzYsNyArNzYsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgICAgICBEaXJlY3RBZGphY2VudCwKICAgICAgICAgICAgIEluZGlyZWN0
QWRqYWNlbnQsCiAgICAgICAgICAgICBTdWJTZWxlY3RvciwKLSAgICAgICAgICAgIFNoYWRvd0Rl
c2NlbmRhbnQKKyAgICAgICAgICAgIFNoYWRvd0Rlc2NlbmRhbnQsCisgICAgICAgICAgICBSZWZl
cmVuY2UKICAgICAgICAgfTsKIAogICAgICAgICBlbnVtIFBzZXVkb1R5cGUgewpAQCAtMTk5LDEy
ICsyMDAsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBGSVhNRTogUGVyaGFw
cyBjYWxsIHNpdGVzIGNvdWxkIGJlIGNoYW5nZWQgdG8gYWNjZXB0IEF0b21pY1N0cmluZ0ltcGw/
CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiAqcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBBdG9taWNTdHJpbmcqPihtX2hhc1JhcmVEYXRhID8gJm1fZGF0
YS5tX3JhcmVEYXRhLT5tX3ZhbHVlIDogJm1fZGF0YS5tX3ZhbHVlKTsgfQogICAgICAgICBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUoKSBjb25zdDsKKyAgICAgICAgY29uc3QgUXVhbGlm
aWVkTmFtZSYgcmVmZXJlbmNlKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
YXJndW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2hhc1JhcmVEYXRhID8gbV9kYXRhLm1fcmFyZURh
dGEtPm1fYXJndW1lbnQgOiBudWxsQXRvbTsgfQogICAgICAgICBDU1NTZWxlY3Rvckxpc3QqIHNl
bGVjdG9yTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmFyZURhdGEgPyBtX2RhdGEubV9yYXJl
RGF0YS0+bV9zZWxlY3Rvckxpc3QuZ2V0KCkgOiAwOyB9CiAKICAgICAgICAgdm9pZCBzZXRUYWco
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdmFsdWUpIHsgbV90YWcgPSB2YWx1ZTsgfQogICAgICAgICB2
b2lkIHNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgICAgICB2b2lkIHNldEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgICAgIHZvaWQgc2V0UmVmZXJlbmNlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICAgICAgdm9pZCBzZXRBcmd1bWVudChjb25zdCBBdG9t
aWNTdHJpbmcmKTsKICAgICAgICAgdm9pZCBzZXRTZWxlY3Rvckxpc3QoUGFzc093blB0cjxDU1NT
ZWxlY3Rvckxpc3Q+KTsKIApAQCAtMjE2LDYgKzIxOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgYm9vbCBpc0N1c3RvbVBzZXVkb0VsZW1lbnQoKSBjb25zdDsKICAgICAgICAgYm9v
bCBpc1NpYmxpbmdTZWxlY3RvcigpIGNvbnN0OwogICAgICAgICBib29sIGlzQXR0cmlidXRlU2Vs
ZWN0b3IoKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc1JlZmVyZW5jZUNvbWJpbmF0b3IoKSBjb25z
dDsKIAogICAgICAgICBSZWxhdGlvbiByZWxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFJlbGF0aW9uPihtX3JlbGF0aW9uKTsgfQogCkBAIC0yNTgsNiArMjYyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAgICAgaW50IG1fYTsgLy8gVXNlZCBmb3IgOm50aC0qCiAg
ICAgICAgICAgICBpbnQgbV9iOyAvLyBVc2VkIGZvciA6bnRoLSoKICAgICAgICAgICAgIFF1YWxp
ZmllZE5hbWUgbV9hdHRyaWJ1dGU7IC8vIHVzZWQgZm9yIGF0dHJpYnV0ZSBzZWxlY3RvcgorICAg
ICAgICAgICAgUXVhbGlmaWVkTmFtZSBtX3JlZmVyZW5jZTsgLy8gdXNlZCBmb3IgcmVmZXJlbmNl
IGNvbWJpbmF0b3IKICAgICAgICAgICAgIEF0b21pY1N0cmluZyBtX2FyZ3VtZW50OyAvLyBVc2Vk
IGZvciA6Y29udGFpbnMsIDpsYW5nIGFuZCA6bnRoLSoKICAgICAgICAgICAgIE93blB0cjxDU1NT
ZWxlY3Rvckxpc3Q+IG1fc2VsZWN0b3JMaXN0OyAvLyBVc2VkIGZvciA6LXdlYmtpdC1hbnkgYW5k
IDpub3QKICAgICAgICAgCkBAIC0yODIsNiArMjg3LDEzIEBAIGlubGluZSBjb25zdCBRdWFsaWZp
ZWROYW1lJiBDU1NTZWxlY3Rvcjo6YXR0cmlidXRlKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRh
Lm1fcmFyZURhdGEtPm1fYXR0cmlidXRlOwogfQogCitpbmxpbmUgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgQ1NTU2VsZWN0b3I6OnJlZmVyZW5jZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzUmVmZXJl
bmNlQ29tYmluYXRvcigpKTsKKyAgICBBU1NFUlQobV9oYXNSYXJlRGF0YSk7CisgICAgcmV0dXJu
IG1fZGF0YS5tX3JhcmVEYXRhLT5tX3JlZmVyZW5jZTsKK30KKwogaW5saW5lIGJvb2wgQ1NTU2Vs
ZWN0b3I6Om1hdGNoZXNQc2V1ZG9FbGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAobV9wc2V1ZG9U
eXBlID09IFBzZXVkb1Vua25vd24pCkBAIC0zMjgsNiArMzQwLDExIEBAIGlubGluZSBib29sIENT
U1NlbGVjdG9yOjppc0F0dHJpYnV0ZVNlbGVjdG9yKCkgY29uc3QKICAgICAgICAgfHwgbV9tYXRj
aCA9PSBDU1NTZWxlY3Rvcjo6RW5kOwogfQogCitpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6aXNS
ZWZlcmVuY2VDb21iaW5hdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWxhdGlvbiA9PSBD
U1NTZWxlY3Rvcjo6UmVmZXJlbmNlOworfQorCiBpbmxpbmUgdm9pZCBDU1NTZWxlY3Rvcjo6c2V0
VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyBOZWVkIHRvIGRvIHJl
ZiBjb3VudGluZyBtYW51YWxseSBmb3IgdGhlIHVuaW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3JMaXN0LmNwcAppbmRleCA0MzEzNmQxYzkwMWM2MzQxYmFjYmVmODM5NDlkZjk0ZTYwZjFj
MzZjLi42ZDI2NWU2OTRlZmQwOTBkYTFlYTU2ZDA3YzI4NTI2OWE1MDAyMmEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcApAQCAtMjExLDYgKzIxMSwyMCBAQCBib29sIENT
U1NlbGVjdG9yTGlzdDo6aGFzSW52YWxpZFNlbGVjdG9yKCkgY29uc3QKICAgICByZXR1cm4gZm9y
RWFjaFNlbGVjdG9yKGZ1bmN0b3IsIHRoaXMpOwogfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00p
CitjbGFzcyBTZWxlY3Rvckhhc1NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3IgeworcHVibGljOgor
ICAgIGJvb2wgb3BlcmF0b3IoKShDU1NTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgeworICAgICAg
ICByZXR1cm4gc2VsZWN0b3ItPmlzUmVmZXJlbmNlQ29tYmluYXRvcigpICYmIHNlbGVjdG9yLT5y
ZWZlcmVuY2UoKSA9PSAic2VsZWN0IjsKKyAgICB9Cit9OwogCitib29sIENTU1NlbGVjdG9yTGlz
dDo6aGFzU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvckF0KHNpemVfdCBpbmRleCkgY29uc3QKK3sK
KyAgICBTZWxlY3Rvckhhc1NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3IgZnVuY3RvcjsKKyAgICBy
ZXR1cm4gZm9yRWFjaFRhZ1NlbGVjdG9yKGZ1bmN0b3IsIHNlbGVjdG9yQXQoaW5kZXgpKTsKK30K
KyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3JMaXN0LmgKaW5kZXggNGZjZmVlMmZhYTQxODJkN2E5YWIwNTViY2NlNTE5ZmU3NGUyMjcxNS4u
MDk0ZTFkYTgzMzFkNGI3MmMzOWE2OGVjMWVhZDhiNGQxNGUwYjBjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTZWxlY3Rvckxpc3QuaApAQCAtNjAsNiArNjAsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
c2VsZWN0b3JzTmVlZE5hbWVzcGFjZVJlc29sdXRpb24oKTsKICAgICBib29sIGhhc0ludmFsaWRT
ZWxlY3RvcigpIGNvbnN0OwogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgYm9vbCBoYXNT
ZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yQXQoc2l6ZV90IGluZGV4KSBjb25zdDsKKyNlbmRpZgor
CiAgICAgU3RyaW5nIHNlbGVjdG9yc1RleHQoKSBjb25zdDsKIAogICAgIHZvaWQgcmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1J1bGVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCmlu
ZGV4IDlhNzhjMGZmOTAzODljOTBjNDRkYTVhNmI5ZjVmZjdhZTIwYzZlMzEuLmQ2YjhlMjc3OTRk
ODdlZWE0NmMzYWE5ZmEzZmQ3ZTRiZDQxYzU5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKQEAg
LTI4MSw4ICsyODEsMTcgQEAgdm9pZCBSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChTdHlsZVNo
ZWV0Q29udGVudHMqIHNoZWV0LCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHUKICAgICAgICAgU3R5bGVS
dWxlQmFzZSogcnVsZSA9IHJ1bGVzW2ldLmdldCgpOwogCiAgICAgICAgIEFTU0VSVCghcnVsZS0+
aXNJbXBvcnRSdWxlKCkpOwotICAgICAgICBpZiAocnVsZS0+aXNTdHlsZVJ1bGUoKSkKLSAgICAg
ICAgICAgIGFkZFN0eWxlUnVsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihydWxlKSwgYWRkUnVs
ZUZsYWdzKTsKKyAgICAgICAgaWYgKHJ1bGUtPmlzU3R5bGVSdWxlKCkpIHsKKyAgICAgICAgICAg
IFN0eWxlUnVsZSogc3R5bGVSdWxlID0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxlKj4ocnVsZSk7Cisj
aWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgICAgICBpZiAoc2NvcGUpCisgICAgICAgICAg
ICAgICAgcmVzb2x2ZXItPmFkZFN0eWxlUnVsZShzdHlsZVJ1bGUsIGNvbnN0X2Nhc3Q8Q29udGFp
bmVyTm9kZSo+KHNjb3BlKSwgdGhpcyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgYWRkU3R5bGVSdWxlKHN0eWxlUnVsZSwgYWRkUnVsZUZsYWdzKTsKKyNlbHNlCisgICAgICAg
ICAgICBhZGRTdHlsZVJ1bGUoc3R5bGVSdWxlLCBhZGRSdWxlRmxhZ3MpOworI2VuZGlmCisgICAg
ICAgIH0KICAgICAgICAgZWxzZSBpZiAocnVsZS0+aXNQYWdlUnVsZSgpKQogICAgICAgICAgICAg
YWRkUGFnZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlUGFnZSo+KHJ1bGUpKTsKICAgICAgICAg
ZWxzZSBpZiAocnVsZS0+aXNNZWRpYVJ1bGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmNwcAppbmRleCBmYWM4YjlmOGYwOTRkYmE4ZDhjMjkzZmE4ZjAxNGZkMmQyYzQ2MDI0
Li4wNWIxOGYwYjZlZWZhNGE5NGU4M2M3MjViOGVlNDA2Nzc0ZDgzMzhhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkhU
TUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFByb2dyZXNzRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk5vZGVSZW5k
ZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTE5NSw2ICsxOTYsNyBAQCB2b2lkIFNl
bGVjdG9yQ2hlY2tlcjo6Y29sbGVjdElkZW50aWZpZXJIYXNoZXMoY29uc3QgQ1NTU2VsZWN0b3Iq
IHNlbGVjdG9yLCB1bnNpZwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OkRlc2NlbmRhbnQ6CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkNoaWxkOgorICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpSZWZlcmVuY2U6CiAgICAgICAgICAgICBza2lwT3ZlclN1
YnNlbGVjdG9ycyA9IGZhbHNlOwogICAgICAgICAgICAgY29sbGVjdERlc2NlbmRhbnRTZWxlY3Rv
cklkZW50aWZpZXJIYXNoZXMoc2VsZWN0b3IsIGhhc2gsIGVuZCk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTQ3NSw4ICs0NzcsMTUgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNl
bGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWMKIAogICAgIC8v
IFByZXBhcmUgbmV4dCBzZWxlY3RvcgogICAgIENTU1NlbGVjdG9yKiBoaXN0b3J5U2VsZWN0b3Ig
PSBjb250ZXh0LnNlbGVjdG9yLT50YWdIaXN0b3J5KCk7Ci0gICAgaWYgKCFoaXN0b3J5U2VsZWN0
b3IpCisgICAgaWYgKCFoaXN0b3J5U2VsZWN0b3IpIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
KyAgICAgICAgaWYgKGNvbnRleHQuc2NvcGVPZkxhc3RFbGVtZW50KSB7CisgICAgICAgICAgICAv
LyBGSVhNRTogQ2hlY2sgdGhlIHNjb3BlIG1vcmUgc3RyaWN0bHkuCisgICAgICAgICAgICByZXR1
cm4gY29udGV4dC5zY29wZU9mTGFzdEVsZW1lbnQtPnRyZWVTY29wZSgpID09IGNvbnRleHQuZWxl
bWVudC0+dHJlZVNjb3BlKCkgPyBTZWxlY3Rvck1hdGNoZXMgOiBTZWxlY3RvckZhaWxzTG9jYWxs
eTsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIHJldHVybiBTZWxlY3Rvck1hdGNoZXM7Cisg
ICAgfQogCiAgICAgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQgbmV4dENvbnRleHQoY29udGV4dCk7
CiAgICAgbmV4dENvbnRleHQuc2VsZWN0b3IgPSBoaXN0b3J5U2VsZWN0b3I7CkBAIC01ODAsNiAr
NTg5LDI1IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6
OmNoZWNrU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVjCiAgICAgICAgICAgICBuZXh0Q29udGV4
dC5lbGVtZW50UGFyZW50U3R5bGUgPSAwOwogICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0
b3IobmV4dENvbnRleHQsIGlnbm9yZUR5bmFtaWNQc2V1ZG8pOwogICAgICAgICB9CisKKyAgICBj
YXNlIENTU1NlbGVjdG9yOjpSZWZlcmVuY2U6CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChj
b250ZXh0LnNlbGVjdG9yLT5yZWZlcmVuY2UoKSAhPSAic2VsZWN0IikKKyAgICAgICAgICAgICAg
ICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CisKKyAgICAgICAgICAgIFZlY3RvcjxJ
bnNlcnRpb25Qb2ludCo+IGluc2VydGlvblBvaW50czsKKyAgICAgICAgICAgIGNvbGxlY3RBbGxN
aWRwb2ludEluc2VydGlvblBvaW50cyhjb250ZXh0LmVsZW1lbnQsIGluc2VydGlvblBvaW50cyk7
CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc2VydGlvblBvaW50cy5zaXpl
KCk7ICsraSkgeworICAgICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnQgPSBpbnNlcnRp
b25Qb2ludHNbaV07CisgICAgICAgICAgICAgICAgbmV4dENvbnRleHQuaXNTdWJTZWxlY3RvciA9
IGZhbHNlOworICAgICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnRTdHlsZSA9IDA7Cisg
ICAgICAgICAgICAgICAgbmV4dENvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlID0gMDsKKyAgICAg
ICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hlY2tTZWxlY3RvcihuZXh0Q29udGV4
dCwgaWdub3JlRHluYW1pY1BzZXVkbyk7CisgICAgICAgICAgICAgICAgaWYgKG1hdGNoID09IFNl
bGVjdG9yTWF0Y2hlcyB8fCBtYXRjaCA9PSBTZWxlY3RvckZhaWxzQ29tcGxldGVseSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
cmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OworICAgICAgICB9CiAgICAgfQogCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2Vs
ZWN0b3JDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKaW5k
ZXggOWJkYjY2OWIyNDZlZTY0M2Q1ZTJlZTIyYjVhMWEyNGVlMDkxOGU2YS4uNDdiMzkwY2U3OWEx
ODk0YjVkNGJkMjk2YjAzMjVhNWZmNjUyMmI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNo
ZWNrZXIuaApAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAsIGlzU3ViU2Vs
ZWN0b3IoZmFsc2UpCiAgICAgICAgICAgICAsIGhhc1Njcm9sbGJhclBzZXVkbyhmYWxzZSkKICAg
ICAgICAgICAgICwgaGFzU2VsZWN0aW9uUHNldWRvKGZhbHNlKQorICAgICAgICAgICAgLCBzY29w
ZU9mTGFzdEVsZW1lbnQoMCkKICAgICAgICAgeyB9CiAKICAgICAgICAgQ1NTU2VsZWN0b3IqIHNl
bGVjdG9yOwpAQCAtNzksNiArODAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXNTdWJTZWxl
Y3RvcjsKICAgICAgICAgYm9vbCBoYXNTY3JvbGxiYXJQc2V1ZG87CiAgICAgICAgIGJvb2wgaGFz
U2VsZWN0aW9uUHNldWRvOworICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZU9mTGFz
dEVsZW1lbnQ7CiAgICAgfTsKIAogICAgIGJvb2wgY2hlY2tTZWxlY3RvcihDU1NTZWxlY3Rvcios
IEVsZW1lbnQqLCBib29sIGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yID0gZmFsc2UpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGNiZjZjOGE3NTFhZGRiZDQ2Y2Mx
MGIyYmIwZThmZWZjNzI0ZTkyZDcuLjc5ZTJhMDA0YjE5ZjNhYzgyYWUxNWE4OTViMTU5YjNhMmVm
ZDY4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTM2Niw2ICszNjYs
NyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnJlc2V0QXV0aG9yU3R5bGUoKQogewogICAgIG1fYXV0
aG9yU3R5bGUgPSBSdWxlU2V0OjpjcmVhdGUoKTsKICAgICBtX2F1dGhvclN0eWxlLT5kaXNhYmxl
QXV0b1Nocmlua1RvRml0KCk7CisgICAgbV9zZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZVNl
dE1hcC5jbGVhcigpOwogfQogCiB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxl
U2hlZXRzKHVuc2lnbmVkIGZpcnN0TmV3LCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hl
ZXQ+ID4mIHN0eWxlU2hlZXRzKQpAQCAtNDUwLDYgKzQ1MSwyNiBAQCB2b2lkIFN0eWxlUmVzb2x2
ZXI6OmFkZEtleWZyYW1lU3R5bGUoUGFzc1JlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IHJ1bGUp
CiAgICAgbV9rZXlmcmFtZXNSdWxlTWFwLnNldChzLmltcGwoKSwgcnVsZSk7CiB9CiAKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKKwordm9pZCBTdHlsZVJlc29sdmVyOjphZGRTdHlsZVJ1bGUoU3R5
bGVSdWxlKiBydWxlLCBDb250YWluZXJOb2RlKiBzY29wZSwgUnVsZVNldCogcnVsZVNldE9mU2Nv
cGUpCit7CisgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QgPSBydWxlLT5z
ZWxlY3Rvckxpc3QoKTsKKyAgICBmb3IgKHNpemVfdCBzZWxlY3RvckluZGV4ID0gMDsgc2VsZWN0
b3JJbmRleCAhPSBub3RGb3VuZDsgc2VsZWN0b3JJbmRleCA9IHNlbGVjdG9yTGlzdC5pbmRleE9m
TmV4dFNlbGVjdG9yQWZ0ZXIoc2VsZWN0b3JJbmRleCkpIHsKKyAgICAgICAgaWYgKHNlbGVjdG9y
TGlzdC5oYXNTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yQXQoc2VsZWN0b3JJbmRleCkpIHsKKyAg
ICAgICAgICAgIGlmIChtX3NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0TWFwLmNvbnRh
aW5zKHNjb3BlKSkKKyAgICAgICAgICAgICAgICBtX3NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JS
dWxlU2V0TWFwLmdldChzY29wZSktPmFkZFJ1bGUocnVsZSwgc2VsZWN0b3JJbmRleCwgUnVsZUhh
c05vU3BlY2lhbFN0YXRlKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIE93
blB0cjxSdWxlU2V0PiBydWxlU2V0ID0gYWRvcHRQdHIobmV3IFJ1bGVTZXQoKSk7CisgICAgICAg
ICAgICAgICAgcnVsZVNldC0+YWRkUnVsZShydWxlLCBzZWxlY3RvckluZGV4LCBSdWxlSGFzTm9T
cGVjaWFsU3RhdGUpOworICAgICAgICAgICAgICAgIG1fc2VsZWN0UmVmZXJlbmNlQ29tYmluYXRv
clJ1bGVTZXRNYXAuYWRkKHNjb3BlLCBydWxlU2V0LnJlbGVhc2UoKSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcnVsZVNldE9mU2NvcGUtPmFkZFJ1bGUocnVs
ZSwgc2VsZWN0b3JJbmRleCwgUnVsZUhhc05vU3BlY2lhbFN0YXRlKTsKKyAgICB9Cit9CisjZW5k
aWYKKwogU3R5bGVSZXNvbHZlcjo6flN0eWxlUmVzb2x2ZXIoKQogewogICAgIG1fZm9udFNlbGVj
dG9yLT5jbGVhckRvY3VtZW50KCk7CkBAIC03OTMsNiArODE0LDE3IEBAIHZvaWQgU3R5bGVSZXNv
bHZlcjo6bWF0Y2hIb3N0UnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1w
dHlSdWxlcykKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCit2b2lkIFN0eWxl
UmVzb2x2ZXI6Om1hdGNoU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVzKE1hdGNoUmVzdWx0
JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpCit7CisgICAgZm9yIChTZWxlY3RSZWZl
cmVuY2VDb21iaW5hdG9yUnVsZVNldE1hcDo6aXRlcmF0b3IgaXQgPSBtX3NlbGVjdFJlZmVyZW5j
ZUNvbWJpbmF0b3JSdWxlU2V0TWFwLmJlZ2luKCk7IGl0ICE9IG1fc2VsZWN0UmVmZXJlbmNlQ29t
YmluYXRvclJ1bGVTZXRNYXAuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgTWF0Y2hPcHRpb25zIG9w
dGlvbnMoaW5jbHVkZUVtcHR5UnVsZXMsIDApOworICAgICAgICBvcHRpb25zLnNjb3BlT2ZMYXN0
RWxlbWVudCA9IGl0LT5rZXk7CisgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKGl0LT52YWx1
ZS5nZXQoKSwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFz
dEF1dGhvclJ1bGUsIG9wdGlvbnMpOworICAgIH0KK30KKyNlbmRpZgorCiB2b2lkIFN0eWxlUmVz
b2x2ZXI6Om1hdGNoQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRl
RW1wdHlSdWxlcykKIHsKICAgICBtX21hdGNoZWRSdWxlcy5jbGVhcigpOwpAQCAtODA3LDYgKzgz
OSw5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYg
cmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzCiAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNG
b3JSZWdpb24obV9hdXRob3JTdHlsZS5nZXQoKSwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1
bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOwogCiAgICAgbWF0Y2hT
Y29wZWRBdXRob3JSdWxlcyhyZXN1bHQsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKKyAgICBtYXRjaFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlcyhyZXN1
bHQsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyNlbmRpZgogCiAgICAgc29ydEFuZFRyYW5zZmVyTWF0
Y2hlZFJ1bGVzKHJlc3VsdCk7CiB9CkBAIC04NDIsNyArODc3LDExIEBAIHZvaWQgU3R5bGVSZXNv
bHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4q
IHJ1bGVzLCBpCiAKICAgICAvLyBJbiBzb21lIGNhc2VzIHdlIG1heSBlbmQgdXAgbG9va2luZyB1
cCBzdHlsZSBmb3IgcmFuZG9tIGVsZW1lbnRzIGluIHRoZSBtaWRkbGUgb2YgYSByZWN1cnNpdmUg
dHJlZSByZXNvbHZlLgogICAgIC8vIEFuY2VzdG9yIGlkZW50aWZpZXIgZmlsdGVyIHdvbid0IGJl
IHVwLXRvLWRhdGUgaW4gdGhhdCBjYXNlIGFuZCB3ZSBjYW4ndCB1c2UgdGhlIGZhc3QgcGF0aC4K
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBib29sIGNhblVzZUZhc3RSZWplY3QgPSBtX2No
ZWNrZXIucGFyZW50U3RhY2tJc0NvbnNpc3RlbnQobV9wYXJlbnROb2RlKSAmJiAhb3B0aW9ucy5z
Y29wZU9mTGFzdEVsZW1lbnQ7CisjZWxzZQogICAgIGJvb2wgY2FuVXNlRmFzdFJlamVjdCA9IG1f
Y2hlY2tlci5wYXJlbnRTdGFja0lzQ29uc2lzdGVudChtX3BhcmVudE5vZGUpOworI2VuZGlmCiAK
ICAgICB1bnNpZ25lZCBzaXplID0gcnVsZXMtPnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc2l6ZTsgKytpKSB7CkBAIC04NTIsNyArODkxLDcgQEAgdm9pZCBTdHlsZVJlc29s
dmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiog
cnVsZXMsIGkKIAogICAgICAgICBTdHlsZVJ1bGUqIHJ1bGUgPSBydWxlRGF0YS5ydWxlKCk7CiAg
ICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxNYXRjaFJ1bGUoZG9jdW1lbnQoKSwgcnVsZSk7Ci0gICAgICAg
IGlmIChjaGVja1NlbGVjdG9yKHJ1bGVEYXRhLCBvcHRpb25zLnNjb3BlKSkgeworICAgICAgICBp
ZiAoY2hlY2tTZWxlY3RvcihydWxlRGF0YSwgb3B0aW9ucy5zY29wZSwgb3B0aW9ucy5zY29wZU9m
TGFzdEVsZW1lbnQpKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUgcnVsZSBoYXMgbm8gcHJvcGVy
dGllcyB0byBhcHBseSwgdGhlbiBpZ25vcmUgaXQgaW4gdGhlIG5vbi1kZWJ1ZyBtb2RlLgogICAg
ICAgICAgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcyA9IHJ1bGUtPnByb3Bl
cnRpZXMoKTsKICAgICAgICAgICAgIGlmICghcHJvcGVydGllcyB8fCAocHJvcGVydGllcy0+aXNF
bXB0eSgpICYmICFvcHRpb25zLmluY2x1ZGVFbXB0eVJ1bGVzKSkgewpAQCAtMjEzMyw3ICsyMTcy
LDcgQEAgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gU3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5bGVS
dWxlc0ZvckVsZW1lbnQoRWxlbWVudCogZSwgUHMKICAgICByZXR1cm4gbV9ydWxlTGlzdC5yZWxl
YXNlKCk7CiB9CiAKLWlubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6OmNoZWNrU2VsZWN0b3IoY29u
c3QgUnVsZURhdGEmIHJ1bGVEYXRhLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSkKK2lubGlu
ZSBib29sIFN0eWxlUmVzb2x2ZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmIHJ1bGVE
YXRhLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSwgY29uc3QgQ29udGFpbmVyTm9kZSogc2Nv
cGVPZkxhc3RFbGVtZW50KQogewogICAgIG1fZHluYW1pY1BzZXVkbyA9IE5PUFNFVURPOwogCkBA
IC0yMTU4LDYgKzIxOTcsNyBAQCBpbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpjaGVja1NlbGVj
dG9yKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgY29uc3QgQ29udGFpbgogICAgIGNvbnRleHQu
ZWxlbWVudFN0eWxlID0gc3R5bGUoKTsKICAgICBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9
IG1fcGFyZW50Tm9kZSA/IG1fcGFyZW50Tm9kZS0+cmVuZGVyU3R5bGUoKSA6IDA7CiAgICAgY29u
dGV4dC5zY29wZSA9IHNjb3BlOworICAgIGNvbnRleHQuc2NvcGVPZkxhc3RFbGVtZW50ID0gc2Nv
cGVPZkxhc3RFbGVtZW50OwogICAgIGNvbnRleHQucHNldWRvU3R5bGUgPSBtX3BzZXVkb1N0eWxl
OwogICAgIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBtYXRjaCA9IG1fY2hlY2tlci5j
aGVja1NlbGVjdG9yKGNvbnRleHQsIG1fZHluYW1pY1BzZXVkbyk7CiAgICAgaWYgKG1hdGNoICE9
IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmgKaW5kZXggMDU1ZDgxM2VkYjU2YjA1MGNiNjEzMzcyNDU0ODUxMWRjNjBmYjIyYi4uMmMy
ZWI2N2I2ZDE0ZWQ3NzM4NzI4OTZhNTM1NmU1ZmUwZGUzM2Q0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5oCkBAIC0yNjAsNiArMjYwLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRk
S2V5ZnJhbWVTdHlsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4pOwogCisjaWYgRU5B
QkxFKFNIQURPV19ET00pCisgICAgdm9pZCBhZGRTdHlsZVJ1bGUoU3R5bGVSdWxlKiwgQ29udGFp
bmVyTm9kZSogc2NvcGUsIFJ1bGVTZXQqIHJ1bGVTZXRPZlNjb3BlKTsKKyNlbmRpZgorCiAgICAg
Ym9vbCBjaGVja1JlZ2lvblN0eWxlKEVsZW1lbnQqIHJlZ2lvbkVsZW1lbnQpOwogCiAgICAgYm9v
bCB1c2VzU2libGluZ1J1bGVzKCkgY29uc3QgeyByZXR1cm4gIW1fZmVhdHVyZXMuc2libGluZ1J1
bGVzLmlzRW1wdHkoKTsgfQpAQCAtMzM4LDkgKzM0MiwxMSBAQCBwcml2YXRlOgogICAgIH07CiAK
ICAgICBzdHJ1Y3QgTWF0Y2hPcHRpb25zIHsKLSAgICAgICAgTWF0Y2hPcHRpb25zKGJvb2wgaW5j
bHVkZUVtcHR5UnVsZXMsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlID0gMCkgOiBzY29wZShz
Y29wZSksIGluY2x1ZGVFbXB0eVJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKSB7IH0KKyAgICAgICAg
TWF0Y2hPcHRpb25zKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIGNvbnN0IENvbnRhaW5lck5vZGUq
IHNjb3BlID0gMCkKKyAgICAgICAgICAgIDogc2NvcGUoc2NvcGUpLCBpbmNsdWRlRW1wdHlSdWxl
cyhpbmNsdWRlRW1wdHlSdWxlcyksIHNjb3BlT2ZMYXN0RWxlbWVudCgwKSB7IH0KICAgICAgICAg
Y29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGU7CiAgICAgICAgIGJvb2wgaW5jbHVkZUVtcHR5UnVs
ZXM7CisgICAgICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlT2ZMYXN0RWxlbWVudDsKICAg
ICB9OwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWF0Y2hlZFByb3BlcnRpZXMoTWF0Y2hSZXN1bHQm
LCBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzLCBTdHlsZVJ1bGUqID0gMCwgdW5z
aWduZWQgbGlua01hdGNoVHlwZSA9IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hBbGwsIGJvb2wgaW5S
ZWdpb25SdWxlID0gZmFsc2UpOwpAQCAtMzUzLDYgKzM1OSwxMCBAQCBwcml2YXRlOgogICAgIHZv
aWQgbWF0Y2hVc2VyUnVsZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsK
ICAgICB2b2lkIG1hdGNoU2NvcGVkQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1
ZGVFbXB0eVJ1bGVzKTsKICAgICB2b2lkIG1hdGNoSG9zdFJ1bGVzKE1hdGNoUmVzdWx0JiwgYm9v
bCBpbmNsdWRlRW1wdHlSdWxlcyk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgdm9pZCBt
YXRjaFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlcyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5j
bHVkZUVtcHR5UnVsZXMpOworI2VuZGlmCisKICAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVz
KFJ1bGVTZXQqLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGNvbnN0
IE1hdGNoT3B0aW9ucyYpOwogICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24o
UnVsZVNldCosIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgY29uc3Qg
TWF0Y2hPcHRpb25zJik7CiAgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29u
c3QgVmVjdG9yPFJ1bGVEYXRhPiosIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJ
bmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJik7CkBAIC0zNjAsNyArMzcwLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNvcnRNYXRjaGVkUnVsZXMoKTsKICAgICB2b2lkIHNvcnRBbmRUcmFuc2Zlck1h
dGNoZWRSdWxlcyhNYXRjaFJlc3VsdCYpOwogCi0gICAgYm9vbCBjaGVja1NlbGVjdG9yKGNvbnN0
IFJ1bGVEYXRhJiwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUpOworICAgIGJvb2wgY2hlY2tT
ZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlLCBjb25z
dCBDb250YWluZXJOb2RlKiBzY29wZU9mTGFzdEVsZW1lbnQpOwogICAgIGJvb2wgY2hlY2tSZWdp
b25TZWxlY3RvcihDU1NTZWxlY3RvciogcmVnaW9uU2VsZWN0b3IsIEVsZW1lbnQqIHJlZ2lvbkVs
ZW1lbnQpOwogICAgIHZvaWQgYXBwbHlNYXRjaGVkUHJvcGVydGllcyhjb25zdCBNYXRjaFJlc3Vs
dCYsIGNvbnN0IEVsZW1lbnQqKTsKICAgICBlbnVtIFN0eWxlQXBwbGljYXRpb25QYXNzIHsKQEAg
LTM5MSw2ICs0MDEsOSBAQCBwcml2YXRlOgogICAgIE93blB0cjxSdWxlU2V0PiBtX2F1dGhvclN0
eWxlOwogICAgIE93blB0cjxSdWxlU2V0PiBtX3VzZXJTdHlsZTsKIAorICAgIHR5cGVkZWYgSGFz
aE1hcDxjb25zdCBDb250YWluZXJOb2RlKiwgT3duUHRyPFJ1bGVTZXQ+ID4gU2VsZWN0UmVmZXJl
bmNlQ29tYmluYXRvclJ1bGVTZXRNYXA7CisgICAgU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1
bGVTZXRNYXAgbV9zZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZVNldE1hcDsKKwogICAgIFJ1
bGVGZWF0dXJlU2V0IG1fZmVhdHVyZXM7CiAgICAgT3duUHRyPFJ1bGVTZXQ+IG1fc2libGluZ1J1
bGVTZXQ7CiAgICAgT3duUHRyPFJ1bGVTZXQ+IG1fdW5jb21tb25BdHRyaWJ1dGVSdWxlU2V0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKaW5kZXggZDRiN2Q3
ZDBkOTEzMDNjNjA3MGQ1OWE5MWVjNjhkNzZlM2RmYjRiNS4uZDQ2YzRmOWVkNzhmYjlmZDlkNzhk
NjVhMmQ5NWI4Mzk2MTU3YTNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNl
cnRpb25Qb2ludC5oCkBAIC0xNzEsNiArMTcxLDM3IEBAIGlubGluZSBJbnNlcnRpb25Qb2ludCog
cmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlKQogICAgIHJldHVy
biBpbnNlcnRpb25Qb2ludDsKIH0KIAorLy8gRklYTUU6IENvbGxlY3RzIG9ubHkgSFRNTENvbnRl
bnRFbGVtZW50IHNpbmNlIGEgc2VsZWN0IHJlZmVyZW5jZSBjb21iaW5hdG9yIGNhbiBiZQorLy8g
YXBwbGllZCB0byBvbmx5IDxjb250ZW50PiBlbGVtZW50cy4KK2lubGluZSB2b2lkIGNvbGxlY3RB
bGxNaWRwb2ludEluc2VydGlvblBvaW50cyhjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlLCBWZWN0
b3I8SW5zZXJ0aW9uUG9pbnQqPiYgcmVzdWx0cykKK3sKKyAgICBJbnNlcnRpb25Qb2ludCogaW5z
ZXJ0aW9uUG9pbnQgPSAwOworICAgIGNvbnN0IE5vZGUqIGN1cnJlbnQgPSBwcm9qZWN0ZWROb2Rl
OworCisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRv
dyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKGN1cnJlbnQpKSB7CisgICAgICAgICAg
ICBzaGFkb3ctPmVuc3VyZURpc3RyaWJ1dGlvbigpOworICAgICAgICAgICAgaWYgKEluc2VydGlv
blBvaW50KiBpbnNlcnRlZFRvID0gc2hhZG93LT5kaXN0cmlidXRvcigpLmZpbmRJbnNlcnRpb25Q
b2ludEZvcihwcm9qZWN0ZWROb2RlKSkgeworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBpbnNl
cnRlZFRvOworICAgICAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsKKyAg
ICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChpbnNlcnRpb25Qb2ludCk7CisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAo
Tm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZUZvckRpc3RyaWJ1dGlvbihjdXJyZW50KSkgeworICAg
ICAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRlZFRvID0gcGFyZW50LT5pc1NoYWRv
d1Jvb3QoKSA/IHRvU2hhZG93Um9vdChwYXJlbnQpLT5hc3NpZ25lZFRvKCkgOiAwKSB7CisgICAg
ICAgICAgICAgICAgY3VycmVudCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgaW5zZXJ0
aW9uUG9pbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKGlu
c2VydGlvblBvaW50KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEluc2VydGlvblBvaW50X2gKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxMGY5MzNkYTgz
NDYwOGRlZDA1ZWQyYzA5NDFjM2U2ZDhiZjc3MTM5Li43NWQyOWUwYzJmYWJiMjgzYmExNmMxNDUy
ZTM4NzIzYjgzZDViMTJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTEtMDcgIEhheWF0
byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBJbXBs
ZW1lbnRzIGEgL3NlbGVjdC8gcmVmZXJlbmNlIGNvbWJpbmF0b3IuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjE2OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NlbGVjdC1y
ZWZlcmVuY2UtY29tYmluYXRvci1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLW5lc3RlZC1leHBlY3RlZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1j
b21iaW5hdG9yLW5lc3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cv
c2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTI3ICBL
ZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFVw
ZGF0ZSB0ZXN0IHJlc3VsdHMgZm9yIHJlY2VudCBmb3JtcyBjaGFuZ2VzCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5j
ZS1jb21iaW5hdG9yLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE0OTU5Yjg2MjQwMjkyNWUw
N2VlODZmNWI4MmFkNTBjMTBkN2RhMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItZXhwZWN0ZWQuaHRtbApA
QCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlk
PSJzYW5kYm94Ij4KKyAgPGRpdj4KKyAgICA8ZGl2PnNoYWRvdyBjaGlsZDwvZGl2PgorICAgIDxk
aXY+CisgICAgICA8ZGl2PgorICAgICAgICA8ZGl2PgorICAgICAgICAgIDxkaXYgc3R5bGU9ImNv
bG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgICAgICAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3Jl
ZW4iPmdyZWVuPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+
CisgICAgPGRpdiBzdHlsZT0iY29sb3I6IGJsdWUiPmJsdWU8L2Rpdj4KKyAgICA8ZGl2IHN0eWxl
PSJjb2xvcjogcmVkIj5yZWQ8L2Rpdj4KKyAgPC9kaXY+CisgIDxkaXY+CisgICAgPGRpdj4KKyAg
ICAgIDxkaXY+CisgICAgICAgIDxkaXY+U3R5bGUgc2hvdWxkIG5vdCBiZSBhcHBsaWVkLjwvZGl2
PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2Ut
Y29tYmluYXRvci1uZXN0ZWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItbmVzdGVkLWV4cGVjdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTUxODM0NDJhMDc2YzdmODFhOWM1NDIxMzFlNzlmYjc3NmYwMTFjYwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNl
LWNvbWJpbmF0b3ItbmVzdGVkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9
Imhvc3QiPgorICAgIDxkaXYgaWQ9Im5lc3RlZC1ob3N0Ij4KKyAgICAgIHRleHQxCisgICAgICA8
ZGl2PgorICAgICAgICB0ZXh0MgorICAgICAgICA8ZGl2PgorICAgICAgICAgIHRleHQzCisgICAg
ICAgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgICAgICAgIDxk
aXY+bm9ybWFsPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+
CisgIDwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLW5lc3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmlu
YXRvci1uZXN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZWI0ZmU0MWY5MzAwNzM2OGZmMTQ5NDdhYzc0
NTQ5YWNjOGFkY2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci1uZXN0ZWQuaHRtbApAQCAtMCwwICsxLDMy
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJz
YW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2RpdiBjb250ZW50
IC9zZWxlY3QvIGRpdiBjb250ZW50IC9zZWxlY3QvIGRpdi5ncmVlbiB7IGNvbG9yOiBncmVlbjsg
fSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsK
K3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3Qn
fSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgnZGl2JywgeydpZCc6ICduZXN0ZWQtaG9zdCd9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZSgndGV4dDEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCd0ZXh0MicpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxl
Y3QnOiAnZGl2J30pKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdk
aXYnLCB7J2NsYXNzJzogJ2dyZWVuJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCd0ZXh0MycpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7fSkpKSksCisgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdncmVlbid9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpLAorICAgICAg
ICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJl
ZmVyZW5jZS1jb21iaW5hdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2Vs
ZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjMzNzYyZDIxNzM4YTkx
MTdjYTI5OTQ1YjQzMGU4YWU3ZWU3ZDEyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3IuaHRtbApAQCAtMCww
ICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2RpdiBj
b250ZW50IC9zZWxlY3QvIGRpdiBkaXYgeyBjb2xvcjogZ3JlZW47IH0nCisgICAgKyAnICNzaGFk
b3ctY29udGVudCAvc2VsZWN0LyBkaXYuYmx1ZSB7IGNvbG9yOiBibHVlOyB9JworICAgICsgJyAj
c2hhZG93LWNvbnRlbnQgL3NlbGVjdC8gZGl2LnJlZCB7IGNvbG9yOiByZWQ7IH0nOworCit2YXIg
c2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFw
cGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAg
ICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwK
KyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3NoYWRvdyBjaGlsZCcpKSwKKyAg
ICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnZGl2LmdyZWVuJ30p
KSksCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J2lkJzogJ3NoYWRv
dy1jb250ZW50JywgJ3NlbGVjdCc6ICdkaXYnfSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHsnY2xhc3MnOiAnZ3JlZW4nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHsnY2xhc3MnOiAnYmx1ZSd9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ2JsdWUnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2
JywgeydjbGFzcyc6ICdyZWQnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCdyZWQnKSkpKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRl
RE9NKCdkaXYnLCB7J2lkJzogJ290aGVyLWhvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hh
ZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jywge30pKSksCisgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVh
dGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCdTdHlsZSBzaG91bGQgbm90IGJlIGFwcGxpZWQuJykpKSkpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176698</attachid>
            <date>2012-11-29 03:55:53 -0800</date>
            <delta_ts>2012-11-29 05:26:32 -0800</delta_ts>
            <desc>Add test. A select reference combinator is used in selecor list.</desc>
            <filename>bug-82169-20121129205327.patch</filename>
            <type>text/plain</type>
            <size>34756</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiZWYxMzMzZTE1MjZkMGUwM2M3MDllNzRjYzczZDZmNTJhYmE5YTBmLi5m
M2M4Mzk2OGM5MjYyYmQ1MmQxMjliODhjOTYyM2Q2NWMwOTIyNDJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsODYgQEAKKzIwMTItMTAtMjMgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBJbXBsZW1lbnRzIGEgL3NlbGVjdC8gcmVmZXJlbmNl
IGNvbWJpbmF0b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MjE2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudHMgYSAnc2VsZWN0JyByZWZlcmVuY2UgY29tYmluYXRvciBiZWhpbmQgYSBT
SEFET1dfRE9NIGZsYWcuCisgICAgICAgIFNlZSB0aGUgU2VsZWN0b3JzIExldmVsIDQgc3BlY2lm
aWNhdGlvbiBhbmQgdGhlIFNoYWRvdyBET00gc3BlY2lmaWNhdGlvbiBmb3IgdGhlIGRldGFpbC4K
KworICAgICAgICBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9zZWxlY3RvcnM0LyNpZHJlZi1jb21i
aW5hdG9ycworICAgICAgICBodHRwOi8vZHZjcy53My5vcmcvaGcvd2ViY29tcG9uZW50cy9yYXct
ZmlsZS90aXAvc3BlYy9zaGFkb3cvaW5kZXguaHRtbCNzZWxlY3Rpbmctbm9kZXMtZGlzdHJpYnV0
ZWQtdG8taW5zZXJ0aW9uLXBvaW50cworCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBh
IHNlbGVjdCByZWZlcmVuY2UgY29tYmluYXRvciBhcyB0aGUgZmlyc3QKKyAgICAgICAgcmVmZXJl
bmNlIGNvbWJpbmF0b3IgaW1wbGVtZW50ZWQgaW4gV2ViS2l0LiAgU2luY2UgV2ViS2l0IGhhcyBu
b3QKKyAgICAgICAgc3VwcG9ydGVkIHJlZmVyZW5jZSBjb21iaW5hdG9ycyBzbyBmYXIsIENTUyBn
cmFtbWVyIGFuZCBwYXJzZXIgYXJlCisgICAgICAgIHVwZGF0ZWQgdG8gc3VwcG9ydCB0aGUgbmV3
IHN5bnRheCB1c2VkIGluIFNlbGVjdG9yIExldmVsNCdzCisgICAgICAgIHJlZmVyZW5jZSBjb21i
aW5hdG9ycy4KKworICAgICAgICBBIHNlbGVjdCByZWZlcmVuY2UgY29tYmluYXRvciBpcyB0aGUg
Zmlyc3QgQ1NTIHJ1bGUgd2hpY2ggY3Jvc3NlcworICAgICAgICB0aGUgc2hhZG93IGJvdW5kYXJ5
IGZyb20gYSBzaGFkb3cgdHJlZSB0byB0aGUgdHJlZSBvZiBpdHMgc2hhZG93CisgICAgICAgIGhv
c3QuIFRoYXQgbWVhbnMgYSBzZWxlY3QgcmVmZXJlbmNlIGNvbWJpbmF0b3IgaXMgZGVmaW5lZCBp
bgorICAgICAgICBzaGFkb3cgdHJlZSwgYnV0IHRoZSBub2RlIHdoaWNoIGlzIG1hdGNoZWQgaW4g
dGhlIHJ1bGUgaXMgb3V0c2lkZQorICAgICAgICBvZiB0aGUgc2hhZG93IHRyZWUuCisKKyAgICAg
ICAgU28gd2UgY2Fubm90IHByZWRpY3QgYSBzY29wZSB3aGVyZSB0aGUgbWF0Y2hlZCBub2RlIHdp
bGwgYmUgYmVmb3JlaGFuZC4KKyAgICAgICAgQ3VycmVudCBDU1MgaW1wbGVtZW50YXRpb24gYXNz
dW1lcyBldmVyeSBmaW5hbCB0YXJnZXQgaXMgYXBwbGllZCBpbiBjdXJyZW50IHNjb3BlLgorCisg
ICAgICAgIFRvIG92ZXJjb21lIHRoaXMgaXNzdWUsIEkgdXBkYXRlZCBTdHlsZVJlc29sdmVyIHNv
IHRoYXQgaXQgaGFzCisgICAgICAgIFNlbGVjdFJlZmVyZWNlQ29tYmluYXRvclJ1bGVTZXRNYXAu
IFRoZSBSdWxlU2V0TWFwIGlzIHVzZWQgdG8ga2VlcAorICAgICAgICB0cmFjayBvZiBSdWxlU2V0
IG1hcHBlZCBieSBhIHNjb3BlIHdoZXJlIGEgc2VsZWN0IHJlZmVyZW5jZQorICAgICAgICBjb21i
aW5hdG9yIGlzIG9yaWdpbmFsbHkgZGVmaW5lZC4gVGhlIHNjb3BlIGlzIHVzZWQgdG8gY2hlY2sK
KyAgICAgICAgd2hldGhlciB0aGUgbGFzdCBlbGVtZW50IG1hdGNoZWQgYnkgU2VsZWN0b3JDaGVj
a2VyIGV4aXN0cyBpbiB0aGUKKyAgICAgICAgc2NvcGUgd2hlcmUgdGhlIHJ1bGUgaXMgb3JpZ2lu
YWxseSBkZWZpbmVkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJl
ZmVyZW5jZS1jb21iaW5hdG9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9z
ZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItbmVzdGVkLmh0bWwKKworICAgICAgICAqIGNzcy9D
U1NHcmFtbWFyLnkuaW46CisgICAgICAgICogY3NzL0NTU1BhcnNlclZhbHVlcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnNldFJlZmVyZW5jZSk6CisgICAgICAgICog
Y3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZWxl
Y3RvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnNldFJlZmVyZW5jZSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpSYXJl
RGF0YTo6UmFyZURhdGEpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOgorICAgICAgICAo
Q1NTU2VsZWN0b3IpOgorICAgICAgICAoUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2VsZWN0b3I6OnJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NlbGVjdG9yOjppc1JlZmVyZW5jZUNvbWJpbmF0b3IpOgorICAgICAgICAqIGNzcy9D
U1NTZWxlY3Rvckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTZWxlY3Rv
ckhhc1NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JIYXNTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yOjpvcGVyYXRvcigpKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1NlbGVjdG9yTGlzdDo6aGFzU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvckF0KToK
KyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0Lmg6CisgICAgICAgIChDU1NTZWxlY3Rvckxp
c3QpOgorICAgICAgICAqIGNzcy9SdWxlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVT
ZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y29sbGVjdElkZW50aWZpZXJI
YXNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9y
KToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0OjpTZWxlY3RvckNoZWNraW5n
Q29udGV4dCk6CisgICAgICAgIChTZWxlY3RvckNoZWNraW5nQ29udGV4dCk6CisgICAgICAgICog
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
cmVzZXRBdXRob3JTdHlsZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OmFkZFN0eWxlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjptYXRjaFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRjaEF1dGhvclJ1bGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjaGVja1NlbGVjdG9yKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5oOgorICAgICAgICAoU3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjpNYXRjaE9wdGlvbnM6Ok1hdGNoT3B0aW9ucyk6CisgICAgICAg
IChNYXRjaE9wdGlvbnMpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50Lmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RBbGxNaWRwb2lu
dEluc2VydGlvblBvaW50cyk6CisKIDIwMTItMTEtMjggIEhheWF0byBJdG8gIDxoYXlhdG9AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIE5vZGU6OmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIHJldHVy
bnMgd3JvbmcgdmFsdWUgZm9yIGEgbm9kZSBpbiB0aGUgZGlmZmVyZW50IHNoYWRvdyB0cmVlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbiBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KaW5kZXggMjFiMDE2MTM1YmE1OGU0ZTIwNGVmNzY5
YTE5N2YwYjg3MTRiNmU5NC4uOGNhNzE3MTMxNzk4ODYyYWFkNTRmYTlkNDI3YTBhNTFjZmQxNzBh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCkBAIC0yODksNiArMjg5LDkgQEAgc3Rh
dGljIGlubGluZSBpbnQgY3NzeXllcnJvcih2b2lkKiwgY29uc3QgY2hhciopCiAKICV0eXBlIDxz
dHJpbmc+IGVsZW1lbnRfbmFtZQogJXR5cGUgPHN0cmluZz4gYXR0cl9uYW1lCisjaWYgRU5BQkxF
X1NIQURPV19ET00KKyV0eXBlIDxzdHJpbmc+IHJlZmVyZW5jZV9jb21iaW5hdG9yCisjZW5kaWYK
IAogJSUKIApAQCAtMTAwMSw2ICsxMDA0LDE3IEBAIGNvbWJpbmF0b3I6CiAgIHwgJz4nIG1heWJl
X3NwYWNlIHsgJCQgPSBDU1NTZWxlY3Rvcjo6Q2hpbGQ7IH0KICAgOwogCisjaWYgRU5BQkxFX1NI
QURPV19ET00KK3JlZmVyZW5jZV9jb21iaW5hdG9yOgorICAnLycgSURFTlQgJy8nIG1heWJlX3Nw
YWNlIHsKKyAgICAgICAgQ1NTUGFyc2VyU3RyaW5nJiBzdHIgPSAkMjsKKyAgICAgICAgaWYgKHBh
cnNlci0+bV9jb250ZXh0LmlzSFRNTERvY3VtZW50KQorICAgICAgICAgICAgc3RyLmxvd2VyKCk7
CisgICAgICAgICQkID0gc3RyOworICB9CisgIDsKKyNlbmRpZgorCiBtYXliZV91bmFyeV9vcGVy
YXRvcjoKICAgICB1bmFyeV9vcGVyYXRvciB7ICQkID0gJDE7IH0KICAgICB8IHsgJCQgPSAxOyB9
CkBAIC0xMDk2LDYgKzExMTAsMjIgQEAgc2VsZWN0b3I6CiAgICAgICAgICAgICBlbmQtPnNldFRh
Z0hpc3RvcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOwogICAgICAgICB9CiAg
ICAgfQorI2lmIEVOQUJMRV9TSEFET1dfRE9NCisgICAgfCBzZWxlY3RvciByZWZlcmVuY2VfY29t
YmluYXRvciBzaW1wbGVfc2VsZWN0b3IgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlJlZmVy
ZW5jZSBDb21iaW5hdG9yIVxuIik7CisgICAgICAgICQkID0gJDM7CisgICAgICAgIGlmICghJDEp
CisgICAgICAgICAgICAkJCA9IDA7CisgICAgICAgIGVsc2UgaWYgKCQkKSB7CisgICAgICAgICAg
ICBDU1NQYXJzZXJTZWxlY3RvciogZW5kID0gJCQ7CisgICAgICAgICAgICB3aGlsZSAoZW5kLT50
YWdIaXN0b3J5KCkpCisgICAgICAgICAgICAgICAgZW5kID0gZW5kLT50YWdIaXN0b3J5KCk7Cisg
ICAgICAgICAgICBlbmQtPnNldFJlbGF0aW9uKENTU1NlbGVjdG9yOjpSZWZlcmVuY2UpOworICAg
ICAgICAgICAgZW5kLT5zZXRSZWZlcmVuY2UoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDIsIG51
bGxBdG9tKSk7CisgICAgICAgICAgICBlbmQtPnNldFRhZ0hpc3RvcnkocGFyc2VyLT5zaW5rRmxv
YXRpbmdTZWxlY3RvcigkMSkpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCiAgICAgfCBzZWxl
Y3RvciBlcnJvciB7CiAgICAgICAgICQkID0gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyVmFsdWVzLmgKaW5kZXggMTMwMWIxY2UwZTExMzcyM2NjZjgyMTYyOGVlMDVlMmUzMTAyMzY3
Yi4uZTIzZGVkNTBlMjc5Y2MxZDlmMTYxZTA5NjY0ZDQ0ZWQ4YTc5NjcwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaApAQCAtMTgzLDYgKzE4Myw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldE1hdGNoKENTU1NlbGVjdG9yOjpNYXRjaCB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5tX21h
dGNoID0gdmFsdWU7IH0KICAgICB2b2lkIHNldFJlbGF0aW9uKENTU1NlbGVjdG9yOjpSZWxhdGlv
biB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5tX3JlbGF0aW9uID0gdmFsdWU7IH0KICAgICB2b2lkIHNl
dEZvclBhZ2UoKSB7IG1fc2VsZWN0b3ItPnNldEZvclBhZ2UoKTsgfQorICAgIHZvaWQgc2V0UmVm
ZXJlbmNlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHZhbHVlKSB7IG1fc2VsZWN0b3ItPnNldFJlZmVy
ZW5jZSh2YWx1ZSk7IH0KIAogICAgIHZvaWQgYWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3du
UHRyPENTU1BhcnNlclNlbGVjdG9yPiA+JiBzZWxlY3RvclZlY3Rvcik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3IuY3BwCmluZGV4IGM5ZGQxOTM3YTU4ZTZmMWM4NzdjNzFjYzk4NmQ2ZWQwNmY1
MzQ3NTAuLmIwYmM3NTFjODNhYjBmNzNjZTE3NTczODBjNmRhZjBjNzc5OTYwZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yLmNwcApAQCAtNjU0LDYgKzY1NCw4IEBAIFN0cmluZyBDU1NTZWxl
Y3Rvcjo6c2VsZWN0b3JUZXh0KCkgY29uc3QKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50OgogICAgICAg
ICAgICAgcmV0dXJuIHRhZ0hpc3RvcnlUZXh0ICsgc3RyLnRvU3RyaW5nKCk7CisgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlJlZmVyZW5jZToKKyAgICAgICAgICAgIHJldHVybiB0YWdIaXN0b3J5
VGV4dCArICIgLyIgKyBjcy0+cmVmZXJlbmNlKCkudG9TdHJpbmcoKSArICIvICIgKyAgc3RyLnRv
U3RyaW5nKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY2Niw2ICs2NjgsMTIgQEAgdm9pZCBD
U1NTZWxlY3Rvcjo6c2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHZhbHVlKQogICAg
IG1fZGF0YS5tX3JhcmVEYXRhLT5tX2F0dHJpYnV0ZSA9IHZhbHVlOwogfQogCit2b2lkIENTU1Nl
bGVjdG9yOjpzZXRSZWZlcmVuY2UoY29uc3QgUXVhbGlmaWVkTmFtZSYgdmFsdWUpCit7CisgICAg
Y3JlYXRlUmFyZURhdGEoKTsKKyAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9yZWZlcmVuY2UgPSB2
YWx1ZTsKK30KKwogdm9pZCBDU1NTZWxlY3Rvcjo6c2V0QXJndW1lbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICBjcmVhdGVSYXJlRGF0YSgpOwpAQCAtNzI0LDYgKzczMiw3IEBA
IENTU1NlbGVjdG9yOjpSYXJlRGF0YTo6UmFyZURhdGEoUGFzc1JlZlB0cjxBdG9taWNTdHJpbmdJ
bXBsPiB2YWx1ZSkKICAgICAsIG1fYSgwKQogICAgICwgbV9iKDApCiAgICAgLCBtX2F0dHJpYnV0
ZShhbnlRTmFtZSgpKQorICAgICwgbV9yZWZlcmVuY2UoYW55UU5hbWUoKSkKICAgICAsIG1fYXJn
dW1lbnQobnVsbEF0b20pCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCmluZGV4IGFlZTUw
NzRkNzVmN2JiM2Y2ZTQxMjk1ZGQxYmFhYzA5NzYzMDg0NWYuLjY0NDUyNDEzY2E4YTA2ZDY2YTQw
YTVhZWI5NmI0ODdlYzQ1NmI1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCkBAIC03Niw3
ICs3Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERpcmVjdEFkamFjZW50
LAogICAgICAgICAgICAgSW5kaXJlY3RBZGphY2VudCwKICAgICAgICAgICAgIFN1YlNlbGVjdG9y
LAotICAgICAgICAgICAgU2hhZG93RGVzY2VuZGFudAorICAgICAgICAgICAgU2hhZG93RGVzY2Vu
ZGFudCwKKyAgICAgICAgICAgIFJlZmVyZW5jZQogICAgICAgICB9OwogCiAgICAgICAgIGVudW0g
UHNldWRvVHlwZSB7CkBAIC0xOTksMTIgKzIwMCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBQZXJoYXBzIGNhbGwgc2l0ZXMgY291bGQgYmUgY2hhbmdlZCB0byBh
Y2NlcHQgQXRvbWljU3RyaW5nSW1wbD8KICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSgpIGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IEF0b21pY1N0cmluZyo+
KG1faGFzUmFyZURhdGEgPyAmbV9kYXRhLm1fcmFyZURhdGEtPm1fdmFsdWUgOiAmbV9kYXRhLm1f
dmFsdWUpOyB9CiAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSgpIGNvbnN0
OworICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiByZWZlcmVuY2UoKSBjb25zdDsKICAgICAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmd1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmFy
ZURhdGEgPyBtX2RhdGEubV9yYXJlRGF0YS0+bV9hcmd1bWVudCA6IG51bGxBdG9tOyB9CiAgICAg
ICAgIENTU1NlbGVjdG9yTGlzdCogc2VsZWN0b3JMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNS
YXJlRGF0YSA/IG1fZGF0YS5tX3JhcmVEYXRhLT5tX3NlbGVjdG9yTGlzdC5nZXQoKSA6IDA7IH0K
IAogICAgICAgICB2b2lkIHNldFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJiB2YWx1ZSkgeyBtX3Rh
ZyA9IHZhbHVlOyB9CiAgICAgICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJik7
CiAgICAgICAgIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICAg
ICAgdm9pZCBzZXRSZWZlcmVuY2UoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgICAgICB2b2lk
IHNldEFyZ3VtZW50KGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgICAgICB2b2lkIHNldFNlbGVj
dG9yTGlzdChQYXNzT3duUHRyPENTU1NlbGVjdG9yTGlzdD4pOwogCkBAIC0yMTYsNiArMjE5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzQ3VzdG9tUHNldWRvRWxlbWVu
dCgpIGNvbnN0OwogICAgICAgICBib29sIGlzU2libGluZ1NlbGVjdG9yKCkgY29uc3Q7CiAgICAg
ICAgIGJvb2wgaXNBdHRyaWJ1dGVTZWxlY3RvcigpIGNvbnN0OworICAgICAgICBib29sIGlzUmVm
ZXJlbmNlQ29tYmluYXRvcigpIGNvbnN0OwogCiAgICAgICAgIFJlbGF0aW9uIHJlbGF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVsYXRpb24+KG1fcmVsYXRpb24pOyB9CiAKQEAg
LTI1OCw2ICsyNjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBpbnQgbV9h
OyAvLyBVc2VkIGZvciA6bnRoLSoKICAgICAgICAgICAgIGludCBtX2I7IC8vIFVzZWQgZm9yIDpu
dGgtKgogICAgICAgICAgICAgUXVhbGlmaWVkTmFtZSBtX2F0dHJpYnV0ZTsgLy8gdXNlZCBmb3Ig
YXR0cmlidXRlIHNlbGVjdG9yCisgICAgICAgICAgICBRdWFsaWZpZWROYW1lIG1fcmVmZXJlbmNl
OyAvLyB1c2VkIGZvciByZWZlcmVuY2UgY29tYmluYXRvcgogICAgICAgICAgICAgQXRvbWljU3Ry
aW5nIG1fYXJndW1lbnQ7IC8vIFVzZWQgZm9yIDpjb250YWlucywgOmxhbmcgYW5kIDpudGgtKgog
ICAgICAgICAgICAgT3duUHRyPENTU1NlbGVjdG9yTGlzdD4gbV9zZWxlY3Rvckxpc3Q7IC8vIFVz
ZWQgZm9yIDotd2Via2l0LWFueSBhbmQgOm5vdAogICAgICAgICAKQEAgLTI4Miw2ICsyODcsMTMg
QEAgaW5saW5lIGNvbnN0IFF1YWxpZmllZE5hbWUmIENTU1NlbGVjdG9yOjphdHRyaWJ1dGUoKSBj
b25zdAogICAgIHJldHVybiBtX2RhdGEubV9yYXJlRGF0YS0+bV9hdHRyaWJ1dGU7CiB9CiAKK2lu
bGluZSBjb25zdCBRdWFsaWZpZWROYW1lJiBDU1NTZWxlY3Rvcjo6cmVmZXJlbmNlKCkgY29uc3QK
K3sKKyAgICBBU1NFUlQoaXNSZWZlcmVuY2VDb21iaW5hdG9yKCkpOworICAgIEFTU0VSVChtX2hh
c1JhcmVEYXRhKTsKKyAgICByZXR1cm4gbV9kYXRhLm1fcmFyZURhdGEtPm1fcmVmZXJlbmNlOwor
fQorCiBpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6bWF0Y2hlc1BzZXVkb0VsZW1lbnQoKSBjb25z
dAogewogICAgIGlmIChtX3BzZXVkb1R5cGUgPT0gUHNldWRvVW5rbm93bikKQEAgLTMyOCw2ICsz
NDAsMTEgQEAgaW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6OmlzQXR0cmlidXRlU2VsZWN0b3IoKSBj
b25zdAogICAgICAgICB8fCBtX21hdGNoID09IENTU1NlbGVjdG9yOjpFbmQ7CiB9CiAKK2lubGlu
ZSBib29sIENTU1NlbGVjdG9yOjppc1JlZmVyZW5jZUNvbWJpbmF0b3IoKSBjb25zdAoreworICAg
IHJldHVybiBtX3JlbGF0aW9uID09IENTU1NlbGVjdG9yOjpSZWZlcmVuY2U7Cit9CisKIGlubGlu
ZSB2b2lkIENTU1NlbGVjdG9yOjpzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQog
ewogICAgIC8vIE5lZWQgdG8gZG8gcmVmIGNvdW50aW5nIG1hbnVhbGx5IGZvciB0aGUgdW5pb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCmluZGV4IDQzMTM2ZDFjOTAxYzYz
NDFiYWNiZWY4Mzk0OWRmOTRlNjBmMWMzNmMuLjZkMjY1ZTY5NGVmZDA5MGRhMWVhNTZkMDdjMjg1
MjY5YTUwMDIyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxp
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCkBAIC0y
MTEsNiArMjExLDIwIEBAIGJvb2wgQ1NTU2VsZWN0b3JMaXN0OjpoYXNJbnZhbGlkU2VsZWN0b3Io
KSBjb25zdAogICAgIHJldHVybiBmb3JFYWNoU2VsZWN0b3IoZnVuY3RvciwgdGhpcyk7CiB9CiAK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKK2NsYXNzIFNlbGVjdG9ySGFzU2VsZWN0UmVmZXJlbmNl
Q29tYmluYXRvciB7CitwdWJsaWM6CisgICAgYm9vbCBvcGVyYXRvcigpKENTU1NlbGVjdG9yKiBz
ZWxlY3RvcikKKyAgICB7CisgICAgICAgIHJldHVybiBzZWxlY3Rvci0+aXNSZWZlcmVuY2VDb21i
aW5hdG9yKCkgJiYgc2VsZWN0b3ItPnJlZmVyZW5jZSgpID09ICJzZWxlY3QiOworICAgIH0KK307
CiAKK2Jvb2wgQ1NTU2VsZWN0b3JMaXN0OjpoYXNTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yQXQo
c2l6ZV90IGluZGV4KSBjb25zdAoreworICAgIFNlbGVjdG9ySGFzU2VsZWN0UmVmZXJlbmNlQ29t
YmluYXRvciBmdW5jdG9yOworICAgIHJldHVybiBmb3JFYWNoVGFnU2VsZWN0b3IoZnVuY3Rvciwg
c2VsZWN0b3JBdChpbmRleCkpOworfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaAppbmRleCA0ZmNmZWUyZmFhNDE4MmQ3YTlh
YjA1NWJjY2U1MTlmZTc0ZTIyNzE1Li4wOTRlMWRhODMzMWQ0YjcyYzM5YTY4ZWMxZWFkOGI0ZDE0
ZTBiMGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCkBAIC02MCw2ICs2MCwx
MCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZWxlY3RvcnNOZWVkTmFtZXNwYWNlUmVzb2x1dGlvbigp
OwogICAgIGJvb2wgaGFzSW52YWxpZFNlbGVjdG9yKCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKKyAgICBib29sIGhhc1NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JBdChzaXplX3Qg
aW5kZXgpIGNvbnN0OworI2VuZGlmCisKICAgICBTdHJpbmcgc2VsZWN0b3JzVGV4dCgpIGNvbnN0
OwogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvUnVsZVNldC5jcHAKaW5kZXggOWE3OGMwZmY5MDM4OWM5MGM0NGRhNWE2YjlmNWZm
N2FlMjBjNmUzMS4uZDZiOGUyNzc5NGQ4N2VlYTQ2YzNhYTlmYTNmZDdlNGJkNDFjNTlkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9SdWxlU2V0LmNwcApAQCAtMjgxLDggKzI4MSwxNyBAQCB2b2lkIFJ1bGVTZXQ6OmFk
ZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyogc2hlZXQsIGNvbnN0IE1lZGlhUXVl
cnlFdmFsdQogICAgICAgICBTdHlsZVJ1bGVCYXNlKiBydWxlID0gcnVsZXNbaV0uZ2V0KCk7CiAK
ICAgICAgICAgQVNTRVJUKCFydWxlLT5pc0ltcG9ydFJ1bGUoKSk7Ci0gICAgICAgIGlmIChydWxl
LT5pc1N0eWxlUnVsZSgpKQotICAgICAgICAgICAgYWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0PFN0
eWxlUnVsZSo+KHJ1bGUpLCBhZGRSdWxlRmxhZ3MpOworICAgICAgICBpZiAocnVsZS0+aXNTdHls
ZVJ1bGUoKSkgeworICAgICAgICAgICAgU3R5bGVSdWxlKiBzdHlsZVJ1bGUgPSBzdGF0aWNfY2Fz
dDxTdHlsZVJ1bGUqPihydWxlKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgICAg
IGlmIChzY29wZSkKKyAgICAgICAgICAgICAgICByZXNvbHZlci0+YWRkU3R5bGVSdWxlKHN0eWxl
UnVsZSwgY29uc3RfY2FzdDxDb250YWluZXJOb2RlKj4oc2NvcGUpLCB0aGlzKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhZGRTdHlsZVJ1bGUoc3R5bGVSdWxlLCBhZGRSdWxl
RmxhZ3MpOworI2Vsc2UKKyAgICAgICAgICAgIGFkZFN0eWxlUnVsZShzdHlsZVJ1bGUsIGFkZFJ1
bGVGbGFncyk7CisjZW5kaWYKKyAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChydWxlLT5pc1Bh
Z2VSdWxlKCkpCiAgICAgICAgICAgICBhZGRQYWdlUnVsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGVQ
YWdlKj4ocnVsZSkpOwogICAgICAgICBlbHNlIGlmIChydWxlLT5pc01lZGlhUnVsZSgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IGQ0ODQxY2EwMmJhZGJhNmEx
MWZiY2Y5ZjhkNzE0ODA4ZjNlYThlZmMuLjVlOTIxNzIwMTkzZTk2NjQ0M2QxM2ZiMDBhNGE1OGMz
ZjZhOWNjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC00Miw2
ICs0Miw3IEBACiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
UHJvZ3Jlc3NFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgorI2luY2x1
ZGUgIkluc2VydGlvblBvaW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAt
MTk1LDYgKzE5Niw3IEBAIHZvaWQgU2VsZWN0b3JDaGVja2VyOjpjb2xsZWN0SWRlbnRpZmllckhh
c2hlcyhjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIHVuc2lnCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudDoKICAgICAgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6Q2hpbGQ6CisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlJlZmVyZW5jZToK
ICAgICAgICAgICAgIHNraXBPdmVyU3Vic2VsZWN0b3JzID0gZmFsc2U7CiAgICAgICAgICAgICBj
b2xsZWN0RGVzY2VuZGFudFNlbGVjdG9ySWRlbnRpZmllckhhc2hlcyhzZWxlY3RvciwgaGFzaCwg
ZW5kKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDc1LDggKzQ3NywxNSBAQCBTZWxlY3RvckNo
ZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0
IFNlbGVjdG9yQ2hlYwogCiAgICAgLy8gUHJlcGFyZSBuZXh0IHNlbGVjdG9yCiAgICAgQ1NTU2Vs
ZWN0b3IqIGhpc3RvcnlTZWxlY3RvciA9IGNvbnRleHQuc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKTsK
LSAgICBpZiAoIWhpc3RvcnlTZWxlY3RvcikKKyAgICBpZiAoIWhpc3RvcnlTZWxlY3Rvcikgewor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICBpZiAoY29udGV4dC5zY29wZU9mTGFzdEVs
ZW1lbnQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBDaGVjayB0aGUgc2NvcGUgbW9yZSBzdHJp
Y3RseS4KKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnNjb3BlT2ZMYXN0RWxlbWVudC0+dHJl
ZVNjb3BlKCkgPT0gY29udGV4dC5lbGVtZW50LT50cmVlU2NvcGUoKSA/IFNlbGVjdG9yTWF0Y2hl
cyA6IFNlbGVjdG9yRmFpbHNMb2NhbGx5OworICAgICAgICB9CisjZW5kaWYKICAgICAgICAgcmV0
dXJuIFNlbGVjdG9yTWF0Y2hlczsKKyAgICB9CiAKICAgICBTZWxlY3RvckNoZWNraW5nQ29udGV4
dCBuZXh0Q29udGV4dChjb250ZXh0KTsKICAgICBuZXh0Q29udGV4dC5zZWxlY3RvciA9IGhpc3Rv
cnlTZWxlY3RvcjsKQEAgLTU3OCw2ICs1ODcsMjUgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rv
ck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWMK
ICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9IDA7CiAgICAgICAg
ICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihuZXh0Q29udGV4dCwgaWdub3JlRHluYW1pY1BzZXVk
byk7CiAgICAgICAgIH0KKworICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlJlZmVyZW5jZToKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKGNvbnRleHQuc2VsZWN0b3ItPnJlZmVyZW5jZSgpICE9ICJz
ZWxlY3QiKQorICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsK
KworICAgICAgICAgICAgVmVjdG9yPEluc2VydGlvblBvaW50Kj4gaW5zZXJ0aW9uUG9pbnRzOwor
ICAgICAgICAgICAgY29sbGVjdEFsbE1pZHBvaW50SW5zZXJ0aW9uUG9pbnRzKGNvbnRleHQuZWxl
bWVudCwgaW5zZXJ0aW9uUG9pbnRzKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgaW5zZXJ0aW9uUG9pbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgbmV4dENv
bnRleHQuZWxlbWVudCA9IGluc2VydGlvblBvaW50c1tpXTsKKyAgICAgICAgICAgICAgICBuZXh0
Q29udGV4dC5pc1N1YlNlbGVjdG9yID0gZmFsc2U7CisgICAgICAgICAgICAgICAgbmV4dENvbnRl
eHQuZWxlbWVudFN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICBuZXh0Q29udGV4dC5lbGVtZW50
UGFyZW50U3R5bGUgPSAwOworICAgICAgICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBj
aGVja1NlbGVjdG9yKG5leHRDb250ZXh0LCBpZ25vcmVEeW5hbWljUHNldWRvKTsKKyAgICAgICAg
ICAgICAgICBpZiAobWF0Y2ggPT0gU2VsZWN0b3JNYXRjaGVzIHx8IG1hdGNoID09IFNlbGVjdG9y
RmFpbHNDb21wbGV0ZWx5KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TZWxlY3RvckNoZWNrZXIuaAppbmRleCA5YmRiNjY5YjI0NmVlNjQzZDVlMmVlMjJiNWExYTI0
ZWUwOTE4ZTZhLi40N2IzOTBjZTc5YTE4OTRiNWQ0YmQyOTZiMDMyNWE1ZmY2NTIyYjRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCkBAIC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICwgaXNTdWJTZWxlY3RvcihmYWxzZSkKICAgICAgICAgICAgICwgaGFzU2Ny
b2xsYmFyUHNldWRvKGZhbHNlKQogICAgICAgICAgICAgLCBoYXNTZWxlY3Rpb25Qc2V1ZG8oZmFs
c2UpCisgICAgICAgICAgICAsIHNjb3BlT2ZMYXN0RWxlbWVudCgwKQogICAgICAgICB7IH0KIAog
ICAgICAgICBDU1NTZWxlY3Rvciogc2VsZWN0b3I7CkBAIC03OSw2ICs4MCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgYm9vbCBpc1N1YlNlbGVjdG9yOwogICAgICAgICBib29sIGhhc1Njcm9sbGJhclBz
ZXVkbzsKICAgICAgICAgYm9vbCBoYXNTZWxlY3Rpb25Qc2V1ZG87CisgICAgICAgIGNvbnN0IENv
bnRhaW5lck5vZGUqIHNjb3BlT2ZMYXN0RWxlbWVudDsKICAgICB9OwogCiAgICAgYm9vbCBjaGVj
a1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2Vs
ZWN0b3IgPSBmYWxzZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5k
ZXggNmM4NDFlNDk4ZDg3NWEzOWEzN2Y4YWU1Yzk4Y2Y0YmZiMWFmNzBmYy4uMjFhZDRlMTgzMTFh
NTAxMzdlNDI2NjZiMWUyM2Y0MGEyYzllYjdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcApAQCAtMzY2LDYgKzM2Niw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6cmVzZXRBdXRo
b3JTdHlsZSgpCiB7CiAgICAgbV9hdXRob3JTdHlsZSA9IFJ1bGVTZXQ6OmNyZWF0ZSgpOwogICAg
IG1fYXV0aG9yU3R5bGUtPmRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKTsKKyAgICBtX3NlbGVjdFJl
ZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0TWFwLmNsZWFyKCk7CiB9CiAKIHZvaWQgU3R5bGVSZXNv
bHZlcjo6YXBwZW5kQXV0aG9yU3R5bGVTaGVldHModW5zaWduZWQgZmlyc3ROZXcsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgc3R5bGVTaGVldHMpCkBAIC00NTAsNiArNDUx
LDI2IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHlsZShQYXNzUmVmUHRyPFN0
eWxlUnVsZUtleWZyYW1lcz4gcnVsZSkKICAgICBtX2tleWZyYW1lc1J1bGVNYXAuc2V0KHMuaW1w
bCgpLCBydWxlKTsKIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCit2b2lkIFN0eWxlUmVz
b2x2ZXI6OmFkZFN0eWxlUnVsZShTdHlsZVJ1bGUqIHJ1bGUsIENvbnRhaW5lck5vZGUqIHNjb3Bl
LCBSdWxlU2V0KiBydWxlU2V0T2ZTY29wZSkKK3sKKyAgICBjb25zdCBDU1NTZWxlY3Rvckxpc3Qm
IHNlbGVjdG9yTGlzdCA9IHJ1bGUtPnNlbGVjdG9yTGlzdCgpOworICAgIGZvciAoc2l6ZV90IHNl
bGVjdG9ySW5kZXggPSAwOyBzZWxlY3RvckluZGV4ICE9IG5vdEZvdW5kOyBzZWxlY3RvckluZGV4
ID0gc2VsZWN0b3JMaXN0LmluZGV4T2ZOZXh0U2VsZWN0b3JBZnRlcihzZWxlY3RvckluZGV4KSkg
eworICAgICAgICBpZiAoc2VsZWN0b3JMaXN0Lmhhc1NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JB
dChzZWxlY3RvckluZGV4KSkgeworICAgICAgICAgICAgaWYgKG1fc2VsZWN0UmVmZXJlbmNlQ29t
YmluYXRvclJ1bGVTZXRNYXAuY29udGFpbnMoc2NvcGUpKQorICAgICAgICAgICAgICAgIG1fc2Vs
ZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVTZXRNYXAuZ2V0KHNjb3BlKS0+YWRkUnVsZShydWxl
LCBzZWxlY3RvckluZGV4LCBSdWxlSGFzTm9TcGVjaWFsU3RhdGUpOworICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgT3duUHRyPFJ1bGVTZXQ+IHJ1bGVTZXQgPSBhZG9wdFB0cihu
ZXcgUnVsZVNldCgpKTsKKyAgICAgICAgICAgICAgICBydWxlU2V0LT5hZGRSdWxlKHJ1bGUsIHNl
bGVjdG9ySW5kZXgsIFJ1bGVIYXNOb1NwZWNpYWxTdGF0ZSk7CisgICAgICAgICAgICAgICAgbV9z
ZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZVNldE1hcC5hZGQoc2NvcGUsIHJ1bGVTZXQucmVs
ZWFzZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBydWxl
U2V0T2ZTY29wZS0+YWRkUnVsZShydWxlLCBzZWxlY3RvckluZGV4LCBSdWxlSGFzTm9TcGVjaWFs
U3RhdGUpOworICAgIH0KK30KKyNlbmRpZgorCiBTdHlsZVJlc29sdmVyOjp+U3R5bGVSZXNvbHZl
cigpCiB7CiAgICAgbV9mb250U2VsZWN0b3ItPmNsZWFyRG9jdW1lbnQoKTsKQEAgLTc5Myw2ICs4
MTQsMTcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaEhvc3RSdWxlcyhNYXRjaFJlc3VsdCYg
cmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQogI2VuZGlmCiB9CiAKKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hTZWxlY3RSZWZlcmVuY2VDb21i
aW5hdG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykK
K3sKKyAgICBmb3IgKFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0TWFwOjppdGVyYXRv
ciBpdCA9IG1fc2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVTZXRNYXAuYmVnaW4oKTsgaXQg
IT0gbV9zZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZVNldE1hcC5lbmQoKTsgKytpdCkgewor
ICAgICAgICBNYXRjaE9wdGlvbnMgb3B0aW9ucyhpbmNsdWRlRW1wdHlSdWxlcywgMCk7CisgICAg
ICAgIG9wdGlvbnMuc2NvcGVPZkxhc3RFbGVtZW50ID0gaXQtPmtleTsKKyAgICAgICAgY29sbGVj
dE1hdGNoaW5nUnVsZXMoaXQtPnZhbHVlLmdldCgpLCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9y
UnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7CisgICAgfQorfQor
I2VuZGlmCisKIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxlcyhNYXRjaFJlc3Vs
dCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQogewogICAgIG1fbWF0Y2hlZFJ1bGVz
LmNsZWFyKCk7CkBAIC04MDcsNiArODM5LDkgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaEF1
dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMKICAg
ICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtX2F1dGhvclN0eWxlLmdldCgpLCByZXN1
bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSwg
b3B0aW9ucyk7CiAKICAgICBtYXRjaFNjb3BlZEF1dGhvclJ1bGVzKHJlc3VsdCwgaW5jbHVkZUVt
cHR5UnVsZXMpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIG1hdGNoU2VsZWN0UmVmZXJl
bmNlQ29tYmluYXRvclJ1bGVzKHJlc3VsdCwgaW5jbHVkZUVtcHR5UnVsZXMpOworI2VuZGlmCiAK
ICAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMocmVzdWx0KTsKIH0KQEAgLTg0Miw3ICs4
NzcsMTEgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qo
Y29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogcnVsZXMsIGkKIAogICAgIC8vIEluIHNvbWUgY2FzZXMg
d2UgbWF5IGVuZCB1cCBsb29raW5nIHVwIHN0eWxlIGZvciByYW5kb20gZWxlbWVudHMgaW4gdGhl
IG1pZGRsZSBvZiBhIHJlY3Vyc2l2ZSB0cmVlIHJlc29sdmUuCiAgICAgLy8gQW5jZXN0b3IgaWRl
bnRpZmllciBmaWx0ZXIgd29uJ3QgYmUgdXAtdG8tZGF0ZSBpbiB0aGF0IGNhc2UgYW5kIHdlIGNh
bid0IHVzZSB0aGUgZmFzdCBwYXRoLgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGJvb2wg
Y2FuVXNlRmFzdFJlamVjdCA9IG1fY2hlY2tlci5wYXJlbnRTdGFja0lzQ29uc2lzdGVudChtX3Bh
cmVudE5vZGUpICYmICFvcHRpb25zLnNjb3BlT2ZMYXN0RWxlbWVudDsKKyNlbHNlCiAgICAgYm9v
bCBjYW5Vc2VGYXN0UmVqZWN0ID0gbV9jaGVja2VyLnBhcmVudFN0YWNrSXNDb25zaXN0ZW50KG1f
cGFyZW50Tm9kZSk7CisjZW5kaWYKIAogICAgIHVuc2lnbmVkIHNpemUgPSBydWxlcy0+c2l6ZSgp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKQEAgLTg1Miw3ICs4
OTEsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChj
b25zdCBWZWN0b3I8UnVsZURhdGE+KiBydWxlcywgaQogCiAgICAgICAgIFN0eWxlUnVsZSogcnVs
ZSA9IHJ1bGVEYXRhLnJ1bGUoKTsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1hdGNoUnVsZShkb2N1
bWVudCgpLCBydWxlKTsKLSAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3IocnVsZURhdGEsIG9wdGlv
bnMuc2NvcGUpKSB7CisgICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHJ1bGVEYXRhLCBvcHRpb25z
LnNjb3BlLCBvcHRpb25zLnNjb3BlT2ZMYXN0RWxlbWVudCkpIHsKICAgICAgICAgICAgIC8vIElm
IHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0aWVzIHRvIGFwcGx5LCB0aGVuIGlnbm9yZSBpdCBpbiB0
aGUgbm9uLWRlYnVnIG1vZGUuCiAgICAgICAgICAgICBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBw
cm9wZXJ0aWVzID0gcnVsZS0+cHJvcGVydGllcygpOwogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0
aWVzIHx8IChwcm9wZXJ0aWVzLT5pc0VtcHR5KCkgJiYgIW9wdGlvbnMuaW5jbHVkZUVtcHR5UnVs
ZXMpKSB7CkBAIC0yMTMzLDcgKzIxNzIsNyBAQCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBTdHls
ZVJlc29sdmVyOjpwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCBQcwogICAg
IHJldHVybiBtX3J1bGVMaXN0LnJlbGVhc2UoKTsKIH0KIAotaW5saW5lIGJvb2wgU3R5bGVSZXNv
bHZlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0IENvbnRh
aW5lck5vZGUqIHNjb3BlKQoraW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y2hlY2tTZWxlY3Rv
cihjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlLCBj
b25zdCBDb250YWluZXJOb2RlKiBzY29wZU9mTGFzdEVsZW1lbnQpCiB7CiAgICAgbV9keW5hbWlj
UHNldWRvID0gTk9QU0VVRE87CiAKQEAgLTIxNTgsNiArMjE5Nyw3IEBAIGlubGluZSBib29sIFN0
eWxlUmVzb2x2ZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCBjb25z
dCBDb250YWluCiAgICAgY29udGV4dC5lbGVtZW50U3R5bGUgPSBzdHlsZSgpOwogICAgIGNvbnRl
eHQuZWxlbWVudFBhcmVudFN0eWxlID0gbV9wYXJlbnROb2RlID8gbV9wYXJlbnROb2RlLT5yZW5k
ZXJTdHlsZSgpIDogMDsKICAgICBjb250ZXh0LnNjb3BlID0gc2NvcGU7CisgICAgY29udGV4dC5z
Y29wZU9mTGFzdEVsZW1lbnQgPSBzY29wZU9mTGFzdEVsZW1lbnQ7CiAgICAgY29udGV4dC5wc2V1
ZG9TdHlsZSA9IG1fcHNldWRvU3R5bGU7CiAgICAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1h
dGNoIG1hdGNoID0gbV9jaGVja2VyLmNoZWNrU2VsZWN0b3IoY29udGV4dCwgbV9keW5hbWljUHNl
dWRvKTsKICAgICBpZiAobWF0Y2ggIT0gU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoZXMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCAwNTVkODEzZWRiNTZiMDUwY2I2MTMz
NzI0NTQ4NTExZGM2MGZiMjJiLi4yYzJlYjY3YjZkMTRlZDc3Mzg3Mjg5NmE1MzU2ZTVmZTBkZTMz
ZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTI2MCw2ICsyNjAsMTAgQEAg
cHVibGljOgogCiAgICAgdm9pZCBhZGRLZXlmcmFtZVN0eWxlKFBhc3NSZWZQdHI8U3R5bGVSdWxl
S2V5ZnJhbWVzPik7CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICB2b2lkIGFkZFN0eWxl
UnVsZShTdHlsZVJ1bGUqLCBDb250YWluZXJOb2RlKiBzY29wZSwgUnVsZVNldCogcnVsZVNldE9m
U2NvcGUpOworI2VuZGlmCisKICAgICBib29sIGNoZWNrUmVnaW9uU3R5bGUoRWxlbWVudCogcmVn
aW9uRWxlbWVudCk7CiAKICAgICBib29sIHVzZXNTaWJsaW5nUnVsZXMoKSBjb25zdCB7IHJldHVy
biAhbV9mZWF0dXJlcy5zaWJsaW5nUnVsZXMuaXNFbXB0eSgpOyB9CkBAIC0zMzgsOSArMzQyLDEx
IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIHN0cnVjdCBNYXRjaE9wdGlvbnMgewotICAgICAg
ICBNYXRjaE9wdGlvbnMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcywgY29uc3QgQ29udGFpbmVyTm9k
ZSogc2NvcGUgPSAwKSA6IHNjb3BlKHNjb3BlKSwgaW5jbHVkZUVtcHR5UnVsZXMoaW5jbHVkZUVt
cHR5UnVsZXMpIHsgfQorICAgICAgICBNYXRjaE9wdGlvbnMoYm9vbCBpbmNsdWRlRW1wdHlSdWxl
cywgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUgPSAwKQorICAgICAgICAgICAgOiBzY29wZShz
Y29wZSksIGluY2x1ZGVFbXB0eVJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKSwgc2NvcGVPZkxhc3RF
bGVtZW50KDApIHsgfQogICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZTsKICAgICAg
ICAgYm9vbCBpbmNsdWRlRW1wdHlSdWxlczsKKyAgICAgICAgY29uc3QgQ29udGFpbmVyTm9kZSog
c2NvcGVPZkxhc3RFbGVtZW50OwogICAgIH07CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNYXRjaGVk
UHJvcGVydGllcyhNYXRjaFJlc3VsdCYsIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRp
ZXMsIFN0eWxlUnVsZSogPSAwLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlID0gU2VsZWN0b3JDaGVj
a2VyOjpNYXRjaEFsbCwgYm9vbCBpblJlZ2lvblJ1bGUgPSBmYWxzZSk7CkBAIC0zNTMsNiArMzU5
LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXRjaFVzZXJSdWxlcyhNYXRjaFJlc3VsdCYsIGJv
b2wgaW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIHZvaWQgbWF0Y2hTY29wZWRBdXRob3JSdWxlcyhN
YXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIHZvaWQgbWF0Y2hIb3N0
UnVsZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKKyAgICB2b2lkIG1hdGNoU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVz
KE1hdGNoUmVzdWx0JiwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CisjZW5kaWYKKwogICAgIHZv
aWQgY29sbGVjdE1hdGNoaW5nUnVsZXMoUnVsZVNldCosIGludCYgZmlyc3RSdWxlSW5kZXgsIGlu
dCYgbGFzdFJ1bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJik7CiAgICAgdm9pZCBjb2xsZWN0
TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihSdWxlU2V0KiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50
JiBsYXN0UnVsZUluZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmKTsKICAgICB2b2lkIGNvbGxlY3RN
YXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiwgaW50JiBmaXJzdFJ1
bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmKTsKQEAgLTM2
MCw3ICszNzAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc29ydE1hdGNoZWRSdWxlcygpOwogICAg
IHZvaWQgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKE1hdGNoUmVzdWx0Jik7CiAKLSAgICBi
b29sIGNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmLCBjb25zdCBDb250YWluZXJOb2RlKiBz
Y29wZSk7CisgICAgYm9vbCBjaGVja1NlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJiwgY29uc3QgQ29u
dGFpbmVyTm9kZSogc2NvcGUsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlT2ZMYXN0RWxlbWVu
dCk7CiAgICAgYm9vbCBjaGVja1JlZ2lvblNlbGVjdG9yKENTU1NlbGVjdG9yKiByZWdpb25TZWxl
Y3RvciwgRWxlbWVudCogcmVnaW9uRWxlbWVudCk7CiAgICAgdm9pZCBhcHBseU1hdGNoZWRQcm9w
ZXJ0aWVzKGNvbnN0IE1hdGNoUmVzdWx0JiwgY29uc3QgRWxlbWVudCopOwogICAgIGVudW0gU3R5
bGVBcHBsaWNhdGlvblBhc3MgewpAQCAtMzkxLDYgKzQwMSw5IEBAIHByaXZhdGU6CiAgICAgT3du
UHRyPFJ1bGVTZXQ+IG1fYXV0aG9yU3R5bGU7CiAgICAgT3duUHRyPFJ1bGVTZXQ+IG1fdXNlclN0
eWxlOwogCisgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IENvbnRhaW5lck5vZGUqLCBPd25QdHI8
UnVsZVNldD4gPiBTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZVNldE1hcDsKKyAgICBTZWxl
Y3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZVNldE1hcCBtX3NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0
b3JSdWxlU2V0TWFwOworCiAgICAgUnVsZUZlYXR1cmVTZXQgbV9mZWF0dXJlczsKICAgICBPd25Q
dHI8UnVsZVNldD4gbV9zaWJsaW5nUnVsZVNldDsKICAgICBPd25QdHI8UnVsZVNldD4gbV91bmNv
bW1vbkF0dHJpYnV0ZVJ1bGVTZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0
aW9uUG9pbnQuaAppbmRleCBkNGI3ZDdkMGQ5MTMwM2M2MDcwZDU5YTkxZWM2OGQ3NmUzZGZiNGI1
Li5kNDZjNGY5ZWQ3OGZiOWZkOWQ3OGQ2NWEyZDk1YjgzOTYxNTdhM2ZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKQEAgLTE3MSw2ICsxNzEsMzcgQEAg
aW5saW5lIEluc2VydGlvblBvaW50KiByZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqIHBy
b2plY3RlZE5vZGUpCiAgICAgcmV0dXJuIGluc2VydGlvblBvaW50OwogfQogCisvLyBGSVhNRTog
Q29sbGVjdHMgb25seSBIVE1MQ29udGVudEVsZW1lbnQgc2luY2UgYSBzZWxlY3QgcmVmZXJlbmNl
IGNvbWJpbmF0b3IgY2FuIGJlCisvLyBhcHBsaWVkIHRvIG9ubHkgPGNvbnRlbnQ+IGVsZW1lbnRz
LgoraW5saW5lIHZvaWQgY29sbGVjdEFsbE1pZHBvaW50SW5zZXJ0aW9uUG9pbnRzKGNvbnN0IE5v
ZGUqIHByb2plY3RlZE5vZGUsIFZlY3RvcjxJbnNlcnRpb25Qb2ludCo+JiByZXN1bHRzKQorewor
ICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IDA7CisgICAgY29uc3QgTm9kZSog
Y3VycmVudCA9IHByb2plY3RlZE5vZGU7CisKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBp
ZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24o
Y3VycmVudCkpIHsKKyAgICAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7Cisg
ICAgICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBzaGFkb3ctPmRpc3Ry
aWJ1dG9yKCkuZmluZEluc2VydGlvblBvaW50Rm9yKHByb2plY3RlZE5vZGUpKSB7CisgICAgICAg
ICAgICAgICAgY3VycmVudCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgaW5zZXJ0aW9u
UG9pbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKGluc2Vy
dGlvblBvaW50KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlRm9yRGlzdHJp
YnV0aW9uKGN1cnJlbnQpKSB7CisgICAgICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2Vy
dGVkVG8gPSBwYXJlbnQtPmlzU2hhZG93Um9vdCgpID8gdG9TaGFkb3dSb290KHBhcmVudCktPmFz
c2lnbmVkVG8oKSA6IDApIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gaW5zZXJ0ZWRUbzsK
KyAgICAgICAgICAgICAgICBpbnNlcnRpb25Qb2ludCA9IGluc2VydGVkVG87CisgICAgICAgICAg
ICAgICAgcmVzdWx0cy5hcHBlbmQoaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuOworICAg
IH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSW5zZXJ0aW9uUG9p
bnRfaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGZkNzhmODA3NjViZDhmODhhZGI3ZDk0MzBjNDdmMzk4ZGY2NDk4OGEuLmZm
MzVmNjA5ODkwNmFjMjU3ZjRkYjRlOTQ1MmI1OWIyZmY2MjUwMWQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxMi0xMS0wNyAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW1NoYWRvdyBET01dIEltcGxlbWVudHMgYSAvc2VsZWN0LyByZWZlcmVuY2UgY29tYmlu
YXRvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgy
MTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBm
YXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLWV4cGVjdGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJp
bmF0b3ItbmVzdGVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3No
YWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItbmVzdGVkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3Itc2VsZWN0
b3ItbGlzdC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cv
c2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLXNlbGVjdG9yLWxpc3QuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci5odG1s
OiBBZGRlZC4KKwogMjAxMi0xMS0yOCAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgTm9kZTo6Y29tcGFyZURvY3VtZW50UG9zaXRpb24gcmV0dXJucyB3cm9uZyB2
YWx1ZSBmb3IgYSBub2RlIGluIHRoZSBkaWZmZXJlbnQgc2hhZG93IHRyZWUuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9y
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVy
ZW5jZS1jb21iaW5hdG9yLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE0OTU5Yjg2MjQwMjky
NWUwN2VlODZmNWI4MmFkNTBjMTBkN2RhMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItZXhwZWN0ZWQuaHRt
bApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2
IGlkPSJzYW5kYm94Ij4KKyAgPGRpdj4KKyAgICA8ZGl2PnNoYWRvdyBjaGlsZDwvZGl2PgorICAg
IDxkaXY+CisgICAgICA8ZGl2PgorICAgICAgICA8ZGl2PgorICAgICAgICAgIDxkaXYgc3R5bGU9
ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgICAgICAgICA8ZGl2IHN0eWxlPSJjb2xvcjog
Z3JlZW4iPmdyZWVuPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9k
aXY+CisgICAgPGRpdiBzdHlsZT0iY29sb3I6IGJsdWUiPmJsdWU8L2Rpdj4KKyAgICA8ZGl2IHN0
eWxlPSJjb2xvcjogcmVkIj5yZWQ8L2Rpdj4KKyAgPC9kaXY+CisgIDxkaXY+CisgICAgPGRpdj4K
KyAgICAgIDxkaXY+CisgICAgICAgIDxkaXY+U3R5bGUgc2hvdWxkIG5vdCBiZSBhcHBsaWVkLjwv
ZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVu
Y2UtY29tYmluYXRvci1uZXN0ZWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItbmVzdGVkLWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTUxODM0NDJhMDc2YzdmODFhOWM1NDIxMzFlNzlmYjc3NmYwMTFjYwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJl
bmNlLWNvbWJpbmF0b3ItbmVzdGVkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYg
aWQ9Imhvc3QiPgorICAgIDxkaXYgaWQ9Im5lc3RlZC1ob3N0Ij4KKyAgICAgIHRleHQxCisgICAg
ICA8ZGl2PgorICAgICAgICB0ZXh0MgorICAgICAgICA8ZGl2PgorICAgICAgICAgIHRleHQzCisg
ICAgICAgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgICAgICAg
IDxkaXY+bm9ybWFsPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9k
aXY+CisgIDwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLW5lc3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29t
YmluYXRvci1uZXN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZWI0ZmU0MWY5MzAwNzM2OGZmMTQ5NDdh
Yzc0NTQ5YWNjOGFkY2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci1uZXN0ZWQuaHRtbApAQCAtMCwwICsx
LDMyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2RpdiBjb250
ZW50IC9zZWxlY3QvIGRpdiBjb250ZW50IC9zZWxlY3QvIGRpdi5ncmVlbiB7IGNvbG9yOiBncmVl
bjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gn
KTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hv
c3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAg
IGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICduZXN0ZWQtaG9zdCd9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgndGV4dDEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCd0ZXh0MicpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jywgeydz
ZWxlY3QnOiAnZGl2J30pKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2NsYXNzJzogJ2dyZWVuJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCd0ZXh0MycpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7fSkpKSksCisg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdncmVlbid9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpLAorICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0
LXJlZmVyZW5jZS1jb21iaW5hdG9yLXNlbGVjdG9yLWxpc3QtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3Itc2VsZWN0
b3ItbGlzdC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1MjJjNzIyNTk2NTA4MmM2NTRhNGM0
ZGU2MjRlNDFhOGEwNDRkM2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLXNlbGVjdG9yLWxpc3QtZXhwZWN0
ZWQuaHRtbApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+
Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdj4KKyAgICA8ZGl2IGlkPSJob3N0Ij4KKyAgICAg
IDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW4xPC9kaXY+CisgICAgICA8ZGl2IHN0eWxl
PSJjb2xvcjogZ3JlZW4iPmdyZWVuMjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXY+bm9ybWFs
PC9kaXY+CisgIDwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLXNl
bGVjdG9yLWxpc3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVm
ZXJlbmNlLWNvbWJpbmF0b3Itc2VsZWN0b3ItbGlzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiYzlkNjU2
YmE2N2JjYzAwZWI5MmJjYWQ4YjIwYjllMWI3ZmY2OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLXNlbGVj
dG9yLWxpc3QuaHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIg
c2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5
bGUuaW5uZXJIVE1MID0gJ2NvbnRlbnQgL3NlbGVjdC8gZGl2LCBkaXYuaGVsbG8geyBjb2xvcjog
Z3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5k
Ym94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydjbGFzcyc6ICdoZWxsbyd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4xJykpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHt9KSksCisgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbjInKSkpLAorICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnaGVsbG8nfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSkpKTsKKworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjMzNzYyZDIxNzM4YTkxMTdjYTI5OTQ1YjQzMGU4YWU3ZWU3ZDEyZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0
b3IuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93
U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5u
ZXJIVE1MID0gJ2RpdiBjb250ZW50IC9zZWxlY3QvIGRpdiBkaXYgeyBjb2xvcjogZ3JlZW47IH0n
CisgICAgKyAnICNzaGFkb3ctY29udGVudCAvc2VsZWN0LyBkaXYuYmx1ZSB7IGNvbG9yOiBibHVl
OyB9JworICAgICsgJyAjc2hhZG93LWNvbnRlbnQgL3NlbGVjdC8gZGl2LnJlZCB7IGNvbG9yOiBy
ZWQ7IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94
Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdo
b3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAg
ICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3NoYWRv
dyBjaGlsZCcpKSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3Qn
OiAnZGl2LmdyZWVuJ30pKSksCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQn
LCB7J2lkJzogJ3NoYWRvdy1jb250ZW50JywgJ3NlbGVjdCc6ICdkaXYnfSkpLAorICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnZ3JlZW4nfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpLAorICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnYmx1ZSd9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2JsdWUnKSksCisgICAgICAgICAgICAg
IGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdyZWQnfSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdyZWQnKSkpKTsKK3NhbmRib3guYXBwZW5kQ2hp
bGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ290aGVyLWhvc3QnfSwKKyAgICAgICAg
ICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2
Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jywg
e30pKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdTdHlsZSBzaG91bGQgbm90IGJlIGFw
cGxpZWQuJykpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176709</attachid>
            <date>2012-11-29 05:24:28 -0800</date>
            <delta_ts>2012-11-29 18:23:13 -0800</delta_ts>
            <desc>Addressed comments</desc>
            <filename>bug-82169-20121129222202.patch</filename>
            <type>text/plain</type>
            <size>35382</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiZWYxMzMzZTE1MjZkMGUwM2M3MDllNzRjYzczZDZmNTJhYmE5YTBmLi5m
YTJhZDM2ZTBmZjMzNmJiMDJlOTFkZDVjODQ3NDJjYmI3N2NmOWMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsODYgQEAKKzIwMTItMTAtMjMgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBJbXBsZW1lbnRzIGEgL3NlbGVjdC8gcmVmZXJlbmNl
IGNvbWJpbmF0b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MjE2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudHMgYSAnc2VsZWN0JyByZWZlcmVuY2UgY29tYmluYXRvciBiZWhpbmQgYSBT
SEFET1dfRE9NIGZsYWcuCisgICAgICAgIFNlZSB0aGUgU2VsZWN0b3JzIExldmVsIDQgc3BlY2lm
aWNhdGlvbiBhbmQgdGhlIFNoYWRvdyBET00gc3BlY2lmaWNhdGlvbiBmb3IgdGhlIGRldGFpbC4K
KworICAgICAgICBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9zZWxlY3RvcnM0LyNpZHJlZi1jb21i
aW5hdG9ycworICAgICAgICBodHRwOi8vZHZjcy53My5vcmcvaGcvd2ViY29tcG9uZW50cy9yYXct
ZmlsZS90aXAvc3BlYy9zaGFkb3cvaW5kZXguaHRtbCNzZWxlY3Rpbmctbm9kZXMtZGlzdHJpYnV0
ZWQtdG8taW5zZXJ0aW9uLXBvaW50cworCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBh
IHNlbGVjdCByZWZlcmVuY2UgY29tYmluYXRvciBhcyB0aGUgZmlyc3QKKyAgICAgICAgcmVmZXJl
bmNlIGNvbWJpbmF0b3IgaW1wbGVtZW50ZWQgaW4gV2ViS2l0LiAgU2luY2UgV2ViS2l0IGhhcyBu
b3QKKyAgICAgICAgc3VwcG9ydGVkIHJlZmVyZW5jZSBjb21iaW5hdG9ycyBzbyBmYXIsIENTUyBn
cmFtbWVyIGFuZCBwYXJzZXIgYXJlCisgICAgICAgIHVwZGF0ZWQgdG8gc3VwcG9ydCB0aGUgbmV3
IHN5bnRheCB1c2VkIGluIFNlbGVjdG9yIExldmVsNCdzCisgICAgICAgIHJlZmVyZW5jZSBjb21i
aW5hdG9ycy4KKworICAgICAgICBBIHNlbGVjdCByZWZlcmVuY2UgY29tYmluYXRvciBpcyB0aGUg
Zmlyc3QgQ1NTIHJ1bGUgd2hpY2ggY3Jvc3NlcworICAgICAgICB0aGUgc2hhZG93IGJvdW5kYXJ5
IGZyb20gYSBzaGFkb3cgdHJlZSB0byB0aGUgdHJlZSBvZiBpdHMgc2hhZG93CisgICAgICAgIGhv
c3QuIFRoYXQgbWVhbnMgYSBzZWxlY3QgcmVmZXJlbmNlIGNvbWJpbmF0b3IgaXMgZGVmaW5lZCBp
bgorICAgICAgICBzaGFkb3cgdHJlZSwgYnV0IHRoZSBub2RlIHdoaWNoIGlzIG1hdGNoZWQgaW4g
dGhlIHJ1bGUgaXMgb3V0c2lkZQorICAgICAgICBvZiB0aGUgc2hhZG93IHRyZWUuCisKKyAgICAg
ICAgU28gd2UgY2Fubm90IHByZWRpY3QgYSBzY29wZSB3aGVyZSB0aGUgbWF0Y2hlZCBub2RlIHdp
bGwgYmUgYmVmb3JlaGFuZC4KKyAgICAgICAgQ3VycmVudCBDU1MgaW1wbGVtZW50YXRpb24gYXNz
dW1lcyBldmVyeSBmaW5hbCB0YXJnZXQgaXMgYXBwbGllZCBpbiBjdXJyZW50IHNjb3BlLgorCisg
ICAgICAgIFRvIG92ZXJjb21lIHRoaXMgaXNzdWUsIEkgdXBkYXRlZCBTdHlsZVJlc29sdmVyIHNv
IHRoYXQgaXQgaGFzCisgICAgICAgIFNlbGVjdFJlZmVyZWNlQ29tYmluYXRvclJ1bGVTZXRNYXAu
IFRoZSBSdWxlU2V0TWFwIGlzIHVzZWQgdG8ga2VlcAorICAgICAgICB0cmFjayBvZiBSdWxlU2V0
IG1hcHBlZCBieSBhIHNjb3BlIHdoZXJlIGEgc2VsZWN0IHJlZmVyZW5jZQorICAgICAgICBjb21i
aW5hdG9yIGlzIG9yaWdpbmFsbHkgZGVmaW5lZC4gVGhlIHNjb3BlIGlzIHVzZWQgdG8gY2hlY2sK
KyAgICAgICAgd2hldGhlciB0aGUgbGFzdCBlbGVtZW50IG1hdGNoZWQgYnkgU2VsZWN0b3JDaGVj
a2VyIGV4aXN0cyBpbiB0aGUKKyAgICAgICAgc2NvcGUgd2hlcmUgdGhlIHJ1bGUgaXMgb3JpZ2lu
YWxseSBkZWZpbmVkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJl
ZmVyZW5jZS1jb21iaW5hdG9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9z
ZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItbmVzdGVkLmh0bWwKKworICAgICAgICAqIGNzcy9D
U1NHcmFtbWFyLnkuaW46CisgICAgICAgICogY3NzL0NTU1BhcnNlclZhbHVlcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnNldFJlZmVyZW5jZSk6CisgICAgICAgICog
Y3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZWxl
Y3RvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnNldFJlZmVyZW5jZSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpSYXJl
RGF0YTo6UmFyZURhdGEpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOgorICAgICAgICAo
Q1NTU2VsZWN0b3IpOgorICAgICAgICAoUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2VsZWN0b3I6OnJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NlbGVjdG9yOjppc1JlZmVyZW5jZUNvbWJpbmF0b3IpOgorICAgICAgICAqIGNzcy9D
U1NTZWxlY3Rvckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTZWxlY3Rv
ckhhc1NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JIYXNTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yOjpvcGVyYXRvcigpKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1NlbGVjdG9yTGlzdDo6aGFzU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvckF0KToK
KyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0Lmg6CisgICAgICAgIChDU1NTZWxlY3Rvckxp
c3QpOgorICAgICAgICAqIGNzcy9SdWxlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVT
ZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y29sbGVjdElkZW50aWZpZXJI
YXNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9y
KToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0OjpTZWxlY3RvckNoZWNraW5n
Q29udGV4dCk6CisgICAgICAgIChTZWxlY3RvckNoZWNraW5nQ29udGV4dCk6CisgICAgICAgICog
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
cmVzZXRBdXRob3JTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphZGRT
dHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjptYXRjaFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRjaEF1dGhvclJ1bGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjaGVja1NlbGVjdG9yKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5oOgorICAgICAgICAoU3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjpNYXRjaE9wdGlvbnM6Ok1hdGNoT3B0aW9ucyk6CisgICAgICAg
IChNYXRjaE9wdGlvbnMpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50Lmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RBbGxNaWRwb2lu
dEluc2VydGlvblBvaW50cyk6CisKIDIwMTItMTEtMjggIEhheWF0byBJdG8gIDxoYXlhdG9AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIE5vZGU6OmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIHJldHVy
bnMgd3JvbmcgdmFsdWUgZm9yIGEgbm9kZSBpbiB0aGUgZGlmZmVyZW50IHNoYWRvdyB0cmVlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbiBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KaW5kZXggMjFiMDE2MTM1YmE1OGU0ZTIwNGVmNzY5
YTE5N2YwYjg3MTRiNmU5NC4uOGNhNzE3MTMxNzk4ODYyYWFkNTRmYTlkNDI3YTBhNTFjZmQxNzBh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCkBAIC0yODksNiArMjg5LDkgQEAgc3Rh
dGljIGlubGluZSBpbnQgY3NzeXllcnJvcih2b2lkKiwgY29uc3QgY2hhciopCiAKICV0eXBlIDxz
dHJpbmc+IGVsZW1lbnRfbmFtZQogJXR5cGUgPHN0cmluZz4gYXR0cl9uYW1lCisjaWYgRU5BQkxF
X1NIQURPV19ET00KKyV0eXBlIDxzdHJpbmc+IHJlZmVyZW5jZV9jb21iaW5hdG9yCisjZW5kaWYK
IAogJSUKIApAQCAtMTAwMSw2ICsxMDA0LDE3IEBAIGNvbWJpbmF0b3I6CiAgIHwgJz4nIG1heWJl
X3NwYWNlIHsgJCQgPSBDU1NTZWxlY3Rvcjo6Q2hpbGQ7IH0KICAgOwogCisjaWYgRU5BQkxFX1NI
QURPV19ET00KK3JlZmVyZW5jZV9jb21iaW5hdG9yOgorICAnLycgSURFTlQgJy8nIG1heWJlX3Nw
YWNlIHsKKyAgICAgICAgQ1NTUGFyc2VyU3RyaW5nJiBzdHIgPSAkMjsKKyAgICAgICAgaWYgKHBh
cnNlci0+bV9jb250ZXh0LmlzSFRNTERvY3VtZW50KQorICAgICAgICAgICAgc3RyLmxvd2VyKCk7
CisgICAgICAgICQkID0gc3RyOworICB9CisgIDsKKyNlbmRpZgorCiBtYXliZV91bmFyeV9vcGVy
YXRvcjoKICAgICB1bmFyeV9vcGVyYXRvciB7ICQkID0gJDE7IH0KICAgICB8IHsgJCQgPSAxOyB9
CkBAIC0xMDk2LDYgKzExMTAsMjIgQEAgc2VsZWN0b3I6CiAgICAgICAgICAgICBlbmQtPnNldFRh
Z0hpc3RvcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOwogICAgICAgICB9CiAg
ICAgfQorI2lmIEVOQUJMRV9TSEFET1dfRE9NCisgICAgfCBzZWxlY3RvciByZWZlcmVuY2VfY29t
YmluYXRvciBzaW1wbGVfc2VsZWN0b3IgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlJlZmVy
ZW5jZSBDb21iaW5hdG9yIVxuIik7CisgICAgICAgICQkID0gJDM7CisgICAgICAgIGlmICghJDEp
CisgICAgICAgICAgICAkJCA9IDA7CisgICAgICAgIGVsc2UgaWYgKCQkKSB7CisgICAgICAgICAg
ICBDU1NQYXJzZXJTZWxlY3RvciogZW5kID0gJCQ7CisgICAgICAgICAgICB3aGlsZSAoZW5kLT50
YWdIaXN0b3J5KCkpCisgICAgICAgICAgICAgICAgZW5kID0gZW5kLT50YWdIaXN0b3J5KCk7Cisg
ICAgICAgICAgICBlbmQtPnNldFJlbGF0aW9uKENTU1NlbGVjdG9yOjpSZWZlcmVuY2UpOworICAg
ICAgICAgICAgZW5kLT5zZXRSZWZlcmVuY2UoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDIsIG51
bGxBdG9tKSk7CisgICAgICAgICAgICBlbmQtPnNldFRhZ0hpc3RvcnkocGFyc2VyLT5zaW5rRmxv
YXRpbmdTZWxlY3RvcigkMSkpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCiAgICAgfCBzZWxl
Y3RvciBlcnJvciB7CiAgICAgICAgICQkID0gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyVmFsdWVzLmgKaW5kZXggMTMwMWIxY2UwZTExMzcyM2NjZjgyMTYyOGVlMDVlMmUzMTAyMzY3
Yi4uZTIzZGVkNTBlMjc5Y2MxZDlmMTYxZTA5NjY0ZDQ0ZWQ4YTc5NjcwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaApAQCAtMTgzLDYgKzE4Myw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldE1hdGNoKENTU1NlbGVjdG9yOjpNYXRjaCB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5tX21h
dGNoID0gdmFsdWU7IH0KICAgICB2b2lkIHNldFJlbGF0aW9uKENTU1NlbGVjdG9yOjpSZWxhdGlv
biB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5tX3JlbGF0aW9uID0gdmFsdWU7IH0KICAgICB2b2lkIHNl
dEZvclBhZ2UoKSB7IG1fc2VsZWN0b3ItPnNldEZvclBhZ2UoKTsgfQorICAgIHZvaWQgc2V0UmVm
ZXJlbmNlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHZhbHVlKSB7IG1fc2VsZWN0b3ItPnNldFJlZmVy
ZW5jZSh2YWx1ZSk7IH0KIAogICAgIHZvaWQgYWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3du
UHRyPENTU1BhcnNlclNlbGVjdG9yPiA+JiBzZWxlY3RvclZlY3Rvcik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3IuY3BwCmluZGV4IGM5ZGQxOTM3YTU4ZTZmMWM4NzdjNzFjYzk4NmQ2ZWQwNmY1
MzQ3NTAuLjc2MDZiZjA0OTU3NTA1Y2UyODUwZmQ0ZGNhNzJhODM1MzQwM2M3NWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yLmNwcApAQCAtNjU0LDYgKzY1NCw4IEBAIFN0cmluZyBDU1NTZWxl
Y3Rvcjo6c2VsZWN0b3JUZXh0KCkgY29uc3QKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50OgogICAgICAg
ICAgICAgcmV0dXJuIHRhZ0hpc3RvcnlUZXh0ICsgc3RyLnRvU3RyaW5nKCk7CisgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlJlZmVyZW5jZToKKyAgICAgICAgICAgIHJldHVybiB0YWdIaXN0b3J5
VGV4dCArICIgLyIgKyBjcy0+cmVmZXJlbmNlKCkudG9TdHJpbmcoKSArICIvICIgKyAgc3RyLnRv
U3RyaW5nKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY2Niw2ICs2NjgsMTcgQEAgdm9pZCBD
U1NTZWxlY3Rvcjo6c2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHZhbHVlKQogICAg
IG1fZGF0YS5tX3JhcmVEYXRhLT5tX2F0dHJpYnV0ZSA9IHZhbHVlOwogfQogCit2b2lkIENTU1Nl
bGVjdG9yOjpzZXRSZWZlcmVuY2UoY29uc3QgUXVhbGlmaWVkTmFtZSYgdmFsdWUpCit7CisjaWYg
RU5BQkxFKFNIQURPV19ET00pCisgICAgY3JlYXRlUmFyZURhdGEoKTsKKyAgICBtX2RhdGEubV9y
YXJlRGF0YS0+bV9yZWZlcmVuY2UgPSB2YWx1ZTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHZh
bHVlKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCiB2b2lkIENTU1Nl
bGVjdG9yOjpzZXRBcmd1bWVudChjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGNy
ZWF0ZVJhcmVEYXRhKCk7CkBAIC03MjQsNiArNzM3LDkgQEAgQ1NTU2VsZWN0b3I6OlJhcmVEYXRh
OjpSYXJlRGF0YShQYXNzUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IHZhbHVlKQogICAgICwgbV9h
KDApCiAgICAgLCBtX2IoMCkKICAgICAsIG1fYXR0cmlidXRlKGFueVFOYW1lKCkpCisjaWYgRU5B
QkxFKFNIQURPV19ET00pCisgICAgLCBtX3JlZmVyZW5jZShhbnlRTmFtZSgpKQorI2VuZGlmCiAg
ICAgLCBtX2FyZ3VtZW50KG51bGxBdG9tKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApp
bmRleCBhZWU1MDc0ZDc1ZjdiYjNmNmU0MTI5NWRkMWJhYWMwOTc2MzA4NDVmLi41YzJlZWM2NzY0
ZWQyMmMyNDNhNTcyY2M4MmY5ZTJiZWI5Y2Q2NGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3Iu
aApAQCAtNzYsNyArNzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBEaXJl
Y3RBZGphY2VudCwKICAgICAgICAgICAgIEluZGlyZWN0QWRqYWNlbnQsCiAgICAgICAgICAgICBT
dWJTZWxlY3RvciwKLSAgICAgICAgICAgIFNoYWRvd0Rlc2NlbmRhbnQKKyAgICAgICAgICAgIFNo
YWRvd0Rlc2NlbmRhbnQsCisgICAgICAgICAgICBSZWZlcmVuY2UKICAgICAgICAgfTsKIAogICAg
ICAgICBlbnVtIFBzZXVkb1R5cGUgewpAQCAtMTk5LDEyICsyMDAsMTQgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAvLyBGSVhNRTogUGVyaGFwcyBjYWxsIHNpdGVzIGNvdWxkIGJlIGNo
YW5nZWQgdG8gYWNjZXB0IEF0b21pY1N0cmluZ0ltcGw/CiAgICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBBdG9t
aWNTdHJpbmcqPihtX2hhc1JhcmVEYXRhID8gJm1fZGF0YS5tX3JhcmVEYXRhLT5tX3ZhbHVlIDog
Jm1fZGF0YS5tX3ZhbHVlKTsgfQogICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGUoKSBjb25zdDsKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgcmVmZXJlbmNlKCkgY29u
c3Q7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJndW1lbnQoKSBjb25zdCB7IHJldHVy
biBtX2hhc1JhcmVEYXRhID8gbV9kYXRhLm1fcmFyZURhdGEtPm1fYXJndW1lbnQgOiBudWxsQXRv
bTsgfQogICAgICAgICBDU1NTZWxlY3Rvckxpc3QqIHNlbGVjdG9yTGlzdCgpIGNvbnN0IHsgcmV0
dXJuIG1faGFzUmFyZURhdGEgPyBtX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QuZ2V0
KCkgOiAwOyB9CiAKICAgICAgICAgdm9pZCBzZXRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgdmFs
dWUpIHsgbV90YWcgPSB2YWx1ZTsgfQogICAgICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21p
Y1N0cmluZyYpOwogICAgICAgICB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CisgICAgICAgIHZvaWQgc2V0UmVmZXJlbmNlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAg
ICAgICAgdm9pZCBzZXRBcmd1bWVudChjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICAgICAgdm9p
ZCBzZXRTZWxlY3Rvckxpc3QoUGFzc093blB0cjxDU1NTZWxlY3Rvckxpc3Q+KTsKIApAQCAtMjE2
LDYgKzIxOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0N1c3RvbVBz
ZXVkb0VsZW1lbnQoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc1NpYmxpbmdTZWxlY3RvcigpIGNv
bnN0OwogICAgICAgICBib29sIGlzQXR0cmlidXRlU2VsZWN0b3IoKSBjb25zdDsKKyAgICAgICAg
Ym9vbCBpc1JlZmVyZW5jZUNvbWJpbmF0b3IoKSBjb25zdDsKIAogICAgICAgICBSZWxhdGlvbiBy
ZWxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlbGF0aW9uPihtX3JlbGF0aW9u
KTsgfQogCkBAIC0yNTgsNiArMjYyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAg
ICAgaW50IG1fYTsgLy8gVXNlZCBmb3IgOm50aC0qCiAgICAgICAgICAgICBpbnQgbV9iOyAvLyBV
c2VkIGZvciA6bnRoLSoKICAgICAgICAgICAgIFF1YWxpZmllZE5hbWUgbV9hdHRyaWJ1dGU7IC8v
IHVzZWQgZm9yIGF0dHJpYnV0ZSBzZWxlY3RvcgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAg
ICAgICAgICAgUXVhbGlmaWVkTmFtZSBtX3JlZmVyZW5jZTsgLy8gdXNlZCBmb3IgcmVmZXJlbmNl
IGNvbWJpbmF0b3IKKyNlbmRpZgogICAgICAgICAgICAgQXRvbWljU3RyaW5nIG1fYXJndW1lbnQ7
IC8vIFVzZWQgZm9yIDpjb250YWlucywgOmxhbmcgYW5kIDpudGgtKgogICAgICAgICAgICAgT3du
UHRyPENTU1NlbGVjdG9yTGlzdD4gbV9zZWxlY3Rvckxpc3Q7IC8vIFVzZWQgZm9yIDotd2Via2l0
LWFueSBhbmQgOm5vdAogICAgICAgICAKQEAgLTI4Miw2ICsyODksMTcgQEAgaW5saW5lIGNvbnN0
IFF1YWxpZmllZE5hbWUmIENTU1NlbGVjdG9yOjphdHRyaWJ1dGUoKSBjb25zdAogICAgIHJldHVy
biBtX2RhdGEubV9yYXJlRGF0YS0+bV9hdHRyaWJ1dGU7CiB9CiAKK2lubGluZSBjb25zdCBRdWFs
aWZpZWROYW1lJiBDU1NTZWxlY3Rvcjo6cmVmZXJlbmNlKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKKyAgICBBU1NFUlQoaXNSZWZlcmVuY2VDb21iaW5hdG9yKCkpOworICAgIEFT
U0VSVChtX2hhc1JhcmVEYXRhKTsKKyAgICByZXR1cm4gbV9kYXRhLm1fcmFyZURhdGEtPm1fcmVm
ZXJlbmNlOworI2Vsc2UKKyAgICByZXR1cm4gbnVsbFFOYW1lKCk7CisjZW5kaWYKK30KKwogaW5s
aW5lIGJvb2wgQ1NTU2VsZWN0b3I6Om1hdGNoZXNQc2V1ZG9FbGVtZW50KCkgY29uc3QKIHsKICAg
ICBpZiAobV9wc2V1ZG9UeXBlID09IFBzZXVkb1Vua25vd24pCkBAIC0zMjgsNiArMzQ2LDExIEBA
IGlubGluZSBib29sIENTU1NlbGVjdG9yOjppc0F0dHJpYnV0ZVNlbGVjdG9yKCkgY29uc3QKICAg
ICAgICAgfHwgbV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6RW5kOwogfQogCitpbmxpbmUgYm9vbCBD
U1NTZWxlY3Rvcjo6aXNSZWZlcmVuY2VDb21iaW5hdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9yZWxhdGlvbiA9PSBDU1NTZWxlY3Rvcjo6UmVmZXJlbmNlOworfQorCiBpbmxpbmUgdm9pZCBD
U1NTZWxlY3Rvcjo6c2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAv
LyBOZWVkIHRvIGRvIHJlZiBjb3VudGluZyBtYW51YWxseSBmb3IgdGhlIHVuaW9uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAppbmRleCA0MzEzNmQxYzkwMWM2MzQxYmFjYmVm
ODM5NDlkZjk0ZTYwZjFjMzZjLi42MDc0ZTJhMmIyMjg3MThlN2YwMzgzYmIyMTZlNzlmODZhNDdm
YmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogCiAjaW5jbHVkZSAiQ1NTUGFyc2Vy
VmFsdWVzLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9y
eUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
IApAQCAtMjExLDYgKzIxMiwyMCBAQCBib29sIENTU1NlbGVjdG9yTGlzdDo6aGFzSW52YWxpZFNl
bGVjdG9yKCkgY29uc3QKICAgICByZXR1cm4gZm9yRWFjaFNlbGVjdG9yKGZ1bmN0b3IsIHRoaXMp
OwogfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCitjbGFzcyBTZWxlY3Rvckhhc1NlbGVjdFJl
ZmVyZW5jZUNvbWJpbmF0b3IgeworcHVibGljOgorICAgIGJvb2wgb3BlcmF0b3IoKShDU1NTZWxl
Y3Rvciogc2VsZWN0b3IpCisgICAgeworICAgICAgICByZXR1cm4gc2VsZWN0b3ItPmlzUmVmZXJl
bmNlQ29tYmluYXRvcigpICYmIHNlbGVjdG9yLT5yZWZlcmVuY2UoKSA9PSBIVE1MTmFtZXM6OnNl
bGVjdEF0dHI7CisgICAgfQorfTsKIAorYm9vbCBDU1NTZWxlY3Rvckxpc3Q6Omhhc1NlbGVjdFJl
ZmVyZW5jZUNvbWJpbmF0b3JBdChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgU2VsZWN0b3JI
YXNTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yIGZ1bmN0b3I7CisgICAgcmV0dXJuIGZvckVhY2hU
YWdTZWxlY3RvcihmdW5jdG9yLCBzZWxlY3RvckF0KGluZGV4KSk7Cit9CisjZW5kaWYKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Nl
bGVjdG9yTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCmluZGV4
IDRmY2ZlZTJmYWE0MTgyZDdhOWFiMDU1YmNjZTUxOWZlNzRlMjI3MTUuLjA5NGUxZGE4MzMxZDRi
NzJjMzlhNjhlYzFlYWQ4YjRkMTRlMGIwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTZWxlY3Rvckxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JM
aXN0LmgKQEAgLTYwLDYgKzYwLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHNlbGVjdG9yc05lZWRO
YW1lc3BhY2VSZXNvbHV0aW9uKCk7CiAgICAgYm9vbCBoYXNJbnZhbGlkU2VsZWN0b3IoKSBjb25z
dDsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGJvb2wgaGFzU2VsZWN0UmVmZXJlbmNl
Q29tYmluYXRvckF0KHNpemVfdCBpbmRleCkgY29uc3Q7CisjZW5kaWYKKwogICAgIFN0cmluZyBz
ZWxlY3RvcnNUZXh0KCkgY29uc3Q7CiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxl
U2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAppbmRleCA5YTc4YzBmZjkw
Mzg5YzkwYzQ0ZGE1YTZiOWY1ZmY3YWUyMGM2ZTMxLi5lYWZhNmE1MGY4MGM0MDRlZjc5Yzk0NDYz
NzJiYTlmMjExOThhYjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCkBAIC0yODIsNyArMjgyLDcg
QEAgdm9pZCBSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVudHMqIHNo
ZWV0LCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHUKIAogICAgICAgICBBU1NFUlQoIXJ1bGUtPmlzSW1w
b3J0UnVsZSgpKTsKICAgICAgICAgaWYgKHJ1bGUtPmlzU3R5bGVSdWxlKCkpCi0gICAgICAgICAg
ICBhZGRTdHlsZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlKj4ocnVsZSksIGFkZFJ1bGVGbGFn
cyk7CisgICAgICAgICAgICByZXNvbHZlci0+YWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0PFN0eWxl
UnVsZSo+KHJ1bGUpLCBjb25zdF9jYXN0PENvbnRhaW5lck5vZGUqPihzY29wZSksIHRoaXMsIGFk
ZFJ1bGVGbGFncyk7CiAgICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlzUGFnZVJ1bGUoKSkKICAgICAg
ICAgICAgIGFkZFBhZ2VSdWxlKHN0YXRpY19jYXN0PFN0eWxlUnVsZVBhZ2UqPihydWxlKSk7CiAg
ICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlzTWVkaWFSdWxlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggZDQ4NDFjYTAyYmFkYmE2YTExZmJjZjlmOGQ3MTQ4MDhm
M2VhOGVmYy4uMWNjODBmNmFjYmQxMDQ2NmI5NDUxMDUyZjBjM2U2MzJkMDRkZmY1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNs
dWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxQcm9ncmVzc0VsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCisjaW5jbHVkZSAiSW5zZXJ0aW9uUG9p
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJO
b2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0xOTUsNiArMTk2LDcgQEAg
dm9pZCBTZWxlY3RvckNoZWNrZXI6OmNvbGxlY3RJZGVudGlmaWVySGFzaGVzKGNvbnN0IENTU1Nl
bGVjdG9yKiBzZWxlY3RvciwgdW5zaWcKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpEZXNjZW5kYW50OgogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpDaGls
ZDoKKyAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UmVmZXJlbmNlOgogICAgICAgICAgICAgc2tp
cE92ZXJTdWJzZWxlY3RvcnMgPSBmYWxzZTsKICAgICAgICAgICAgIGNvbGxlY3REZXNjZW5kYW50
U2VsZWN0b3JJZGVudGlmaWVySGFzaGVzKHNlbGVjdG9yLCBoYXNoLCBlbmQpOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC00NzUsOCArNDc3LDE1IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JN
YXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVjCiAK
ICAgICAvLyBQcmVwYXJlIG5leHQgc2VsZWN0b3IKICAgICBDU1NTZWxlY3RvciogaGlzdG9yeVNl
bGVjdG9yID0gY29udGV4dC5zZWxlY3Rvci0+dGFnSGlzdG9yeSgpOwotICAgIGlmICghaGlzdG9y
eVNlbGVjdG9yKQorICAgIGlmICghaGlzdG9yeVNlbGVjdG9yKSB7CisjaWYgRU5BQkxFKFNIQURP
V19ET00pCisgICAgICAgIGlmIChjb250ZXh0LnNjb3BlT2ZMYXN0RWxlbWVudCkgeworICAgICAg
ICAgICAgLy8gRklYTUU6IENoZWNrIHRoZSBzY29wZSBtb3JlIHN0cmljdGx5LgorICAgICAgICAg
ICAgcmV0dXJuIGNvbnRleHQuc2NvcGVPZkxhc3RFbGVtZW50LT50cmVlU2NvcGUoKSA9PSBjb250
ZXh0LmVsZW1lbnQtPnRyZWVTY29wZSgpID8gU2VsZWN0b3JNYXRjaGVzIDogU2VsZWN0b3JGYWls
c0xvY2FsbHk7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICByZXR1cm4gU2VsZWN0b3JNYXRj
aGVzOworICAgIH0KIAogICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0IG5leHRDb250ZXh0KGNv
bnRleHQpOwogICAgIG5leHRDb250ZXh0LnNlbGVjdG9yID0gaGlzdG9yeVNlbGVjdG9yOwpAQCAt
NTc4LDYgKzU4NywyNSBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JD
aGVja2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlYwogICAgICAgICAgICAgbmV4
dENvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlID0gMDsKICAgICAgICAgICAgIHJldHVybiBjaGVj
a1NlbGVjdG9yKG5leHRDb250ZXh0LCBpZ25vcmVEeW5hbWljUHNldWRvKTsKICAgICAgICAgfQor
CisgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UmVmZXJlbmNlOgorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoY29udGV4dC5zZWxlY3Rvci0+cmVmZXJlbmNlKCkgIT0gc2VsZWN0QXR0cikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CisKKyAgICAgICAgICAg
IFZlY3RvcjxJbnNlcnRpb25Qb2ludCosIDg+IGluc2VydGlvblBvaW50czsKKyAgICAgICAgICAg
IGNvbGxlY3RBbGxNaWRwb2ludEluc2VydGlvblBvaW50cyhjb250ZXh0LmVsZW1lbnQsIGluc2Vy
dGlvblBvaW50cyk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc2VydGlv
blBvaW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1l
bnQgPSBpbnNlcnRpb25Qb2ludHNbaV07CisgICAgICAgICAgICAgICAgbmV4dENvbnRleHQuaXNT
dWJTZWxlY3RvciA9IGZhbHNlOworICAgICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnRT
dHlsZSA9IDA7CisgICAgICAgICAgICAgICAgbmV4dENvbnRleHQuZWxlbWVudFBhcmVudFN0eWxl
ID0gMDsKKyAgICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hlY2tTZWxlY3Rv
cihuZXh0Q29udGV4dCwgaWdub3JlRHluYW1pY1BzZXVkbyk7CisgICAgICAgICAgICAgICAgaWYg
KG1hdGNoID09IFNlbGVjdG9yTWF0Y2hlcyB8fCBtYXRjaCA9PSBTZWxlY3RvckZhaWxzQ29tcGxl
dGVseSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OworICAgICAgICB9CiAg
ICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmgKaW5kZXggOWJkYjY2OWIyNDZlZTY0M2Q1ZTJlZTIyYjVhMWEyNGVlMDkxOGU2YS4u
NDdiMzkwY2U3OWExODk0YjVkNGJkMjk2YjAzMjVhNWZmNjUyMmI0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TZWxlY3RvckNoZWNrZXIuaApAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAsIGlzU3ViU2VsZWN0b3IoZmFsc2UpCiAgICAgICAgICAgICAsIGhhc1Njcm9sbGJhclBzZXVk
byhmYWxzZSkKICAgICAgICAgICAgICwgaGFzU2VsZWN0aW9uUHNldWRvKGZhbHNlKQorICAgICAg
ICAgICAgLCBzY29wZU9mTGFzdEVsZW1lbnQoMCkKICAgICAgICAgeyB9CiAKICAgICAgICAgQ1NT
U2VsZWN0b3IqIHNlbGVjdG9yOwpAQCAtNzksNiArODAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJv
b2wgaXNTdWJTZWxlY3RvcjsKICAgICAgICAgYm9vbCBoYXNTY3JvbGxiYXJQc2V1ZG87CiAgICAg
ICAgIGJvb2wgaGFzU2VsZWN0aW9uUHNldWRvOworICAgICAgICBjb25zdCBDb250YWluZXJOb2Rl
KiBzY29wZU9mTGFzdEVsZW1lbnQ7CiAgICAgfTsKIAogICAgIGJvb2wgY2hlY2tTZWxlY3RvcihD
U1NTZWxlY3RvciosIEVsZW1lbnQqLCBib29sIGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yID0gZmFs
c2UpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDZjODQxZTQ5
OGQ4NzVhMzlhMzdmOGFlNWM5OGNmNGJmYjFhZjcwZmMuLmI4MjJhZGIwNDMzNzQ1NzUwMDY4Y2Jl
ZmMwZGNkNjRhYjNjMjA2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAg
LTM2Niw2ICszNjYsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnJlc2V0QXV0aG9yU3R5bGUoKQog
ewogICAgIG1fYXV0aG9yU3R5bGUgPSBSdWxlU2V0OjpjcmVhdGUoKTsKICAgICBtX2F1dGhvclN0
eWxlLT5kaXNhYmxlQXV0b1Nocmlua1RvRml0KCk7CisgICAgbV9zZWxlY3RSZWZlcmVuY2VDb21i
aW5hdG9yUnVsZVNldE1hcC5jbGVhcigpOwogfQogCiB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGVu
ZEF1dGhvclN0eWxlU2hlZXRzKHVuc2lnbmVkIGZpcnN0TmV3LCBjb25zdCBWZWN0b3I8UmVmUHRy
PENTU1N0eWxlU2hlZXQ+ID4mIHN0eWxlU2hlZXRzKQpAQCAtNDUwLDYgKzQ1MSwzMSBAQCB2b2lk
IFN0eWxlUmVzb2x2ZXI6OmFkZEtleWZyYW1lU3R5bGUoUGFzc1JlZlB0cjxTdHlsZVJ1bGVLZXlm
cmFtZXM+IHJ1bGUpCiAgICAgbV9rZXlmcmFtZXNSdWxlTWFwLnNldChzLmltcGwoKSwgcnVsZSk7
CiB9CiAKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkU3R5bGVSdWxlKFN0eWxlUnVsZSogcnVsZSwg
Q29udGFpbmVyTm9kZSogc2NvcGUsIFJ1bGVTZXQqIHJ1bGVTZXQsIEFkZFJ1bGVGbGFncyBhZGRS
dWxlRmxhZ3MpCit7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgaWYgKCFzY29wZSkgewor
ICAgICAgICBydWxlU2V0LT5hZGRTdHlsZVJ1bGUocnVsZSwgYWRkUnVsZUZsYWdzKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlz
dCA9IHJ1bGUtPnNlbGVjdG9yTGlzdCgpOworICAgIGZvciAoc2l6ZV90IHNlbGVjdG9ySW5kZXgg
PSAwOyBzZWxlY3RvckluZGV4ICE9IG5vdEZvdW5kOyBzZWxlY3RvckluZGV4ID0gc2VsZWN0b3JM
aXN0LmluZGV4T2ZOZXh0U2VsZWN0b3JBZnRlcihzZWxlY3RvckluZGV4KSkgeworICAgICAgICBp
ZiAoc2VsZWN0b3JMaXN0Lmhhc1NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JBdChzZWxlY3Rvcklu
ZGV4KSkgeworICAgICAgICAgICAgaWYgKG1fc2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVT
ZXRNYXAuY29udGFpbnMoc2NvcGUpKQorICAgICAgICAgICAgICAgIG1fc2VsZWN0UmVmZXJlbmNl
Q29tYmluYXRvclJ1bGVTZXRNYXAuZ2V0KHNjb3BlKS0+YWRkUnVsZShydWxlLCBzZWxlY3Rvcklu
ZGV4LCBhZGRSdWxlRmxhZ3MpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
T3duUHRyPFJ1bGVTZXQ+IHJ1bGVTZXRGb3JTY29wZSA9IGFkb3B0UHRyKG5ldyBSdWxlU2V0KCkp
OworICAgICAgICAgICAgICAgIHJ1bGVTZXRGb3JTY29wZS0+YWRkUnVsZShydWxlLCBzZWxlY3Rv
ckluZGV4LCBhZGRSdWxlRmxhZ3MpOworICAgICAgICAgICAgICAgIG1fc2VsZWN0UmVmZXJlbmNl
Q29tYmluYXRvclJ1bGVTZXRNYXAuYWRkKHNjb3BlLCBydWxlU2V0Rm9yU2NvcGUucmVsZWFzZSgp
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBydWxlU2V0LT5h
ZGRSdWxlKHJ1bGUsIHNlbGVjdG9ySW5kZXgsIGFkZFJ1bGVGbGFncyk7CisgICAgfQorI2Vsc2UK
KyAgICBydWxlU2V0LT5hZGRTdHlsZVJ1bGUocnVsZSwgYWRkUnVsZUZsYWdzKTsKKyNlbmRpZgor
fQorCiBTdHlsZVJlc29sdmVyOjp+U3R5bGVSZXNvbHZlcigpCiB7CiAgICAgbV9mb250U2VsZWN0
b3ItPmNsZWFyRG9jdW1lbnQoKTsKQEAgLTc5Myw2ICs4MTksMTcgQEAgdm9pZCBTdHlsZVJlc29s
dmVyOjptYXRjaEhvc3RSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0
eVJ1bGVzKQogI2VuZGlmCiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKK3ZvaWQgU3R5bGVS
ZXNvbHZlcjo6bWF0Y2hTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZXMoTWF0Y2hSZXN1bHQm
IHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKK3sKKyAgICBmb3IgKFNlbGVjdFJlZmVy
ZW5jZUNvbWJpbmF0b3JSdWxlU2V0TWFwOjppdGVyYXRvciBpdCA9IG1fc2VsZWN0UmVmZXJlbmNl
Q29tYmluYXRvclJ1bGVTZXRNYXAuYmVnaW4oKTsgaXQgIT0gbV9zZWxlY3RSZWZlcmVuY2VDb21i
aW5hdG9yUnVsZVNldE1hcC5lbmQoKTsgKytpdCkgeworICAgICAgICBNYXRjaE9wdGlvbnMgb3B0
aW9ucyhpbmNsdWRlRW1wdHlSdWxlcywgMCk7CisgICAgICAgIG9wdGlvbnMuc2NvcGVPZkxhc3RF
bGVtZW50ID0gaXQtPmtleTsKKyAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMoaXQtPnZhbHVl
LmdldCgpLCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0
QXV0aG9yUnVsZSwgb3B0aW9ucyk7CisgICAgfQorfQorI2VuZGlmCisKIHZvaWQgU3R5bGVSZXNv
bHZlcjo6bWF0Y2hBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVF
bXB0eVJ1bGVzKQogewogICAgIG1fbWF0Y2hlZFJ1bGVzLmNsZWFyKCk7CkBAIC04MDcsNiArODQ0
LDkgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiBy
ZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zv
clJlZ2lvbihtX2F1dGhvclN0eWxlLmdldCgpLCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVs
ZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7CiAKICAgICBtYXRjaFNj
b3BlZEF1dGhvclJ1bGVzKHJlc3VsdCwgaW5jbHVkZUVtcHR5UnVsZXMpOworI2lmIEVOQUJMRShT
SEFET1dfRE9NKQorICAgIG1hdGNoU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVzKHJlc3Vs
dCwgaW5jbHVkZUVtcHR5UnVsZXMpOworI2VuZGlmCiAKICAgICBzb3J0QW5kVHJhbnNmZXJNYXRj
aGVkUnVsZXMocmVzdWx0KTsKIH0KQEAgLTg0Miw3ICs4ODIsMTEgQEAgdm9pZCBTdHlsZVJlc29s
dmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiog
cnVsZXMsIGkKIAogICAgIC8vIEluIHNvbWUgY2FzZXMgd2UgbWF5IGVuZCB1cCBsb29raW5nIHVw
IHN0eWxlIGZvciByYW5kb20gZWxlbWVudHMgaW4gdGhlIG1pZGRsZSBvZiBhIHJlY3Vyc2l2ZSB0
cmVlIHJlc29sdmUuCiAgICAgLy8gQW5jZXN0b3IgaWRlbnRpZmllciBmaWx0ZXIgd29uJ3QgYmUg
dXAtdG8tZGF0ZSBpbiB0aGF0IGNhc2UgYW5kIHdlIGNhbid0IHVzZSB0aGUgZmFzdCBwYXRoLgor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGJvb2wgY2FuVXNlRmFzdFJlamVjdCA9IG1fY2hl
Y2tlci5wYXJlbnRTdGFja0lzQ29uc2lzdGVudChtX3BhcmVudE5vZGUpICYmICFvcHRpb25zLnNj
b3BlT2ZMYXN0RWxlbWVudDsKKyNlbHNlCiAgICAgYm9vbCBjYW5Vc2VGYXN0UmVqZWN0ID0gbV9j
aGVja2VyLnBhcmVudFN0YWNrSXNDb25zaXN0ZW50KG1fcGFyZW50Tm9kZSk7CisjZW5kaWYKIAog
ICAgIHVuc2lnbmVkIHNpemUgPSBydWxlcy0+c2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKQEAgLTg1Miw3ICs4OTYsNyBAQCB2b2lkIFN0eWxlUmVzb2x2
ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBy
dWxlcywgaQogCiAgICAgICAgIFN0eWxlUnVsZSogcnVsZSA9IHJ1bGVEYXRhLnJ1bGUoKTsKICAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbE1hdGNoUnVsZShkb2N1bWVudCgpLCBydWxlKTsKLSAgICAgICAg
aWYgKGNoZWNrU2VsZWN0b3IocnVsZURhdGEsIG9wdGlvbnMuc2NvcGUpKSB7CisgICAgICAgIGlm
IChjaGVja1NlbGVjdG9yKHJ1bGVEYXRhLCBvcHRpb25zLnNjb3BlLCBvcHRpb25zLnNjb3BlT2ZM
YXN0RWxlbWVudCkpIHsKICAgICAgICAgICAgIC8vIElmIHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0
aWVzIHRvIGFwcGx5LCB0aGVuIGlnbm9yZSBpdCBpbiB0aGUgbm9uLWRlYnVnIG1vZGUuCiAgICAg
ICAgICAgICBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzID0gcnVsZS0+cHJvcGVy
dGllcygpOwogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0aWVzIHx8IChwcm9wZXJ0aWVzLT5pc0Vt
cHR5KCkgJiYgIW9wdGlvbnMuaW5jbHVkZUVtcHR5UnVsZXMpKSB7CkBAIC0yMTMzLDcgKzIxNzcs
NyBAQCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBTdHlsZVJlc29sdmVyOjpwc2V1ZG9TdHlsZVJ1
bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCBQcwogICAgIHJldHVybiBtX3J1bGVMaXN0LnJlbGVh
c2UoKTsKIH0KIAotaW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y2hlY2tTZWxlY3Rvcihjb25z
dCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKQoraW5saW5l
IGJvb2wgU3R5bGVSZXNvbHZlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYgcnVsZURh
dGEsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29w
ZU9mTGFzdEVsZW1lbnQpCiB7CiAgICAgbV9keW5hbWljUHNldWRvID0gTk9QU0VVRE87CiAKQEAg
LTIxNTgsNiArMjIwMiw3IEBAIGlubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6OmNoZWNrU2VsZWN0
b3IoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCBjb25zdCBDb250YWluCiAgICAgY29udGV4dC5l
bGVtZW50U3R5bGUgPSBzdHlsZSgpOwogICAgIGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlID0g
bV9wYXJlbnROb2RlID8gbV9wYXJlbnROb2RlLT5yZW5kZXJTdHlsZSgpIDogMDsKICAgICBjb250
ZXh0LnNjb3BlID0gc2NvcGU7CisgICAgY29udGV4dC5zY29wZU9mTGFzdEVsZW1lbnQgPSBzY29w
ZU9mTGFzdEVsZW1lbnQ7CiAgICAgY29udGV4dC5wc2V1ZG9TdHlsZSA9IG1fcHNldWRvU3R5bGU7
CiAgICAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIG1hdGNoID0gbV9jaGVja2VyLmNo
ZWNrU2VsZWN0b3IoY29udGV4dCwgbV9keW5hbWljUHNldWRvKTsKICAgICBpZiAobWF0Y2ggIT0g
U2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuaAppbmRleCAwNTVkODEzZWRiNTZiMDUwY2I2MTMzNzI0NTQ4NTExZGM2MGZiMjJiLi5jNzhk
ZTY2ZGRiYzBiOGIwYmUzN2Q3NTc2ZmU5YmUzZjE1MDQ0MDA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJNZWRpYVF1ZXJ5RXhwLmgi
CiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJSdWxlRmVhdHVyZS5oIgorI2lu
Y2x1ZGUgIlJ1bGVTZXQuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAj
aW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCiAjaW5jbHVkZSAiU3R5bGVJbmhlcml0ZWREYXRh
LmgiCkBAIC03NCw3ICs3NSw2IEBAIGNsYXNzIE1lZGlhUXVlcnlFdmFsdWF0b3I7CiBjbGFzcyBO
b2RlOwogY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xhc3MgUnVsZURhdGE7Ci1jbGFzcyBSdWxlU2V0
OwogY2xhc3MgU2V0dGluZ3M7CiBjbGFzcyBTdGF0aWNDU1NSdWxlTGlzdDsKIGNsYXNzIFN0eWxl
QnVpbGRlcjsKQEAgLTI2MCw2ICsyNjAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZEtleWZy
YW1lU3R5bGUoUGFzc1JlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+KTsKIAorICAgIHZvaWQgYWRk
U3R5bGVSdWxlKFN0eWxlUnVsZSosIENvbnRhaW5lck5vZGUqIHNjb3BlLCBSdWxlU2V0KiwgQWRk
UnVsZUZsYWdzKTsKKwogICAgIGJvb2wgY2hlY2tSZWdpb25TdHlsZShFbGVtZW50KiByZWdpb25F
bGVtZW50KTsKIAogICAgIGJvb2wgdXNlc1NpYmxpbmdSdWxlcygpIGNvbnN0IHsgcmV0dXJuICFt
X2ZlYXR1cmVzLnNpYmxpbmdSdWxlcy5pc0VtcHR5KCk7IH0KQEAgLTMzOCw5ICszNDAsMTEgQEAg
cHJpdmF0ZToKICAgICB9OwogCiAgICAgc3RydWN0IE1hdGNoT3B0aW9ucyB7Ci0gICAgICAgIE1h
dGNoT3B0aW9ucyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBjb25zdCBDb250YWluZXJOb2RlKiBz
Y29wZSA9IDApIDogc2NvcGUoc2NvcGUpLCBpbmNsdWRlRW1wdHlSdWxlcyhpbmNsdWRlRW1wdHlS
dWxlcykgeyB9CisgICAgICAgIE1hdGNoT3B0aW9ucyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBj
b25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9IDApCisgICAgICAgICAgICA6IHNjb3BlKHNjb3Bl
KSwgaW5jbHVkZUVtcHR5UnVsZXMoaW5jbHVkZUVtcHR5UnVsZXMpLCBzY29wZU9mTGFzdEVsZW1l
bnQoMCkgeyB9CiAgICAgICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlOwogICAgICAgICBi
b29sIGluY2x1ZGVFbXB0eVJ1bGVzOworICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBzY29w
ZU9mTGFzdEVsZW1lbnQ7CiAgICAgfTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1hdGNoZWRQcm9w
ZXJ0aWVzKE1hdGNoUmVzdWx0JiwgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcywg
U3R5bGVSdWxlKiA9IDAsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUgPSBTZWxlY3RvckNoZWNrZXI6
Ok1hdGNoQWxsLCBib29sIGluUmVnaW9uUnVsZSA9IGZhbHNlKTsKQEAgLTM1Myw2ICszNTcsMTAg
QEAgcHJpdmF0ZToKICAgICB2b2lkIG1hdGNoVXNlclJ1bGVzKE1hdGNoUmVzdWx0JiwgYm9vbCBp
bmNsdWRlRW1wdHlSdWxlcyk7CiAgICAgdm9pZCBtYXRjaFNjb3BlZEF1dGhvclJ1bGVzKE1hdGNo
UmVzdWx0JiwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAgICAgdm9pZCBtYXRjaEhvc3RSdWxl
cyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOworI2lmIEVOQUJMRShTSEFE
T1dfRE9NKQorICAgIHZvaWQgbWF0Y2hTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZXMoTWF0
Y2hSZXN1bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyNlbmRpZgorCiAgICAgdm9pZCBj
b2xsZWN0TWF0Y2hpbmdSdWxlcyhSdWxlU2V0KiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBs
YXN0UnVsZUluZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmKTsKICAgICB2b2lkIGNvbGxlY3RNYXRj
aGluZ1J1bGVzRm9yUmVnaW9uKFJ1bGVTZXQqLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxh
c3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYpOwogICAgIHZvaWQgY29sbGVjdE1hdGNo
aW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qLCBpbnQmIGZpcnN0UnVsZUlu
ZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYpOwpAQCAtMzYwLDcg
KzM2OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzb3J0TWF0Y2hlZFJ1bGVzKCk7CiAgICAgdm9p
ZCBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoTWF0Y2hSZXN1bHQmKTsKIAotICAgIGJvb2wg
Y2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3Bl
KTsKKyAgICBib29sIGNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmLCBjb25zdCBDb250YWlu
ZXJOb2RlKiBzY29wZSwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGVPZkxhc3RFbGVtZW50KTsK
ICAgICBib29sIGNoZWNrUmVnaW9uU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHJlZ2lvblNlbGVjdG9y
LCBFbGVtZW50KiByZWdpb25FbGVtZW50KTsKICAgICB2b2lkIGFwcGx5TWF0Y2hlZFByb3BlcnRp
ZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBjb25zdCBFbGVtZW50Kik7CiAgICAgZW51bSBTdHlsZUFw
cGxpY2F0aW9uUGFzcyB7CkBAIC0zOTEsNiArMzk5LDkgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8
UnVsZVNldD4gbV9hdXRob3JTdHlsZTsKICAgICBPd25QdHI8UnVsZVNldD4gbV91c2VyU3R5bGU7
CiAKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ29udGFpbmVyTm9kZSosIE93blB0cjxSdWxl
U2V0PiA+IFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0TWFwOworICAgIFNlbGVjdFJl
ZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0TWFwIG1fc2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1
bGVTZXRNYXA7CisKICAgICBSdWxlRmVhdHVyZVNldCBtX2ZlYXR1cmVzOwogICAgIE93blB0cjxS
dWxlU2V0PiBtX3NpYmxpbmdSdWxlU2V0OwogICAgIE93blB0cjxSdWxlU2V0PiBtX3VuY29tbW9u
QXR0cmlidXRlUnVsZVNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5oCmluZGV4IGQ0YjdkN2QwZDkxMzAzYzYwNzBkNTlhOTFlYzY4ZDc2ZTNkZmI0YjUuLmUz
ZTRkMGUzZWQ3ZmU4ODhjZDgxYTUzOWZhMTU3N2YyOGViZDlhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtMTcxLDYgKzE3MSwzNyBAQCBpbmxp
bmUgSW5zZXJ0aW9uUG9pbnQqIHJlc29sdmVSZXByb2plY3Rpb24oY29uc3QgTm9kZSogcHJvamVj
dGVkTm9kZSkKICAgICByZXR1cm4gaW5zZXJ0aW9uUG9pbnQ7CiB9CiAKKy8vIEZJWE1FOiBDb2xs
ZWN0cyBvbmx5IEhUTUxDb250ZW50RWxlbWVudCBzaW5jZSBhIHNlbGVjdCByZWZlcmVuY2UgY29t
YmluYXRvciBjYW4gYmUKKy8vIGFwcGxpZWQgdG8gb25seSA8Y29udGVudD4gZWxlbWVudHMuCitp
bmxpbmUgdm9pZCBjb2xsZWN0QWxsTWlkcG9pbnRJbnNlcnRpb25Qb2ludHMoY29uc3QgTm9kZSog
cHJvamVjdGVkTm9kZSwgVmVjdG9yPEluc2VydGlvblBvaW50KiwgOD4mIHJlc3VsdHMpCit7Cisg
ICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gMDsKKyAgICBjb25zdCBOb2RlKiBj
dXJyZW50ID0gcHJvamVjdGVkTm9kZTsKKworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGlm
IChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbihj
dXJyZW50KSkgeworICAgICAgICAgICAgc2hhZG93LT5lbnN1cmVEaXN0cmlidXRpb24oKTsKKyAg
ICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHNoYWRvdy0+ZGlzdHJp
YnV0b3IoKS5maW5kSW5zZXJ0aW9uUG9pbnRGb3IocHJvamVjdGVkTm9kZSkpIHsKKyAgICAgICAg
ICAgICAgICBjdXJyZW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAgICBpbnNlcnRpb25Q
b2ludCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoaW5zZXJ0
aW9uUG9pbnQpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgaWYgKE5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGVGb3JEaXN0cmli
dXRpb24oY3VycmVudCkpIHsKKyAgICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0
ZWRUbyA9IHBhcmVudC0+aXNTaGFkb3dSb290KCkgPyB0b1NoYWRvd1Jvb3QocGFyZW50KS0+YXNz
aWduZWRUbygpIDogMCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBpbnNlcnRlZFRvOwor
ICAgICAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAg
ICAgICByZXN1bHRzLmFwcGVuZChpbnNlcnRpb25Qb2ludCk7CisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm47CisgICAg
fQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBJbnNlcnRpb25Qb2lu
dF9oCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZmQ3OGY4MDc2NWJkOGY4OGFkYjdkOTQzMGM0N2YzOThkZjY0OTg4YS4uZmYz
NWY2MDk4OTA2YWMyNTdmNGRiNGU5NDUyYjU5YjJmZjYyNTAxZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDEyLTExLTA3ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbU2hhZG93IERPTV0gSW1wbGVtZW50cyBhIC9zZWxlY3QvIHJlZmVyZW5jZSBjb21iaW5h
dG9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIx
NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZh
c3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmlu
YXRvci1uZXN0ZWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hh
ZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci1uZXN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci1zZWxlY3Rv
ci1saXN0LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9z
ZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3Itc2VsZWN0b3ItbGlzdC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLmh0bWw6
IEFkZGVkLgorCiAyMDEyLTExLTI4ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBOb2RlOjpjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiByZXR1cm5zIHdyb25nIHZh
bHVlIGZvciBhIG5vZGUgaW4gdGhlIGRpZmZlcmVudCBzaGFkb3cgdHJlZS4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3It
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJl
bmNlLWNvbWJpbmF0b3ItZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTQ5NTliODYyNDAyOTI1
ZTA3ZWU4NmY1YjgyYWQ1MGMxMGQ3ZGEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci1leHBlY3RlZC5odG1s
CkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYg
aWQ9InNhbmRib3giPgorICA8ZGl2PgorICAgIDxkaXY+c2hhZG93IGNoaWxkPC9kaXY+CisgICAg
PGRpdj4KKyAgICAgIDxkaXY+CisgICAgICAgIDxkaXY+CisgICAgICAgICAgPGRpdiBzdHlsZT0i
Y29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgICAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBn
cmVlbiI+Z3JlZW48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rp
dj4KKyAgICA8ZGl2IHN0eWxlPSJjb2xvcjogYmx1ZSI+Ymx1ZTwvZGl2PgorICAgIDxkaXYgc3R5
bGU9ImNvbG9yOiByZWQiPnJlZDwvZGl2PgorICA8L2Rpdj4KKyAgPGRpdj4KKyAgICA8ZGl2Pgor
ICAgICAgPGRpdj4KKyAgICAgICAgPGRpdj5TdHlsZSBzaG91bGQgbm90IGJlIGFwcGxpZWQuPC9k
aXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5j
ZS1jb21iaW5hdG9yLW5lc3RlZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci1uZXN0ZWQtZXhwZWN0ZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNTE4MzQ0MmEwNzZjN2Y4MWE5YzU0MjEzMWU3OWZiNzc2ZjAxMWNjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVu
Y2UtY29tYmluYXRvci1uZXN0ZWQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIwIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBp
ZD0iaG9zdCI+CisgICAgPGRpdiBpZD0ibmVzdGVkLWhvc3QiPgorICAgICAgdGV4dDEKKyAgICAg
IDxkaXY+CisgICAgICAgIHRleHQyCisgICAgICAgIDxkaXY+CisgICAgICAgICAgdGV4dDMKKyAg
ICAgICAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAgICAgICAg
PGRpdj5ub3JtYWw8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rp
dj4KKyAgPC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItbmVzdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21i
aW5hdG9yLW5lc3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlYjRmZTQxZjkzMDA3MzY4ZmYxNDk0N2Fj
NzQ1NDlhY2M4YWRjZjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLW5lc3RlZC5odG1sCkBAIC0wLDAgKzEs
MzIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnZGl2IGNvbnRl
bnQgL3NlbGVjdC8gZGl2IGNvbnRlbnQgL3NlbGVjdC8gZGl2LmdyZWVuIHsgY29sb3I6IGdyZWVu
OyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcp
Oworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9z
dCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ25lc3RlZC1ob3N0J30sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCd0ZXh0MScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3RleHQyJyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3Nl
bGVjdCc6ICdkaXYnfSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHsnY2xhc3MnOiAnZ3JlZW4nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3RleHQzJyksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHt9KSkpKSwKKyAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2dyZWVuJ30sCisgICAgICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSksCisgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3Qt
cmVmZXJlbmNlLWNvbWJpbmF0b3Itc2VsZWN0b3ItbGlzdC1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci1zZWxlY3Rv
ci1saXN0LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDUyMmM3MjI1OTY1MDgyYzY1NGE0YzRk
ZTYyNGU0MWE4YTA0NGQzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3Itc2VsZWN0b3ItbGlzdC1leHBlY3Rl
ZC5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4K
KzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2PgorICAgIDxkaXYgaWQ9Imhvc3QiPgorICAgICAg
PGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjE8L2Rpdj4KKyAgICAgIDxkaXYgc3R5bGU9
ImNvbG9yOiBncmVlbiI+Z3JlZW4yPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdj5ub3JtYWw8
L2Rpdj4KKyAgPC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3Itc2Vs
ZWN0b3ItbGlzdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZl
cmVuY2UtY29tYmluYXRvci1zZWxlY3Rvci1saXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJjOWQ2NTZi
YTY3YmNjMDBlYjkyYmNhZDhiMjBiOWUxYjdmZjY5ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3Itc2VsZWN0
b3ItbGlzdC5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBz
aGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHls
ZS5pbm5lckhUTUwgPSAnY29udGVudCAvc2VsZWN0LyBkaXYsIGRpdi5oZWxsbyB7IGNvbG9yOiBn
cmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRi
b3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdk
aXYnLCB7J2NsYXNzJzogJ2hlbGxvJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbjEnKSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jywge30pKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuMicpKSksCisgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdoZWxsbyd9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpKSkpOworCis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3IuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
MzM3NjJkMjE3MzhhOTExN2NhMjk5NDViNDMwZThhZTdlZTdkMTJmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRv
ci5odG1sCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dT
dHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5l
ckhUTUwgPSAnZGl2IGNvbnRlbnQgL3NlbGVjdC8gZGl2IGRpdiB7IGNvbG9yOiBncmVlbjsgfScK
KyAgICArICcgI3NoYWRvdy1jb250ZW50IC9zZWxlY3QvIGRpdi5ibHVlIHsgY29sb3I6IGJsdWU7
IH0nCisgICAgKyAnICNzaGFkb3ctY29udGVudCAvc2VsZWN0LyBkaXYucmVkIHsgY29sb3I6IHJl
ZDsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gn
KTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hv
c3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAg
IHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnc2hhZG93
IGNoaWxkJykpLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6
ICdkaXYuZ3JlZW4nfSkpKSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcs
IHsnaWQnOiAnc2hhZG93LWNvbnRlbnQnLCAnc2VsZWN0JzogJ2Rpdid9KSksCisgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdncmVlbid9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSksCisgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSksCisgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdibHVlJ30sCisgICAgICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnYmx1ZScpKSwKKyAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ3JlZCd9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3JlZCcpKSkpOworc2FuZGJveC5hcHBlbmRDaGls
ZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnb3RoZXItaG9zdCd9LAorICAgICAgICAg
ICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7
fSkpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1N0eWxlIHNob3VsZCBub3QgYmUgYXBw
bGllZC4nKSkpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176878</attachid>
            <date>2012-11-29 18:23:18 -0800</date>
            <delta_ts>2012-11-29 19:51:08 -0800</delta_ts>
            <desc>Fix a mac build.</desc>
            <filename>bug-82169-20121130112050.patch</filename>
            <type>text/plain</type>
            <size>35487</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiZWYxMzMzZTE1MjZkMGUwM2M3MDllNzRjYzczZDZmNTJhYmE5YTBmLi5h
YjA1MTUwY2NmMTgyZTliMTE4MTEwOGYzNzgzN2M0ZWRiOTdhMThiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsODcgQEAKKzIwMTItMTAtMjMgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBJbXBsZW1lbnRzIGEgL3NlbGVjdC8gcmVmZXJlbmNl
IGNvbWJpbmF0b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MjE2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudHMgYSAnc2VsZWN0JyByZWZlcmVuY2UgY29tYmluYXRvciBiZWhpbmQgYSBT
SEFET1dfRE9NIGZsYWcuCisgICAgICAgIFNlZSB0aGUgU2VsZWN0b3JzIExldmVsIDQgc3BlY2lm
aWNhdGlvbiBhbmQgdGhlIFNoYWRvdyBET00gc3BlY2lmaWNhdGlvbiBmb3IgdGhlIGRldGFpbC4K
KworICAgICAgICBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9zZWxlY3RvcnM0LyNpZHJlZi1jb21i
aW5hdG9ycworICAgICAgICBodHRwOi8vZHZjcy53My5vcmcvaGcvd2ViY29tcG9uZW50cy9yYXct
ZmlsZS90aXAvc3BlYy9zaGFkb3cvaW5kZXguaHRtbCNzZWxlY3Rpbmctbm9kZXMtZGlzdHJpYnV0
ZWQtdG8taW5zZXJ0aW9uLXBvaW50cworCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBh
IHNlbGVjdCByZWZlcmVuY2UgY29tYmluYXRvciBhcyB0aGUgZmlyc3QKKyAgICAgICAgcmVmZXJl
bmNlIGNvbWJpbmF0b3IgaW1wbGVtZW50ZWQgaW4gV2ViS2l0LiAgU2luY2UgV2ViS2l0IGhhcyBu
b3QKKyAgICAgICAgc3VwcG9ydGVkIHJlZmVyZW5jZSBjb21iaW5hdG9ycyBzbyBmYXIsIENTUyBn
cmFtbWVyIGFuZCBwYXJzZXIgYXJlCisgICAgICAgIHVwZGF0ZWQgdG8gc3VwcG9ydCB0aGUgbmV3
IHN5bnRheCB1c2VkIGluIFNlbGVjdG9yIExldmVsNCdzCisgICAgICAgIHJlZmVyZW5jZSBjb21i
aW5hdG9ycy4KKworICAgICAgICBBIHNlbGVjdCByZWZlcmVuY2UgY29tYmluYXRvciBpcyB0aGUg
Zmlyc3QgQ1NTIHJ1bGUgd2hpY2ggY3Jvc3NlcworICAgICAgICB0aGUgc2hhZG93IGJvdW5kYXJ5
IGZyb20gYSBzaGFkb3cgdHJlZSB0byB0aGUgdHJlZSBvZiBpdHMgc2hhZG93CisgICAgICAgIGhv
c3QuIFRoYXQgbWVhbnMgYSBzZWxlY3QgcmVmZXJlbmNlIGNvbWJpbmF0b3IgaXMgZGVmaW5lZCBp
bgorICAgICAgICBzaGFkb3cgdHJlZSwgYnV0IHRoZSBub2RlIHdoaWNoIGlzIG1hdGNoZWQgaW4g
dGhlIHJ1bGUgaXMgb3V0c2lkZQorICAgICAgICBvZiB0aGUgc2hhZG93IHRyZWUuCisKKyAgICAg
ICAgU28gd2UgY2Fubm90IHByZWRpY3QgYSBzY29wZSB3aGVyZSB0aGUgbWF0Y2hlZCBub2RlIHdp
bGwgYmUgYmVmb3JlaGFuZC4KKyAgICAgICAgQ3VycmVudCBDU1MgaW1wbGVtZW50YXRpb24gYXNz
dW1lcyBldmVyeSBmaW5hbCB0YXJnZXQgaXMgYXBwbGllZCBpbiBjdXJyZW50IHNjb3BlLgorCisg
ICAgICAgIFRvIG92ZXJjb21lIHRoaXMgaXNzdWUsIEkgdXBkYXRlZCBTdHlsZVJlc29sdmVyIHNv
IHRoYXQgaXQgaGFzCisgICAgICAgIFNlbGVjdFJlZmVyZWNlQ29tYmluYXRvclJ1bGVTZXRNYXAu
IFRoZSBSdWxlU2V0TWFwIGlzIHVzZWQgdG8ga2VlcAorICAgICAgICB0cmFjayBvZiBSdWxlU2V0
IG1hcHBlZCBieSBhIHNjb3BlIHdoZXJlIGEgc2VsZWN0IHJlZmVyZW5jZQorICAgICAgICBjb21i
aW5hdG9yIGlzIG9yaWdpbmFsbHkgZGVmaW5lZC4gVGhlIHNjb3BlIGlzIHVzZWQgdG8gY2hlY2sK
KyAgICAgICAgd2hldGhlciB0aGUgbGFzdCBlbGVtZW50IG1hdGNoZWQgYnkgU2VsZWN0b3JDaGVj
a2VyIGV4aXN0cyBpbiB0aGUKKyAgICAgICAgc2NvcGUgd2hlcmUgdGhlIHJ1bGUgaXMgb3JpZ2lu
YWxseSBkZWZpbmVkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJl
ZmVyZW5jZS1jb21iaW5hdG9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9z
ZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItbmVzdGVkLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3Itc2VsZWN0b3ItbGlzdC5o
dG1sCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOgorICAgICAgICAqIGNzcy9DU1NQ
YXJzZXJWYWx1ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpzZXRS
ZWZlcmVuY2UpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yOjpzZXRSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTZWxlY3Rvcjo6UmFyZURhdGE6OlJhcmVEYXRhKToKKyAgICAgICAgKiBjc3MvQ1NT
U2VsZWN0b3IuaDoKKyAgICAgICAgKENTU1NlbGVjdG9yKToKKyAgICAgICAgKFJhcmVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpyZWZlcmVuY2UpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6aXNSZWZlcmVuY2VDb21iaW5h
dG9yKToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoU2VsZWN0b3JIYXNTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdG9ySGFzU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvcjo6b3Bl
cmF0b3IoKSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxpc3Q6Omhhc1NlbGVjdFJl
ZmVyZW5jZUNvbWJpbmF0b3JBdCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yTGlzdC5oOgor
ICAgICAgICAoQ1NTU2VsZWN0b3JMaXN0KToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldCk6CisgICAgICAgICog
Y3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNr
ZXI6OmNvbGxlY3RJZGVudGlmaWVySGFzaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcik6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29u
dGV4dDo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQpOgorICAgICAgICAoU2VsZWN0b3JDaGVja2lu
Z0NvbnRleHQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnJlc2V0QXV0aG9yU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVSZXNvbHZlcjo6YWRkU3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bWF0Y2hTZWxlY3RSZWZlcmVuY2VDb21iaW5h
dG9yUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JS
dWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdS
dWxlc0Zvckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y2hlY2tTZWxl
Y3Rvcik6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKFN0eWxlUmVz
b2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6TWF0Y2hPcHRpb25zOjpN
YXRjaE9wdGlvbnMpOgorICAgICAgICAoTWF0Y2hPcHRpb25zKToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpjb2xsZWN0QWxsTWlkcG9pbnRJbnNlcnRpb25Qb2ludHMpOgorCiAyMDEyLTExLTI4ICBI
YXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb2RlOjpjb21wYXJl
RG9jdW1lbnRQb3NpdGlvbiByZXR1cm5zIHdyb25nIHZhbHVlIGZvciBhIG5vZGUgaW4gdGhlIGRp
ZmZlcmVudCBzaGFkb3cgdHJlZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFtbWFyLnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCmluZGV4IDIx
YjAxNjEzNWJhNThlNGUyMDRlZjc2OWExOTdmMGI4NzE0YjZlOTQuLjhjYTcxNzEzMTc5ODg2MmFh
ZDU0ZmE5ZDQyN2EwYTUxY2ZkMTcwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgpA
QCAtMjg5LDYgKzI4OSw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IGNzc3l5ZXJyb3Iodm9pZCosIGNv
bnN0IGNoYXIqKQogCiAldHlwZSA8c3RyaW5nPiBlbGVtZW50X25hbWUKICV0eXBlIDxzdHJpbmc+
IGF0dHJfbmFtZQorI2lmIEVOQUJMRV9TSEFET1dfRE9NCisldHlwZSA8c3RyaW5nPiByZWZlcmVu
Y2VfY29tYmluYXRvcgorI2VuZGlmCiAKICUlCiAKQEAgLTEwMDEsNiArMTAwNCwxNyBAQCBjb21i
aW5hdG9yOgogICB8ICc+JyBtYXliZV9zcGFjZSB7ICQkID0gQ1NTU2VsZWN0b3I6OkNoaWxkOyB9
CiAgIDsKIAorI2lmIEVOQUJMRV9TSEFET1dfRE9NCityZWZlcmVuY2VfY29tYmluYXRvcjoKKyAg
Jy8nIElERU5UICcvJyBtYXliZV9zcGFjZSB7CisgICAgICAgIENTU1BhcnNlclN0cmluZyYgc3Ry
ID0gJDI7CisgICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5pc0hUTUxEb2N1bWVudCkKKyAg
ICAgICAgICAgIHN0ci5sb3dlcigpOworICAgICAgICAkJCA9IHN0cjsKKyAgfQorICA7CisjZW5k
aWYKKwogbWF5YmVfdW5hcnlfb3BlcmF0b3I6CiAgICAgdW5hcnlfb3BlcmF0b3IgeyAkJCA9ICQx
OyB9CiAgICAgfCB7ICQkID0gMTsgfQpAQCAtMTA5Niw2ICsxMTEwLDIyIEBAIHNlbGVjdG9yOgog
ICAgICAgICAgICAgZW5kLT5zZXRUYWdIaXN0b3J5KHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0
b3IoJDEpKTsKICAgICAgICAgfQogICAgIH0KKyNpZiBFTkFCTEVfU0hBRE9XX0RPTQorICAgIHwg
c2VsZWN0b3IgcmVmZXJlbmNlX2NvbWJpbmF0b3Igc2ltcGxlX3NlbGVjdG9yIHsKKyAgICAgICAg
ZnByaW50ZihzdGRlcnIsICJSZWZlcmVuY2UgQ29tYmluYXRvciFcbiIpOworICAgICAgICAkJCA9
ICQzOworICAgICAgICBpZiAoISQxKQorICAgICAgICAgICAgJCQgPSAwOworICAgICAgICBlbHNl
IGlmICgkJCkgeworICAgICAgICAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGVuZCA9ICQkOworICAg
ICAgICAgICAgd2hpbGUgKGVuZC0+dGFnSGlzdG9yeSgpKQorICAgICAgICAgICAgICAgIGVuZCA9
IGVuZC0+dGFnSGlzdG9yeSgpOworICAgICAgICAgICAgZW5kLT5zZXRSZWxhdGlvbihDU1NTZWxl
Y3Rvcjo6UmVmZXJlbmNlKTsKKyAgICAgICAgICAgIGVuZC0+c2V0UmVmZXJlbmNlKFF1YWxpZmll
ZE5hbWUobnVsbEF0b20sICQyLCBudWxsQXRvbSkpOworICAgICAgICAgICAgZW5kLT5zZXRUYWdI
aXN0b3J5KHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKKyAgICAgICAgfQorICAg
IH0KKyNlbmRpZgogICAgIHwgc2VsZWN0b3IgZXJyb3IgewogICAgICAgICAkJCA9IDA7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCmluZGV4IDEzMDFiMWNlMGUxMTM3MjNj
Y2Y4MjE2MjhlZTA1ZTJlMzEwMjM2N2IuLmUyM2RlZDUwZTI3OWNjMWQ5ZjE2MWUwOTY2NGQ0NGVk
OGE3OTY3MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKQEAgLTE4Myw2ICsx
ODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNYXRjaChDU1NTZWxlY3Rvcjo6TWF0Y2ggdmFs
dWUpIHsgbV9zZWxlY3Rvci0+bV9tYXRjaCA9IHZhbHVlOyB9CiAgICAgdm9pZCBzZXRSZWxhdGlv
bihDU1NTZWxlY3Rvcjo6UmVsYXRpb24gdmFsdWUpIHsgbV9zZWxlY3Rvci0+bV9yZWxhdGlvbiA9
IHZhbHVlOyB9CiAgICAgdm9pZCBzZXRGb3JQYWdlKCkgeyBtX3NlbGVjdG9yLT5zZXRGb3JQYWdl
KCk7IH0KKyAgICB2b2lkIHNldFJlZmVyZW5jZShjb25zdCBRdWFsaWZpZWROYW1lJiB2YWx1ZSkg
eyBtX3NlbGVjdG9yLT5zZXRSZWZlcmVuY2UodmFsdWUpOyB9CiAKICAgICB2b2lkIGFkb3B0U2Vs
ZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiYgc2VsZWN0b3JW
ZWN0b3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCBjOWRkMTkzN2E1OGU2
ZjFjODc3YzcxY2M5ODZkNmVkMDZmNTM0NzUwLi43NjA2YmYwNDk1NzUwNWNlMjg1MGZkNGRjYTcy
YTgzNTM0MDNjNzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKQEAgLTY1NCw2ICs2
NTQsOCBAQCBTdHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCgpIGNvbnN0CiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2hh
ZG93RGVzY2VuZGFudDoKICAgICAgICAgICAgIHJldHVybiB0YWdIaXN0b3J5VGV4dCArIHN0ci50
b1N0cmluZygpOworICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpSZWZlcmVuY2U6CisgICAgICAg
ICAgICByZXR1cm4gdGFnSGlzdG9yeVRleHQgKyAiIC8iICsgY3MtPnJlZmVyZW5jZSgpLnRvU3Ry
aW5nKCkgKyAiLyAiICsgIHN0ci50b1N0cmluZygpOwogICAgICAgICB9CiAgICAgfQogCkBAIC02
NjYsNiArNjY4LDE3IEBAIHZvaWQgQ1NTU2VsZWN0b3I6OnNldEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB2YWx1ZSkKICAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9hdHRyaWJ1dGUgPSB2
YWx1ZTsKIH0KIAordm9pZCBDU1NTZWxlY3Rvcjo6c2V0UmVmZXJlbmNlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHZhbHVlKQoreworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGNyZWF0ZVJhcmVE
YXRhKCk7CisgICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fcmVmZXJlbmNlID0gdmFsdWU7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisj
ZW5kaWYKK30KKwogdm9pZCBDU1NTZWxlY3Rvcjo6c2V0QXJndW1lbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICBjcmVhdGVSYXJlRGF0YSgpOwpAQCAtNzI0LDYgKzczNyw5IEBA
IENTU1NlbGVjdG9yOjpSYXJlRGF0YTo6UmFyZURhdGEoUGFzc1JlZlB0cjxBdG9taWNTdHJpbmdJ
bXBsPiB2YWx1ZSkKICAgICAsIG1fYSgwKQogICAgICwgbV9iKDApCiAgICAgLCBtX2F0dHJpYnV0
ZShhbnlRTmFtZSgpKQorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICwgbV9yZWZlcmVuY2Uo
YW55UU5hbWUoKSkKKyNlbmRpZgogICAgICwgbV9hcmd1bWVudChudWxsQXRvbSkKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yLmgKaW5kZXggYWVlNTA3NGQ3NWY3YmIzZjZlNDEyOTVkZDFiYWFj
MDk3NjMwODQ1Zi4uNWMyZWVjNjc2NGVkMjJjMjQzYTU3MmNjODJmOWUyYmViOWNkNjRmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTc2LDcgKzc2LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAgICAgRGlyZWN0QWRqYWNlbnQsCiAgICAgICAgICAgICBJbmRpcmVjdEFk
amFjZW50LAogICAgICAgICAgICAgU3ViU2VsZWN0b3IsCi0gICAgICAgICAgICBTaGFkb3dEZXNj
ZW5kYW50CisgICAgICAgICAgICBTaGFkb3dEZXNjZW5kYW50LAorICAgICAgICAgICAgUmVmZXJl
bmNlCiAgICAgICAgIH07CiAKICAgICAgICAgZW51bSBQc2V1ZG9UeXBlIHsKQEAgLTE5OSwxMiAr
MjAwLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gRklYTUU6IFBlcmhhcHMg
Y2FsbCBzaXRlcyBjb3VsZCBiZSBjaGFuZ2VkIHRvIGFjY2VwdCBBdG9taWNTdHJpbmdJbXBsPwog
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gKnJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgQXRvbWljU3RyaW5nKj4obV9oYXNSYXJlRGF0YSA/ICZtX2RhdGEu
bV9yYXJlRGF0YS0+bV92YWx1ZSA6ICZtX2RhdGEubV92YWx1ZSk7IH0KICAgICAgICAgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHJlZmVyZW5jZSgpIGNvbnN0OwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFy
Z3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9oYXNSYXJlRGF0YSA/IG1fZGF0YS5tX3JhcmVEYXRh
LT5tX2FyZ3VtZW50IDogbnVsbEF0b207IH0KICAgICAgICAgQ1NTU2VsZWN0b3JMaXN0KiBzZWxl
Y3Rvckxpc3QoKSBjb25zdCB7IHJldHVybiBtX2hhc1JhcmVEYXRhID8gbV9kYXRhLm1fcmFyZURh
dGEtPm1fc2VsZWN0b3JMaXN0LmdldCgpIDogMDsgfQogCiAgICAgICAgIHZvaWQgc2V0VGFnKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHZhbHVlKSB7IG1fdGFnID0gdmFsdWU7IH0KICAgICAgICAgdm9p
ZCBzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICAgICAgdm9pZCBzZXRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgICAgICB2b2lkIHNldFJlZmVyZW5jZShjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAgICAgICAgIHZvaWQgc2V0QXJndW1lbnQoY29uc3QgQXRvbWlj
U3RyaW5nJik7CiAgICAgICAgIHZvaWQgc2V0U2VsZWN0b3JMaXN0KFBhc3NPd25QdHI8Q1NTU2Vs
ZWN0b3JMaXN0Pik7CiAKQEAgLTIxNiw2ICsyMTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGJvb2wgaXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkgY29uc3Q7CiAgICAgICAgIGJvb2wg
aXNTaWJsaW5nU2VsZWN0b3IoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc0F0dHJpYnV0ZVNlbGVj
dG9yKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNSZWZlcmVuY2VDb21iaW5hdG9yKCkgY29uc3Q7
CiAKICAgICAgICAgUmVsYXRpb24gcmVsYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxSZWxhdGlvbj4obV9yZWxhdGlvbik7IH0KIApAQCAtMjU4LDYgKzI2Miw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgICAgIGludCBtX2E7IC8vIFVzZWQgZm9yIDpudGgtKgogICAg
ICAgICAgICAgaW50IG1fYjsgLy8gVXNlZCBmb3IgOm50aC0qCiAgICAgICAgICAgICBRdWFsaWZp
ZWROYW1lIG1fYXR0cmlidXRlOyAvLyB1c2VkIGZvciBhdHRyaWJ1dGUgc2VsZWN0b3IKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgICAgIFF1YWxpZmllZE5hbWUgbV9yZWZlcmVuY2U7
IC8vIHVzZWQgZm9yIHJlZmVyZW5jZSBjb21iaW5hdG9yCisjZW5kaWYKICAgICAgICAgICAgIEF0
b21pY1N0cmluZyBtX2FyZ3VtZW50OyAvLyBVc2VkIGZvciA6Y29udGFpbnMsIDpsYW5nIGFuZCA6
bnRoLSoKICAgICAgICAgICAgIE93blB0cjxDU1NTZWxlY3Rvckxpc3Q+IG1fc2VsZWN0b3JMaXN0
OyAvLyBVc2VkIGZvciA6LXdlYmtpdC1hbnkgYW5kIDpub3QKICAgICAgICAgCkBAIC0yODIsNiAr
Mjg5LDE3IEBAIGlubGluZSBjb25zdCBRdWFsaWZpZWROYW1lJiBDU1NTZWxlY3Rvcjo6YXR0cmli
dXRlKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhLm1fcmFyZURhdGEtPm1fYXR0cmlidXRlOwog
fQogCitpbmxpbmUgY29uc3QgUXVhbGlmaWVkTmFtZSYgQ1NTU2VsZWN0b3I6OnJlZmVyZW5jZSgp
IGNvbnN0Cit7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgQVNTRVJUKGlzUmVmZXJlbmNl
Q29tYmluYXRvcigpKTsKKyAgICBBU1NFUlQobV9oYXNSYXJlRGF0YSk7CisgICAgcmV0dXJuIG1f
ZGF0YS5tX3JhcmVEYXRhLT5tX3JlZmVyZW5jZTsKKyNlbHNlCisgICAgcmV0dXJuIG51bGxRTmFt
ZSgpOworI2VuZGlmCit9CisKIGlubGluZSBib29sIENTU1NlbGVjdG9yOjptYXRjaGVzUHNldWRv
RWxlbWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fcHNldWRvVHlwZSA9PSBQc2V1ZG9Vbmtub3du
KQpAQCAtMzI4LDYgKzM0NiwxMSBAQCBpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6aXNBdHRyaWJ1
dGVTZWxlY3RvcigpIGNvbnN0CiAgICAgICAgIHx8IG1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OkVu
ZDsKIH0KIAoraW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6OmlzUmVmZXJlbmNlQ29tYmluYXRvcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6OlJlZmVyZW5j
ZTsKK30KKwogaW5saW5lIHZvaWQgQ1NTU2VsZWN0b3I6OnNldFZhbHVlKGNvbnN0IEF0b21pY1N0
cmluZyYgdmFsdWUpCiB7CiAgICAgLy8gTmVlZCB0byBkbyByZWYgY291bnRpbmcgbWFudWFsbHkg
Zm9yIHRoZSB1bmlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rv
ckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKaW5kZXgg
NDMxMzZkMWM5MDFjNjM0MWJhY2JlZjgzOTQ5ZGY5NGU2MGYxYzM2Yy4uNjA3NGUyYTJiMjI4NzE4
ZTdmMDM4M2JiMjE2ZTc5Zjg2YTQ3ZmJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
TGlzdC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIK
IAogI2luY2x1ZGUgIkNTU1BhcnNlclZhbHVlcy5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgog
I2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTIxMSw2ICsyMTIsMjAgQEAgYm9vbCBDU1NTZWxl
Y3Rvckxpc3Q6Omhhc0ludmFsaWRTZWxlY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIGZvckVhY2hT
ZWxlY3RvcihmdW5jdG9yLCB0aGlzKTsKIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorY2xh
c3MgU2VsZWN0b3JIYXNTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yIHsKK3B1YmxpYzoKKyAgICBi
b29sIG9wZXJhdG9yKCkoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHNlbGVjdG9yLT5pc1JlZmVyZW5jZUNvbWJpbmF0b3IoKSAmJiBzZWxlY3Rvci0+cmVmZXJl
bmNlKCkgPT0gSFRNTE5hbWVzOjpzZWxlY3RBdHRyOworICAgIH0KK307CiAKK2Jvb2wgQ1NTU2Vs
ZWN0b3JMaXN0OjpoYXNTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yQXQoc2l6ZV90IGluZGV4KSBj
b25zdAoreworICAgIFNlbGVjdG9ySGFzU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvciBmdW5jdG9y
OworICAgIHJldHVybiBmb3JFYWNoVGFnU2VsZWN0b3IoZnVuY3Rvciwgc2VsZWN0b3JBdChpbmRl
eCkpOworfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvckxpc3QuaAppbmRleCA0ZmNmZWUyZmFhNDE4MmQ3YTlhYjA1NWJjY2U1MTlmZTc0
ZTIyNzE1Li4wOTRlMWRhODMzMWQ0YjcyYzM5YTY4ZWMxZWFkOGI0ZDE0ZTBiMGM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCkBAIC02MCw2ICs2MCwxMCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBzZWxlY3RvcnNOZWVkTmFtZXNwYWNlUmVzb2x1dGlvbigpOwogICAgIGJvb2wgaGFz
SW52YWxpZFNlbGVjdG9yKCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBi
b29sIGhhc1NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JBdChzaXplX3QgaW5kZXgpIGNvbnN0Owor
I2VuZGlmCisKICAgICBTdHJpbmcgc2VsZWN0b3JzVGV4dCgpIGNvbnN0OwogCiAgICAgdm9pZCBy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNl
dC5jcHAKaW5kZXggOWE3OGMwZmY5MDM4OWM5MGM0NGRhNWE2YjlmNWZmN2FlMjBjNmUzMS4uZWFm
YTZhNTBmODBjNDA0ZWY3OWM5NDQ2MzcyYmE5ZjIxMTk4YWIxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0
LmNwcApAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQo
U3R5bGVTaGVldENvbnRlbnRzKiBzaGVldCwgY29uc3QgTWVkaWFRdWVyeUV2YWx1CiAKICAgICAg
ICAgQVNTRVJUKCFydWxlLT5pc0ltcG9ydFJ1bGUoKSk7CiAgICAgICAgIGlmIChydWxlLT5pc1N0
eWxlUnVsZSgpKQotICAgICAgICAgICAgYWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0PFN0eWxlUnVs
ZSo+KHJ1bGUpLCBhZGRSdWxlRmxhZ3MpOworICAgICAgICAgICAgcmVzb2x2ZXItPmFkZFN0eWxl
UnVsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihydWxlKSwgY29uc3RfY2FzdDxDb250YWluZXJO
b2RlKj4oc2NvcGUpLCB0aGlzLCBhZGRSdWxlRmxhZ3MpOwogICAgICAgICBlbHNlIGlmIChydWxl
LT5pc1BhZ2VSdWxlKCkpCiAgICAgICAgICAgICBhZGRQYWdlUnVsZShzdGF0aWNfY2FzdDxTdHls
ZVJ1bGVQYWdlKj4ocnVsZSkpOwogICAgICAgICBlbHNlIGlmIChydWxlLT5pc01lZGlhUnVsZSgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IGQ0ODQxY2EwMmJh
ZGJhNmExMWZiY2Y5ZjhkNzE0ODA4ZjNlYThlZmMuLjFjYzgwZjZhY2JkMTA0NjZiOTQ1MTA1MmYw
YzNlNjMyZDA0ZGZmNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNo
ZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBA
IC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MUHJvZ3Jlc3NFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgor
I2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgpAQCAtMTk1LDYgKzE5Niw3IEBAIHZvaWQgU2VsZWN0b3JDaGVja2VyOjpjb2xsZWN0SWRlbnRp
Zmllckhhc2hlcyhjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIHVuc2lnCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudDoKICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6Q2hpbGQ6CisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlJlZmVy
ZW5jZToKICAgICAgICAgICAgIHNraXBPdmVyU3Vic2VsZWN0b3JzID0gZmFsc2U7CiAgICAgICAg
ICAgICBjb2xsZWN0RGVzY2VuZGFudFNlbGVjdG9ySWRlbnRpZmllckhhc2hlcyhzZWxlY3Rvciwg
aGFzaCwgZW5kKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDc1LDggKzQ3NywxNSBAQCBTZWxl
Y3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9y
KGNvbnN0IFNlbGVjdG9yQ2hlYwogCiAgICAgLy8gUHJlcGFyZSBuZXh0IHNlbGVjdG9yCiAgICAg
Q1NTU2VsZWN0b3IqIGhpc3RvcnlTZWxlY3RvciA9IGNvbnRleHQuc2VsZWN0b3ItPnRhZ0hpc3Rv
cnkoKTsKLSAgICBpZiAoIWhpc3RvcnlTZWxlY3RvcikKKyAgICBpZiAoIWhpc3RvcnlTZWxlY3Rv
cikgeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICBpZiAoY29udGV4dC5zY29wZU9m
TGFzdEVsZW1lbnQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBDaGVjayB0aGUgc2NvcGUgbW9y
ZSBzdHJpY3RseS4KKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnNjb3BlT2ZMYXN0RWxlbWVu
dC0+dHJlZVNjb3BlKCkgPT0gY29udGV4dC5lbGVtZW50LT50cmVlU2NvcGUoKSA/IFNlbGVjdG9y
TWF0Y2hlcyA6IFNlbGVjdG9yRmFpbHNMb2NhbGx5OworICAgICAgICB9CisjZW5kaWYKICAgICAg
ICAgcmV0dXJuIFNlbGVjdG9yTWF0Y2hlczsKKyAgICB9CiAKICAgICBTZWxlY3RvckNoZWNraW5n
Q29udGV4dCBuZXh0Q29udGV4dChjb250ZXh0KTsKICAgICBuZXh0Q29udGV4dC5zZWxlY3RvciA9
IGhpc3RvcnlTZWxlY3RvcjsKQEAgLTU3OCw2ICs1ODcsMjUgQEAgU2VsZWN0b3JDaGVja2VyOjpT
ZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3Rv
ckNoZWMKICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9IDA7CiAg
ICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihuZXh0Q29udGV4dCwgaWdub3JlRHluYW1p
Y1BzZXVkbyk7CiAgICAgICAgIH0KKworICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlJlZmVyZW5jZToK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKGNvbnRleHQuc2VsZWN0b3ItPnJlZmVyZW5jZSgp
ICE9IHNlbGVjdEF0dHIpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21w
bGV0ZWx5OworCisgICAgICAgICAgICBWZWN0b3I8SW5zZXJ0aW9uUG9pbnQqLCA4PiBpbnNlcnRp
b25Qb2ludHM7CisgICAgICAgICAgICBjb2xsZWN0QWxsTWlkcG9pbnRJbnNlcnRpb25Qb2ludHMo
Y29udGV4dC5lbGVtZW50LCBpbnNlcnRpb25Qb2ludHMpOworICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBpbnNlcnRpb25Qb2ludHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAg
ICAgICBuZXh0Q29udGV4dC5lbGVtZW50ID0gaW5zZXJ0aW9uUG9pbnRzW2ldOworICAgICAgICAg
ICAgICAgIG5leHRDb250ZXh0LmlzU3ViU2VsZWN0b3IgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICBuZXh0Q29udGV4dC5lbGVtZW50U3R5bGUgPSAwOworICAgICAgICAgICAgICAgIG5leHRDb250
ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9IDA7CisgICAgICAgICAgICAgICAgU2VsZWN0b3JNYXRj
aCBtYXRjaCA9IGNoZWNrU2VsZWN0b3IobmV4dENvbnRleHQsIGlnbm9yZUR5bmFtaWNQc2V1ZG8p
OworICAgICAgICAgICAgICAgIGlmIChtYXRjaCA9PSBTZWxlY3Rvck1hdGNoZXMgfHwgbWF0Y2gg
PT0gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBt
YXRjaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29t
cGxldGVseTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4IDliZGI2NjliMjQ2ZWU2NDNkNWUy
ZWUyMmI1YTFhMjRlZTA5MThlNmEuLjQ3YjM5MGNlNzlhMTg5NGI1ZDRiZDI5NmIwMzI1YTVmZjY1
MjJiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKQEAgLTY3LDYgKzY3LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgLCBpc1N1YlNlbGVjdG9yKGZhbHNlKQogICAgICAgICAg
ICAgLCBoYXNTY3JvbGxiYXJQc2V1ZG8oZmFsc2UpCiAgICAgICAgICAgICAsIGhhc1NlbGVjdGlv
blBzZXVkbyhmYWxzZSkKKyAgICAgICAgICAgICwgc2NvcGVPZkxhc3RFbGVtZW50KDApCiAgICAg
ICAgIHsgfQogCiAgICAgICAgIENTU1NlbGVjdG9yKiBzZWxlY3RvcjsKQEAgLTc5LDYgKzgwLDcg
QEAgcHVibGljOgogICAgICAgICBib29sIGlzU3ViU2VsZWN0b3I7CiAgICAgICAgIGJvb2wgaGFz
U2Nyb2xsYmFyUHNldWRvOwogICAgICAgICBib29sIGhhc1NlbGVjdGlvblBzZXVkbzsKKyAgICAg
ICAgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGVPZkxhc3RFbGVtZW50OwogICAgIH07CiAKICAg
ICBib29sIGNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgYm9vbCBpc0Zhc3RD
aGVja2FibGVTZWxlY3RvciA9IGZhbHNlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcAppbmRleCA2Yzg0MWU0OThkODc1YTM5YTM3ZjhhZTVjOThjZjRiZmIxYWY3MGZjLi45
MWUxYmEyMjEyMDk2MzZkMTA2MWVlMjQ1MWU3ZWRiNTI3YTI4MTlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0zNjYsNiArMzY2LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVy
OjpyZXNldEF1dGhvclN0eWxlKCkKIHsKICAgICBtX2F1dGhvclN0eWxlID0gUnVsZVNldDo6Y3Jl
YXRlKCk7CiAgICAgbV9hdXRob3JTdHlsZS0+ZGlzYWJsZUF1dG9TaHJpbmtUb0ZpdCgpOworICAg
IG1fc2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVTZXRNYXAuY2xlYXIoKTsKIH0KIAogdm9p
ZCBTdHlsZVJlc29sdmVyOjphcHBlbmRBdXRob3JTdHlsZVNoZWV0cyh1bnNpZ25lZCBmaXJzdE5l
dywgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBzdHlsZVNoZWV0cykKQEAg
LTQ1MCw2ICs0NTEsMzIgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphZGRLZXlmcmFtZVN0eWxlKFBh
c3NSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPiBydWxlKQogICAgIG1fa2V5ZnJhbWVzUnVsZU1h
cC5zZXQocy5pbXBsKCksIHJ1bGUpOwogfQogCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZFN0eWxl
UnVsZShTdHlsZVJ1bGUqIHJ1bGUsIENvbnRhaW5lck5vZGUqIHNjb3BlLCBSdWxlU2V0KiBydWxl
U2V0LCBBZGRSdWxlRmxhZ3MgYWRkUnVsZUZsYWdzKQoreworI2lmIEVOQUJMRShTSEFET1dfRE9N
KQorICAgIGlmICghc2NvcGUpIHsKKyAgICAgICAgcnVsZVNldC0+YWRkU3R5bGVSdWxlKHJ1bGUs
IGFkZFJ1bGVGbGFncyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29uc3QgQ1NTU2Vs
ZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QgPSBydWxlLT5zZWxlY3Rvckxpc3QoKTsKKyAgICBmb3Ig
KHNpemVfdCBzZWxlY3RvckluZGV4ID0gMDsgc2VsZWN0b3JJbmRleCAhPSBub3RGb3VuZDsgc2Vs
ZWN0b3JJbmRleCA9IHNlbGVjdG9yTGlzdC5pbmRleE9mTmV4dFNlbGVjdG9yQWZ0ZXIoc2VsZWN0
b3JJbmRleCkpIHsKKyAgICAgICAgaWYgKHNlbGVjdG9yTGlzdC5oYXNTZWxlY3RSZWZlcmVuY2VD
b21iaW5hdG9yQXQoc2VsZWN0b3JJbmRleCkpIHsKKyAgICAgICAgICAgIGlmIChtX3NlbGVjdFJl
ZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0TWFwLmNvbnRhaW5zKHNjb3BlKSkKKyAgICAgICAgICAg
ICAgICBtX3NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0TWFwLmdldChzY29wZSktPmFk
ZFJ1bGUocnVsZSwgc2VsZWN0b3JJbmRleCwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIE93blB0cjxSdWxlU2V0PiBydWxlU2V0Rm9yU2NvcGUgPSBh
ZG9wdFB0cihuZXcgUnVsZVNldCgpKTsKKyAgICAgICAgICAgICAgICBydWxlU2V0Rm9yU2NvcGUt
PmFkZFJ1bGUocnVsZSwgc2VsZWN0b3JJbmRleCwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAgICAg
ICAgICBtX3NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0TWFwLmFkZChzY29wZSwgcnVs
ZVNldEZvclNjb3BlLnJlbGVhc2UoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgcnVsZVNldC0+YWRkUnVsZShydWxlLCBzZWxlY3RvckluZGV4LCBhZGRSdWxl
RmxhZ3MpOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNjb3BlKTsKKyAgICBydWxl
U2V0LT5hZGRTdHlsZVJ1bGUocnVsZSwgYWRkUnVsZUZsYWdzKTsKKyNlbmRpZgorfQorCiBTdHls
ZVJlc29sdmVyOjp+U3R5bGVSZXNvbHZlcigpCiB7CiAgICAgbV9mb250U2VsZWN0b3ItPmNsZWFy
RG9jdW1lbnQoKTsKQEAgLTc5Myw2ICs4MjAsMTcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRj
aEhvc3RSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQog
I2VuZGlmCiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6
bWF0Y2hTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwg
Ym9vbCBpbmNsdWRlRW1wdHlSdWxlcykKK3sKKyAgICBmb3IgKFNlbGVjdFJlZmVyZW5jZUNvbWJp
bmF0b3JSdWxlU2V0TWFwOjppdGVyYXRvciBpdCA9IG1fc2VsZWN0UmVmZXJlbmNlQ29tYmluYXRv
clJ1bGVTZXRNYXAuYmVnaW4oKTsgaXQgIT0gbV9zZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVs
ZVNldE1hcC5lbmQoKTsgKytpdCkgeworICAgICAgICBNYXRjaE9wdGlvbnMgb3B0aW9ucyhpbmNs
dWRlRW1wdHlSdWxlcywgMCk7CisgICAgICAgIG9wdGlvbnMuc2NvcGVPZkxhc3RFbGVtZW50ID0g
aXQtPmtleTsKKyAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMoaXQtPnZhbHVlLmdldCgpLCBy
ZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVs
ZSwgb3B0aW9ucyk7CisgICAgfQorfQorI2VuZGlmCisKIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0
Y2hBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVz
KQogewogICAgIG1fbWF0Y2hlZFJ1bGVzLmNsZWFyKCk7CkBAIC04MDcsNiArODQ1LDkgQEAgdm9p
ZCBTdHlsZVJlc29sdmVyOjptYXRjaEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJv
b2wgaW5jbHVkZUVtcHR5UnVsZXMKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbiht
X2F1dGhvclN0eWxlLmdldCgpLCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0
LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7CiAKICAgICBtYXRjaFNjb3BlZEF1dGhv
clJ1bGVzKHJlc3VsdCwgaW5jbHVkZUVtcHR5UnVsZXMpOworI2lmIEVOQUJMRShTSEFET1dfRE9N
KQorICAgIG1hdGNoU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVzKHJlc3VsdCwgaW5jbHVk
ZUVtcHR5UnVsZXMpOworI2VuZGlmCiAKICAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMo
cmVzdWx0KTsKIH0KQEAgLTg0Miw3ICs4ODMsMTEgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xs
ZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogcnVsZXMsIGkK
IAogICAgIC8vIEluIHNvbWUgY2FzZXMgd2UgbWF5IGVuZCB1cCBsb29raW5nIHVwIHN0eWxlIGZv
ciByYW5kb20gZWxlbWVudHMgaW4gdGhlIG1pZGRsZSBvZiBhIHJlY3Vyc2l2ZSB0cmVlIHJlc29s
dmUuCiAgICAgLy8gQW5jZXN0b3IgaWRlbnRpZmllciBmaWx0ZXIgd29uJ3QgYmUgdXAtdG8tZGF0
ZSBpbiB0aGF0IGNhc2UgYW5kIHdlIGNhbid0IHVzZSB0aGUgZmFzdCBwYXRoLgorI2lmIEVOQUJM
RShTSEFET1dfRE9NKQorICAgIGJvb2wgY2FuVXNlRmFzdFJlamVjdCA9IG1fY2hlY2tlci5wYXJl
bnRTdGFja0lzQ29uc2lzdGVudChtX3BhcmVudE5vZGUpICYmICFvcHRpb25zLnNjb3BlT2ZMYXN0
RWxlbWVudDsKKyNlbHNlCiAgICAgYm9vbCBjYW5Vc2VGYXN0UmVqZWN0ID0gbV9jaGVja2VyLnBh
cmVudFN0YWNrSXNDb25zaXN0ZW50KG1fcGFyZW50Tm9kZSk7CisjZW5kaWYKIAogICAgIHVuc2ln
bmVkIHNpemUgPSBydWxlcy0+c2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
aXplOyArK2kpIHsKQEAgLTg1Miw3ICs4OTcsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxl
Y3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBydWxlcywgaQog
CiAgICAgICAgIFN0eWxlUnVsZSogcnVsZSA9IHJ1bGVEYXRhLnJ1bGUoKTsKICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbE1hdGNoUnVsZShkb2N1bWVudCgpLCBydWxlKTsKLSAgICAgICAgaWYgKGNoZWNr
U2VsZWN0b3IocnVsZURhdGEsIG9wdGlvbnMuc2NvcGUpKSB7CisgICAgICAgIGlmIChjaGVja1Nl
bGVjdG9yKHJ1bGVEYXRhLCBvcHRpb25zLnNjb3BlLCBvcHRpb25zLnNjb3BlT2ZMYXN0RWxlbWVu
dCkpIHsKICAgICAgICAgICAgIC8vIElmIHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0aWVzIHRvIGFw
cGx5LCB0aGVuIGlnbm9yZSBpdCBpbiB0aGUgbm9uLWRlYnVnIG1vZGUuCiAgICAgICAgICAgICBj
b25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzID0gcnVsZS0+cHJvcGVydGllcygpOwog
ICAgICAgICAgICAgaWYgKCFwcm9wZXJ0aWVzIHx8IChwcm9wZXJ0aWVzLT5pc0VtcHR5KCkgJiYg
IW9wdGlvbnMuaW5jbHVkZUVtcHR5UnVsZXMpKSB7CkBAIC0yMTMzLDcgKzIxNzgsNyBAQCBQYXNz
UmVmUHRyPENTU1J1bGVMaXN0PiBTdHlsZVJlc29sdmVyOjpwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxl
bWVudChFbGVtZW50KiBlLCBQcwogICAgIHJldHVybiBtX3J1bGVMaXN0LnJlbGVhc2UoKTsKIH0K
IAotaW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0
YSYgcnVsZURhdGEsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKQoraW5saW5lIGJvb2wgU3R5
bGVSZXNvbHZlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0
IENvbnRhaW5lck5vZGUqIHNjb3BlLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZU9mTGFzdEVs
ZW1lbnQpCiB7CiAgICAgbV9keW5hbWljUHNldWRvID0gTk9QU0VVRE87CiAKQEAgLTIxNTgsNiAr
MjIwMyw3IEBAIGlubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6OmNoZWNrU2VsZWN0b3IoY29uc3Qg
UnVsZURhdGEmIHJ1bGVEYXRhLCBjb25zdCBDb250YWluCiAgICAgY29udGV4dC5lbGVtZW50U3R5
bGUgPSBzdHlsZSgpOwogICAgIGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlID0gbV9wYXJlbnRO
b2RlID8gbV9wYXJlbnROb2RlLT5yZW5kZXJTdHlsZSgpIDogMDsKICAgICBjb250ZXh0LnNjb3Bl
ID0gc2NvcGU7CisgICAgY29udGV4dC5zY29wZU9mTGFzdEVsZW1lbnQgPSBzY29wZU9mTGFzdEVs
ZW1lbnQ7CiAgICAgY29udGV4dC5wc2V1ZG9TdHlsZSA9IG1fcHNldWRvU3R5bGU7CiAgICAgU2Vs
ZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIG1hdGNoID0gbV9jaGVja2VyLmNoZWNrU2VsZWN0
b3IoY29udGV4dCwgbV9keW5hbWljUHNldWRvKTsKICAgICBpZiAobWF0Y2ggIT0gU2VsZWN0b3JD
aGVja2VyOjpTZWxlY3Rvck1hdGNoZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRl
eCAwNTVkODEzZWRiNTZiMDUwY2I2MTMzNzI0NTQ4NTExZGM2MGZiMjJiLi5jNzhkZTY2ZGRiYzBi
OGIwYmUzN2Q3NTc2ZmU5YmUzZjE1MDQ0MDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJNZWRpYVF1ZXJ5RXhwLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJSdWxlRmVhdHVyZS5oIgorI2luY2x1ZGUgIlJ1
bGVTZXQuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAi
U2VsZWN0b3JDaGVja2VyLmgiCiAjaW5jbHVkZSAiU3R5bGVJbmhlcml0ZWREYXRhLmgiCkBAIC03
NCw3ICs3NSw2IEBAIGNsYXNzIE1lZGlhUXVlcnlFdmFsdWF0b3I7CiBjbGFzcyBOb2RlOwogY2xh
c3MgUmVuZGVyUmVnaW9uOwogY2xhc3MgUnVsZURhdGE7Ci1jbGFzcyBSdWxlU2V0OwogY2xhc3Mg
U2V0dGluZ3M7CiBjbGFzcyBTdGF0aWNDU1NSdWxlTGlzdDsKIGNsYXNzIFN0eWxlQnVpbGRlcjsK
QEAgLTI2MCw2ICsyNjAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZEtleWZyYW1lU3R5bGUo
UGFzc1JlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+KTsKIAorICAgIHZvaWQgYWRkU3R5bGVSdWxl
KFN0eWxlUnVsZSosIENvbnRhaW5lck5vZGUqIHNjb3BlLCBSdWxlU2V0KiwgQWRkUnVsZUZsYWdz
KTsKKwogICAgIGJvb2wgY2hlY2tSZWdpb25TdHlsZShFbGVtZW50KiByZWdpb25FbGVtZW50KTsK
IAogICAgIGJvb2wgdXNlc1NpYmxpbmdSdWxlcygpIGNvbnN0IHsgcmV0dXJuICFtX2ZlYXR1cmVz
LnNpYmxpbmdSdWxlcy5pc0VtcHR5KCk7IH0KQEAgLTMzOCw5ICszNDAsMTEgQEAgcHJpdmF0ZToK
ICAgICB9OwogCiAgICAgc3RydWN0IE1hdGNoT3B0aW9ucyB7Ci0gICAgICAgIE1hdGNoT3B0aW9u
cyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9IDAp
IDogc2NvcGUoc2NvcGUpLCBpbmNsdWRlRW1wdHlSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcykgeyB9
CisgICAgICAgIE1hdGNoT3B0aW9ucyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBjb25zdCBDb250
YWluZXJOb2RlKiBzY29wZSA9IDApCisgICAgICAgICAgICA6IHNjb3BlKHNjb3BlKSwgaW5jbHVk
ZUVtcHR5UnVsZXMoaW5jbHVkZUVtcHR5UnVsZXMpLCBzY29wZU9mTGFzdEVsZW1lbnQoMCkgeyB9
CiAgICAgICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlOwogICAgICAgICBib29sIGluY2x1
ZGVFbXB0eVJ1bGVzOworICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZU9mTGFzdEVs
ZW1lbnQ7CiAgICAgfTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1hdGNoZWRQcm9wZXJ0aWVzKE1h
dGNoUmVzdWx0JiwgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcywgU3R5bGVSdWxl
KiA9IDAsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUgPSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoQWxs
LCBib29sIGluUmVnaW9uUnVsZSA9IGZhbHNlKTsKQEAgLTM1Myw2ICszNTcsMTAgQEAgcHJpdmF0
ZToKICAgICB2b2lkIG1hdGNoVXNlclJ1bGVzKE1hdGNoUmVzdWx0JiwgYm9vbCBpbmNsdWRlRW1w
dHlSdWxlcyk7CiAgICAgdm9pZCBtYXRjaFNjb3BlZEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0Jiwg
Ym9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAgICAgdm9pZCBtYXRjaEhvc3RSdWxlcyhNYXRjaFJl
c3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQor
ICAgIHZvaWQgbWF0Y2hTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZXMoTWF0Y2hSZXN1bHQm
LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyNlbmRpZgorCiAgICAgdm9pZCBjb2xsZWN0TWF0
Y2hpbmdSdWxlcyhSdWxlU2V0KiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUlu
ZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmKTsKICAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVz
Rm9yUmVnaW9uKFJ1bGVTZXQqLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5k
ZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYpOwogICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNG
b3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQm
IGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYpOwpAQCAtMzYwLDcgKzM2OCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzb3J0TWF0Y2hlZFJ1bGVzKCk7CiAgICAgdm9pZCBzb3J0QW5k
VHJhbnNmZXJNYXRjaGVkUnVsZXMoTWF0Y2hSZXN1bHQmKTsKIAotICAgIGJvb2wgY2hlY2tTZWxl
Y3Rvcihjb25zdCBSdWxlRGF0YSYsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKTsKKyAgICBi
b29sIGNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmLCBjb25zdCBDb250YWluZXJOb2RlKiBz
Y29wZSwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGVPZkxhc3RFbGVtZW50KTsKICAgICBib29s
IGNoZWNrUmVnaW9uU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHJlZ2lvblNlbGVjdG9yLCBFbGVtZW50
KiByZWdpb25FbGVtZW50KTsKICAgICB2b2lkIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoY29uc3Qg
TWF0Y2hSZXN1bHQmLCBjb25zdCBFbGVtZW50Kik7CiAgICAgZW51bSBTdHlsZUFwcGxpY2F0aW9u
UGFzcyB7CkBAIC0zOTEsNiArMzk5LDkgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8UnVsZVNldD4g
bV9hdXRob3JTdHlsZTsKICAgICBPd25QdHI8UnVsZVNldD4gbV91c2VyU3R5bGU7CiAKKyAgICB0
eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ29udGFpbmVyTm9kZSosIE93blB0cjxSdWxlU2V0PiA+IFNl
bGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0TWFwOworICAgIFNlbGVjdFJlZmVyZW5jZUNv
bWJpbmF0b3JSdWxlU2V0TWFwIG1fc2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVTZXRNYXA7
CisKICAgICBSdWxlRmVhdHVyZVNldCBtX2ZlYXR1cmVzOwogICAgIE93blB0cjxSdWxlU2V0PiBt
X3NpYmxpbmdSdWxlU2V0OwogICAgIE93blB0cjxSdWxlU2V0PiBtX3VuY29tbW9uQXR0cmlidXRl
UnVsZVNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlv
blBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmlu
ZGV4IGQ0YjdkN2QwZDkxMzAzYzYwNzBkNTlhOTFlYzY4ZDc2ZTNkZmI0YjUuLmUzZTRkMGUzZWQ3
ZmU4ODhjZDgxYTUzOWZhMTU3N2YyOGViZDlhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtMTcxLDYgKzE3MSwzNyBAQCBpbmxpbmUgSW5zZXJ0
aW9uUG9pbnQqIHJlc29sdmVSZXByb2plY3Rpb24oY29uc3QgTm9kZSogcHJvamVjdGVkTm9kZSkK
ICAgICByZXR1cm4gaW5zZXJ0aW9uUG9pbnQ7CiB9CiAKKy8vIEZJWE1FOiBDb2xsZWN0cyBvbmx5
IEhUTUxDb250ZW50RWxlbWVudCBzaW5jZSBhIHNlbGVjdCByZWZlcmVuY2UgY29tYmluYXRvciBj
YW4gYmUKKy8vIGFwcGxpZWQgdG8gb25seSA8Y29udGVudD4gZWxlbWVudHMuCitpbmxpbmUgdm9p
ZCBjb2xsZWN0QWxsTWlkcG9pbnRJbnNlcnRpb25Qb2ludHMoY29uc3QgTm9kZSogcHJvamVjdGVk
Tm9kZSwgVmVjdG9yPEluc2VydGlvblBvaW50KiwgOD4mIHJlc3VsdHMpCit7CisgICAgSW5zZXJ0
aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gMDsKKyAgICBjb25zdCBOb2RlKiBjdXJyZW50ID0g
cHJvamVjdGVkTm9kZTsKKworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGlmIChFbGVtZW50
U2hhZG93KiBzaGFkb3cgPSBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbihjdXJyZW50KSkg
eworICAgICAgICAgICAgc2hhZG93LT5lbnN1cmVEaXN0cmlidXRpb24oKTsKKyAgICAgICAgICAg
IGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5m
aW5kSW5zZXJ0aW9uUG9pbnRGb3IocHJvamVjdGVkTm9kZSkpIHsKKyAgICAgICAgICAgICAgICBj
dXJyZW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAgICBpbnNlcnRpb25Qb2ludCA9IGlu
c2VydGVkVG87CisgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoaW5zZXJ0aW9uUG9pbnQp
OworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgaWYgKE5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGVGb3JEaXN0cmlidXRpb24oY3Vy
cmVudCkpIHsKKyAgICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHBh
cmVudC0+aXNTaGFkb3dSb290KCkgPyB0b1NoYWRvd1Jvb3QocGFyZW50KS0+YXNzaWduZWRUbygp
IDogMCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAg
ICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAgICByZXN1
bHRzLmFwcGVuZChpbnNlcnRpb25Qb2ludCk7CisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm47CisgICAgfQorfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBJbnNlcnRpb25Qb2ludF9oCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggZmQ3OGY4MDc2NWJkOGY4OGFkYjdkOTQzMGM0N2YzOThkZjY0OTg4YS4uZmYzNWY2MDk4OTA2
YWMyNTdmNGRiNGU5NDUyYjU5YjJmZjYyNTAxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEy
LTExLTA3ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hh
ZG93IERPTV0gSW1wbGVtZW50cyBhIC9zZWxlY3QvIHJlZmVyZW5jZSBjb21iaW5hdG9yLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIxNjkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3No
YWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci1uZXN0
ZWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NlbGVj
dC1yZWZlcmVuY2UtY29tYmluYXRvci1uZXN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci1zZWxlY3Rvci1saXN0LWV4
cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVm
ZXJlbmNlLWNvbWJpbmF0b3Itc2VsZWN0b3ItbGlzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLmh0bWw6IEFkZGVkLgor
CiAyMDEyLTExLTI4ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBOb2RlOjpjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiByZXR1cm5zIHdyb25nIHZhbHVlIGZvciBh
IG5vZGUgaW4gdGhlIGRpZmZlcmVudCBzaGFkb3cgdHJlZS4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJp
bmF0b3ItZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTQ5NTliODYyNDAyOTI1ZTA3ZWU4NmY1
YjgyYWQ1MGMxMGQ3ZGEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci1leHBlY3RlZC5odG1sCkBAIC0wLDAg
KzEsMjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRi
b3giPgorICA8ZGl2PgorICAgIDxkaXY+c2hhZG93IGNoaWxkPC9kaXY+CisgICAgPGRpdj4KKyAg
ICAgIDxkaXY+CisgICAgICAgIDxkaXY+CisgICAgICAgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdy
ZWVuIj5ncmVlbjwvZGl2PgorICAgICAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3Jl
ZW48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8
ZGl2IHN0eWxlPSJjb2xvcjogYmx1ZSI+Ymx1ZTwvZGl2PgorICAgIDxkaXYgc3R5bGU9ImNvbG9y
OiByZWQiPnJlZDwvZGl2PgorICA8L2Rpdj4KKyAgPGRpdj4KKyAgICA8ZGl2PgorICAgICAgPGRp
dj4KKyAgICAgICAgPGRpdj5TdHlsZSBzaG91bGQgbm90IGJlIGFwcGxpZWQuPC9kaXY+CisgICAg
ICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5h
dG9yLW5lc3RlZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3Nl
bGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci1uZXN0ZWQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lNTE4MzQ0MmEwNzZjN2Y4MWE5YzU0MjEzMWU3OWZiNzc2ZjAxMWNjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmlu
YXRvci1uZXN0ZWQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+
CisgICAgPGRpdiBpZD0ibmVzdGVkLWhvc3QiPgorICAgICAgdGV4dDEKKyAgICAgIDxkaXY+Cisg
ICAgICAgIHRleHQyCisgICAgICAgIDxkaXY+CisgICAgICAgICAgdGV4dDMKKyAgICAgICAgICA8
ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAgICAgICAgPGRpdj5ub3Jt
YWw8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9k
aXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItbmVzdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLW5l
c3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlYjRmZTQxZjkzMDA3MzY4ZmYxNDk0N2FjNzQ1NDlhY2M4
YWRjZjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2Vs
ZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLW5lc3RlZC5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hh
ZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3gi
PjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnZGl2IGNvbnRlbnQgL3NlbGVj
dC8gZGl2IGNvbnRlbnQgL3NlbGVjdC8gZGl2LmdyZWVuIHsgY29sb3I6IGdyZWVuOyB9JzsKKwor
dmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJv
eC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9LAorICAg
ICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ25lc3RlZC1ob3N0J30sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hh
ZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCd0ZXh0MScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVh
dGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3RleHQyJyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICdk
aXYnfSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsn
Y2xhc3MnOiAnZ3JlZW4nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3RleHQzJyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHt9KSkpKSwKKyAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2dyZWVuJ30sCisgICAgICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSksCisgICAgICAgICAgICAg
IGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNl
LWNvbWJpbmF0b3Itc2VsZWN0b3ItbGlzdC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci1zZWxlY3Rvci1saXN0LWV4
cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDUyMmM3MjI1OTY1MDgyYzY1NGE0YzRkZTYyNGU0MWE4
YTA0NGQzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9z
ZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3Itc2VsZWN0b3ItbGlzdC1leHBlY3RlZC5odG1sCkBA
IC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9
InNhbmRib3giPgorICA8ZGl2PgorICAgIDxkaXYgaWQ9Imhvc3QiPgorICAgICAgPGRpdiBzdHls
ZT0iY29sb3I6IGdyZWVuIj5ncmVlbjE8L2Rpdj4KKyAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBn
cmVlbiI+Z3JlZW4yPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAg
PC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3Itc2VsZWN0b3ItbGlz
dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29t
YmluYXRvci1zZWxlY3Rvci1saXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJjOWQ2NTZiYTY3YmNjMDBl
YjkyYmNhZDhiMjBiOWUxYjdmZjY5ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3Itc2VsZWN0b3ItbGlzdC5o
dG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHls
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhU
TUwgPSAnY29udGVudCAvc2VsZWN0LyBkaXYsIGRpdi5oZWxsbyB7IGNvbG9yOiBncmVlbjsgfSc7
CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3Nh
bmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93
U3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2Ns
YXNzJzogJ2hlbGxvJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbjEnKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jywge30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuMicpKSksCisgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnZGl2JywgeydjbGFzcyc6ICdoZWxsbyd9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpKSkpOworCis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zZWxl
Y3QtcmVmZXJlbmNlLWNvbWJpbmF0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzM3NjJkMjE3
MzhhOTExN2NhMjk5NDViNDMwZThhZTdlZTdkMTJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci5odG1sCkBA
IC0wLDAgKzEsNDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAn
ZGl2IGNvbnRlbnQgL3NlbGVjdC8gZGl2IGRpdiB7IGNvbG9yOiBncmVlbjsgfScKKyAgICArICcg
I3NoYWRvdy1jb250ZW50IC9zZWxlY3QvIGRpdi5ibHVlIHsgY29sb3I6IGJsdWU7IH0nCisgICAg
KyAnICNzaGFkb3ctY29udGVudCAvc2VsZWN0LyBkaXYucmVkIHsgY29sb3I6IHJlZDsgfSc7CisK
K3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRi
b3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAg
ICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0
eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnc2hhZG93IGNoaWxkJykp
LAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICdkaXYuZ3Jl
ZW4nfSkpKSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAn
c2hhZG93LWNvbnRlbnQnLCAnc2VsZWN0JzogJ2Rpdid9KSksCisgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnZGl2JywgeydjbGFzcyc6ICdncmVlbid9LAorICAgICAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSksCisgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnZGl2JywgeydjbGFzcyc6ICdibHVlJ30sCisgICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnYmx1ZScpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2NsYXNzJzogJ3JlZCd9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ3JlZCcpKSkpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBj
cmVhdGVET00oJ2RpdicsIHsnaWQnOiAnb3RoZXItaG9zdCd9LAorICAgICAgICAgICAgICBjcmVh
dGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7fSkpKSwKKyAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1N0eWxlIHNob3VsZCBub3QgYmUgYXBwbGllZC4nKSkp
KSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176892</attachid>
            <date>2012-11-29 19:51:14 -0800</date>
            <delta_ts>2012-12-20 03:38:42 -0800</delta_ts>
            <desc>Minor update.</desc>
            <filename>bug-82169-20121130124846.patch</filename>
            <type>text/plain</type>
            <size>35434</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiZWYxMzMzZTE1MjZkMGUwM2M3MDllNzRjYzczZDZmNTJhYmE5YTBmLi5h
YjA1MTUwY2NmMTgyZTliMTE4MTEwOGYzNzgzN2M0ZWRiOTdhMThiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsODcgQEAKKzIwMTItMTAtMjMgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBJbXBsZW1lbnRzIGEgL3NlbGVjdC8gcmVmZXJlbmNl
IGNvbWJpbmF0b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MjE2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudHMgYSAnc2VsZWN0JyByZWZlcmVuY2UgY29tYmluYXRvciBiZWhpbmQgYSBT
SEFET1dfRE9NIGZsYWcuCisgICAgICAgIFNlZSB0aGUgU2VsZWN0b3JzIExldmVsIDQgc3BlY2lm
aWNhdGlvbiBhbmQgdGhlIFNoYWRvdyBET00gc3BlY2lmaWNhdGlvbiBmb3IgdGhlIGRldGFpbC4K
KworICAgICAgICBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9zZWxlY3RvcnM0LyNpZHJlZi1jb21i
aW5hdG9ycworICAgICAgICBodHRwOi8vZHZjcy53My5vcmcvaGcvd2ViY29tcG9uZW50cy9yYXct
ZmlsZS90aXAvc3BlYy9zaGFkb3cvaW5kZXguaHRtbCNzZWxlY3Rpbmctbm9kZXMtZGlzdHJpYnV0
ZWQtdG8taW5zZXJ0aW9uLXBvaW50cworCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBh
IHNlbGVjdCByZWZlcmVuY2UgY29tYmluYXRvciBhcyB0aGUgZmlyc3QKKyAgICAgICAgcmVmZXJl
bmNlIGNvbWJpbmF0b3IgaW1wbGVtZW50ZWQgaW4gV2ViS2l0LiAgU2luY2UgV2ViS2l0IGhhcyBu
b3QKKyAgICAgICAgc3VwcG9ydGVkIHJlZmVyZW5jZSBjb21iaW5hdG9ycyBzbyBmYXIsIENTUyBn
cmFtbWVyIGFuZCBwYXJzZXIgYXJlCisgICAgICAgIHVwZGF0ZWQgdG8gc3VwcG9ydCB0aGUgbmV3
IHN5bnRheCB1c2VkIGluIFNlbGVjdG9yIExldmVsNCdzCisgICAgICAgIHJlZmVyZW5jZSBjb21i
aW5hdG9ycy4KKworICAgICAgICBBIHNlbGVjdCByZWZlcmVuY2UgY29tYmluYXRvciBpcyB0aGUg
Zmlyc3QgQ1NTIHJ1bGUgd2hpY2ggY3Jvc3NlcworICAgICAgICB0aGUgc2hhZG93IGJvdW5kYXJ5
IGZyb20gYSBzaGFkb3cgdHJlZSB0byB0aGUgdHJlZSBvZiBpdHMgc2hhZG93CisgICAgICAgIGhv
c3QuIFRoYXQgbWVhbnMgYSBzZWxlY3QgcmVmZXJlbmNlIGNvbWJpbmF0b3IgaXMgZGVmaW5lZCBp
bgorICAgICAgICBzaGFkb3cgdHJlZSwgYnV0IHRoZSBub2RlIHdoaWNoIGlzIG1hdGNoZWQgaW4g
dGhlIHJ1bGUgaXMgb3V0c2lkZQorICAgICAgICBvZiB0aGUgc2hhZG93IHRyZWUuCisKKyAgICAg
ICAgU28gd2UgY2Fubm90IHByZWRpY3QgYSBzY29wZSB3aGVyZSB0aGUgbWF0Y2hlZCBub2RlIHdp
bGwgYmUgYmVmb3JlaGFuZC4KKyAgICAgICAgQ3VycmVudCBDU1MgaW1wbGVtZW50YXRpb24gYXNz
dW1lcyBldmVyeSBmaW5hbCB0YXJnZXQgaXMgYXBwbGllZCBpbiBjdXJyZW50IHNjb3BlLgorCisg
ICAgICAgIFRvIG92ZXJjb21lIHRoaXMgaXNzdWUsIEkgdXBkYXRlZCBTdHlsZVJlc29sdmVyIHNv
IHRoYXQgaXQgaGFzCisgICAgICAgIFNlbGVjdFJlZmVyZWNlQ29tYmluYXRvclJ1bGVTZXRNYXAu
IFRoZSBSdWxlU2V0TWFwIGlzIHVzZWQgdG8ga2VlcAorICAgICAgICB0cmFjayBvZiBSdWxlU2V0
IG1hcHBlZCBieSBhIHNjb3BlIHdoZXJlIGEgc2VsZWN0IHJlZmVyZW5jZQorICAgICAgICBjb21i
aW5hdG9yIGlzIG9yaWdpbmFsbHkgZGVmaW5lZC4gVGhlIHNjb3BlIGlzIHVzZWQgdG8gY2hlY2sK
KyAgICAgICAgd2hldGhlciB0aGUgbGFzdCBlbGVtZW50IG1hdGNoZWQgYnkgU2VsZWN0b3JDaGVj
a2VyIGV4aXN0cyBpbiB0aGUKKyAgICAgICAgc2NvcGUgd2hlcmUgdGhlIHJ1bGUgaXMgb3JpZ2lu
YWxseSBkZWZpbmVkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJl
ZmVyZW5jZS1jb21iaW5hdG9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9z
ZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItbmVzdGVkLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3Itc2VsZWN0b3ItbGlzdC5o
dG1sCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOgorICAgICAgICAqIGNzcy9DU1NQ
YXJzZXJWYWx1ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpzZXRS
ZWZlcmVuY2UpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yOjpzZXRSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTZWxlY3Rvcjo6UmFyZURhdGE6OlJhcmVEYXRhKToKKyAgICAgICAgKiBjc3MvQ1NT
U2VsZWN0b3IuaDoKKyAgICAgICAgKENTU1NlbGVjdG9yKToKKyAgICAgICAgKFJhcmVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpyZWZlcmVuY2UpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6aXNSZWZlcmVuY2VDb21iaW5h
dG9yKToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoU2VsZWN0b3JIYXNTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdG9ySGFzU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvcjo6b3Bl
cmF0b3IoKSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxpc3Q6Omhhc1NlbGVjdFJl
ZmVyZW5jZUNvbWJpbmF0b3JBdCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yTGlzdC5oOgor
ICAgICAgICAoQ1NTU2VsZWN0b3JMaXN0KToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldCk6CisgICAgICAgICog
Y3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNr
ZXI6OmNvbGxlY3RJZGVudGlmaWVySGFzaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcik6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29u
dGV4dDo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQpOgorICAgICAgICAoU2VsZWN0b3JDaGVja2lu
Z0NvbnRleHQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnJlc2V0QXV0aG9yU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVSZXNvbHZlcjo6YWRkU3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bWF0Y2hTZWxlY3RSZWZlcmVuY2VDb21iaW5h
dG9yUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JS
dWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdS
dWxlc0Zvckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y2hlY2tTZWxl
Y3Rvcik6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKFN0eWxlUmVz
b2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6TWF0Y2hPcHRpb25zOjpN
YXRjaE9wdGlvbnMpOgorICAgICAgICAoTWF0Y2hPcHRpb25zKToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpjb2xsZWN0QWxsTWlkcG9pbnRJbnNlcnRpb25Qb2ludHMpOgorCiAyMDEyLTExLTI4ICBI
YXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb2RlOjpjb21wYXJl
RG9jdW1lbnRQb3NpdGlvbiByZXR1cm5zIHdyb25nIHZhbHVlIGZvciBhIG5vZGUgaW4gdGhlIGRp
ZmZlcmVudCBzaGFkb3cgdHJlZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFtbWFyLnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCmluZGV4IDIx
YjAxNjEzNWJhNThlNGUyMDRlZjc2OWExOTdmMGI4NzE0YjZlOTQuLjYxNjUzN2E2NDFhNjA2ZjVl
ZTI4MjUyMTdmNDNiZWM5YWUwZmQ4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgpA
QCAtMjg5LDYgKzI4OSw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IGNzc3l5ZXJyb3Iodm9pZCosIGNv
bnN0IGNoYXIqKQogCiAldHlwZSA8c3RyaW5nPiBlbGVtZW50X25hbWUKICV0eXBlIDxzdHJpbmc+
IGF0dHJfbmFtZQorI2lmIEVOQUJMRV9TSEFET1dfRE9NCisldHlwZSA8c3RyaW5nPiByZWZlcmVu
Y2VfY29tYmluYXRvcgorI2VuZGlmCiAKICUlCiAKQEAgLTEwMDEsNiArMTAwNCwxNyBAQCBjb21i
aW5hdG9yOgogICB8ICc+JyBtYXliZV9zcGFjZSB7ICQkID0gQ1NTU2VsZWN0b3I6OkNoaWxkOyB9
CiAgIDsKIAorI2lmIEVOQUJMRV9TSEFET1dfRE9NCityZWZlcmVuY2VfY29tYmluYXRvcjoKKyAg
Jy8nIElERU5UICcvJyBtYXliZV9zcGFjZSB7CisgICAgICAgIENTU1BhcnNlclN0cmluZyYgc3Ry
ID0gJDI7CisgICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5pc0hUTUxEb2N1bWVudCkKKyAg
ICAgICAgICAgIHN0ci5sb3dlcigpOworICAgICAgICAkJCA9IHN0cjsKKyAgfQorICA7CisjZW5k
aWYKKwogbWF5YmVfdW5hcnlfb3BlcmF0b3I6CiAgICAgdW5hcnlfb3BlcmF0b3IgeyAkJCA9ICQx
OyB9CiAgICAgfCB7ICQkID0gMTsgfQpAQCAtMTA5Niw2ICsxMTEwLDIxIEBAIHNlbGVjdG9yOgog
ICAgICAgICAgICAgZW5kLT5zZXRUYWdIaXN0b3J5KHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0
b3IoJDEpKTsKICAgICAgICAgfQogICAgIH0KKyNpZiBFTkFCTEVfU0hBRE9XX0RPTQorICAgIHwg
c2VsZWN0b3IgcmVmZXJlbmNlX2NvbWJpbmF0b3Igc2ltcGxlX3NlbGVjdG9yIHsKKyAgICAgICAg
JCQgPSAkMzsKKyAgICAgICAgaWYgKCEkMSkKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAg
ZWxzZSBpZiAoJCQpIHsKKyAgICAgICAgICAgIENTU1BhcnNlclNlbGVjdG9yKiBlbmQgPSAkJDsK
KyAgICAgICAgICAgIHdoaWxlIChlbmQtPnRhZ0hpc3RvcnkoKSkKKyAgICAgICAgICAgICAgICBl
bmQgPSBlbmQtPnRhZ0hpc3RvcnkoKTsKKyAgICAgICAgICAgIGVuZC0+c2V0UmVsYXRpb24oQ1NT
U2VsZWN0b3I6OlJlZmVyZW5jZSk7CisgICAgICAgICAgICBlbmQtPnNldFJlZmVyZW5jZShRdWFs
aWZpZWROYW1lKG51bGxBdG9tLCAkMiwgbnVsbEF0b20pKTsKKyAgICAgICAgICAgIGVuZC0+c2V0
VGFnSGlzdG9yeShwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQxKSk7CisgICAgICAgIH0K
KyAgICB9CisjZW5kaWYKICAgICB8IHNlbGVjdG9yIGVycm9yIHsKICAgICAgICAgJCQgPSAwOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAppbmRleCAxMzAxYjFjZTBlMTEz
NzIzY2NmODIxNjI4ZWUwNWUyZTMxMDIzNjdiLi5lMjNkZWQ1MGUyNzljYzFkOWYxNjFlMDk2NjRk
NDRlZDhhNzk2NzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFs
dWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCkBAIC0xODMs
NiArMTgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TWF0Y2goQ1NTU2VsZWN0b3I6Ok1hdGNo
IHZhbHVlKSB7IG1fc2VsZWN0b3ItPm1fbWF0Y2ggPSB2YWx1ZTsgfQogICAgIHZvaWQgc2V0UmVs
YXRpb24oQ1NTU2VsZWN0b3I6OlJlbGF0aW9uIHZhbHVlKSB7IG1fc2VsZWN0b3ItPm1fcmVsYXRp
b24gPSB2YWx1ZTsgfQogICAgIHZvaWQgc2V0Rm9yUGFnZSgpIHsgbV9zZWxlY3Rvci0+c2V0Rm9y
UGFnZSgpOyB9CisgICAgdm9pZCBzZXRSZWZlcmVuY2UoY29uc3QgUXVhbGlmaWVkTmFtZSYgdmFs
dWUpIHsgbV9zZWxlY3Rvci0+c2V0UmVmZXJlbmNlKHZhbHVlKTsgfQogCiAgICAgdm9pZCBhZG9w
dFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4mIHNlbGVj
dG9yVmVjdG9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXggYzlkZDE5Mzdh
NThlNmYxYzg3N2M3MWNjOTg2ZDZlZDA2ZjUzNDc1MC4uNzYwNmJmMDQ5NTc1MDVjZTI4NTBmZDRk
Y2E3MmE4MzUzNDAzYzc1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCkBAIC02NTQs
NiArNjU0LDggQEAgU3RyaW5nIENTU1NlbGVjdG9yOjpzZWxlY3RvclRleHQoKSBjb25zdAogICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OlNoYWRvd0Rlc2NlbmRhbnQ6CiAgICAgICAgICAgICByZXR1cm4gdGFnSGlzdG9yeVRleHQgKyBz
dHIudG9TdHJpbmcoKTsKKyAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UmVmZXJlbmNlOgorICAg
ICAgICAgICAgcmV0dXJuIHRhZ0hpc3RvcnlUZXh0ICsgIiAvIiArIGNzLT5yZWZlcmVuY2UoKS50
b1N0cmluZygpICsgIi8gIiArICBzdHIudG9TdHJpbmcoKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtNjY2LDYgKzY2OCwxNyBAQCB2b2lkIENTU1NlbGVjdG9yOjpzZXRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdmFsdWUpCiAgICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fYXR0cmlidXRl
ID0gdmFsdWU7CiB9CiAKK3ZvaWQgQ1NTU2VsZWN0b3I6OnNldFJlZmVyZW5jZShjb25zdCBRdWFs
aWZpZWROYW1lJiB2YWx1ZSkKK3sKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBjcmVhdGVS
YXJlRGF0YSgpOworICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX3JlZmVyZW5jZSA9IHZhbHVlOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworI2VuZGlmCit9CisKIHZvaWQgQ1NTU2VsZWN0b3I6OnNldEFyZ3VtZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUpCiB7CiAgICAgY3JlYXRlUmFyZURhdGEoKTsKQEAgLTcyNCw2ICs3Mzcs
OSBAQCBDU1NTZWxlY3Rvcjo6UmFyZURhdGE6OlJhcmVEYXRhKFBhc3NSZWZQdHI8QXRvbWljU3Ry
aW5nSW1wbD4gdmFsdWUpCiAgICAgLCBtX2EoMCkKICAgICAsIG1fYigwKQogICAgICwgbV9hdHRy
aWJ1dGUoYW55UU5hbWUoKSkKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAsIG1fcmVmZXJl
bmNlKGFueVFOYW1lKCkpCisjZW5kaWYKICAgICAsIG1fYXJndW1lbnQobnVsbEF0b20pCiB7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCmluZGV4IGFlZTUwNzRkNzVmN2JiM2Y2ZTQxMjk1ZGQx
YmFhYzA5NzYzMDg0NWYuLjVjMmVlYzY3NjRlZDIyYzI0M2E1NzJjYzgyZjllMmJlYjljZDY0ZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCkBAIC03Niw3ICs3Niw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgICAgIERpcmVjdEFkamFjZW50LAogICAgICAgICAgICAgSW5kaXJl
Y3RBZGphY2VudCwKICAgICAgICAgICAgIFN1YlNlbGVjdG9yLAotICAgICAgICAgICAgU2hhZG93
RGVzY2VuZGFudAorICAgICAgICAgICAgU2hhZG93RGVzY2VuZGFudCwKKyAgICAgICAgICAgIFJl
ZmVyZW5jZQogICAgICAgICB9OwogCiAgICAgICAgIGVudW0gUHNldWRvVHlwZSB7CkBAIC0xOTks
MTIgKzIwMCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEZJWE1FOiBQZXJo
YXBzIGNhbGwgc2l0ZXMgY291bGQgYmUgY2hhbmdlZCB0byBhY2NlcHQgQXRvbWljU3RyaW5nSW1w
bD8KICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuICpy
ZWludGVycHJldF9jYXN0PGNvbnN0IEF0b21pY1N0cmluZyo+KG1faGFzUmFyZURhdGEgPyAmbV9k
YXRhLm1fcmFyZURhdGEtPm1fdmFsdWUgOiAmbV9kYXRhLm1fdmFsdWUpOyB9CiAgICAgICAgIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSgpIGNvbnN0OworICAgICAgICBjb25zdCBRdWFs
aWZpZWROYW1lJiByZWZlcmVuY2UoKSBjb25zdDsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBhcmd1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmFyZURhdGEgPyBtX2RhdGEubV9yYXJl
RGF0YS0+bV9hcmd1bWVudCA6IG51bGxBdG9tOyB9CiAgICAgICAgIENTU1NlbGVjdG9yTGlzdCog
c2VsZWN0b3JMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNSYXJlRGF0YSA/IG1fZGF0YS5tX3Jh
cmVEYXRhLT5tX3NlbGVjdG9yTGlzdC5nZXQoKSA6IDA7IH0KIAogICAgICAgICB2b2lkIHNldFRh
Zyhjb25zdCBRdWFsaWZpZWROYW1lJiB2YWx1ZSkgeyBtX3RhZyA9IHZhbHVlOyB9CiAgICAgICAg
IHZvaWQgc2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgICAgIHZvaWQgc2V0QXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICAgICAgdm9pZCBzZXRSZWZlcmVuY2Uo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgICAgICB2b2lkIHNldEFyZ3VtZW50KGNvbnN0IEF0
b21pY1N0cmluZyYpOwogICAgICAgICB2b2lkIHNldFNlbGVjdG9yTGlzdChQYXNzT3duUHRyPENT
U1NlbGVjdG9yTGlzdD4pOwogCkBAIC0yMTYsNiArMjE5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBib29sIGlzQ3VzdG9tUHNldWRvRWxlbWVudCgpIGNvbnN0OwogICAgICAgICBi
b29sIGlzU2libGluZ1NlbGVjdG9yKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNBdHRyaWJ1dGVT
ZWxlY3RvcigpIGNvbnN0OworICAgICAgICBib29sIGlzUmVmZXJlbmNlQ29tYmluYXRvcigpIGNv
bnN0OwogCiAgICAgICAgIFJlbGF0aW9uIHJlbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8UmVsYXRpb24+KG1fcmVsYXRpb24pOyB9CiAKQEAgLTI1OCw2ICsyNjIsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBpbnQgbV9hOyAvLyBVc2VkIGZvciA6bnRoLSoK
ICAgICAgICAgICAgIGludCBtX2I7IC8vIFVzZWQgZm9yIDpudGgtKgogICAgICAgICAgICAgUXVh
bGlmaWVkTmFtZSBtX2F0dHJpYnV0ZTsgLy8gdXNlZCBmb3IgYXR0cmlidXRlIHNlbGVjdG9yCisj
aWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgICAgICBRdWFsaWZpZWROYW1lIG1fcmVmZXJl
bmNlOyAvLyB1c2VkIGZvciByZWZlcmVuY2UgY29tYmluYXRvcgorI2VuZGlmCiAgICAgICAgICAg
ICBBdG9taWNTdHJpbmcgbV9hcmd1bWVudDsgLy8gVXNlZCBmb3IgOmNvbnRhaW5zLCA6bGFuZyBh
bmQgOm50aC0qCiAgICAgICAgICAgICBPd25QdHI8Q1NTU2VsZWN0b3JMaXN0PiBtX3NlbGVjdG9y
TGlzdDsgLy8gVXNlZCBmb3IgOi13ZWJraXQtYW55IGFuZCA6bm90CiAgICAgICAgIApAQCAtMjgy
LDYgKzI4OSwxNyBAQCBpbmxpbmUgY29uc3QgUXVhbGlmaWVkTmFtZSYgQ1NTU2VsZWN0b3I6OmF0
dHJpYnV0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2F0dHJpYnV0
ZTsKIH0KIAoraW5saW5lIGNvbnN0IFF1YWxpZmllZE5hbWUmIENTU1NlbGVjdG9yOjpyZWZlcmVu
Y2UoKSBjb25zdAoreworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIEFTU0VSVChpc1JlZmVy
ZW5jZUNvbWJpbmF0b3IoKSk7CisgICAgQVNTRVJUKG1faGFzUmFyZURhdGEpOworICAgIHJldHVy
biBtX2RhdGEubV9yYXJlRGF0YS0+bV9yZWZlcmVuY2U7CisjZWxzZQorICAgIHJldHVybiBudWxs
UU5hbWUoKTsKKyNlbmRpZgorfQorCiBpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6bWF0Y2hlc1Bz
ZXVkb0VsZW1lbnQoKSBjb25zdAogewogICAgIGlmIChtX3BzZXVkb1R5cGUgPT0gUHNldWRvVW5r
bm93bikKQEAgLTMyOCw2ICszNDYsMTEgQEAgaW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6OmlzQXR0
cmlidXRlU2VsZWN0b3IoKSBjb25zdAogICAgICAgICB8fCBtX21hdGNoID09IENTU1NlbGVjdG9y
OjpFbmQ7CiB9CiAKK2lubGluZSBib29sIENTU1NlbGVjdG9yOjppc1JlZmVyZW5jZUNvbWJpbmF0
b3IoKSBjb25zdAoreworICAgIHJldHVybiBtX3JlbGF0aW9uID09IENTU1NlbGVjdG9yOjpSZWZl
cmVuY2U7Cit9CisKIGlubGluZSB2b2lkIENTU1NlbGVjdG9yOjpzZXRWYWx1ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQogewogICAgIC8vIE5lZWQgdG8gZG8gcmVmIGNvdW50aW5nIG1hbnVh
bGx5IGZvciB0aGUgdW5pb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3JMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCmlu
ZGV4IDQzMTM2ZDFjOTAxYzYzNDFiYWNiZWY4Mzk0OWRmOTRlNjBmMWMzNmMuLjYwNzRlMmEyYjIy
ODcxOGU3ZjAzODNiYjIxNmU3OWY4NmE0N2ZiZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxl
Y3Rvckxpc3QuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0
LmgiCiAKICNpbmNsdWRlICJDU1NQYXJzZXJWYWx1ZXMuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0yMTEsNiArMjEyLDIwIEBAIGJvb2wgQ1NT
U2VsZWN0b3JMaXN0OjpoYXNJbnZhbGlkU2VsZWN0b3IoKSBjb25zdAogICAgIHJldHVybiBmb3JF
YWNoU2VsZWN0b3IoZnVuY3RvciwgdGhpcyk7CiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
K2NsYXNzIFNlbGVjdG9ySGFzU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvciB7CitwdWJsaWM6Cisg
ICAgYm9vbCBvcGVyYXRvcigpKENTU1NlbGVjdG9yKiBzZWxlY3RvcikKKyAgICB7CisgICAgICAg
IHJldHVybiBzZWxlY3Rvci0+aXNSZWZlcmVuY2VDb21iaW5hdG9yKCkgJiYgc2VsZWN0b3ItPnJl
ZmVyZW5jZSgpID09IEhUTUxOYW1lczo6c2VsZWN0QXR0cjsKKyAgICB9Cit9OwogCitib29sIENT
U1NlbGVjdG9yTGlzdDo6aGFzU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvckF0KHNpemVfdCBpbmRl
eCkgY29uc3QKK3sKKyAgICBTZWxlY3Rvckhhc1NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3IgZnVu
Y3RvcjsKKyAgICByZXR1cm4gZm9yRWFjaFRhZ1NlbGVjdG9yKGZ1bmN0b3IsIHNlbGVjdG9yQXQo
aW5kZXgpKTsKK30KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2VsZWN0b3JMaXN0LmgKaW5kZXggNGZjZmVlMmZhYTQxODJkN2E5YWIwNTViY2NlNTE5
ZmU3NGUyMjcxNS4uMDk0ZTFkYTgzMzFkNGI3MmMzOWE2OGVjMWVhZDhiNGQxNGUwYjBjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaApAQCAtNjAsNiArNjAsMTAgQEAgcHVibGlj
OgogICAgIGJvb2wgc2VsZWN0b3JzTmVlZE5hbWVzcGFjZVJlc29sdXRpb24oKTsKICAgICBib29s
IGhhc0ludmFsaWRTZWxlY3RvcigpIGNvbnN0OwogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisg
ICAgYm9vbCBoYXNTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yQXQoc2l6ZV90IGluZGV4KSBjb25z
dDsKKyNlbmRpZgorCiAgICAgU3RyaW5nIHNlbGVjdG9yc1RleHQoKSBjb25zdDsKIAogICAgIHZv
aWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1
bGVTZXQuY3BwCmluZGV4IDlhNzhjMGZmOTAzODljOTBjNDRkYTVhNmI5ZjVmZjdhZTIwYzZlMzEu
LmVhZmE2YTUwZjgwYzQwNGVmNzljOTQ0NjM3MmJhOWYyMTE5OGFiMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVs
ZVNldC5jcHAKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNo
ZWV0KFN0eWxlU2hlZXRDb250ZW50cyogc2hlZXQsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdQogCiAg
ICAgICAgIEFTU0VSVCghcnVsZS0+aXNJbXBvcnRSdWxlKCkpOwogICAgICAgICBpZiAocnVsZS0+
aXNTdHlsZVJ1bGUoKSkKLSAgICAgICAgICAgIGFkZFN0eWxlUnVsZShzdGF0aWNfY2FzdDxTdHls
ZVJ1bGUqPihydWxlKSwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAgICAgIHJlc29sdmVyLT5hZGRT
dHlsZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlKj4ocnVsZSksIGNvbnN0X2Nhc3Q8Q29udGFp
bmVyTm9kZSo+KHNjb3BlKSwgdGhpcywgYWRkUnVsZUZsYWdzKTsKICAgICAgICAgZWxzZSBpZiAo
cnVsZS0+aXNQYWdlUnVsZSgpKQogICAgICAgICAgICAgYWRkUGFnZVJ1bGUoc3RhdGljX2Nhc3Q8
U3R5bGVSdWxlUGFnZSo+KHJ1bGUpKTsKICAgICAgICAgZWxzZSBpZiAocnVsZS0+aXNNZWRpYVJ1
bGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCBkNDg0MWNh
MDJiYWRiYTZhMTFmYmNmOWY4ZDcxNDgwOGYzZWE4ZWZjLi4xY2M4MGY2YWNiZDEwNDY2Yjk0NTEw
NTJmMGMzZTYzMmQwNGRmZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNw
cApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTFByb2dyZXNzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQu
aCIKKyNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKQEAgLTE5NSw2ICsxOTYsNyBAQCB2b2lkIFNlbGVjdG9yQ2hlY2tlcjo6Y29sbGVjdElk
ZW50aWZpZXJIYXNoZXMoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCB1bnNpZwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQ6CiAgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkNoaWxkOgorICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpS
ZWZlcmVuY2U6CiAgICAgICAgICAgICBza2lwT3ZlclN1YnNlbGVjdG9ycyA9IGZhbHNlOwogICAg
ICAgICAgICAgY29sbGVjdERlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXMoc2VsZWN0
b3IsIGhhc2gsIGVuZCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ3NSw4ICs0NzcsMTUgQEAg
U2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxl
Y3Rvcihjb25zdCBTZWxlY3RvckNoZWMKIAogICAgIC8vIFByZXBhcmUgbmV4dCBzZWxlY3Rvcgog
ICAgIENTU1NlbGVjdG9yKiBoaXN0b3J5U2VsZWN0b3IgPSBjb250ZXh0LnNlbGVjdG9yLT50YWdI
aXN0b3J5KCk7Ci0gICAgaWYgKCFoaXN0b3J5U2VsZWN0b3IpCisgICAgaWYgKCFoaXN0b3J5U2Vs
ZWN0b3IpIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgaWYgKGNvbnRleHQuc2Nv
cGVPZkxhc3RFbGVtZW50KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogQ2hlY2sgdGhlIHNjb3Bl
IG1vcmUgc3RyaWN0bHkuCisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5zY29wZU9mTGFzdEVs
ZW1lbnQtPnRyZWVTY29wZSgpID09IGNvbnRleHQuZWxlbWVudC0+dHJlZVNjb3BlKCkgPyBTZWxl
Y3Rvck1hdGNoZXMgOiBTZWxlY3RvckZhaWxzTG9jYWxseTsKKyAgICAgICAgfQorI2VuZGlmCiAg
ICAgICAgIHJldHVybiBTZWxlY3Rvck1hdGNoZXM7CisgICAgfQogCiAgICAgU2VsZWN0b3JDaGVj
a2luZ0NvbnRleHQgbmV4dENvbnRleHQoY29udGV4dCk7CiAgICAgbmV4dENvbnRleHQuc2VsZWN0
b3IgPSBoaXN0b3J5U2VsZWN0b3I7CkBAIC01NzgsNiArNTg3LDI1IEBAIFNlbGVjdG9yQ2hlY2tl
cjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgU2Vs
ZWN0b3JDaGVjCiAgICAgICAgICAgICBuZXh0Q29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgPSAw
OwogICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3IobmV4dENvbnRleHQsIGlnbm9yZUR5
bmFtaWNQc2V1ZG8pOwogICAgICAgICB9CisKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpSZWZlcmVu
Y2U6CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LnNlbGVjdG9yLT5yZWZlcmVu
Y2UoKSAhPSBzZWxlY3RBdHRyKQorICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxz
Q29tcGxldGVseTsKKworICAgICAgICAgICAgVmVjdG9yPEluc2VydGlvblBvaW50KiwgOD4gaW5z
ZXJ0aW9uUG9pbnRzOworICAgICAgICAgICAgY29sbGVjdEFsbE1pZHBvaW50SW5zZXJ0aW9uUG9p
bnRzKGNvbnRleHQuZWxlbWVudCwgaW5zZXJ0aW9uUG9pbnRzKTsKKyAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgaW5zZXJ0aW9uUG9pbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICAgICAgbmV4dENvbnRleHQuZWxlbWVudCA9IGluc2VydGlvblBvaW50c1tpXTsKKyAgICAg
ICAgICAgICAgICBuZXh0Q29udGV4dC5pc1N1YlNlbGVjdG9yID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgbmV4dENvbnRleHQuZWxlbWVudFN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICBuZXh0
Q29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgPSAwOworICAgICAgICAgICAgICAgIFNlbGVjdG9y
TWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKG5leHRDb250ZXh0LCBpZ25vcmVEeW5hbWljUHNl
dWRvKTsKKyAgICAgICAgICAgICAgICBpZiAobWF0Y2ggPT0gU2VsZWN0b3JNYXRjaGVzIHx8IG1h
dGNoID09IFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5KQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbWF0Y2g7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWls
c0NvbXBsZXRlbHk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAppbmRleCA5YmRiNjY5YjI0NmVlNjQz
ZDVlMmVlMjJiNWExYTI0ZWUwOTE4ZTZhLi40N2IzOTBjZTc5YTE4OTRiNWQ0YmQyOTZiMDMyNWE1
ZmY2NTIyYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCkBAIC02Nyw2ICs2
Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICwgaXNTdWJTZWxlY3RvcihmYWxzZSkKICAgICAg
ICAgICAgICwgaGFzU2Nyb2xsYmFyUHNldWRvKGZhbHNlKQogICAgICAgICAgICAgLCBoYXNTZWxl
Y3Rpb25Qc2V1ZG8oZmFsc2UpCisgICAgICAgICAgICAsIHNjb3BlT2ZMYXN0RWxlbWVudCgwKQog
ICAgICAgICB7IH0KIAogICAgICAgICBDU1NTZWxlY3Rvciogc2VsZWN0b3I7CkBAIC03OSw2ICs4
MCw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc1N1YlNlbGVjdG9yOwogICAgICAgICBib29s
IGhhc1Njcm9sbGJhclBzZXVkbzsKICAgICAgICAgYm9vbCBoYXNTZWxlY3Rpb25Qc2V1ZG87Cisg
ICAgICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlT2ZMYXN0RWxlbWVudDsKICAgICB9Owog
CiAgICAgYm9vbCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIGJvb2wgaXNG
YXN0Q2hlY2thYmxlU2VsZWN0b3IgPSBmYWxzZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKaW5kZXggNmM4NDFlNDk4ZDg3NWEzOWEzN2Y4YWU1Yzk4Y2Y0YmZiMWFmNzBm
Yy4uOTFlMWJhMjIxMjA5NjM2ZDEwNjFlZTI0NTFlN2VkYjUyN2EyODE5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMzY2LDYgKzM2Niw3IEBAIHZvaWQgU3R5bGVSZXNv
bHZlcjo6cmVzZXRBdXRob3JTdHlsZSgpCiB7CiAgICAgbV9hdXRob3JTdHlsZSA9IFJ1bGVTZXQ6
OmNyZWF0ZSgpOwogICAgIG1fYXV0aG9yU3R5bGUtPmRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKTsK
KyAgICBtX3NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0TWFwLmNsZWFyKCk7CiB9CiAK
IHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwZW5kQXV0aG9yU3R5bGVTaGVldHModW5zaWduZWQgZmly
c3ROZXcsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgc3R5bGVTaGVldHMp
CkBAIC00NTAsNiArNDUxLDMyIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHls
ZShQYXNzUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gcnVsZSkKICAgICBtX2tleWZyYW1lc1J1
bGVNYXAuc2V0KHMuaW1wbCgpLCBydWxlKTsKIH0KIAordm9pZCBTdHlsZVJlc29sdmVyOjphZGRT
dHlsZVJ1bGUoU3R5bGVSdWxlKiBydWxlLCBDb250YWluZXJOb2RlKiBzY29wZSwgUnVsZVNldCog
cnVsZVNldCwgQWRkUnVsZUZsYWdzIGFkZFJ1bGVGbGFncykKK3sKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKKyAgICBpZiAoIXNjb3BlKSB7CisgICAgICAgIHJ1bGVTZXQtPmFkZFN0eWxlUnVsZShy
dWxlLCBhZGRSdWxlRmxhZ3MpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNvbnN0IENT
U1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0ID0gcnVsZS0+c2VsZWN0b3JMaXN0KCk7CisgICAg
Zm9yIChzaXplX3Qgc2VsZWN0b3JJbmRleCA9IDA7IHNlbGVjdG9ySW5kZXggIT0gbm90Rm91bmQ7
IHNlbGVjdG9ySW5kZXggPSBzZWxlY3Rvckxpc3QuaW5kZXhPZk5leHRTZWxlY3RvckFmdGVyKHNl
bGVjdG9ySW5kZXgpKSB7CisgICAgICAgIGlmIChzZWxlY3Rvckxpc3QuaGFzU2VsZWN0UmVmZXJl
bmNlQ29tYmluYXRvckF0KHNlbGVjdG9ySW5kZXgpKSB7CisgICAgICAgICAgICBpZiAobV9zZWxl
Y3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZVNldE1hcC5jb250YWlucyhzY29wZSkpCisgICAgICAg
ICAgICAgICAgbV9zZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZVNldE1hcC5nZXQoc2NvcGUp
LT5hZGRSdWxlKHJ1bGUsIHNlbGVjdG9ySW5kZXgsIGFkZFJ1bGVGbGFncyk7CisgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICBPd25QdHI8UnVsZVNldD4gcnVsZVNldEZvclNjb3Bl
ID0gYWRvcHRQdHIobmV3IFJ1bGVTZXQoKSk7CisgICAgICAgICAgICAgICAgcnVsZVNldEZvclNj
b3BlLT5hZGRSdWxlKHJ1bGUsIHNlbGVjdG9ySW5kZXgsIGFkZFJ1bGVGbGFncyk7CisgICAgICAg
ICAgICAgICAgbV9zZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZVNldE1hcC5hZGQoc2NvcGUs
IHJ1bGVTZXRGb3JTY29wZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIHJ1bGVTZXQtPmFkZFJ1bGUocnVsZSwgc2VsZWN0b3JJbmRleCwgYWRk
UnVsZUZsYWdzKTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzY29wZSk7CisgICAg
cnVsZVNldC0+YWRkU3R5bGVSdWxlKHJ1bGUsIGFkZFJ1bGVGbGFncyk7CisjZW5kaWYKK30KKwog
U3R5bGVSZXNvbHZlcjo6flN0eWxlUmVzb2x2ZXIoKQogewogICAgIG1fZm9udFNlbGVjdG9yLT5j
bGVhckRvY3VtZW50KCk7CkBAIC03OTMsNiArODIwLDE3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6
bWF0Y2hIb3N0UnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxl
cykKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCit2b2lkIFN0eWxlUmVzb2x2
ZXI6Om1hdGNoU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1
bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpCit7CisgICAgZm9yIChTZWxlY3RSZWZlcmVuY2VD
b21iaW5hdG9yUnVsZVNldE1hcDo6aXRlcmF0b3IgaXQgPSBtX3NlbGVjdFJlZmVyZW5jZUNvbWJp
bmF0b3JSdWxlU2V0TWFwLmJlZ2luKCk7IGl0ICE9IG1fc2VsZWN0UmVmZXJlbmNlQ29tYmluYXRv
clJ1bGVTZXRNYXAuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgTWF0Y2hPcHRpb25zIG9wdGlvbnMo
aW5jbHVkZUVtcHR5UnVsZXMsIDApOworICAgICAgICBvcHRpb25zLnNjb3BlT2ZMYXN0RWxlbWVu
dCA9IGl0LT5rZXk7CisgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKGl0LT52YWx1ZS5nZXQo
KSwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhv
clJ1bGUsIG9wdGlvbnMpOworICAgIH0KK30KKyNlbmRpZgorCiB2b2lkIFN0eWxlUmVzb2x2ZXI6
Om1hdGNoQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlS
dWxlcykKIHsKICAgICBtX21hdGNoZWRSdWxlcy5jbGVhcigpOwpAQCAtODA3LDYgKzg0NSw5IEBA
IHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0
LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzCiAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdp
b24obV9hdXRob3JTdHlsZS5nZXQoKSwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJl
c3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOwogCiAgICAgbWF0Y2hTY29wZWRB
dXRob3JSdWxlcyhyZXN1bHQsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKKyAgICBtYXRjaFNlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlcyhyZXN1bHQsIGlu
Y2x1ZGVFbXB0eVJ1bGVzKTsKKyNlbmRpZgogCiAgICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1
bGVzKHJlc3VsdCk7CiB9CkBAIC04NDIsNyArODgzLDExIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6
Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIHJ1bGVz
LCBpCiAKICAgICAvLyBJbiBzb21lIGNhc2VzIHdlIG1heSBlbmQgdXAgbG9va2luZyB1cCBzdHls
ZSBmb3IgcmFuZG9tIGVsZW1lbnRzIGluIHRoZSBtaWRkbGUgb2YgYSByZWN1cnNpdmUgdHJlZSBy
ZXNvbHZlLgogICAgIC8vIEFuY2VzdG9yIGlkZW50aWZpZXIgZmlsdGVyIHdvbid0IGJlIHVwLXRv
LWRhdGUgaW4gdGhhdCBjYXNlIGFuZCB3ZSBjYW4ndCB1c2UgdGhlIGZhc3QgcGF0aC4KKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKKyAgICBib29sIGNhblVzZUZhc3RSZWplY3QgPSBtX2NoZWNrZXIu
cGFyZW50U3RhY2tJc0NvbnNpc3RlbnQobV9wYXJlbnROb2RlKSAmJiAhb3B0aW9ucy5zY29wZU9m
TGFzdEVsZW1lbnQ7CisjZWxzZQogICAgIGJvb2wgY2FuVXNlRmFzdFJlamVjdCA9IG1fY2hlY2tl
ci5wYXJlbnRTdGFja0lzQ29uc2lzdGVudChtX3BhcmVudE5vZGUpOworI2VuZGlmCiAKICAgICB1
bnNpZ25lZCBzaXplID0gcnVsZXMtPnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7CkBAIC04NTIsNyArODk3LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpj
b2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogcnVsZXMs
IGkKIAogICAgICAgICBTdHlsZVJ1bGUqIHJ1bGUgPSBydWxlRGF0YS5ydWxlKCk7CiAgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxNYXRjaFJ1bGUoZG9jdW1lbnQoKSwgcnVsZSk7Ci0gICAgICAgIGlmIChj
aGVja1NlbGVjdG9yKHJ1bGVEYXRhLCBvcHRpb25zLnNjb3BlKSkgeworICAgICAgICBpZiAoY2hl
Y2tTZWxlY3RvcihydWxlRGF0YSwgb3B0aW9ucy5zY29wZSwgb3B0aW9ucy5zY29wZU9mTGFzdEVs
ZW1lbnQpKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUgcnVsZSBoYXMgbm8gcHJvcGVydGllcyB0
byBhcHBseSwgdGhlbiBpZ25vcmUgaXQgaW4gdGhlIG5vbi1kZWJ1ZyBtb2RlLgogICAgICAgICAg
ICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcyA9IHJ1bGUtPnByb3BlcnRpZXMo
KTsKICAgICAgICAgICAgIGlmICghcHJvcGVydGllcyB8fCAocHJvcGVydGllcy0+aXNFbXB0eSgp
ICYmICFvcHRpb25zLmluY2x1ZGVFbXB0eVJ1bGVzKSkgewpAQCAtMjEzMyw3ICsyMTc4LDcgQEAg
UGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gU3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxlc0Zv
ckVsZW1lbnQoRWxlbWVudCogZSwgUHMKICAgICByZXR1cm4gbV9ydWxlTGlzdC5yZWxlYXNlKCk7
CiB9CiAKLWlubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgUnVs
ZURhdGEmIHJ1bGVEYXRhLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSkKK2lubGluZSBib29s
IFN0eWxlUmVzb2x2ZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCBj
b25zdCBDb250YWluZXJOb2RlKiBzY29wZSwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGVPZkxh
c3RFbGVtZW50KQogewogICAgIG1fZHluYW1pY1BzZXVkbyA9IE5PUFNFVURPOwogCkBAIC0yMTU4
LDYgKzIyMDMsNyBAQCBpbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpjaGVja1NlbGVjdG9yKGNv
bnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgY29uc3QgQ29udGFpbgogICAgIGNvbnRleHQuZWxlbWVu
dFN0eWxlID0gc3R5bGUoKTsKICAgICBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9IG1fcGFy
ZW50Tm9kZSA/IG1fcGFyZW50Tm9kZS0+cmVuZGVyU3R5bGUoKSA6IDA7CiAgICAgY29udGV4dC5z
Y29wZSA9IHNjb3BlOworICAgIGNvbnRleHQuc2NvcGVPZkxhc3RFbGVtZW50ID0gc2NvcGVPZkxh
c3RFbGVtZW50OwogICAgIGNvbnRleHQucHNldWRvU3R5bGUgPSBtX3BzZXVkb1N0eWxlOwogICAg
IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBtYXRjaCA9IG1fY2hlY2tlci5jaGVja1Nl
bGVjdG9yKGNvbnRleHQsIG1fZHluYW1pY1BzZXVkbyk7CiAgICAgaWYgKG1hdGNoICE9IFNlbGVj
dG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgK
aW5kZXggMDU1ZDgxM2VkYjU2YjA1MGNiNjEzMzcyNDU0ODUxMWRjNjBmYjIyYi4uYzc4ZGU2NmRk
YmMwYjhiMGJlMzdkNzU3NmZlOWJlM2YxNTA0NDAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgogI2lu
Y2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUnVsZUZlYXR1cmUuaCIKKyNpbmNsdWRl
ICJSdWxlU2V0LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1
ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgpA
QCAtNzQsNyArNzUsNiBAQCBjbGFzcyBNZWRpYVF1ZXJ5RXZhbHVhdG9yOwogY2xhc3MgTm9kZTsK
IGNsYXNzIFJlbmRlclJlZ2lvbjsKIGNsYXNzIFJ1bGVEYXRhOwotY2xhc3MgUnVsZVNldDsKIGNs
YXNzIFNldHRpbmdzOwogY2xhc3MgU3RhdGljQ1NTUnVsZUxpc3Q7CiBjbGFzcyBTdHlsZUJ1aWxk
ZXI7CkBAIC0yNjAsNiArMjYwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRLZXlmcmFtZVN0
eWxlKFBhc3NSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPik7CiAKKyAgICB2b2lkIGFkZFN0eWxl
UnVsZShTdHlsZVJ1bGUqLCBDb250YWluZXJOb2RlKiBzY29wZSwgUnVsZVNldCosIEFkZFJ1bGVG
bGFncyk7CisKICAgICBib29sIGNoZWNrUmVnaW9uU3R5bGUoRWxlbWVudCogcmVnaW9uRWxlbWVu
dCk7CiAKICAgICBib29sIHVzZXNTaWJsaW5nUnVsZXMoKSBjb25zdCB7IHJldHVybiAhbV9mZWF0
dXJlcy5zaWJsaW5nUnVsZXMuaXNFbXB0eSgpOyB9CkBAIC0zMzgsOSArMzQwLDExIEBAIHByaXZh
dGU6CiAgICAgfTsKIAogICAgIHN0cnVjdCBNYXRjaE9wdGlvbnMgewotICAgICAgICBNYXRjaE9w
dGlvbnMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcywgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUg
PSAwKSA6IHNjb3BlKHNjb3BlKSwgaW5jbHVkZUVtcHR5UnVsZXMoaW5jbHVkZUVtcHR5UnVsZXMp
IHsgfQorICAgICAgICBNYXRjaE9wdGlvbnMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcywgY29uc3Qg
Q29udGFpbmVyTm9kZSogc2NvcGUgPSAwKQorICAgICAgICAgICAgOiBzY29wZShzY29wZSksIGlu
Y2x1ZGVFbXB0eVJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKSwgc2NvcGVPZkxhc3RFbGVtZW50KDAp
IHsgfQogICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZTsKICAgICAgICAgYm9vbCBp
bmNsdWRlRW1wdHlSdWxlczsKKyAgICAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGVPZkxh
c3RFbGVtZW50OwogICAgIH07CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNYXRjaGVkUHJvcGVydGll
cyhNYXRjaFJlc3VsdCYsIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMsIFN0eWxl
UnVsZSogPSAwLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlID0gU2VsZWN0b3JDaGVja2VyOjpNYXRj
aEFsbCwgYm9vbCBpblJlZ2lvblJ1bGUgPSBmYWxzZSk7CkBAIC0zNTMsNiArMzU3LDEwIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBtYXRjaFVzZXJSdWxlcyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVk
ZUVtcHR5UnVsZXMpOwogICAgIHZvaWQgbWF0Y2hTY29wZWRBdXRob3JSdWxlcyhNYXRjaFJlc3Vs
dCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIHZvaWQgbWF0Y2hIb3N0UnVsZXMoTWF0
Y2hSZXN1bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKKyAgICB2b2lkIG1hdGNoU2VsZWN0UmVmZXJlbmNlQ29tYmluYXRvclJ1bGVzKE1hdGNoUmVz
dWx0JiwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CisjZW5kaWYKKwogICAgIHZvaWQgY29sbGVj
dE1hdGNoaW5nUnVsZXMoUnVsZVNldCosIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1
bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJik7CiAgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdS
dWxlc0ZvclJlZ2lvbihSdWxlU2V0KiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVs
ZUluZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmKTsKICAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1
bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiwgaW50JiBmaXJzdFJ1bGVJbmRleCwg
aW50JiBsYXN0UnVsZUluZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmKTsKQEAgLTM2MCw3ICszNjgs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc29ydE1hdGNoZWRSdWxlcygpOwogICAgIHZvaWQgc29y
dEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKE1hdGNoUmVzdWx0Jik7CiAKLSAgICBib29sIGNoZWNr
U2VsZWN0b3IoY29uc3QgUnVsZURhdGEmLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSk7Cisg
ICAgYm9vbCBjaGVja1NlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJiwgY29uc3QgQ29udGFpbmVyTm9k
ZSogc2NvcGUsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlT2ZMYXN0RWxlbWVudCk7CiAgICAg
Ym9vbCBjaGVja1JlZ2lvblNlbGVjdG9yKENTU1NlbGVjdG9yKiByZWdpb25TZWxlY3RvciwgRWxl
bWVudCogcmVnaW9uRWxlbWVudCk7CiAgICAgdm9pZCBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzKGNv
bnN0IE1hdGNoUmVzdWx0JiwgY29uc3QgRWxlbWVudCopOwogICAgIGVudW0gU3R5bGVBcHBsaWNh
dGlvblBhc3MgewpAQCAtMzkxLDYgKzM5OSw5IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFJ1bGVT
ZXQ+IG1fYXV0aG9yU3R5bGU7CiAgICAgT3duUHRyPFJ1bGVTZXQ+IG1fdXNlclN0eWxlOwogCisg
ICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IENvbnRhaW5lck5vZGUqLCBPd25QdHI8UnVsZVNldD4g
PiBTZWxlY3RSZWZlcmVuY2VDb21iaW5hdG9yUnVsZVNldE1hcDsKKyAgICBTZWxlY3RSZWZlcmVu
Y2VDb21iaW5hdG9yUnVsZVNldE1hcCBtX3NlbGVjdFJlZmVyZW5jZUNvbWJpbmF0b3JSdWxlU2V0
TWFwOworCiAgICAgUnVsZUZlYXR1cmVTZXQgbV9mZWF0dXJlczsKICAgICBPd25QdHI8UnVsZVNl
dD4gbV9zaWJsaW5nUnVsZVNldDsKICAgICBPd25QdHI8UnVsZVNldD4gbV91bmNvbW1vbkF0dHJp
YnV0ZVJ1bGVTZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNl
cnRpb25Qb2ludC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQu
aAppbmRleCBkNGI3ZDdkMGQ5MTMwM2M2MDcwZDU5YTkxZWM2OGQ3NmUzZGZiNGI1Li5lM2U0ZDBl
M2VkN2ZlODg4Y2Q4MWE1MzlmYTE1NzdmMjhlYmQ5YTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKQEAgLTE3MSw2ICsxNzEsMzcgQEAgaW5saW5lIElu
c2VydGlvblBvaW50KiByZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqIHByb2plY3RlZE5v
ZGUpCiAgICAgcmV0dXJuIGluc2VydGlvblBvaW50OwogfQogCisvLyBGSVhNRTogQ29sbGVjdHMg
b25seSBIVE1MQ29udGVudEVsZW1lbnQgc2luY2UgYSBzZWxlY3QgcmVmZXJlbmNlIGNvbWJpbmF0
b3IgY2FuIGJlCisvLyBhcHBsaWVkIHRvIG9ubHkgPGNvbnRlbnQ+IGVsZW1lbnRzLgoraW5saW5l
IHZvaWQgY29sbGVjdEFsbE1pZHBvaW50SW5zZXJ0aW9uUG9pbnRzKGNvbnN0IE5vZGUqIHByb2pl
Y3RlZE5vZGUsIFZlY3RvcjxJbnNlcnRpb25Qb2ludCosIDg+JiByZXN1bHRzKQoreworICAgIElu
c2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IDA7CisgICAgY29uc3QgTm9kZSogY3VycmVu
dCA9IHByb2plY3RlZE5vZGU7CisKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpZiAoRWxl
bWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY3VycmVu
dCkpIHsKKyAgICAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7CisgICAgICAg
ICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBzaGFkb3ctPmRpc3RyaWJ1dG9y
KCkuZmluZEluc2VydGlvblBvaW50Rm9yKHByb2plY3RlZE5vZGUpKSB7CisgICAgICAgICAgICAg
ICAgY3VycmVudCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnQg
PSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKGluc2VydGlvblBv
aW50KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIGlmIChOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlRm9yRGlzdHJpYnV0aW9u
KGN1cnJlbnQpKSB7CisgICAgICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8g
PSBwYXJlbnQtPmlzU2hhZG93Um9vdCgpID8gdG9TaGFkb3dSb290KHBhcmVudCktPmFzc2lnbmVk
VG8oKSA6IDApIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAg
ICAgICAgICAgICBpbnNlcnRpb25Qb2ludCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQoaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSW5zZXJ0aW9uUG9pbnRfaApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGZkNzhmODA3NjViZDhmODhhZGI3ZDk0MzBjNDdmMzk4ZGY2NDk4OGEuLmZmMzVmNjA5
ODkwNmFjMjU3ZjRkYjRlOTQ1MmI1OWIyZmY2MjUwMWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxMi0xMS0wNyAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W1NoYWRvdyBET01dIEltcGxlbWVudHMgYSAvc2VsZWN0LyByZWZlcmVuY2UgY29tYmluYXRvci4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMTY5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Rv
bS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLWV4cGVjdGVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3It
bmVzdGVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9z
ZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItbmVzdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3Itc2VsZWN0b3ItbGlz
dC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2VsZWN0
LXJlZmVyZW5jZS1jb21iaW5hdG9yLXNlbGVjdG9yLWxpc3QuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci5odG1sOiBBZGRl
ZC4KKwogMjAxMi0xMS0yOCAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgTm9kZTo6Y29tcGFyZURvY3VtZW50UG9zaXRpb24gcmV0dXJucyB3cm9uZyB2YWx1ZSBm
b3IgYSBub2RlIGluIHRoZSBkaWZmZXJlbnQgc2hhZG93IHRyZWUuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLWV4cGVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1j
b21iaW5hdG9yLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE0OTU5Yjg2MjQwMjkyNWUwN2Vl
ODZmNWI4MmFkNTBjMTBkN2RhMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItZXhwZWN0ZWQuaHRtbApAQCAt
MCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJz
YW5kYm94Ij4KKyAgPGRpdj4KKyAgICA8ZGl2PnNoYWRvdyBjaGlsZDwvZGl2PgorICAgIDxkaXY+
CisgICAgICA8ZGl2PgorICAgICAgICA8ZGl2PgorICAgICAgICAgIDxkaXYgc3R5bGU9ImNvbG9y
OiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgICAgICAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4i
PmdyZWVuPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cisg
ICAgPGRpdiBzdHlsZT0iY29sb3I6IGJsdWUiPmJsdWU8L2Rpdj4KKyAgICA8ZGl2IHN0eWxlPSJj
b2xvcjogcmVkIj5yZWQ8L2Rpdj4KKyAgPC9kaXY+CisgIDxkaXY+CisgICAgPGRpdj4KKyAgICAg
IDxkaXY+CisgICAgICAgIDxkaXY+U3R5bGUgc2hvdWxkIG5vdCBiZSBhcHBsaWVkLjwvZGl2Pgor
ICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29t
YmluYXRvci1uZXN0ZWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3ItbmVzdGVkLWV4cGVjdGVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTUxODM0NDJhMDc2YzdmODFhOWM1NDIxMzFlNzlmYjc3NmYwMTFjYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNv
bWJpbmF0b3ItbmVzdGVkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhv
c3QiPgorICAgIDxkaXYgaWQ9Im5lc3RlZC1ob3N0Ij4KKyAgICAgIHRleHQxCisgICAgICA8ZGl2
PgorICAgICAgICB0ZXh0MgorICAgICAgICA8ZGl2PgorICAgICAgICAgIHRleHQzCisgICAgICAg
ICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgICAgICAgIDxkaXY+
bm9ybWFsPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cisg
IDwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLW5lc3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRv
ci1uZXN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZWI0ZmU0MWY5MzAwNzM2OGZmMTQ5NDdhYzc0NTQ5
YWNjOGFkY2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L3NlbGVjdC1yZWZlcmVuY2UtY29tYmluYXRvci1uZXN0ZWQuaHRtbApAQCAtMCwwICsxLDMyIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5k
Ym94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2RpdiBjb250ZW50IC9z
ZWxlY3QvIGRpdiBjb250ZW50IC9zZWxlY3QvIGRpdi5ncmVlbiB7IGNvbG9yOiBncmVlbjsgfSc7
CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3Nh
bmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwK
KyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnZGl2JywgeydpZCc6ICduZXN0ZWQtaG9zdCd9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgndGV4dDEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCd0ZXh0MicpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3Qn
OiAnZGl2J30pKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7J2NsYXNzJzogJ2dyZWVuJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCd0ZXh0MycpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7fSkpKSksCisgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdncmVlbid9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpLAorICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVy
ZW5jZS1jb21iaW5hdG9yLXNlbGVjdG9yLWxpc3QtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3Itc2VsZWN0b3ItbGlz
dC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1MjJjNzIyNTk2NTA4MmM2NTRhNGM0ZGU2MjRl
NDFhOGEwNDRkM2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLXNlbGVjdG9yLWxpc3QtZXhwZWN0ZWQuaHRt
bApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2
IGlkPSJzYW5kYm94Ij4KKyAgPGRpdj4KKyAgICA8ZGl2IGlkPSJob3N0Ij4KKyAgICAgIDxkaXYg
c3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW4xPC9kaXY+CisgICAgICA8ZGl2IHN0eWxlPSJjb2xv
cjogZ3JlZW4iPmdyZWVuMjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXY+bm9ybWFsPC9kaXY+
CisgIDwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLXNlbGVjdG9y
LWxpc3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNl
LWNvbWJpbmF0b3Itc2VsZWN0b3ItbGlzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiYzlkNjU2YmE2N2Jj
YzAwZWI5MmJjYWQ4YjIwYjllMWI3ZmY2OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLXNlbGVjdG9yLWxp
c3QuaHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93
U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5u
ZXJIVE1MID0gJ2NvbnRlbnQgL3NlbGVjdC8gZGl2LCBkaXYuaGVsbG8geyBjb2xvcjogZ3JlZW47
IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7
CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNo
YWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
eydjbGFzcyc6ICdoZWxsbyd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4xJykpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHt9KSksCisgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbjInKSkpLAorICAgICAgICAgICAgICBj
cmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnaGVsbG8nfSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSkpKTsKKworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
c2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvc2VsZWN0LXJlZmVyZW5jZS1jb21iaW5hdG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjMzNzYy
ZDIxNzM4YTkxMTdjYTI5OTQ1YjQzMGU4YWU3ZWU3ZDEyZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zZWxlY3QtcmVmZXJlbmNlLWNvbWJpbmF0b3IuaHRt
bApAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1M
ID0gJ2RpdiBjb250ZW50IC9zZWxlY3QvIGRpdiBkaXYgeyBjb2xvcjogZ3JlZW47IH0nCisgICAg
KyAnICNzaGFkb3ctY29udGVudCAvc2VsZWN0LyBkaXYuYmx1ZSB7IGNvbG9yOiBibHVlOyB9Jwor
ICAgICsgJyAjc2hhZG93LWNvbnRlbnQgL3NlbGVjdC8gZGl2LnJlZCB7IGNvbG9yOiByZWQ7IH0n
OworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7Citz
YW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30s
CisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFk
b3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3NoYWRvdyBjaGls
ZCcpKSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnZGl2
LmdyZWVuJ30pKSksCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J2lk
JzogJ3NoYWRvdy1jb250ZW50JywgJ3NlbGVjdCc6ICdkaXYnfSkpLAorICAgICAgICAgICAgICBj
cmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnZ3JlZW4nfSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpLAorICAgICAgICAgICAgICBj
cmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnYmx1ZSd9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2JsdWUnKSksCisgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnZGl2JywgeydjbGFzcyc6ICdyZWQnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCdyZWQnKSkpKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ290aGVyLWhvc3QnfSwKKyAgICAgICAgICAgICAg
Y3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jywge30pKSks
CisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdTdHlsZSBzaG91bGQgbm90IGJlIGFwcGxpZWQu
JykpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180316</attachid>
            <date>2012-12-20 03:38:48 -0800</date>
            <delta_ts>2013-01-06 21:22:25 -0800</delta_ts>
            <desc>Implement a ::distributed pseudo elements</desc>
            <filename>bug-82169-20121220203604.patch</filename>
            <type>text/plain</type>
            <size>46119</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzOGUwYjViN2Y3MjM0ODI0M2E2ZmRhNzhhMmEyNWRhODg5Y2ZiNDA1Li5m
ODZhODFlMmZkZTI0OWFhZGEyNmM4YjYxY2IyNTU0Nzg1ZmE0NjVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsOTkgQEAKKzIwMTItMTAtMjMgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBJbXBsZW1lbnRzIGEgJzo6ZGlzdHJpYnV0ZWQoKScg
cHNldWRvIGVsZW1lbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MjE2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEltcGxlbWVudHMgYSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxlbWVudC4KKyAg
ICAgICAgU2VlIHRoZSBTaGFkb3cgRE9NIHNwZWNpZmljYXRpb24gZm9yIHRoZSBkZXRhaWwuCisK
KyAgICAgICAgaHR0cDovL2R2Y3MudzMub3JnL2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlw
L3NwZWMvc2hhZG93L2luZGV4Lmh0bWwjc2VsZWN0aW5nLW5vZGVzLWRpc3RyaWJ1dGVkLXRvLWlu
c2VydGlvbi1wb2ludHMKKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBzZWxlY3Qg
cmVmZXJlbmNlIGNvbWJpbmF0b3IgYXMgdGhlIGZpcnN0CisgICAgICAgIHJlZmVyZW5jZSBjb21i
aW5hdG9yIGltcGxlbWVudGVkIGluIFdlYktpdC4gIFNpbmNlIFdlYktpdCBoYXMgbm90CisgICAg
ICAgIHN1cHBvcnRlZCByZWZlcmVuY2UgY29tYmluYXRvcnMgc28gZmFyLCBDU1MgZ3JhbW1lciBh
bmQgcGFyc2VyIGFyZQorICAgICAgICB1cGRhdGVkIHRvIHN1cHBvcnQgdGhlIG5ldyBzeW50YXgg
dXNlZCBpbiBTZWxlY3RvciBMZXZlbDQncworICAgICAgICByZWZlcmVuY2UgY29tYmluYXRvcnMu
CisKKyAgICAgICAgQSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxlbWVudCBpcyB0aGUgZmly
c3QgQ1NTIHJ1bGUgd2hpY2gKKyAgICAgICAgY3Jvc3NlcyB0aGUgc2hhZG93IGJvdW5kYXJ5IGZy
b20gYSBzaGFkb3cgdHJlZSB0byB0aGUgdHJlZSBvZiBpdHMKKyAgICAgICAgc2hhZG93IGhvc3Qu
IFRoYXQgbWVhbnMgYSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxlbWVudCBpcworICAgICAg
ICBkZWZpbmVkIGluIHNoYWRvdyB0cmVlLCBidXQgdGhlIG5vZGUgd2hpY2ggaXMgbWF0Y2hlZCBp
biB0aGUgcnVsZQorICAgICAgICBpcyBvdXRzaWRlIG9mIHRoZSBzaGFkb3cgdHJlZS4KKworICAg
ICAgICBTbyB3ZSBjYW5ub3QgcHJlZGljdCBhIHNjb3BlIHdoZXJlIHRoZSBtYXRjaGVkIG5vZGUg
d2lsbCBiZQorICAgICAgICBiZWZvcmVoYW5kLiAgQ3VycmVudCBDU1MgaW1wbGVtZW50YXRpb24g
YXNzdW1lcyBldmVyeSBmaW5hbCB0YXJnZXQKKyAgICAgICAgaXMgYXBwbGllZCBpbiBjdXJyZW50
IHNjb3BlLgorCisgICAgICAgIFRvIG92ZXJjb21lIHRoaXMgaXNzdWUsIEkgdXBkYXRlZCBTdHls
ZVJlc29sdmVyIHNvIHRoYXQgaXQgaGFzCisgICAgICAgIFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNl
dE1hcC4gVGhlIFJ1bGVTZXRNYXAgaXMgdXNlZCB0byBrZWVwIHRyYWNrCisgICAgICAgIG9mIFJ1
bGVTZXQgbWFwcGVkIGJ5IGEgc2NvcGUgd2hlcmUgYSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8K
KyAgICAgICAgZWxlbWVudCBpcyBvcmlnaW5hbGx5IGRlZmluZWQuIFRoZSBzY29wZSBpcyB1c2Vk
IHRvIGNoZWNrIHdoZXRoZXIKKyAgICAgICAgdGhlIGxhc3QgZWxlbWVudCBtYXRjaGVkIGJ5IFNl
bGVjdG9yQ2hlY2tlciBleGlzdHMgaW4gdGhlIHNjb3BlCisgICAgICAgIHdoZXJlIHRoZSBydWxl
IGlzIG9yaWdpbmFsbHkgZGVmaW5lZC4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC1zdXBwb3J0LXNlbGVjdG9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50Lmh0
bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lwL3NjcmlwdHMvcnVsZV9iaXNvbi5weToKKyAgICAg
ICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpkZXRlY3RGdW5jdGlvblR5cGVUb2tlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5h
bWUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2Vy
VmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpDU1NQYXJz
ZXJTZWxlY3Rvcik6CisgICAgICAgICogY3NzL0NTU1BhcnNlclZhbHVlcy5oOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OmZ1bmN0aW9uQXJndW1lbnRTZWxlY3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6c2V0RnVuY3Rpb25Bcmd1bWVudFNl
bGVjdG9yKToKKyAgICAgICAgKENTU1BhcnNlclNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlclNlbGVjdG9yOjppc1BzZXVkb0Rpc3RyaWJ1dGVkRWxlbWVudCk6CisgICAgICAg
ICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpw
c2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpuYW1lVG9Qc2V1ZG9UeXBlTWFwKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KToKKyAgICAgICAgKiBjc3MvQ1NTU2Vs
ZWN0b3IuaDoKKyAgICAgICAgKENTU1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yOjppc0Rpc3RyaWJ1dGVkUHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjppc1NoYWRvd0Rpc3RyaWJ1dGVkKToKKyAg
ICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoU2VsZWN0b3JIYXNTaGFkb3dEaXN0cmlidXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3Rvckhhc1NoYWRvd0Rpc3RyaWJ1dGVkOjpvcGVyYXRvcigpKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NlbGVjdG9yTGlzdDo6aGFzU2hhZG93RGlzdHJpYnV0ZWRBdCk6CisgICAgICAgICog
Y3NzL0NTU1NlbGVjdG9yTGlzdC5oOgorICAgICAgICAoQ1NTU2VsZWN0b3JMaXN0KToKKyAgICAg
ICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSdWxlU2V0OjphZGRSdWxl
c0Zyb21TaGVldCk6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNvbGxlY3RJZGVudGlmaWVySGFzaGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcik6CisgICAgICAg
ICogY3NzL1NlbGVjdG9yQ2hlY2tlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVj
a2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dDo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQpOgor
ICAgICAgICAoU2VsZWN0b3JDaGVja2luZ0NvbnRleHQpOgorICAgICAgICAqIGNzcy9TdHlsZVJl
c29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnJlc2V0QXV0aG9y
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRkU3R5bGVSdWxlKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bWF0
Y2hTaGFkb3dEaXN0cmlidXRlZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2
ZXI6Om1hdGNoQXV0aG9yUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVz
b2x2ZXI6OmNoZWNrU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6Cisg
ICAgICAgIChTdHlsZVJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6
Ok1hdGNoT3B0aW9uczo6TWF0Y2hPcHRpb25zKToKKyAgICAgICAgKE1hdGNoT3B0aW9ucyk6Cisg
ICAgICAgICogaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEFsbE1pZHBvaW50SW5zZXJ0aW9uUG9pbnRzKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoKKwogMjAx
Mi0xMi0xOCAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
SW5wdXQgZWxlbWVudHMgd2l0aCBkZWZhdWx0IHRvdWNoIGhhbmRsZXJzIGRvbid0IHVwZGF0ZSBo
YW5kbGVyIGNvdW50cyB3aGVuIGNoYW5naW5nIGRvY3VtZW50cwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXAvc2NyaXB0cy9ydWxlX2Jpc29uLnB5IGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXAvc2NyaXB0cy9ydWxlX2Jpc29uLnB5Cm9sZCBtb2RlIDEwMDY0NApuZXcg
bW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnku
aW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCmluZGV4IGZhMWM2ODg5MWQy
NzA4ZTM3OWUwNmMxOTk5MTc1MGRiYTQ3MTM2NGIuLmJkOWViYTI4YTY1MTgwMTEwMjY0NTk0NWIw
ZDNmZDA4NzU1OGUxYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFy
LnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgpAQCAtNjEsNyAr
NjEsMTEgQEAgc3RhdGljIGlubGluZSBpbnQgY3NzeXllcnJvcih2b2lkKiwgY29uc3QgY2hhciop
CiAKICV9CiAKKyNpZiBFTkFCTEVfU0hBRE9XX0RPTQorJWV4cGVjdCA2NgorI2Vsc2UKICVleHBl
Y3QgNjUKKyNlbmRpZgogCiAlbm9uYXNzb2MgTE9XRVNUX1BSRUMKIApAQCAtMTc3LDYgKzE4MSw3
IEBAIHN0YXRpYyBpbmxpbmUgaW50IGNzc3l5ZXJyb3Iodm9pZCosIGNvbnN0IGNoYXIqKQogJXRv
a2VuIDxzdHJpbmc+IENVRUZVTkNUSU9OCiAjZW5kaWYKICV0b2tlbiA8c3RyaW5nPiBOT1RGVU5D
VElPTgorJXRva2VuIDxzdHJpbmc+IERJU1RSSUJVVEVERlVOQ1RJT04KICV0b2tlbiA8c3RyaW5n
PiBDQUxDRlVOQ1RJT04KICV0b2tlbiA8c3RyaW5nPiBNSU5GVU5DVElPTgogJXRva2VuIDxzdHJp
bmc+IE1BWEZVTkNUSU9OCkBAIC0xMTMwLDEyICsxMTM1LDEyIEBAIHNpbXBsZV9zZWxlY3RvcjoK
ICAgICB8IGVsZW1lbnRfbmFtZSBzcGVjaWZpZXJfbGlzdCB7CiAgICAgICAgICQkID0gJDI7CiAg
ICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhF
bGVtZW50TmFtZShudWxsQXRvbSwgJDEsICQkKTsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT51
cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKG51bGxBdG9tLCAkMSwgJCQpOwogICAgIH0K
ICAgICB8IHNwZWNpZmllcl9saXN0IHsKICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgaWYgKCQk
KQotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKG51
bGxBdG9tLCBzdGFyQXRvbSwgJCQpOworICAgICAgICAgICAgJCQgPSBwYXJzZXItPnVwZGF0ZVNw
ZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20sIHN0YXJBdG9tLCAkJCk7CiAgICAgfQog
ICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIGVsZW1lbnRfbmFtZSB7CiAgICAgICAgICQkID0gcGFy
c2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CkBAIC0xMTQ0LDEyICsxMTQ5LDEyIEBAIHNp
bXBsZV9zZWxlY3RvcjoKICAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBlbGVtZW50X25hbWUgc3Bl
Y2lmaWVyX2xpc3QgewogICAgICAgICAkJCA9ICQzOwogICAgICAgICBpZiAoJCQpCi0gICAgICAg
ICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsICQyLCAkJCk7
CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFt
ZSgkMSwgJDIsICQkKTsKICAgICB9CiAgICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3Igc3BlY2lmaWVy
X2xpc3QgewogICAgICAgICAkJCA9ICQyOwogICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICBw
YXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsIHN0YXJBdG9tLCAkJCk7
CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFt
ZSgkMSwgc3RhckF0b20sICQkKTsKICAgICB9CiAgIDsKIApAQCAtMTM0MSw2ICsxMzQ2LDE5IEBA
IHBzZXVkbzoKICAgICAgICAgICAgICQkID0gMDsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEVf
U0hBRE9XX0RPTQorICAgIHwgJzonICc6JyBESVNUUklCVVRFREZVTkNUSU9OIG1heWJlX3NwYWNl
IHNlbGVjdG9yIG1heWJlX3NwYWNlICcpJyB7CisgICAgICAgIGlmICghJDUpCisgICAgICAgICAg
ICAkJCA9IDA7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0
ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rv
cjo6UHNldWRvRWxlbWVudCk7CisgICAgICAgICAgICAkJC0+c2V0RnVuY3Rpb25Bcmd1bWVudFNl
bGVjdG9yKCQ1KTsKKyAgICAgICAgICAgICQzLmxvd2VyKCk7CisgICAgICAgICAgICAkJC0+c2V0
VmFsdWUoJDMpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCiAgICAgLy8gdXNlIGJ5IDotd2Vi
a2l0LWFueS4KICAgICAvLyBGSVhNRTogc2hvdWxkIHdlIHN1cHBvcnQgZ2VuZXJpYyBzZWxlY3Rv
cnMgaGVyZSBvciBqdXN0IHNpbXBsZV9zZWxlY3RvcnM/CiAgICAgLy8gVXNlIHNpbXBsZV9zZWxl
Y3Rvcl9saXN0IGZvciBub3cgdG8gbWF0Y2ggLW1vei1hbnkuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwCmluZGV4IDY5OTViMzFmYjVhZTliMmJiN2YyN2Q4ZGFkODQwOGMwMzIzYmE2YmYuLjVlNjY1
YzY2ZGFhZjg2YmU3MDhjODU0NzA3OTU5YTA2Nzg3NjdjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXIuY3BwCkBAIC05NDk5LDYgKzk0OTksOCBAQCBpbmxpbmUgdm9pZCBDU1NQYXJzZXI6OmRldGVj
dEZ1bmN0aW9uVHlwZVRva2VuKGludCBsZW5ndGgpCiAgICAgY2FzZSAxMToKICAgICAgICAgaWYg
KGlzRXF1YWxUb0NTU0lkZW50aWZpZXIobmFtZSwgIm50aC1vZi10eXBlIikpCiAgICAgICAgICAg
ICBtX3BhcnNpbmdNb2RlID0gTnRoQ2hpbGRNb2RlOworICAgICAgICBlbHNlIGlmIChpc0VxdWFs
VG9DU1NJZGVudGlmaWVyKG5hbWUsICJkaXN0cmlidXRlZCIpKQorICAgICAgICAgICAgbV90b2tl
biA9IERJU1RSSUJVVEVERlVOQ1RJT047CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgMTQ6
CkBAIC0xMDYwMSwxNiArMTA2MDMsMjkgQEAgUXVhbGlmaWVkTmFtZSBDU1NQYXJzZXI6OmRldGVy
bWluZU5hbWVJbk5hbWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY28KICAgICBy
ZXR1cm4gUXVhbGlmaWVkTmFtZShwcmVmaXgsIGxvY2FsTmFtZSwgbV9zdHlsZVNoZWV0LT5kZXRl
cm1pbmVOYW1lc3BhY2UocHJlZml4KSk7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjp1cGRhdGVTcGVj
aWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlZml4
LCBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnROYW1lLCBDU1NQYXJzZXJTZWxlY3Rvciogc3Bl
Y2lmaWVycykKK0NTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnNX
aXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VQcmVmaXgsIGNvbnN0
IEF0b21pY1N0cmluZyYgZWxlbWVudE5hbWUsIENTU1BhcnNlclNlbGVjdG9yKiBzcGVjaWZpZXJz
KQogewogICAgIEF0b21pY1N0cmluZyBkZXRlcm1pbmVkTmFtZXNwYWNlID0gbmFtZXNwYWNlUHJl
Zml4ICE9IG51bGxBdG9tICYmIG1fc3R5bGVTaGVldCA/IG1fc3R5bGVTaGVldC0+ZGV0ZXJtaW5l
TmFtZXNwYWNlKG5hbWVzcGFjZVByZWZpeCkgOiBtX2RlZmF1bHROYW1lc3BhY2U7CiAgICAgUXVh
bGlmaWVkTmFtZSB0YWcgPSBRdWFsaWZpZWROYW1lKG5hbWVzcGFjZVByZWZpeCwgZWxlbWVudE5h
bWUsIGRldGVybWluZWROYW1lc3BhY2UpOwotICAgIGlmICghc3BlY2lmaWVycy0+aXNDdXN0b21Q
c2V1ZG9FbGVtZW50KCkpIHsKKyAgICBpZiAoIXNwZWNpZmllcnMtPmlzQ3VzdG9tUHNldWRvRWxl
bWVudCgpICYmICFzcGVjaWZpZXJzLT5pc1BzZXVkb0Rpc3RyaWJ1dGVkRWxlbWVudCgpKSB7CiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICAgICBpZiAoIShzcGVjaWZpZXJzLT5wc2V1ZG9U
eXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0N1ZSkpCiAjZW5kaWYKICAgICAgICAgICAgIHNw
ZWNpZmllcnMtPnNldFRhZyh0YWcpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBz
cGVjaWZpZXJzOworICAgIH0KKworICAgIGlmIChzcGVjaWZpZXJzLT5pc1BzZXVkb0Rpc3RyaWJ1
dGVkRWxlbWVudCgpKSB7CisgICAgICAgIENTU1BhcnNlclNlbGVjdG9yKiBhcmd1bWVudFNlbGVj
dG9yID0gc3BlY2lmaWVycy0+ZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKCk7CisgICAgICAgIEFT
U0VSVChhcmd1bWVudFNlbGVjdG9yKTsKKyAgICAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGVuZCA9
IGFyZ3VtZW50U2VsZWN0b3I7CisgICAgICAgIHdoaWxlIChlbmQtPnRhZ0hpc3RvcnkoKSkKKyAg
ICAgICAgICAgIGVuZCA9IGVuZC0+dGFnSGlzdG9yeSgpOworICAgICAgICBPd25QdHI8Q1NTUGFy
c2VyU2VsZWN0b3I+IGVsZW1lbnROYW1lU2VsZWN0b3IgPSBhZG9wdFB0cihuZXcgQ1NTUGFyc2Vy
U2VsZWN0b3IpOworICAgICAgICBlbGVtZW50TmFtZVNlbGVjdG9yLT5zZXRUYWcodGFnKTsKKyAg
ICAgICAgZW5kLT5zZXRUYWdIaXN0b3J5KGVsZW1lbnROYW1lU2VsZWN0b3IucmVsZWFzZSgpKTsK
KyAgICAgICAgZW5kLT5zZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6U2hhZG93RGlzdHJpYnV0ZWQp
OworICAgICAgICByZXR1cm4gYXJndW1lbnRTZWxlY3RvcjsKICAgICB9CiAKICAgICBDU1NQYXJz
ZXJTZWxlY3RvciogbGFzdFNoYWRvd0Rlc2NlbmRhbnQgPSBzcGVjaWZpZXJzOwpAQCAtMTA2MjMs
NyArMTA2MzgsNyBAQCB2b2lkIENTU1BhcnNlcjo6dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50
TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVByZQogCiAgICAgaWYgKGxhc3RTaGFk
b3dEZXNjZW5kYW50LT50YWdIaXN0b3J5KCkpIHsKICAgICAgICAgbGFzdFNoYWRvd0Rlc2NlbmRh
bnQtPnRhZ0hpc3RvcnkoKS0+c2V0VGFnKHRhZyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHNwZWNpZmllcnM7CiAgICAgfQogCiAgICAgLy8gRm9yIHNoYWRvdy1JRCBwc2V1ZG8t
ZWxlbWVudHMgdG8gYmUgY29ycmVjdGx5IG1hdGNoZWQsIHRoZSBTaGFkb3dEZXNjZW5kYW50IGNv
bWJpbmF0b3IgaGFzIHRvIGJlIHVzZWQuCkBAIC0xMDYzMiw2ICsxMDY0Nyw3IEBAIHZvaWQgQ1NT
UGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZXNwYWNlUHJlCiAgICAgZWxlbWVudE5hbWVTZWxlY3Rvci0+c2V0VGFnKHRhZyk7CiAg
ICAgbGFzdFNoYWRvd0Rlc2NlbmRhbnQtPnNldFRhZ0hpc3RvcnkoZWxlbWVudE5hbWVTZWxlY3Rv
ci5yZWxlYXNlKCkpOwogICAgIGxhc3RTaGFkb3dEZXNjZW5kYW50LT5zZXRSZWxhdGlvbihDU1NT
ZWxlY3Rvcjo6U2hhZG93RGVzY2VuZGFudCk7CisgICAgcmV0dXJuIHNwZWNpZmllcnM7CiB9CiAK
IENTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnMoQ1NTUGFyc2Vy
U2VsZWN0b3IqIHNwZWNpZmllcnMsIENTU1BhcnNlclNlbGVjdG9yKiBuZXdTcGVjaWZpZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggMzkyZmY5ODQwYzVhNmM4MzljMmYyMTQ0MzdhYjc1ODRi
YjcyNWE5ZC4uZTFhNGUyZjc1MjFkZWIzYTRjZTJjMDMwYTUxODY1Y2YxNWYyYjBjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuaApAQCAtMzA5LDcgKzMwOSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
YWRkTmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJp
bmcmIHVyaSk7CiAgICAgUXVhbGlmaWVkTmFtZSBkZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoY29u
c3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKTsK
LSAgICB2b2lkIHVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lc3BhY2VQcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudE5hbWUsIENT
U1BhcnNlclNlbGVjdG9yKik7CisgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIHVwZGF0ZVNwZWNpZmll
cnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VQcmVmaXgsIGNv
bnN0IEF0b21pY1N0cmluZyYgZWxlbWVudE5hbWUsIENTU1BhcnNlclNlbGVjdG9yKik7CiAgICAg
Q1NTUGFyc2VyU2VsZWN0b3IqIHVwZGF0ZVNwZWNpZmllcnMoQ1NTUGFyc2VyU2VsZWN0b3IqLCBD
U1NQYXJzZXJTZWxlY3RvciopOwogCiAgICAgdm9pZCBpbnZhbGlkQmxvY2tIaXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKaW5kZXggZDIzYjg1ODVkNWQ3YmI4ZWIwZjI2
ODIzNGI2ZWQwNmE1ODgxZGYyNy4uNTAwZDdiMTQwMDRhMjRlYmMzNTNkMmJmZWVjMTczMzYzMGE0
MzRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKQEAgLTE0Niw2ICsx
NDYsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXJWYWx1ZTo6Y3JlYXRlQ1NTVmFs
dWUoKQogCiBDU1NQYXJzZXJTZWxlY3Rvcjo6Q1NTUGFyc2VyU2VsZWN0b3IoKQogICAgIDogbV9z
ZWxlY3RvcihhZG9wdFB0cihmYXN0TmV3PENTU1NlbGVjdG9yPigpKSkKKyAgICAsIG1fZnVuY3Rp
b25Bcmd1bWVudFNlbGVjdG9yKDApCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1
ZXMuaAppbmRleCAxMzAxYjFjZTBlMTEzNzIzY2NmODIxNjI4ZWUwNWUyZTMxMDIzNjdiLi4yZGIw
NGM0NjQ4ZTA5YTYwOGZlNzk0Y2RjYjYxZmFlZWYyMzIxM2FiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlclZhbHVlcy5oCkBAIC0xODYsOCArMTg2LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
YWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+JiBz
ZWxlY3RvclZlY3Rvcik7CiAKKyAgICBDU1NQYXJzZXJTZWxlY3RvciogZnVuY3Rpb25Bcmd1bWVu
dFNlbGVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3I7IH0K
KyAgICB2b2lkIHNldEZ1bmN0aW9uQXJndW1lbnRTZWxlY3RvcihDU1NQYXJzZXJTZWxlY3Rvciog
c2VsZWN0b3IpIHsgbV9mdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IgPSBzZWxlY3RvcjsgfQorCiAg
ICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgcHNldWRvVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2VsZWN0b3ItPnBzZXVkb1R5cGUoKTsgfQogICAgIGJvb2wgaXNDdXN0b21Qc2V1ZG9FbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvci0+aXNDdXN0b21Qc2V1ZG9FbGVtZW50KCk7IH0K
KyAgICBib29sIGlzUHNldWRvRGlzdHJpYnV0ZWRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9z
ZWxlY3Rvci0+aXNEaXN0cmlidXRlZFBzZXVkb0VsZW1lbnQoKTsgfQogCiAgICAgYm9vbCBpc1Np
bXBsZSgpIGNvbnN0IHsgcmV0dXJuICFtX3RhZ0hpc3RvcnkgJiYgbV9zZWxlY3Rvci0+aXNTaW1w
bGUoKTsgfQogICAgIGJvb2wgaGFzU2hhZG93RGVzY2VuZGFudCgpIGNvbnN0OwpAQCAtMjAwLDYg
KzIwNCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgT3duUHRyPENTU1NlbGVjdG9yPiBtX3Nl
bGVjdG9yOwogICAgIE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gbV90YWdIaXN0b3J5OworCisg
ICAgQ1NTUGFyc2VyU2VsZWN0b3IqIG1fZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yOwogfTsKIAog
aW5saW5lIGJvb2wgQ1NTUGFyc2VyU2VsZWN0b3I6Omhhc1NoYWRvd0Rlc2NlbmRhbnQoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXggOTU2ZTQ3ZmI2MTMzMWU3MDljZjFm
ZDRlOTgxZWNhNjVjNjJmMDBhNi4uYjcwODA1YjNlOTYzZTcwZTQzN2U2N2I2MDI1YWQ0NzY0MWYz
ZDhkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCkBAIC0xMzksNiArMTM5LDggQEAg
UHNldWRvSWQgQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVkb1R5cGUgdHlwZSkKICAgICAgICAg
cmV0dXJuIEJFRk9SRTsKICAgICBjYXNlIFBzZXVkb0FmdGVyOgogICAgICAgICByZXR1cm4gQUZU
RVI7CisgICAgY2FzZSBQc2V1ZG9EaXN0cmlidXRlZDoKKyAgICAgICAgcmV0dXJuIERJU1RSSUJV
VEVEOwogICAgIGNhc2UgUHNldWRvU2Nyb2xsYmFyOgogICAgICAgICByZXR1cm4gU0NST0xMQkFS
OwogICAgIGNhc2UgUHNldWRvU2Nyb2xsYmFyQnV0dG9uOgpAQCAtMjU3LDYgKzI1OSw3IEBAIHN0
YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4q
IG5hbWVUb1BzZXVkb1R5cGVNYXAoCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIGZpcnN0TGluZSwgKCJmaXJzdC1saW5lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmaXJzdE9m
VHlwZSwgKCJmaXJzdC1vZi10eXBlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmdWxsUGFnZU1lZGlh
LCAoIi13ZWJraXQtZnVsbC1wYWdlLW1lZGlhIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBkaXN0cmli
dXRlZCwgKCJkaXN0cmlidXRlZCgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG50aENoaWxkLCAoIm50
aC1jaGlsZCgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG50aE9mVHlwZSwgKCJudGgtb2YtdHlwZSgi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIG50aExhc3RDaGlsZCwgKCJudGgtbGFzdC1jaGlsZCgiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CkBAIC0zMzUsNiArMzM4LDcgQEAg
c3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBl
PiogbmFtZVRvUHNldWRvVHlwZU1hcCgKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGZ1
bGxQYWdlTWVkaWEuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvRnVsbFBhZ2VNZWRpYSk7CiAg
ICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChsYXN0Q2hpbGQuaW1wbCgpLCBDU1NTZWxlY3Rv
cjo6UHNldWRvTGFzdENoaWxkKTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGxhc3RP
ZlR5cGUuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvTGFzdE9mVHlwZSk7CisgICAgICAgIG5h
bWVUb1BzZXVkb1R5cGUtPnNldChkaXN0cmlidXRlZC5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1
ZG9EaXN0cmlidXRlZCk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChvbmx5Q2hpbGQu
aW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvT25seUNoaWxkKTsKICAgICAgICAgbmFtZVRvUHNl
dWRvVHlwZS0+c2V0KG9ubHlPZlR5cGUuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvT25seU9m
VHlwZSk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChmaXJzdExldHRlci5pbXBsKCks
IENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdExldHRlcik7CkBAIC00MzYsNiArNDQwLDcgQEAgdm9p
ZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25zdAogICAgIGNhc2UgUHNldWRv
Rmlyc3RMZXR0ZXI6CiAgICAgY2FzZSBQc2V1ZG9GaXJzdExpbmU6CiAgICAgICAgIGNvbXBhdCA9
IHRydWU7CisgICAgY2FzZSBQc2V1ZG9EaXN0cmlidXRlZDoKICAgICBjYXNlIFBzZXVkb1Jlc2l6
ZXI6CiAgICAgY2FzZSBQc2V1ZG9TY3JvbGxiYXI6CiAgICAgY2FzZSBQc2V1ZG9TY3JvbGxiYXJD
b3JuZXI6CkBAIC02NjYsNiArNjcxLDggQEAgU3RyaW5nIENTU1NlbGVjdG9yOjpzZWxlY3RvclRl
eHQoKSBjb25zdAogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rlc2NlbmRhbnQ6CiAgICAgICAgICAgICByZXR1cm4gdGFn
SGlzdG9yeVRleHQgKyBzdHIudG9TdHJpbmcoKTsKKyAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
U2hhZG93RGlzdHJpYnV0ZWQ6CisgICAgICAgICAgICByZXR1cm4gdGFnSGlzdG9yeVRleHQgKyAi
OjpkaXN0cmlidXRlZCgiICsgc3RyLnRvU3RyaW5nKCkgKyAiKSI7CiAgICAgICAgIH0KICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKaW5kZXggZGVmZDM2YzQ0NjAxNjFiOTVkMWNiYzRm
ODgwZmYxNWY4YjVjODVlZS4uMzc4MDA1YTY2YmI5NTdjODA4MzVlN2I2Njk3MGVhMjUzOTk5OGY0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTc2LDcgKzc2LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAgICAgRGlyZWN0QWRqYWNlbnQsCiAgICAgICAgICAgICBJbmRp
cmVjdEFkamFjZW50LAogICAgICAgICAgICAgU3ViU2VsZWN0b3IsCi0gICAgICAgICAgICBTaGFk
b3dEZXNjZW5kYW50CisgICAgICAgICAgICBTaGFkb3dEZXNjZW5kYW50LAorICAgICAgICAgICAg
U2hhZG93RGlzdHJpYnV0ZWQsCiAgICAgICAgIH07CiAKICAgICAgICAgZW51bSBQc2V1ZG9UeXBl
IHsKQEAgLTExOSw2ICsxMjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBQ
c2V1ZG9UYXJnZXQsCiAgICAgICAgICAgICBQc2V1ZG9CZWZvcmUsCiAgICAgICAgICAgICBQc2V1
ZG9BZnRlciwKKyAgICAgICAgICAgIFBzZXVkb0Rpc3RyaWJ1dGVkLAogICAgICAgICAgICAgUHNl
dWRvTGFuZywKICAgICAgICAgICAgIFBzZXVkb05vdCwKICAgICAgICAgICAgIFBzZXVkb1Jlc2l6
ZXIsCkBAIC0yMTcsOCArMjE5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9v
bCBtYXRjaGVzUHNldWRvRWxlbWVudCgpIGNvbnN0OwogICAgICAgICBib29sIGlzVW5rbm93blBz
ZXVkb0VsZW1lbnQoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc0N1c3RvbVBzZXVkb0VsZW1lbnQo
KSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0Rpc3RyaWJ1dGVkUHNldWRvRWxlbWVudCgpIGNvbnN0
OwogICAgICAgICBib29sIGlzU2libGluZ1NlbGVjdG9yKCkgY29uc3Q7CiAgICAgICAgIGJvb2wg
aXNBdHRyaWJ1dGVTZWxlY3RvcigpIGNvbnN0OworICAgICAgICBib29sIGlzU2hhZG93RGlzdHJp
YnV0ZWQoKSBjb25zdDsKIAogICAgICAgICBSZWxhdGlvbiByZWxhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFJlbGF0aW9uPihtX3JlbGF0aW9uKTsgfQogCkBAIC0zMDIsNiArMzA2
LDEyIEBAIGlubGluZSBib29sIENTU1NlbGVjdG9yOjppc0N1c3RvbVBzZXVkb0VsZW1lbnQoKSBj
b25zdAogICAgIHJldHVybiBtX21hdGNoID09IFBzZXVkb0VsZW1lbnQgJiYgKG1fcHNldWRvVHlw
ZSA9PSBQc2V1ZG9Vc2VyQWdlbnRDdXN0b21FbGVtZW50IHx8IG1fcHNldWRvVHlwZSA9PSBQc2V1
ZG9XZWJLaXRDdXN0b21FbGVtZW50KTsKIH0KIAoraW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6Omlz
RGlzdHJpYnV0ZWRQc2V1ZG9FbGVtZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tYXRjaCA9
PSBQc2V1ZG9FbGVtZW50ICYmIHBzZXVkb1R5cGUoKSA9PSBQc2V1ZG9EaXN0cmlidXRlZDsKKwor
fQorCiBpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6aXNTaWJsaW5nU2VsZWN0b3IoKSBjb25zdAog
ewogICAgIFBzZXVkb1R5cGUgdHlwZSA9IHBzZXVkb1R5cGUoKTsKQEAgLTMzMSw2ICszNDEsMTEg
QEAgaW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6OmlzQXR0cmlidXRlU2VsZWN0b3IoKSBjb25zdAog
ICAgICAgICB8fCBtX21hdGNoID09IENTU1NlbGVjdG9yOjpFbmQ7CiB9CiAKK2lubGluZSBib29s
IENTU1NlbGVjdG9yOjppc1NoYWRvd0Rpc3RyaWJ1dGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9yZWxhdGlvbiA9PSBDU1NTZWxlY3Rvcjo6U2hhZG93RGlzdHJpYnV0ZWQ7Cit9CisKIGlubGlu
ZSB2b2lkIENTU1NlbGVjdG9yOjpzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQog
ewogICAgIC8vIE5lZWQgdG8gZG8gcmVmIGNvdW50aW5nIG1hbnVhbGx5IGZvciB0aGUgdW5pb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCmluZGV4IDQzMTM2ZDFjOTAxYzYz
NDFiYWNiZWY4Mzk0OWRmOTRlNjBmMWMzNmMuLmEwNzZmYzM3NjkyMTc0Njc0YTcwNjE3NDg5YmQ5
NzYyZWYwNjdjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxp
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCiAKICNpbmNsdWRlICJD
U1NQYXJzZXJWYWx1ZXMuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJXZWJD
b3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogCkBAIC0yMTEsNiArMjEyLDIxIEBAIGJvb2wgQ1NTU2VsZWN0b3JMaXN0OjpoYXNJ
bnZhbGlkU2VsZWN0b3IoKSBjb25zdAogICAgIHJldHVybiBmb3JFYWNoU2VsZWN0b3IoZnVuY3Rv
ciwgdGhpcyk7CiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKK2NsYXNzIFNlbGVjdG9ySGFz
U2hhZG93RGlzdHJpYnV0ZWQgeworcHVibGljOgorICAgIGJvb2wgb3BlcmF0b3IoKShDU1NTZWxl
Y3Rvciogc2VsZWN0b3IpCisgICAgeworICAgICAgICByZXR1cm4gc2VsZWN0b3ItPmlzU2hhZG93
RGlzdHJpYnV0ZWQoKTsKKyAgICB9Cit9OworCitib29sIENTU1NlbGVjdG9yTGlzdDo6aGFzU2hh
ZG93RGlzdHJpYnV0ZWRBdChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgU2VsZWN0b3JIYXNT
aGFkb3dEaXN0cmlidXRlZCBmdW5jdG9yOworICAgIHJldHVybiBmb3JFYWNoVGFnU2VsZWN0b3Io
ZnVuY3Rvciwgc2VsZWN0b3JBdChpbmRleCkpOworfQogCisjZW5kaWYKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlz
dC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCmluZGV4IDRmY2ZlZTJm
YWE0MTgyZDdhOWFiMDU1YmNjZTUxOWZlNzRlMjI3MTUuLjRlN2I1ODJkYmM1MTE4YTQ1ZTQ2ZGJi
ZjBjZDg5NGE5Zjc0M2Y2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxl
Y3Rvckxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgKQEAg
LTYwLDYgKzYwLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHNlbGVjdG9yc05lZWROYW1lc3BhY2VS
ZXNvbHV0aW9uKCk7CiAgICAgYm9vbCBoYXNJbnZhbGlkU2VsZWN0b3IoKSBjb25zdDsKIAorI2lm
IEVOQUJMRShTSEFET1dfRE9NKQorICAgIGJvb2wgaGFzU2hhZG93RGlzdHJpYnV0ZWRBdChzaXpl
X3QgaW5kZXgpIGNvbnN0OworI2VuZGlmCisKICAgICBTdHJpbmcgc2VsZWN0b3JzVGV4dCgpIGNv
bnN0OwogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKaW5kZXggMzUwYTI3MTVkYjdiMDNiOTA2YjkzMjZjOTBi
MGExMzllMjNmZTIxYS4uNGIwNzgzYzUwYzM0YzcxYzM5YTRjMTdhMTI0YTZhZmM3OWMwMjM1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgUnVsZVNldDo6
YWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVldENvbnRlbnRzKiBzaGVldCwgY29uc3QgTWVkaWFR
dWVyeUV2YWx1CiAKICAgICAgICAgQVNTRVJUKCFydWxlLT5pc0ltcG9ydFJ1bGUoKSk7CiAgICAg
ICAgIGlmIChydWxlLT5pc1N0eWxlUnVsZSgpKQotICAgICAgICAgICAgYWRkU3R5bGVSdWxlKHN0
YXRpY19jYXN0PFN0eWxlUnVsZSo+KHJ1bGUpLCBhZGRSdWxlRmxhZ3MpOworICAgICAgICAgICAg
cmVzb2x2ZXItPmFkZFN0eWxlUnVsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihydWxlKSwgY29u
c3RfY2FzdDxDb250YWluZXJOb2RlKj4oc2NvcGUpLCB0aGlzLCBhZGRSdWxlRmxhZ3MpOwogICAg
ICAgICBlbHNlIGlmIChydWxlLT5pc1BhZ2VSdWxlKCkpCiAgICAgICAgICAgICBhZGRQYWdlUnVs
ZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGVQYWdlKj4ocnVsZSkpOwogICAgICAgICBlbHNlIGlmIChy
dWxlLT5pc01lZGlhUnVsZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3Bw
CmluZGV4IDU3YTFkOWY5NzM4ODFmZTU1YmVkZjUxNDA4MGQyZmEyNjAwM2NlZTEuLjNjNTM4YmJl
ZGY4OGI0MDlmN2MyOWVmYTc2OTU2ZjhiMjc1ZmE1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxl
Y3RvckNoZWNrZXIuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUHJvZ3Jlc3NFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TFN0eWxlRWxlbWVudC5oIgorI2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgi
CiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgpAQCAtMTkyLDYgKzE5Myw3IEBAIHZvaWQgU2Vs
ZWN0b3JDaGVja2VyOjpjb2xsZWN0SWRlbnRpZmllckhhc2hlcyhjb25zdCBDU1NTZWxlY3Rvciog
c2VsZWN0b3IsIHVuc2lnCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50
OgogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpJbmRpcmVjdEFkamFjZW50OgogICAgICAgICBj
YXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50OgorICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpTaGFkb3dEaXN0cmlidXRlZDoKICAgICAgICAgICAgIHNraXBPdmVyU3Vic2VsZWN0b3Jz
ID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpE
ZXNjZW5kYW50OgpAQCAtNDcyLDggKzQ3NCwxNSBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9y
TWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlYwog
CiAgICAgLy8gUHJlcGFyZSBuZXh0IHNlbGVjdG9yCiAgICAgQ1NTU2VsZWN0b3IqIGhpc3RvcnlT
ZWxlY3RvciA9IGNvbnRleHQuc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKTsKLSAgICBpZiAoIWhpc3Rv
cnlTZWxlY3RvcikKKyAgICBpZiAoIWhpc3RvcnlTZWxlY3RvcikgeworI2lmIEVOQUJMRShTSEFE
T1dfRE9NKQorICAgICAgICBpZiAoY29udGV4dC5zY29wZU9mTGFzdEVsZW1lbnQpIHsKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBDaGVjayB0aGUgc2NvcGUgbW9yZSBzdHJpY3RseS4KKyAgICAgICAg
ICAgIHJldHVybiBjb250ZXh0LnNjb3BlT2ZMYXN0RWxlbWVudC0+dHJlZVNjb3BlKCkgPT0gY29u
dGV4dC5lbGVtZW50LT50cmVlU2NvcGUoKSA/IFNlbGVjdG9yTWF0Y2hlcyA6IFNlbGVjdG9yRmFp
bHNMb2NhbGx5OworICAgICAgICB9CisjZW5kaWYKICAgICAgICAgcmV0dXJuIFNlbGVjdG9yTWF0
Y2hlczsKKyAgICB9CiAKICAgICBTZWxlY3RvckNoZWNraW5nQ29udGV4dCBuZXh0Q29udGV4dChj
b250ZXh0KTsKICAgICBuZXh0Q29udGV4dC5zZWxlY3RvciA9IGhpc3RvcnlTZWxlY3RvcjsKQEAg
LTU3NSw2ICs1ODQsMjUgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWMKICAgICAgICAgICAgIG5l
eHRDb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9IDA7CiAgICAgICAgICAgICByZXR1cm4gY2hl
Y2tTZWxlY3RvcihuZXh0Q29udGV4dCwgaWdub3JlRHluYW1pY1BzZXVkbyk7CiAgICAgICAgIH0K
KworICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rpc3RyaWJ1dGVkOgorICAgICAgICB7Cisg
ICAgICAgICAgICBWZWN0b3I8SW5zZXJ0aW9uUG9pbnQqLCA4PiBpbnNlcnRpb25Qb2ludHM7Cisg
ICAgICAgICAgICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQgPSBjb250ZXh0LmVsZW1lbnQ7IGVsZW1l
bnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKKyAgICAgICAgICAgICAg
ICBpbnNlcnRpb25Qb2ludHMuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjb2xsZWN0QWxsTWlk
cG9pbnRJbnNlcnRpb25Qb2ludHMoZWxlbWVudCwgaW5zZXJ0aW9uUG9pbnRzKTsKKyAgICAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc2VydGlvblBvaW50cy5zaXplKCk7ICsr
aSkgeworICAgICAgICAgICAgICAgICAgICBuZXh0Q29udGV4dC5lbGVtZW50ID0gaW5zZXJ0aW9u
UG9pbnRzW2ldOworICAgICAgICAgICAgICAgICAgICBuZXh0Q29udGV4dC5pc1N1YlNlbGVjdG9y
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnRTdHlsZSA9
IDA7CisgICAgICAgICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9
IDA7CisgICAgICAgICAgICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVj
dG9yKG5leHRDb250ZXh0LCBpZ25vcmVEeW5hbWljUHNldWRvKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKG1hdGNoID09IFNlbGVjdG9yTWF0Y2hlcyB8fCBtYXRjaCA9PSBTZWxlY3RvckZhaWxz
Q29tcGxldGVseSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JG
YWlsc0NvbXBsZXRlbHk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAppbmRleCA5YmRiNjY5YjI0NmVl
NjQzZDVlMmVlMjJiNWExYTI0ZWUwOTE4ZTZhLi40N2IzOTBjZTc5YTE4OTRiNWQ0YmQyOTZiMDMy
NWE1ZmY2NTIyYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVj
a2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCkBAIC02Nyw2
ICs2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICwgaXNTdWJTZWxlY3RvcihmYWxzZSkKICAg
ICAgICAgICAgICwgaGFzU2Nyb2xsYmFyUHNldWRvKGZhbHNlKQogICAgICAgICAgICAgLCBoYXNT
ZWxlY3Rpb25Qc2V1ZG8oZmFsc2UpCisgICAgICAgICAgICAsIHNjb3BlT2ZMYXN0RWxlbWVudCgw
KQogICAgICAgICB7IH0KIAogICAgICAgICBDU1NTZWxlY3Rvciogc2VsZWN0b3I7CkBAIC03OSw2
ICs4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc1N1YlNlbGVjdG9yOwogICAgICAgICBi
b29sIGhhc1Njcm9sbGJhclBzZXVkbzsKICAgICAgICAgYm9vbCBoYXNTZWxlY3Rpb25Qc2V1ZG87
CisgICAgICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlT2ZMYXN0RWxlbWVudDsKICAgICB9
OwogCiAgICAgYm9vbCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIGJvb2wg
aXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IgPSBmYWxzZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKaW5kZXggZjZmZjNkNGU5NjI3OTMxZTk1MzY5YmI1MjI0NjVjMzU3NTg3
YzNhYS4uOTQ0YzU5MzRjMjY2ODNjN2YyZTUzYjNjMzU5NjY4ZTY3MTEzNWE2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMzYyLDYgKzM2Miw3IEBAIHZvaWQgU3R5bGVS
ZXNvbHZlcjo6cmVzZXRBdXRob3JTdHlsZSgpCiB7CiAgICAgbV9hdXRob3JTdHlsZSA9IFJ1bGVT
ZXQ6OmNyZWF0ZSgpOwogICAgIG1fYXV0aG9yU3R5bGUtPmRpc2FibGVBdXRvU2hyaW5rVG9GaXQo
KTsKKyAgICBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5jbGVhcigpOwogfQogCiB2b2lk
IFN0eWxlUmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKHVuc2lnbmVkIGZpcnN0TmV3
LCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHN0eWxlU2hlZXRzKQpAQCAt
NDQ2LDYgKzQ0NywzMiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZEtleWZyYW1lU3R5bGUoUGFz
c1JlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IHJ1bGUpCiAgICAgbV9rZXlmcmFtZXNSdWxlTWFw
LnNldChzLmltcGwoKSwgcnVsZSk7CiB9CiAKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkU3R5bGVS
dWxlKFN0eWxlUnVsZSogcnVsZSwgQ29udGFpbmVyTm9kZSogc2NvcGUsIFJ1bGVTZXQqIHJ1bGVT
ZXQsIEFkZFJ1bGVGbGFncyBhZGRSdWxlRmxhZ3MpCit7CisjaWYgRU5BQkxFKFNIQURPV19ET00p
CisgICAgaWYgKCFzY29wZSkgeworICAgICAgICBydWxlU2V0LT5hZGRTdHlsZVJ1bGUocnVsZSwg
YWRkUnVsZUZsYWdzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb25zdCBDU1NTZWxl
Y3Rvckxpc3QmIHNlbGVjdG9yTGlzdCA9IHJ1bGUtPnNlbGVjdG9yTGlzdCgpOworICAgIGZvciAo
c2l6ZV90IHNlbGVjdG9ySW5kZXggPSAwOyBzZWxlY3RvckluZGV4ICE9IG5vdEZvdW5kOyBzZWxl
Y3RvckluZGV4ID0gc2VsZWN0b3JMaXN0LmluZGV4T2ZOZXh0U2VsZWN0b3JBZnRlcihzZWxlY3Rv
ckluZGV4KSkgeworICAgICAgICBpZiAoc2VsZWN0b3JMaXN0Lmhhc1NoYWRvd0Rpc3RyaWJ1dGVk
QXQoc2VsZWN0b3JJbmRleCkpIHsKKyAgICAgICAgICAgIGlmIChtX3NoYWRvd0Rpc3RyaWJ1dGVk
UnVsZVNldE1hcC5jb250YWlucyhzY29wZSkpCisgICAgICAgICAgICAgICAgbV9zaGFkb3dEaXN0
cmlidXRlZFJ1bGVTZXRNYXAuZ2V0KHNjb3BlKS0+YWRkUnVsZShydWxlLCBzZWxlY3RvckluZGV4
LCBhZGRSdWxlRmxhZ3MpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgT3du
UHRyPFJ1bGVTZXQ+IHJ1bGVTZXRGb3JTY29wZSA9IGFkb3B0UHRyKG5ldyBSdWxlU2V0KCkpOwor
ICAgICAgICAgICAgICAgIHJ1bGVTZXRGb3JTY29wZS0+YWRkUnVsZShydWxlLCBzZWxlY3Rvcklu
ZGV4LCBhZGRSdWxlRmxhZ3MpOworICAgICAgICAgICAgICAgIG1fc2hhZG93RGlzdHJpYnV0ZWRS
dWxlU2V0TWFwLmFkZChzY29wZSwgcnVsZVNldEZvclNjb3BlLnJlbGVhc2UoKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcnVsZVNldC0+YWRkUnVsZShydWxl
LCBzZWxlY3RvckluZGV4LCBhZGRSdWxlRmxhZ3MpOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKHNjb3BlKTsKKyAgICBydWxlU2V0LT5hZGRTdHlsZVJ1bGUocnVsZSwgYWRkUnVsZUZs
YWdzKTsKKyNlbmRpZgorfQorCiBTdHlsZVJlc29sdmVyOjp+U3R5bGVSZXNvbHZlcigpCiB7CiAg
ICAgbV9mb250U2VsZWN0b3ItPmNsZWFyRG9jdW1lbnQoKTsKQEAgLTc5NSw2ICs4MjIsMTcgQEAg
dm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaEhvc3RSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBi
b29sIGluY2x1ZGVFbXB0eVJ1bGVzKQogI2VuZGlmCiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hTaGFkb3dEaXN0cmlidXRlZFJ1bGVzKE1hdGNo
UmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpCit7CisgICAgZm9yIChTaGFk
b3dEaXN0cmlidXRlZFJ1bGVTZXRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zaGFkb3dEaXN0cmlidXRl
ZFJ1bGVTZXRNYXAuYmVnaW4oKTsgaXQgIT0gbV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAu
ZW5kKCk7ICsraXQpIHsKKyAgICAgICAgTWF0Y2hPcHRpb25zIG9wdGlvbnMoaW5jbHVkZUVtcHR5
UnVsZXMsIDApOworICAgICAgICBvcHRpb25zLnNjb3BlT2ZMYXN0RWxlbWVudCA9IGl0LT5rZXk7
CisgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKGl0LT52YWx1ZS5nZXQoKSwgcmVzdWx0LnJh
bmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlv
bnMpOworICAgIH0KK30KKyNlbmRpZgorCiB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoQXV0aG9y
UnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKIHsKICAg
ICBtX21hdGNoZWRSdWxlcy5jbGVhcigpOwpAQCAtODA3LDYgKzg0NSw5IEBAIHZvaWQgU3R5bGVS
ZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1
ZGVFbXB0eVJ1bGVzCiAgICAgTWF0Y2hPcHRpb25zIG9wdGlvbnMoaW5jbHVkZUVtcHR5UnVsZXMp
OwogICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKG1fYXV0aG9yU3R5bGUuZ2V0KCksIHJlc3VsdC5y
YW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBvcHRp
b25zKTsKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtX2F1dGhvclN0eWxlLmdl
dCgpLCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0
aG9yUnVsZSwgb3B0aW9ucyk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgbWF0Y2hTaGFk
b3dEaXN0cmlidXRlZFJ1bGVzKHJlc3VsdCwgaW5jbHVkZUVtcHR5UnVsZXMpOworI2VuZGlmCiAg
ICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKHJlc3VsdCk7CiAKICAgICBtYXRjaFNjb3Bl
ZEF1dGhvclJ1bGVzKHJlc3VsdCwgaW5jbHVkZUVtcHR5UnVsZXMpOwpAQCAtODQzLDcgKzg4NCwx
MSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25z
dCBWZWN0b3I8UnVsZURhdGE+KiBydWxlcywgaQogCiAgICAgLy8gSW4gc29tZSBjYXNlcyB3ZSBt
YXkgZW5kIHVwIGxvb2tpbmcgdXAgc3R5bGUgZm9yIHJhbmRvbSBlbGVtZW50cyBpbiB0aGUgbWlk
ZGxlIG9mIGEgcmVjdXJzaXZlIHRyZWUgcmVzb2x2ZS4KICAgICAvLyBBbmNlc3RvciBpZGVudGlm
aWVyIGZpbHRlciB3b24ndCBiZSB1cC10by1kYXRlIGluIHRoYXQgY2FzZSBhbmQgd2UgY2FuJ3Qg
dXNlIHRoZSBmYXN0IHBhdGguCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgYm9vbCBjYW5V
c2VGYXN0UmVqZWN0ID0gbV9jaGVja2VyLnBhcmVudFN0YWNrSXNDb25zaXN0ZW50KG1fcGFyZW50
Tm9kZSkgJiYgIW9wdGlvbnMuc2NvcGVPZkxhc3RFbGVtZW50OworI2Vsc2UKICAgICBib29sIGNh
blVzZUZhc3RSZWplY3QgPSBtX2NoZWNrZXIucGFyZW50U3RhY2tJc0NvbnNpc3RlbnQobV9wYXJl
bnROb2RlKTsKKyNlbmRpZgogCiAgICAgdW5zaWduZWQgc2l6ZSA9IHJ1bGVzLT5zaXplKCk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewpAQCAtODUzLDcgKzg5OCw3
IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0
IFZlY3RvcjxSdWxlRGF0YT4qIHJ1bGVzLCBpCiAKICAgICAgICAgU3R5bGVSdWxlKiBydWxlID0g
cnVsZURhdGEucnVsZSgpOwogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
Y29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTWF0Y2hSdWxlKGRvY3VtZW50
KCksIHJ1bGUsIHRoaXMpOwotICAgICAgICBpZiAoY2hlY2tTZWxlY3RvcihydWxlRGF0YSwgb3B0
aW9ucy5zY29wZSkpIHsKKyAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3IocnVsZURhdGEsIG9wdGlv
bnMuc2NvcGUsIG9wdGlvbnMuc2NvcGVPZkxhc3RFbGVtZW50KSkgewogICAgICAgICAgICAgLy8g
SWYgdGhlIHJ1bGUgaGFzIG5vIHByb3BlcnRpZXMgdG8gYXBwbHksIHRoZW4gaWdub3JlIGl0IGlu
IHRoZSBub24tZGVidWcgbW9kZS4KICAgICAgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQq
IHByb3BlcnRpZXMgPSBydWxlLT5wcm9wZXJ0aWVzKCk7CiAgICAgICAgICAgICBpZiAoIXByb3Bl
cnRpZXMgfHwgKHByb3BlcnRpZXMtPmlzRW1wdHkoKSAmJiAhb3B0aW9ucy5pbmNsdWRlRW1wdHlS
dWxlcykpIHsKQEAgLTIyMzMsNyArMjI3OCw3IEBAIFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IFN0
eWxlUmVzb2x2ZXI6OnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqIGUsIFBzCiAg
ICAgcmV0dXJuIG1fcnVsZUxpc3QucmVsZWFzZSgpOwogfQogCi1pbmxpbmUgYm9vbCBTdHlsZVJl
c29sdmVyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgY29uc3QgQ29u
dGFpbmVyTm9kZSogc2NvcGUpCitpbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpjaGVja1NlbGVj
dG9yKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUs
IGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlT2ZMYXN0RWxlbWVudCkKIHsKICAgICBtX2R5bmFt
aWNQc2V1ZG8gPSBOT1BTRVVETzsKIApAQCAtMjI1OCw2ICsyMzAzLDcgQEAgaW5saW5lIGJvb2wg
U3R5bGVSZXNvbHZlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNv
bnN0IENvbnRhaW4KICAgICBjb250ZXh0LmVsZW1lbnRTdHlsZSA9IHN0eWxlKCk7CiAgICAgY29u
dGV4dC5lbGVtZW50UGFyZW50U3R5bGUgPSBtX3BhcmVudE5vZGUgPyBtX3BhcmVudE5vZGUtPnJl
bmRlclN0eWxlKCkgOiAwOwogICAgIGNvbnRleHQuc2NvcGUgPSBzY29wZTsKKyAgICBjb250ZXh0
LnNjb3BlT2ZMYXN0RWxlbWVudCA9IHNjb3BlT2ZMYXN0RWxlbWVudDsKICAgICBjb250ZXh0LnBz
ZXVkb1N0eWxlID0gbV9wc2V1ZG9TdHlsZTsKICAgICBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9y
TWF0Y2ggbWF0Y2ggPSBtX2NoZWNrZXIuY2hlY2tTZWxlY3Rvcihjb250ZXh0LCBtX2R5bmFtaWNQ
c2V1ZG8pOwogICAgIGlmIChtYXRjaCAhPSBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2hl
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IDk3YmNmMTY5NDA4M2UwYTI2YWRk
NDZhZjRhOTk4ZDU4ZjU0ZGI3NmUuLjY3MmY4OTVkZjA2OTk5ZmUxNmI5MWY4MDQ4ZGMzMzBmZjVm
ZGY1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIk1lZGlhUXVlcnlFeHAuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2lu
Y2x1ZGUgIlJ1bGVGZWF0dXJlLmgiCisjaW5jbHVkZSAiUnVsZVNldC5oIgogI2luY2x1ZGUgIlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXIuaCIKICNp
bmNsdWRlICJTdHlsZUluaGVyaXRlZERhdGEuaCIKQEAgLTc1LDcgKzc2LDYgQEAgY2xhc3MgTWVk
aWFRdWVyeUV2YWx1YXRvcjsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSZW5kZXJSZWdpb247CiBjbGFz
cyBSdWxlRGF0YTsKLWNsYXNzIFJ1bGVTZXQ7CiBjbGFzcyBTZXR0aW5nczsKIGNsYXNzIFN0YXRp
Y0NTU1J1bGVMaXN0OwogY2xhc3MgU3R5bGVCdWlsZGVyOwpAQCAtMjY3LDYgKzI2Nyw4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgYWRkS2V5ZnJhbWVTdHlsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUtl
eWZyYW1lcz4pOwogCisgICAgdm9pZCBhZGRTdHlsZVJ1bGUoU3R5bGVSdWxlKiwgQ29udGFpbmVy
Tm9kZSogc2NvcGUsIFJ1bGVTZXQqLCBBZGRSdWxlRmxhZ3MpOworCiAgICAgYm9vbCBjaGVja1Jl
Z2lvblN0eWxlKEVsZW1lbnQqIHJlZ2lvbkVsZW1lbnQpOwogCiAgICAgYm9vbCB1c2VzU2libGlu
Z1J1bGVzKCkgY29uc3QgeyByZXR1cm4gIW1fZmVhdHVyZXMuc2libGluZ1J1bGVzLmlzRW1wdHko
KTsgfQpAQCAtMzQ1LDkgKzM0NywxMCBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBzdHJ1Y3Qg
TWF0Y2hPcHRpb25zIHsKLSAgICAgICAgTWF0Y2hPcHRpb25zKGJvb2wgaW5jbHVkZUVtcHR5UnVs
ZXMsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlID0gMCkgOiBzY29wZShzY29wZSksIGluY2x1
ZGVFbXB0eVJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKSB7IH0KKyAgICAgICAgTWF0Y2hPcHRpb25z
KGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlID0gMCkg
OiBzY29wZShzY29wZSksIGluY2x1ZGVFbXB0eVJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKSwgc2Nv
cGVPZkxhc3RFbGVtZW50KDApIHsgfQogICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBzY29w
ZTsKICAgICAgICAgYm9vbCBpbmNsdWRlRW1wdHlSdWxlczsKKyAgICAgICAgY29uc3QgQ29udGFp
bmVyTm9kZSogc2NvcGVPZkxhc3RFbGVtZW50OwogICAgIH07CiAKICAgICBzdGF0aWMgdm9pZCBh
ZGRNYXRjaGVkUHJvcGVydGllcyhNYXRjaFJlc3VsdCYsIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQq
IHByb3BlcnRpZXMsIFN0eWxlUnVsZSogPSAwLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlID0gU2Vs
ZWN0b3JDaGVja2VyOjpNYXRjaEFsbCwgYm9vbCBpblJlZ2lvblJ1bGUgPSBmYWxzZSk7CkBAIC0z
NjAsNiArMzYzLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXRjaFVzZXJSdWxlcyhNYXRjaFJl
c3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIHZvaWQgbWF0Y2hTY29wZWRBdXRo
b3JSdWxlcyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIHZvaWQg
bWF0Y2hIb3N0UnVsZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICB2b2lkIG1hdGNoU2hhZG93RGlzdHJpYnV0ZWRSdWxl
cyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOworI2VuZGlmCisKICAgICB2
b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzKFJ1bGVTZXQqLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBp
bnQmIGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYpOwogICAgIHZvaWQgY29sbGVj
dE1hdGNoaW5nUnVsZXNGb3JSZWdpb24oUnVsZVNldCosIGludCYgZmlyc3RSdWxlSW5kZXgsIGlu
dCYgbGFzdFJ1bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJik7CiAgICAgdm9pZCBjb2xsZWN0
TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiosIGludCYgZmlyc3RS
dWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJik7CkBAIC0z
NjcsNyArMzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNvcnRNYXRjaGVkUnVsZXMoKTsKICAg
ICB2b2lkIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhNYXRjaFJlc3VsdCYpOwogCi0gICAg
Ym9vbCBjaGVja1NlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJiwgY29uc3QgQ29udGFpbmVyTm9kZSog
c2NvcGUpOworICAgIGJvb2wgY2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYsIGNvbnN0IENv
bnRhaW5lck5vZGUqIHNjb3BlLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZU9mTGFzdEVsZW1l
bnQpOwogICAgIGJvb2wgY2hlY2tSZWdpb25TZWxlY3RvcihDU1NTZWxlY3RvciogcmVnaW9uU2Vs
ZWN0b3IsIEVsZW1lbnQqIHJlZ2lvbkVsZW1lbnQpOwogICAgIHZvaWQgYXBwbHlNYXRjaGVkUHJv
cGVydGllcyhjb25zdCBNYXRjaFJlc3VsdCYsIGNvbnN0IEVsZW1lbnQqKTsKICAgICBlbnVtIFN0
eWxlQXBwbGljYXRpb25QYXNzIHsKQEAgLTM5OCw2ICs0MDUsMTEgQEAgcHJpdmF0ZToKICAgICBP
d25QdHI8UnVsZVNldD4gbV9hdXRob3JTdHlsZTsKICAgICBPd25QdHI8UnVsZVNldD4gbV91c2Vy
U3R5bGU7CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29u
c3QgQ29udGFpbmVyTm9kZSosIE93blB0cjxSdWxlU2V0PiA+IFNoYWRvd0Rpc3RyaWJ1dGVkUnVs
ZVNldE1hcDsKKyAgICBTaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAgbV9zaGFkb3dEaXN0cmli
dXRlZFJ1bGVTZXRNYXA7CisjZW5kaWYKKwogICAgIFJ1bGVGZWF0dXJlU2V0IG1fZmVhdHVyZXM7
CiAgICAgT3duUHRyPFJ1bGVTZXQ+IG1fc2libGluZ1J1bGVTZXQ7CiAgICAgT3duUHRyPFJ1bGVT
ZXQ+IG1fdW5jb21tb25BdHRyaWJ1dGVSdWxlU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0luc2VydGlvblBvaW50LmgKaW5kZXggYWVkYWMxZDBmN2QxMGY2ZDg0ZTEzNjBlODEwMDMz
OGE5MGM4MTJlMS4uNWIwYTJmOWFmMTYzYjkzM2NkZTdkM2YzNWNjNmM1ZWU3MGE4Y2RlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC0xNzksNiAr
MTc5LDM3IEBAIGlubGluZSBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25z
dCBOb2RlKiBwcm9qZWN0ZWROb2RlKQogICAgIHJldHVybiBpbnNlcnRpb25Qb2ludDsKIH0KIAor
Ly8gRklYTUU6IENvbGxlY3RzIG9ubHkgSFRNTENvbnRlbnRFbGVtZW50IHNpbmNlIGEgc2VsZWN0
IHJlZmVyZW5jZSBjb21iaW5hdG9yIGNhbiBiZQorLy8gYXBwbGllZCB0byBvbmx5IDxjb250ZW50
PiBlbGVtZW50cy4KK2lubGluZSB2b2lkIGNvbGxlY3RBbGxNaWRwb2ludEluc2VydGlvblBvaW50
cyhjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlLCBWZWN0b3I8SW5zZXJ0aW9uUG9pbnQqLCA4PiYg
cmVzdWx0cykKK3sKKyAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSAwOworICAg
IGNvbnN0IE5vZGUqIGN1cnJlbnQgPSBwcm9qZWN0ZWROb2RlOworCisgICAgd2hpbGUgKHRydWUp
IHsKKyAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9y
RGlzdHJpYnV0aW9uKGN1cnJlbnQpKSB7CisgICAgICAgICAgICBzaGFkb3ctPmVuc3VyZURpc3Ry
aWJ1dGlvbigpOworICAgICAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRlZFRvID0g
c2hhZG93LT5kaXN0cmlidXRvcigpLmZpbmRJbnNlcnRpb25Qb2ludEZvcihwcm9qZWN0ZWROb2Rl
KSkgeworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAg
ICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAgICByZXN1bHRz
LmFwcGVuZChpbnNlcnRpb25Qb2ludCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoTm9kZSogcGFyZW50ID0gcGFyZW50
Tm9kZUZvckRpc3RyaWJ1dGlvbihjdXJyZW50KSkgeworICAgICAgICAgICAgaWYgKEluc2VydGlv
blBvaW50KiBpbnNlcnRlZFRvID0gcGFyZW50LT5pc1NoYWRvd1Jvb3QoKSA/IHRvU2hhZG93Um9v
dChwYXJlbnQpLT5hc3NpZ25lZFRvKCkgOiAwKSB7CisgICAgICAgICAgICAgICAgY3VycmVudCA9
IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBpbnNlcnRlZFRv
OworICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKGluc2VydGlvblBvaW50KTsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybjsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEluc2VydGlvblBvaW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKaW5kZXggNGE1NTBlMmM4ZDY3NGVlZGUwMzg0YjBk
YzRlNjcxYzAyNjRjZTU1Zi4uMGY3MTIxNGQ4MTcwZWEzNjBjMzU5MjIxZTljODUyNWE5M2ZhN2U2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
Q29uc3RhbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlQ29uc3RhbnRzLmgKQEAgLTcwLDcgKzcwLDcgQEAgZW51bSBTdHlsZURpZmZlcmVuY2VDb250
ZXh0U2Vuc2l0aXZlUHJvcGVydHkgewogLy8gU3RhdGljIHBzZXVkbyBzdHlsZXMuIER5bmFtaWMg
b25lcyBhcmUgcHJvZHVjZWQgb24gdGhlIGZseS4KIGVudW0gUHNldWRvSWQgewogICAgIC8vIFRo
ZSBvcmRlciBtdXN0IGJlIE5PUCBJRCwgcHVibGljIElEcywgYW5kIHRoZW4gaW50ZXJuYWwgSURz
LgotICAgIE5PUFNFVURPLCBGSVJTVF9MSU5FLCBGSVJTVF9MRVRURVIsIEJFRk9SRSwgQUZURVIs
IFNFTEVDVElPTiwgRklSU1RfTElORV9JTkhFUklURUQsIFNDUk9MTEJBUiwKKyAgICBOT1BTRVVE
TywgRklSU1RfTElORSwgRklSU1RfTEVUVEVSLCBCRUZPUkUsIEFGVEVSLCBESVNUUklCVVRFRCwg
U0VMRUNUSU9OLCBGSVJTVF9MSU5FX0lOSEVSSVRFRCwgU0NST0xMQkFSLAogICAgIC8vIEludGVy
bmFsIElEcyBmb2xsb3c6CiAgICAgU0NST0xMQkFSX1RIVU1CLCBTQ1JPTExCQVJfQlVUVE9OLCBT
Q1JPTExCQVJfVFJBQ0ssIFNDUk9MTEJBUl9UUkFDS19QSUVDRSwgU0NST0xMQkFSX0NPUk5FUiwg
UkVTSVpFUiwKICAgICBJTlBVVF9MSVNUX0JVVFRPTiwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxMDE1Yjg5NzViMGRjNGM1
MGRhY2NmOWI4ZDAyZTBlZTI5YzMxZjEwLi5hMzc3NWUxNmZhZjg0NTFkMjgwYzVhNWFjMThhOWVm
Y2NlZTA1MmQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMTEtMDcgIEhheWF0byBJdG8g
IDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBJbXBsZW1lbnRz
IGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvIGVsZW1lbnQuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjE2OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwtZXhwZWN0ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1l
bGVtZW50LW1hdGNoLWFsbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3ItZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQt
c2VsZWN0b3IuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC1leHBlY3RlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC5odG1sOiBBZGRlZC4KKwogMjAxMi0x
Mi0xOCAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5w
dXQgZWxlbWVudHMgd2l0aCBkZWZhdWx0IHRvdWNoIGhhbmRsZXJzIGRvbid0IHVwZGF0ZSBoYW5k
bGVyIGNvdW50cyB3aGVuIGNoYW5naW5nIGRvY3VtZW50cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGMyNmUyYjU2YzRjNmE3YzcwYzZjZmQ1OGEy
MjdmOGUwZjQ0NjRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw5
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4K
KyAgPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwv
ZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwtZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1
ZG8tZWxlbWVudC1tYXRjaC1hbGwtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTYwYjcyZTBk
ZTkxNzc2MmIyYTJhNGM1ZWMzZWY5ZjU2NmViNDk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFs
bC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2
PgorICAgICAgbm9ybWFsCisgICAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9k
aXY+CisgICAgPC9kaXY+CisgICAgPGRpdj4KKyAgICAgIG5vcm1hbAorICAgICAgPGRpdiBzdHls
ZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgIDwvZGl2PgorICA8L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yZjQwNGYyNmU3YmRhODMwZTZlYjg1NGFjOTc1ZjNkYmJjNmNlOTA5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVk
by1lbGVtZW50LW1hdGNoLWFsbC5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNj
cmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7
CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnY29udGVudDo6ZGlzdHJpYnV0ZWQoLmhlbGxvKSB7
IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYn
LCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAg
ICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdj
b250ZW50JykpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2hlbGxvJ30sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
J2dyZWVuJykpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdoZWxsbyd9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KCdncmVlbicpKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5l
c3RlZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1MTgz
NDQyYTA3NmM3ZjgxYTljNTQyMTMxZTc5ZmI3NzZmMDExY2MKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVz
dGVkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxk
aXYgaWQ9Im5lc3RlZC1ob3N0Ij4KKyAgICAgIHRleHQxCisgICAgICA8ZGl2PgorICAgICAgICB0
ZXh0MgorICAgICAgICA8ZGl2PgorICAgICAgICAgIHRleHQzCisgICAgICAgICAgPGRpdiBzdHls
ZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgICAgICAgIDxkaXY+bm9ybWFsPC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9k
aXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjUzMjFiMGE2M2UxNDI5M2RiYWNkYTMxZDllYjFlNzg1YTdhMThlZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC1uZXN0ZWQuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxz
Y3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScp
Oworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2RpdiBjb250ZW50OjpkaXN0cmlidXRlZChkaXYg
Y29udGVudDo6ZGlzdHJpYnV0ZWQoZGl2LmdyZWVuKSkgeyBjb2xvcjogZ3JlZW47IH0nOworCit2
YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94
LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAg
ICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHsnaWQnOiAnbmVzdGVkLWhvc3QnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFk
b3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoJ3RleHQxJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgndGV4dDInKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJ2Rp
did9KSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywgeydj
bGFzcyc6ICdncmVlbid9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgndGV4dDMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jywge30pKSkpLAorICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnZ3JlZW4nfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSwKKyAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCdub3JtYWwnKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVk
by1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3ItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9y
LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjNkZWRlMTMzYjg2MmRkMTRjOTJlNjA1YzRhMWJl
ZDI4ZTM3YWRhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLWV4cGVjdGVkLmh0
bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRp
diBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXY+CisgICAgICBub3Jt
YWwKKyAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgICA8L2Rp
dj4KKyAgICA8ZGl2PgorICAgICAgbm9ybWFsCisgICAgICA8ZGl2Pm5vcm1hbDwvZGl2PgorICAg
IDwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNl
bGVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2ZWQ1M2IwMGM2
YzQ3YTNmMjQ4ZGE2MzNhODEyNDc5NDE4Zjk4OWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1z
ZWxlY3Rvci5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBz
aGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHls
ZS5pbm5lckhUTUwgPSAnY29udGVudDo6ZGlzdHJpYnV0ZWQoZGl2LmhlbGxvIGRpdikgeyBjb2xv
cjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz
YW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywgeydp
ZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAg
ICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVu
dCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2hlbGxvJ30s
CisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFs
JyksCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVl
bicpKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJyksCisgICAgICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSkpKSk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3Qt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QtZXhwZWN0ZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iYjgyNTNlNGRhYjc0MDU2NTgzOGQ4NDI1MGJiYTliZDkwNGQ5OTJhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1l
bGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTEg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgor
ICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9k
aXY+CisgICAgPHA+bm9ybWFsPC9wPgorICAgIDxwIHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVu
PC9wPgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVj
dG9yLWxpc3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGYx
N2ViNjI3MzE0ZThkYzEwNTdhMDEzYTQyMTk5M2FlZTJiODYwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVz
ZWQtaW4tc2VsZWN0b3ItbGlzdC5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNj
cmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7
CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnY29udGVudDo6ZGlzdHJpYnV0ZWQoZGl2KSwgcCB7
IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYn
LCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAg
ICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdj
b250ZW50JyksCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3AnLCB7fSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpLAor
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpLAorICAgICAgICAgICAgICBjcmVh
dGVET00oJ3AnLCB7J2NsYXNzJzogJ2hlbGxvJ30sCisgICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRlZC1wc2V1ZG8tZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQ1NTU4ODNlZTJlMDMz
Y2ZiNmNiNzExNzdkMjhlNmJhMzg4MDFlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC5odG1sCkBAIC0wLDAg
KzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnY29udGVu
dDo6ZGlzdHJpYnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQo
CisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3Jl
YXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHsnaWQnOiAnaG9zdC1jaGlsZCd9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181474</attachid>
            <date>2013-01-06 21:22:31 -0800</date>
            <delta_ts>2013-01-06 21:27:47 -0800</delta_ts>
            <desc>Add more tests. Update ChangeLog. Make it compilable without SHADOW_DOM flag. Support Reprojection.</desc>
            <filename>bug-82169-20130107141935.patch</filename>
            <type>text/plain</type>
            <size>50802</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NGVjM2MwOWFkNjI0ZmJlYTdlYjIwYTIyNDU0OWY5NzRhYmYwM2I2Li5l
MjVhYjU3YjdiYTY1NjE5NmM5NGQyOWRiNzU4MmZiMTkyNzQwNzBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTAxIEBACisyMDEzLTAxLTA2ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbU2hhZG93IERPTV0gSW1wbGVtZW50cyBhICc6OmRpc3RyaWJ1dGVkKCkn
IHBzZXVkbyBlbGVtZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODIxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnRzIGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvIGVsZW1lbnQuCisg
ICAgICAgIFNlZSB0aGUgU2hhZG93IERPTSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgZGV0YWlsLgor
CisgICAgICAgIGh0dHA6Ly9kdmNzLnczLm9yZy9oZy93ZWJjb21wb25lbnRzL3Jhdy1maWxlL3Rp
cC9zcGVjL3NoYWRvdy9pbmRleC5odG1sI3NlbGVjdGluZy1ub2Rlcy1kaXN0cmlidXRlZC10by1p
bnNlcnRpb24tcG9pbnRzCisKKyAgICAgICAgQSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxl
bWVudCBpcyB0aGUgZmlyc3QgQ1NTIHJ1bGUgd2hpY2gKKyAgICAgICAgY3Jvc3NlcyB0aGUgc2hh
ZG93IGJvdW5kYXJ5IGZyb20gYSBzaGFkb3cgdHJlZSB0byB0aGUgdHJlZSBvZiBpdHMKKyAgICAg
ICAgc2hhZG93IGhvc3QuIFRoYXQgbWVhbnMgYSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxl
bWVudCBpcworICAgICAgICBkZWZpbmVkIGluIHNoYWRvdyB0cmVlLCBidXQgdGhlIG5vZGUgd2hp
Y2ggaXMgbWF0Y2hlZCBpbiB0aGUgcnVsZQorICAgICAgICBpcyBvdXRzaWRlIG9mIHRoZSBzaGFk
b3cgdHJlZS4gVGhlcmVmb3JlLCB3ZSBjYW5ub3QgcHJlZGljdCBhCisgICAgICAgIHNjb3BlIHdo
ZXJlIHRoZSBtYXRjaGVkIG5vZGUgd2lsbCBiZSBiZWZvcmVoYW5kLiAgQ3VycmVudCBDU1MKKyAg
ICAgICAgaW1wbGVtZW50YXRpb24gYXNzdW1lcyBldmVyeSBmaW5hbCB0YXJnZXQgaXMgYXBwbGll
ZCBpbiBjdXJyZW50CisgICAgICAgIHNjb3BlLgorCisgICAgICAgIFRvIG92ZXJjb21lIHRoaXMg
aXNzdWUsIFN0eWxlUmVzb2x2ZXIgd2FzIHVwZGF0ZWQgc28gdGhhdCBpdCBoYXMKKyAgICAgICAg
U2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLiBXZSB1c2UgdGhpcyBSdWxlU2V0TWFwIHRvIGtl
ZXAgdHJhY2sKKyAgICAgICAgb2YgZWFjaCBSdWxlU2V0IG1hcHBlZCBieSBhIHNjb3BlIHdoZXJl
IGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvCisgICAgICAgIGVsZW1lbnQgaXMgb3JpZ2luYWxs
eSBkZWZpbmVkLiBUaGlzIHNjb3BlIGlzIHBhc3NlZCB0bworICAgICAgICBTZWxlY3RvckNoZWNr
ZXIgYW5kIGlzIHVzZWQgdG8gY2hlY2sgd2hldGhlciB0aGUgbWF0Y2hlZCBsYXN0IGVsZW1lbnQK
KyAgICAgICAgZXhpc3RzIGluIHRoZSBzY29wZSB3aGVyZSB0aGUgcnVsZSBpcyBvcmlnaW5hbGx5
IGRlZmluZWQuCisKKyAgICAgICAgSW50ZXJuYWxseSwgJzo6ZGlzdHJpYnV0ZWQnIHBzZXVkbyBl
bGVtZW50IGlzIHJlcHJlc2VudGVkIGJ5IGEKKyAgICAgICAgbmV3bHkgaW50cm9kdWNlZCBTaGFk
b3dEaXN0cmlidXRlZCByZWxhdGlvbi4gIEEgdHJhbnNmb3JtYXRpb24KKyAgICAgICAgZnJvbSBh
IGRpc3RyaXJidXRlZCBwc2V1ZG8gZWxlbWVudCB0byBhIFNoYWRvd0Rpc3RyaWJ1dGVkIGlzIGRv
bmUKKyAgICAgICAgaW4gcGFyc2luZyBzdGFnZSBvZiBDU1MuCisKKyAgICAgICAgVGVzdHM6IGZh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1l
bnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVk
by1lbGVtZW50LW1hdGNoLWFsbC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24uaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50LXN1cHBvcnQtc2VsZWN0b3IuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQu
aHRtbAorCisgICAgICAgICogV2ViQ29yZS5neXAvc2NyaXB0cy9ydWxlX2Jpc29uLnB5OgorICAg
ICAgICAqIGNzcy9DU1NHcmFtbWFyLnkuaW46CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmRldGVjdEZ1bmN0aW9uVHlwZVRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50
TmFtZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAqIGNzcy9DU1NQYXJz
ZXJWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OkNTU1Bh
cnNlclNlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyVmFsdWVzLmg6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6ZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpzZXRGdW5jdGlvbkFyZ3VtZW50
U2VsZWN0b3IpOgorICAgICAgICAoQ1NTUGFyc2VyU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OmlzUHNldWRvRGlzdHJpYnV0ZWRFbGVtZW50KToKKyAgICAg
ICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6
OnBzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6Om5hbWVUb1BzZXVkb1R5cGVNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZWxlY3RvclRleHQpOgorICAgICAgICAqIGNzcy9DU1NT
ZWxlY3Rvci5oOgorICAgICAgICAoQ1NTU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2VsZWN0b3I6OmlzRGlzdHJpYnV0ZWRQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmlzU2hhZG93RGlzdHJpYnV0ZWQpOgor
ICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChTZWxlY3Rvckhhc1NoYWRvd0Rpc3RyaWJ1dGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9ySGFzU2hhZG93RGlzdHJpYnV0ZWQ6Om9wZXJhdG9yKCkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU2VsZWN0b3JMaXN0OjpoYXNTaGFkb3dEaXN0cmlidXRlZEF0KToKKyAgICAgICAg
KiBjc3MvQ1NTU2VsZWN0b3JMaXN0Lmg6CisgICAgICAgIChDU1NTZWxlY3Rvckxpc3QpOgorICAg
ICAgICAqIGNzcy9SdWxlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFJ1
bGVzRnJvbVNoZWV0KToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcik6CisgICAgICAgICog
Y3NzL1NlbGVjdG9yQ2hlY2tlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2Vy
OjpTZWxlY3RvckNoZWNraW5nQ29udGV4dDo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQpOgorICAg
ICAgICAoU2VsZWN0b3JDaGVja2luZ0NvbnRleHQpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckZp
bHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckZpbHRlcjo6Y29sbGVjdElkZW50
aWZpZXJIYXNoZXMpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnJlc2V0QXV0aG9yU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6YWRkU3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bWF0Y2hTaGFkb3dEaXN0cmlidXRlZFJ1
bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Om1hdGNoQXV0aG9yUnVsZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNG
b3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNoZWNrU2VsZWN0b3Ip
OgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChTdHlsZVJlc29sdmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Ok1hdGNoT3B0aW9uczo6TWF0Y2hP
cHRpb25zKToKKyAgICAgICAgKE1hdGNoT3B0aW9ucyk6CisgICAgICAgICogaHRtbC9zaGFkb3cv
SW5zZXJ0aW9uUG9pbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RBbGxNaWRwb2ludElu
c2VydGlvblBvaW50cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoKKwogMjAxMy0wMS0wNiAgU2ViYXN0aWFuIERy
w7ZnZSAgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgogCiAgICAgICAgIEJ1Z8Kg
MTA2MTc3IC0gW0dTdHJlYW1lcl0gRG9uJ3QgY2FsbCBnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMo
KSB3aXRoIG5vbi1maXhlZCBjYXBzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9zY3JpcHRzL3J1bGVfYmlzb24ucHkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9z
Y3JpcHRzL3J1bGVfYmlzb24ucHkKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbiBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KaW5kZXggMWZkNDVlNDk1Y2U5NmE1YWE0NWM2NGIxZGU5
YmJmNjBjMGZlNzRjMy4uYzI1NDU2MDIzYzA1NTQ3ZWM3OGQ1YTdmZGUyMmE0MjgyYzIxNzVlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCkBAIC02MSw3ICs2MSwxMSBAQCBzdGF0aWMg
aW5saW5lIGludCBjc3N5eWVycm9yKHZvaWQqLCBjb25zdCBjaGFyKikKIAogJX0KIAorI2lmIEVO
QUJMRV9TSEFET1dfRE9NCislZXhwZWN0IDY2CisjZWxzZQogJWV4cGVjdCA2NQorI2VuZGlmCiAK
ICVub25hc3NvYyBMT1dFU1RfUFJFQwogCkBAIC0xNzcsNiArMTgxLDcgQEAgc3RhdGljIGlubGlu
ZSBpbnQgY3NzeXllcnJvcih2b2lkKiwgY29uc3QgY2hhciopCiAldG9rZW4gPHN0cmluZz4gQ1VF
RlVOQ1RJT04KICNlbmRpZgogJXRva2VuIDxzdHJpbmc+IE5PVEZVTkNUSU9OCisldG9rZW4gPHN0
cmluZz4gRElTVFJJQlVURURGVU5DVElPTgogJXRva2VuIDxzdHJpbmc+IENBTENGVU5DVElPTgog
JXRva2VuIDxzdHJpbmc+IE1JTkZVTkNUSU9OCiAldG9rZW4gPHN0cmluZz4gTUFYRlVOQ1RJT04K
QEAgLTExNDQsMTIgKzExNDksMTIgQEAgc2ltcGxlX3NlbGVjdG9yOgogICAgIHwgZWxlbWVudF9u
YW1lIHNwZWNpZmllcl9saXN0IHsKICAgICAgICAgJCQgPSAkMjsKICAgICAgICAgaWYgKCQkKQot
ICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKG51bGxB
dG9tLCAkMSwgJCQpOworICAgICAgICAgICAgJCQgPSBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNX
aXRoRWxlbWVudE5hbWUobnVsbEF0b20sICQxLCAkJCk7CiAgICAgfQogICAgIHwgc3BlY2lmaWVy
X2xpc3QgewogICAgICAgICAkJCA9ICQxOwogICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICBw
YXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20sIHN0YXJBdG9t
LCAkJCk7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVt
ZW50TmFtZShudWxsQXRvbSwgc3RhckF0b20sICQkKTsKICAgICB9CiAgICAgfCBuYW1lc3BhY2Vf
c2VsZWN0b3IgZWxlbWVudF9uYW1lIHsKICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0
aW5nU2VsZWN0b3IoKTsKQEAgLTExNTgsMTIgKzExNjMsMTIgQEAgc2ltcGxlX3NlbGVjdG9yOgog
ICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIGVsZW1lbnRfbmFtZSBzcGVjaWZpZXJfbGlzdCB7CiAg
ICAgICAgICQkID0gJDM7CiAgICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNlci0+dXBk
YXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSgkMSwgJDIsICQkKTsKKyAgICAgICAgICAgICQk
ID0gcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKCQxLCAkMiwgJCQpOwog
ICAgIH0KICAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBzcGVjaWZpZXJfbGlzdCB7CiAgICAgICAg
ICQkID0gJDI7CiAgICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3Bl
Y2lmaWVyc1dpdGhFbGVtZW50TmFtZSgkMSwgc3RhckF0b20sICQkKTsKKyAgICAgICAgICAgICQk
ID0gcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKCQxLCBzdGFyQXRvbSwg
JCQpOwogICAgIH0KICAgOwogCkBAIC0xMzU1LDYgKzEzNjAsMTkgQEAgcHNldWRvOgogICAgICAg
ICAgICAgJCQgPSAwOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRV9TSEFET1dfRE9NCisgICAg
fCAnOicgJzonIERJU1RSSUJVVEVERlVOQ1RJT04gbWF5YmVfc3BhY2Ugc2VsZWN0b3IgbWF5YmVf
c3BhY2UgJyknIHsKKyAgICAgICAgaWYgKCEkNSkKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rv
cigpOworICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50
KTsKKyAgICAgICAgICAgICQkLT5zZXRGdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IoJDUpOworICAg
ICAgICAgICAgJDMubG93ZXIoKTsKKyAgICAgICAgICAgICQkLT5zZXRWYWx1ZSgkMyk7CisgICAg
ICAgIH0KKyAgICB9CisjZW5kaWYKICAgICAvLyB1c2UgYnkgOi13ZWJraXQtYW55LgogICAgIC8v
IEZJWE1FOiBzaG91bGQgd2Ugc3VwcG9ydCBnZW5lcmljIHNlbGVjdG9ycyBoZXJlIG9yIGp1c3Qg
c2ltcGxlX3NlbGVjdG9ycz8KICAgICAvLyBVc2Ugc2ltcGxlX3NlbGVjdG9yX2xpc3QgZm9yIG5v
dyB0byBtYXRjaCAtbW96LWFueS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggZGI5NGNk
Nzc2MGM2ZTQ3MmQ2OTI3NzcyNjE4YmQzNmE2YTgwODUzYS4uNDU2ZWZlZjA4ZDY2ZDBjNmM2M2Rh
YmIyMDQ3OTQ1OTY3MzI5YWY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTk1MDEs
NiArOTUwMSw4IEBAIGlubGluZSB2b2lkIENTU1BhcnNlcjo6ZGV0ZWN0RnVuY3Rpb25UeXBlVG9r
ZW4oaW50IGxlbmd0aCkKICAgICBjYXNlIDExOgogICAgICAgICBpZiAoaXNFcXVhbFRvQ1NTSWRl
bnRpZmllcihuYW1lLCAibnRoLW9mLXR5cGUiKSkKICAgICAgICAgICAgIG1fcGFyc2luZ01vZGUg
PSBOdGhDaGlsZE1vZGU7CisgICAgICAgIGVsc2UgaWYgKGlzRXF1YWxUb0NTU0lkZW50aWZpZXIo
bmFtZSwgImRpc3RyaWJ1dGVkIikpCisgICAgICAgICAgICBtX3Rva2VuID0gRElTVFJJQlVURURG
VU5DVElPTjsKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSAxNDoKQEAgLTEwNjAzLDE2ICsx
MDYwNSwyOSBAQCBRdWFsaWZpZWROYW1lIENTU1BhcnNlcjo6ZGV0ZXJtaW5lTmFtZUluTmFtZXNw
YWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjbwogICAgIHJldHVybiBRdWFsaWZpZWRO
YW1lKHByZWZpeCwgbG9jYWxOYW1lLCBtX3N0eWxlU2hlZXQtPmRldGVybWluZU5hbWVzcGFjZShw
cmVmaXgpKTsKIH0KIAotdm9pZCBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVu
dE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VQcmVmaXgsIGNvbnN0IEF0b21pY1N0
cmluZyYgZWxlbWVudE5hbWUsIENTU1BhcnNlclNlbGVjdG9yKiBzcGVjaWZpZXJzKQorQ1NTUGFy
c2VyU2VsZWN0b3IqIENTU1BhcnNlcjo6dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBl
bGVtZW50TmFtZSwgQ1NTUGFyc2VyU2VsZWN0b3IqIHNwZWNpZmllcnMpCiB7CiAgICAgQXRvbWlj
U3RyaW5nIGRldGVybWluZWROYW1lc3BhY2UgPSBuYW1lc3BhY2VQcmVmaXggIT0gbnVsbEF0b20g
JiYgbV9zdHlsZVNoZWV0ID8gbV9zdHlsZVNoZWV0LT5kZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNw
YWNlUHJlZml4KSA6IG1fZGVmYXVsdE5hbWVzcGFjZTsKICAgICBRdWFsaWZpZWROYW1lIHRhZyA9
IFF1YWxpZmllZE5hbWUobmFtZXNwYWNlUHJlZml4LCBlbGVtZW50TmFtZSwgZGV0ZXJtaW5lZE5h
bWVzcGFjZSk7Ci0gICAgaWYgKCFzcGVjaWZpZXJzLT5pc0N1c3RvbVBzZXVkb0VsZW1lbnQoKSkg
eworICAgIGlmICghc3BlY2lmaWVycy0+aXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkgJiYgIXNwZWNp
ZmllcnMtPmlzUHNldWRvRGlzdHJpYnV0ZWRFbGVtZW50KCkpIHsKICNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCiAgICAgICAgIGlmICghKHNwZWNpZmllcnMtPnBzZXVkb1R5cGUoKSA9PSBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ3VlKSkKICNlbmRpZgogICAgICAgICAgICAgc3BlY2lmaWVycy0+c2V0VGFn
KHRhZyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHNwZWNpZmllcnM7CisgICAg
fQorCisgICAgaWYgKHNwZWNpZmllcnMtPmlzUHNldWRvRGlzdHJpYnV0ZWRFbGVtZW50KCkpIHsK
KyAgICAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGFyZ3VtZW50U2VsZWN0b3IgPSBzcGVjaWZpZXJz
LT5mdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IoKTsKKyAgICAgICAgQVNTRVJUKGFyZ3VtZW50U2Vs
ZWN0b3IpOworICAgICAgICBDU1NQYXJzZXJTZWxlY3RvciogZW5kID0gYXJndW1lbnRTZWxlY3Rv
cjsKKyAgICAgICAgd2hpbGUgKGVuZC0+dGFnSGlzdG9yeSgpKQorICAgICAgICAgICAgZW5kID0g
ZW5kLT50YWdIaXN0b3J5KCk7CisgICAgICAgIE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gZWxl
bWVudE5hbWVTZWxlY3RvciA9IGFkb3B0UHRyKG5ldyBDU1NQYXJzZXJTZWxlY3Rvcik7CisgICAg
ICAgIGVsZW1lbnROYW1lU2VsZWN0b3ItPnNldFRhZyh0YWcpOworICAgICAgICBlbmQtPnNldFRh
Z0hpc3RvcnkoZWxlbWVudE5hbWVTZWxlY3Rvci5yZWxlYXNlKCkpOworICAgICAgICBlbmQtPnNl
dFJlbGF0aW9uKENTU1NlbGVjdG9yOjpTaGFkb3dEaXN0cmlidXRlZCk7CisgICAgICAgIHJldHVy
biBhcmd1bWVudFNlbGVjdG9yOwogICAgIH0KIAogICAgIENTU1BhcnNlclNlbGVjdG9yKiBsYXN0
U2hhZG93RGVzY2VuZGFudCA9IHNwZWNpZmllcnM7CkBAIC0xMDYyNSw3ICsxMDY0MCw3IEBAIHZv
aWQgQ1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZXNwYWNlUHJlCiAKICAgICBpZiAobGFzdFNoYWRvd0Rlc2NlbmRhbnQtPnRh
Z0hpc3RvcnkoKSkgewogICAgICAgICBsYXN0U2hhZG93RGVzY2VuZGFudC0+dGFnSGlzdG9yeSgp
LT5zZXRUYWcodGFnKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gc3BlY2lmaWVy
czsKICAgICB9CiAKICAgICAvLyBGb3Igc2hhZG93LUlEIHBzZXVkby1lbGVtZW50cyB0byBiZSBj
b3JyZWN0bHkgbWF0Y2hlZCwgdGhlIFNoYWRvd0Rlc2NlbmRhbnQgY29tYmluYXRvciBoYXMgdG8g
YmUgdXNlZC4KQEAgLTEwNjM0LDYgKzEwNjQ5LDcgQEAgdm9pZCBDU1NQYXJzZXI6OnVwZGF0ZVNw
ZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VQcmUK
ICAgICBlbGVtZW50TmFtZVNlbGVjdG9yLT5zZXRUYWcodGFnKTsKICAgICBsYXN0U2hhZG93RGVz
Y2VuZGFudC0+c2V0VGFnSGlzdG9yeShlbGVtZW50TmFtZVNlbGVjdG9yLnJlbGVhc2UoKSk7CiAg
ICAgbGFzdFNoYWRvd0Rlc2NlbmRhbnQtPnNldFJlbGF0aW9uKENTU1NlbGVjdG9yOjpTaGFkb3dE
ZXNjZW5kYW50KTsKKyAgICByZXR1cm4gc3BlY2lmaWVyczsKIH0KIAogQ1NTUGFyc2VyU2VsZWN0
b3IqIENTU1BhcnNlcjo6dXBkYXRlU3BlY2lmaWVycyhDU1NQYXJzZXJTZWxlY3Rvciogc3BlY2lm
aWVycywgQ1NTUGFyc2VyU2VsZWN0b3IqIG5ld1NwZWNpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
aAppbmRleCAzOTJmZjk4NDBjNWE2YzgzOWMyZjIxNDQzN2FiNzU4NGJiNzI1YTlkLi5lMWE0ZTJm
NzUyMWRlYjNhNGNlMmMwMzBhNTE4NjVjZjE1ZjJiMGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5o
CkBAIC0zMDksNyArMzA5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGROYW1lc3BhY2UoY29u
c3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgdXJpKTsKICAgICBR
dWFsaWZpZWROYW1lIGRldGVybWluZU5hbWVJbk5hbWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcm
IHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpOwotICAgIHZvaWQgdXBkYXRl
U3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVBy
ZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50TmFtZSwgQ1NTUGFyc2VyU2VsZWN0b3Iq
KTsKKyAgICBDU1NQYXJzZXJTZWxlY3RvciogdXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFt
ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5n
JiBlbGVtZW50TmFtZSwgQ1NTUGFyc2VyU2VsZWN0b3IqKTsKICAgICBDU1NQYXJzZXJTZWxlY3Rv
ciogdXBkYXRlU3BlY2lmaWVycyhDU1NQYXJzZXJTZWxlY3RvciosIENTU1BhcnNlclNlbGVjdG9y
Kik7CiAKICAgICB2b2lkIGludmFsaWRCbG9ja0hpdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyVmFsdWVzLmNwcAppbmRleCBkMjNiODU4NWQ1ZDdiYjhlYjBmMjY4MjM0YjZlZDA2YTU4ODFk
ZjI3Li41MDBkN2IxNDAwNGEyNGViYzM1M2QyYmZlZWMxNzMzNjMwYTQzNGJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcApAQCAtMTQ2LDYgKzE0Niw3IEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IENTU1BhcnNlclZhbHVlOjpjcmVhdGVDU1NWYWx1ZSgpCiAKIENTU1BhcnNl
clNlbGVjdG9yOjpDU1NQYXJzZXJTZWxlY3RvcigpCiAgICAgOiBtX3NlbGVjdG9yKGFkb3B0UHRy
KGZhc3ROZXc8Q1NTU2VsZWN0b3I+KCkpKQorICAgICwgbV9mdW5jdGlvbkFyZ3VtZW50U2VsZWN0
b3IoMCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZh
bHVlcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCmluZGV4IDEzMDFi
MWNlMGUxMTM3MjNjY2Y4MjE2MjhlZTA1ZTJlMzEwMjM2N2IuLjJkYjA0YzQ2NDhlMDlhNjA4ZmU3
OTRjZGNiNjFmYWVlZjIzMjEzYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXJWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgK
QEAgLTE4Niw4ICsxODYsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZG9wdFNlbGVjdG9yVmVj
dG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4mIHNlbGVjdG9yVmVjdG9yKTsK
IAorICAgIENTU1BhcnNlclNlbGVjdG9yKiBmdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IoKSBjb25z
dCB7IHJldHVybiBtX2Z1bmN0aW9uQXJndW1lbnRTZWxlY3RvcjsgfQorICAgIHZvaWQgc2V0RnVu
Y3Rpb25Bcmd1bWVudFNlbGVjdG9yKENTU1BhcnNlclNlbGVjdG9yKiBzZWxlY3RvcikgeyBtX2Z1
bmN0aW9uQXJndW1lbnRTZWxlY3RvciA9IHNlbGVjdG9yOyB9CisKICAgICBDU1NTZWxlY3Rvcjo6
UHNldWRvVHlwZSBwc2V1ZG9UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvci0+cHNldWRv
VHlwZSgpOyB9CiAgICAgYm9vbCBpc0N1c3RvbVBzZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBtX3NlbGVjdG9yLT5pc0N1c3RvbVBzZXVkb0VsZW1lbnQoKTsgfQorICAgIGJvb2wgaXNQc2V1
ZG9EaXN0cmlidXRlZEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yLT5pc0Rpc3Ry
aWJ1dGVkUHNldWRvRWxlbWVudCgpOyB9CiAKICAgICBib29sIGlzU2ltcGxlKCkgY29uc3QgeyBy
ZXR1cm4gIW1fdGFnSGlzdG9yeSAmJiBtX3NlbGVjdG9yLT5pc1NpbXBsZSgpOyB9CiAgICAgYm9v
bCBoYXNTaGFkb3dEZXNjZW5kYW50KCkgY29uc3Q7CkBAIC0yMDAsNiArMjA0LDggQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBPd25QdHI8Q1NTU2VsZWN0b3I+IG1fc2VsZWN0b3I7CiAgICAgT3du
UHRyPENTU1BhcnNlclNlbGVjdG9yPiBtX3RhZ0hpc3Rvcnk7CisKKyAgICBDU1NQYXJzZXJTZWxl
Y3RvciogbV9mdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3I7CiB9OwogCiBpbmxpbmUgYm9vbCBDU1NQ
YXJzZXJTZWxlY3Rvcjo6aGFzU2hhZG93RGVzY2VuZGFudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmNwcAppbmRleCA1YTZlY2NhZmI5NDJjMGQ2ZmE3M2E2MmI2ZmZjNzQyMWYzY2Fh
OWVjLi4yZGMxZGYzODExM2M3NTgzMWY0ZDdmYzdhMjMzNDRhZDRiN2U3MGY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5jcHAKQEAgLTEzOSw2ICsxMzksOCBAQCBQc2V1ZG9JZCBDU1NTZWxl
Y3Rvcjo6cHNldWRvSWQoUHNldWRvVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gQkVGT1JFOwog
ICAgIGNhc2UgUHNldWRvQWZ0ZXI6CiAgICAgICAgIHJldHVybiBBRlRFUjsKKyAgICBjYXNlIFBz
ZXVkb0Rpc3RyaWJ1dGVkOgorICAgICAgICByZXR1cm4gRElTVFJJQlVURUQ7CiAgICAgY2FzZSBQ
c2V1ZG9TY3JvbGxiYXI6CiAgICAgICAgIHJldHVybiBTQ1JPTExCQVI7CiAgICAgY2FzZSBQc2V1
ZG9TY3JvbGxiYXJCdXR0b246CkBAIC0yNjEsNiArMjYzLDcgQEAgc3RhdGljIEhhc2hNYXA8QXRv
bWljU3RyaW5nSW1wbCosIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlPiogbmFtZVRvUHNldWRvVHlw
ZU1hcCgKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmlyc3RMaW5lLCAo
ImZpcnN0LWxpbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZpcnN0T2ZUeXBlLCAoImZpcnN0LW9m
LXR5cGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZ1bGxQYWdlTWVkaWEsICgiLXdlYmtpdC1mdWxs
LXBhZ2UtbWVkaWEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGRpc3RyaWJ1dGVkLCAoImRpc3RyaWJ1
dGVkKCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbnRoQ2hpbGQsICgibnRoLWNoaWxkKCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgbnRoT2ZUeXBlLCAoIm50aC1vZi10eXBlKCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgbnRoTGFzdENoaWxkLCAoIm50aC1sYXN0LWNoaWxkKCIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKQEAgLTM0Myw2ICszNDYsNyBAQCBzdGF0aWMgSGFzaE1hcDxB
dG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGU+KiBuYW1lVG9Qc2V1ZG9U
eXBlTWFwKAogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoZnVsbFBhZ2VNZWRpYS5pbXBs
KCksIENTU1NlbGVjdG9yOjpQc2V1ZG9GdWxsUGFnZU1lZGlhKTsKICAgICAgICAgbmFtZVRvUHNl
dWRvVHlwZS0+c2V0KGxhc3RDaGlsZC5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9MYXN0Q2hp
bGQpOwogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQobGFzdE9mVHlwZS5pbXBsKCksIENT
U1NlbGVjdG9yOjpQc2V1ZG9MYXN0T2ZUeXBlKTsKKyAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+
c2V0KGRpc3RyaWJ1dGVkLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Rpc3RyaWJ1dGVkKTsK
ICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KG9ubHlDaGlsZC5pbXBsKCksIENTU1NlbGVj
dG9yOjpQc2V1ZG9Pbmx5Q2hpbGQpOwogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQob25s
eU9mVHlwZS5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9Pbmx5T2ZUeXBlKTsKICAgICAgICAg
bmFtZVRvUHNldWRvVHlwZS0+c2V0KGZpcnN0TGV0dGVyLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0ZpcnN0TGV0dGVyKTsKQEAgLTQ0OCw2ICs0NTIsNyBAQCB2b2lkIENTU1NlbGVjdG9yOjpl
eHRyYWN0UHNldWRvVHlwZSgpIGNvbnN0CiAgICAgY2FzZSBQc2V1ZG9GaXJzdExldHRlcjoKICAg
ICBjYXNlIFBzZXVkb0ZpcnN0TGluZToKICAgICAgICAgY29tcGF0ID0gdHJ1ZTsKKyAgICBjYXNl
IFBzZXVkb0Rpc3RyaWJ1dGVkOgogICAgIGNhc2UgUHNldWRvUmVzaXplcjoKICAgICBjYXNlIFBz
ZXVkb1Njcm9sbGJhcjoKICAgICBjYXNlIFBzZXVkb1Njcm9sbGJhckNvcm5lcjoKQEAgLTY4NCw2
ICs2ODksOCBAQCBTdHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCgpIGNvbnN0CiAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
U2hhZG93RGVzY2VuZGFudDoKICAgICAgICAgICAgIHJldHVybiB0YWdIaXN0b3J5VGV4dCArIHN0
ci50b1N0cmluZygpOworICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEaXN0cmlidXRl
ZDoKKyAgICAgICAgICAgIHJldHVybiB0YWdIaXN0b3J5VGV4dCArICI6OmRpc3RyaWJ1dGVkKCIg
KyBzdHIudG9TdHJpbmcoKSArICIpIjsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3IuaAppbmRleCAwNjQ5OGY0ZWM3ODEyYzY2OWE1NjcyMzVlNTVhOTllNDU4ZmRhMjUy
Li5mYTY4M2VmYTExOWJkZTI3ZTczOTM3MTE4OGZlYzY1YTVjMTNjYzEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3IuaApAQCAtNzYsNyArNzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgICAgICBEaXJlY3RBZGphY2VudCwKICAgICAgICAgICAgIEluZGlyZWN0QWRqYWNlbnQsCiAg
ICAgICAgICAgICBTdWJTZWxlY3RvciwKLSAgICAgICAgICAgIFNoYWRvd0Rlc2NlbmRhbnQKKyAg
ICAgICAgICAgIFNoYWRvd0Rlc2NlbmRhbnQsCisgICAgICAgICAgICBTaGFkb3dEaXN0cmlidXRl
ZCwKICAgICAgICAgfTsKIAogICAgICAgICBlbnVtIFBzZXVkb1R5cGUgewpAQCAtMTE5LDYgKzEy
MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFBzZXVkb1RhcmdldCwKICAg
ICAgICAgICAgIFBzZXVkb0JlZm9yZSwKICAgICAgICAgICAgIFBzZXVkb0FmdGVyLAorICAgICAg
ICAgICAgUHNldWRvRGlzdHJpYnV0ZWQsCiAgICAgICAgICAgICBQc2V1ZG9MYW5nLAogICAgICAg
ICAgICAgUHNldWRvTm90LAogICAgICAgICAgICAgUHNldWRvUmVzaXplciwKQEAgLTIyMSw4ICsy
MjMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1hdGNoZXNQc2V1ZG9F
bGVtZW50KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNVbmtub3duUHNldWRvRWxlbWVudCgpIGNv
bnN0OwogICAgICAgICBib29sIGlzQ3VzdG9tUHNldWRvRWxlbWVudCgpIGNvbnN0OworICAgICAg
ICBib29sIGlzRGlzdHJpYnV0ZWRQc2V1ZG9FbGVtZW50KCkgY29uc3Q7CiAgICAgICAgIGJvb2wg
aXNTaWJsaW5nU2VsZWN0b3IoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc0F0dHJpYnV0ZVNlbGVj
dG9yKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNTaGFkb3dEaXN0cmlidXRlZCgpIGNvbnN0Owog
CiAgICAgICAgIFJlbGF0aW9uIHJlbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
UmVsYXRpb24+KG1fcmVsYXRpb24pOyB9CiAKQEAgLTMwNiw2ICszMTAsMTIgQEAgaW5saW5lIGJv
b2wgQ1NTU2VsZWN0b3I6OmlzQ3VzdG9tUHNldWRvRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fbWF0Y2ggPT0gUHNldWRvRWxlbWVudCAmJiAobV9wc2V1ZG9UeXBlID09IFBzZXVkb1VzZXJB
Z2VudEN1c3RvbUVsZW1lbnQgfHwgbV9wc2V1ZG9UeXBlID09IFBzZXVkb1dlYktpdEN1c3RvbUVs
ZW1lbnQpOwogfQogCitpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6aXNEaXN0cmlidXRlZFBzZXVk
b0VsZW1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX21hdGNoID09IFBzZXVkb0VsZW1lbnQg
JiYgcHNldWRvVHlwZSgpID09IFBzZXVkb0Rpc3RyaWJ1dGVkOworCit9CisKIGlubGluZSBib29s
IENTU1NlbGVjdG9yOjppc1NpYmxpbmdTZWxlY3RvcigpIGNvbnN0CiB7CiAgICAgUHNldWRvVHlw
ZSB0eXBlID0gcHNldWRvVHlwZSgpOwpAQCAtMzM1LDYgKzM0NSwxMSBAQCBpbmxpbmUgYm9vbCBD
U1NTZWxlY3Rvcjo6aXNBdHRyaWJ1dGVTZWxlY3RvcigpIGNvbnN0CiAgICAgICAgIHx8IG1fbWF0
Y2ggPT0gQ1NTU2VsZWN0b3I6OkVuZDsKIH0KIAoraW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6Omlz
U2hhZG93RGlzdHJpYnV0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3JlbGF0aW9uID09IENT
U1NlbGVjdG9yOjpTaGFkb3dEaXN0cmlidXRlZDsKK30KKwogaW5saW5lIHZvaWQgQ1NTU2VsZWN0
b3I6OnNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgLy8gTmVlZCB0
byBkbyByZWYgY291bnRpbmcgbWFudWFsbHkgZm9yIHRoZSB1bmlvbi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yTGlzdC5jcHAKaW5kZXggNDMxMzZkMWM5MDFjNjM0MWJhY2JlZjgzOTQ5ZGY5
NGU2MGYxYzM2Yy4uYTA3NmZjMzc2OTIxNzQ2NzRhNzA2MTc0ODliZDk3NjJlZjA2N2NiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKIAogI2luY2x1ZGUgIkNTU1BhcnNlclZhbHVlcy5o
IgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVt
ZW50YXRpb24uaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTIx
MSw2ICsyMTIsMjEgQEAgYm9vbCBDU1NTZWxlY3Rvckxpc3Q6Omhhc0ludmFsaWRTZWxlY3Rvcigp
IGNvbnN0CiAgICAgcmV0dXJuIGZvckVhY2hTZWxlY3RvcihmdW5jdG9yLCB0aGlzKTsKIH0KIAor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQorY2xhc3MgU2VsZWN0b3JIYXNTaGFkb3dEaXN0cmlidXRl
ZCB7CitwdWJsaWM6CisgICAgYm9vbCBvcGVyYXRvcigpKENTU1NlbGVjdG9yKiBzZWxlY3RvcikK
KyAgICB7CisgICAgICAgIHJldHVybiBzZWxlY3Rvci0+aXNTaGFkb3dEaXN0cmlidXRlZCgpOwor
ICAgIH0KK307CisKK2Jvb2wgQ1NTU2VsZWN0b3JMaXN0OjpoYXNTaGFkb3dEaXN0cmlidXRlZEF0
KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICBTZWxlY3Rvckhhc1NoYWRvd0Rpc3RyaWJ1dGVk
IGZ1bmN0b3I7CisgICAgcmV0dXJuIGZvckVhY2hUYWdTZWxlY3RvcihmdW5jdG9yLCBzZWxlY3Rv
ckF0KGluZGV4KSk7Cit9CiAKKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgKaW5kZXggNGZjZmVlMmZhYTQxODJkN2E5YWIwNTVi
Y2NlNTE5ZmU3NGUyMjcxNS4uNGU3YjU4MmRiYzUxMThhNDVlNDZkYmJmMGNkODk0YTlmNzQzZjZi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaApAQCAtNjAsNiArNjAsMTAgQEAg
cHVibGljOgogICAgIGJvb2wgc2VsZWN0b3JzTmVlZE5hbWVzcGFjZVJlc29sdXRpb24oKTsKICAg
ICBib29sIGhhc0ludmFsaWRTZWxlY3RvcigpIGNvbnN0OwogCisjaWYgRU5BQkxFKFNIQURPV19E
T00pCisgICAgYm9vbCBoYXNTaGFkb3dEaXN0cmlidXRlZEF0KHNpemVfdCBpbmRleCkgY29uc3Q7
CisjZW5kaWYKKwogICAgIFN0cmluZyBzZWxlY3RvcnNUZXh0KCkgY29uc3Q7CiAKICAgICB2b2lk
IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxl
U2V0LmNwcAppbmRleCBkODQwMDRkOWNjYzE0ODQzZTRiNDBhNmJkNjJhYzcyYThkZmIyMmViLi5m
MjQ5YWU5NjFkY2Q0ODQxMDA3MzNhNGEwODdiMTBhY2YwOGZjNzI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVT
ZXQuY3BwCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVl
dChTdHlsZVNoZWV0Q29udGVudHMqIHNoZWV0LCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHUKIAogICAg
ICAgICBBU1NFUlQoIXJ1bGUtPmlzSW1wb3J0UnVsZSgpKTsKICAgICAgICAgaWYgKHJ1bGUtPmlz
U3R5bGVSdWxlKCkpCi0gICAgICAgICAgICBhZGRTdHlsZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5bGVS
dWxlKj4ocnVsZSksIGFkZFJ1bGVGbGFncyk7CisgICAgICAgICAgICByZXNvbHZlci0+YWRkU3R5
bGVSdWxlKHN0YXRpY19jYXN0PFN0eWxlUnVsZSo+KHJ1bGUpLCBjb25zdF9jYXN0PENvbnRhaW5l
ck5vZGUqPihzY29wZSksIHRoaXMsIGFkZFJ1bGVGbGFncyk7CiAgICAgICAgIGVsc2UgaWYgKHJ1
bGUtPmlzUGFnZVJ1bGUoKSkKICAgICAgICAgICAgIGFkZFBhZ2VSdWxlKHN0YXRpY19jYXN0PFN0
eWxlUnVsZVBhZ2UqPihydWxlKSk7CiAgICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlzTWVkaWFSdWxl
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggY2E3M2FhNGYy
NjY2ZjdlZThiNmM1ODIxNGY3MmQxNGU4OWRmN2E4My4uYmUzZmNjY2M5YWQ1NTIxZGFiOWM1OGUz
MTcyMTllNTE0NGMxMzA4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9y
Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAK
QEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxQcm9ncmVzc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQYWdl
LmgiCkBAIC0yODEsOCArMjgyLDE1IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBT
ZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVjCiAKICAgICAv
LyBQcmVwYXJlIG5leHQgc2VsZWN0b3IKICAgICBDU1NTZWxlY3RvciogaGlzdG9yeVNlbGVjdG9y
ID0gY29udGV4dC5zZWxlY3Rvci0+dGFnSGlzdG9yeSgpOwotICAgIGlmICghaGlzdG9yeVNlbGVj
dG9yKQorICAgIGlmICghaGlzdG9yeVNlbGVjdG9yKSB7CisjaWYgRU5BQkxFKFNIQURPV19ET00p
CisgICAgICAgIGlmIChjb250ZXh0LnNjb3BlT2ZMYXN0RWxlbWVudCkgeworICAgICAgICAgICAg
Ly8gRklYTUU6IENoZWNrIHRoZSBzY29wZSBtb3JlIHN0cmljdGx5LgorICAgICAgICAgICAgcmV0
dXJuIGNvbnRleHQuc2NvcGVPZkxhc3RFbGVtZW50LT50cmVlU2NvcGUoKSA9PSBjb250ZXh0LmVs
ZW1lbnQtPnRyZWVTY29wZSgpID8gU2VsZWN0b3JNYXRjaGVzIDogU2VsZWN0b3JGYWlsc0xvY2Fs
bHk7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICByZXR1cm4gU2VsZWN0b3JNYXRjaGVzOwor
ICAgIH0KIAogICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0IG5leHRDb250ZXh0KGNvbnRleHQp
OwogICAgIG5leHRDb250ZXh0LnNlbGVjdG9yID0gaGlzdG9yeVNlbGVjdG9yOwpAQCAtMzg0LDYg
KzM5MiwyNSBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVja2Vy
OjpjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlYwogICAgICAgICAgICAgbmV4dENvbnRl
eHQuZWxlbWVudFBhcmVudFN0eWxlID0gMDsKICAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVj
dG9yKG5leHRDb250ZXh0LCBpZ25vcmVEeW5hbWljUHNldWRvKTsKICAgICAgICAgfQorCisgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6U2hhZG93RGlzdHJpYnV0ZWQ6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIFZlY3RvcjxJbnNlcnRpb25Qb2ludCosIDg+IGluc2VydGlvblBvaW50czsKKyAgICAgICAg
ICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IGNvbnRleHQuZWxlbWVudDsgZWxlbWVudDsgZWxl
bWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgeworICAgICAgICAgICAgICAgIGluc2Vy
dGlvblBvaW50cy5jbGVhcigpOworICAgICAgICAgICAgICAgIGNvbGxlY3RBbGxNaWRwb2ludElu
c2VydGlvblBvaW50cyhlbGVtZW50LCBpbnNlcnRpb25Qb2ludHMpOworICAgICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zZXJ0aW9uUG9pbnRzLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnQgPSBpbnNlcnRpb25Qb2ludHNb
aV07CisgICAgICAgICAgICAgICAgICAgIG5leHRDb250ZXh0LmlzU3ViU2VsZWN0b3IgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICAgICAgbmV4dENvbnRleHQuZWxlbWVudFN0eWxlID0gMDsKKyAg
ICAgICAgICAgICAgICAgICAgbmV4dENvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlID0gMDsKKyAg
ICAgICAgICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3IobmV4
dENvbnRleHQsIGlnbm9yZUR5bmFtaWNQc2V1ZG8pOworICAgICAgICAgICAgICAgICAgICBpZiAo
bWF0Y2ggPT0gU2VsZWN0b3JNYXRjaGVzIHx8IG1hdGNoID09IFNlbGVjdG9yRmFpbHNDb21wbGV0
ZWx5KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29t
cGxldGVseTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4IDMzMTkzZjc2YmMzMjgyNmFkMGQz
ZWU2MTQ1MTViOWJhYzVkMjUyMGIuLmQ5NjZkMmU1N2Q4NWY0MDQ1NmQwMWE2NmFjMjIwYjE3NDg4
MjBjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKQEAgLTYzLDYgKzYzLDcg
QEAgcHVibGljOgogICAgICAgICAgICAgLCBpc1N1YlNlbGVjdG9yKGZhbHNlKQogICAgICAgICAg
ICAgLCBoYXNTY3JvbGxiYXJQc2V1ZG8oZmFsc2UpCiAgICAgICAgICAgICAsIGhhc1NlbGVjdGlv
blBzZXVkbyhmYWxzZSkKKyAgICAgICAgICAgICwgc2NvcGVPZkxhc3RFbGVtZW50KDApCiAgICAg
ICAgIHsgfQogCiAgICAgICAgIENTU1NlbGVjdG9yKiBzZWxlY3RvcjsKQEAgLTc1LDYgKzc2LDcg
QEAgcHVibGljOgogICAgICAgICBib29sIGlzU3ViU2VsZWN0b3I7CiAgICAgICAgIGJvb2wgaGFz
U2Nyb2xsYmFyUHNldWRvOwogICAgICAgICBib29sIGhhc1NlbGVjdGlvblBzZXVkbzsKKyAgICAg
ICAgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGVPZkxhc3RFbGVtZW50OwogICAgIH07CiAKICAg
ICBib29sIGNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgYm9vbCBpc0Zhc3RD
aGVja2FibGVTZWxlY3RvciA9IGZhbHNlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JG
aWx0ZXIuY3BwCmluZGV4IGNlYWE3NjgxNDkwMGMwYjMxZDM5NGM0ZjI2Y2M0Y2JiNWUzNWU4ZGMu
LjNiNGQ2NDA0YjdjN2NmMWY5YjQ0ZWMzNWY0YTlhNDlkMzczODlmZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yRmlsdGVyLmNwcApAQCAtMTQ4LDYgKzE0OCw3IEBAIHZvaWQgU2VsZWN0b3JG
aWx0ZXI6OmNvbGxlY3RJZGVudGlmaWVySGFzaGVzKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3Rv
ciwgdW5zaWduCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50OgogICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpJbmRpcmVjdEFkamFjZW50OgogICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50OgorICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpT
aGFkb3dEaXN0cmlidXRlZDoKICAgICAgICAgICAgIHNraXBPdmVyU3Vic2VsZWN0b3JzID0gdHJ1
ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpEZXNjZW5k
YW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDA5OGUwZDU3YzBiN2Ux
ZDc0ZWQxNTA4ZjdlOTAwZDUxNmMyZTk3MGQuLmY1MWNmZmIyZTA0YWU4ODdiN2VkNDBlOTBmOTk1
ZGZmMTI0MDY2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTM2NCw2
ICszNjQsOSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnJlc2V0QXV0aG9yU3R5bGUoKQogewogICAg
IG1fYXV0aG9yU3R5bGUgPSBSdWxlU2V0OjpjcmVhdGUoKTsKICAgICBtX2F1dGhvclN0eWxlLT5k
aXNhYmxlQXV0b1Nocmlua1RvRml0KCk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgbV9z
aGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAuY2xlYXIoKTsKKyNlbmRpZgogfQogCiB2b2lkIFN0
eWxlUmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKHVuc2lnbmVkIGZpcnN0TmV3LCBj
b25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHN0eWxlU2hlZXRzKQpAQCAtNDQ4
LDYgKzQ1MSwzMiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZEtleWZyYW1lU3R5bGUoUGFzc1Jl
ZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IHJ1bGUpCiAgICAgbV9rZXlmcmFtZXNSdWxlTWFwLnNl
dChzLmltcGwoKSwgcnVsZSk7CiB9CiAKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkU3R5bGVSdWxl
KFN0eWxlUnVsZSogcnVsZSwgQ29udGFpbmVyTm9kZSogc2NvcGUsIFJ1bGVTZXQqIHJ1bGVTZXQs
IEFkZFJ1bGVGbGFncyBhZGRSdWxlRmxhZ3MpCit7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisg
ICAgaWYgKCFzY29wZSkgeworICAgICAgICBydWxlU2V0LT5hZGRTdHlsZVJ1bGUocnVsZSwgYWRk
UnVsZUZsYWdzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb25zdCBDU1NTZWxlY3Rv
ckxpc3QmIHNlbGVjdG9yTGlzdCA9IHJ1bGUtPnNlbGVjdG9yTGlzdCgpOworICAgIGZvciAoc2l6
ZV90IHNlbGVjdG9ySW5kZXggPSAwOyBzZWxlY3RvckluZGV4ICE9IG5vdEZvdW5kOyBzZWxlY3Rv
ckluZGV4ID0gc2VsZWN0b3JMaXN0LmluZGV4T2ZOZXh0U2VsZWN0b3JBZnRlcihzZWxlY3Rvcklu
ZGV4KSkgeworICAgICAgICBpZiAoc2VsZWN0b3JMaXN0Lmhhc1NoYWRvd0Rpc3RyaWJ1dGVkQXQo
c2VsZWN0b3JJbmRleCkpIHsKKyAgICAgICAgICAgIGlmIChtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVs
ZVNldE1hcC5jb250YWlucyhzY29wZSkpCisgICAgICAgICAgICAgICAgbV9zaGFkb3dEaXN0cmli
dXRlZFJ1bGVTZXRNYXAuZ2V0KHNjb3BlKS0+YWRkUnVsZShydWxlLCBzZWxlY3RvckluZGV4LCBh
ZGRSdWxlRmxhZ3MpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgT3duUHRy
PFJ1bGVTZXQ+IHJ1bGVTZXRGb3JTY29wZSA9IGFkb3B0UHRyKG5ldyBSdWxlU2V0KCkpOworICAg
ICAgICAgICAgICAgIHJ1bGVTZXRGb3JTY29wZS0+YWRkUnVsZShydWxlLCBzZWxlY3RvckluZGV4
LCBhZGRSdWxlRmxhZ3MpOworICAgICAgICAgICAgICAgIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxl
U2V0TWFwLmFkZChzY29wZSwgcnVsZVNldEZvclNjb3BlLnJlbGVhc2UoKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcnVsZVNldC0+YWRkUnVsZShydWxlLCBz
ZWxlY3RvckluZGV4LCBhZGRSdWxlRmxhZ3MpOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKHNjb3BlKTsKKyAgICBydWxlU2V0LT5hZGRTdHlsZVJ1bGUocnVsZSwgYWRkUnVsZUZsYWdz
KTsKKyNlbmRpZgorfQorCiBTdHlsZVJlc29sdmVyOjp+U3R5bGVSZXNvbHZlcigpCiB7CiAgICAg
bV9mb250U2VsZWN0b3ItPmNsZWFyRG9jdW1lbnQoKTsKQEAgLTY2NCw3ICs2OTMsOCBAQCB2b2lk
IFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzKFJ1bGVTZXQqIHJ1bGVzLCBpbnQm
IGZpcnN0UnVsZUluZGV4LCBpbgogICAgIFRyZWVTY29wZSogdHJlZVNjb3BlID0gbV9lbGVtZW50
LT50cmVlU2NvcGUoKTsKICAgICBpZiAoIU1hdGNoaW5nVUFSdWxlc1Njb3BlOjppc01hdGNoaW5n
VUFSdWxlcygpCiAgICAgICAgICYmICF0cmVlU2NvcGUtPmFwcGx5QXV0aG9yU3R5bGVzKCkKLSAg
ICAgICAgJiYgKCFvcHRpb25zLnNjb3BlIHx8IG9wdGlvbnMuc2NvcGUtPnRyZWVTY29wZSgpICE9
IHRyZWVTY29wZSkpCisgICAgICAgICYmICghb3B0aW9ucy5zY29wZSB8fCBvcHRpb25zLnNjb3Bl
LT50cmVlU2NvcGUoKSAhPSB0cmVlU2NvcGUpCisgICAgICAgICYmICFvcHRpb25zLnNjb3BlT2ZM
YXN0RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2UgbmVlZCB0byBjb2xsZWN0
IHRoZSBydWxlcyBmb3IgaWQsIGNsYXNzLCB0YWcsIGFuZCBldmVyeXRoaW5nIGVsc2UgaW50byBh
IGJ1ZmZlciBhbmQKQEAgLTc5OSw2ICs4MjksMTcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRj
aEhvc3RSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQog
I2VuZGlmCiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6
bWF0Y2hTaGFkb3dEaXN0cmlidXRlZFJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5j
bHVkZUVtcHR5UnVsZXMpCit7CisgICAgZm9yIChTaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAuYmVnaW4oKTsgaXQg
IT0gbV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAuZW5kKCk7ICsraXQpIHsKKyAgICAgICAg
TWF0Y2hPcHRpb25zIG9wdGlvbnMoaW5jbHVkZUVtcHR5UnVsZXMsIDApOworICAgICAgICBvcHRp
b25zLnNjb3BlT2ZMYXN0RWxlbWVudCA9IGl0LT5rZXk7CisgICAgICAgIGNvbGxlY3RNYXRjaGlu
Z1J1bGVzKGl0LT52YWx1ZS5nZXQoKSwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJl
c3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOworICAgIH0KK30KKyNlbmRpZgor
CiB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3Vs
dCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKIHsKICAgICBtX21hdGNoZWRSdWxlcy5jbGVhcigp
OwpAQCAtODExLDYgKzg1Miw5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxl
cyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzCiAgICAgTWF0Y2hP
cHRpb25zIG9wdGlvbnMoaW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIGNvbGxlY3RNYXRjaGluZ1J1
bGVzKG1fYXV0aG9yU3R5bGUuZ2V0KCksIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCBy
ZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKICAgICBjb2xsZWN0TWF0Y2hp
bmdSdWxlc0ZvclJlZ2lvbihtX2F1dGhvclN0eWxlLmdldCgpLCByZXN1bHQucmFuZ2VzLmZpcnN0
QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7CisjaWYg
RU5BQkxFKFNIQURPV19ET00pCisgICAgbWF0Y2hTaGFkb3dEaXN0cmlidXRlZFJ1bGVzKHJlc3Vs
dCwgaW5jbHVkZUVtcHR5UnVsZXMpOworI2VuZGlmCiAgICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hl
ZFJ1bGVzKHJlc3VsdCk7CiAKICAgICBtYXRjaFNjb3BlZEF1dGhvclJ1bGVzKHJlc3VsdCwgaW5j
bHVkZUVtcHR5UnVsZXMpOwpAQCAtODQ3LDcgKzg5MSwxMSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6
OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBydWxl
cywgaQogCiAgICAgLy8gSW4gc29tZSBjYXNlcyB3ZSBtYXkgZW5kIHVwIGxvb2tpbmcgdXAgc3R5
bGUgZm9yIHJhbmRvbSBlbGVtZW50cyBpbiB0aGUgbWlkZGxlIG9mIGEgcmVjdXJzaXZlIHRyZWUg
cmVzb2x2ZS4KICAgICAvLyBBbmNlc3RvciBpZGVudGlmaWVyIGZpbHRlciB3b24ndCBiZSB1cC10
by1kYXRlIGluIHRoYXQgY2FzZSBhbmQgd2UgY2FuJ3QgdXNlIHRoZSBmYXN0IHBhdGguCisjaWYg
RU5BQkxFKFNIQURPV19ET00pCisgICAgYm9vbCBjYW5Vc2VGYXN0UmVqZWN0ID0gbV9zZWxlY3Rv
ckZpbHRlci5wYXJlbnRTdGFja0lzQ29uc2lzdGVudChtX3BhcmVudE5vZGUpICYmICFvcHRpb25z
LnNjb3BlT2ZMYXN0RWxlbWVudDsKKyNlbHNlCiAgICAgYm9vbCBjYW5Vc2VGYXN0UmVqZWN0ID0g
bV9zZWxlY3RvckZpbHRlci5wYXJlbnRTdGFja0lzQ29uc2lzdGVudChtX3BhcmVudE5vZGUpOwor
I2VuZGlmCiAKICAgICB1bnNpZ25lZCBzaXplID0gcnVsZXMtPnNpemUoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CkBAIC04NTcsNyArOTA1LDcgQEAgdm9pZCBT
dHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1
bGVEYXRhPiogcnVsZXMsIGkKIAogICAgICAgICBTdHlsZVJ1bGUqIHJ1bGUgPSBydWxlRGF0YS5y
dWxlKCk7CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxNYXRjaFJ1bGUoZG9jdW1lbnQoKSwgcnVsZSwg
dGhpcyk7Ci0gICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHJ1bGVEYXRhLCBvcHRpb25zLnNjb3Bl
KSkgeworICAgICAgICBpZiAoY2hlY2tTZWxlY3RvcihydWxlRGF0YSwgb3B0aW9ucy5zY29wZSwg
b3B0aW9ucy5zY29wZU9mTGFzdEVsZW1lbnQpKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUgcnVs
ZSBoYXMgbm8gcHJvcGVydGllcyB0byBhcHBseSwgdGhlbiBpZ25vcmUgaXQgaW4gdGhlIG5vbi1k
ZWJ1ZyBtb2RlLgogICAgICAgICAgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGll
cyA9IHJ1bGUtPnByb3BlcnRpZXMoKTsKICAgICAgICAgICAgIGlmICghcHJvcGVydGllcyB8fCAo
cHJvcGVydGllcy0+aXNFbXB0eSgpICYmICFvcHRpb25zLmluY2x1ZGVFbXB0eVJ1bGVzKSkgewpA
QCAtMjIzOCw3ICsyMjg2LDcgQEAgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gU3R5bGVSZXNvbHZl
cjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCogZSwgUHMKICAgICByZXR1cm4g
bV9ydWxlTGlzdC5yZWxlYXNlKCk7CiB9CiAKLWlubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6OmNo
ZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCBjb25zdCBDb250YWluZXJOb2Rl
KiBzY29wZSkKK2lubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6OmNoZWNrU2VsZWN0b3IoY29uc3Qg
UnVsZURhdGEmIHJ1bGVEYXRhLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSwgY29uc3QgQ29u
dGFpbmVyTm9kZSogc2NvcGVPZkxhc3RFbGVtZW50KQogewogICAgIG1fZHluYW1pY1BzZXVkbyA9
IE5PUFNFVURPOwogCkBAIC0yMjYzLDYgKzIzMTEsNyBAQCBpbmxpbmUgYm9vbCBTdHlsZVJlc29s
dmVyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgY29uc3QgQ29udGFp
bgogICAgIGNvbnRleHQuZWxlbWVudFN0eWxlID0gc3R5bGUoKTsKICAgICBjb250ZXh0LmVsZW1l
bnRQYXJlbnRTdHlsZSA9IG1fcGFyZW50Tm9kZSA/IG1fcGFyZW50Tm9kZS0+cmVuZGVyU3R5bGUo
KSA6IDA7CiAgICAgY29udGV4dC5zY29wZSA9IHNjb3BlOworICAgIGNvbnRleHQuc2NvcGVPZkxh
c3RFbGVtZW50ID0gc2NvcGVPZkxhc3RFbGVtZW50OwogICAgIGNvbnRleHQucHNldWRvU3R5bGUg
PSBtX3BzZXVkb1N0eWxlOwogICAgIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBtYXRj
aCA9IG1fc2VsZWN0b3JDaGVja2VyLmNoZWNrU2VsZWN0b3IoY29udGV4dCwgbV9keW5hbWljUHNl
dWRvKTsKICAgICBpZiAobWF0Y2ggIT0gU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoZXMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCA1YmQyOTQwZTU3ZjI5ODIxZmU2MTNl
YTBlOGEzOWJmZGZiODhkMDdkLi5kMzNkZDczOTk0MjVmMDNkZDZmNzIyOGFmMmIzNzYzMTFiM2Y5
NmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJNZWRpYVF1ZXJ5RXhwLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNs
dWRlICJSdWxlRmVhdHVyZS5oIgorI2luY2x1ZGUgIlJ1bGVTZXQuaCIKICNpbmNsdWRlICJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCiAjaW5j
bHVkZSAiU2VsZWN0b3JGaWx0ZXIuaCIKQEAgLTc2LDcgKzc3LDYgQEAgY2xhc3MgTWVkaWFRdWVy
eUV2YWx1YXRvcjsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSZW5kZXJSZWdpb247CiBjbGFzcyBSdWxl
RGF0YTsKLWNsYXNzIFJ1bGVTZXQ7CiBjbGFzcyBTZXR0aW5nczsKIGNsYXNzIFN0YXRpY0NTU1J1
bGVMaXN0OwogY2xhc3MgU3R5bGVCdWlsZGVyOwpAQCAtMjY1LDYgKzI2NSw4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgYWRkS2V5ZnJhbWVTdHlsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1l
cz4pOwogCisgICAgdm9pZCBhZGRTdHlsZVJ1bGUoU3R5bGVSdWxlKiwgQ29udGFpbmVyTm9kZSog
c2NvcGUsIFJ1bGVTZXQqLCBBZGRSdWxlRmxhZ3MpOworCiAgICAgYm9vbCBjaGVja1JlZ2lvblN0
eWxlKEVsZW1lbnQqIHJlZ2lvbkVsZW1lbnQpOwogCiAgICAgYm9vbCB1c2VzU2libGluZ1J1bGVz
KCkgY29uc3QgeyByZXR1cm4gIW1fZmVhdHVyZXMuc2libGluZ1J1bGVzLmlzRW1wdHkoKTsgfQpA
QCAtMzQzLDkgKzM0NSwxMCBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBzdHJ1Y3QgTWF0Y2hP
cHRpb25zIHsKLSAgICAgICAgTWF0Y2hPcHRpb25zKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIGNv
bnN0IENvbnRhaW5lck5vZGUqIHNjb3BlID0gMCkgOiBzY29wZShzY29wZSksIGluY2x1ZGVFbXB0
eVJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKSB7IH0KKyAgICAgICAgTWF0Y2hPcHRpb25zKGJvb2wg
aW5jbHVkZUVtcHR5UnVsZXMsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlID0gMCkgOiBzY29w
ZShzY29wZSksIGluY2x1ZGVFbXB0eVJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKSwgc2NvcGVPZkxh
c3RFbGVtZW50KDApIHsgfQogICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZTsKICAg
ICAgICAgYm9vbCBpbmNsdWRlRW1wdHlSdWxlczsKKyAgICAgICAgY29uc3QgQ29udGFpbmVyTm9k
ZSogc2NvcGVPZkxhc3RFbGVtZW50OwogICAgIH07CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNYXRj
aGVkUHJvcGVydGllcyhNYXRjaFJlc3VsdCYsIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3Bl
cnRpZXMsIFN0eWxlUnVsZSogPSAwLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlID0gU2VsZWN0b3JD
aGVja2VyOjpNYXRjaEFsbCwgYm9vbCBpblJlZ2lvblJ1bGUgPSBmYWxzZSk7CkBAIC0zNTgsNiAr
MzYxLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXRjaFVzZXJSdWxlcyhNYXRjaFJlc3VsdCYs
IGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIHZvaWQgbWF0Y2hTY29wZWRBdXRob3JSdWxl
cyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIHZvaWQgbWF0Y2hI
b3N0UnVsZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKKyAgICB2b2lkIG1hdGNoU2hhZG93RGlzdHJpYnV0ZWRSdWxlcyhNYXRj
aFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOworI2VuZGlmCisKICAgICB2b2lkIGNv
bGxlY3RNYXRjaGluZ1J1bGVzKFJ1bGVTZXQqLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxh
c3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYpOwogICAgIHZvaWQgY29sbGVjdE1hdGNo
aW5nUnVsZXNGb3JSZWdpb24oUnVsZVNldCosIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFz
dFJ1bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJik7CiAgICAgdm9pZCBjb2xsZWN0TWF0Y2hp
bmdSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiosIGludCYgZmlyc3RSdWxlSW5k
ZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJik7CkBAIC0zNjUsNyAr
MzcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNvcnRNYXRjaGVkUnVsZXMoKTsKICAgICB2b2lk
IHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhNYXRjaFJlc3VsdCYpOwogCi0gICAgYm9vbCBj
aGVja1NlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJiwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUp
OworICAgIGJvb2wgY2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYsIGNvbnN0IENvbnRhaW5l
ck5vZGUqIHNjb3BlLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZU9mTGFzdEVsZW1lbnQpOwog
ICAgIGJvb2wgY2hlY2tSZWdpb25TZWxlY3RvcihDU1NTZWxlY3RvciogcmVnaW9uU2VsZWN0b3Is
IEVsZW1lbnQqIHJlZ2lvbkVsZW1lbnQpOwogICAgIHZvaWQgYXBwbHlNYXRjaGVkUHJvcGVydGll
cyhjb25zdCBNYXRjaFJlc3VsdCYsIGNvbnN0IEVsZW1lbnQqKTsKICAgICBlbnVtIFN0eWxlQXBw
bGljYXRpb25QYXNzIHsKQEAgLTM5Niw2ICs0MDMsMTEgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8
UnVsZVNldD4gbV9hdXRob3JTdHlsZTsKICAgICBPd25QdHI8UnVsZVNldD4gbV91c2VyU3R5bGU7
CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ29u
dGFpbmVyTm9kZSosIE93blB0cjxSdWxlU2V0PiA+IFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1h
cDsKKyAgICBTaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAgbV9zaGFkb3dEaXN0cmlidXRlZFJ1
bGVTZXRNYXA7CisjZW5kaWYKKwogICAgIFJ1bGVGZWF0dXJlU2V0IG1fZmVhdHVyZXM7CiAgICAg
T3duUHRyPFJ1bGVTZXQ+IG1fc2libGluZ1J1bGVTZXQ7CiAgICAgT3duUHRyPFJ1bGVTZXQ+IG1f
dW5jb21tb25BdHRyaWJ1dGVSdWxlU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0lu
c2VydGlvblBvaW50LmgKaW5kZXggYWVkYWMxZDBmN2QxMGY2ZDg0ZTEzNjBlODEwMDMzOGE5MGM4
MTJlMS4uMTdmYzc2NmY3ZGRlYjAzZGE0ZmQ1OWU3ZDQxMGU4MDJmZGQ2ZTAxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC0xNzksNiArMTc5LDM1
IEBAIGlubGluZSBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2Rl
KiBwcm9qZWN0ZWROb2RlKQogICAgIHJldHVybiBpbnNlcnRpb25Qb2ludDsKIH0KIAoraW5saW5l
IHZvaWQgY29sbGVjdEFsbE1pZHBvaW50SW5zZXJ0aW9uUG9pbnRzKGNvbnN0IE5vZGUqIHByb2pl
Y3RlZE5vZGUsIFZlY3RvcjxJbnNlcnRpb25Qb2ludCosIDg+JiByZXN1bHRzKQoreworICAgIElu
c2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IDA7CisgICAgY29uc3QgTm9kZSogY3VycmVu
dCA9IHByb2plY3RlZE5vZGU7CisKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpZiAoRWxl
bWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY3VycmVu
dCkpIHsKKyAgICAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7CisgICAgICAg
ICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBzaGFkb3ctPmRpc3RyaWJ1dG9y
KCkuZmluZEluc2VydGlvblBvaW50Rm9yKHByb2plY3RlZE5vZGUpKSB7CisgICAgICAgICAgICAg
ICAgY3VycmVudCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnQg
PSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKGluc2VydGlvblBv
aW50KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIGlmIChOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlRm9yRGlzdHJpYnV0aW9u
KGN1cnJlbnQpKSB7CisgICAgICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8g
PSBwYXJlbnQtPmlzU2hhZG93Um9vdCgpID8gdG9TaGFkb3dSb290KHBhcmVudCktPmFzc2lnbmVk
VG8oKSA6IDApIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAg
ICAgICAgICAgICBpbnNlcnRpb25Qb2ludCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQoaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSW5zZXJ0aW9uUG9pbnRfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29u
c3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25z
dGFudHMuaAppbmRleCBmZjAwYzk1MDI3OGMzMzIwMWMwYWY5MmQ4YWI2NTk3ZThlYzk3ZmY1Li43
NjRmMWVjZDE3MTUxNjc3MjVmYzM3NGFmY2ZjNDg0NmM0MmNjMWZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaApAQCAt
NzAsNyArNzAsNyBAQCBlbnVtIFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0
eSB7CiAvLyBTdGF0aWMgcHNldWRvIHN0eWxlcy4gRHluYW1pYyBvbmVzIGFyZSBwcm9kdWNlZCBv
biB0aGUgZmx5LgogZW51bSBQc2V1ZG9JZCB7CiAgICAgLy8gVGhlIG9yZGVyIG11c3QgYmUgTk9Q
IElELCBwdWJsaWMgSURzLCBhbmQgdGhlbiBpbnRlcm5hbCBJRHMuCi0gICAgTk9QU0VVRE8sIEZJ
UlNUX0xJTkUsIEZJUlNUX0xFVFRFUiwgQkVGT1JFLCBBRlRFUiwgU0VMRUNUSU9OLCBGSVJTVF9M
SU5FX0lOSEVSSVRFRCwgU0NST0xMQkFSLAorICAgIE5PUFNFVURPLCBGSVJTVF9MSU5FLCBGSVJT
VF9MRVRURVIsIEJFRk9SRSwgQUZURVIsIERJU1RSSUJVVEVELCBTRUxFQ1RJT04sIEZJUlNUX0xJ
TkVfSU5IRVJJVEVELCBTQ1JPTExCQVIsCiAgICAgLy8gSW50ZXJuYWwgSURzIGZvbGxvdzoKICAg
ICBTQ1JPTExCQVJfVEhVTUIsIFNDUk9MTEJBUl9CVVRUT04sIFNDUk9MTEJBUl9UUkFDSywgU0NS
T0xMQkFSX1RSQUNLX1BJRUNFLCBTQ1JPTExCQVJfQ09STkVSLCBSRVNJWkVSLAogICAgIElOUFVU
X0xJU1RfQlVUVE9OLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA0MTMxODc3ZTEzZDdmYjM4M2Q1Mzg4ZGI0Mjg2MjViMDBj
M2JiNTUuLjI2Zjg3YzhjNmU4Mzk5NjEyOTAyZGRhZDc0ZjU1NmFkMTc3MGZhZDMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNSBAQAorMjAxMy0wMS0wNiAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW1NoYWRvdyBET01dIEltcGxlbWVudHMgYSAnOjpkaXN0cmlidXRlZCgp
JyBwc2V1ZG8gZWxlbWVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgyMTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC1leHBlY3RlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9y
LXNoYWRvdy1lbGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwtZXhwZWN0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1h
dGNoLWFsbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50LXJlcHJvamVjdGlvbi1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC1zdXBwb3J0LXNlbGVjdG9yLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4t
c2VsZWN0b3ItbGlzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlz
dHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQuaHRtbDogQWRkZWQuCisKIDIwMTMtMDEtMDYgIEFiaGlz
aGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAgICAgICBIZWFwLXVzZS1hZnRl
ci1mcmVlIGluIFdlYkNvcmU6OkRvY3VtZW50OjppbXBsaWNpdENsb3NlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1
ZG8tZWxlbWVudC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0YzI2ZTJiNTZjNGM2YTdjNzBj
NmNmZDU4YTIyN2Y4ZTBmNDQ2NGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQuaHRtbApAQCAt
MCwwICsxLDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNh
bmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4i
PmdyZWVuPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1z
aGFkb3ctZWxlbWVudC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC1leHBlY3RlZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY0YzI2ZTJiNTZjNGM2YTdjNzBjNmNmZDU4YTIyN2Y4ZTBmNDQ2NGYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50LWV4cGVjdGVkLmh0bWwKQEAgLTAs
MCArMSw5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5k
Ym94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5n
cmVlbjwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hh
ZG93LWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRl
ZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTQy
OTcwZDc0MWRkY2YyN2ZlZjc0NGFiMmU0MDNlYzE5ODkwZjM2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZv
ci1zaGFkb3ctZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsMjMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlw
dD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7Citz
aGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnc2hhZG93OjpkaXN0cmlidXRlZChkaXYpIHsgY29sb3I6
IGdyZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Fu
ZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpLAorICAgICAgICAgICAgICBjcmVhdGVT
aGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ3NoYWRvdycpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtbWF0Y2gtYWxsLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLWV4cGVjdGVkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWE2MGI3MmUwZGU5MTc3NjJiMmEyYTRjNWVjM2VmOWY1NjZlYjQ5OAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRl
ZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE2IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAg
PGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdj4KKyAgICAgIG5vcm1hbAorICAgICAgPGRpdiBzdHls
ZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXY+CisgICAg
ICBub3JtYWwKKyAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAg
ICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxs
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtbWF0Y2gtYWxsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0MDRmMjZlN2JkYTgzMGU2ZWI4NTRh
Yzk3NWYzZGJiYzZjZTkwOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwuaHRtbApAQCAtMCww
ICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRl
bnQ6OmRpc3RyaWJ1dGVkKC5oZWxsbykgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJv
eCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENo
aWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAg
IGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKCdub3JtYWwnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2
JywgeydjbGFzcyc6ICdoZWxsbyd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSksCisgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgnbm9ybWFsJyksCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rp
dicsIHsnY2xhc3MnOiAnaGVsbG8nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpKSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQtZXhwZWN0
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lNTE4MzQ0MmEwNzZjN2Y4MWE5YzU0MjEzMWU3OWZiNzc2ZjAx
MWNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjAg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgor
ICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2IGlkPSJuZXN0ZWQtaG9zdCI+CisgICAgICB0ZXh0
MQorICAgICAgPGRpdj4KKyAgICAgICAgdGV4dDIKKyAgICAgICAgPGRpdj4KKyAgICAgICAgICB0
ZXh0MworICAgICAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAg
ICAgICAgICA8ZGl2Pm5vcm1hbDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2Pgor
ICAgIDwvZGl2PgorICA8L2Rpdj4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LW5lc3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LW5lc3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1MzIxYjBhNjNlMTQyOTNkYmFj
ZGEzMWQ5ZWIxZTc4NWE3YTE4ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWwKQEAgLTAs
MCArMSwzMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdkaXYg
Y29udGVudDo6ZGlzdHJpYnV0ZWQoZGl2IGNvbnRlbnQ6OmRpc3RyaWJ1dGVkKGRpdi5ncmVlbikp
IHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2Rp
dicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAg
ICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ25lc3RlZC1ob3N0J30sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCd0ZXh0MScpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3RleHQy
JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00o
J2NvbnRlbnQnLCB7J3NlbGVjdCc6ICdkaXYnfSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnZ3JlZW4nfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3RleHQzJyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVu
dCcsIHt9KSkpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2dy
ZWVuJ30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgn
Z3JlZW4nKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAg
ICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpKSk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24tZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjljOTEyN2RlNWU3
MDNiN2ExYTVjOTM2OTRlYTdjZDBiMTI0ODQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlv
bi1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2
IGlkPSJob3N0MiI+CisgICAgICA8ZGl2IHN0eWxlPSdjb2xvcjogZ3JlZW4nPgorICAgICAgICBn
cmVlbgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUyOTU1ODA4MzA4ODlkNWQ5M2I0NWYyNGFkNjQ5ZDIyZWEyNTMzODEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtcmVwcm9qZWN0aW9uLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2Ny
aXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsK
K3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50OjpkaXN0cmlidXRlZCguZm9vKSB7IGNv
bG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7
J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0Mid9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
cmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcuZm9vJ30pKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSkpLAorICAgICAgICAgICAgICBjcmVh
dGVET00oJ2RpdicsIHsnY2xhc3MnOiAnZm9vJ30sCisgICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3ItZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0
LXNlbGVjdG9yLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjNkZWRlMTMzYjg2MmRkMTRjOTJl
NjA1YzRhMWJlZDI4ZTM3YWRhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLWV4
cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxi
b2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXY+Cisg
ICAgICBub3JtYWwKKyAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4K
KyAgICA8L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgbm9ybWFsCisgICAgICA8ZGl2Pm5vcm1hbDwv
ZGl2PgorICAgIDwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1z
dXBwb3J0LXNlbGVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJp
YnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2
ZWQ1M2IwMGM2YzQ3YTNmMjQ4ZGE2MzNhODEyNDc5NDE4Zjk4OWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
c3VwcG9ydC1zZWxlY3Rvci5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlw
dD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7Citz
aGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnY29udGVudDo6ZGlzdHJpYnV0ZWQoZGl2LmhlbGxvIGRp
dikgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisg
ICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURP
TSgnY29udGVudCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzog
J2hlbGxvJ30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSgnbm9ybWFsJyksCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCdncmVlbicpKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAg
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJyksCisg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSkp
KSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVj
dG9yLWxpc3QtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QtZXhwZWN0ZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iYjgyNTNlNGRhYjc0MDU2NTgzOGQ4NDI1MGJiYTliZDkwNGQ5OTJhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC1leHBlY3RlZC5odG1sCkBAIC0w
LDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNh
bmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4i
PmdyZWVuPC9kaXY+CisgICAgPHA+bm9ybWFsPC9wPgorICAgIDxwIHN0eWxlPSJjb2xvcjogZ3Jl
ZW4iPmdyZWVuPC9wPgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2Vk
LWluLXNlbGVjdG9yLWxpc3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yMGYxN2ViNjI3MzE0ZThkYzEwNTdhMDEzYTQyMTk5M2FlZTJiODYwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1l
bGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93
LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwv
ZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnY29udGVudDo6ZGlzdHJpYnV0ZWQo
ZGl2KSwgcCB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRl
RE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9v
dCgKKyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdjb250ZW50JyksCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3AnLCB7fSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3Jl
ZW4nKSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpLAorICAgICAgICAg
ICAgICBjcmVhdGVET00oJ3AnLCB7J2NsYXNzJzogJ2hlbGxvJ30sCisgICAgICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpKSk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQ1NTU4
ODNlZTJlMDMzY2ZiNmNiNzExNzdkMjhlNmJhMzg4MDFlMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC5odG1s
CkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwg
PSAnY29udGVudDo6ZGlzdHJpYnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBz
YW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBw
ZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAg
ICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAor
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAgICAgICAgICAgICBj
cmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdC1jaGlsZCd9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181476</attachid>
            <date>2013-01-06 21:27:53 -0800</date>
            <delta_ts>2013-01-09 13:12:54 -0800</delta_ts>
            <desc>Remove rule_bison.py from the previous patch.</desc>
            <filename>bug-82169-20130107142458.patch</filename>
            <type>text/plain</type>
            <size>50611</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NGVjM2MwOWFkNjI0ZmJlYTdlYjIwYTIyNDU0OWY5NzRhYmYwM2I2Li5i
N2I4ZDNhYWEwMmQyYjNmZGE5ZTFjODk1ZWY1NjI0MGViM2Y4MTBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTAwIEBACisyMDEzLTAxLTA2ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbU2hhZG93IERPTV0gSW1wbGVtZW50cyBhICc6OmRpc3RyaWJ1dGVkKCkn
IHBzZXVkbyBlbGVtZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODIxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnRzIGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvIGVsZW1lbnQuCisg
ICAgICAgIFNlZSB0aGUgU2hhZG93IERPTSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgZGV0YWlsLgor
CisgICAgICAgIGh0dHA6Ly9kdmNzLnczLm9yZy9oZy93ZWJjb21wb25lbnRzL3Jhdy1maWxlL3Rp
cC9zcGVjL3NoYWRvdy9pbmRleC5odG1sI3NlbGVjdGluZy1ub2Rlcy1kaXN0cmlidXRlZC10by1p
bnNlcnRpb24tcG9pbnRzCisKKyAgICAgICAgQSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxl
bWVudCBpcyB0aGUgZmlyc3QgQ1NTIHJ1bGUgd2hpY2gKKyAgICAgICAgY3Jvc3NlcyB0aGUgc2hh
ZG93IGJvdW5kYXJ5IGZyb20gYSBzaGFkb3cgdHJlZSB0byB0aGUgdHJlZSBvZiBpdHMKKyAgICAg
ICAgc2hhZG93IGhvc3QuIFRoYXQgbWVhbnMgYSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxl
bWVudCBpcworICAgICAgICBkZWZpbmVkIGluIHNoYWRvdyB0cmVlLCBidXQgdGhlIG5vZGUgd2hp
Y2ggaXMgbWF0Y2hlZCBpbiB0aGUgcnVsZQorICAgICAgICBpcyBvdXRzaWRlIG9mIHRoZSBzaGFk
b3cgdHJlZS4gVGhlcmVmb3JlLCB3ZSBjYW5ub3QgcHJlZGljdCBhCisgICAgICAgIHNjb3BlIHdo
ZXJlIHRoZSBtYXRjaGVkIG5vZGUgd2lsbCBiZSBiZWZvcmVoYW5kLiAgQ3VycmVudCBDU1MKKyAg
ICAgICAgaW1wbGVtZW50YXRpb24gYXNzdW1lcyBldmVyeSBmaW5hbCB0YXJnZXQgaXMgYXBwbGll
ZCBpbiBjdXJyZW50CisgICAgICAgIHNjb3BlLgorCisgICAgICAgIFRvIG92ZXJjb21lIHRoaXMg
aXNzdWUsIFN0eWxlUmVzb2x2ZXIgd2FzIHVwZGF0ZWQgc28gdGhhdCBpdCBoYXMKKyAgICAgICAg
U2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLiBXZSB1c2UgdGhpcyBSdWxlU2V0TWFwIHRvIGtl
ZXAgdHJhY2sKKyAgICAgICAgb2YgZWFjaCBSdWxlU2V0IG1hcHBlZCBieSBhIHNjb3BlIHdoZXJl
IGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvCisgICAgICAgIGVsZW1lbnQgaXMgb3JpZ2luYWxs
eSBkZWZpbmVkLiBUaGlzIHNjb3BlIGlzIHBhc3NlZCB0bworICAgICAgICBTZWxlY3RvckNoZWNr
ZXIgYW5kIGlzIHVzZWQgdG8gY2hlY2sgd2hldGhlciB0aGUgbWF0Y2hlZCBsYXN0IGVsZW1lbnQK
KyAgICAgICAgZXhpc3RzIGluIHRoZSBzY29wZSB3aGVyZSB0aGUgcnVsZSBpcyBvcmlnaW5hbGx5
IGRlZmluZWQuCisKKyAgICAgICAgSW50ZXJuYWxseSwgJzo6ZGlzdHJpYnV0ZWQnIHBzZXVkbyBl
bGVtZW50IGlzIHJlcHJlc2VudGVkIGJ5IGEKKyAgICAgICAgbmV3bHkgaW50cm9kdWNlZCBTaGFk
b3dEaXN0cmlidXRlZCByZWxhdGlvbi4gIEEgdHJhbnNmb3JtYXRpb24KKyAgICAgICAgZnJvbSBh
IGRpc3RyaXJidXRlZCBwc2V1ZG8gZWxlbWVudCB0byBhIFNoYWRvd0Rpc3RyaWJ1dGVkIGlzIGRv
bmUKKyAgICAgICAgaW4gcGFyc2luZyBzdGFnZSBvZiBDU1MuCisKKyAgICAgICAgVGVzdHM6IGZh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1l
bnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVk
by1lbGVtZW50LW1hdGNoLWFsbC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24uaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50LXN1cHBvcnQtc2VsZWN0b3IuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQu
aHRtbAorCisgICAgICAgICogY3NzL0NTU0dyYW1tYXIueS5pbjoKKyAgICAgICAgKiBjc3MvQ1NT
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6ZGV0ZWN0RnVuY3Rpb25U
eXBlVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJz
V2l0aEVsZW1lbnROYW1lKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgICog
Y3NzL0NTU1BhcnNlclZhbHVlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxl
Y3Rvcjo6Q1NTUGFyc2VyU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpmdW5jdGlvbkFyZ3VtZW50
U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnNldEZ1bmN0
aW9uQXJndW1lbnRTZWxlY3Rvcik6CisgICAgICAgIChDU1NQYXJzZXJTZWxlY3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6aXNQc2V1ZG9EaXN0cmlidXRlZEVsZW1l
bnQpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTZWxlY3Rvcjo6cHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6bmFtZVRvUHNldWRvVHlw
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCk6CisgICAgICAg
ICogY3NzL0NTU1NlbGVjdG9yLmg6CisgICAgICAgIChDU1NTZWxlY3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTZWxlY3Rvcjo6aXNEaXN0cmlidXRlZFBzZXVkb0VsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6aXNTaGFkb3dEaXN0
cmlidXRlZCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFNlbGVjdG9ySGFzU2hhZG93RGlzdHJpYnV0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0b3JIYXNTaGFkb3dEaXN0cmlidXRlZDo6b3BlcmF0b3IoKSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxpc3Q6Omhhc1NoYWRvd0Rpc3RyaWJ1dGVkQXQp
OgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvckxpc3QuaDoKKyAgICAgICAgKENTU1NlbGVjdG9y
TGlzdCk6CisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVs
ZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKToK
KyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0OjpTZWxlY3RvckNoZWNraW5nQ29u
dGV4dCk6CisgICAgICAgIChTZWxlY3RvckNoZWNraW5nQ29udGV4dCk6CisgICAgICAgICogY3Nz
L1NlbGVjdG9yRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRmlsdGVyOjpj
b2xsZWN0SWRlbnRpZmllckhhc2hlcyk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cmVzZXRBdXRob3JTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphZGRTdHlsZVJ1bGUpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hp
bmdSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRjaFNoYWRvd0Rp
c3RyaWJ1dGVkUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bWF0Y2hB
dXRob3JSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0
Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y2hl
Y2tTZWxlY3Rvcik6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKFN0
eWxlUmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6TWF0Y2hPcHRp
b25zOjpNYXRjaE9wdGlvbnMpOgorICAgICAgICAoTWF0Y2hPcHRpb25zKToKKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEFs
bE1pZHBvaW50SW5zZXJ0aW9uUG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorCiAyMDEzLTAxLTA2ICBT
ZWJhc3RpYW4gRHLDtmdlICA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CiAKICAg
ICAgICAgQnVnwqAxMDYxNzcgLSBbR1N0cmVhbWVyXSBEb24ndCBjYWxsIGdzdF92aWRlb19pbmZv
X2Zyb21fY2FwcygpIHdpdGggbm9uLWZpeGVkIGNhcHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55
LmluCmluZGV4IDFmZDQ1ZTQ5NWNlOTZhNWFhNDVjNjRiMWRlOWJiZjYwYzBmZTc0YzMuLmMyNTQ1
NjAyM2MwNTU0N2VjNzhkNWE3ZmRlMjJhNDI4MmMyMTc1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dy
YW1tYXIueS5pbgpAQCAtNjEsNyArNjEsMTEgQEAgc3RhdGljIGlubGluZSBpbnQgY3NzeXllcnJv
cih2b2lkKiwgY29uc3QgY2hhciopCiAKICV9CiAKKyNpZiBFTkFCTEVfU0hBRE9XX0RPTQorJWV4
cGVjdCA2NgorI2Vsc2UKICVleHBlY3QgNjUKKyNlbmRpZgogCiAlbm9uYXNzb2MgTE9XRVNUX1BS
RUMKIApAQCAtMTc3LDYgKzE4MSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGNzc3l5ZXJyb3Iodm9p
ZCosIGNvbnN0IGNoYXIqKQogJXRva2VuIDxzdHJpbmc+IENVRUZVTkNUSU9OCiAjZW5kaWYKICV0
b2tlbiA8c3RyaW5nPiBOT1RGVU5DVElPTgorJXRva2VuIDxzdHJpbmc+IERJU1RSSUJVVEVERlVO
Q1RJT04KICV0b2tlbiA8c3RyaW5nPiBDQUxDRlVOQ1RJT04KICV0b2tlbiA8c3RyaW5nPiBNSU5G
VU5DVElPTgogJXRva2VuIDxzdHJpbmc+IE1BWEZVTkNUSU9OCkBAIC0xMTQ0LDEyICsxMTQ5LDEy
IEBAIHNpbXBsZV9zZWxlY3RvcjoKICAgICB8IGVsZW1lbnRfbmFtZSBzcGVjaWZpZXJfbGlzdCB7
CiAgICAgICAgICQkID0gJDI7CiAgICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNlci0+
dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwgJDEsICQkKTsKKyAgICAg
ICAgICAgICQkID0gcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKG51bGxB
dG9tLCAkMSwgJCQpOwogICAgIH0KICAgICB8IHNwZWNpZmllcl9saXN0IHsKICAgICAgICAgJCQg
PSAkMTsKICAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZp
ZXJzV2l0aEVsZW1lbnROYW1lKG51bGxBdG9tLCBzdGFyQXRvbSwgJCQpOworICAgICAgICAgICAg
JCQgPSBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20sIHN0
YXJBdG9tLCAkJCk7CiAgICAgfQogICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIGVsZW1lbnRfbmFt
ZSB7CiAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CkBAIC0x
MTU4LDEyICsxMTYzLDEyIEBAIHNpbXBsZV9zZWxlY3RvcjoKICAgICB8IG5hbWVzcGFjZV9zZWxl
Y3RvciBlbGVtZW50X25hbWUgc3BlY2lmaWVyX2xpc3QgewogICAgICAgICAkJCA9ICQzOwogICAg
ICAgICBpZiAoJCQpCi0gICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxl
bWVudE5hbWUoJDEsICQyLCAkJCk7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+dXBkYXRlU3Bl
Y2lmaWVyc1dpdGhFbGVtZW50TmFtZSgkMSwgJDIsICQkKTsKICAgICB9CiAgICAgfCBuYW1lc3Bh
Y2Vfc2VsZWN0b3Igc3BlY2lmaWVyX2xpc3QgewogICAgICAgICAkJCA9ICQyOwogICAgICAgICBp
ZiAoJCQpCi0gICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5h
bWUoJDEsIHN0YXJBdG9tLCAkJCk7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+dXBkYXRlU3Bl
Y2lmaWVyc1dpdGhFbGVtZW50TmFtZSgkMSwgc3RhckF0b20sICQkKTsKICAgICB9CiAgIDsKIApA
QCAtMTM1NSw2ICsxMzYwLDE5IEBAIHBzZXVkbzoKICAgICAgICAgICAgICQkID0gMDsKICAgICB9
CiAjZW5kaWYKKyNpZiBFTkFCTEVfU0hBRE9XX0RPTQorICAgIHwgJzonICc6JyBESVNUUklCVVRF
REZVTkNUSU9OIG1heWJlX3NwYWNlIHNlbGVjdG9yIG1heWJlX3NwYWNlICcpJyB7CisgICAgICAg
IGlmICghJDUpCisgICAgICAgICAgICAkJCA9IDA7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgICAgICQk
LT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCk7CisgICAgICAgICAgICAkJC0+
c2V0RnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKCQ1KTsKKyAgICAgICAgICAgICQzLmxvd2VyKCk7
CisgICAgICAgICAgICAkJC0+c2V0VmFsdWUoJDMpOworICAgICAgICB9CisgICAgfQorI2VuZGlm
CiAgICAgLy8gdXNlIGJ5IDotd2Via2l0LWFueS4KICAgICAvLyBGSVhNRTogc2hvdWxkIHdlIHN1
cHBvcnQgZ2VuZXJpYyBzZWxlY3RvcnMgaGVyZSBvciBqdXN0IHNpbXBsZV9zZWxlY3RvcnM/CiAg
ICAgLy8gVXNlIHNpbXBsZV9zZWxlY3Rvcl9saXN0IGZvciBub3cgdG8gbWF0Y2ggLW1vei1hbnku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IGRiOTRjZDc3NjBjNmU0NzJkNjkyNzc3MjYx
OGJkMzZhNmE4MDg1M2EuLjQ1NmVmZWYwOGQ2NmQwYzZjNjNkYWJiMjA0Nzk0NTk2NzMyOWFmOTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC05NTAxLDYgKzk1MDEsOCBAQCBpbmxpbmUg
dm9pZCBDU1NQYXJzZXI6OmRldGVjdEZ1bmN0aW9uVHlwZVRva2VuKGludCBsZW5ndGgpCiAgICAg
Y2FzZSAxMToKICAgICAgICAgaWYgKGlzRXF1YWxUb0NTU0lkZW50aWZpZXIobmFtZSwgIm50aC1v
Zi10eXBlIikpCiAgICAgICAgICAgICBtX3BhcnNpbmdNb2RlID0gTnRoQ2hpbGRNb2RlOworICAg
ICAgICBlbHNlIGlmIChpc0VxdWFsVG9DU1NJZGVudGlmaWVyKG5hbWUsICJkaXN0cmlidXRlZCIp
KQorICAgICAgICAgICAgbV90b2tlbiA9IERJU1RSSUJVVEVERlVOQ1RJT047CiAgICAgICAgIHJl
dHVybjsKIAogICAgIGNhc2UgMTQ6CkBAIC0xMDYwMywxNiArMTA2MDUsMjkgQEAgUXVhbGlmaWVk
TmFtZSBDU1NQYXJzZXI6OmRldGVybWluZU5hbWVJbk5hbWVzcGFjZShjb25zdCBBdG9taWNTdHJp
bmcmIHByZWZpeCwgY28KICAgICByZXR1cm4gUXVhbGlmaWVkTmFtZShwcmVmaXgsIGxvY2FsTmFt
ZSwgbV9zdHlsZVNoZWV0LT5kZXRlcm1pbmVOYW1lc3BhY2UocHJlZml4KSk7CiB9CiAKLXZvaWQg
Q1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZXNwYWNlUHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnROYW1lLCBD
U1NQYXJzZXJTZWxlY3Rvciogc3BlY2lmaWVycykKK0NTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJz
ZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lc3BhY2VQcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudE5hbWUsIENTU1BhcnNl
clNlbGVjdG9yKiBzcGVjaWZpZXJzKQogewogICAgIEF0b21pY1N0cmluZyBkZXRlcm1pbmVkTmFt
ZXNwYWNlID0gbmFtZXNwYWNlUHJlZml4ICE9IG51bGxBdG9tICYmIG1fc3R5bGVTaGVldCA/IG1f
c3R5bGVTaGVldC0+ZGV0ZXJtaW5lTmFtZXNwYWNlKG5hbWVzcGFjZVByZWZpeCkgOiBtX2RlZmF1
bHROYW1lc3BhY2U7CiAgICAgUXVhbGlmaWVkTmFtZSB0YWcgPSBRdWFsaWZpZWROYW1lKG5hbWVz
cGFjZVByZWZpeCwgZWxlbWVudE5hbWUsIGRldGVybWluZWROYW1lc3BhY2UpOwotICAgIGlmICgh
c3BlY2lmaWVycy0+aXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkpIHsKKyAgICBpZiAoIXNwZWNpZmll
cnMtPmlzQ3VzdG9tUHNldWRvRWxlbWVudCgpICYmICFzcGVjaWZpZXJzLT5pc1BzZXVkb0Rpc3Ry
aWJ1dGVkRWxlbWVudCgpKSB7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICAgICBpZiAo
IShzcGVjaWZpZXJzLT5wc2V1ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0N1ZSkpCiAj
ZW5kaWYKICAgICAgICAgICAgIHNwZWNpZmllcnMtPnNldFRhZyh0YWcpOwotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiBzcGVjaWZpZXJzOworICAgIH0KKworICAgIGlmIChzcGVjaWZp
ZXJzLT5pc1BzZXVkb0Rpc3RyaWJ1dGVkRWxlbWVudCgpKSB7CisgICAgICAgIENTU1BhcnNlclNl
bGVjdG9yKiBhcmd1bWVudFNlbGVjdG9yID0gc3BlY2lmaWVycy0+ZnVuY3Rpb25Bcmd1bWVudFNl
bGVjdG9yKCk7CisgICAgICAgIEFTU0VSVChhcmd1bWVudFNlbGVjdG9yKTsKKyAgICAgICAgQ1NT
UGFyc2VyU2VsZWN0b3IqIGVuZCA9IGFyZ3VtZW50U2VsZWN0b3I7CisgICAgICAgIHdoaWxlIChl
bmQtPnRhZ0hpc3RvcnkoKSkKKyAgICAgICAgICAgIGVuZCA9IGVuZC0+dGFnSGlzdG9yeSgpOwor
ICAgICAgICBPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IGVsZW1lbnROYW1lU2VsZWN0b3IgPSBh
ZG9wdFB0cihuZXcgQ1NTUGFyc2VyU2VsZWN0b3IpOworICAgICAgICBlbGVtZW50TmFtZVNlbGVj
dG9yLT5zZXRUYWcodGFnKTsKKyAgICAgICAgZW5kLT5zZXRUYWdIaXN0b3J5KGVsZW1lbnROYW1l
U2VsZWN0b3IucmVsZWFzZSgpKTsKKyAgICAgICAgZW5kLT5zZXRSZWxhdGlvbihDU1NTZWxlY3Rv
cjo6U2hhZG93RGlzdHJpYnV0ZWQpOworICAgICAgICByZXR1cm4gYXJndW1lbnRTZWxlY3RvcjsK
ICAgICB9CiAKICAgICBDU1NQYXJzZXJTZWxlY3RvciogbGFzdFNoYWRvd0Rlc2NlbmRhbnQgPSBz
cGVjaWZpZXJzOwpAQCAtMTA2MjUsNyArMTA2NDAsNyBAQCB2b2lkIENTU1BhcnNlcjo6dXBkYXRl
U3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVBy
ZQogCiAgICAgaWYgKGxhc3RTaGFkb3dEZXNjZW5kYW50LT50YWdIaXN0b3J5KCkpIHsKICAgICAg
ICAgbGFzdFNoYWRvd0Rlc2NlbmRhbnQtPnRhZ0hpc3RvcnkoKS0+c2V0VGFnKHRhZyk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHNwZWNpZmllcnM7CiAgICAgfQogCiAgICAgLy8g
Rm9yIHNoYWRvdy1JRCBwc2V1ZG8tZWxlbWVudHMgdG8gYmUgY29ycmVjdGx5IG1hdGNoZWQsIHRo
ZSBTaGFkb3dEZXNjZW5kYW50IGNvbWJpbmF0b3IgaGFzIHRvIGJlIHVzZWQuCkBAIC0xMDYzNCw2
ICsxMDY0OSw3IEBAIHZvaWQgQ1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnRO
YW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlCiAgICAgZWxlbWVudE5hbWVTZWxl
Y3Rvci0+c2V0VGFnKHRhZyk7CiAgICAgbGFzdFNoYWRvd0Rlc2NlbmRhbnQtPnNldFRhZ0hpc3Rv
cnkoZWxlbWVudE5hbWVTZWxlY3Rvci5yZWxlYXNlKCkpOwogICAgIGxhc3RTaGFkb3dEZXNjZW5k
YW50LT5zZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6U2hhZG93RGVzY2VuZGFudCk7CisgICAgcmV0
dXJuIHNwZWNpZmllcnM7CiB9CiAKIENTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXI6OnVwZGF0
ZVNwZWNpZmllcnMoQ1NTUGFyc2VyU2VsZWN0b3IqIHNwZWNpZmllcnMsIENTU1BhcnNlclNlbGVj
dG9yKiBuZXdTcGVjaWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggMzkyZmY5ODQwYzVh
NmM4MzljMmYyMTQ0MzdhYjc1ODRiYjcyNWE5ZC4uZTFhNGUyZjc1MjFkZWIzYTRjZTJjMDMwYTUx
ODY1Y2YxNWYyYjBjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtMzA5LDcgKzMwOSw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgYWRkTmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJl
Zml4LCBjb25zdCBBdG9taWNTdHJpbmcmIHVyaSk7CiAgICAgUXVhbGlmaWVkTmFtZSBkZXRlcm1p
bmVOYW1lSW5OYW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbG9jYWxOYW1lKTsKLSAgICB2b2lkIHVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVu
dE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VQcmVmaXgsIGNvbnN0IEF0b21pY1N0
cmluZyYgZWxlbWVudE5hbWUsIENTU1BhcnNlclNlbGVjdG9yKik7CisgICAgQ1NTUGFyc2VyU2Vs
ZWN0b3IqIHVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lc3BhY2VQcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudE5hbWUsIENTU1Bh
cnNlclNlbGVjdG9yKik7CiAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIHVwZGF0ZVNwZWNpZmllcnMo
Q1NTUGFyc2VyU2VsZWN0b3IqLCBDU1NQYXJzZXJTZWxlY3RvciopOwogCiAgICAgdm9pZCBpbnZh
bGlkQmxvY2tIaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJW
YWx1ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKaW5kZXgg
ZDIzYjg1ODVkNWQ3YmI4ZWIwZjI2ODIzNGI2ZWQwNmE1ODgxZGYyNy4uNTAwZDdiMTQwMDRhMjRl
YmMzNTNkMmJmZWVjMTczMzYzMGE0MzRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlclZhbHVlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZh
bHVlcy5jcHAKQEAgLTE0Niw2ICsxNDYsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJz
ZXJWYWx1ZTo6Y3JlYXRlQ1NTVmFsdWUoKQogCiBDU1NQYXJzZXJTZWxlY3Rvcjo6Q1NTUGFyc2Vy
U2VsZWN0b3IoKQogICAgIDogbV9zZWxlY3RvcihhZG9wdFB0cihmYXN0TmV3PENTU1NlbGVjdG9y
PigpKSkKKyAgICAsIG1fZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKDApCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAppbmRleCAxMzAxYjFjZTBlMTEzNzIzY2NmODIxNjI4
ZWUwNWUyZTMxMDIzNjdiLi4yZGIwNGM0NjQ4ZTA5YTYwOGZlNzk0Y2RjYjYxZmFlZWYyMzIxM2Fi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCkBAIC0xODYsOCArMTg2LDEyIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgYWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENT
U1BhcnNlclNlbGVjdG9yPiA+JiBzZWxlY3RvclZlY3Rvcik7CiAKKyAgICBDU1NQYXJzZXJTZWxl
Y3RvciogZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlv
bkFyZ3VtZW50U2VsZWN0b3I7IH0KKyAgICB2b2lkIHNldEZ1bmN0aW9uQXJndW1lbnRTZWxlY3Rv
cihDU1NQYXJzZXJTZWxlY3Rvciogc2VsZWN0b3IpIHsgbV9mdW5jdGlvbkFyZ3VtZW50U2VsZWN0
b3IgPSBzZWxlY3RvcjsgfQorCiAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgcHNldWRvVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3ItPnBzZXVkb1R5cGUoKTsgfQogICAgIGJvb2wg
aXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvci0+aXNDdXN0
b21Qc2V1ZG9FbGVtZW50KCk7IH0KKyAgICBib29sIGlzUHNldWRvRGlzdHJpYnV0ZWRFbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvci0+aXNEaXN0cmlidXRlZFBzZXVkb0VsZW1lbnQo
KTsgfQogCiAgICAgYm9vbCBpc1NpbXBsZSgpIGNvbnN0IHsgcmV0dXJuICFtX3RhZ0hpc3Rvcnkg
JiYgbV9zZWxlY3Rvci0+aXNTaW1wbGUoKTsgfQogICAgIGJvb2wgaGFzU2hhZG93RGVzY2VuZGFu
dCgpIGNvbnN0OwpAQCAtMjAwLDYgKzIwNCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgT3du
UHRyPENTU1NlbGVjdG9yPiBtX3NlbGVjdG9yOwogICAgIE93blB0cjxDU1NQYXJzZXJTZWxlY3Rv
cj4gbV90YWdIaXN0b3J5OworCisgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIG1fZnVuY3Rpb25Bcmd1
bWVudFNlbGVjdG9yOwogfTsKIAogaW5saW5lIGJvb2wgQ1NTUGFyc2VyU2VsZWN0b3I6Omhhc1No
YWRvd0Rlc2NlbmRhbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXgg
NWE2ZWNjYWZiOTQyYzBkNmZhNzNhNjJiNmZmYzc0MjFmM2NhYTllYy4uMmRjMWRmMzgxMTNjNzU4
MzFmNGQ3ZmM3YTIzMzQ0YWQ0YjdlNzBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3Bw
CkBAIC0xMzksNiArMTM5LDggQEAgUHNldWRvSWQgQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVk
b1R5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuIEJFRk9SRTsKICAgICBjYXNlIFBzZXVkb0FmdGVy
OgogICAgICAgICByZXR1cm4gQUZURVI7CisgICAgY2FzZSBQc2V1ZG9EaXN0cmlidXRlZDoKKyAg
ICAgICAgcmV0dXJuIERJU1RSSUJVVEVEOwogICAgIGNhc2UgUHNldWRvU2Nyb2xsYmFyOgogICAg
ICAgICByZXR1cm4gU0NST0xMQkFSOwogICAgIGNhc2UgUHNldWRvU2Nyb2xsYmFyQnV0dG9uOgpA
QCAtMjYxLDYgKzI2Myw3IEBAIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NT
ZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVkb1R5cGVNYXAoCiAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZpcnN0TGluZSwgKCJmaXJzdC1saW5lIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBmaXJzdE9mVHlwZSwgKCJmaXJzdC1vZi10eXBlIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBmdWxsUGFnZU1lZGlhLCAoIi13ZWJraXQtZnVsbC1wYWdlLW1lZGlhIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBkaXN0cmlidXRlZCwgKCJkaXN0cmlidXRlZCgiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIG50aENoaWxkLCAoIm50aC1jaGlsZCgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG50aE9m
VHlwZSwgKCJudGgtb2YtdHlwZSgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG50aExhc3RDaGlsZCwg
KCJudGgtbGFzdC1jaGlsZCgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CkBAIC0zNDMsNiArMzQ2LDcgQEAgc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENT
U1NlbGVjdG9yOjpQc2V1ZG9UeXBlPiogbmFtZVRvUHNldWRvVHlwZU1hcCgKICAgICAgICAgbmFt
ZVRvUHNldWRvVHlwZS0+c2V0KGZ1bGxQYWdlTWVkaWEuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNl
dWRvRnVsbFBhZ2VNZWRpYSk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChsYXN0Q2hp
bGQuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvTGFzdENoaWxkKTsKICAgICAgICAgbmFtZVRv
UHNldWRvVHlwZS0+c2V0KGxhc3RPZlR5cGUuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvTGFz
dE9mVHlwZSk7CisgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChkaXN0cmlidXRlZC5pbXBs
KCksIENTU1NlbGVjdG9yOjpQc2V1ZG9EaXN0cmlidXRlZCk7CiAgICAgICAgIG5hbWVUb1BzZXVk
b1R5cGUtPnNldChvbmx5Q2hpbGQuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvT25seUNoaWxk
KTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KG9ubHlPZlR5cGUuaW1wbCgpLCBDU1NT
ZWxlY3Rvcjo6UHNldWRvT25seU9mVHlwZSk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNl
dChmaXJzdExldHRlci5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdExldHRlcik7CkBA
IC00NDgsNiArNDUyLDcgQEAgdm9pZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBj
b25zdAogICAgIGNhc2UgUHNldWRvRmlyc3RMZXR0ZXI6CiAgICAgY2FzZSBQc2V1ZG9GaXJzdExp
bmU6CiAgICAgICAgIGNvbXBhdCA9IHRydWU7CisgICAgY2FzZSBQc2V1ZG9EaXN0cmlidXRlZDoK
ICAgICBjYXNlIFBzZXVkb1Jlc2l6ZXI6CiAgICAgY2FzZSBQc2V1ZG9TY3JvbGxiYXI6CiAgICAg
Y2FzZSBQc2V1ZG9TY3JvbGxiYXJDb3JuZXI6CkBAIC02ODQsNiArNjg5LDggQEAgU3RyaW5nIENT
U1NlbGVjdG9yOjpzZWxlY3RvclRleHQoKSBjb25zdAogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rlc2NlbmRhbnQ6CiAg
ICAgICAgICAgICByZXR1cm4gdGFnSGlzdG9yeVRleHQgKyBzdHIudG9TdHJpbmcoKTsKKyAgICAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2hhZG93RGlzdHJpYnV0ZWQ6CisgICAgICAgICAgICByZXR1
cm4gdGFnSGlzdG9yeVRleHQgKyAiOjpkaXN0cmlidXRlZCgiICsgc3RyLnRvU3RyaW5nKCkgKyAi
KSI7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKaW5kZXggMDY0
OThmNGVjNzgxMmM2NjlhNTY3MjM1ZTU1YTk5ZTQ1OGZkYTI1Mi4uZmE2ODNlZmExMTliZGUyN2U3
MzkzNzExODhmZWM2NWE1YzEzY2MxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTc2
LDcgKzc2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgRGlyZWN0QWRqYWNl
bnQsCiAgICAgICAgICAgICBJbmRpcmVjdEFkamFjZW50LAogICAgICAgICAgICAgU3ViU2VsZWN0
b3IsCi0gICAgICAgICAgICBTaGFkb3dEZXNjZW5kYW50CisgICAgICAgICAgICBTaGFkb3dEZXNj
ZW5kYW50LAorICAgICAgICAgICAgU2hhZG93RGlzdHJpYnV0ZWQsCiAgICAgICAgIH07CiAKICAg
ICAgICAgZW51bSBQc2V1ZG9UeXBlIHsKQEAgLTExOSw2ICsxMjAsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgICAgICBQc2V1ZG9UYXJnZXQsCiAgICAgICAgICAgICBQc2V1ZG9CZWZv
cmUsCiAgICAgICAgICAgICBQc2V1ZG9BZnRlciwKKyAgICAgICAgICAgIFBzZXVkb0Rpc3RyaWJ1
dGVkLAogICAgICAgICAgICAgUHNldWRvTGFuZywKICAgICAgICAgICAgIFBzZXVkb05vdCwKICAg
ICAgICAgICAgIFBzZXVkb1Jlc2l6ZXIsCkBAIC0yMjEsOCArMjIzLDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgYm9vbCBtYXRjaGVzUHNldWRvRWxlbWVudCgpIGNvbnN0OwogICAg
ICAgICBib29sIGlzVW5rbm93blBzZXVkb0VsZW1lbnQoKSBjb25zdDsKICAgICAgICAgYm9vbCBp
c0N1c3RvbVBzZXVkb0VsZW1lbnQoKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0Rpc3RyaWJ1dGVk
UHNldWRvRWxlbWVudCgpIGNvbnN0OwogICAgICAgICBib29sIGlzU2libGluZ1NlbGVjdG9yKCkg
Y29uc3Q7CiAgICAgICAgIGJvb2wgaXNBdHRyaWJ1dGVTZWxlY3RvcigpIGNvbnN0OworICAgICAg
ICBib29sIGlzU2hhZG93RGlzdHJpYnV0ZWQoKSBjb25zdDsKIAogICAgICAgICBSZWxhdGlvbiBy
ZWxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlbGF0aW9uPihtX3JlbGF0aW9u
KTsgfQogCkBAIC0zMDYsNiArMzEwLDEyIEBAIGlubGluZSBib29sIENTU1NlbGVjdG9yOjppc0N1
c3RvbVBzZXVkb0VsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX21hdGNoID09IFBzZXVkb0Vs
ZW1lbnQgJiYgKG1fcHNldWRvVHlwZSA9PSBQc2V1ZG9Vc2VyQWdlbnRDdXN0b21FbGVtZW50IHx8
IG1fcHNldWRvVHlwZSA9PSBQc2V1ZG9XZWJLaXRDdXN0b21FbGVtZW50KTsKIH0KIAoraW5saW5l
IGJvb2wgQ1NTU2VsZWN0b3I6OmlzRGlzdHJpYnV0ZWRQc2V1ZG9FbGVtZW50KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9tYXRjaCA9PSBQc2V1ZG9FbGVtZW50ICYmIHBzZXVkb1R5cGUoKSA9PSBQ
c2V1ZG9EaXN0cmlidXRlZDsKKworfQorCiBpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6aXNTaWJs
aW5nU2VsZWN0b3IoKSBjb25zdAogewogICAgIFBzZXVkb1R5cGUgdHlwZSA9IHBzZXVkb1R5cGUo
KTsKQEAgLTMzNSw2ICszNDUsMTEgQEAgaW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6OmlzQXR0cmli
dXRlU2VsZWN0b3IoKSBjb25zdAogICAgICAgICB8fCBtX21hdGNoID09IENTU1NlbGVjdG9yOjpF
bmQ7CiB9CiAKK2lubGluZSBib29sIENTU1NlbGVjdG9yOjppc1NoYWRvd0Rpc3RyaWJ1dGVkKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWxhdGlvbiA9PSBDU1NTZWxlY3Rvcjo6U2hhZG93RGlz
dHJpYnV0ZWQ7Cit9CisKIGlubGluZSB2b2lkIENTU1NlbGVjdG9yOjpzZXRWYWx1ZShjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIC8vIE5lZWQgdG8gZG8gcmVmIGNvdW50aW5nIG1h
bnVhbGx5IGZvciB0aGUgdW5pb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3JMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3Bw
CmluZGV4IDQzMTM2ZDFjOTAxYzYzNDFiYWNiZWY4Mzk0OWRmOTRlNjBmMWMzNmMuLmEwNzZmYzM3
NjkyMTc0Njc0YTcwNjE3NDg5YmQ5NzYyZWYwNjdjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvckxpc3QuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JM
aXN0LmgiCiAKICNpbmNsdWRlICJDU1NQYXJzZXJWYWx1ZXMuaCIKKyNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0yMTEsNiArMjEyLDIxIEBAIGJvb2wg
Q1NTU2VsZWN0b3JMaXN0OjpoYXNJbnZhbGlkU2VsZWN0b3IoKSBjb25zdAogICAgIHJldHVybiBm
b3JFYWNoU2VsZWN0b3IoZnVuY3RvciwgdGhpcyk7CiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKK2NsYXNzIFNlbGVjdG9ySGFzU2hhZG93RGlzdHJpYnV0ZWQgeworcHVibGljOgorICAgIGJv
b2wgb3BlcmF0b3IoKShDU1NTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgeworICAgICAgICByZXR1
cm4gc2VsZWN0b3ItPmlzU2hhZG93RGlzdHJpYnV0ZWQoKTsKKyAgICB9Cit9OworCitib29sIENT
U1NlbGVjdG9yTGlzdDo6aGFzU2hhZG93RGlzdHJpYnV0ZWRBdChzaXplX3QgaW5kZXgpIGNvbnN0
Cit7CisgICAgU2VsZWN0b3JIYXNTaGFkb3dEaXN0cmlidXRlZCBmdW5jdG9yOworICAgIHJldHVy
biBmb3JFYWNoVGFnU2VsZWN0b3IoZnVuY3Rvciwgc2VsZWN0b3JBdChpbmRleCkpOworfQogCisj
ZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
TGlzdC5oCmluZGV4IDRmY2ZlZTJmYWE0MTgyZDdhOWFiMDU1YmNjZTUxOWZlNzRlMjI3MTUuLjRl
N2I1ODJkYmM1MTE4YTQ1ZTQ2ZGJiZjBjZDg5NGE5Zjc0M2Y2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3JMaXN0LmgKQEAgLTYwLDYgKzYwLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHNl
bGVjdG9yc05lZWROYW1lc3BhY2VSZXNvbHV0aW9uKCk7CiAgICAgYm9vbCBoYXNJbnZhbGlkU2Vs
ZWN0b3IoKSBjb25zdDsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGJvb2wgaGFzU2hh
ZG93RGlzdHJpYnV0ZWRBdChzaXplX3QgaW5kZXgpIGNvbnN0OworI2VuZGlmCisKICAgICBTdHJp
bmcgc2VsZWN0b3JzVGV4dCgpIGNvbnN0OwogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
UnVsZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKaW5kZXggZDg0MDA0
ZDljY2MxNDg0M2U0YjQwYTZiZDYyYWM3MmE4ZGZiMjJlYi4uZjI0OWFlOTYxZGNkNDg0MTAwNzMz
YTRhMDg3YjEwYWNmMDhmYzcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVT
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcApAQCAtMjg4LDcgKzI4
OCw3IEBAIHZvaWQgUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVldENvbnRlbnRz
KiBzaGVldCwgY29uc3QgTWVkaWFRdWVyeUV2YWx1CiAKICAgICAgICAgQVNTRVJUKCFydWxlLT5p
c0ltcG9ydFJ1bGUoKSk7CiAgICAgICAgIGlmIChydWxlLT5pc1N0eWxlUnVsZSgpKQotICAgICAg
ICAgICAgYWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0PFN0eWxlUnVsZSo+KHJ1bGUpLCBhZGRSdWxl
RmxhZ3MpOworICAgICAgICAgICAgcmVzb2x2ZXItPmFkZFN0eWxlUnVsZShzdGF0aWNfY2FzdDxT
dHlsZVJ1bGUqPihydWxlKSwgY29uc3RfY2FzdDxDb250YWluZXJOb2RlKj4oc2NvcGUpLCB0aGlz
LCBhZGRSdWxlRmxhZ3MpOwogICAgICAgICBlbHNlIGlmIChydWxlLT5pc1BhZ2VSdWxlKCkpCiAg
ICAgICAgICAgICBhZGRQYWdlUnVsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGVQYWdlKj4ocnVsZSkp
OwogICAgICAgICBlbHNlIGlmIChydWxlLT5pc01lZGlhUnVsZSgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IGNhNzNhYTRmMjY2NmY3ZWU4YjZjNTgyMTRmNzJk
MTRlODlkZjdhODMuLmJlM2ZjY2NjOWFkNTUyMWRhYjljNThlMzE3MjE5ZTUxNDRjMTMwOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAj
aW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUHJvZ3Jlc3NFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgorI2luY2x1ZGUgIkluc2VydGlv
blBvaW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMjgxLDggKzI4Miwx
NSBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVj
a1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlYwogCiAgICAgLy8gUHJlcGFyZSBuZXh0IHNlbGVj
dG9yCiAgICAgQ1NTU2VsZWN0b3IqIGhpc3RvcnlTZWxlY3RvciA9IGNvbnRleHQuc2VsZWN0b3It
PnRhZ0hpc3RvcnkoKTsKLSAgICBpZiAoIWhpc3RvcnlTZWxlY3RvcikKKyAgICBpZiAoIWhpc3Rv
cnlTZWxlY3RvcikgeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICBpZiAoY29udGV4
dC5zY29wZU9mTGFzdEVsZW1lbnQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBDaGVjayB0aGUg
c2NvcGUgbW9yZSBzdHJpY3RseS4KKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnNjb3BlT2ZM
YXN0RWxlbWVudC0+dHJlZVNjb3BlKCkgPT0gY29udGV4dC5lbGVtZW50LT50cmVlU2NvcGUoKSA/
IFNlbGVjdG9yTWF0Y2hlcyA6IFNlbGVjdG9yRmFpbHNMb2NhbGx5OworICAgICAgICB9CisjZW5k
aWYKICAgICAgICAgcmV0dXJuIFNlbGVjdG9yTWF0Y2hlczsKKyAgICB9CiAKICAgICBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCBuZXh0Q29udGV4dChjb250ZXh0KTsKICAgICBuZXh0Q29udGV4dC5z
ZWxlY3RvciA9IGhpc3RvcnlTZWxlY3RvcjsKQEAgLTM4NCw2ICszOTIsMjUgQEAgU2VsZWN0b3JD
aGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25z
dCBTZWxlY3RvckNoZWMKICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnRQYXJlbnRTdHls
ZSA9IDA7CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihuZXh0Q29udGV4dCwgaWdu
b3JlRHluYW1pY1BzZXVkbyk7CiAgICAgICAgIH0KKworICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNo
YWRvd0Rpc3RyaWJ1dGVkOgorICAgICAgICB7CisgICAgICAgICAgICBWZWN0b3I8SW5zZXJ0aW9u
UG9pbnQqLCA4PiBpbnNlcnRpb25Qb2ludHM7CisgICAgICAgICAgICBmb3IgKEVsZW1lbnQqIGVs
ZW1lbnQgPSBjb250ZXh0LmVsZW1lbnQ7IGVsZW1lbnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJl
bnRFbGVtZW50KCkpIHsKKyAgICAgICAgICAgICAgICBpbnNlcnRpb25Qb2ludHMuY2xlYXIoKTsK
KyAgICAgICAgICAgICAgICBjb2xsZWN0QWxsTWlkcG9pbnRJbnNlcnRpb25Qb2ludHMoZWxlbWVu
dCwgaW5zZXJ0aW9uUG9pbnRzKTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGluc2VydGlvblBvaW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBu
ZXh0Q29udGV4dC5lbGVtZW50ID0gaW5zZXJ0aW9uUG9pbnRzW2ldOworICAgICAgICAgICAgICAg
ICAgICBuZXh0Q29udGV4dC5pc1N1YlNlbGVjdG9yID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
ICAgIG5leHRDb250ZXh0LmVsZW1lbnRTdHlsZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIG5l
eHRDb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIFNl
bGVjdG9yTWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKG5leHRDb250ZXh0LCBpZ25vcmVEeW5h
bWljUHNldWRvKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoID09IFNlbGVjdG9yTWF0
Y2hlcyB8fCBtYXRjaCA9PSBTZWxlY3RvckZhaWxzQ29tcGxldGVseSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBtYXRjaDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CisgICAgICAgIH0K
ICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3Rv
ckNoZWNrZXIuaAppbmRleCAzMzE5M2Y3NmJjMzI4MjZhZDBkM2VlNjE0NTE1YjliYWM1ZDI1MjBi
Li5kOTY2ZDJlNTdkODVmNDA0NTZkMDFhNjZhYzIyMGIxNzQ4ODIwYzc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yQ2hlY2tlci5oCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICwgaXNTdWJTZWxlY3RvcihmYWxzZSkKICAgICAgICAgICAgICwgaGFzU2Nyb2xsYmFyUHNl
dWRvKGZhbHNlKQogICAgICAgICAgICAgLCBoYXNTZWxlY3Rpb25Qc2V1ZG8oZmFsc2UpCisgICAg
ICAgICAgICAsIHNjb3BlT2ZMYXN0RWxlbWVudCgwKQogICAgICAgICB7IH0KIAogICAgICAgICBD
U1NTZWxlY3Rvciogc2VsZWN0b3I7CkBAIC03NSw2ICs3Niw3IEBAIHB1YmxpYzoKICAgICAgICAg
Ym9vbCBpc1N1YlNlbGVjdG9yOwogICAgICAgICBib29sIGhhc1Njcm9sbGJhclBzZXVkbzsKICAg
ICAgICAgYm9vbCBoYXNTZWxlY3Rpb25Qc2V1ZG87CisgICAgICAgIGNvbnN0IENvbnRhaW5lck5v
ZGUqIHNjb3BlT2ZMYXN0RWxlbWVudDsKICAgICB9OwogCiAgICAgYm9vbCBjaGVja1NlbGVjdG9y
KENTU1NlbGVjdG9yKiwgRWxlbWVudCosIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IgPSBm
YWxzZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcAppbmRleCBjZWFh
NzY4MTQ5MDBjMGIzMWQzOTRjNGYyNmNjNGNiYjVlMzVlOGRjLi4zYjRkNjQwNGI3YzdjZjFmOWI0
NGVjMzVmNGE5YTQ5ZDM3Mzg5ZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2Vs
ZWN0b3JGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5j
cHAKQEAgLTE0OCw2ICsxNDgsNyBAQCB2b2lkIFNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0SWRlbnRp
Zmllckhhc2hlcyhjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIHVuc2lnbgogICAgICAgICBj
YXNlIENTU1NlbGVjdG9yOjpEaXJlY3RBZGphY2VudDoKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6SW5kaXJlY3RBZGphY2VudDoKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2hhZG93RGVz
Y2VuZGFudDoKKyAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2hhZG93RGlzdHJpYnV0ZWQ6CiAg
ICAgICAgICAgICBza2lwT3ZlclN1YnNlbGVjdG9ycyA9IHRydWU7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcAppbmRleCAwOThlMGQ1N2MwYjdlMWQ3NGVkMTUwOGY3ZTkwMGQ1MTZj
MmU5NzBkLi5mNTFjZmZiMmUwNGFlODg3YjdlZDQwZTkwZjk5NWRmZjEyNDA2NmJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0zNjQsNiArMzY0LDkgQEAgdm9pZCBTdHls
ZVJlc29sdmVyOjpyZXNldEF1dGhvclN0eWxlKCkKIHsKICAgICBtX2F1dGhvclN0eWxlID0gUnVs
ZVNldDo6Y3JlYXRlKCk7CiAgICAgbV9hdXRob3JTdHlsZS0+ZGlzYWJsZUF1dG9TaHJpbmtUb0Zp
dCgpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxl
U2V0TWFwLmNsZWFyKCk7CisjZW5kaWYKIH0KIAogdm9pZCBTdHlsZVJlc29sdmVyOjphcHBlbmRB
dXRob3JTdHlsZVNoZWV0cyh1bnNpZ25lZCBmaXJzdE5ldywgY29uc3QgVmVjdG9yPFJlZlB0cjxD
U1NTdHlsZVNoZWV0PiA+JiBzdHlsZVNoZWV0cykKQEAgLTQ0OCw2ICs0NTEsMzIgQEAgdm9pZCBT
dHlsZVJlc29sdmVyOjphZGRLZXlmcmFtZVN0eWxlKFBhc3NSZWZQdHI8U3R5bGVSdWxlS2V5ZnJh
bWVzPiBydWxlKQogICAgIG1fa2V5ZnJhbWVzUnVsZU1hcC5zZXQocy5pbXBsKCksIHJ1bGUpOwog
fQogCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZFN0eWxlUnVsZShTdHlsZVJ1bGUqIHJ1bGUsIENv
bnRhaW5lck5vZGUqIHNjb3BlLCBSdWxlU2V0KiBydWxlU2V0LCBBZGRSdWxlRmxhZ3MgYWRkUnVs
ZUZsYWdzKQoreworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGlmICghc2NvcGUpIHsKKyAg
ICAgICAgcnVsZVNldC0+YWRkU3R5bGVSdWxlKHJ1bGUsIGFkZFJ1bGVGbGFncyk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3Qg
PSBydWxlLT5zZWxlY3Rvckxpc3QoKTsKKyAgICBmb3IgKHNpemVfdCBzZWxlY3RvckluZGV4ID0g
MDsgc2VsZWN0b3JJbmRleCAhPSBub3RGb3VuZDsgc2VsZWN0b3JJbmRleCA9IHNlbGVjdG9yTGlz
dC5pbmRleE9mTmV4dFNlbGVjdG9yQWZ0ZXIoc2VsZWN0b3JJbmRleCkpIHsKKyAgICAgICAgaWYg
KHNlbGVjdG9yTGlzdC5oYXNTaGFkb3dEaXN0cmlidXRlZEF0KHNlbGVjdG9ySW5kZXgpKSB7Cisg
ICAgICAgICAgICBpZiAobV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAuY29udGFpbnMoc2Nv
cGUpKQorICAgICAgICAgICAgICAgIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLmdldChz
Y29wZSktPmFkZFJ1bGUocnVsZSwgc2VsZWN0b3JJbmRleCwgYWRkUnVsZUZsYWdzKTsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIE93blB0cjxSdWxlU2V0PiBydWxlU2V0Rm9y
U2NvcGUgPSBhZG9wdFB0cihuZXcgUnVsZVNldCgpKTsKKyAgICAgICAgICAgICAgICBydWxlU2V0
Rm9yU2NvcGUtPmFkZFJ1bGUocnVsZSwgc2VsZWN0b3JJbmRleCwgYWRkUnVsZUZsYWdzKTsKKyAg
ICAgICAgICAgICAgICBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5hZGQoc2NvcGUsIHJ1
bGVTZXRGb3JTY29wZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIHJ1bGVTZXQtPmFkZFJ1bGUocnVsZSwgc2VsZWN0b3JJbmRleCwgYWRkUnVs
ZUZsYWdzKTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzY29wZSk7CisgICAgcnVs
ZVNldC0+YWRkU3R5bGVSdWxlKHJ1bGUsIGFkZFJ1bGVGbGFncyk7CisjZW5kaWYKK30KKwogU3R5
bGVSZXNvbHZlcjo6flN0eWxlUmVzb2x2ZXIoKQogewogICAgIG1fZm9udFNlbGVjdG9yLT5jbGVh
ckRvY3VtZW50KCk7CkBAIC02NjQsNyArNjkzLDggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xs
ZWN0TWF0Y2hpbmdSdWxlcyhSdWxlU2V0KiBydWxlcywgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW4K
ICAgICBUcmVlU2NvcGUqIHRyZWVTY29wZSA9IG1fZWxlbWVudC0+dHJlZVNjb3BlKCk7CiAgICAg
aWYgKCFNYXRjaGluZ1VBUnVsZXNTY29wZTo6aXNNYXRjaGluZ1VBUnVsZXMoKQogICAgICAgICAm
JiAhdHJlZVNjb3BlLT5hcHBseUF1dGhvclN0eWxlcygpCi0gICAgICAgICYmICghb3B0aW9ucy5z
Y29wZSB8fCBvcHRpb25zLnNjb3BlLT50cmVlU2NvcGUoKSAhPSB0cmVlU2NvcGUpKQorICAgICAg
ICAmJiAoIW9wdGlvbnMuc2NvcGUgfHwgb3B0aW9ucy5zY29wZS0+dHJlZVNjb3BlKCkgIT0gdHJl
ZVNjb3BlKQorICAgICAgICAmJiAhb3B0aW9ucy5zY29wZU9mTGFzdEVsZW1lbnQpCiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIFdlIG5lZWQgdG8gY29sbGVjdCB0aGUgcnVsZXMgZm9yIGlkLCBj
bGFzcywgdGFnLCBhbmQgZXZlcnl0aGluZyBlbHNlIGludG8gYSBidWZmZXIgYW5kCkBAIC03OTks
NiArODI5LDE3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hIb3N0UnVsZXMoTWF0Y2hSZXN1
bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKICNlbmRpZgogfQogCisjaWYgRU5B
QkxFKFNIQURPV19ET00pCit2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoU2hhZG93RGlzdHJpYnV0
ZWRSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQorewor
ICAgIGZvciAoU2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwOjppdGVyYXRvciBpdCA9IG1fc2hh
ZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLmJlZ2luKCk7IGl0ICE9IG1fc2hhZG93RGlzdHJpYnV0
ZWRSdWxlU2V0TWFwLmVuZCgpOyArK2l0KSB7CisgICAgICAgIE1hdGNoT3B0aW9ucyBvcHRpb25z
KGluY2x1ZGVFbXB0eVJ1bGVzLCAwKTsKKyAgICAgICAgb3B0aW9ucy5zY29wZU9mTGFzdEVsZW1l
bnQgPSBpdC0+a2V5OworICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhpdC0+dmFsdWUuZ2V0
KCksIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRo
b3JSdWxlLCBvcHRpb25zKTsKKyAgICB9Cit9CisjZW5kaWYKKwogdm9pZCBTdHlsZVJlc29sdmVy
OjptYXRjaEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5
UnVsZXMpCiB7CiAgICAgbV9tYXRjaGVkUnVsZXMuY2xlYXIoKTsKQEAgLTgxMSw2ICs4NTIsOSBA
QCB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3Vs
dCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcwogICAgIE1hdGNoT3B0aW9ucyBvcHRpb25zKGluY2x1
ZGVFbXB0eVJ1bGVzKTsKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhtX2F1dGhvclN0eWxlLmdl
dCgpLCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0
aG9yUnVsZSwgb3B0aW9ucyk7CiAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24obV9h
dXRob3JTdHlsZS5nZXQoKSwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5y
YW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQor
ICAgIG1hdGNoU2hhZG93RGlzdHJpYnV0ZWRSdWxlcyhyZXN1bHQsIGluY2x1ZGVFbXB0eVJ1bGVz
KTsKKyNlbmRpZgogICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhyZXN1bHQpOwogCiAg
ICAgbWF0Y2hTY29wZWRBdXRob3JSdWxlcyhyZXN1bHQsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKQEAg
LTg0Nyw3ICs4OTEsMTEgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxl
c0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogcnVsZXMsIGkKIAogICAgIC8vIEluIHNv
bWUgY2FzZXMgd2UgbWF5IGVuZCB1cCBsb29raW5nIHVwIHN0eWxlIGZvciByYW5kb20gZWxlbWVu
dHMgaW4gdGhlIG1pZGRsZSBvZiBhIHJlY3Vyc2l2ZSB0cmVlIHJlc29sdmUuCiAgICAgLy8gQW5j
ZXN0b3IgaWRlbnRpZmllciBmaWx0ZXIgd29uJ3QgYmUgdXAtdG8tZGF0ZSBpbiB0aGF0IGNhc2Ug
YW5kIHdlIGNhbid0IHVzZSB0aGUgZmFzdCBwYXRoLgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQor
ICAgIGJvb2wgY2FuVXNlRmFzdFJlamVjdCA9IG1fc2VsZWN0b3JGaWx0ZXIucGFyZW50U3RhY2tJ
c0NvbnNpc3RlbnQobV9wYXJlbnROb2RlKSAmJiAhb3B0aW9ucy5zY29wZU9mTGFzdEVsZW1lbnQ7
CisjZWxzZQogICAgIGJvb2wgY2FuVXNlRmFzdFJlamVjdCA9IG1fc2VsZWN0b3JGaWx0ZXIucGFy
ZW50U3RhY2tJc0NvbnNpc3RlbnQobV9wYXJlbnROb2RlKTsKKyNlbmRpZgogCiAgICAgdW5zaWdu
ZWQgc2l6ZSA9IHJ1bGVzLT5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNp
emU7ICsraSkgewpAQCAtODU3LDcgKzkwNSw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVj
dE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIHJ1bGVzLCBpCiAK
ICAgICAgICAgU3R5bGVSdWxlKiBydWxlID0gcnVsZURhdGEucnVsZSgpOwogICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsTWF0Y2hSdWxlKGRvY3VtZW50KCksIHJ1bGUsIHRoaXMpOwotICAgICAgICBpZiAo
Y2hlY2tTZWxlY3RvcihydWxlRGF0YSwgb3B0aW9ucy5zY29wZSkpIHsKKyAgICAgICAgaWYgKGNo
ZWNrU2VsZWN0b3IocnVsZURhdGEsIG9wdGlvbnMuc2NvcGUsIG9wdGlvbnMuc2NvcGVPZkxhc3RF
bGVtZW50KSkgewogICAgICAgICAgICAgLy8gSWYgdGhlIHJ1bGUgaGFzIG5vIHByb3BlcnRpZXMg
dG8gYXBwbHksIHRoZW4gaWdub3JlIGl0IGluIHRoZSBub24tZGVidWcgbW9kZS4KICAgICAgICAg
ICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMgPSBydWxlLT5wcm9wZXJ0aWVz
KCk7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnRpZXMgfHwgKHByb3BlcnRpZXMtPmlzRW1wdHko
KSAmJiAhb3B0aW9ucy5pbmNsdWRlRW1wdHlSdWxlcykpIHsKQEAgLTIyMzgsNyArMjI4Niw3IEBA
IFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IFN0eWxlUmVzb2x2ZXI6OnBzZXVkb1N0eWxlUnVsZXNG
b3JFbGVtZW50KEVsZW1lbnQqIGUsIFBzCiAgICAgcmV0dXJuIG1fcnVsZUxpc3QucmVsZWFzZSgp
OwogfQogCi1pbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFJ1
bGVEYXRhJiBydWxlRGF0YSwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUpCitpbmxpbmUgYm9v
bCBTdHlsZVJlc29sdmVyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwg
Y29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlT2ZM
YXN0RWxlbWVudCkKIHsKICAgICBtX2R5bmFtaWNQc2V1ZG8gPSBOT1BTRVVETzsKIApAQCAtMjI2
Myw2ICsyMzExLDcgQEAgaW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y2hlY2tTZWxlY3Rvcihj
b25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0IENvbnRhaW4KICAgICBjb250ZXh0LmVsZW1l
bnRTdHlsZSA9IHN0eWxlKCk7CiAgICAgY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgPSBtX3Bh
cmVudE5vZGUgPyBtX3BhcmVudE5vZGUtPnJlbmRlclN0eWxlKCkgOiAwOwogICAgIGNvbnRleHQu
c2NvcGUgPSBzY29wZTsKKyAgICBjb250ZXh0LnNjb3BlT2ZMYXN0RWxlbWVudCA9IHNjb3BlT2ZM
YXN0RWxlbWVudDsKICAgICBjb250ZXh0LnBzZXVkb1N0eWxlID0gbV9wc2V1ZG9TdHlsZTsKICAg
ICBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBtX3NlbGVjdG9yQ2hlY2tl
ci5jaGVja1NlbGVjdG9yKGNvbnRleHQsIG1fZHluYW1pY1BzZXVkbyk7CiAgICAgaWYgKG1hdGNo
ICE9IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaGVzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmgKaW5kZXggNWJkMjk0MGU1N2YyOTgyMWZlNjEzZWEwZThhMzliZmRmYjg4ZDA3ZC4u
ZDMzZGQ3Mzk5NDI1ZjAzZGQ2ZjcyMjhhZjJiMzc2MzExYjNmOTZjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV4
cC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUnVsZUZlYXR1cmUuaCIK
KyNpbmNsdWRlICJSdWxlU2V0LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
IgogI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgIlNlbGVjdG9yRmlsdGVy
LmgiCkBAIC03Niw3ICs3Nyw2IEBAIGNsYXNzIE1lZGlhUXVlcnlFdmFsdWF0b3I7CiBjbGFzcyBO
b2RlOwogY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xhc3MgUnVsZURhdGE7Ci1jbGFzcyBSdWxlU2V0
OwogY2xhc3MgU2V0dGluZ3M7CiBjbGFzcyBTdGF0aWNDU1NSdWxlTGlzdDsKIGNsYXNzIFN0eWxl
QnVpbGRlcjsKQEAgLTI2NSw2ICsyNjUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZEtleWZy
YW1lU3R5bGUoUGFzc1JlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+KTsKIAorICAgIHZvaWQgYWRk
U3R5bGVSdWxlKFN0eWxlUnVsZSosIENvbnRhaW5lck5vZGUqIHNjb3BlLCBSdWxlU2V0KiwgQWRk
UnVsZUZsYWdzKTsKKwogICAgIGJvb2wgY2hlY2tSZWdpb25TdHlsZShFbGVtZW50KiByZWdpb25F
bGVtZW50KTsKIAogICAgIGJvb2wgdXNlc1NpYmxpbmdSdWxlcygpIGNvbnN0IHsgcmV0dXJuICFt
X2ZlYXR1cmVzLnNpYmxpbmdSdWxlcy5pc0VtcHR5KCk7IH0KQEAgLTM0Myw5ICszNDUsMTAgQEAg
cHJpdmF0ZToKICAgICB9OwogCiAgICAgc3RydWN0IE1hdGNoT3B0aW9ucyB7Ci0gICAgICAgIE1h
dGNoT3B0aW9ucyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBjb25zdCBDb250YWluZXJOb2RlKiBz
Y29wZSA9IDApIDogc2NvcGUoc2NvcGUpLCBpbmNsdWRlRW1wdHlSdWxlcyhpbmNsdWRlRW1wdHlS
dWxlcykgeyB9CisgICAgICAgIE1hdGNoT3B0aW9ucyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBj
b25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9IDApIDogc2NvcGUoc2NvcGUpLCBpbmNsdWRlRW1w
dHlSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcyksIHNjb3BlT2ZMYXN0RWxlbWVudCgwKSB7IH0KICAg
ICAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGU7CiAgICAgICAgIGJvb2wgaW5jbHVkZUVt
cHR5UnVsZXM7CisgICAgICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlT2ZMYXN0RWxlbWVu
dDsKICAgICB9OwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWF0Y2hlZFByb3BlcnRpZXMoTWF0Y2hS
ZXN1bHQmLCBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzLCBTdHlsZVJ1bGUqID0g
MCwgdW5zaWduZWQgbGlua01hdGNoVHlwZSA9IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hBbGwsIGJv
b2wgaW5SZWdpb25SdWxlID0gZmFsc2UpOwpAQCAtMzU4LDYgKzM2MSwxMCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgbWF0Y2hVc2VyUnVsZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1
bGVzKTsKICAgICB2b2lkIG1hdGNoU2NvcGVkQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmLCBib29s
IGluY2x1ZGVFbXB0eVJ1bGVzKTsKICAgICB2b2lkIG1hdGNoSG9zdFJ1bGVzKE1hdGNoUmVzdWx0
JiwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAg
dm9pZCBtYXRjaFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1
ZGVFbXB0eVJ1bGVzKTsKKyNlbmRpZgorCiAgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhS
dWxlU2V0KiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4LCBjb25zdCBN
YXRjaE9wdGlvbnMmKTsKICAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKFJ1
bGVTZXQqLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1h
dGNoT3B0aW9ucyYpOwogICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0
IFZlY3RvcjxSdWxlRGF0YT4qLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5k
ZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYpOwpAQCAtMzY1LDcgKzM3Miw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzb3J0TWF0Y2hlZFJ1bGVzKCk7CiAgICAgdm9pZCBzb3J0QW5kVHJhbnNmZXJNYXRj
aGVkUnVsZXMoTWF0Y2hSZXN1bHQmKTsKIAotICAgIGJvb2wgY2hlY2tTZWxlY3Rvcihjb25zdCBS
dWxlRGF0YSYsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKTsKKyAgICBib29sIGNoZWNrU2Vs
ZWN0b3IoY29uc3QgUnVsZURhdGEmLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSwgY29uc3Qg
Q29udGFpbmVyTm9kZSogc2NvcGVPZkxhc3RFbGVtZW50KTsKICAgICBib29sIGNoZWNrUmVnaW9u
U2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHJlZ2lvblNlbGVjdG9yLCBFbGVtZW50KiByZWdpb25FbGVt
ZW50KTsKICAgICB2b2lkIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQm
LCBjb25zdCBFbGVtZW50Kik7CiAgICAgZW51bSBTdHlsZUFwcGxpY2F0aW9uUGFzcyB7CkBAIC0z
OTYsNiArNDAzLDExIEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFJ1bGVTZXQ+IG1fYXV0aG9yU3R5
bGU7CiAgICAgT3duUHRyPFJ1bGVTZXQ+IG1fdXNlclN0eWxlOwogCisjaWYgRU5BQkxFKFNIQURP
V19ET00pCisgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IENvbnRhaW5lck5vZGUqLCBPd25QdHI8
UnVsZVNldD4gPiBTaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXA7CisgICAgU2hhZG93RGlzdHJp
YnV0ZWRSdWxlU2V0TWFwIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwOworI2VuZGlmCisK
ICAgICBSdWxlRmVhdHVyZVNldCBtX2ZlYXR1cmVzOwogICAgIE93blB0cjxSdWxlU2V0PiBtX3Np
YmxpbmdSdWxlU2V0OwogICAgIE93blB0cjxSdWxlU2V0PiBtX3VuY29tbW9uQXR0cmlidXRlUnVs
ZVNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBv
aW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmluZGV4
IGFlZGFjMWQwZjdkMTBmNmQ4NGUxMzYwZTgxMDAzMzhhOTBjODEyZTEuLjE3ZmM3NjZmN2RkZWIw
M2RhNGZkNTllN2Q0MTBlODAyZmRkNmUwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtMTc5LDYgKzE3OSwzNSBAQCBpbmxpbmUgSW5zZXJ0aW9u
UG9pbnQqIHJlc29sdmVSZXByb2plY3Rpb24oY29uc3QgTm9kZSogcHJvamVjdGVkTm9kZSkKICAg
ICByZXR1cm4gaW5zZXJ0aW9uUG9pbnQ7CiB9CiAKK2lubGluZSB2b2lkIGNvbGxlY3RBbGxNaWRw
b2ludEluc2VydGlvblBvaW50cyhjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlLCBWZWN0b3I8SW5z
ZXJ0aW9uUG9pbnQqLCA4PiYgcmVzdWx0cykKK3sKKyAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0
aW9uUG9pbnQgPSAwOworICAgIGNvbnN0IE5vZGUqIGN1cnJlbnQgPSBwcm9qZWN0ZWROb2RlOwor
CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9
IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKGN1cnJlbnQpKSB7CisgICAgICAgICAgICBz
aGFkb3ctPmVuc3VyZURpc3RyaWJ1dGlvbigpOworICAgICAgICAgICAgaWYgKEluc2VydGlvblBv
aW50KiBpbnNlcnRlZFRvID0gc2hhZG93LT5kaXN0cmlidXRvcigpLmZpbmRJbnNlcnRpb25Qb2lu
dEZvcihwcm9qZWN0ZWROb2RlKSkgeworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBpbnNlcnRl
ZFRvOworICAgICAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAg
ICAgICAgICAgICByZXN1bHRzLmFwcGVuZChpbnNlcnRpb25Qb2ludCk7CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoTm9k
ZSogcGFyZW50ID0gcGFyZW50Tm9kZUZvckRpc3RyaWJ1dGlvbihjdXJyZW50KSkgeworICAgICAg
ICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRlZFRvID0gcGFyZW50LT5pc1NoYWRvd1Jv
b3QoKSA/IHRvU2hhZG93Um9vdChwYXJlbnQpLT5hc3NpZ25lZFRvKCkgOiAwKSB7CisgICAgICAg
ICAgICAgICAgY3VycmVudCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgaW5zZXJ0aW9u
UG9pbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKGluc2Vy
dGlvblBvaW50KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEluc2VydGlvblBvaW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKaW5kZXggZmYwMGM5
NTAyNzhjMzMyMDFjMGFmOTJkOGFiNjU5N2U4ZWM5N2ZmNS4uNzY0ZjFlY2QxNzE1MTY3NzI1ZmMz
NzRhZmNmYzQ4NDZjNDJjYzFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKQEAgLTcwLDcgKzcwLDcgQEAgZW51bSBT
dHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHkgewogLy8gU3RhdGljIHBzZXVk
byBzdHlsZXMuIER5bmFtaWMgb25lcyBhcmUgcHJvZHVjZWQgb24gdGhlIGZseS4KIGVudW0gUHNl
dWRvSWQgewogICAgIC8vIFRoZSBvcmRlciBtdXN0IGJlIE5PUCBJRCwgcHVibGljIElEcywgYW5k
IHRoZW4gaW50ZXJuYWwgSURzLgotICAgIE5PUFNFVURPLCBGSVJTVF9MSU5FLCBGSVJTVF9MRVRU
RVIsIEJFRk9SRSwgQUZURVIsIFNFTEVDVElPTiwgRklSU1RfTElORV9JTkhFUklURUQsIFNDUk9M
TEJBUiwKKyAgICBOT1BTRVVETywgRklSU1RfTElORSwgRklSU1RfTEVUVEVSLCBCRUZPUkUsIEFG
VEVSLCBESVNUUklCVVRFRCwgU0VMRUNUSU9OLCBGSVJTVF9MSU5FX0lOSEVSSVRFRCwgU0NST0xM
QkFSLAogICAgIC8vIEludGVybmFsIElEcyBmb2xsb3c6CiAgICAgU0NST0xMQkFSX1RIVU1CLCBT
Q1JPTExCQVJfQlVUVE9OLCBTQ1JPTExCQVJfVFJBQ0ssIFNDUk9MTEJBUl9UUkFDS19QSUVDRSwg
U0NST0xMQkFSX0NPUk5FUiwgUkVTSVpFUiwKICAgICBJTlBVVF9MSVNUX0JVVFRPTiwKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCAwNDEzMTg3N2UxM2Q3ZmIzODNkNTM4OGRiNDI4NjI1YjAwYzNiYjU1Li4yNmY4N2M4YzZlODM5
OTYxMjkwMmRkYWQ3NGY1NTZhZDE3NzBmYWQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTMt
MDEtMDYgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtTaGFk
b3cgRE9NXSBJbXBsZW1lbnRzIGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvIGVsZW1lbnQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjE2OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3It
c2hhZG93LWVsZW1lbnQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtbWF0Y2gtYWxsLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5l
c3RlZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlz
dHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24tZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci1l
eHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxl
Y3Rvci1saXN0LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTAxLTA2ICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgSGVhcC11c2UtYWZ0ZXItZnJlZSBpbiBXZWJDb3JlOjpE
b2N1bWVudDo6aW1wbGljaXRDbG9zZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NGMyNmUyYjU2YzRjNmE3YzcwYzZjZmQ1OGEyMjdmOGUwZjQ0NjRm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw5IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0i
aG9zdCI+CisgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICA8L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGMy
NmUyYjU2YzRjNmE3YzcwYzZjZmQ1OGEyMjdmOGUwZjQ0NjRmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZv
ci1zaGFkb3ctZWxlbWVudC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhv
c3QiPgorICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgPC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50Lmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9y
LXNoYWRvdy1lbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzE0Mjk3MGQ3NDFkZGNmMjdmZWY3NDRh
YjJlNDAzZWMxOTg5MGYzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQuaHRt
bApAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1M
ID0gJ3NoYWRvdzo6ZGlzdHJpYnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBz
YW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBw
ZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAg
ICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2
Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJ2dyZWVuJykpKSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAg
ICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdzaGFk
b3cnKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFs
bC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhNjBi
NzJlMGRlOTE3NzYyYjJhMmE0YzVlYzNlZjlmNTY2ZWI0OTgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0
Y2gtYWxsLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAg
IDxkaXY+CisgICAgICBub3JtYWwKKyAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3Jl
ZW48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgbm9ybWFsCisgICAgICA8ZGl2
IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJmNDA0ZjI2ZTdiZGE4MzBlNmViODU0YWM5NzVmM2RiYmM2Y2U5MDkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQt
cHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9t
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+
Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5
bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50OjpkaXN0cmlidXRlZCguaGVs
bG8pIHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00o
J2RpdicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAor
ICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2NvbnRlbnQnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAg
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJyksCisg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnaGVsbG8n
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgnZ3JlZW4nKSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2hlbGxv
J30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoJ2dyZWVuJykpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtbmVzdGVkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlz
dHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTUxODM0NDJhMDc2YzdmODFhOWM1NDIxMzFlNzlmYjc3NmYwMTFjYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC1uZXN0ZWQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+Cisg
ICAgPGRpdiBpZD0ibmVzdGVkLWhvc3QiPgorICAgICAgdGV4dDEKKyAgICAgIDxkaXY+CisgICAg
ICAgIHRleHQyCisgICAgICAgIDxkaXY+CisgICAgICAgICAgdGV4dDMKKyAgICAgICAgICA8ZGl2
IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAgICAgICAgPGRpdj5ub3JtYWw8
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+
Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mNTMyMWIwYTYzZTE0MjkzZGJhY2RhMzFkOWViMWU3ODVhN2ExOGVl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRv
bS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2
PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0
eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnZGl2IGNvbnRlbnQ6OmRpc3RyaWJ1dGVk
KGRpdiBjb250ZW50OjpkaXN0cmlidXRlZChkaXYuZ3JlZW4pKSB7IGNvbG9yOiBncmVlbjsgfSc7
CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3Nh
bmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwK
KyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnZGl2JywgeydpZCc6ICduZXN0ZWQtaG9zdCd9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgndGV4dDEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCd0ZXh0MicpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3Qn
OiAnZGl2J30pKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7J2NsYXNzJzogJ2dyZWVuJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCd0ZXh0MycpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7fSkpKSksCisgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdncmVlbid9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpLAorICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQt
cHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLWV4
cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY5YzkxMjdkZTVlNzAzYjdhMWE1YzkzNjk0ZWE3Y2Qw
YjEyNDg0MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbApAQCAt
MCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJz
YW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdiBpZD0iaG9zdDIiPgorICAgICAg
PGRpdiBzdHlsZT0nY29sb3I6IGdyZWVuJz4KKyAgICAgICAgZ3JlZW4KKyAgICAgIDwvZGl2Pgor
ICAgIDwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2pl
Y3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1
ZG8tZWxlbWVudC1yZXByb2plY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Mjk1NTgwODMwODg5ZDVk
OTNiNDVmMjRhZDY0OWQyMmVhMjUzMzgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5o
dG1sCkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHls
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhU
TUwgPSAnY29udGVudDo6ZGlzdHJpYnV0ZWQoLmZvbykgeyBjb2xvcjogZ3JlZW47IH0nOworCit2
YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94
LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAg
ICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHsnaWQnOiAnaG9zdDInfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVh
dGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dTdHls
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jywg
eydzZWxlY3QnOiAnLmZvbyd9KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdjb250ZW50JykpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNz
JzogJ2Zvbyd9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJ2dyZWVuJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1z
dXBwb3J0LXNlbGVjdG9yLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci1leHBlY3RlZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIzZGVkZTEzM2I4NjJkZDE0YzkyZTYwNWM0YTFiZWQyOGUzN2FkYWQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci1leHBlY3RlZC5odG1sCkBAIC0wLDAg
KzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRi
b3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2PgorICAgICAgbm9ybWFsCisgICAgICA8
ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRp
dj4KKyAgICAgIG5vcm1hbAorICAgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAgICA8L2Rpdj4KKyAg
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LXN1cHBvcnQtc2VsZWN0b3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNmVkNTNiMDBjNmM0N2EzZjI0OGRh
NjMzYTgxMjQ3OTQxOGY5ODljCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3IuaHRt
bApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1M
ID0gJ2NvbnRlbnQ6OmRpc3RyaWJ1dGVkKGRpdi5oZWxsbyBkaXYpIHsgY29sb3I6IGdyZWVuOyB9
JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOwor
c2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9
LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hh
ZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSksCisgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdoZWxsbyd9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpLAorICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpKSkpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlz
dHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0LWV4cGVjdGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI4MjUz
ZTRkYWI3NDA1NjU4MzhkODQyNTBiYmE5YmQ5MDRkOTkyYQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2Vk
LWluLXNlbGVjdG9yLWxpc3QtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0i
aG9zdCI+CisgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgIDxw
Pm5vcm1hbDwvcD4KKyAgICA8cCBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvcD4KKyAgPC9k
aXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0Lmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjBmMTdlYjYyNzMxNGU4
ZGMxMDU3YTAxM2E0MjE5OTNhZWUyYjg2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVj
dG9yLWxpc3QuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIg
c2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5
bGUuaW5uZXJIVE1MID0gJ2NvbnRlbnQ6OmRpc3RyaWJ1dGVkKGRpdiksIHAgeyBjb2xvcjogZ3Jl
ZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94
Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdo
b3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAg
ICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpLAor
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdwJywge30sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSwKKyAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdwJywg
eydjbGFzcyc6ICdoZWxsbyd9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoJ25vcm1hbCcpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRv
LWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkNTU1ODgzZWUyZTAzM2NmYjZjYjcxMTc3
ZDI4ZTZiYTM4ODAxZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDIyIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94
Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRlbnQ6OmRpc3RyaWJ1
dGVkKGRpdikgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0
ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jv
b3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lk
JzogJ2hvc3QtY2hpbGQnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCdncmVlbicpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181656</attachid>
            <date>2013-01-07 23:32:28 -0800</date>
            <delta_ts>2013-01-08 00:00:17 -0800</delta_ts>
            <desc>Update ChangeLog. Check scopeOfLastElement using isDescendantof</desc>
            <filename>bug-82169-20130108162932.patch</filename>
            <type>text/plain</type>
            <size>50534</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NGVjM2MwOWFkNjI0ZmJlYTdlYjIwYTIyNDU0OWY5NzRhYmYwM2I2Li4w
NTQzNjE3NGI2YTgxZjhiMjM0ZjViZWMwNDQ5MzQxNWMwYjZiYzBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTAwIEBACisyMDEzLTAxLTA2ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbU2hhZG93IERPTV0gSW1wbGVtZW50cyBhICc6OmRpc3RyaWJ1dGVkKCkn
IHBzZXVkbyBlbGVtZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODIxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnRzIGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvIGVsZW1lbnQuCisg
ICAgICAgIFNlZSB0aGUgU2hhZG93IERPTSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgZGV0YWlsLgor
CisgICAgICAgIGh0dHA6Ly9kdmNzLnczLm9yZy9oZy93ZWJjb21wb25lbnRzL3Jhdy1maWxlL3Rp
cC9zcGVjL3NoYWRvdy9pbmRleC5odG1sI3NlbGVjdGluZy1ub2Rlcy1kaXN0cmlidXRlZC10by1p
bnNlcnRpb24tcG9pbnRzCisKKyAgICAgICAgQSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxl
bWVudCBpcyB0aGUgZmlyc3QgQ1NTIHJ1bGUgd2hpY2gKKyAgICAgICAgY3Jvc3NlcyB0aGUgc2hh
ZG93IGJvdW5kYXJ5IGZyb20gYSBzaGFkb3cgdHJlZSB0byB0aGUgdHJlZSBvZiBpdHMKKyAgICAg
ICAgc2hhZG93IGhvc3QuIFRoYXQgbWVhbnMgYSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxl
bWVudCBpcworICAgICAgICBkZWZpbmVkIGluIHNoYWRvdyB0cmVlLCBidXQgdGhlIG5vZGUgd2hp
Y2ggaXMgbWF0Y2hlZCBpbiB0aGUgcnVsZQorICAgICAgICBpcyBvdXRzaWRlIG9mIHRoZSBzaGFk
b3cgdHJlZS4gVGhlcmVmb3JlLCB3ZSBjYW5ub3QgcHJlZGljdCBhCisgICAgICAgIHNjb3BlIHdo
ZXJlIHRoZSBtYXRjaGVkIG5vZGUgd2lsbCBiZSBiZWZvcmVoYW5kLiAgQ3VycmVudCBDU1MKKyAg
ICAgICAgaW1wbGVtZW50YXRpb24gYXNzdW1lcyBldmVyeSBmaW5hbCB0YXJnZXQgaXMgYXBwbGll
ZCBpbiBjdXJyZW50CisgICAgICAgIHNjb3BlLgorCisgICAgICAgIFRvIG92ZXJjb21lIHRoaXMg
aXNzdWUsIFN0eWxlUmVzb2x2ZXIgd2FzIHVwZGF0ZWQgc28gdGhhdCBpdCBoYXMKKyAgICAgICAg
U2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLiBXZSB1c2UgdGhpcyBSdWxlU2V0TWFwIHRvIGtl
ZXAgdHJhY2sKKyAgICAgICAgb2YgZWFjaCBSdWxlU2V0IG1hcHBlZCBieSBhIHNjb3BlIHdoZXJl
IGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvCisgICAgICAgIGVsZW1lbnQgaXMgb3JpZ2luYWxs
eSBkZWZpbmVkLiBUaGlzIHNjb3BlIGlzIHBhc3NlZCB0bworICAgICAgICBTZWxlY3RvckNoZWNr
ZXIgYW5kIGlzIHVzZWQgdG8gY2hlY2sgd2hldGhlciB0aGUgbGFzdGx5IG1hdGNoZWQgZWxlbWVu
dAorICAgICAgICBleGlzdHMgaW4gdGhlIHNjb3BlIHdoZXJlIHRoZSBydWxlIGlzIG9yaWdpbmFs
bHkgZGVmaW5lZC4KKworICAgICAgICBJbnRlcm5hbGx5LCAnOjpkaXN0cmlidXRlZCcgcHNldWRv
IGVsZW1lbnQgaXMgcmVwcmVzZW50ZWQgYnkgYQorICAgICAgICBuZXdseSBpbnRyb2R1Y2VkIFNo
YWRvd0Rpc3RyaWJ1dGVkIHJlbGF0aW9uLiAgQSB0cmFuc2Zvcm1hdGlvbgorICAgICAgICBmcm9t
IGEgZGlzdHJpcmJ1dGVkIHBzZXVkbyBlbGVtZW50IHRvIGEgU2hhZG93RGlzdHJpYnV0ZWQgaXMg
ZG9uZQorICAgICAgICBpbiBwYXJzaW5nIHN0YWdlIG9mIENTUy4KKworICAgICAgICBUZXN0czog
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxl
bWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtbWF0Y2gtYWxsLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0Lmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOgorICAgICAgICAqIGNzcy9D
U1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpkZXRlY3RGdW5jdGlv
blR5cGVUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmll
cnNXaXRoRWxlbWVudE5hbWUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAg
KiBjc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNl
bGVjdG9yOjpDU1NQYXJzZXJTZWxlY3Rvcik6CisgICAgICAgICogY3NzL0NTU1BhcnNlclZhbHVl
cy5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OmZ1bmN0aW9uQXJndW1l
bnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6c2V0RnVu
Y3Rpb25Bcmd1bWVudFNlbGVjdG9yKToKKyAgICAgICAgKENTU1BhcnNlclNlbGVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjppc1BzZXVkb0Rpc3RyaWJ1dGVkRWxl
bWVudCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NlbGVjdG9yOjpwc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpuYW1lVG9Qc2V1ZG9U
eXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KToKKyAgICAg
ICAgKiBjc3MvQ1NTU2VsZWN0b3IuaDoKKyAgICAgICAgKENTU1NlbGVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1NlbGVjdG9yOjppc0Rpc3RyaWJ1dGVkUHNldWRvRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjppc1NoYWRvd0Rp
c3RyaWJ1dGVkKToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoU2VsZWN0b3JIYXNTaGFkb3dEaXN0cmlidXRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3Rvckhhc1NoYWRvd0Rpc3RyaWJ1dGVkOjpvcGVyYXRvcigpKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yTGlzdDo6aGFzU2hhZG93RGlzdHJpYnV0ZWRB
dCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yTGlzdC5oOgorICAgICAgICAoQ1NTU2VsZWN0
b3JMaXN0KToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
dWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldCk6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3Ip
OgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
bGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ6OlNlbGVjdG9yQ2hlY2tpbmdD
b250ZXh0KToKKyAgICAgICAgKFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0KToKKyAgICAgICAgKiBj
c3MvU2VsZWN0b3JGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JGaWx0ZXI6
OmNvbGxlY3RJZGVudGlmaWVySGFzaGVzKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpyZXNldEF1dGhvclN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkZFN0eWxlUnVsZSk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRj
aGluZ1J1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Om1hdGNoU2hhZG93
RGlzdHJpYnV0ZWRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRj
aEF1dGhvclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RN
YXRjaGluZ1J1bGVzRm9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpj
aGVja1NlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAo
U3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpNYXRjaE9w
dGlvbnM6Ok1hdGNoT3B0aW9ucyk6CisgICAgICAgIChNYXRjaE9wdGlvbnMpOgorICAgICAgICAq
IGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0
QWxsTWlkcG9pbnRJbnNlcnRpb25Qb2ludHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmg6CisKIDIwMTMtMDEtMDYg
IFNlYmFzdGlhbiBEcsO2Z2UgIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KIAog
ICAgICAgICBCdWfCoDEwNjE3NyAtIFtHU3RyZWFtZXJdIERvbid0IGNhbGwgZ3N0X3ZpZGVvX2lu
Zm9fZnJvbV9jYXBzKCkgd2l0aCBub24tZml4ZWQgY2FwcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFy
LnkuaW4KaW5kZXggMWZkNDVlNDk1Y2U5NmE1YWE0NWM2NGIxZGU5YmJmNjBjMGZlNzRjMy4uYzI1
NDU2MDIzYzA1NTQ3ZWM3OGQ1YTdmZGUyMmE0MjgyYzIxNzVlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
R3JhbW1hci55LmluCkBAIC02MSw3ICs2MSwxMSBAQCBzdGF0aWMgaW5saW5lIGludCBjc3N5eWVy
cm9yKHZvaWQqLCBjb25zdCBjaGFyKikKIAogJX0KIAorI2lmIEVOQUJMRV9TSEFET1dfRE9NCisl
ZXhwZWN0IDY2CisjZWxzZQogJWV4cGVjdCA2NQorI2VuZGlmCiAKICVub25hc3NvYyBMT1dFU1Rf
UFJFQwogCkBAIC0xNzcsNiArMTgxLDcgQEAgc3RhdGljIGlubGluZSBpbnQgY3NzeXllcnJvcih2
b2lkKiwgY29uc3QgY2hhciopCiAldG9rZW4gPHN0cmluZz4gQ1VFRlVOQ1RJT04KICNlbmRpZgog
JXRva2VuIDxzdHJpbmc+IE5PVEZVTkNUSU9OCisldG9rZW4gPHN0cmluZz4gRElTVFJJQlVURURG
VU5DVElPTgogJXRva2VuIDxzdHJpbmc+IENBTENGVU5DVElPTgogJXRva2VuIDxzdHJpbmc+IE1J
TkZVTkNUSU9OCiAldG9rZW4gPHN0cmluZz4gTUFYRlVOQ1RJT04KQEAgLTExNDQsMTIgKzExNDks
MTIgQEAgc2ltcGxlX3NlbGVjdG9yOgogICAgIHwgZWxlbWVudF9uYW1lIHNwZWNpZmllcl9saXN0
IHsKICAgICAgICAgJCQgPSAkMjsKICAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFyc2Vy
LT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKG51bGxBdG9tLCAkMSwgJCQpOworICAg
ICAgICAgICAgJCQgPSBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVs
bEF0b20sICQxLCAkJCk7CiAgICAgfQogICAgIHwgc3BlY2lmaWVyX2xpc3QgewogICAgICAgICAk
JCA9ICQxOwogICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNp
ZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20sIHN0YXJBdG9tLCAkJCk7CisgICAgICAgICAg
ICAkJCA9IHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwg
c3RhckF0b20sICQkKTsKICAgICB9CiAgICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9u
YW1lIHsKICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKQEAg
LTExNTgsMTIgKzExNjMsMTIgQEAgc2ltcGxlX3NlbGVjdG9yOgogICAgIHwgbmFtZXNwYWNlX3Nl
bGVjdG9yIGVsZW1lbnRfbmFtZSBzcGVjaWZpZXJfbGlzdCB7CiAgICAgICAgICQkID0gJDM7CiAg
ICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhF
bGVtZW50TmFtZSgkMSwgJDIsICQkKTsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT51cGRhdGVT
cGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKCQxLCAkMiwgJCQpOwogICAgIH0KICAgICB8IG5hbWVz
cGFjZV9zZWxlY3RvciBzcGVjaWZpZXJfbGlzdCB7CiAgICAgICAgICQkID0gJDI7CiAgICAgICAg
IGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50
TmFtZSgkMSwgc3RhckF0b20sICQkKTsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT51cGRhdGVT
cGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKCQxLCBzdGFyQXRvbSwgJCQpOwogICAgIH0KICAgOwog
CkBAIC0xMzU1LDYgKzEzNjAsMTkgQEAgcHNldWRvOgogICAgICAgICAgICAgJCQgPSAwOwogICAg
IH0KICNlbmRpZgorI2lmIEVOQUJMRV9TSEFET1dfRE9NCisgICAgfCAnOicgJzonIERJU1RSSUJV
VEVERlVOQ1RJT04gbWF5YmVfc3BhY2Ugc2VsZWN0b3IgbWF5YmVfc3BhY2UgJyknIHsKKyAgICAg
ICAgaWYgKCEkNSkKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAgICAg
JCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50KTsKKyAgICAgICAgICAgICQk
LT5zZXRGdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IoJDUpOworICAgICAgICAgICAgJDMubG93ZXIo
KTsKKyAgICAgICAgICAgICQkLT5zZXRWYWx1ZSgkMyk7CisgICAgICAgIH0KKyAgICB9CisjZW5k
aWYKICAgICAvLyB1c2UgYnkgOi13ZWJraXQtYW55LgogICAgIC8vIEZJWE1FOiBzaG91bGQgd2Ug
c3VwcG9ydCBnZW5lcmljIHNlbGVjdG9ycyBoZXJlIG9yIGp1c3Qgc2ltcGxlX3NlbGVjdG9ycz8K
ICAgICAvLyBVc2Ugc2ltcGxlX3NlbGVjdG9yX2xpc3QgZm9yIG5vdyB0byBtYXRjaCAtbW96LWFu
eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggZGI5NGNkNzc2MGM2ZTQ3MmQ2OTI3Nzcy
NjE4YmQzNmE2YTgwODUzYS4uNDU2ZWZlZjA4ZDY2ZDBjNmM2M2RhYmIyMDQ3OTQ1OTY3MzI5YWY5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTk1MDEsNiArOTUwMSw4IEBAIGlubGlu
ZSB2b2lkIENTU1BhcnNlcjo6ZGV0ZWN0RnVuY3Rpb25UeXBlVG9rZW4oaW50IGxlbmd0aCkKICAg
ICBjYXNlIDExOgogICAgICAgICBpZiAoaXNFcXVhbFRvQ1NTSWRlbnRpZmllcihuYW1lLCAibnRo
LW9mLXR5cGUiKSkKICAgICAgICAgICAgIG1fcGFyc2luZ01vZGUgPSBOdGhDaGlsZE1vZGU7Cisg
ICAgICAgIGVsc2UgaWYgKGlzRXF1YWxUb0NTU0lkZW50aWZpZXIobmFtZSwgImRpc3RyaWJ1dGVk
IikpCisgICAgICAgICAgICBtX3Rva2VuID0gRElTVFJJQlVURURGVU5DVElPTjsKICAgICAgICAg
cmV0dXJuOwogCiAgICAgY2FzZSAxNDoKQEAgLTEwNjAzLDE2ICsxMDYwNSwyOSBAQCBRdWFsaWZp
ZWROYW1lIENTU1BhcnNlcjo6ZGV0ZXJtaW5lTmFtZUluTmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0
cmluZyYgcHJlZml4LCBjbwogICAgIHJldHVybiBRdWFsaWZpZWROYW1lKHByZWZpeCwgbG9jYWxO
YW1lLCBtX3N0eWxlU2hlZXQtPmRldGVybWluZU5hbWVzcGFjZShwcmVmaXgpKTsKIH0KIAotdm9p
ZCBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lc3BhY2VQcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudE5hbWUs
IENTU1BhcnNlclNlbGVjdG9yKiBzcGVjaWZpZXJzKQorQ1NTUGFyc2VyU2VsZWN0b3IqIENTU1Bh
cnNlcjo6dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWVzcGFjZVByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50TmFtZSwgQ1NTUGFy
c2VyU2VsZWN0b3IqIHNwZWNpZmllcnMpCiB7CiAgICAgQXRvbWljU3RyaW5nIGRldGVybWluZWRO
YW1lc3BhY2UgPSBuYW1lc3BhY2VQcmVmaXggIT0gbnVsbEF0b20gJiYgbV9zdHlsZVNoZWV0ID8g
bV9zdHlsZVNoZWV0LT5kZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNwYWNlUHJlZml4KSA6IG1fZGVm
YXVsdE5hbWVzcGFjZTsKICAgICBRdWFsaWZpZWROYW1lIHRhZyA9IFF1YWxpZmllZE5hbWUobmFt
ZXNwYWNlUHJlZml4LCBlbGVtZW50TmFtZSwgZGV0ZXJtaW5lZE5hbWVzcGFjZSk7Ci0gICAgaWYg
KCFzcGVjaWZpZXJzLT5pc0N1c3RvbVBzZXVkb0VsZW1lbnQoKSkgeworICAgIGlmICghc3BlY2lm
aWVycy0+aXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkgJiYgIXNwZWNpZmllcnMtPmlzUHNldWRvRGlz
dHJpYnV0ZWRFbGVtZW50KCkpIHsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgICAgIGlm
ICghKHNwZWNpZmllcnMtPnBzZXVkb1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ3VlKSkK
ICNlbmRpZgogICAgICAgICAgICAgc3BlY2lmaWVycy0+c2V0VGFnKHRhZyk7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIHNwZWNpZmllcnM7CisgICAgfQorCisgICAgaWYgKHNwZWNp
ZmllcnMtPmlzUHNldWRvRGlzdHJpYnV0ZWRFbGVtZW50KCkpIHsKKyAgICAgICAgQ1NTUGFyc2Vy
U2VsZWN0b3IqIGFyZ3VtZW50U2VsZWN0b3IgPSBzcGVjaWZpZXJzLT5mdW5jdGlvbkFyZ3VtZW50
U2VsZWN0b3IoKTsKKyAgICAgICAgQVNTRVJUKGFyZ3VtZW50U2VsZWN0b3IpOworICAgICAgICBD
U1NQYXJzZXJTZWxlY3RvciogZW5kID0gYXJndW1lbnRTZWxlY3RvcjsKKyAgICAgICAgd2hpbGUg
KGVuZC0+dGFnSGlzdG9yeSgpKQorICAgICAgICAgICAgZW5kID0gZW5kLT50YWdIaXN0b3J5KCk7
CisgICAgICAgIE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gZWxlbWVudE5hbWVTZWxlY3RvciA9
IGFkb3B0UHRyKG5ldyBDU1NQYXJzZXJTZWxlY3Rvcik7CisgICAgICAgIGVsZW1lbnROYW1lU2Vs
ZWN0b3ItPnNldFRhZyh0YWcpOworICAgICAgICBlbmQtPnNldFRhZ0hpc3RvcnkoZWxlbWVudE5h
bWVTZWxlY3Rvci5yZWxlYXNlKCkpOworICAgICAgICBlbmQtPnNldFJlbGF0aW9uKENTU1NlbGVj
dG9yOjpTaGFkb3dEaXN0cmlidXRlZCk7CisgICAgICAgIHJldHVybiBhcmd1bWVudFNlbGVjdG9y
OwogICAgIH0KIAogICAgIENTU1BhcnNlclNlbGVjdG9yKiBsYXN0U2hhZG93RGVzY2VuZGFudCA9
IHNwZWNpZmllcnM7CkBAIC0xMDYyNSw3ICsxMDY0MCw3IEBAIHZvaWQgQ1NTUGFyc2VyOjp1cGRh
dGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNl
UHJlCiAKICAgICBpZiAobGFzdFNoYWRvd0Rlc2NlbmRhbnQtPnRhZ0hpc3RvcnkoKSkgewogICAg
ICAgICBsYXN0U2hhZG93RGVzY2VuZGFudC0+dGFnSGlzdG9yeSgpLT5zZXRUYWcodGFnKTsKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gc3BlY2lmaWVyczsKICAgICB9CiAKICAgICAv
LyBGb3Igc2hhZG93LUlEIHBzZXVkby1lbGVtZW50cyB0byBiZSBjb3JyZWN0bHkgbWF0Y2hlZCwg
dGhlIFNoYWRvd0Rlc2NlbmRhbnQgY29tYmluYXRvciBoYXMgdG8gYmUgdXNlZC4KQEAgLTEwNjM0
LDYgKzEwNjQ5LDcgQEAgdm9pZCBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVu
dE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VQcmUKICAgICBlbGVtZW50TmFtZVNl
bGVjdG9yLT5zZXRUYWcodGFnKTsKICAgICBsYXN0U2hhZG93RGVzY2VuZGFudC0+c2V0VGFnSGlz
dG9yeShlbGVtZW50TmFtZVNlbGVjdG9yLnJlbGVhc2UoKSk7CiAgICAgbGFzdFNoYWRvd0Rlc2Nl
bmRhbnQtPnNldFJlbGF0aW9uKENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50KTsKKyAgICBy
ZXR1cm4gc3BlY2lmaWVyczsKIH0KIAogQ1NTUGFyc2VyU2VsZWN0b3IqIENTU1BhcnNlcjo6dXBk
YXRlU3BlY2lmaWVycyhDU1NQYXJzZXJTZWxlY3Rvciogc3BlY2lmaWVycywgQ1NTUGFyc2VyU2Vs
ZWN0b3IqIG5ld1NwZWNpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCAzOTJmZjk4NDBj
NWE2YzgzOWMyZjIxNDQzN2FiNzU4NGJiNzI1YTlkLi5lMWE0ZTJmNzUyMWRlYjNhNGNlMmMwMzBh
NTE4NjVjZjE1ZjJiMGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0zMDksNyArMzA5LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBhZGROYW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBw
cmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgdXJpKTsKICAgICBRdWFsaWZpZWROYW1lIGRldGVy
bWluZU5hbWVJbk5hbWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRv
bWljU3RyaW5nJiBsb2NhbE5hbWUpOwotICAgIHZvaWQgdXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVt
ZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVByZWZpeCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBlbGVtZW50TmFtZSwgQ1NTUGFyc2VyU2VsZWN0b3IqKTsKKyAgICBDU1NQYXJzZXJT
ZWxlY3RvciogdXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWVzcGFjZVByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50TmFtZSwgQ1NT
UGFyc2VyU2VsZWN0b3IqKTsKICAgICBDU1NQYXJzZXJTZWxlY3RvciogdXBkYXRlU3BlY2lmaWVy
cyhDU1NQYXJzZXJTZWxlY3RvciosIENTU1BhcnNlclNlbGVjdG9yKik7CiAKICAgICB2b2lkIGlu
dmFsaWRCbG9ja0hpdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
clZhbHVlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcAppbmRl
eCBkMjNiODU4NWQ1ZDdiYjhlYjBmMjY4MjM0YjZlZDA2YTU4ODFkZjI3Li41MDBkN2IxNDAwNGEy
NGViYzM1M2QyYmZlZWMxNzMzNjMwYTQzNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
VmFsdWVzLmNwcApAQCAtMTQ2LDYgKzE0Niw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1Bh
cnNlclZhbHVlOjpjcmVhdGVDU1NWYWx1ZSgpCiAKIENTU1BhcnNlclNlbGVjdG9yOjpDU1NQYXJz
ZXJTZWxlY3RvcigpCiAgICAgOiBtX3NlbGVjdG9yKGFkb3B0UHRyKGZhc3ROZXc8Q1NTU2VsZWN0
b3I+KCkpKQorICAgICwgbV9mdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IoMCkKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCmluZGV4IDEzMDFiMWNlMGUxMTM3MjNjY2Y4MjE2
MjhlZTA1ZTJlMzEwMjM2N2IuLjJkYjA0YzQ2NDhlMDlhNjA4ZmU3OTRjZGNiNjFmYWVlZjIzMjEz
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKQEAgLTE4Niw4ICsxODYsMTIg
QEAgcHVibGljOgogCiAgICAgdm9pZCBhZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8
Q1NTUGFyc2VyU2VsZWN0b3I+ID4mIHNlbGVjdG9yVmVjdG9yKTsKIAorICAgIENTU1BhcnNlclNl
bGVjdG9yKiBmdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0
aW9uQXJndW1lbnRTZWxlY3RvcjsgfQorICAgIHZvaWQgc2V0RnVuY3Rpb25Bcmd1bWVudFNlbGVj
dG9yKENTU1BhcnNlclNlbGVjdG9yKiBzZWxlY3RvcikgeyBtX2Z1bmN0aW9uQXJndW1lbnRTZWxl
Y3RvciA9IHNlbGVjdG9yOyB9CisKICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSBwc2V1ZG9U
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvci0+cHNldWRvVHlwZSgpOyB9CiAgICAgYm9v
bCBpc0N1c3RvbVBzZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yLT5pc0N1
c3RvbVBzZXVkb0VsZW1lbnQoKTsgfQorICAgIGJvb2wgaXNQc2V1ZG9EaXN0cmlidXRlZEVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yLT5pc0Rpc3RyaWJ1dGVkUHNldWRvRWxlbWVu
dCgpOyB9CiAKICAgICBib29sIGlzU2ltcGxlKCkgY29uc3QgeyByZXR1cm4gIW1fdGFnSGlzdG9y
eSAmJiBtX3NlbGVjdG9yLT5pc1NpbXBsZSgpOyB9CiAgICAgYm9vbCBoYXNTaGFkb3dEZXNjZW5k
YW50KCkgY29uc3Q7CkBAIC0yMDAsNiArMjA0LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBP
d25QdHI8Q1NTU2VsZWN0b3I+IG1fc2VsZWN0b3I7CiAgICAgT3duUHRyPENTU1BhcnNlclNlbGVj
dG9yPiBtX3RhZ0hpc3Rvcnk7CisKKyAgICBDU1NQYXJzZXJTZWxlY3RvciogbV9mdW5jdGlvbkFy
Z3VtZW50U2VsZWN0b3I7CiB9OwogCiBpbmxpbmUgYm9vbCBDU1NQYXJzZXJTZWxlY3Rvcjo6aGFz
U2hhZG93RGVzY2VuZGFudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRl
eCA1YTZlY2NhZmI5NDJjMGQ2ZmE3M2E2MmI2ZmZjNzQyMWYzY2FhOWVjLi4yZGMxZGYzODExM2M3
NTgzMWY0ZDdmYzdhMjMzNDRhZDRiN2U3MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5j
cHAKQEAgLTEzOSw2ICsxMzksOCBAQCBQc2V1ZG9JZCBDU1NTZWxlY3Rvcjo6cHNldWRvSWQoUHNl
dWRvVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gQkVGT1JFOwogICAgIGNhc2UgUHNldWRvQWZ0
ZXI6CiAgICAgICAgIHJldHVybiBBRlRFUjsKKyAgICBjYXNlIFBzZXVkb0Rpc3RyaWJ1dGVkOgor
ICAgICAgICByZXR1cm4gRElTVFJJQlVURUQ7CiAgICAgY2FzZSBQc2V1ZG9TY3JvbGxiYXI6CiAg
ICAgICAgIHJldHVybiBTQ1JPTExCQVI7CiAgICAgY2FzZSBQc2V1ZG9TY3JvbGxiYXJCdXR0b246
CkBAIC0yNjEsNiArMjYzLDcgQEAgc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENT
U1NlbGVjdG9yOjpQc2V1ZG9UeXBlPiogbmFtZVRvUHNldWRvVHlwZU1hcCgKICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmlyc3RMaW5lLCAoImZpcnN0LWxpbmUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIGZpcnN0T2ZUeXBlLCAoImZpcnN0LW9mLXR5cGUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIGZ1bGxQYWdlTWVkaWEsICgiLXdlYmtpdC1mdWxsLXBhZ2UtbWVkaWEiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIGRpc3RyaWJ1dGVkLCAoImRpc3RyaWJ1dGVkKCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgbnRoQ2hpbGQsICgibnRoLWNoaWxkKCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbnRo
T2ZUeXBlLCAoIm50aC1vZi10eXBlKCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbnRoTGFzdENoaWxk
LCAoIm50aC1sYXN0LWNoaWxkKCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKQEAgLTM0Myw2ICszNDYsNyBAQCBzdGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwg
Q1NTU2VsZWN0b3I6OlBzZXVkb1R5cGU+KiBuYW1lVG9Qc2V1ZG9UeXBlTWFwKAogICAgICAgICBu
YW1lVG9Qc2V1ZG9UeXBlLT5zZXQoZnVsbFBhZ2VNZWRpYS5pbXBsKCksIENTU1NlbGVjdG9yOjpQ
c2V1ZG9GdWxsUGFnZU1lZGlhKTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGxhc3RD
aGlsZC5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9MYXN0Q2hpbGQpOwogICAgICAgICBuYW1l
VG9Qc2V1ZG9UeXBlLT5zZXQobGFzdE9mVHlwZS5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9M
YXN0T2ZUeXBlKTsKKyAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGRpc3RyaWJ1dGVkLmlt
cGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Rpc3RyaWJ1dGVkKTsKICAgICAgICAgbmFtZVRvUHNl
dWRvVHlwZS0+c2V0KG9ubHlDaGlsZC5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9Pbmx5Q2hp
bGQpOwogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQob25seU9mVHlwZS5pbXBsKCksIENT
U1NlbGVjdG9yOjpQc2V1ZG9Pbmx5T2ZUeXBlKTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+
c2V0KGZpcnN0TGV0dGVyLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZpcnN0TGV0dGVyKTsK
QEAgLTQ0OCw2ICs0NTIsNyBAQCB2b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSgp
IGNvbnN0CiAgICAgY2FzZSBQc2V1ZG9GaXJzdExldHRlcjoKICAgICBjYXNlIFBzZXVkb0ZpcnN0
TGluZToKICAgICAgICAgY29tcGF0ID0gdHJ1ZTsKKyAgICBjYXNlIFBzZXVkb0Rpc3RyaWJ1dGVk
OgogICAgIGNhc2UgUHNldWRvUmVzaXplcjoKICAgICBjYXNlIFBzZXVkb1Njcm9sbGJhcjoKICAg
ICBjYXNlIFBzZXVkb1Njcm9sbGJhckNvcm5lcjoKQEAgLTY4NCw2ICs2ODksOCBAQCBTdHJpbmcg
Q1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2hhZG93RGVzY2VuZGFudDoK
ICAgICAgICAgICAgIHJldHVybiB0YWdIaXN0b3J5VGV4dCArIHN0ci50b1N0cmluZygpOworICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEaXN0cmlidXRlZDoKKyAgICAgICAgICAgIHJl
dHVybiB0YWdIaXN0b3J5VGV4dCArICI6OmRpc3RyaWJ1dGVkKCIgKyBzdHIudG9TdHJpbmcoKSAr
ICIpIjsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCAw
NjQ5OGY0ZWM3ODEyYzY2OWE1NjcyMzVlNTVhOTllNDU4ZmRhMjUyLi5mYTY4M2VmYTExOWJkZTI3
ZTczOTM3MTE4OGZlYzY1YTVjMTNjYzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApAQCAt
NzYsNyArNzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBEaXJlY3RBZGph
Y2VudCwKICAgICAgICAgICAgIEluZGlyZWN0QWRqYWNlbnQsCiAgICAgICAgICAgICBTdWJTZWxl
Y3RvciwKLSAgICAgICAgICAgIFNoYWRvd0Rlc2NlbmRhbnQKKyAgICAgICAgICAgIFNoYWRvd0Rl
c2NlbmRhbnQsCisgICAgICAgICAgICBTaGFkb3dEaXN0cmlidXRlZCwKICAgICAgICAgfTsKIAog
ICAgICAgICBlbnVtIFBzZXVkb1R5cGUgewpAQCAtMTE5LDYgKzEyMCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgICAgIFBzZXVkb1RhcmdldCwKICAgICAgICAgICAgIFBzZXVkb0Jl
Zm9yZSwKICAgICAgICAgICAgIFBzZXVkb0FmdGVyLAorICAgICAgICAgICAgUHNldWRvRGlzdHJp
YnV0ZWQsCiAgICAgICAgICAgICBQc2V1ZG9MYW5nLAogICAgICAgICAgICAgUHNldWRvTm90LAog
ICAgICAgICAgICAgUHNldWRvUmVzaXplciwKQEAgLTIyMSw4ICsyMjMsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBib29sIG1hdGNoZXNQc2V1ZG9FbGVtZW50KCkgY29uc3Q7CiAg
ICAgICAgIGJvb2wgaXNVbmtub3duUHNldWRvRWxlbWVudCgpIGNvbnN0OwogICAgICAgICBib29s
IGlzQ3VzdG9tUHNldWRvRWxlbWVudCgpIGNvbnN0OworICAgICAgICBib29sIGlzRGlzdHJpYnV0
ZWRQc2V1ZG9FbGVtZW50KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNTaWJsaW5nU2VsZWN0b3Io
KSBjb25zdDsKICAgICAgICAgYm9vbCBpc0F0dHJpYnV0ZVNlbGVjdG9yKCkgY29uc3Q7CisgICAg
ICAgIGJvb2wgaXNTaGFkb3dEaXN0cmlidXRlZCgpIGNvbnN0OwogCiAgICAgICAgIFJlbGF0aW9u
IHJlbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVsYXRpb24+KG1fcmVsYXRp
b24pOyB9CiAKQEAgLTMwNiw2ICszMTAsMTIgQEAgaW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6Omlz
Q3VzdG9tUHNldWRvRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbWF0Y2ggPT0gUHNldWRv
RWxlbWVudCAmJiAobV9wc2V1ZG9UeXBlID09IFBzZXVkb1VzZXJBZ2VudEN1c3RvbUVsZW1lbnQg
fHwgbV9wc2V1ZG9UeXBlID09IFBzZXVkb1dlYktpdEN1c3RvbUVsZW1lbnQpOwogfQogCitpbmxp
bmUgYm9vbCBDU1NTZWxlY3Rvcjo6aXNEaXN0cmlidXRlZFBzZXVkb0VsZW1lbnQoKSBjb25zdAor
eworICAgIHJldHVybiBtX21hdGNoID09IFBzZXVkb0VsZW1lbnQgJiYgcHNldWRvVHlwZSgpID09
IFBzZXVkb0Rpc3RyaWJ1dGVkOworCit9CisKIGlubGluZSBib29sIENTU1NlbGVjdG9yOjppc1Np
YmxpbmdTZWxlY3RvcigpIGNvbnN0CiB7CiAgICAgUHNldWRvVHlwZSB0eXBlID0gcHNldWRvVHlw
ZSgpOwpAQCAtMzM1LDYgKzM0NSwxMSBAQCBpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6aXNBdHRy
aWJ1dGVTZWxlY3RvcigpIGNvbnN0CiAgICAgICAgIHx8IG1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6
OkVuZDsKIH0KIAoraW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6OmlzU2hhZG93RGlzdHJpYnV0ZWQo
KSBjb25zdAoreworICAgIHJldHVybiBtX3JlbGF0aW9uID09IENTU1NlbGVjdG9yOjpTaGFkb3dE
aXN0cmlidXRlZDsKK30KKwogaW5saW5lIHZvaWQgQ1NTU2VsZWN0b3I6OnNldFZhbHVlKGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgLy8gTmVlZCB0byBkbyByZWYgY291bnRpbmcg
bWFudWFsbHkgZm9yIHRoZSB1bmlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5j
cHAKaW5kZXggNDMxMzZkMWM5MDFjNjM0MWJhY2JlZjgzOTQ5ZGY5NGU2MGYxYzM2Yy4uYTA3NmZj
Mzc2OTIxNzQ2NzRhNzA2MTc0ODliZDk3NjJlZjA2N2NiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yTGlzdC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDU1NTZWxlY3Rv
ckxpc3QuaCIKIAogI2luY2x1ZGUgIkNTU1BhcnNlclZhbHVlcy5oIgorI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTIxMSw2ICsyMTIsMjEgQEAgYm9v
bCBDU1NTZWxlY3Rvckxpc3Q6Omhhc0ludmFsaWRTZWxlY3RvcigpIGNvbnN0CiAgICAgcmV0dXJu
IGZvckVhY2hTZWxlY3RvcihmdW5jdG9yLCB0aGlzKTsKIH0KIAorI2lmIEVOQUJMRShTSEFET1df
RE9NKQorY2xhc3MgU2VsZWN0b3JIYXNTaGFkb3dEaXN0cmlidXRlZCB7CitwdWJsaWM6CisgICAg
Ym9vbCBvcGVyYXRvcigpKENTU1NlbGVjdG9yKiBzZWxlY3RvcikKKyAgICB7CisgICAgICAgIHJl
dHVybiBzZWxlY3Rvci0+aXNTaGFkb3dEaXN0cmlidXRlZCgpOworICAgIH0KK307CisKK2Jvb2wg
Q1NTU2VsZWN0b3JMaXN0OjpoYXNTaGFkb3dEaXN0cmlidXRlZEF0KHNpemVfdCBpbmRleCkgY29u
c3QKK3sKKyAgICBTZWxlY3Rvckhhc1NoYWRvd0Rpc3RyaWJ1dGVkIGZ1bmN0b3I7CisgICAgcmV0
dXJuIGZvckVhY2hUYWdTZWxlY3RvcihmdW5jdG9yLCBzZWxlY3RvckF0KGluZGV4KSk7Cit9CiAK
KyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3JMaXN0LmgKaW5kZXggNGZjZmVlMmZhYTQxODJkN2E5YWIwNTViY2NlNTE5ZmU3NGUyMjcxNS4u
NGU3YjU4MmRiYzUxMThhNDVlNDZkYmJmMGNkODk0YTlmNzQzZjZiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTZWxlY3Rvckxpc3QuaApAQCAtNjAsNiArNjAsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
c2VsZWN0b3JzTmVlZE5hbWVzcGFjZVJlc29sdXRpb24oKTsKICAgICBib29sIGhhc0ludmFsaWRT
ZWxlY3RvcigpIGNvbnN0OwogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgYm9vbCBoYXNT
aGFkb3dEaXN0cmlidXRlZEF0KHNpemVfdCBpbmRleCkgY29uc3Q7CisjZW5kaWYKKwogICAgIFN0
cmluZyBzZWxlY3RvcnNUZXh0KCkgY29uc3Q7CiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9SdWxlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAppbmRleCBkODQw
MDRkOWNjYzE0ODQzZTRiNDBhNmJkNjJhYzcyYThkZmIyMmViLi5mMjQ5YWU5NjFkY2Q0ODQxMDA3
MzNhNGEwODdiMTBhY2YwOGZjNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVs
ZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCkBAIC0yODgsNyAr
Mjg4LDcgQEAgdm9pZCBSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVu
dHMqIHNoZWV0LCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHUKIAogICAgICAgICBBU1NFUlQoIXJ1bGUt
PmlzSW1wb3J0UnVsZSgpKTsKICAgICAgICAgaWYgKHJ1bGUtPmlzU3R5bGVSdWxlKCkpCi0gICAg
ICAgICAgICBhZGRTdHlsZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlKj4ocnVsZSksIGFkZFJ1
bGVGbGFncyk7CisgICAgICAgICAgICByZXNvbHZlci0+YWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0
PFN0eWxlUnVsZSo+KHJ1bGUpLCBjb25zdF9jYXN0PENvbnRhaW5lck5vZGUqPihzY29wZSksIHRo
aXMsIGFkZFJ1bGVGbGFncyk7CiAgICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlzUGFnZVJ1bGUoKSkK
ICAgICAgICAgICAgIGFkZFBhZ2VSdWxlKHN0YXRpY19jYXN0PFN0eWxlUnVsZVBhZ2UqPihydWxl
KSk7CiAgICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlzTWVkaWFSdWxlKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggY2E3M2FhNGYyNjY2ZjdlZThiNmM1ODIxNGY3
MmQxNGU4OWRmN2E4My4uOTEzMmMzOWRiYjA0NGIwOGFjMTkzZWE0MzVkOTY2MzNiYjQzZTJlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAK
ICNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxQcm9ncmVzc0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCisjaW5jbHVkZSAiSW5zZXJ0
aW9uUG9pbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNs
dWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0yODEsOCArMjgy
LDEzIEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNo
ZWNrU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVjCiAKICAgICAvLyBQcmVwYXJlIG5leHQgc2Vs
ZWN0b3IKICAgICBDU1NTZWxlY3RvciogaGlzdG9yeVNlbGVjdG9yID0gY29udGV4dC5zZWxlY3Rv
ci0+dGFnSGlzdG9yeSgpOwotICAgIGlmICghaGlzdG9yeVNlbGVjdG9yKQorICAgIGlmICghaGlz
dG9yeVNlbGVjdG9yKSB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgIGlmIChjb250
ZXh0LnNjb3BlT2ZMYXN0RWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmVsZW1l
bnQtPmlzRGVzY2VuZGFudE9mKGNvbnRleHQuc2NvcGVPZkxhc3RFbGVtZW50KSA/IFNlbGVjdG9y
TWF0Y2hlcyA6IFNlbGVjdG9yRmFpbHNMb2NhbGx5OworI2VuZGlmCiAgICAgICAgIHJldHVybiBT
ZWxlY3Rvck1hdGNoZXM7CisgICAgfQogCiAgICAgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQgbmV4
dENvbnRleHQoY29udGV4dCk7CiAgICAgbmV4dENvbnRleHQuc2VsZWN0b3IgPSBoaXN0b3J5U2Vs
ZWN0b3I7CkBAIC0zODQsNiArMzkwLDI1IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRj
aCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVjCiAgICAg
ICAgICAgICBuZXh0Q29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgPSAwOwogICAgICAgICAgICAg
cmV0dXJuIGNoZWNrU2VsZWN0b3IobmV4dENvbnRleHQsIGlnbm9yZUR5bmFtaWNQc2V1ZG8pOwog
ICAgICAgICB9CisKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEaXN0cmlidXRlZDoKKyAg
ICAgICAgeworICAgICAgICAgICAgVmVjdG9yPEluc2VydGlvblBvaW50KiwgOD4gaW5zZXJ0aW9u
UG9pbnRzOworICAgICAgICAgICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0gY29udGV4dC5lbGVt
ZW50OyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CisgICAg
ICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnRzLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY29s
bGVjdEFsbE1pZHBvaW50SW5zZXJ0aW9uUG9pbnRzKGVsZW1lbnQsIGluc2VydGlvblBvaW50cyk7
CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnNlcnRpb25Qb2ludHMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV4dENvbnRleHQuZWxlbWVudCA9
IGluc2VydGlvblBvaW50c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgbmV4dENvbnRleHQuaXNT
dWJTZWxlY3RvciA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBuZXh0Q29udGV4dC5lbGVt
ZW50U3R5bGUgPSAwOworICAgICAgICAgICAgICAgICAgICBuZXh0Q29udGV4dC5lbGVtZW50UGFy
ZW50U3R5bGUgPSAwOworICAgICAgICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0g
Y2hlY2tTZWxlY3RvcihuZXh0Q29udGV4dCwgaWdub3JlRHluYW1pY1BzZXVkbyk7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChtYXRjaCA9PSBTZWxlY3Rvck1hdGNoZXMgfHwgbWF0Y2ggPT0gU2Vs
ZWN0b3JGYWlsc0NvbXBsZXRlbHkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0
Y2g7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu
IFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OworICAgICAgICB9CiAgICAgfQogCiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXggMzMx
OTNmNzZiYzMyODI2YWQwZDNlZTYxNDUxNWI5YmFjNWQyNTIwYi4uZDk2NmQyZTU3ZDg1ZjQwNDU2
ZDAxYTY2YWMyMjBiMTc0ODgyMGM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
aApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAsIGlzU3ViU2VsZWN0b3Io
ZmFsc2UpCiAgICAgICAgICAgICAsIGhhc1Njcm9sbGJhclBzZXVkbyhmYWxzZSkKICAgICAgICAg
ICAgICwgaGFzU2VsZWN0aW9uUHNldWRvKGZhbHNlKQorICAgICAgICAgICAgLCBzY29wZU9mTGFz
dEVsZW1lbnQoMCkKICAgICAgICAgeyB9CiAKICAgICAgICAgQ1NTU2VsZWN0b3IqIHNlbGVjdG9y
OwpAQCAtNzUsNiArNzYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXNTdWJTZWxlY3RvcjsK
ICAgICAgICAgYm9vbCBoYXNTY3JvbGxiYXJQc2V1ZG87CiAgICAgICAgIGJvb2wgaGFzU2VsZWN0
aW9uUHNldWRvOworICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZU9mTGFzdEVsZW1l
bnQ7CiAgICAgfTsKIAogICAgIGJvb2wgY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1l
bnQqLCBib29sIGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yID0gZmFsc2UpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAKaW5kZXggY2VhYTc2ODE0OTAwYzBiMzFkMzk0YzRm
MjZjYzRjYmI1ZTM1ZThkYy4uM2I0ZDY0MDRiN2M3Y2YxZjliNDRlYzM1ZjRhOWE0OWQzNzM4OWZk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwCkBAIC0xNDgsNiArMTQ4LDcg
QEAgdm9pZCBTZWxlY3RvckZpbHRlcjo6Y29sbGVjdElkZW50aWZpZXJIYXNoZXMoY29uc3QgQ1NT
U2VsZWN0b3IqIHNlbGVjdG9yLCB1bnNpZ24KICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RGly
ZWN0QWRqYWNlbnQ6CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkluZGlyZWN0QWRqYWNlbnQ6
CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rlc2NlbmRhbnQ6CisgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rpc3RyaWJ1dGVkOgogICAgICAgICAgICAgc2tpcE92ZXJT
dWJzZWxlY3RvcnMgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OkRlc2NlbmRhbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5k
ZXggMDk4ZTBkNTdjMGI3ZTFkNzRlZDE1MDhmN2U5MDBkNTE2YzJlOTcwZC4uZjUxY2ZmYjJlMDRh
ZTg4N2I3ZWQ0MGU5MGY5OTVkZmYxMjQwNjZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcApAQCAtMzY0LDYgKzM2NCw5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6cmVzZXRBdXRo
b3JTdHlsZSgpCiB7CiAgICAgbV9hdXRob3JTdHlsZSA9IFJ1bGVTZXQ6OmNyZWF0ZSgpOwogICAg
IG1fYXV0aG9yU3R5bGUtPmRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKTsKKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKKyAgICBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5jbGVhcigpOworI2Vu
ZGlmCiB9CiAKIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwZW5kQXV0aG9yU3R5bGVTaGVldHModW5z
aWduZWQgZmlyc3ROZXcsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgc3R5
bGVTaGVldHMpCkBAIC00NDgsNiArNDUxLDMyIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkS2V5
ZnJhbWVTdHlsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gcnVsZSkKICAgICBtX2tl
eWZyYW1lc1J1bGVNYXAuc2V0KHMuaW1wbCgpLCBydWxlKTsKIH0KIAordm9pZCBTdHlsZVJlc29s
dmVyOjphZGRTdHlsZVJ1bGUoU3R5bGVSdWxlKiBydWxlLCBDb250YWluZXJOb2RlKiBzY29wZSwg
UnVsZVNldCogcnVsZVNldCwgQWRkUnVsZUZsYWdzIGFkZFJ1bGVGbGFncykKK3sKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKKyAgICBpZiAoIXNjb3BlKSB7CisgICAgICAgIHJ1bGVTZXQtPmFkZFN0
eWxlUnVsZShydWxlLCBhZGRSdWxlRmxhZ3MpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0ID0gcnVsZS0+c2VsZWN0b3JMaXN0
KCk7CisgICAgZm9yIChzaXplX3Qgc2VsZWN0b3JJbmRleCA9IDA7IHNlbGVjdG9ySW5kZXggIT0g
bm90Rm91bmQ7IHNlbGVjdG9ySW5kZXggPSBzZWxlY3Rvckxpc3QuaW5kZXhPZk5leHRTZWxlY3Rv
ckFmdGVyKHNlbGVjdG9ySW5kZXgpKSB7CisgICAgICAgIGlmIChzZWxlY3Rvckxpc3QuaGFzU2hh
ZG93RGlzdHJpYnV0ZWRBdChzZWxlY3RvckluZGV4KSkgeworICAgICAgICAgICAgaWYgKG1fc2hh
ZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLmNvbnRhaW5zKHNjb3BlKSkKKyAgICAgICAgICAgICAg
ICBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5nZXQoc2NvcGUpLT5hZGRSdWxlKHJ1bGUs
IHNlbGVjdG9ySW5kZXgsIGFkZFJ1bGVGbGFncyk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBPd25QdHI8UnVsZVNldD4gcnVsZVNldEZvclNjb3BlID0gYWRvcHRQdHIobmV3
IFJ1bGVTZXQoKSk7CisgICAgICAgICAgICAgICAgcnVsZVNldEZvclNjb3BlLT5hZGRSdWxlKHJ1
bGUsIHNlbGVjdG9ySW5kZXgsIGFkZFJ1bGVGbGFncyk7CisgICAgICAgICAgICAgICAgbV9zaGFk
b3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAuYWRkKHNjb3BlLCBydWxlU2V0Rm9yU2NvcGUucmVsZWFz
ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBydWxlU2V0
LT5hZGRSdWxlKHJ1bGUsIHNlbGVjdG9ySW5kZXgsIGFkZFJ1bGVGbGFncyk7CisgICAgfQorI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0oc2NvcGUpOworICAgIHJ1bGVTZXQtPmFkZFN0eWxlUnVsZShy
dWxlLCBhZGRSdWxlRmxhZ3MpOworI2VuZGlmCit9CisKIFN0eWxlUmVzb2x2ZXI6On5TdHlsZVJl
c29sdmVyKCkKIHsKICAgICBtX2ZvbnRTZWxlY3Rvci0+Y2xlYXJEb2N1bWVudCgpOwpAQCAtNjY0
LDcgKzY5Myw4IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMoUnVs
ZVNldCogcnVsZXMsIGludCYgZmlyc3RSdWxlSW5kZXgsIGluCiAgICAgVHJlZVNjb3BlKiB0cmVl
U2NvcGUgPSBtX2VsZW1lbnQtPnRyZWVTY29wZSgpOwogICAgIGlmICghTWF0Y2hpbmdVQVJ1bGVz
U2NvcGU6OmlzTWF0Y2hpbmdVQVJ1bGVzKCkKICAgICAgICAgJiYgIXRyZWVTY29wZS0+YXBwbHlB
dXRob3JTdHlsZXMoKQotICAgICAgICAmJiAoIW9wdGlvbnMuc2NvcGUgfHwgb3B0aW9ucy5zY29w
ZS0+dHJlZVNjb3BlKCkgIT0gdHJlZVNjb3BlKSkKKyAgICAgICAgJiYgKCFvcHRpb25zLnNjb3Bl
IHx8IG9wdGlvbnMuc2NvcGUtPnRyZWVTY29wZSgpICE9IHRyZWVTY29wZSkKKyAgICAgICAgJiYg
IW9wdGlvbnMuc2NvcGVPZkxhc3RFbGVtZW50KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBX
ZSBuZWVkIHRvIGNvbGxlY3QgdGhlIHJ1bGVzIGZvciBpZCwgY2xhc3MsIHRhZywgYW5kIGV2ZXJ5
dGhpbmcgZWxzZSBpbnRvIGEgYnVmZmVyIGFuZApAQCAtNzk5LDYgKzgyOSwxNyBAQCB2b2lkIFN0
eWxlUmVzb2x2ZXI6Om1hdGNoSG9zdFJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5j
bHVkZUVtcHR5UnVsZXMpCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQordm9p
ZCBTdHlsZVJlc29sdmVyOjptYXRjaFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXMoTWF0Y2hSZXN1bHQm
IHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKK3sKKyAgICBmb3IgKFNoYWRvd0Rpc3Ry
aWJ1dGVkUnVsZVNldE1hcDo6aXRlcmF0b3IgaXQgPSBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNl
dE1hcC5iZWdpbigpOyBpdCAhPSBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5lbmQoKTsg
KytpdCkgeworICAgICAgICBNYXRjaE9wdGlvbnMgb3B0aW9ucyhpbmNsdWRlRW1wdHlSdWxlcywg
MCk7CisgICAgICAgIG9wdGlvbnMuc2NvcGVPZkxhc3RFbGVtZW50ID0gaXQtPmtleTsKKyAgICAg
ICAgY29sbGVjdE1hdGNoaW5nUnVsZXMoaXQtPnZhbHVlLmdldCgpLCByZXN1bHQucmFuZ2VzLmZp
cnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7Cisg
ICAgfQorfQorI2VuZGlmCisKIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxlcyhN
YXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQogewogICAgIG1fbWF0
Y2hlZFJ1bGVzLmNsZWFyKCk7CkBAIC04MTEsNiArODUyLDkgQEAgdm9pZCBTdHlsZVJlc29sdmVy
OjptYXRjaEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5
UnVsZXMKICAgICBNYXRjaE9wdGlvbnMgb3B0aW9ucyhpbmNsdWRlRW1wdHlSdWxlcyk7CiAgICAg
Y29sbGVjdE1hdGNoaW5nUnVsZXMobV9hdXRob3JTdHlsZS5nZXQoKSwgcmVzdWx0LnJhbmdlcy5m
aXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOwog
ICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKG1fYXV0aG9yU3R5bGUuZ2V0KCksIHJl
c3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxl
LCBvcHRpb25zKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBtYXRjaFNoYWRvd0Rpc3Ry
aWJ1dGVkUnVsZXMocmVzdWx0LCBpbmNsdWRlRW1wdHlSdWxlcyk7CisjZW5kaWYKICAgICBzb3J0
QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMocmVzdWx0KTsKIAogICAgIG1hdGNoU2NvcGVkQXV0aG9y
UnVsZXMocmVzdWx0LCBpbmNsdWRlRW1wdHlSdWxlcyk7CkBAIC04NDcsNyArODkxLDExIEBAIHZv
aWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3Rv
cjxSdWxlRGF0YT4qIHJ1bGVzLCBpCiAKICAgICAvLyBJbiBzb21lIGNhc2VzIHdlIG1heSBlbmQg
dXAgbG9va2luZyB1cCBzdHlsZSBmb3IgcmFuZG9tIGVsZW1lbnRzIGluIHRoZSBtaWRkbGUgb2Yg
YSByZWN1cnNpdmUgdHJlZSByZXNvbHZlLgogICAgIC8vIEFuY2VzdG9yIGlkZW50aWZpZXIgZmls
dGVyIHdvbid0IGJlIHVwLXRvLWRhdGUgaW4gdGhhdCBjYXNlIGFuZCB3ZSBjYW4ndCB1c2UgdGhl
IGZhc3QgcGF0aC4KKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBib29sIGNhblVzZUZhc3RS
ZWplY3QgPSBtX3NlbGVjdG9yRmlsdGVyLnBhcmVudFN0YWNrSXNDb25zaXN0ZW50KG1fcGFyZW50
Tm9kZSkgJiYgIW9wdGlvbnMuc2NvcGVPZkxhc3RFbGVtZW50OworI2Vsc2UKICAgICBib29sIGNh
blVzZUZhc3RSZWplY3QgPSBtX3NlbGVjdG9yRmlsdGVyLnBhcmVudFN0YWNrSXNDb25zaXN0ZW50
KG1fcGFyZW50Tm9kZSk7CisjZW5kaWYKIAogICAgIHVuc2lnbmVkIHNpemUgPSBydWxlcy0+c2l6
ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKQEAgLTg1Nyw3
ICs5MDUsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlz
dChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBydWxlcywgaQogCiAgICAgICAgIFN0eWxlUnVsZSog
cnVsZSA9IHJ1bGVEYXRhLnJ1bGUoKTsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1hdGNoUnVsZShk
b2N1bWVudCgpLCBydWxlLCB0aGlzKTsKLSAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3IocnVsZURh
dGEsIG9wdGlvbnMuc2NvcGUpKSB7CisgICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHJ1bGVEYXRh
LCBvcHRpb25zLnNjb3BlLCBvcHRpb25zLnNjb3BlT2ZMYXN0RWxlbWVudCkpIHsKICAgICAgICAg
ICAgIC8vIElmIHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0aWVzIHRvIGFwcGx5LCB0aGVuIGlnbm9y
ZSBpdCBpbiB0aGUgbm9uLWRlYnVnIG1vZGUuCiAgICAgICAgICAgICBjb25zdCBTdHlsZVByb3Bl
cnR5U2V0KiBwcm9wZXJ0aWVzID0gcnVsZS0+cHJvcGVydGllcygpOwogICAgICAgICAgICAgaWYg
KCFwcm9wZXJ0aWVzIHx8IChwcm9wZXJ0aWVzLT5pc0VtcHR5KCkgJiYgIW9wdGlvbnMuaW5jbHVk
ZUVtcHR5UnVsZXMpKSB7CkBAIC0yMjM4LDcgKzIyODYsNyBAQCBQYXNzUmVmUHRyPENTU1J1bGVM
aXN0PiBTdHlsZVJlc29sdmVyOjpwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBl
LCBQcwogICAgIHJldHVybiBtX3J1bGVMaXN0LnJlbGVhc2UoKTsKIH0KIAotaW5saW5lIGJvb2wg
U3R5bGVSZXNvbHZlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNv
bnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKQoraW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y2hl
Y2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0IENvbnRhaW5lck5vZGUq
IHNjb3BlLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZU9mTGFzdEVsZW1lbnQpCiB7CiAgICAg
bV9keW5hbWljUHNldWRvID0gTk9QU0VVRE87CiAKQEAgLTIyNjMsNiArMjMxMSw3IEBAIGlubGlu
ZSBib29sIFN0eWxlUmVzb2x2ZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmIHJ1bGVE
YXRhLCBjb25zdCBDb250YWluCiAgICAgY29udGV4dC5lbGVtZW50U3R5bGUgPSBzdHlsZSgpOwog
ICAgIGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlID0gbV9wYXJlbnROb2RlID8gbV9wYXJlbnRO
b2RlLT5yZW5kZXJTdHlsZSgpIDogMDsKICAgICBjb250ZXh0LnNjb3BlID0gc2NvcGU7CisgICAg
Y29udGV4dC5zY29wZU9mTGFzdEVsZW1lbnQgPSBzY29wZU9mTGFzdEVsZW1lbnQ7CiAgICAgY29u
dGV4dC5wc2V1ZG9TdHlsZSA9IG1fcHNldWRvU3R5bGU7CiAgICAgU2VsZWN0b3JDaGVja2VyOjpT
ZWxlY3Rvck1hdGNoIG1hdGNoID0gbV9zZWxlY3RvckNoZWNrZXIuY2hlY2tTZWxlY3Rvcihjb250
ZXh0LCBtX2R5bmFtaWNQc2V1ZG8pOwogICAgIGlmIChtYXRjaCAhPSBTZWxlY3RvckNoZWNrZXI6
OlNlbGVjdG9yTWF0Y2hlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IDViZDI5
NDBlNTdmMjk4MjFmZTYxM2VhMGU4YTM5YmZkZmI4OGQwN2QuLmQzM2RkNzM5OTQyNWYwM2RkNmY3
MjI4YWYyYjM3NjMxMWIzZjk2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIk1lZGlhUXVlcnlFeHAuaCIKICNpbmNsdWRlICJSZW5k
ZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJ1bGVGZWF0dXJlLmgiCisjaW5jbHVkZSAiUnVsZVNldC5o
IgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTZWxlY3Rv
ckNoZWNrZXIuaCIKICNpbmNsdWRlICJTZWxlY3RvckZpbHRlci5oIgpAQCAtNzYsNyArNzcsNiBA
QCBjbGFzcyBNZWRpYVF1ZXJ5RXZhbHVhdG9yOwogY2xhc3MgTm9kZTsKIGNsYXNzIFJlbmRlclJl
Z2lvbjsKIGNsYXNzIFJ1bGVEYXRhOwotY2xhc3MgUnVsZVNldDsKIGNsYXNzIFNldHRpbmdzOwog
Y2xhc3MgU3RhdGljQ1NTUnVsZUxpc3Q7CiBjbGFzcyBTdHlsZUJ1aWxkZXI7CkBAIC0yNjUsNiAr
MjY1LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRLZXlmcmFtZVN0eWxlKFBhc3NSZWZQdHI8
U3R5bGVSdWxlS2V5ZnJhbWVzPik7CiAKKyAgICB2b2lkIGFkZFN0eWxlUnVsZShTdHlsZVJ1bGUq
LCBDb250YWluZXJOb2RlKiBzY29wZSwgUnVsZVNldCosIEFkZFJ1bGVGbGFncyk7CisKICAgICBi
b29sIGNoZWNrUmVnaW9uU3R5bGUoRWxlbWVudCogcmVnaW9uRWxlbWVudCk7CiAKICAgICBib29s
IHVzZXNTaWJsaW5nUnVsZXMoKSBjb25zdCB7IHJldHVybiAhbV9mZWF0dXJlcy5zaWJsaW5nUnVs
ZXMuaXNFbXB0eSgpOyB9CkBAIC0zNDMsOSArMzQ1LDEwIEBAIHByaXZhdGU6CiAgICAgfTsKIAog
ICAgIHN0cnVjdCBNYXRjaE9wdGlvbnMgewotICAgICAgICBNYXRjaE9wdGlvbnMoYm9vbCBpbmNs
dWRlRW1wdHlSdWxlcywgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUgPSAwKSA6IHNjb3BlKHNj
b3BlKSwgaW5jbHVkZUVtcHR5UnVsZXMoaW5jbHVkZUVtcHR5UnVsZXMpIHsgfQorICAgICAgICBN
YXRjaE9wdGlvbnMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcywgY29uc3QgQ29udGFpbmVyTm9kZSog
c2NvcGUgPSAwKSA6IHNjb3BlKHNjb3BlKSwgaW5jbHVkZUVtcHR5UnVsZXMoaW5jbHVkZUVtcHR5
UnVsZXMpLCBzY29wZU9mTGFzdEVsZW1lbnQoMCkgeyB9CiAgICAgICAgIGNvbnN0IENvbnRhaW5l
ck5vZGUqIHNjb3BlOwogICAgICAgICBib29sIGluY2x1ZGVFbXB0eVJ1bGVzOworICAgICAgICBj
b25zdCBDb250YWluZXJOb2RlKiBzY29wZU9mTGFzdEVsZW1lbnQ7CiAgICAgfTsKIAogICAgIHN0
YXRpYyB2b2lkIGFkZE1hdGNoZWRQcm9wZXJ0aWVzKE1hdGNoUmVzdWx0JiwgY29uc3QgU3R5bGVQ
cm9wZXJ0eVNldCogcHJvcGVydGllcywgU3R5bGVSdWxlKiA9IDAsIHVuc2lnbmVkIGxpbmtNYXRj
aFR5cGUgPSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoQWxsLCBib29sIGluUmVnaW9uUnVsZSA9IGZh
bHNlKTsKQEAgLTM1OCw2ICszNjEsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1hdGNoVXNlclJ1
bGVzKE1hdGNoUmVzdWx0JiwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAgICAgdm9pZCBtYXRj
aFNjb3BlZEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7
CiAgICAgdm9pZCBtYXRjaEhvc3RSdWxlcyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5
UnVsZXMpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIHZvaWQgbWF0Y2hTaGFkb3dEaXN0
cmlidXRlZFJ1bGVzKE1hdGNoUmVzdWx0JiwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CisjZW5k
aWYKKwogICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXMoUnVsZVNldCosIGludCYgZmlyc3RS
dWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJik7CiAgICAg
dm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihSdWxlU2V0KiwgaW50JiBmaXJzdFJ1
bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmKTsKICAgICB2
b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+Kiwg
aW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4LCBjb25zdCBNYXRjaE9wdGlv
bnMmKTsKQEAgLTM2NSw3ICszNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc29ydE1hdGNoZWRS
dWxlcygpOwogICAgIHZvaWQgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKE1hdGNoUmVzdWx0
Jik7CiAKLSAgICBib29sIGNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmLCBjb25zdCBDb250
YWluZXJOb2RlKiBzY29wZSk7CisgICAgYm9vbCBjaGVja1NlbGVjdG9yKGNvbnN0IFJ1bGVEYXRh
JiwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3Bl
T2ZMYXN0RWxlbWVudCk7CiAgICAgYm9vbCBjaGVja1JlZ2lvblNlbGVjdG9yKENTU1NlbGVjdG9y
KiByZWdpb25TZWxlY3RvciwgRWxlbWVudCogcmVnaW9uRWxlbWVudCk7CiAgICAgdm9pZCBhcHBs
eU1hdGNoZWRQcm9wZXJ0aWVzKGNvbnN0IE1hdGNoUmVzdWx0JiwgY29uc3QgRWxlbWVudCopOwog
ICAgIGVudW0gU3R5bGVBcHBsaWNhdGlvblBhc3MgewpAQCAtMzk2LDYgKzQwMywxMSBAQCBwcml2
YXRlOgogICAgIE93blB0cjxSdWxlU2V0PiBtX2F1dGhvclN0eWxlOwogICAgIE93blB0cjxSdWxl
U2V0PiBtX3VzZXJTdHlsZTsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIHR5cGVkZWYg
SGFzaE1hcDxjb25zdCBDb250YWluZXJOb2RlKiwgT3duUHRyPFJ1bGVTZXQ+ID4gU2hhZG93RGlz
dHJpYnV0ZWRSdWxlU2V0TWFwOworICAgIFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcCBtX3No
YWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcDsKKyNlbmRpZgorCiAgICAgUnVsZUZlYXR1cmVTZXQg
bV9mZWF0dXJlczsKICAgICBPd25QdHI8UnVsZVNldD4gbV9zaWJsaW5nUnVsZVNldDsKICAgICBP
d25QdHI8UnVsZVNldD4gbV91bmNvbW1vbkF0dHJpYnV0ZVJ1bGVTZXQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAppbmRleCBhZWRhYzFkMGY3ZDEwZjZkODRl
MTM2MGU4MTAwMzM4YTkwYzgxMmUxLi4xN2ZjNzY2ZjdkZGViMDNkYTRmZDU5ZTdkNDEwZTgwMmZk
ZDZlMDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgK
QEAgLTE3OSw2ICsxNzksMzUgQEAgaW5saW5lIEluc2VydGlvblBvaW50KiByZXNvbHZlUmVwcm9q
ZWN0aW9uKGNvbnN0IE5vZGUqIHByb2plY3RlZE5vZGUpCiAgICAgcmV0dXJuIGluc2VydGlvblBv
aW50OwogfQogCitpbmxpbmUgdm9pZCBjb2xsZWN0QWxsTWlkcG9pbnRJbnNlcnRpb25Qb2ludHMo
Y29uc3QgTm9kZSogcHJvamVjdGVkTm9kZSwgVmVjdG9yPEluc2VydGlvblBvaW50KiwgOD4mIHJl
c3VsdHMpCit7CisgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gMDsKKyAgICBj
b25zdCBOb2RlKiBjdXJyZW50ID0gcHJvamVjdGVkTm9kZTsKKworICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBzaGFkb3dPZlBhcmVudEZvckRp
c3RyaWJ1dGlvbihjdXJyZW50KSkgeworICAgICAgICAgICAgc2hhZG93LT5lbnN1cmVEaXN0cmli
dXRpb24oKTsKKyAgICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHNo
YWRvdy0+ZGlzdHJpYnV0b3IoKS5maW5kSW5zZXJ0aW9uUG9pbnRGb3IocHJvamVjdGVkTm9kZSkp
IHsKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAg
ICBpbnNlcnRpb25Qb2ludCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgcmVzdWx0cy5h
cHBlbmQoaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKE5vZGUqIHBhcmVudCA9IHBhcmVudE5v
ZGVGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKKyAgICAgICAgICAgIGlmIChJbnNlcnRpb25Q
b2ludCogaW5zZXJ0ZWRUbyA9IHBhcmVudC0+aXNTaGFkb3dSb290KCkgPyB0b1NoYWRvd1Jvb3Qo
cGFyZW50KS0+YXNzaWduZWRUbygpIDogMCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBp
bnNlcnRlZFRvOworICAgICAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsK
KyAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChpbnNlcnRpb25Qb2ludCk7CisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm47CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBJ
bnNlcnRpb25Qb2ludF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCmluZGV4IGZmMDBjOTUwMjc4YzMzMjAxYzBhZjkyZDhh
YjY1OTdlOGVjOTdmZjUuLjc2NGYxZWNkMTcxNTE2NzcyNWZjMzc0YWZjZmM0ODQ2YzQyY2MxZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNv
bnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZUNvbnN0YW50cy5oCkBAIC03MCw3ICs3MCw3IEBAIGVudW0gU3R5bGVEaWZmZXJlbmNlQ29udGV4
dFNlbnNpdGl2ZVByb3BlcnR5IHsKIC8vIFN0YXRpYyBwc2V1ZG8gc3R5bGVzLiBEeW5hbWljIG9u
ZXMgYXJlIHByb2R1Y2VkIG9uIHRoZSBmbHkuCiBlbnVtIFBzZXVkb0lkIHsKICAgICAvLyBUaGUg
b3JkZXIgbXVzdCBiZSBOT1AgSUQsIHB1YmxpYyBJRHMsIGFuZCB0aGVuIGludGVybmFsIElEcy4K
LSAgICBOT1BTRVVETywgRklSU1RfTElORSwgRklSU1RfTEVUVEVSLCBCRUZPUkUsIEFGVEVSLCBT
RUxFQ1RJT04sIEZJUlNUX0xJTkVfSU5IRVJJVEVELCBTQ1JPTExCQVIsCisgICAgTk9QU0VVRE8s
IEZJUlNUX0xJTkUsIEZJUlNUX0xFVFRFUiwgQkVGT1JFLCBBRlRFUiwgRElTVFJJQlVURUQsIFNF
TEVDVElPTiwgRklSU1RfTElORV9JTkhFUklURUQsIFNDUk9MTEJBUiwKICAgICAvLyBJbnRlcm5h
bCBJRHMgZm9sbG93OgogICAgIFNDUk9MTEJBUl9USFVNQiwgU0NST0xMQkFSX0JVVFRPTiwgU0NS
T0xMQkFSX1RSQUNLLCBTQ1JPTExCQVJfVFJBQ0tfUElFQ0UsIFNDUk9MTEJBUl9DT1JORVIsIFJF
U0laRVIsCiAgICAgSU5QVVRfTElTVF9CVVRUT04sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDQxMzE4NzdlMTNkN2ZiMzgz
ZDUzODhkYjQyODYyNWIwMGMzYmI1NS4uMjZmODdjOGM2ZTgzOTk2MTI5MDJkZGFkNzRmNTU2YWQx
NzcwZmFkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEzLTAxLTA2ICBIYXlhdG8gSXRvICA8
aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gSW1wbGVtZW50cyBh
ICc6OmRpc3RyaWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50LWV4cGVj
dGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC1leHBl
Y3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQt
cHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQtZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50LW5lc3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJp
YnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXBy
b2plY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3ItZXhwZWN0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1
cHBvcnQtc2VsZWN0b3IuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC1leHBlY3RlZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRv
LWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC5odG1sOiBBZGRlZC4KKwog
MjAxMy0wMS0wNiAgQWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIEhlYXAtdXNlLWFmdGVyLWZyZWUgaW4gV2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxpY2l0Q2xv
c2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRj
MjZlMmI1NmM0YzZhN2M3MGM2Y2ZkNThhMjI3ZjhlMGY0NDY0ZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1l
eHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxi
b2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYgc3R5
bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1l
bGVtZW50LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRjMjZlMmI1NmM0YzZhN2M3MGM2Y2Zk
NThhMjI3ZjhlMGY0NDY0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQtZXhw
ZWN0ZWQuaHRtbApAQCAtMCwwICsxLDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9k
eT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2IHN0eWxl
PSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVk
by1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjMxNDI5NzBkNzQxZGRjZjI3ZmVmNzQ0YWIyZTQwM2VjMTk4OTBmMzYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQt
cHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSwyMyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
aGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJv
eCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdzaGFkb3c6OmRpc3RyaWJ1
dGVkKGRpdikgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0
ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jv
b3QoCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSksCisgICAg
ICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHls
ZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnc2hhZG93JykpKSk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRj
aC1hbGwtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTYwYjcyZTBkZTkxNzc2MmIyYTJhNGM1
ZWMzZWY5ZjU2NmViNDk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC1leHBlY3RlZC5odG1s
CkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYg
aWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2PgorICAgICAgbm9ybWFs
CisgICAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAgPC9kaXY+
CisgICAgPGRpdj4KKyAgICAgIG5vcm1hbAorICAgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVu
Ij5ncmVlbjwvZGl2PgorICAgIDwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC1tYXRjaC1hbGwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjQwNGYy
NmU3YmRhODMwZTZlYjg1NGFjOTc1ZjNkYmJjNmNlOTA5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNo
LWFsbC5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFk
b3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5p
bm5lckhUTUwgPSAnY29udGVudDo6ZGlzdHJpYnV0ZWQoLmhlbGxvKSB7IGNvbG9yOiBncmVlbjsg
fSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsK
K3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3Qn
fSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNo
YWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2hlbGxvJ30sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSwKKyAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdoZWxsbyd9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSkpKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC1leHBlY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50LW5lc3RlZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1MTgzNDQyYTA3NmM3ZjgxYTlj
NTQyMTMxZTc5ZmI3NzZmMDExY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLWV4cGVjdGVkLmh0
bWwKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRp
diBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYgaWQ9Im5lc3RlZC1o
b3N0Ij4KKyAgICAgIHRleHQxCisgICAgICA8ZGl2PgorICAgICAgICB0ZXh0MgorICAgICAgICA8
ZGl2PgorICAgICAgICAgIHRleHQzCisgICAgICAgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVu
Ij5ncmVlbjwvZGl2PgorICAgICAgICAgIDxkaXY+bm9ybWFsPC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjUz
MjFiMGE2M2UxNDI5M2RiYWNkYTMxZDllYjFlNzg1YTdhMThlZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1u
ZXN0ZWQuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hh
ZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUu
aW5uZXJIVE1MID0gJ2RpdiBjb250ZW50OjpkaXN0cmlidXRlZChkaXYgY29udGVudDo6ZGlzdHJp
YnV0ZWQoZGl2LmdyZWVuKSkgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAor
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0
ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAn
bmVzdGVkLWhvc3QnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dS
b290KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3RleHQx
JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgndGV4dDInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJ2Rpdid9KSkpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdncmVlbid9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgndGV4dDMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdjb250ZW50Jywge30pKSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rp
dicsIHsnY2xhc3MnOiAnZ3JlZW4nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdu
b3JtYWwnKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJv
amVjdGlvbi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU2OWM5MTI3ZGU1ZTcwM2I3YTFhNWM5MzY5NGVhN2NkMGIxMjQ4NDIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9
Imhvc3QiPgorICAgIDxkaXYgaWQ9Imhvc3QyIj4KKyAgICAgIDxkaXYgc3R5bGU9J2NvbG9yOiBn
cmVlbic+CisgICAgICAgIGdyZWVuCisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0
aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTI5NTU4MDgzMDg4OWQ1ZDkzYjQ1ZjI0YWQ2NDlkMjJlYTI1
MzM4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24uaHRtbApAQCAtMCwwICsxLDI1IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5k
Ym94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRlbnQ6OmRpc3Ry
aWJ1dGVkKC5mb28pIHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBj
cmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFk
b3dSb290KAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3Qy
J30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJy5mb28nfSkp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSksCisg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdmb28nfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSkpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVk
by1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3ItZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yM2Rl
ZGUxMzNiODYyZGQxNGM5MmU2MDVjNGExYmVkMjhlMzdhZGFkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1
cHBvcnQtc2VsZWN0b3ItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9z
dCI+CisgICAgPGRpdj4KKyAgICAgIG5vcm1hbAorICAgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdy
ZWVuIj5ncmVlbjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXY+CisgICAgICBub3JtYWwKKyAg
ICAgIDxkaXY+bm9ybWFsPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjZlZDUzYjAwYzZjNDdhM2YyNDhkYTYzM2E4MTI0Nzk0MThmOTg5Ywot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRl
ZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLmh0bWwKQEAgLTAsMCArMSwyOCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
aGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJv
eCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50OjpkaXN0cmli
dXRlZChkaXYuaGVsbG8gZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQo
CisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3Jl
YXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHsnY2xhc3MnOiAnaGVsbG8nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCdub3JtYWwnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
e30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoJ25vcm1hbCcpKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3It
bGlzdC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiODI1M2U0ZGFiNzQwNTY1ODM4ZDg0MjUw
YmJhOWJkOTA0ZDk5MmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0LWV4
cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxi
b2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYgc3R5
bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgICA8cD5ub3JtYWw8L3A+CisgICAgPHAg
c3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L3A+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3It
bGlzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwZjE3ZWI2MjczMTRlOGRjMTA1N2EwMTNhNDIxOTkzYWVl
MmI4NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlz
dHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0Lmh0bWwKQEAgLTAs
MCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250
ZW50OjpkaXN0cmlidXRlZChkaXYpLCBwIHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNhbmRi
b3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRD
aGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAgICAg
ICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUsCisgICAg
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSwKKyAgICAgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgncCcsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCdncmVlbicpKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
e30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3Jl
ZW4nKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgncCcsIHsnY2xhc3MnOiAnaGVsbG8nfSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwn
KSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50Lmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xZDU1NTg4M2VlMmUwMzNjZmI2Y2I3MTE3N2QyOGU2YmEzODgwMWUyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0Pgor
dmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRv
d1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50OjpkaXN0cmlidXRlZChkaXYpIHsgY29sb3I6IGdy
ZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJv
eCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAn
aG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAg
ICAgc2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSks
CisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0LWNoaWxkJ30sCisg
ICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkp
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181659</attachid>
            <date>2013-01-08 00:00:25 -0800</date>
            <delta_ts>2013-01-08 20:34:34 -0800</delta_ts>
            <desc>Add a test for ::distributed() used in scoped style.</desc>
            <filename>bug-82169-20130108165729.patch</filename>
            <type>text/plain</type>
            <size>52648</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NGVjM2MwOWFkNjI0ZmJlYTdlYjIwYTIyNDU0OWY5NzRhYmYwM2I2Li5m
M2VmMjljMDA1Mjg1NjJmN2VkMDU4NDY4MTM1NTY2MmExNzc0N2E1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTAxIEBACisyMDEzLTAxLTA2ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbU2hhZG93IERPTV0gSW1wbGVtZW50cyBhICc6OmRpc3RyaWJ1dGVkKCkn
IHBzZXVkbyBlbGVtZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODIxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnRzIGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvIGVsZW1lbnQuCisg
ICAgICAgIFNlZSB0aGUgU2hhZG93IERPTSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgZGV0YWlsLgor
CisgICAgICAgIGh0dHA6Ly9kdmNzLnczLm9yZy9oZy93ZWJjb21wb25lbnRzL3Jhdy1maWxlL3Rp
cC9zcGVjL3NoYWRvdy9pbmRleC5odG1sI3NlbGVjdGluZy1ub2Rlcy1kaXN0cmlidXRlZC10by1p
bnNlcnRpb24tcG9pbnRzCisKKyAgICAgICAgQSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxl
bWVudCBpcyB0aGUgZmlyc3QgQ1NTIHJ1bGUgd2hpY2gKKyAgICAgICAgY3Jvc3NlcyB0aGUgc2hh
ZG93IGJvdW5kYXJ5IGZyb20gYSBzaGFkb3cgdHJlZSB0byB0aGUgdHJlZSBvZiBpdHMKKyAgICAg
ICAgc2hhZG93IGhvc3QuIFRoYXQgbWVhbnMgYSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxl
bWVudCBpcworICAgICAgICBkZWZpbmVkIGluIHNoYWRvdyB0cmVlLCBidXQgdGhlIG5vZGUgd2hp
Y2ggaXMgbWF0Y2hlZCBpbiB0aGUgcnVsZQorICAgICAgICBpcyBvdXRzaWRlIG9mIHRoZSBzaGFk
b3cgdHJlZS4gVGhlcmVmb3JlLCB3ZSBjYW5ub3QgcHJlZGljdCBhCisgICAgICAgIHNjb3BlIHdo
ZXJlIHRoZSBtYXRjaGVkIG5vZGUgd2lsbCBiZSBiZWZvcmVoYW5kLiAgQ3VycmVudCBDU1MKKyAg
ICAgICAgaW1wbGVtZW50YXRpb24gYXNzdW1lcyBldmVyeSBmaW5hbCB0YXJnZXQgaXMgYXBwbGll
ZCBpbiBjdXJyZW50CisgICAgICAgIHNjb3BlLgorCisgICAgICAgIFRvIG92ZXJjb21lIHRoaXMg
aXNzdWUsIFN0eWxlUmVzb2x2ZXIgd2FzIHVwZGF0ZWQgc28gdGhhdCBpdCBoYXMKKyAgICAgICAg
U2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLiBXZSB1c2UgdGhpcyBSdWxlU2V0TWFwIHRvIGtl
ZXAgdHJhY2sKKyAgICAgICAgb2YgZWFjaCBSdWxlU2V0IG1hcHBlZCBieSBhIHNjb3BlIHdoZXJl
IGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvCisgICAgICAgIGVsZW1lbnQgaXMgb3JpZ2luYWxs
eSBkZWZpbmVkLiBUaGlzIHNjb3BlIGlzIHBhc3NlZCB0bworICAgICAgICBTZWxlY3RvckNoZWNr
ZXIgYW5kIGlzIHVzZWQgdG8gY2hlY2sgd2hldGhlciB0aGUgbGFzdGx5IG1hdGNoZWQgZWxlbWVu
dAorICAgICAgICBleGlzdHMgaW4gdGhlIHNjb3BlIHdoZXJlIHRoZSBydWxlIGlzIG9yaWdpbmFs
bHkgZGVmaW5lZC4KKworICAgICAgICBJbnRlcm5hbGx5LCAnOjpkaXN0cmlidXRlZCcgcHNldWRv
IGVsZW1lbnQgaXMgcmVwcmVzZW50ZWQgYnkgYQorICAgICAgICBuZXdseSBpbnRyb2R1Y2VkIFNo
YWRvd0Rpc3RyaWJ1dGVkIHJlbGF0aW9uLiAgQSB0cmFuc2Zvcm1hdGlvbgorICAgICAgICBmcm9t
IGEgZGlzdHJpcmJ1dGVkIHBzZXVkbyBlbGVtZW50IHRvIGEgU2hhZG93RGlzdHJpYnV0ZWQgaXMg
ZG9uZQorICAgICAgICBpbiBwYXJzaW5nIHN0YWdlIG9mIENTUy4KKworICAgICAgICBUZXN0czog
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxl
bWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtbWF0Y2gtYWxsLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtc2NvcGVkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVj
dG9yLWxpc3QuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50Lmh0bWwKKworICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnkuaW46Cisg
ICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OmRldGVjdEZ1bmN0aW9uVHlwZVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNl
ci5oOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKToKKyAgICAgICAgKiBjc3Mv
Q1NTUGFyc2VyVmFsdWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6
ZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNl
bGVjdG9yOjpzZXRGdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IpOgorICAgICAgICAoQ1NTUGFyc2Vy
U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OmlzUHNldWRv
RGlzdHJpYnV0ZWRFbGVtZW50KToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnBzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6
Om5hbWVUb1BzZXVkb1R5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmV4
dHJhY3RQc2V1ZG9UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZWxlY3Rv
clRleHQpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOgorICAgICAgICAoQ1NTU2VsZWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmlzRGlzdHJpYnV0ZWRQc2V1ZG9F
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0
b3I6OmlzU2hhZG93RGlzdHJpYnV0ZWQpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvckxpc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTZWxlY3Rvckhhc1NoYWRvd0Rpc3Ry
aWJ1dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9ySGFzU2hhZG93RGlzdHJpYnV0ZWQ6
Om9wZXJhdG9yKCkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JMaXN0OjpoYXNTaGFk
b3dEaXN0cmlidXRlZEF0KToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0Lmg6CisgICAg
ICAgIChDU1NTZWxlY3Rvckxpc3QpOgorICAgICAgICAqIGNzcy9SdWxlU2V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KToKKyAgICAgICAgKiBjc3Mv
U2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6
Y2hlY2tTZWxlY3Rvcik6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dDo6U2Vs
ZWN0b3JDaGVja2luZ0NvbnRleHQpOgorICAgICAgICAoU2VsZWN0b3JDaGVja2luZ0NvbnRleHQp
OgorICAgICAgICAqIGNzcy9TZWxlY3RvckZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3RvckZpbHRlcjo6Y29sbGVjdElkZW50aWZpZXJIYXNoZXMpOgorICAgICAgICAqIGNzcy9T
dHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnJlc2V0
QXV0aG9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRkU3R5bGVS
dWxlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6bWF0Y2hTaGFkb3dEaXN0cmlidXRlZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UmVzb2x2ZXI6Om1hdGNoQXV0aG9yUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNv
bHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmVzb2x2ZXI6OmNoZWNrU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
Lmg6CisgICAgICAgIChTdHlsZVJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVz
b2x2ZXI6Ok1hdGNoT3B0aW9uczo6TWF0Y2hPcHRpb25zKToKKyAgICAgICAgKE1hdGNoT3B0aW9u
cyk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbGxlY3RBbGxNaWRwb2ludEluc2VydGlvblBvaW50cyk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoK
KwogMjAxMy0wMS0wNiAgU2ViYXN0aWFuIERyw7ZnZSAgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFi
b3JhLmNvLnVrPgogCiAgICAgICAgIEJ1Z8KgMTA2MTc3IC0gW0dTdHJlYW1lcl0gRG9uJ3QgY2Fs
bCBnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMoKSB3aXRoIG5vbi1maXhlZCBjYXBzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYW1tYXIueS5pbgppbmRleCAxZmQ0NWU0OTVjZTk2YTVhYTQ1YzY0YjFkZTliYmY2
MGMwZmU3NGMzLi5jMjU0NTYwMjNjMDU1NDdlYzc4ZDVhN2ZkZTIyYTQyODJjMjE3NWVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KQEAgLTYxLDcgKzYxLDExIEBAIHN0YXRpYyBpbmxp
bmUgaW50IGNzc3l5ZXJyb3Iodm9pZCosIGNvbnN0IGNoYXIqKQogCiAlfQogCisjaWYgRU5BQkxF
X1NIQURPV19ET00KKyVleHBlY3QgNjYKKyNlbHNlCiAlZXhwZWN0IDY1CisjZW5kaWYKIAogJW5v
bmFzc29jIExPV0VTVF9QUkVDCiAKQEAgLTE3Nyw2ICsxODEsNyBAQCBzdGF0aWMgaW5saW5lIGlu
dCBjc3N5eWVycm9yKHZvaWQqLCBjb25zdCBjaGFyKikKICV0b2tlbiA8c3RyaW5nPiBDVUVGVU5D
VElPTgogI2VuZGlmCiAldG9rZW4gPHN0cmluZz4gTk9URlVOQ1RJT04KKyV0b2tlbiA8c3RyaW5n
PiBESVNUUklCVVRFREZVTkNUSU9OCiAldG9rZW4gPHN0cmluZz4gQ0FMQ0ZVTkNUSU9OCiAldG9r
ZW4gPHN0cmluZz4gTUlORlVOQ1RJT04KICV0b2tlbiA8c3RyaW5nPiBNQVhGVU5DVElPTgpAQCAt
MTE0NCwxMiArMTE0OSwxMiBAQCBzaW1wbGVfc2VsZWN0b3I6CiAgICAgfCBlbGVtZW50X25hbWUg
c3BlY2lmaWVyX2xpc3QgewogICAgICAgICAkJCA9ICQyOwogICAgICAgICBpZiAoJCQpCi0gICAg
ICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20s
ICQxLCAkJCk7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhF
bGVtZW50TmFtZShudWxsQXRvbSwgJDEsICQkKTsKICAgICB9CiAgICAgfCBzcGVjaWZpZXJfbGlz
dCB7CiAgICAgICAgICQkID0gJDE7CiAgICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNl
ci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwgc3RhckF0b20sICQk
KTsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnRO
YW1lKG51bGxBdG9tLCBzdGFyQXRvbSwgJCQpOwogICAgIH0KICAgICB8IG5hbWVzcGFjZV9zZWxl
Y3RvciBlbGVtZW50X25hbWUgewogICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdT
ZWxlY3RvcigpOwpAQCAtMTE1OCwxMiArMTE2MywxMiBAQCBzaW1wbGVfc2VsZWN0b3I6CiAgICAg
fCBuYW1lc3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1lIHNwZWNpZmllcl9saXN0IHsKICAgICAg
ICAgJCQgPSAkMzsKICAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVT
cGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKCQxLCAkMiwgJCQpOworICAgICAgICAgICAgJCQgPSBw
YXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsICQyLCAkJCk7CiAgICAg
fQogICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIHNwZWNpZmllcl9saXN0IHsKICAgICAgICAgJCQg
PSAkMjsKICAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZp
ZXJzV2l0aEVsZW1lbnROYW1lKCQxLCBzdGFyQXRvbSwgJCQpOworICAgICAgICAgICAgJCQgPSBw
YXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsIHN0YXJBdG9tLCAkJCk7
CiAgICAgfQogICA7CiAKQEAgLTEzNTUsNiArMTM2MCwxOSBAQCBwc2V1ZG86CiAgICAgICAgICAg
ICAkJCA9IDA7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFX1NIQURPV19ET00KKyAgICB8ICc6
JyAnOicgRElTVFJJQlVURURGVU5DVElPTiBtYXliZV9zcGFjZSBzZWxlY3RvciBtYXliZV9zcGFj
ZSAnKScgeworICAgICAgICBpZiAoISQ1KQorICAgICAgICAgICAgJCQgPSAwOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7
CisgICAgICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpOwor
ICAgICAgICAgICAgJCQtPnNldEZ1bmN0aW9uQXJndW1lbnRTZWxlY3RvcigkNSk7CisgICAgICAg
ICAgICAkMy5sb3dlcigpOworICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQzKTsKKyAgICAgICAg
fQorICAgIH0KKyNlbmRpZgogICAgIC8vIHVzZSBieSA6LXdlYmtpdC1hbnkuCiAgICAgLy8gRklY
TUU6IHNob3VsZCB3ZSBzdXBwb3J0IGdlbmVyaWMgc2VsZWN0b3JzIGhlcmUgb3IganVzdCBzaW1w
bGVfc2VsZWN0b3JzPwogICAgIC8vIFVzZSBzaW1wbGVfc2VsZWN0b3JfbGlzdCBmb3Igbm93IHRv
IG1hdGNoIC1tb3otYW55LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCBkYjk0Y2Q3NzYw
YzZlNDcyZDY5Mjc3NzI2MThiZDM2YTZhODA4NTNhLi40NTZlZmVmMDhkNjZkMGM2YzYzZGFiYjIw
NDc5NDU5NjczMjlhZjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtOTUwMSw2ICs5
NTAxLDggQEAgaW5saW5lIHZvaWQgQ1NTUGFyc2VyOjpkZXRlY3RGdW5jdGlvblR5cGVUb2tlbihp
bnQgbGVuZ3RoKQogICAgIGNhc2UgMTE6CiAgICAgICAgIGlmIChpc0VxdWFsVG9DU1NJZGVudGlm
aWVyKG5hbWUsICJudGgtb2YtdHlwZSIpKQogICAgICAgICAgICAgbV9wYXJzaW5nTW9kZSA9IE50
aENoaWxkTW9kZTsKKyAgICAgICAgZWxzZSBpZiAoaXNFcXVhbFRvQ1NTSWRlbnRpZmllcihuYW1l
LCAiZGlzdHJpYnV0ZWQiKSkKKyAgICAgICAgICAgIG1fdG9rZW4gPSBESVNUUklCVVRFREZVTkNU
SU9OOwogICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIDE0OgpAQCAtMTA2MDMsMTYgKzEwNjA1
LDI5IEBAIFF1YWxpZmllZE5hbWUgQ1NTUGFyc2VyOjpkZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2Uo
Y29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvCiAgICAgcmV0dXJuIFF1YWxpZmllZE5hbWUo
cHJlZml4LCBsb2NhbE5hbWUsIG1fc3R5bGVTaGVldC0+ZGV0ZXJtaW5lTmFtZXNwYWNlKHByZWZp
eCkpOwogfQogCi12b2lkIENTU1BhcnNlcjo6dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFt
ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5n
JiBlbGVtZW50TmFtZSwgQ1NTUGFyc2VyU2VsZWN0b3IqIHNwZWNpZmllcnMpCitDU1NQYXJzZXJT
ZWxlY3RvciogQ1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1l
bnROYW1lLCBDU1NQYXJzZXJTZWxlY3Rvciogc3BlY2lmaWVycykKIHsKICAgICBBdG9taWNTdHJp
bmcgZGV0ZXJtaW5lZE5hbWVzcGFjZSA9IG5hbWVzcGFjZVByZWZpeCAhPSBudWxsQXRvbSAmJiBt
X3N0eWxlU2hlZXQgPyBtX3N0eWxlU2hlZXQtPmRldGVybWluZU5hbWVzcGFjZShuYW1lc3BhY2VQ
cmVmaXgpIDogbV9kZWZhdWx0TmFtZXNwYWNlOwogICAgIFF1YWxpZmllZE5hbWUgdGFnID0gUXVh
bGlmaWVkTmFtZShuYW1lc3BhY2VQcmVmaXgsIGVsZW1lbnROYW1lLCBkZXRlcm1pbmVkTmFtZXNw
YWNlKTsKLSAgICBpZiAoIXNwZWNpZmllcnMtPmlzQ3VzdG9tUHNldWRvRWxlbWVudCgpKSB7Cisg
ICAgaWYgKCFzcGVjaWZpZXJzLT5pc0N1c3RvbVBzZXVkb0VsZW1lbnQoKSAmJiAhc3BlY2lmaWVy
cy0+aXNQc2V1ZG9EaXN0cmlidXRlZEVsZW1lbnQoKSkgewogI2lmIEVOQUJMRShWSURFT19UUkFD
SykKICAgICAgICAgaWYgKCEoc3BlY2lmaWVycy0+cHNldWRvVHlwZSgpID09IENTU1NlbGVjdG9y
OjpQc2V1ZG9DdWUpKQogI2VuZGlmCiAgICAgICAgICAgICBzcGVjaWZpZXJzLT5zZXRUYWcodGFn
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gc3BlY2lmaWVyczsKKyAgICB9CisK
KyAgICBpZiAoc3BlY2lmaWVycy0+aXNQc2V1ZG9EaXN0cmlidXRlZEVsZW1lbnQoKSkgeworICAg
ICAgICBDU1NQYXJzZXJTZWxlY3RvciogYXJndW1lbnRTZWxlY3RvciA9IHNwZWNpZmllcnMtPmZ1
bmN0aW9uQXJndW1lbnRTZWxlY3RvcigpOworICAgICAgICBBU1NFUlQoYXJndW1lbnRTZWxlY3Rv
cik7CisgICAgICAgIENTU1BhcnNlclNlbGVjdG9yKiBlbmQgPSBhcmd1bWVudFNlbGVjdG9yOwor
ICAgICAgICB3aGlsZSAoZW5kLT50YWdIaXN0b3J5KCkpCisgICAgICAgICAgICBlbmQgPSBlbmQt
PnRhZ0hpc3RvcnkoKTsKKyAgICAgICAgT3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBlbGVtZW50
TmFtZVNlbGVjdG9yID0gYWRvcHRQdHIobmV3IENTU1BhcnNlclNlbGVjdG9yKTsKKyAgICAgICAg
ZWxlbWVudE5hbWVTZWxlY3Rvci0+c2V0VGFnKHRhZyk7CisgICAgICAgIGVuZC0+c2V0VGFnSGlz
dG9yeShlbGVtZW50TmFtZVNlbGVjdG9yLnJlbGVhc2UoKSk7CisgICAgICAgIGVuZC0+c2V0UmVs
YXRpb24oQ1NTU2VsZWN0b3I6OlNoYWRvd0Rpc3RyaWJ1dGVkKTsKKyAgICAgICAgcmV0dXJuIGFy
Z3VtZW50U2VsZWN0b3I7CiAgICAgfQogCiAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGxhc3RTaGFk
b3dEZXNjZW5kYW50ID0gc3BlY2lmaWVyczsKQEAgLTEwNjI1LDcgKzEwNjQwLDcgQEAgdm9pZCBD
U1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lc3BhY2VQcmUKIAogICAgIGlmIChsYXN0U2hhZG93RGVzY2VuZGFudC0+dGFnSGlz
dG9yeSgpKSB7CiAgICAgICAgIGxhc3RTaGFkb3dEZXNjZW5kYW50LT50YWdIaXN0b3J5KCktPnNl
dFRhZyh0YWcpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBzcGVjaWZpZXJzOwog
ICAgIH0KIAogICAgIC8vIEZvciBzaGFkb3ctSUQgcHNldWRvLWVsZW1lbnRzIHRvIGJlIGNvcnJl
Y3RseSBtYXRjaGVkLCB0aGUgU2hhZG93RGVzY2VuZGFudCBjb21iaW5hdG9yIGhhcyB0byBiZSB1
c2VkLgpAQCAtMTA2MzQsNiArMTA2NDksNyBAQCB2b2lkIENTU1BhcnNlcjo6dXBkYXRlU3BlY2lm
aWVyc1dpdGhFbGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVByZQogICAg
IGVsZW1lbnROYW1lU2VsZWN0b3ItPnNldFRhZyh0YWcpOwogICAgIGxhc3RTaGFkb3dEZXNjZW5k
YW50LT5zZXRUYWdIaXN0b3J5KGVsZW1lbnROYW1lU2VsZWN0b3IucmVsZWFzZSgpKTsKICAgICBs
YXN0U2hhZG93RGVzY2VuZGFudC0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6OlNoYWRvd0Rlc2Nl
bmRhbnQpOworICAgIHJldHVybiBzcGVjaWZpZXJzOwogfQogCiBDU1NQYXJzZXJTZWxlY3Rvciog
Q1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzKENTU1BhcnNlclNlbGVjdG9yKiBzcGVjaWZpZXJz
LCBDU1NQYXJzZXJTZWxlY3RvciogbmV3U3BlY2lmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmlu
ZGV4IDM5MmZmOTg0MGM1YTZjODM5YzJmMjE0NDM3YWI3NTg0YmI3MjVhOWQuLmUxYTRlMmY3NTIx
ZGViM2E0Y2UyYzAzMGE1MTg2NWNmMTVmMmIwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAg
LTMwOSw3ICszMDksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZE5hbWVzcGFjZShjb25zdCBB
dG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiB1cmkpOwogICAgIFF1YWxp
ZmllZE5hbWUgZGV0ZXJtaW5lTmFtZUluTmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJl
Zml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSk7Ci0gICAgdm9pZCB1cGRhdGVTcGVj
aWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlZml4
LCBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnROYW1lLCBDU1NQYXJzZXJTZWxlY3RvciopOwor
ICAgIENTU1BhcnNlclNlbGVjdG9yKiB1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGVs
ZW1lbnROYW1lLCBDU1NQYXJzZXJTZWxlY3RvciopOwogICAgIENTU1BhcnNlclNlbGVjdG9yKiB1
cGRhdGVTcGVjaWZpZXJzKENTU1BhcnNlclNlbGVjdG9yKiwgQ1NTUGFyc2VyU2VsZWN0b3IqKTsK
IAogICAgIHZvaWQgaW52YWxpZEJsb2NrSGl0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJW
YWx1ZXMuY3BwCmluZGV4IGQyM2I4NTg1ZDVkN2JiOGViMGYyNjgyMzRiNmVkMDZhNTg4MWRmMjcu
LjUwMGQ3YjE0MDA0YTI0ZWJjMzUzZDJiZmVlYzE3MzM2MzBhNDM0YmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCkBAIC0xNDYsNiArMTQ2LDcgQEAgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gQ1NTUGFyc2VyVmFsdWU6OmNyZWF0ZUNTU1ZhbHVlKCkKIAogQ1NTUGFyc2VyU2Vs
ZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKCkKICAgICA6IG1fc2VsZWN0b3IoYWRvcHRQdHIoZmFz
dE5ldzxDU1NTZWxlY3Rvcj4oKSkpCisgICAgLCBtX2Z1bmN0aW9uQXJndW1lbnRTZWxlY3Rvcigw
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKaW5kZXggMTMwMWIxY2Uw
ZTExMzcyM2NjZjgyMTYyOGVlMDVlMmUzMTAyMzY3Yi4uMmRiMDRjNDY0OGUwOWE2MDhmZTc5NGNk
Y2I2MWZhZWVmMjMyMTNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
clZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaApAQCAt
MTg2LDggKzE4NiwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkb3B0U2VsZWN0b3JWZWN0b3Io
VmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiYgc2VsZWN0b3JWZWN0b3IpOwogCisg
ICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGZ1bmN0aW9uQXJndW1lbnRTZWxlY3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1fZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yOyB9CisgICAgdm9pZCBzZXRGdW5jdGlv
bkFyZ3VtZW50U2VsZWN0b3IoQ1NTUGFyc2VyU2VsZWN0b3IqIHNlbGVjdG9yKSB7IG1fZnVuY3Rp
b25Bcmd1bWVudFNlbGVjdG9yID0gc2VsZWN0b3I7IH0KKwogICAgIENTU1NlbGVjdG9yOjpQc2V1
ZG9UeXBlIHBzZXVkb1R5cGUoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yLT5wc2V1ZG9UeXBl
KCk7IH0KICAgICBib29sIGlzQ3VzdG9tUHNldWRvRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2VsZWN0b3ItPmlzQ3VzdG9tUHNldWRvRWxlbWVudCgpOyB9CisgICAgYm9vbCBpc1BzZXVkb0Rp
c3RyaWJ1dGVkRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3ItPmlzRGlzdHJpYnV0
ZWRQc2V1ZG9FbGVtZW50KCk7IH0KIAogICAgIGJvb2wgaXNTaW1wbGUoKSBjb25zdCB7IHJldHVy
biAhbV90YWdIaXN0b3J5ICYmIG1fc2VsZWN0b3ItPmlzU2ltcGxlKCk7IH0KICAgICBib29sIGhh
c1NoYWRvd0Rlc2NlbmRhbnQoKSBjb25zdDsKQEAgLTIwMCw2ICsyMDQsOCBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIE93blB0cjxDU1NTZWxlY3Rvcj4gbV9zZWxlY3RvcjsKICAgICBPd25QdHI8
Q1NTUGFyc2VyU2VsZWN0b3I+IG1fdGFnSGlzdG9yeTsKKworICAgIENTU1BhcnNlclNlbGVjdG9y
KiBtX2Z1bmN0aW9uQXJndW1lbnRTZWxlY3RvcjsKIH07CiAKIGlubGluZSBib29sIENTU1BhcnNl
clNlbGVjdG9yOjpoYXNTaGFkb3dEZXNjZW5kYW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3IuY3BwCmluZGV4IDVhNmVjY2FmYjk0MmMwZDZmYTczYTYyYjZmZmM3NDIxZjNjYWE5ZWMu
LjJkYzFkZjM4MTEzYzc1ODMxZjRkN2ZjN2EyMzM0NGFkNGI3ZTcwZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yLmNwcApAQCAtMTM5LDYgKzEzOSw4IEBAIFBzZXVkb0lkIENTU1NlbGVjdG9y
Ojpwc2V1ZG9JZChQc2V1ZG9UeXBlIHR5cGUpCiAgICAgICAgIHJldHVybiBCRUZPUkU7CiAgICAg
Y2FzZSBQc2V1ZG9BZnRlcjoKICAgICAgICAgcmV0dXJuIEFGVEVSOworICAgIGNhc2UgUHNldWRv
RGlzdHJpYnV0ZWQ6CisgICAgICAgIHJldHVybiBESVNUUklCVVRFRDsKICAgICBjYXNlIFBzZXVk
b1Njcm9sbGJhcjoKICAgICAgICAgcmV0dXJuIFNDUk9MTEJBUjsKICAgICBjYXNlIFBzZXVkb1Nj
cm9sbGJhckJ1dHRvbjoKQEAgLTI2MSw2ICsyNjMsNyBAQCBzdGF0aWMgSGFzaE1hcDxBdG9taWNT
dHJpbmdJbXBsKiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGU+KiBuYW1lVG9Qc2V1ZG9UeXBlTWFw
KAogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmaXJzdExpbmUsICgiZmly
c3QtbGluZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmlyc3RPZlR5cGUsICgiZmlyc3Qtb2YtdHlw
ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgZnVsbFBhZ2VNZWRpYSwgKCItd2Via2l0LWZ1bGwtcGFn
ZS1tZWRpYSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZGlzdHJpYnV0ZWQsICgiZGlzdHJpYnV0ZWQo
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBudGhDaGlsZCwgKCJudGgtY2hpbGQoIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBudGhPZlR5cGUsICgibnRoLW9mLXR5cGUoIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBudGhMYXN0Q2hpbGQsICgibnRoLWxhc3QtY2hpbGQoIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOwpAQCAtMzQzLDYgKzM0Niw3IEBAIHN0YXRpYyBIYXNoTWFwPEF0b21p
Y1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVkb1R5cGVN
YXAoCiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChmdWxsUGFnZU1lZGlhLmltcGwoKSwg
Q1NTU2VsZWN0b3I6OlBzZXVkb0Z1bGxQYWdlTWVkaWEpOwogICAgICAgICBuYW1lVG9Qc2V1ZG9U
eXBlLT5zZXQobGFzdENoaWxkLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0xhc3RDaGlsZCk7
CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChsYXN0T2ZUeXBlLmltcGwoKSwgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0xhc3RPZlR5cGUpOworICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQo
ZGlzdHJpYnV0ZWQuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvRGlzdHJpYnV0ZWQpOwogICAg
ICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQob25seUNoaWxkLmltcGwoKSwgQ1NTU2VsZWN0b3I6
OlBzZXVkb09ubHlDaGlsZCk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChvbmx5T2ZU
eXBlLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb09ubHlPZlR5cGUpOwogICAgICAgICBuYW1l
VG9Qc2V1ZG9UeXBlLT5zZXQoZmlyc3RMZXR0ZXIuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRv
Rmlyc3RMZXR0ZXIpOwpAQCAtNDQ4LDYgKzQ1Miw3IEBAIHZvaWQgQ1NTU2VsZWN0b3I6OmV4dHJh
Y3RQc2V1ZG9UeXBlKCkgY29uc3QKICAgICBjYXNlIFBzZXVkb0ZpcnN0TGV0dGVyOgogICAgIGNh
c2UgUHNldWRvRmlyc3RMaW5lOgogICAgICAgICBjb21wYXQgPSB0cnVlOworICAgIGNhc2UgUHNl
dWRvRGlzdHJpYnV0ZWQ6CiAgICAgY2FzZSBQc2V1ZG9SZXNpemVyOgogICAgIGNhc2UgUHNldWRv
U2Nyb2xsYmFyOgogICAgIGNhc2UgUHNldWRvU2Nyb2xsYmFyQ29ybmVyOgpAQCAtNjg0LDYgKzY4
OSw4IEBAIFN0cmluZyBDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KCkgY29uc3QKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFk
b3dEZXNjZW5kYW50OgogICAgICAgICAgICAgcmV0dXJuIHRhZ0hpc3RvcnlUZXh0ICsgc3RyLnRv
U3RyaW5nKCk7CisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rpc3RyaWJ1dGVkOgor
ICAgICAgICAgICAgcmV0dXJuIHRhZ0hpc3RvcnlUZXh0ICsgIjo6ZGlzdHJpYnV0ZWQoIiArIHN0
ci50b1N0cmluZygpICsgIikiOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxl
Y3Rvci5oCmluZGV4IDA2NDk4ZjRlYzc4MTJjNjY5YTU2NzIzNWU1NWE5OWU0NThmZGEyNTIuLmZh
NjgzZWZhMTE5YmRlMjdlNzM5MzcxMTg4ZmVjNjVhNWMxM2NjMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvci5oCkBAIC03Niw3ICs3Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
ICAgIERpcmVjdEFkamFjZW50LAogICAgICAgICAgICAgSW5kaXJlY3RBZGphY2VudCwKICAgICAg
ICAgICAgIFN1YlNlbGVjdG9yLAotICAgICAgICAgICAgU2hhZG93RGVzY2VuZGFudAorICAgICAg
ICAgICAgU2hhZG93RGVzY2VuZGFudCwKKyAgICAgICAgICAgIFNoYWRvd0Rpc3RyaWJ1dGVkLAog
ICAgICAgICB9OwogCiAgICAgICAgIGVudW0gUHNldWRvVHlwZSB7CkBAIC0xMTksNiArMTIwLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgUHNldWRvVGFyZ2V0LAogICAgICAg
ICAgICAgUHNldWRvQmVmb3JlLAogICAgICAgICAgICAgUHNldWRvQWZ0ZXIsCisgICAgICAgICAg
ICBQc2V1ZG9EaXN0cmlidXRlZCwKICAgICAgICAgICAgIFBzZXVkb0xhbmcsCiAgICAgICAgICAg
ICBQc2V1ZG9Ob3QsCiAgICAgICAgICAgICBQc2V1ZG9SZXNpemVyLApAQCAtMjIxLDggKzIyMywx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbWF0Y2hlc1BzZXVkb0VsZW1l
bnQoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc1Vua25vd25Qc2V1ZG9FbGVtZW50KCkgY29uc3Q7
CiAgICAgICAgIGJvb2wgaXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkgY29uc3Q7CisgICAgICAgIGJv
b2wgaXNEaXN0cmlidXRlZFBzZXVkb0VsZW1lbnQoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc1Np
YmxpbmdTZWxlY3RvcigpIGNvbnN0OwogICAgICAgICBib29sIGlzQXR0cmlidXRlU2VsZWN0b3Io
KSBjb25zdDsKKyAgICAgICAgYm9vbCBpc1NoYWRvd0Rpc3RyaWJ1dGVkKCkgY29uc3Q7CiAKICAg
ICAgICAgUmVsYXRpb24gcmVsYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZWxh
dGlvbj4obV9yZWxhdGlvbik7IH0KIApAQCAtMzA2LDYgKzMxMCwxMiBAQCBpbmxpbmUgYm9vbCBD
U1NTZWxlY3Rvcjo6aXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9t
YXRjaCA9PSBQc2V1ZG9FbGVtZW50ICYmIChtX3BzZXVkb1R5cGUgPT0gUHNldWRvVXNlckFnZW50
Q3VzdG9tRWxlbWVudCB8fCBtX3BzZXVkb1R5cGUgPT0gUHNldWRvV2ViS2l0Q3VzdG9tRWxlbWVu
dCk7CiB9CiAKK2lubGluZSBib29sIENTU1NlbGVjdG9yOjppc0Rpc3RyaWJ1dGVkUHNldWRvRWxl
bWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWF0Y2ggPT0gUHNldWRvRWxlbWVudCAmJiBw
c2V1ZG9UeXBlKCkgPT0gUHNldWRvRGlzdHJpYnV0ZWQ7CisKK30KKwogaW5saW5lIGJvb2wgQ1NT
U2VsZWN0b3I6OmlzU2libGluZ1NlbGVjdG9yKCkgY29uc3QKIHsKICAgICBQc2V1ZG9UeXBlIHR5
cGUgPSBwc2V1ZG9UeXBlKCk7CkBAIC0zMzUsNiArMzQ1LDExIEBAIGlubGluZSBib29sIENTU1Nl
bGVjdG9yOjppc0F0dHJpYnV0ZVNlbGVjdG9yKCkgY29uc3QKICAgICAgICAgfHwgbV9tYXRjaCA9
PSBDU1NTZWxlY3Rvcjo6RW5kOwogfQogCitpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6aXNTaGFk
b3dEaXN0cmlidXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVsYXRpb24gPT0gQ1NTU2Vs
ZWN0b3I6OlNoYWRvd0Rpc3RyaWJ1dGVkOworfQorCiBpbmxpbmUgdm9pZCBDU1NTZWxlY3Rvcjo6
c2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyBOZWVkIHRvIGRv
IHJlZiBjb3VudGluZyBtYW51YWxseSBmb3IgdGhlIHVuaW9uLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3JMaXN0LmNwcAppbmRleCA0MzEzNmQxYzkwMWM2MzQxYmFjYmVmODM5NDlkZjk0ZTYw
ZjFjMzZjLi5hMDc2ZmMzNzY5MjE3NDY3NGE3MDYxNzQ4OWJkOTc2MmVmMDY3Y2JkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyVmFsdWVzLmgiCisj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtMjExLDYg
KzIxMiwyMSBAQCBib29sIENTU1NlbGVjdG9yTGlzdDo6aGFzSW52YWxpZFNlbGVjdG9yKCkgY29u
c3QKICAgICByZXR1cm4gZm9yRWFjaFNlbGVjdG9yKGZ1bmN0b3IsIHRoaXMpOwogfQogCisjaWYg
RU5BQkxFKFNIQURPV19ET00pCitjbGFzcyBTZWxlY3Rvckhhc1NoYWRvd0Rpc3RyaWJ1dGVkIHsK
K3B1YmxpYzoKKyAgICBib29sIG9wZXJhdG9yKCkoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHNlbGVjdG9yLT5pc1NoYWRvd0Rpc3RyaWJ1dGVkKCk7CisgICAg
fQorfTsKKworYm9vbCBDU1NTZWxlY3Rvckxpc3Q6Omhhc1NoYWRvd0Rpc3RyaWJ1dGVkQXQoc2l6
ZV90IGluZGV4KSBjb25zdAoreworICAgIFNlbGVjdG9ySGFzU2hhZG93RGlzdHJpYnV0ZWQgZnVu
Y3RvcjsKKyAgICByZXR1cm4gZm9yRWFjaFRhZ1NlbGVjdG9yKGZ1bmN0b3IsIHNlbGVjdG9yQXQo
aW5kZXgpKTsKK30KIAorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvckxpc3QuaAppbmRleCA0ZmNmZWUyZmFhNDE4MmQ3YTlhYjA1NWJjY2U1
MTlmZTc0ZTIyNzE1Li40ZTdiNTgyZGJjNTExOGE0NWU0NmRiYmYwY2Q4OTRhOWY3NDNmNmIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCkBAIC02MCw2ICs2MCwxMCBAQCBwdWJs
aWM6CiAgICAgYm9vbCBzZWxlY3RvcnNOZWVkTmFtZXNwYWNlUmVzb2x1dGlvbigpOwogICAgIGJv
b2wgaGFzSW52YWxpZFNlbGVjdG9yKCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
KyAgICBib29sIGhhc1NoYWRvd0Rpc3RyaWJ1dGVkQXQoc2l6ZV90IGluZGV4KSBjb25zdDsKKyNl
bmRpZgorCiAgICAgU3RyaW5nIHNlbGVjdG9yc1RleHQoKSBjb25zdDsKIAogICAgIHZvaWQgcmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQu
Y3BwCmluZGV4IGQ4NDAwNGQ5Y2NjMTQ4NDNlNGI0MGE2YmQ2MmFjNzJhOGRmYjIyZWIuLmYyNDlh
ZTk2MWRjZDQ4NDEwMDczM2E0YTA4N2IxMGFjZjA4ZmM3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5j
cHAKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KFN0
eWxlU2hlZXRDb250ZW50cyogc2hlZXQsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdQogCiAgICAgICAg
IEFTU0VSVCghcnVsZS0+aXNJbXBvcnRSdWxlKCkpOwogICAgICAgICBpZiAocnVsZS0+aXNTdHls
ZVJ1bGUoKSkKLSAgICAgICAgICAgIGFkZFN0eWxlUnVsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGUq
PihydWxlKSwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAgICAgIHJlc29sdmVyLT5hZGRTdHlsZVJ1
bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlKj4ocnVsZSksIGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9k
ZSo+KHNjb3BlKSwgdGhpcywgYWRkUnVsZUZsYWdzKTsKICAgICAgICAgZWxzZSBpZiAocnVsZS0+
aXNQYWdlUnVsZSgpKQogICAgICAgICAgICAgYWRkUGFnZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5bGVS
dWxlUGFnZSo+KHJ1bGUpKTsKICAgICAgICAgZWxzZSBpZiAocnVsZS0+aXNNZWRpYVJ1bGUoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCBjYTczYWE0ZjI2NjZm
N2VlOGI2YzU4MjE0ZjcyZDE0ZTg5ZGY3YTgzLi45MTMyYzM5ZGJiMDQ0YjA4YWMxOTNlYTQzNWQ5
NjYzM2JiNDNlMmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAt
NDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTFByb2dyZXNzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKKyNp
bmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
QEAgLTI4MSw4ICsyODIsMTMgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVj
dG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWMKIAogICAgIC8vIFBy
ZXBhcmUgbmV4dCBzZWxlY3RvcgogICAgIENTU1NlbGVjdG9yKiBoaXN0b3J5U2VsZWN0b3IgPSBj
b250ZXh0LnNlbGVjdG9yLT50YWdIaXN0b3J5KCk7Ci0gICAgaWYgKCFoaXN0b3J5U2VsZWN0b3Ip
CisgICAgaWYgKCFoaXN0b3J5U2VsZWN0b3IpIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAg
ICAgICAgaWYgKGNvbnRleHQuc2NvcGVPZkxhc3RFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJu
IGNvbnRleHQuZWxlbWVudC0+aXNEZXNjZW5kYW50T2YoY29udGV4dC5zY29wZU9mTGFzdEVsZW1l
bnQpID8gU2VsZWN0b3JNYXRjaGVzIDogU2VsZWN0b3JGYWlsc0xvY2FsbHk7CisjZW5kaWYKICAg
ICAgICAgcmV0dXJuIFNlbGVjdG9yTWF0Y2hlczsKKyAgICB9CiAKICAgICBTZWxlY3RvckNoZWNr
aW5nQ29udGV4dCBuZXh0Q29udGV4dChjb250ZXh0KTsKICAgICBuZXh0Q29udGV4dC5zZWxlY3Rv
ciA9IGhpc3RvcnlTZWxlY3RvcjsKQEAgLTM4NCw2ICszOTAsMjUgQEAgU2VsZWN0b3JDaGVja2Vy
OjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxl
Y3RvckNoZWMKICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9IDA7
CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihuZXh0Q29udGV4dCwgaWdub3JlRHlu
YW1pY1BzZXVkbyk7CiAgICAgICAgIH0KKworICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rp
c3RyaWJ1dGVkOgorICAgICAgICB7CisgICAgICAgICAgICBWZWN0b3I8SW5zZXJ0aW9uUG9pbnQq
LCA4PiBpbnNlcnRpb25Qb2ludHM7CisgICAgICAgICAgICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQg
PSBjb250ZXh0LmVsZW1lbnQ7IGVsZW1lbnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVt
ZW50KCkpIHsKKyAgICAgICAgICAgICAgICBpbnNlcnRpb25Qb2ludHMuY2xlYXIoKTsKKyAgICAg
ICAgICAgICAgICBjb2xsZWN0QWxsTWlkcG9pbnRJbnNlcnRpb25Qb2ludHMoZWxlbWVudCwgaW5z
ZXJ0aW9uUG9pbnRzKTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlu
c2VydGlvblBvaW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBuZXh0Q29u
dGV4dC5lbGVtZW50ID0gaW5zZXJ0aW9uUG9pbnRzW2ldOworICAgICAgICAgICAgICAgICAgICBu
ZXh0Q29udGV4dC5pc1N1YlNlbGVjdG9yID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIG5l
eHRDb250ZXh0LmVsZW1lbnRTdHlsZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIG5leHRDb250
ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIFNlbGVjdG9y
TWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKG5leHRDb250ZXh0LCBpZ25vcmVEeW5hbWljUHNl
dWRvKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoID09IFNlbGVjdG9yTWF0Y2hlcyB8
fCBtYXRjaCA9PSBTZWxlY3RvckZhaWxzQ29tcGxldGVseSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBtYXRjaDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CisgICAgICAgIH0KICAgICB9
CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TZWxlY3RvckNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNr
ZXIuaAppbmRleCAzMzE5M2Y3NmJjMzI4MjZhZDBkM2VlNjE0NTE1YjliYWM1ZDI1MjBiLi5kOTY2
ZDJlNTdkODVmNDA0NTZkMDFhNjZhYzIyMGIxNzQ4ODIwYzc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlci5oCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICwg
aXNTdWJTZWxlY3RvcihmYWxzZSkKICAgICAgICAgICAgICwgaGFzU2Nyb2xsYmFyUHNldWRvKGZh
bHNlKQogICAgICAgICAgICAgLCBoYXNTZWxlY3Rpb25Qc2V1ZG8oZmFsc2UpCisgICAgICAgICAg
ICAsIHNjb3BlT2ZMYXN0RWxlbWVudCgwKQogICAgICAgICB7IH0KIAogICAgICAgICBDU1NTZWxl
Y3Rvciogc2VsZWN0b3I7CkBAIC03NSw2ICs3Niw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBp
c1N1YlNlbGVjdG9yOwogICAgICAgICBib29sIGhhc1Njcm9sbGJhclBzZXVkbzsKICAgICAgICAg
Ym9vbCBoYXNTZWxlY3Rpb25Qc2V1ZG87CisgICAgICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHNj
b3BlT2ZMYXN0RWxlbWVudDsKICAgICB9OwogCiAgICAgYm9vbCBjaGVja1NlbGVjdG9yKENTU1Nl
bGVjdG9yKiwgRWxlbWVudCosIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IgPSBmYWxzZSkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcAppbmRleCBjZWFhNzY4MTQ5
MDBjMGIzMWQzOTRjNGYyNmNjNGNiYjVlMzVlOGRjLi4zYjRkNjQwNGI3YzdjZjFmOWI0NGVjMzVm
NGE5YTQ5ZDM3Mzg5ZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JG
aWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAKQEAg
LTE0OCw2ICsxNDgsNyBAQCB2b2lkIFNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0SWRlbnRpZmllckhh
c2hlcyhjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIHVuc2lnbgogICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpEaXJlY3RBZGphY2VudDoKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6SW5k
aXJlY3RBZGphY2VudDoKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2hhZG93RGVzY2VuZGFu
dDoKKyAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2hhZG93RGlzdHJpYnV0ZWQ6CiAgICAgICAg
ICAgICBza2lwT3ZlclN1YnNlbGVjdG9ycyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcAppbmRleCAwOThlMGQ1N2MwYjdlMWQ3NGVkMTUwOGY3ZTkwMGQ1MTZjMmU5NzBk
Li5mNTFjZmZiMmUwNGFlODg3YjdlZDQwZTkwZjk5NWRmZjEyNDA2NmJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0zNjQsNiArMzY0LDkgQEAgdm9pZCBTdHlsZVJlc29s
dmVyOjpyZXNldEF1dGhvclN0eWxlKCkKIHsKICAgICBtX2F1dGhvclN0eWxlID0gUnVsZVNldDo6
Y3JlYXRlKCk7CiAgICAgbV9hdXRob3JTdHlsZS0+ZGlzYWJsZUF1dG9TaHJpbmtUb0ZpdCgpOwor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFw
LmNsZWFyKCk7CisjZW5kaWYKIH0KIAogdm9pZCBTdHlsZVJlc29sdmVyOjphcHBlbmRBdXRob3JT
dHlsZVNoZWV0cyh1bnNpZ25lZCBmaXJzdE5ldywgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHls
ZVNoZWV0PiA+JiBzdHlsZVNoZWV0cykKQEAgLTQ0OCw2ICs0NTEsMzIgQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjphZGRLZXlmcmFtZVN0eWxlKFBhc3NSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPiBy
dWxlKQogICAgIG1fa2V5ZnJhbWVzUnVsZU1hcC5zZXQocy5pbXBsKCksIHJ1bGUpOwogfQogCit2
b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZFN0eWxlUnVsZShTdHlsZVJ1bGUqIHJ1bGUsIENvbnRhaW5l
ck5vZGUqIHNjb3BlLCBSdWxlU2V0KiBydWxlU2V0LCBBZGRSdWxlRmxhZ3MgYWRkUnVsZUZsYWdz
KQoreworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGlmICghc2NvcGUpIHsKKyAgICAgICAg
cnVsZVNldC0+YWRkU3R5bGVSdWxlKHJ1bGUsIGFkZFJ1bGVGbGFncyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QgPSBydWxl
LT5zZWxlY3Rvckxpc3QoKTsKKyAgICBmb3IgKHNpemVfdCBzZWxlY3RvckluZGV4ID0gMDsgc2Vs
ZWN0b3JJbmRleCAhPSBub3RGb3VuZDsgc2VsZWN0b3JJbmRleCA9IHNlbGVjdG9yTGlzdC5pbmRl
eE9mTmV4dFNlbGVjdG9yQWZ0ZXIoc2VsZWN0b3JJbmRleCkpIHsKKyAgICAgICAgaWYgKHNlbGVj
dG9yTGlzdC5oYXNTaGFkb3dEaXN0cmlidXRlZEF0KHNlbGVjdG9ySW5kZXgpKSB7CisgICAgICAg
ICAgICBpZiAobV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAuY29udGFpbnMoc2NvcGUpKQor
ICAgICAgICAgICAgICAgIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLmdldChzY29wZSkt
PmFkZFJ1bGUocnVsZSwgc2VsZWN0b3JJbmRleCwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgIE93blB0cjxSdWxlU2V0PiBydWxlU2V0Rm9yU2NvcGUg
PSBhZG9wdFB0cihuZXcgUnVsZVNldCgpKTsKKyAgICAgICAgICAgICAgICBydWxlU2V0Rm9yU2Nv
cGUtPmFkZFJ1bGUocnVsZSwgc2VsZWN0b3JJbmRleCwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAg
ICAgICAgICBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5hZGQoc2NvcGUsIHJ1bGVTZXRG
b3JTY29wZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIHJ1bGVTZXQtPmFkZFJ1bGUocnVsZSwgc2VsZWN0b3JJbmRleCwgYWRkUnVsZUZsYWdz
KTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzY29wZSk7CisgICAgcnVsZVNldC0+
YWRkU3R5bGVSdWxlKHJ1bGUsIGFkZFJ1bGVGbGFncyk7CisjZW5kaWYKK30KKwogU3R5bGVSZXNv
bHZlcjo6flN0eWxlUmVzb2x2ZXIoKQogewogICAgIG1fZm9udFNlbGVjdG9yLT5jbGVhckRvY3Vt
ZW50KCk7CkBAIC02NjQsNyArNjkzLDggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0
Y2hpbmdSdWxlcyhSdWxlU2V0KiBydWxlcywgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW4KICAgICBU
cmVlU2NvcGUqIHRyZWVTY29wZSA9IG1fZWxlbWVudC0+dHJlZVNjb3BlKCk7CiAgICAgaWYgKCFN
YXRjaGluZ1VBUnVsZXNTY29wZTo6aXNNYXRjaGluZ1VBUnVsZXMoKQogICAgICAgICAmJiAhdHJl
ZVNjb3BlLT5hcHBseUF1dGhvclN0eWxlcygpCi0gICAgICAgICYmICghb3B0aW9ucy5zY29wZSB8
fCBvcHRpb25zLnNjb3BlLT50cmVlU2NvcGUoKSAhPSB0cmVlU2NvcGUpKQorICAgICAgICAmJiAo
IW9wdGlvbnMuc2NvcGUgfHwgb3B0aW9ucy5zY29wZS0+dHJlZVNjb3BlKCkgIT0gdHJlZVNjb3Bl
KQorICAgICAgICAmJiAhb3B0aW9ucy5zY29wZU9mTGFzdEVsZW1lbnQpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIC8vIFdlIG5lZWQgdG8gY29sbGVjdCB0aGUgcnVsZXMgZm9yIGlkLCBjbGFzcywg
dGFnLCBhbmQgZXZlcnl0aGluZyBlbHNlIGludG8gYSBidWZmZXIgYW5kCkBAIC03OTksNiArODI5
LDE3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hIb3N0UnVsZXMoTWF0Y2hSZXN1bHQmIHJl
c3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKFNI
QURPV19ET00pCit2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoU2hhZG93RGlzdHJpYnV0ZWRSdWxl
cyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQoreworICAgIGZv
ciAoU2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwOjppdGVyYXRvciBpdCA9IG1fc2hhZG93RGlz
dHJpYnV0ZWRSdWxlU2V0TWFwLmJlZ2luKCk7IGl0ICE9IG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxl
U2V0TWFwLmVuZCgpOyArK2l0KSB7CisgICAgICAgIE1hdGNoT3B0aW9ucyBvcHRpb25zKGluY2x1
ZGVFbXB0eVJ1bGVzLCAwKTsKKyAgICAgICAgb3B0aW9ucy5zY29wZU9mTGFzdEVsZW1lbnQgPSBp
dC0+a2V5OworICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhpdC0+dmFsdWUuZ2V0KCksIHJl
c3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxl
LCBvcHRpb25zKTsKKyAgICB9Cit9CisjZW5kaWYKKwogdm9pZCBTdHlsZVJlc29sdmVyOjptYXRj
aEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMp
CiB7CiAgICAgbV9tYXRjaGVkUnVsZXMuY2xlYXIoKTsKQEAgLTgxMSw2ICs4NTIsOSBAQCB2b2lk
IFN0eWxlUmVzb2x2ZXI6Om1hdGNoQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9v
bCBpbmNsdWRlRW1wdHlSdWxlcwogICAgIE1hdGNoT3B0aW9ucyBvcHRpb25zKGluY2x1ZGVFbXB0
eVJ1bGVzKTsKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhtX2F1dGhvclN0eWxlLmdldCgpLCBy
ZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVs
ZSwgb3B0aW9ucyk7CiAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24obV9hdXRob3JT
dHlsZS5nZXQoKSwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMu
bGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIG1h
dGNoU2hhZG93RGlzdHJpYnV0ZWRSdWxlcyhyZXN1bHQsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyNl
bmRpZgogICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhyZXN1bHQpOwogCiAgICAgbWF0
Y2hTY29wZWRBdXRob3JSdWxlcyhyZXN1bHQsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKQEAgLTg0Nyw3
ICs4OTEsMTEgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxp
c3QoY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogcnVsZXMsIGkKIAogICAgIC8vIEluIHNvbWUgY2Fz
ZXMgd2UgbWF5IGVuZCB1cCBsb29raW5nIHVwIHN0eWxlIGZvciByYW5kb20gZWxlbWVudHMgaW4g
dGhlIG1pZGRsZSBvZiBhIHJlY3Vyc2l2ZSB0cmVlIHJlc29sdmUuCiAgICAgLy8gQW5jZXN0b3Ig
aWRlbnRpZmllciBmaWx0ZXIgd29uJ3QgYmUgdXAtdG8tZGF0ZSBpbiB0aGF0IGNhc2UgYW5kIHdl
IGNhbid0IHVzZSB0aGUgZmFzdCBwYXRoLgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGJv
b2wgY2FuVXNlRmFzdFJlamVjdCA9IG1fc2VsZWN0b3JGaWx0ZXIucGFyZW50U3RhY2tJc0NvbnNp
c3RlbnQobV9wYXJlbnROb2RlKSAmJiAhb3B0aW9ucy5zY29wZU9mTGFzdEVsZW1lbnQ7CisjZWxz
ZQogICAgIGJvb2wgY2FuVXNlRmFzdFJlamVjdCA9IG1fc2VsZWN0b3JGaWx0ZXIucGFyZW50U3Rh
Y2tJc0NvbnNpc3RlbnQobV9wYXJlbnROb2RlKTsKKyNlbmRpZgogCiAgICAgdW5zaWduZWQgc2l6
ZSA9IHJ1bGVzLT5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgewpAQCAtODU3LDcgKzkwNSw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNo
aW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIHJ1bGVzLCBpCiAKICAgICAg
ICAgU3R5bGVSdWxlKiBydWxlID0gcnVsZURhdGEucnVsZSgpOwogICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsTWF0Y2hSdWxlKGRvY3VtZW50KCksIHJ1bGUsIHRoaXMpOwotICAgICAgICBpZiAoY2hlY2tT
ZWxlY3RvcihydWxlRGF0YSwgb3B0aW9ucy5zY29wZSkpIHsKKyAgICAgICAgaWYgKGNoZWNrU2Vs
ZWN0b3IocnVsZURhdGEsIG9wdGlvbnMuc2NvcGUsIG9wdGlvbnMuc2NvcGVPZkxhc3RFbGVtZW50
KSkgewogICAgICAgICAgICAgLy8gSWYgdGhlIHJ1bGUgaGFzIG5vIHByb3BlcnRpZXMgdG8gYXBw
bHksIHRoZW4gaWdub3JlIGl0IGluIHRoZSBub24tZGVidWcgbW9kZS4KICAgICAgICAgICAgIGNv
bnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMgPSBydWxlLT5wcm9wZXJ0aWVzKCk7CiAg
ICAgICAgICAgICBpZiAoIXByb3BlcnRpZXMgfHwgKHByb3BlcnRpZXMtPmlzRW1wdHkoKSAmJiAh
b3B0aW9ucy5pbmNsdWRlRW1wdHlSdWxlcykpIHsKQEAgLTIyMzgsNyArMjI4Niw3IEBAIFBhc3NS
ZWZQdHI8Q1NTUnVsZUxpc3Q+IFN0eWxlUmVzb2x2ZXI6OnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVt
ZW50KEVsZW1lbnQqIGUsIFBzCiAgICAgcmV0dXJuIG1fcnVsZUxpc3QucmVsZWFzZSgpOwogfQog
Ci1pbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFJ1bGVEYXRh
JiBydWxlRGF0YSwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUpCitpbmxpbmUgYm9vbCBTdHls
ZVJlc29sdmVyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgY29uc3Qg
Q29udGFpbmVyTm9kZSogc2NvcGUsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlT2ZMYXN0RWxl
bWVudCkKIHsKICAgICBtX2R5bmFtaWNQc2V1ZG8gPSBOT1BTRVVETzsKIApAQCAtMjI2Myw2ICsy
MzExLDcgQEAgaW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBS
dWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0IENvbnRhaW4KICAgICBjb250ZXh0LmVsZW1lbnRTdHls
ZSA9IHN0eWxlKCk7CiAgICAgY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgPSBtX3BhcmVudE5v
ZGUgPyBtX3BhcmVudE5vZGUtPnJlbmRlclN0eWxlKCkgOiAwOwogICAgIGNvbnRleHQuc2NvcGUg
PSBzY29wZTsKKyAgICBjb250ZXh0LnNjb3BlT2ZMYXN0RWxlbWVudCA9IHNjb3BlT2ZMYXN0RWxl
bWVudDsKICAgICBjb250ZXh0LnBzZXVkb1N0eWxlID0gbV9wc2V1ZG9TdHlsZTsKICAgICBTZWxl
Y3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBtX3NlbGVjdG9yQ2hlY2tlci5jaGVj
a1NlbGVjdG9yKGNvbnRleHQsIG1fZHluYW1pY1BzZXVkbyk7CiAgICAgaWYgKG1hdGNoICE9IFNl
bGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmgKaW5kZXggNWJkMjk0MGU1N2YyOTgyMWZlNjEzZWEwZThhMzliZmRmYjg4ZDA3ZC4uZDMzZGQ3
Mzk5NDI1ZjAzZGQ2ZjcyMjhhZjJiMzc2MzExYjNmOTZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgog
I2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUnVsZUZlYXR1cmUuaCIKKyNpbmNs
dWRlICJSdWxlU2V0LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2lu
Y2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgIlNlbGVjdG9yRmlsdGVyLmgiCkBA
IC03Niw3ICs3Nyw2IEBAIGNsYXNzIE1lZGlhUXVlcnlFdmFsdWF0b3I7CiBjbGFzcyBOb2RlOwog
Y2xhc3MgUmVuZGVyUmVnaW9uOwogY2xhc3MgUnVsZURhdGE7Ci1jbGFzcyBSdWxlU2V0OwogY2xh
c3MgU2V0dGluZ3M7CiBjbGFzcyBTdGF0aWNDU1NSdWxlTGlzdDsKIGNsYXNzIFN0eWxlQnVpbGRl
cjsKQEAgLTI2NSw2ICsyNjUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZEtleWZyYW1lU3R5
bGUoUGFzc1JlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+KTsKIAorICAgIHZvaWQgYWRkU3R5bGVS
dWxlKFN0eWxlUnVsZSosIENvbnRhaW5lck5vZGUqIHNjb3BlLCBSdWxlU2V0KiwgQWRkUnVsZUZs
YWdzKTsKKwogICAgIGJvb2wgY2hlY2tSZWdpb25TdHlsZShFbGVtZW50KiByZWdpb25FbGVtZW50
KTsKIAogICAgIGJvb2wgdXNlc1NpYmxpbmdSdWxlcygpIGNvbnN0IHsgcmV0dXJuICFtX2ZlYXR1
cmVzLnNpYmxpbmdSdWxlcy5pc0VtcHR5KCk7IH0KQEAgLTM0Myw5ICszNDUsMTAgQEAgcHJpdmF0
ZToKICAgICB9OwogCiAgICAgc3RydWN0IE1hdGNoT3B0aW9ucyB7Ci0gICAgICAgIE1hdGNoT3B0
aW9ucyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9
IDApIDogc2NvcGUoc2NvcGUpLCBpbmNsdWRlRW1wdHlSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcykg
eyB9CisgICAgICAgIE1hdGNoT3B0aW9ucyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBjb25zdCBD
b250YWluZXJOb2RlKiBzY29wZSA9IDApIDogc2NvcGUoc2NvcGUpLCBpbmNsdWRlRW1wdHlSdWxl
cyhpbmNsdWRlRW1wdHlSdWxlcyksIHNjb3BlT2ZMYXN0RWxlbWVudCgwKSB7IH0KICAgICAgICAg
Y29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGU7CiAgICAgICAgIGJvb2wgaW5jbHVkZUVtcHR5UnVs
ZXM7CisgICAgICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlT2ZMYXN0RWxlbWVudDsKICAg
ICB9OwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWF0Y2hlZFByb3BlcnRpZXMoTWF0Y2hSZXN1bHQm
LCBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzLCBTdHlsZVJ1bGUqID0gMCwgdW5z
aWduZWQgbGlua01hdGNoVHlwZSA9IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hBbGwsIGJvb2wgaW5S
ZWdpb25SdWxlID0gZmFsc2UpOwpAQCAtMzU4LDYgKzM2MSwxMCBAQCBwcml2YXRlOgogICAgIHZv
aWQgbWF0Y2hVc2VyUnVsZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsK
ICAgICB2b2lkIG1hdGNoU2NvcGVkQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1
ZGVFbXB0eVJ1bGVzKTsKICAgICB2b2lkIG1hdGNoSG9zdFJ1bGVzKE1hdGNoUmVzdWx0JiwgYm9v
bCBpbmNsdWRlRW1wdHlSdWxlcyk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgdm9pZCBt
YXRjaFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1ZGVFbXB0
eVJ1bGVzKTsKKyNlbmRpZgorCiAgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhSdWxlU2V0
KiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4LCBjb25zdCBNYXRjaE9w
dGlvbnMmKTsKICAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKFJ1bGVTZXQq
LCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0
aW9ucyYpOwogICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3Rv
cjxSdWxlRGF0YT4qLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGNv
bnN0IE1hdGNoT3B0aW9ucyYpOwpAQCAtMzY1LDcgKzM3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzb3J0TWF0Y2hlZFJ1bGVzKCk7CiAgICAgdm9pZCBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVs
ZXMoTWF0Y2hSZXN1bHQmKTsKIAotICAgIGJvb2wgY2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0
YSYsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKTsKKyAgICBib29sIGNoZWNrU2VsZWN0b3Io
Y29uc3QgUnVsZURhdGEmLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSwgY29uc3QgQ29udGFp
bmVyTm9kZSogc2NvcGVPZkxhc3RFbGVtZW50KTsKICAgICBib29sIGNoZWNrUmVnaW9uU2VsZWN0
b3IoQ1NTU2VsZWN0b3IqIHJlZ2lvblNlbGVjdG9yLCBFbGVtZW50KiByZWdpb25FbGVtZW50KTsK
ICAgICB2b2lkIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBjb25z
dCBFbGVtZW50Kik7CiAgICAgZW51bSBTdHlsZUFwcGxpY2F0aW9uUGFzcyB7CkBAIC0zOTYsNiAr
NDAzLDExIEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFJ1bGVTZXQ+IG1fYXV0aG9yU3R5bGU7CiAg
ICAgT3duUHRyPFJ1bGVTZXQ+IG1fdXNlclN0eWxlOwogCisjaWYgRU5BQkxFKFNIQURPV19ET00p
CisgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IENvbnRhaW5lck5vZGUqLCBPd25QdHI8UnVsZVNl
dD4gPiBTaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXA7CisgICAgU2hhZG93RGlzdHJpYnV0ZWRS
dWxlU2V0TWFwIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwOworI2VuZGlmCisKICAgICBS
dWxlRmVhdHVyZVNldCBtX2ZlYXR1cmVzOwogICAgIE93blB0cjxSdWxlU2V0PiBtX3NpYmxpbmdS
dWxlU2V0OwogICAgIE93blB0cjxSdWxlU2V0PiBtX3VuY29tbW9uQXR0cmlidXRlUnVsZVNldDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmluZGV4IGFlZGFj
MWQwZjdkMTBmNmQ4NGUxMzYwZTgxMDAzMzhhOTBjODEyZTEuLjE3ZmM3NjZmN2RkZWIwM2RhNGZk
NTllN2Q0MTBlODAyZmRkNmUwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5z
ZXJ0aW9uUG9pbnQuaApAQCAtMTc5LDYgKzE3OSwzNSBAQCBpbmxpbmUgSW5zZXJ0aW9uUG9pbnQq
IHJlc29sdmVSZXByb2plY3Rpb24oY29uc3QgTm9kZSogcHJvamVjdGVkTm9kZSkKICAgICByZXR1
cm4gaW5zZXJ0aW9uUG9pbnQ7CiB9CiAKK2lubGluZSB2b2lkIGNvbGxlY3RBbGxNaWRwb2ludElu
c2VydGlvblBvaW50cyhjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlLCBWZWN0b3I8SW5zZXJ0aW9u
UG9pbnQqLCA4PiYgcmVzdWx0cykKK3sKKyAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9p
bnQgPSAwOworICAgIGNvbnN0IE5vZGUqIGN1cnJlbnQgPSBwcm9qZWN0ZWROb2RlOworCisgICAg
d2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRv
d09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKGN1cnJlbnQpKSB7CisgICAgICAgICAgICBzaGFkb3ct
PmVuc3VyZURpc3RyaWJ1dGlvbigpOworICAgICAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBp
bnNlcnRlZFRvID0gc2hhZG93LT5kaXN0cmlidXRvcigpLmZpbmRJbnNlcnRpb25Qb2ludEZvcihw
cm9qZWN0ZWROb2RlKSkgeworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBpbnNlcnRlZFRvOwor
ICAgICAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAg
ICAgICByZXN1bHRzLmFwcGVuZChpbnNlcnRpb25Qb2ludCk7CisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoTm9kZSogcGFy
ZW50ID0gcGFyZW50Tm9kZUZvckRpc3RyaWJ1dGlvbihjdXJyZW50KSkgeworICAgICAgICAgICAg
aWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRlZFRvID0gcGFyZW50LT5pc1NoYWRvd1Jvb3QoKSA/
IHRvU2hhZG93Um9vdChwYXJlbnQpLT5hc3NpZ25lZFRvKCkgOiAwKSB7CisgICAgICAgICAgICAg
ICAgY3VycmVudCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnQg
PSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKGluc2VydGlvblBv
aW50KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEluc2VydGlvblBvaW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKaW5kZXggZmYwMGM5NTAyNzhj
MzMyMDFjMGFmOTJkOGFiNjU5N2U4ZWM5N2ZmNS4uNzY0ZjFlY2QxNzE1MTY3NzI1ZmMzNzRhZmNm
YzQ4NDZjNDJjYzFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKQEAgLTcwLDcgKzcwLDcgQEAgZW51bSBTdHlsZURp
ZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHkgewogLy8gU3RhdGljIHBzZXVkbyBzdHls
ZXMuIER5bmFtaWMgb25lcyBhcmUgcHJvZHVjZWQgb24gdGhlIGZseS4KIGVudW0gUHNldWRvSWQg
ewogICAgIC8vIFRoZSBvcmRlciBtdXN0IGJlIE5PUCBJRCwgcHVibGljIElEcywgYW5kIHRoZW4g
aW50ZXJuYWwgSURzLgotICAgIE5PUFNFVURPLCBGSVJTVF9MSU5FLCBGSVJTVF9MRVRURVIsIEJF
Rk9SRSwgQUZURVIsIFNFTEVDVElPTiwgRklSU1RfTElORV9JTkhFUklURUQsIFNDUk9MTEJBUiwK
KyAgICBOT1BTRVVETywgRklSU1RfTElORSwgRklSU1RfTEVUVEVSLCBCRUZPUkUsIEFGVEVSLCBE
SVNUUklCVVRFRCwgU0VMRUNUSU9OLCBGSVJTVF9MSU5FX0lOSEVSSVRFRCwgU0NST0xMQkFSLAog
ICAgIC8vIEludGVybmFsIElEcyBmb2xsb3c6CiAgICAgU0NST0xMQkFSX1RIVU1CLCBTQ1JPTExC
QVJfQlVUVE9OLCBTQ1JPTExCQVJfVFJBQ0ssIFNDUk9MTEJBUl9UUkFDS19QSUVDRSwgU0NST0xM
QkFSX0NPUk5FUiwgUkVTSVpFUiwKICAgICBJTlBVVF9MSVNUX0JVVFRPTiwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwNDEz
MTg3N2UxM2Q3ZmIzODNkNTM4OGRiNDI4NjI1YjAwYzNiYjU1Li45Yjk5OWUyMjBlZDk2MTZiODQy
ZDA1MWNjY2M5NDg3MTFjODFiOTQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTMtMDEtMDYg
IEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtTaGFkb3cgRE9N
XSBJbXBsZW1lbnRzIGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvIGVsZW1lbnQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjE2OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93
LWVsZW1lbnQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
bWF0Y2gtYWxsLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC1l
eHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24tZXhwZWN0ZWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVk
by1lbGVtZW50LXJlcHJvamVjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLWV4cGVjdGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC1zY29wZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3ItZXhwZWN0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1
cHBvcnQtc2VsZWN0b3IuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC1leHBlY3RlZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRv
LWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC5odG1sOiBBZGRlZC4KKwog
MjAxMy0wMS0wNiAgQWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIEhlYXAtdXNlLWFmdGVyLWZyZWUgaW4gV2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxpY2l0Q2xv
c2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRj
MjZlMmI1NmM0YzZhN2M3MGM2Y2ZkNThhMjI3ZjhlMGY0NDY0ZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1l
eHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxi
b2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYgc3R5
bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1l
bGVtZW50LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRjMjZlMmI1NmM0YzZhN2M3MGM2Y2Zk
NThhMjI3ZjhlMGY0NDY0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQtZXhw
ZWN0ZWQuaHRtbApAQCAtMCwwICsxLDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9k
eT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2IHN0eWxl
PSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVk
by1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjMxNDI5NzBkNzQxZGRjZjI3ZmVmNzQ0YWIyZTQwM2VjMTk4OTBmMzYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQt
cHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSwyMyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
aGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJv
eCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdzaGFkb3c6OmRpc3RyaWJ1
dGVkKGRpdikgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0
ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jv
b3QoCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSksCisgICAg
ICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHls
ZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnc2hhZG93JykpKSk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRj
aC1hbGwtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTYwYjcyZTBkZTkxNzc2MmIyYTJhNGM1
ZWMzZWY5ZjU2NmViNDk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC1leHBlY3RlZC5odG1s
CkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYg
aWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2PgorICAgICAgbm9ybWFs
CisgICAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAgPC9kaXY+
CisgICAgPGRpdj4KKyAgICAgIG5vcm1hbAorICAgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVu
Ij5ncmVlbjwvZGl2PgorICAgIDwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC1tYXRjaC1hbGwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjQwNGYy
NmU3YmRhODMwZTZlYjg1NGFjOTc1ZjNkYmJjNmNlOTA5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNo
LWFsbC5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFk
b3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5p
bm5lckhUTUwgPSAnY29udGVudDo6ZGlzdHJpYnV0ZWQoLmhlbGxvKSB7IGNvbG9yOiBncmVlbjsg
fSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsK
K3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3Qn
fSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNo
YWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2hlbGxvJ30sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSwKKyAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdoZWxsbyd9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSkpKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC1leHBlY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50LW5lc3RlZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1MTgzNDQyYTA3NmM3ZjgxYTlj
NTQyMTMxZTc5ZmI3NzZmMDExY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLWV4cGVjdGVkLmh0
bWwKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRp
diBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYgaWQ9Im5lc3RlZC1o
b3N0Ij4KKyAgICAgIHRleHQxCisgICAgICA8ZGl2PgorICAgICAgICB0ZXh0MgorICAgICAgICA8
ZGl2PgorICAgICAgICAgIHRleHQzCisgICAgICAgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVu
Ij5ncmVlbjwvZGl2PgorICAgICAgICAgIDxkaXY+bm9ybWFsPC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjUz
MjFiMGE2M2UxNDI5M2RiYWNkYTMxZDllYjFlNzg1YTdhMThlZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1u
ZXN0ZWQuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hh
ZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUu
aW5uZXJIVE1MID0gJ2RpdiBjb250ZW50OjpkaXN0cmlidXRlZChkaXYgY29udGVudDo6ZGlzdHJp
YnV0ZWQoZGl2LmdyZWVuKSkgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAor
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0
ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAn
bmVzdGVkLWhvc3QnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dS
b290KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3RleHQx
JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgndGV4dDInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJ2Rpdid9KSkpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdncmVlbid9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgndGV4dDMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdjb250ZW50Jywge30pKSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rp
dicsIHsnY2xhc3MnOiAnZ3JlZW4nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdu
b3JtYWwnKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJv
amVjdGlvbi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU2OWM5MTI3ZGU1ZTcwM2I3YTFhNWM5MzY5NGVhN2NkMGIxMjQ4NDIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9
Imhvc3QiPgorICAgIDxkaXYgaWQ9Imhvc3QyIj4KKyAgICAgIDxkaXYgc3R5bGU9J2NvbG9yOiBn
cmVlbic+CisgICAgICAgIGdyZWVuCisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0
aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTI5NTU4MDgzMDg4OWQ1ZDkzYjQ1ZjI0YWQ2NDlkMjJlYTI1
MzM4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24uaHRtbApAQCAtMCwwICsxLDI1IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5k
Ym94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRlbnQ6OmRpc3Ry
aWJ1dGVkKC5mb28pIHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBj
cmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFk
b3dSb290KAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3Qy
J30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJy5mb28nfSkp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSksCisg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdmb28nfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSkpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLWV4cGVjdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
c2NvcGVkLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzQ4ZDllMmRlM2U2ZmU0YmZkODk4MGI2
M2QwMzliYzU0ZDg4MzFhMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQtZXhwZWN0ZWQuaHRtbApA
QCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlk
PSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAg
ICA8ZGl2PgorICAgICAgPGRpdiBzdHlsZT0nY29sb3I6IGdyZWVuJz5ncmVlbjwvZGl2PgorICAg
IDwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC1zY29wZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTZlMjZmMzlhMTk2MmIwMWZiOGUzYTA1YjFkYzNk
OTRiOGFjMzA0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNjb3BlZC5odG1sCkBAIC0wLDAgKzEsMjcgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRi
b3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnY29udGVudDo6ZGlzdHJp
YnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CitzaGFkb3dTdHlsZS5zZXRBdHRyaWJ1dGUo
J3Njb3BlZCcsIHRydWUpOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcjaG9zdC1jaGlsZDEn
fSksCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJyNob3N0LWNo
aWxkMid9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSkpLAorICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdC1jaGlsZDEnfSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSksCisg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0LWNoaWxkMid9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9y
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQt
cHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIzZGVkZTEzM2I4NjJkZDE0YzkyZTYwNWM0YTFiZWQyOGUzN2FkYWQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtc3VwcG9ydC1zZWxlY3Rvci1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlk
PSJob3N0Ij4KKyAgICA8ZGl2PgorICAgICAgbm9ybWFsCisgICAgICA8ZGl2IHN0eWxlPSJjb2xv
cjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdj4KKyAgICAgIG5vcm1h
bAorICAgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJp
YnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0
b3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iNmVkNTNiMDBjNmM0N2EzZjI0OGRhNjMzYTgxMjQ3OTQxOGY5
ODljCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3IuaHRtbApAQCAtMCwwICsxLDI4
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJz
YW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRlbnQ6OmRp
c3RyaWJ1dGVkKGRpdi5oZWxsbyBkaXYpIHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNhbmRi
b3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRD
aGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAgICAg
ICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUsCisgICAg
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSksCisgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnZGl2JywgeydjbGFzcyc6ICdoZWxsbyd9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpLAorICAgICAgICAgICAgICBjcmVh
dGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoJ25vcm1hbCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdk
aXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgnbm9ybWFsJykpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRv
LWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxl
Y3Rvci1saXN0LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI4MjUzZTRkYWI3NDA1NjU4Mzhk
ODQyNTBiYmE5YmQ5MDRkOTkyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxp
c3QtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAgPGRp
diBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgIDxwPm5vcm1hbDwvcD4KKyAg
ICA8cCBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvcD4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0Lmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxl
Y3Rvci1saXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjBmMTdlYjYyNzMxNGU4ZGMxMDU3YTAxM2E0MjE5
OTNhZWUyYjg2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QuaHRtbApA
QCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0g
J2NvbnRlbnQ6OmRpc3RyaWJ1dGVkKGRpdiksIHAgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIg
c2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFw
cGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAg
ICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwK
KyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpLAorICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdwJywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdk
aXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KCdncmVlbicpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdwJywgeydjbGFzcyc6ICdoZWxs
byd9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25v
cm1hbCcpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFkNTU1ODgzZWUyZTAzM2NmYjZjYjcxMTc3ZDI4ZTZiYTM4ODAxZTIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3Jp
cHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwor
c2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRlbnQ6OmRpc3RyaWJ1dGVkKGRpdikgeyBjb2xv
cjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz
YW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywgeydp
ZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAg
ICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVu
dCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QtY2hpbGQn
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVl
bicpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181830</attachid>
            <date>2013-01-08 20:30:03 -0800</date>
            <delta_ts>2013-01-09 22:14:49 -0800</delta_ts>
            <desc>factor addStyleRule.</desc>
            <filename>bug-82169-20130109132707.patch</filename>
            <type>text/plain</type>
            <size>53169</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NGVjM2MwOWFkNjI0ZmJlYTdlYjIwYTIyNDU0OWY5NzRhYmYwM2I2Li40
YmM0NTkwMjRjMDY1MjM3NTk2ZDBjYzFmZjBmYzJiMmU1MGQ3YWYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTAxIEBACisyMDEzLTAxLTA2ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbU2hhZG93IERPTV0gSW1wbGVtZW50cyBhICc6OmRpc3RyaWJ1dGVkKCkn
IHBzZXVkbyBlbGVtZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODIxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnRzIGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvIGVsZW1lbnQuCisg
ICAgICAgIFNlZSB0aGUgU2hhZG93IERPTSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgZGV0YWlsLgor
CisgICAgICAgIGh0dHA6Ly9kdmNzLnczLm9yZy9oZy93ZWJjb21wb25lbnRzL3Jhdy1maWxlL3Rp
cC9zcGVjL3NoYWRvdy9pbmRleC5odG1sI3NlbGVjdGluZy1ub2Rlcy1kaXN0cmlidXRlZC10by1p
bnNlcnRpb24tcG9pbnRzCisKKyAgICAgICAgQSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxl
bWVudCBpcyB0aGUgZmlyc3QgQ1NTIHJ1bGUgd2hpY2gKKyAgICAgICAgY3Jvc3NlcyB0aGUgc2hh
ZG93IGJvdW5kYXJ5IGZyb20gYSBzaGFkb3cgdHJlZSB0byB0aGUgdHJlZSBvZiBpdHMKKyAgICAg
ICAgc2hhZG93IGhvc3QuIFRoYXQgbWVhbnMgYSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxl
bWVudCBpcworICAgICAgICBkZWZpbmVkIGluIHNoYWRvdyB0cmVlLCBidXQgdGhlIG5vZGUgd2hp
Y2ggaXMgbWF0Y2hlZCBpbiB0aGUgcnVsZQorICAgICAgICBpcyBvdXRzaWRlIG9mIHRoZSBzaGFk
b3cgdHJlZS4gVGhlcmVmb3JlLCB3ZSBjYW5ub3QgcHJlZGljdCBhCisgICAgICAgIHNjb3BlIHdo
ZXJlIHRoZSBtYXRjaGVkIG5vZGUgd2lsbCBiZSBiZWZvcmVoYW5kLiAgQ3VycmVudCBDU1MKKyAg
ICAgICAgaW1wbGVtZW50YXRpb24gYXNzdW1lcyBldmVyeSBmaW5hbCB0YXJnZXQgaXMgYXBwbGll
ZCBpbiBjdXJyZW50CisgICAgICAgIHNjb3BlLgorCisgICAgICAgIFRvIG92ZXJjb21lIHRoaXMg
aXNzdWUsIFN0eWxlUmVzb2x2ZXIgd2FzIHVwZGF0ZWQgc28gdGhhdCBpdCBoYXMKKyAgICAgICAg
U2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLiBXZSB1c2UgdGhpcyBSdWxlU2V0TWFwIHRvIGtl
ZXAgdHJhY2sKKyAgICAgICAgb2YgZWFjaCBSdWxlU2V0IG1hcHBlZCBieSBhIHNjb3BlIHdoZXJl
IGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvCisgICAgICAgIGVsZW1lbnQgaXMgb3JpZ2luYWxs
eSBkZWZpbmVkLiBUaGlzIHNjb3BlIGlzIHBhc3NlZCB0bworICAgICAgICBTZWxlY3RvckNoZWNr
ZXIgYW5kIGlzIHVzZWQgdG8gY2hlY2sgd2hldGhlciB0aGUgbGFzdGx5IG1hdGNoZWQgZWxlbWVu
dAorICAgICAgICBleGlzdHMgaW4gdGhlIHNjb3BlIHdoZXJlIHRoZSBydWxlIGlzIG9yaWdpbmFs
bHkgZGVmaW5lZC4KKworICAgICAgICBJbnRlcm5hbGx5LCAnOjpkaXN0cmlidXRlZCcgcHNldWRv
IGVsZW1lbnQgaXMgcmVwcmVzZW50ZWQgYnkgYQorICAgICAgICBuZXdseSBpbnRyb2R1Y2VkIFNo
YWRvd0Rpc3RyaWJ1dGVkIHJlbGF0aW9uLiAgQSB0cmFuc2Zvcm1hdGlvbgorICAgICAgICBmcm9t
IGEgZGlzdHJpcmJ1dGVkIHBzZXVkbyBlbGVtZW50IHRvIGEgU2hhZG93RGlzdHJpYnV0ZWQgaXMg
ZG9uZQorICAgICAgICBpbiBwYXJzaW5nIHN0YWdlIG9mIENTUy4KKworICAgICAgICBUZXN0czog
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxl
bWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtbWF0Y2gtYWxsLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtc2NvcGVkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVj
dG9yLWxpc3QuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50Lmh0bWwKKworICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnkuaW46Cisg
ICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OmRldGVjdEZ1bmN0aW9uVHlwZVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNl
ci5oOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKToKKyAgICAgICAgKiBjc3Mv
Q1NTUGFyc2VyVmFsdWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6
ZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNl
bGVjdG9yOjpzZXRGdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IpOgorICAgICAgICAoQ1NTUGFyc2Vy
U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OmlzUHNldWRv
RGlzdHJpYnV0ZWRFbGVtZW50KToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnBzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6
Om5hbWVUb1BzZXVkb1R5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmV4
dHJhY3RQc2V1ZG9UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZWxlY3Rv
clRleHQpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOgorICAgICAgICAoQ1NTU2VsZWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmlzRGlzdHJpYnV0ZWRQc2V1ZG9F
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0
b3I6OmlzU2hhZG93RGlzdHJpYnV0ZWQpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvckxpc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTZWxlY3Rvckhhc1NoYWRvd0Rpc3Ry
aWJ1dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9ySGFzU2hhZG93RGlzdHJpYnV0ZWQ6
Om9wZXJhdG9yKCkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JMaXN0OjpoYXNTaGFk
b3dEaXN0cmlidXRlZEF0KToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0Lmg6CisgICAg
ICAgIChDU1NTZWxlY3Rvckxpc3QpOgorICAgICAgICAqIGNzcy9SdWxlU2V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KToKKyAgICAgICAgKiBjc3Mv
U2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6
Y2hlY2tTZWxlY3Rvcik6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dDo6U2Vs
ZWN0b3JDaGVja2luZ0NvbnRleHQpOgorICAgICAgICAoU2VsZWN0b3JDaGVja2luZ0NvbnRleHQp
OgorICAgICAgICAqIGNzcy9TZWxlY3RvckZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3RvckZpbHRlcjo6Y29sbGVjdElkZW50aWZpZXJIYXNoZXMpOgorICAgICAgICAqIGNzcy9T
dHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnJlc2V0
QXV0aG9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVJlc29sdmVyOjphZGRTaGFkb3dEaXN0cmlidXRlZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6bWF0Y2hTaGFkb3dEaXN0cmlidXRlZFJ1bGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUmVzb2x2ZXI6Om1hdGNoQXV0aG9yUnVsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNoZWNrU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9T
dHlsZVJlc29sdmVyLmg6CisgICAgICAgIChTdHlsZVJlc29sdmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmVzb2x2ZXI6Ok1hdGNoT3B0aW9uczo6TWF0Y2hPcHRpb25zKToKKyAgICAgICAg
KE1hdGNoT3B0aW9ucyk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RBbGxNaWRwb2ludEluc2VydGlvblBvaW50cyk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVD
b25zdGFudHMuaDoKKwogMjAxMy0wMS0wNiAgU2ViYXN0aWFuIERyw7ZnZSAgPHNlYmFzdGlhbi5k
cm9lZ2VAY29sbGFib3JhLmNvLnVrPgogCiAgICAgICAgIEJ1Z8KgMTA2MTc3IC0gW0dTdHJlYW1l
cl0gRG9uJ3QgY2FsbCBnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMoKSB3aXRoIG5vbi1maXhlZCBj
YXBzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgppbmRleCAxZmQ0NWU0OTVjZTk2YTVhYTQ1
YzY0YjFkZTliYmY2MGMwZmU3NGMzLi5jMjU0NTYwMjNjMDU1NDdlYzc4ZDVhN2ZkZTIyYTQyODJj
MjE3NWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KQEAgLTYxLDcgKzYxLDExIEBA
IHN0YXRpYyBpbmxpbmUgaW50IGNzc3l5ZXJyb3Iodm9pZCosIGNvbnN0IGNoYXIqKQogCiAlfQog
CisjaWYgRU5BQkxFX1NIQURPV19ET00KKyVleHBlY3QgNjYKKyNlbHNlCiAlZXhwZWN0IDY1Cisj
ZW5kaWYKIAogJW5vbmFzc29jIExPV0VTVF9QUkVDCiAKQEAgLTE3Nyw2ICsxODEsNyBAQCBzdGF0
aWMgaW5saW5lIGludCBjc3N5eWVycm9yKHZvaWQqLCBjb25zdCBjaGFyKikKICV0b2tlbiA8c3Ry
aW5nPiBDVUVGVU5DVElPTgogI2VuZGlmCiAldG9rZW4gPHN0cmluZz4gTk9URlVOQ1RJT04KKyV0
b2tlbiA8c3RyaW5nPiBESVNUUklCVVRFREZVTkNUSU9OCiAldG9rZW4gPHN0cmluZz4gQ0FMQ0ZV
TkNUSU9OCiAldG9rZW4gPHN0cmluZz4gTUlORlVOQ1RJT04KICV0b2tlbiA8c3RyaW5nPiBNQVhG
VU5DVElPTgpAQCAtMTE0NCwxMiArMTE0OSwxMiBAQCBzaW1wbGVfc2VsZWN0b3I6CiAgICAgfCBl
bGVtZW50X25hbWUgc3BlY2lmaWVyX2xpc3QgewogICAgICAgICAkJCA9ICQyOwogICAgICAgICBp
ZiAoJCQpCi0gICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5h
bWUobnVsbEF0b20sICQxLCAkJCk7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+dXBkYXRlU3Bl
Y2lmaWVyc1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwgJDEsICQkKTsKICAgICB9CiAgICAgfCBz
cGVjaWZpZXJfbGlzdCB7CiAgICAgICAgICQkID0gJDE7CiAgICAgICAgIGlmICgkJCkKLSAgICAg
ICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwg
c3RhckF0b20sICQkKTsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJz
V2l0aEVsZW1lbnROYW1lKG51bGxBdG9tLCBzdGFyQXRvbSwgJCQpOwogICAgIH0KICAgICB8IG5h
bWVzcGFjZV9zZWxlY3RvciBlbGVtZW50X25hbWUgewogICAgICAgICAkJCA9IHBhcnNlci0+Y3Jl
YXRlRmxvYXRpbmdTZWxlY3RvcigpOwpAQCAtMTE1OCwxMiArMTE2MywxMiBAQCBzaW1wbGVfc2Vs
ZWN0b3I6CiAgICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1lIHNwZWNpZmllcl9s
aXN0IHsKICAgICAgICAgJCQgPSAkMzsKICAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFy
c2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKCQxLCAkMiwgJCQpOworICAgICAg
ICAgICAgJCQgPSBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsICQy
LCAkJCk7CiAgICAgfQogICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIHNwZWNpZmllcl9saXN0IHsK
ICAgICAgICAgJCQgPSAkMjsKICAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFyc2VyLT51
cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKCQxLCBzdGFyQXRvbSwgJCQpOworICAgICAg
ICAgICAgJCQgPSBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsIHN0
YXJBdG9tLCAkJCk7CiAgICAgfQogICA7CiAKQEAgLTEzNTUsNiArMTM2MCwxOSBAQCBwc2V1ZG86
CiAgICAgICAgICAgICAkJCA9IDA7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFX1NIQURPV19E
T00KKyAgICB8ICc6JyAnOicgRElTVFJJQlVURURGVU5DVElPTiBtYXliZV9zcGFjZSBzZWxlY3Rv
ciBtYXliZV9zcGFjZSAnKScgeworICAgICAgICBpZiAoISQ1KQorICAgICAgICAgICAgJCQgPSAw
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGlu
Z1NlbGVjdG9yKCk7CisgICAgICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVk
b0VsZW1lbnQpOworICAgICAgICAgICAgJCQtPnNldEZ1bmN0aW9uQXJndW1lbnRTZWxlY3Rvcigk
NSk7CisgICAgICAgICAgICAkMy5sb3dlcigpOworICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQz
KTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgogICAgIC8vIHVzZSBieSA6LXdlYmtpdC1hbnku
CiAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBzdXBwb3J0IGdlbmVyaWMgc2VsZWN0b3JzIGhlcmUg
b3IganVzdCBzaW1wbGVfc2VsZWN0b3JzPwogICAgIC8vIFVzZSBzaW1wbGVfc2VsZWN0b3JfbGlz
dCBmb3Igbm93IHRvIG1hdGNoIC1tb3otYW55LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRl
eCBkYjk0Y2Q3NzYwYzZlNDcyZDY5Mjc3NzI2MThiZDM2YTZhODA4NTNhLi40NTZlZmVmMDhkNjZk
MGM2YzYzZGFiYjIwNDc5NDU5NjczMjlhZjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApA
QCAtOTUwMSw2ICs5NTAxLDggQEAgaW5saW5lIHZvaWQgQ1NTUGFyc2VyOjpkZXRlY3RGdW5jdGlv
blR5cGVUb2tlbihpbnQgbGVuZ3RoKQogICAgIGNhc2UgMTE6CiAgICAgICAgIGlmIChpc0VxdWFs
VG9DU1NJZGVudGlmaWVyKG5hbWUsICJudGgtb2YtdHlwZSIpKQogICAgICAgICAgICAgbV9wYXJz
aW5nTW9kZSA9IE50aENoaWxkTW9kZTsKKyAgICAgICAgZWxzZSBpZiAoaXNFcXVhbFRvQ1NTSWRl
bnRpZmllcihuYW1lLCAiZGlzdHJpYnV0ZWQiKSkKKyAgICAgICAgICAgIG1fdG9rZW4gPSBESVNU
UklCVVRFREZVTkNUSU9OOwogICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIDE0OgpAQCAtMTA2
MDMsMTYgKzEwNjA1LDI5IEBAIFF1YWxpZmllZE5hbWUgQ1NTUGFyc2VyOjpkZXRlcm1pbmVOYW1l
SW5OYW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvCiAgICAgcmV0dXJuIFF1
YWxpZmllZE5hbWUocHJlZml4LCBsb2NhbE5hbWUsIG1fc3R5bGVTaGVldC0+ZGV0ZXJtaW5lTmFt
ZXNwYWNlKHByZWZpeCkpOwogfQogCi12b2lkIENTU1BhcnNlcjo6dXBkYXRlU3BlY2lmaWVyc1dp
dGhFbGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVByZWZpeCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBlbGVtZW50TmFtZSwgQ1NTUGFyc2VyU2VsZWN0b3IqIHNwZWNpZmllcnMp
CitDU1NQYXJzZXJTZWxlY3RvciogQ1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1l
bnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlZml4LCBjb25zdCBBdG9taWNT
dHJpbmcmIGVsZW1lbnROYW1lLCBDU1NQYXJzZXJTZWxlY3Rvciogc3BlY2lmaWVycykKIHsKICAg
ICBBdG9taWNTdHJpbmcgZGV0ZXJtaW5lZE5hbWVzcGFjZSA9IG5hbWVzcGFjZVByZWZpeCAhPSBu
dWxsQXRvbSAmJiBtX3N0eWxlU2hlZXQgPyBtX3N0eWxlU2hlZXQtPmRldGVybWluZU5hbWVzcGFj
ZShuYW1lc3BhY2VQcmVmaXgpIDogbV9kZWZhdWx0TmFtZXNwYWNlOwogICAgIFF1YWxpZmllZE5h
bWUgdGFnID0gUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VQcmVmaXgsIGVsZW1lbnROYW1lLCBkZXRl
cm1pbmVkTmFtZXNwYWNlKTsKLSAgICBpZiAoIXNwZWNpZmllcnMtPmlzQ3VzdG9tUHNldWRvRWxl
bWVudCgpKSB7CisgICAgaWYgKCFzcGVjaWZpZXJzLT5pc0N1c3RvbVBzZXVkb0VsZW1lbnQoKSAm
JiAhc3BlY2lmaWVycy0+aXNQc2V1ZG9EaXN0cmlidXRlZEVsZW1lbnQoKSkgewogI2lmIEVOQUJM
RShWSURFT19UUkFDSykKICAgICAgICAgaWYgKCEoc3BlY2lmaWVycy0+cHNldWRvVHlwZSgpID09
IENTU1NlbGVjdG9yOjpQc2V1ZG9DdWUpKQogI2VuZGlmCiAgICAgICAgICAgICBzcGVjaWZpZXJz
LT5zZXRUYWcodGFnKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gc3BlY2lmaWVy
czsKKyAgICB9CisKKyAgICBpZiAoc3BlY2lmaWVycy0+aXNQc2V1ZG9EaXN0cmlidXRlZEVsZW1l
bnQoKSkgeworICAgICAgICBDU1NQYXJzZXJTZWxlY3RvciogYXJndW1lbnRTZWxlY3RvciA9IHNw
ZWNpZmllcnMtPmZ1bmN0aW9uQXJndW1lbnRTZWxlY3RvcigpOworICAgICAgICBBU1NFUlQoYXJn
dW1lbnRTZWxlY3Rvcik7CisgICAgICAgIENTU1BhcnNlclNlbGVjdG9yKiBlbmQgPSBhcmd1bWVu
dFNlbGVjdG9yOworICAgICAgICB3aGlsZSAoZW5kLT50YWdIaXN0b3J5KCkpCisgICAgICAgICAg
ICBlbmQgPSBlbmQtPnRhZ0hpc3RvcnkoKTsKKyAgICAgICAgT3duUHRyPENTU1BhcnNlclNlbGVj
dG9yPiBlbGVtZW50TmFtZVNlbGVjdG9yID0gYWRvcHRQdHIobmV3IENTU1BhcnNlclNlbGVjdG9y
KTsKKyAgICAgICAgZWxlbWVudE5hbWVTZWxlY3Rvci0+c2V0VGFnKHRhZyk7CisgICAgICAgIGVu
ZC0+c2V0VGFnSGlzdG9yeShlbGVtZW50TmFtZVNlbGVjdG9yLnJlbGVhc2UoKSk7CisgICAgICAg
IGVuZC0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6OlNoYWRvd0Rpc3RyaWJ1dGVkKTsKKyAgICAg
ICAgcmV0dXJuIGFyZ3VtZW50U2VsZWN0b3I7CiAgICAgfQogCiAgICAgQ1NTUGFyc2VyU2VsZWN0
b3IqIGxhc3RTaGFkb3dEZXNjZW5kYW50ID0gc3BlY2lmaWVyczsKQEAgLTEwNjI1LDcgKzEwNjQw
LDcgQEAgdm9pZCBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VQcmUKIAogICAgIGlmIChsYXN0U2hhZG93RGVzY2Vu
ZGFudC0+dGFnSGlzdG9yeSgpKSB7CiAgICAgICAgIGxhc3RTaGFkb3dEZXNjZW5kYW50LT50YWdI
aXN0b3J5KCktPnNldFRhZyh0YWcpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBz
cGVjaWZpZXJzOwogICAgIH0KIAogICAgIC8vIEZvciBzaGFkb3ctSUQgcHNldWRvLWVsZW1lbnRz
IHRvIGJlIGNvcnJlY3RseSBtYXRjaGVkLCB0aGUgU2hhZG93RGVzY2VuZGFudCBjb21iaW5hdG9y
IGhhcyB0byBiZSB1c2VkLgpAQCAtMTA2MzQsNiArMTA2NDksNyBAQCB2b2lkIENTU1BhcnNlcjo6
dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVz
cGFjZVByZQogICAgIGVsZW1lbnROYW1lU2VsZWN0b3ItPnNldFRhZyh0YWcpOwogICAgIGxhc3RT
aGFkb3dEZXNjZW5kYW50LT5zZXRUYWdIaXN0b3J5KGVsZW1lbnROYW1lU2VsZWN0b3IucmVsZWFz
ZSgpKTsKICAgICBsYXN0U2hhZG93RGVzY2VuZGFudC0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6
OlNoYWRvd0Rlc2NlbmRhbnQpOworICAgIHJldHVybiBzcGVjaWZpZXJzOwogfQogCiBDU1NQYXJz
ZXJTZWxlY3RvciogQ1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzKENTU1BhcnNlclNlbGVjdG9y
KiBzcGVjaWZpZXJzLCBDU1NQYXJzZXJTZWxlY3RvciogbmV3U3BlY2lmaWVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5oCmluZGV4IDM5MmZmOTg0MGM1YTZjODM5YzJmMjE0NDM3YWI3NTg0YmI3MjVhOWQu
LmUxYTRlMmY3NTIxZGViM2E0Y2UyYzAzMGE1MTg2NWNmMTVmMmIwYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmgKQEAgLTMwOSw3ICszMDksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZE5hbWVz
cGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiB1cmkp
OwogICAgIFF1YWxpZmllZE5hbWUgZGV0ZXJtaW5lTmFtZUluTmFtZXNwYWNlKGNvbnN0IEF0b21p
Y1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSk7Ci0gICAgdm9p
ZCB1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZXNwYWNlUHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnROYW1lLCBDU1NQYXJzZXJT
ZWxlY3RvciopOworICAgIENTU1BhcnNlclNlbGVjdG9yKiB1cGRhdGVTcGVjaWZpZXJzV2l0aEVs
ZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlZml4LCBjb25zdCBBdG9t
aWNTdHJpbmcmIGVsZW1lbnROYW1lLCBDU1NQYXJzZXJTZWxlY3RvciopOwogICAgIENTU1BhcnNl
clNlbGVjdG9yKiB1cGRhdGVTcGVjaWZpZXJzKENTU1BhcnNlclNlbGVjdG9yKiwgQ1NTUGFyc2Vy
U2VsZWN0b3IqKTsKIAogICAgIHZvaWQgaW52YWxpZEJsb2NrSGl0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXJWYWx1ZXMuY3BwCmluZGV4IGQyM2I4NTg1ZDVkN2JiOGViMGYyNjgyMzRiNmVk
MDZhNTg4MWRmMjcuLjUwMGQ3YjE0MDA0YTI0ZWJjMzUzZDJiZmVlYzE3MzM2MzBhNDM0YmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCkBAIC0xNDYsNiArMTQ2LDcgQEAg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyVmFsdWU6OmNyZWF0ZUNTU1ZhbHVlKCkKIAog
Q1NTUGFyc2VyU2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKCkKICAgICA6IG1fc2VsZWN0b3Io
YWRvcHRQdHIoZmFzdE5ldzxDU1NTZWxlY3Rvcj4oKSkpCisgICAgLCBtX2Z1bmN0aW9uQXJndW1l
bnRTZWxlY3RvcigwKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyVmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKaW5k
ZXggMTMwMWIxY2UwZTExMzcyM2NjZjgyMTYyOGVlMDVlMmUzMTAyMzY3Yi4uMmRiMDRjNDY0OGUw
OWE2MDhmZTc5NGNkY2I2MWZhZWVmMjMyMTNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlclZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJW
YWx1ZXMuaApAQCAtMTg2LDggKzE4NiwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkb3B0U2Vs
ZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiYgc2VsZWN0b3JW
ZWN0b3IpOwogCisgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGZ1bmN0aW9uQXJndW1lbnRTZWxlY3Rv
cigpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yOyB9CisgICAgdm9p
ZCBzZXRGdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IoQ1NTUGFyc2VyU2VsZWN0b3IqIHNlbGVjdG9y
KSB7IG1fZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yID0gc2VsZWN0b3I7IH0KKwogICAgIENTU1Nl
bGVjdG9yOjpQc2V1ZG9UeXBlIHBzZXVkb1R5cGUoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9y
LT5wc2V1ZG9UeXBlKCk7IH0KICAgICBib29sIGlzQ3VzdG9tUHNldWRvRWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2VsZWN0b3ItPmlzQ3VzdG9tUHNldWRvRWxlbWVudCgpOyB9CisgICAgYm9v
bCBpc1BzZXVkb0Rpc3RyaWJ1dGVkRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3It
PmlzRGlzdHJpYnV0ZWRQc2V1ZG9FbGVtZW50KCk7IH0KIAogICAgIGJvb2wgaXNTaW1wbGUoKSBj
b25zdCB7IHJldHVybiAhbV90YWdIaXN0b3J5ICYmIG1fc2VsZWN0b3ItPmlzU2ltcGxlKCk7IH0K
ICAgICBib29sIGhhc1NoYWRvd0Rlc2NlbmRhbnQoKSBjb25zdDsKQEAgLTIwMCw2ICsyMDQsOCBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE93blB0cjxDU1NTZWxlY3Rvcj4gbV9zZWxlY3RvcjsK
ICAgICBPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IG1fdGFnSGlzdG9yeTsKKworICAgIENTU1Bh
cnNlclNlbGVjdG9yKiBtX2Z1bmN0aW9uQXJndW1lbnRTZWxlY3RvcjsKIH07CiAKIGlubGluZSBi
b29sIENTU1BhcnNlclNlbGVjdG9yOjpoYXNTaGFkb3dEZXNjZW5kYW50KCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCmluZGV4IDVhNmVjY2FmYjk0MmMwZDZmYTczYTYyYjZmZmM3
NDIxZjNjYWE5ZWMuLjJkYzFkZjM4MTEzYzc1ODMxZjRkN2ZjN2EyMzM0NGFkNGI3ZTcwZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcApAQCAtMTM5LDYgKzEzOSw4IEBAIFBzZXVkb0lk
IENTU1NlbGVjdG9yOjpwc2V1ZG9JZChQc2V1ZG9UeXBlIHR5cGUpCiAgICAgICAgIHJldHVybiBC
RUZPUkU7CiAgICAgY2FzZSBQc2V1ZG9BZnRlcjoKICAgICAgICAgcmV0dXJuIEFGVEVSOworICAg
IGNhc2UgUHNldWRvRGlzdHJpYnV0ZWQ6CisgICAgICAgIHJldHVybiBESVNUUklCVVRFRDsKICAg
ICBjYXNlIFBzZXVkb1Njcm9sbGJhcjoKICAgICAgICAgcmV0dXJuIFNDUk9MTEJBUjsKICAgICBj
YXNlIFBzZXVkb1Njcm9sbGJhckJ1dHRvbjoKQEAgLTI2MSw2ICsyNjMsNyBAQCBzdGF0aWMgSGFz
aE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGU+KiBuYW1lVG9Q
c2V1ZG9UeXBlTWFwKAogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmaXJz
dExpbmUsICgiZmlyc3QtbGluZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmlyc3RPZlR5cGUsICgi
Zmlyc3Qtb2YtdHlwZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZnVsbFBhZ2VNZWRpYSwgKCItd2Vi
a2l0LWZ1bGwtcGFnZS1tZWRpYSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZGlzdHJpYnV0ZWQsICgi
ZGlzdHJpYnV0ZWQoIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBudGhDaGlsZCwgKCJudGgtY2hpbGQo
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBudGhPZlR5cGUsICgibnRoLW9mLXR5cGUoIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBudGhMYXN0Q2hpbGQsICgibnRoLWxhc3QtY2hpbGQoIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwpAQCAtMzQzLDYgKzM0Niw3IEBAIHN0YXRpYyBI
YXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVU
b1BzZXVkb1R5cGVNYXAoCiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChmdWxsUGFnZU1l
ZGlhLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1bGxQYWdlTWVkaWEpOwogICAgICAgICBu
YW1lVG9Qc2V1ZG9UeXBlLT5zZXQobGFzdENoaWxkLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVk
b0xhc3RDaGlsZCk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChsYXN0T2ZUeXBlLmlt
cGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0xhc3RPZlR5cGUpOworICAgICAgICBuYW1lVG9Qc2V1
ZG9UeXBlLT5zZXQoZGlzdHJpYnV0ZWQuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvRGlzdHJp
YnV0ZWQpOwogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQob25seUNoaWxkLmltcGwoKSwg
Q1NTU2VsZWN0b3I6OlBzZXVkb09ubHlDaGlsZCk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUt
PnNldChvbmx5T2ZUeXBlLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb09ubHlPZlR5cGUpOwog
ICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoZmlyc3RMZXR0ZXIuaW1wbCgpLCBDU1NTZWxl
Y3Rvcjo6UHNldWRvRmlyc3RMZXR0ZXIpOwpAQCAtNDQ4LDYgKzQ1Miw3IEBAIHZvaWQgQ1NTU2Vs
ZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY29uc3QKICAgICBjYXNlIFBzZXVkb0ZpcnN0TGV0
dGVyOgogICAgIGNhc2UgUHNldWRvRmlyc3RMaW5lOgogICAgICAgICBjb21wYXQgPSB0cnVlOwor
ICAgIGNhc2UgUHNldWRvRGlzdHJpYnV0ZWQ6CiAgICAgY2FzZSBQc2V1ZG9SZXNpemVyOgogICAg
IGNhc2UgUHNldWRvU2Nyb2xsYmFyOgogICAgIGNhc2UgUHNldWRvU2Nyb2xsYmFyQ29ybmVyOgpA
QCAtNjg0LDYgKzY4OSw4IEBAIFN0cmluZyBDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KCkgY29u
c3QKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50OgogICAgICAgICAgICAgcmV0dXJuIHRhZ0hpc3RvcnlU
ZXh0ICsgc3RyLnRvU3RyaW5nKCk7CisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rp
c3RyaWJ1dGVkOgorICAgICAgICAgICAgcmV0dXJuIHRhZ0hpc3RvcnlUZXh0ICsgIjo6ZGlzdHJp
YnV0ZWQoIiArIHN0ci50b1N0cmluZygpICsgIikiOwogICAgICAgICB9CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5oCmluZGV4IDA2NDk4ZjRlYzc4MTJjNjY5YTU2NzIzNWU1NWE5OWU0
NThmZGEyNTIuLjQ4NjBmYjZhNmRiYWY1ZmI2OWM1YWVhMzlkMjU2NzFlODkyMzIwNmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTZWxlY3Rvci5oCkBAIC03Niw3ICs3NiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICBEaXJlY3RBZGphY2VudCwKICAgICAgICAgICAgIEluZGlyZWN0QWRq
YWNlbnQsCiAgICAgICAgICAgICBTdWJTZWxlY3RvciwKLSAgICAgICAgICAgIFNoYWRvd0Rlc2Nl
bmRhbnQKKyAgICAgICAgICAgIFNoYWRvd0Rlc2NlbmRhbnQsCisjaWYgRU5BQkxFKFNIQURPV19E
T00pCisgICAgICAgICAgICBTaGFkb3dEaXN0cmlidXRlZCwKKyNlbmRpZgogICAgICAgICB9Owog
CiAgICAgICAgIGVudW0gUHNldWRvVHlwZSB7CkBAIC0xMTksNiArMTIyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAgICAgUHNldWRvVGFyZ2V0LAogICAgICAgICAgICAgUHNldWRv
QmVmb3JlLAogICAgICAgICAgICAgUHNldWRvQWZ0ZXIsCisgICAgICAgICAgICBQc2V1ZG9EaXN0
cmlidXRlZCwKICAgICAgICAgICAgIFBzZXVkb0xhbmcsCiAgICAgICAgICAgICBQc2V1ZG9Ob3Qs
CiAgICAgICAgICAgICBQc2V1ZG9SZXNpemVyLApAQCAtMjIxLDggKzIyNSwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbWF0Y2hlc1BzZXVkb0VsZW1lbnQoKSBjb25zdDsK
ICAgICAgICAgYm9vbCBpc1Vua25vd25Qc2V1ZG9FbGVtZW50KCkgY29uc3Q7CiAgICAgICAgIGJv
b2wgaXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNEaXN0cmli
dXRlZFBzZXVkb0VsZW1lbnQoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc1NpYmxpbmdTZWxlY3Rv
cigpIGNvbnN0OwogICAgICAgICBib29sIGlzQXR0cmlidXRlU2VsZWN0b3IoKSBjb25zdDsKKyAg
ICAgICAgYm9vbCBpc1NoYWRvd0Rpc3RyaWJ1dGVkKCkgY29uc3Q7CiAKICAgICAgICAgUmVsYXRp
b24gcmVsYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZWxhdGlvbj4obV9yZWxh
dGlvbik7IH0KIApAQCAtMzA2LDYgKzMxMiwxMiBAQCBpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6
aXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9tYXRjaCA9PSBQc2V1
ZG9FbGVtZW50ICYmIChtX3BzZXVkb1R5cGUgPT0gUHNldWRvVXNlckFnZW50Q3VzdG9tRWxlbWVu
dCB8fCBtX3BzZXVkb1R5cGUgPT0gUHNldWRvV2ViS2l0Q3VzdG9tRWxlbWVudCk7CiB9CiAKK2lu
bGluZSBib29sIENTU1NlbGVjdG9yOjppc0Rpc3RyaWJ1dGVkUHNldWRvRWxlbWVudCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fbWF0Y2ggPT0gUHNldWRvRWxlbWVudCAmJiBwc2V1ZG9UeXBlKCkg
PT0gUHNldWRvRGlzdHJpYnV0ZWQ7CisKK30KKwogaW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6Omlz
U2libGluZ1NlbGVjdG9yKCkgY29uc3QKIHsKICAgICBQc2V1ZG9UeXBlIHR5cGUgPSBwc2V1ZG9U
eXBlKCk7CkBAIC0zMzUsNiArMzQ3LDExIEBAIGlubGluZSBib29sIENTU1NlbGVjdG9yOjppc0F0
dHJpYnV0ZVNlbGVjdG9yKCkgY29uc3QKICAgICAgICAgfHwgbV9tYXRjaCA9PSBDU1NTZWxlY3Rv
cjo6RW5kOwogfQogCitpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6aXNTaGFkb3dEaXN0cmlidXRl
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6OlNoYWRv
d0Rpc3RyaWJ1dGVkOworfQorCiBpbmxpbmUgdm9pZCBDU1NTZWxlY3Rvcjo6c2V0VmFsdWUoY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyBOZWVkIHRvIGRvIHJlZiBjb3VudGlu
ZyBtYW51YWxseSBmb3IgdGhlIHVuaW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0
LmNwcAppbmRleCA0MzEzNmQxYzkwMWM2MzQxYmFjYmVmODM5NDlkZjk0ZTYwZjFjMzZjLi5hMDc2
ZmMzNzY5MjE3NDY3NGE3MDYxNzQ4OWJkOTc2MmVmMDY3Y2JkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3JMaXN0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNTU1NlbGVj
dG9yTGlzdC5oIgogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyVmFsdWVzLmgiCisjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtMjExLDYgKzIxMiwyMSBAQCBi
b29sIENTU1NlbGVjdG9yTGlzdDo6aGFzSW52YWxpZFNlbGVjdG9yKCkgY29uc3QKICAgICByZXR1
cm4gZm9yRWFjaFNlbGVjdG9yKGZ1bmN0b3IsIHRoaXMpOwogfQogCisjaWYgRU5BQkxFKFNIQURP
V19ET00pCitjbGFzcyBTZWxlY3Rvckhhc1NoYWRvd0Rpc3RyaWJ1dGVkIHsKK3B1YmxpYzoKKyAg
ICBib29sIG9wZXJhdG9yKCkoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHNlbGVjdG9yLT5pc1NoYWRvd0Rpc3RyaWJ1dGVkKCk7CisgICAgfQorfTsKKworYm9v
bCBDU1NTZWxlY3Rvckxpc3Q6Omhhc1NoYWRvd0Rpc3RyaWJ1dGVkQXQoc2l6ZV90IGluZGV4KSBj
b25zdAoreworICAgIFNlbGVjdG9ySGFzU2hhZG93RGlzdHJpYnV0ZWQgZnVuY3RvcjsKKyAgICBy
ZXR1cm4gZm9yRWFjaFRhZ1NlbGVjdG9yKGZ1bmN0b3IsIHNlbGVjdG9yQXQoaW5kZXgpKTsKK30K
IAorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxl
Y3Rvckxpc3QuaAppbmRleCA0ZmNmZWUyZmFhNDE4MmQ3YTlhYjA1NWJjY2U1MTlmZTc0ZTIyNzE1
Li40ZTdiNTgyZGJjNTExOGE0NWU0NmRiYmYwY2Q4OTRhOWY3NDNmNmIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1NlbGVjdG9yTGlzdC5oCkBAIC02MCw2ICs2MCwxMCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBzZWxlY3RvcnNOZWVkTmFtZXNwYWNlUmVzb2x1dGlvbigpOwogICAgIGJvb2wgaGFzSW52YWxp
ZFNlbGVjdG9yKCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBib29sIGhh
c1NoYWRvd0Rpc3RyaWJ1dGVkQXQoc2l6ZV90IGluZGV4KSBjb25zdDsKKyNlbmRpZgorCiAgICAg
U3RyaW5nIHNlbGVjdG9yc1RleHQoKSBjb25zdDsKIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1J1bGVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCmluZGV4IGQ4
NDAwNGQ5Y2NjMTQ4NDNlNGI0MGE2YmQ2MmFjNzJhOGRmYjIyZWIuLmZiYzI2OWJjNzdiMTg1Y2M1
M2E5Nzg1NWQ0YTJjMWM2MjRiOTY0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9S
dWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKQEAgLTI4Nyw5
ICsyODcsMjUgQEAgdm9pZCBSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29u
dGVudHMqIHNoZWV0LCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHUKICAgICAgICAgU3R5bGVSdWxlQmFz
ZSogcnVsZSA9IHJ1bGVzW2ldLmdldCgpOwogCiAgICAgICAgIEFTU0VSVCghcnVsZS0+aXNJbXBv
cnRSdWxlKCkpOwotICAgICAgICBpZiAocnVsZS0+aXNTdHlsZVJ1bGUoKSkKLSAgICAgICAgICAg
IGFkZFN0eWxlUnVsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihydWxlKSwgYWRkUnVsZUZsYWdz
KTsKLSAgICAgICAgZWxzZSBpZiAocnVsZS0+aXNQYWdlUnVsZSgpKQorICAgICAgICBpZiAocnVs
ZS0+aXNTdHlsZVJ1bGUoKSkgeworICAgICAgICAgICAgU3R5bGVSdWxlKiBzdHlsZVJ1bGUgPSBz
dGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihydWxlKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAg
ICAgICAgICAgIGlmICghc2NvcGUpCisgICAgICAgICAgICAgICAgYWRkU3R5bGVSdWxlKHN0eWxl
UnVsZSwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
IGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0ID0gc3R5bGVSdWxlLT5zZWxlY3Rv
ckxpc3QoKTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBzZWxlY3RvckluZGV4ID0gMDsg
c2VsZWN0b3JJbmRleCAhPSBub3RGb3VuZDsgc2VsZWN0b3JJbmRleCA9IHNlbGVjdG9yTGlzdC5p
bmRleE9mTmV4dFNlbGVjdG9yQWZ0ZXIoc2VsZWN0b3JJbmRleCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHNlbGVjdG9yTGlzdC5oYXNTaGFkb3dEaXN0cmlidXRlZEF0KHNlbGVjdG9ySW5k
ZXgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZXItPmFkZFNoYWRvd0Rpc3RyaWJ1
dGVkUnVsZShzdHlsZVJ1bGUsIHNlbGVjdG9ySW5kZXgsIGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9k
ZSo+KHNjb3BlKSwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkUnVsZShzdHlsZVJ1bGUsIHNlbGVjdG9ySW5kZXgsIGFk
ZFJ1bGVGbGFncyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorI2Vsc2UKKyAg
ICAgICAgICAgIGFkZFN0eWxlUnVsZShydWxlLCBhZGRSdWxlRmxhZ3MpOworI2VuZGlmCisKKyAg
ICAgICAgfSBlbHNlIGlmIChydWxlLT5pc1BhZ2VSdWxlKCkpCiAgICAgICAgICAgICBhZGRQYWdl
UnVsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGVQYWdlKj4ocnVsZSkpOwogICAgICAgICBlbHNlIGlm
IChydWxlLT5pc01lZGlhUnVsZSgpKSB7CiAgICAgICAgICAgICBTdHlsZVJ1bGVNZWRpYSogbWVk
aWFSdWxlID0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxlTWVkaWEqPihydWxlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggY2E3M2FhNGYyNjY2ZjdlZThiNmM1ODIxNGY3
MmQxNGU4OWRmN2E4My4uYjgwZmMyM2VjOTRlOTE3MzZmZGNiYTU3Y2RkNWE5NTlkMmRkMzBkMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAK
ICNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxQcm9ncmVzc0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCisjaW5jbHVkZSAiSW5zZXJ0
aW9uUG9pbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNs
dWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0yODEsOCArMjgy
LDEzIEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNo
ZWNrU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVjCiAKICAgICAvLyBQcmVwYXJlIG5leHQgc2Vs
ZWN0b3IKICAgICBDU1NTZWxlY3RvciogaGlzdG9yeVNlbGVjdG9yID0gY29udGV4dC5zZWxlY3Rv
ci0+dGFnSGlzdG9yeSgpOwotICAgIGlmICghaGlzdG9yeVNlbGVjdG9yKQorICAgIGlmICghaGlz
dG9yeVNlbGVjdG9yKSB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgIGlmIChjb250
ZXh0LnNjb3BlT2ZMYXN0RWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmVsZW1l
bnQtPmlzRGVzY2VuZGFudE9mKGNvbnRleHQuc2NvcGVPZkxhc3RFbGVtZW50KSA/IFNlbGVjdG9y
TWF0Y2hlcyA6IFNlbGVjdG9yRmFpbHNMb2NhbGx5OworI2VuZGlmCiAgICAgICAgIHJldHVybiBT
ZWxlY3Rvck1hdGNoZXM7CisgICAgfQogCiAgICAgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQgbmV4
dENvbnRleHQoY29udGV4dCk7CiAgICAgbmV4dENvbnRleHQuc2VsZWN0b3IgPSBoaXN0b3J5U2Vs
ZWN0b3I7CkBAIC0zODQsNiArMzkwLDI2IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRj
aCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVjCiAgICAg
ICAgICAgICBuZXh0Q29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgPSAwOwogICAgICAgICAgICAg
cmV0dXJuIGNoZWNrU2VsZWN0b3IobmV4dENvbnRleHQsIGlnbm9yZUR5bmFtaWNQc2V1ZG8pOwog
ICAgICAgICB9CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
U2hhZG93RGlzdHJpYnV0ZWQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIFZlY3RvcjxJbnNlcnRp
b25Qb2ludCosIDg+IGluc2VydGlvblBvaW50czsKKyAgICAgICAgICAgIGZvciAoRWxlbWVudCog
ZWxlbWVudCA9IGNvbnRleHQuZWxlbWVudDsgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnQtPnBh
cmVudEVsZW1lbnQoKSkgeworICAgICAgICAgICAgICAgIGluc2VydGlvblBvaW50cy5jbGVhcigp
OworICAgICAgICAgICAgICAgIGNvbGxlY3RBbGxNaWRwb2ludEluc2VydGlvblBvaW50cyhlbGVt
ZW50LCBpbnNlcnRpb25Qb2ludHMpOworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgaW5zZXJ0aW9uUG9pbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAg
IG5leHRDb250ZXh0LmVsZW1lbnQgPSBpbnNlcnRpb25Qb2ludHNbaV07CisgICAgICAgICAgICAg
ICAgICAgIG5leHRDb250ZXh0LmlzU3ViU2VsZWN0b3IgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgbmV4dENvbnRleHQuZWxlbWVudFN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAg
bmV4dENvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAg
U2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3IobmV4dENvbnRleHQsIGlnbm9yZUR5
bmFtaWNQc2V1ZG8pOworICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2ggPT0gU2VsZWN0b3JN
YXRjaGVzIHx8IG1hdGNoID09IFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5KQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1hdGNoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKKyAgICAgICAg
fQorI2VuZGlmCiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXggMzMxOTNmNzZiYzMyODI2YWQwZDNlZTYxNDUxNWI5
YmFjNWQyNTIwYi4uZDk2NmQyZTU3ZDg1ZjQwNDU2ZDAxYTY2YWMyMjBiMTc0ODgyMGM3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAsIGlzU3ViU2VsZWN0b3IoZmFsc2UpCiAgICAgICAgICAgICAsIGhhc1Nj
cm9sbGJhclBzZXVkbyhmYWxzZSkKICAgICAgICAgICAgICwgaGFzU2VsZWN0aW9uUHNldWRvKGZh
bHNlKQorICAgICAgICAgICAgLCBzY29wZU9mTGFzdEVsZW1lbnQoMCkKICAgICAgICAgeyB9CiAK
ICAgICAgICAgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yOwpAQCAtNzUsNiArNzYsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGJvb2wgaXNTdWJTZWxlY3RvcjsKICAgICAgICAgYm9vbCBoYXNTY3JvbGxiYXJQ
c2V1ZG87CiAgICAgICAgIGJvb2wgaGFzU2VsZWN0aW9uUHNldWRvOworICAgICAgICBjb25zdCBD
b250YWluZXJOb2RlKiBzY29wZU9mTGFzdEVsZW1lbnQ7CiAgICAgfTsKIAogICAgIGJvb2wgY2hl
Y2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBib29sIGlzRmFzdENoZWNrYWJsZVNl
bGVjdG9yID0gZmFsc2UpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAK
aW5kZXggY2VhYTc2ODE0OTAwYzBiMzFkMzk0YzRmMjZjYzRjYmI1ZTM1ZThkYy4uM2I0ZDY0MDRi
N2M3Y2YxZjliNDRlYzM1ZjRhOWE0OWQzNzM4OWZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JGaWx0ZXIuY3BwCkBAIC0xNDgsNiArMTQ4LDcgQEAgdm9pZCBTZWxlY3RvckZpbHRlcjo6Y29s
bGVjdElkZW50aWZpZXJIYXNoZXMoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCB1bnNpZ24K
ICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RGlyZWN0QWRqYWNlbnQ6CiAgICAgICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OkluZGlyZWN0QWRqYWNlbnQ6CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OlNoYWRvd0Rlc2NlbmRhbnQ6CisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rpc3Ry
aWJ1dGVkOgogICAgICAgICAgICAgc2tpcE92ZXJTdWJzZWxlY3RvcnMgPSB0cnVlOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMDk4ZTBkNTdjMGI3ZTFkNzRlZDE1MDhm
N2U5MDBkNTE2YzJlOTcwZC4uZTViOWU4OTM3MTU0ZjQyNDI0YjEzODZhZmRkZTAwNmIyYmFjNjYx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMzY0LDYgKzM2NCw5IEBA
IHZvaWQgU3R5bGVSZXNvbHZlcjo6cmVzZXRBdXRob3JTdHlsZSgpCiB7CiAgICAgbV9hdXRob3JT
dHlsZSA9IFJ1bGVTZXQ6OmNyZWF0ZSgpOwogICAgIG1fYXV0aG9yU3R5bGUtPmRpc2FibGVBdXRv
U2hyaW5rVG9GaXQoKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBtX3NoYWRvd0Rpc3Ry
aWJ1dGVkUnVsZVNldE1hcC5jbGVhcigpOworI2VuZGlmCiB9CiAKIHZvaWQgU3R5bGVSZXNvbHZl
cjo6YXBwZW5kQXV0aG9yU3R5bGVTaGVldHModW5zaWduZWQgZmlyc3ROZXcsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgc3R5bGVTaGVldHMpCkBAIC00NDgsNiArNDUxLDIw
IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHlsZShQYXNzUmVmUHRyPFN0eWxl
UnVsZUtleWZyYW1lcz4gcnVsZSkKICAgICBtX2tleWZyYW1lc1J1bGVNYXAuc2V0KHMuaW1wbCgp
LCBydWxlKTsKIH0KIAorCisjaWYgRU5BQkxFKFNIQURPV19ET00pCit2b2lkIFN0eWxlUmVzb2x2
ZXI6OmFkZFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZShTdHlsZVJ1bGUqIHJ1bGUsIHNpemVfdCBzZWxl
Y3RvckluZGV4LCBDb250YWluZXJOb2RlKiBzY29wZSwgQWRkUnVsZUZsYWdzIGFkZFJ1bGVGbGFn
cykKK3sKKyAgICBpZiAobV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAuY29udGFpbnMoc2Nv
cGUpKQorICAgICAgICBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5nZXQoc2NvcGUpLT5h
ZGRSdWxlKHJ1bGUsIHNlbGVjdG9ySW5kZXgsIGFkZFJ1bGVGbGFncyk7CisgICAgZWxzZSB7Cisg
ICAgICAgIE93blB0cjxSdWxlU2V0PiBydWxlU2V0Rm9yU2NvcGUgPSBhZG9wdFB0cihuZXcgUnVs
ZVNldCgpKTsKKyAgICAgICAgcnVsZVNldEZvclNjb3BlLT5hZGRSdWxlKHJ1bGUsIHNlbGVjdG9y
SW5kZXgsIGFkZFJ1bGVGbGFncyk7CisgICAgICAgIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0
TWFwLmFkZChzY29wZSwgcnVsZVNldEZvclNjb3BlLnJlbGVhc2UoKSk7CisgICAgfQorfQorI2Vu
ZGlmCisKIFN0eWxlUmVzb2x2ZXI6On5TdHlsZVJlc29sdmVyKCkKIHsKICAgICBtX2ZvbnRTZWxl
Y3Rvci0+Y2xlYXJEb2N1bWVudCgpOwpAQCAtNjY0LDcgKzY4MSw4IEBAIHZvaWQgU3R5bGVSZXNv
bHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMoUnVsZVNldCogcnVsZXMsIGludCYgZmlyc3RSdWxl
SW5kZXgsIGluCiAgICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUgPSBtX2VsZW1lbnQtPnRyZWVTY29w
ZSgpOwogICAgIGlmICghTWF0Y2hpbmdVQVJ1bGVzU2NvcGU6OmlzTWF0Y2hpbmdVQVJ1bGVzKCkK
ICAgICAgICAgJiYgIXRyZWVTY29wZS0+YXBwbHlBdXRob3JTdHlsZXMoKQotICAgICAgICAmJiAo
IW9wdGlvbnMuc2NvcGUgfHwgb3B0aW9ucy5zY29wZS0+dHJlZVNjb3BlKCkgIT0gdHJlZVNjb3Bl
KSkKKyAgICAgICAgJiYgKCFvcHRpb25zLnNjb3BlIHx8IG9wdGlvbnMuc2NvcGUtPnRyZWVTY29w
ZSgpICE9IHRyZWVTY29wZSkKKyAgICAgICAgJiYgIW9wdGlvbnMuc2NvcGVPZkxhc3RFbGVtZW50
KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBuZWVkIHRvIGNvbGxlY3QgdGhlIHJ1bGVz
IGZvciBpZCwgY2xhc3MsIHRhZywgYW5kIGV2ZXJ5dGhpbmcgZWxzZSBpbnRvIGEgYnVmZmVyIGFu
ZApAQCAtNzk5LDYgKzgxNywxNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoSG9zdFJ1bGVz
KE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpCiAjZW5kaWYKIH0K
IAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQordm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaFNoYWRv
d0Rpc3RyaWJ1dGVkUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlS
dWxlcykKK3sKKyAgICBmb3IgKFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcDo6aXRlcmF0b3Ig
aXQgPSBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5iZWdpbigpOyBpdCAhPSBtX3NoYWRv
d0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5lbmQoKTsgKytpdCkgeworICAgICAgICBNYXRjaE9wdGlv
bnMgb3B0aW9ucyhpbmNsdWRlRW1wdHlSdWxlcywgMCk7CisgICAgICAgIG9wdGlvbnMuc2NvcGVP
Zkxhc3RFbGVtZW50ID0gaXQtPmtleTsKKyAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMoaXQt
PnZhbHVlLmdldCgpLCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdl
cy5sYXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7CisgICAgfQorfQorI2VuZGlmCisKIHZvaWQgU3R5
bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGlu
Y2x1ZGVFbXB0eVJ1bGVzKQogewogICAgIG1fbWF0Y2hlZFJ1bGVzLmNsZWFyKCk7CkBAIC04MTEs
NiArODQwLDkgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaEF1dGhvclJ1bGVzKE1hdGNoUmVz
dWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMKICAgICBNYXRjaE9wdGlvbnMgb3B0
aW9ucyhpbmNsdWRlRW1wdHlSdWxlcyk7CiAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMobV9hdXRo
b3JTdHlsZS5nZXQoKSwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5n
ZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOwogICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9y
UmVnaW9uKG1fYXV0aG9yU3R5bGUuZ2V0KCksIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxl
LCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKKyAgICBtYXRjaFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXMocmVzdWx0LCBpbmNsdWRl
RW1wdHlSdWxlcyk7CisjZW5kaWYKICAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMocmVz
dWx0KTsKIAogICAgIG1hdGNoU2NvcGVkQXV0aG9yUnVsZXMocmVzdWx0LCBpbmNsdWRlRW1wdHlS
dWxlcyk7CkBAIC04NDcsNyArODc5LDExIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1h
dGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIHJ1bGVzLCBpCiAKICAg
ICAvLyBJbiBzb21lIGNhc2VzIHdlIG1heSBlbmQgdXAgbG9va2luZyB1cCBzdHlsZSBmb3IgcmFu
ZG9tIGVsZW1lbnRzIGluIHRoZSBtaWRkbGUgb2YgYSByZWN1cnNpdmUgdHJlZSByZXNvbHZlLgog
ICAgIC8vIEFuY2VzdG9yIGlkZW50aWZpZXIgZmlsdGVyIHdvbid0IGJlIHVwLXRvLWRhdGUgaW4g
dGhhdCBjYXNlIGFuZCB3ZSBjYW4ndCB1c2UgdGhlIGZhc3QgcGF0aC4KKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKKyAgICBib29sIGNhblVzZUZhc3RSZWplY3QgPSBtX3NlbGVjdG9yRmlsdGVyLnBh
cmVudFN0YWNrSXNDb25zaXN0ZW50KG1fcGFyZW50Tm9kZSkgJiYgIW9wdGlvbnMuc2NvcGVPZkxh
c3RFbGVtZW50OworI2Vsc2UKICAgICBib29sIGNhblVzZUZhc3RSZWplY3QgPSBtX3NlbGVjdG9y
RmlsdGVyLnBhcmVudFN0YWNrSXNDb25zaXN0ZW50KG1fcGFyZW50Tm9kZSk7CisjZW5kaWYKIAog
ICAgIHVuc2lnbmVkIHNpemUgPSBydWxlcy0+c2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKQEAgLTg1Nyw3ICs4OTMsNyBAQCB2b2lkIFN0eWxlUmVzb2x2
ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBy
dWxlcywgaQogCiAgICAgICAgIFN0eWxlUnVsZSogcnVsZSA9IHJ1bGVEYXRhLnJ1bGUoKTsKICAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbE1hdGNoUnVsZShkb2N1bWVudCgpLCBydWxlLCB0aGlzKTsKLSAg
ICAgICAgaWYgKGNoZWNrU2VsZWN0b3IocnVsZURhdGEsIG9wdGlvbnMuc2NvcGUpKSB7CisgICAg
ICAgIGlmIChjaGVja1NlbGVjdG9yKHJ1bGVEYXRhLCBvcHRpb25zLnNjb3BlLCBvcHRpb25zLnNj
b3BlT2ZMYXN0RWxlbWVudCkpIHsKICAgICAgICAgICAgIC8vIElmIHRoZSBydWxlIGhhcyBubyBw
cm9wZXJ0aWVzIHRvIGFwcGx5LCB0aGVuIGlnbm9yZSBpdCBpbiB0aGUgbm9uLWRlYnVnIG1vZGUu
CiAgICAgICAgICAgICBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzID0gcnVsZS0+
cHJvcGVydGllcygpOwogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0aWVzIHx8IChwcm9wZXJ0aWVz
LT5pc0VtcHR5KCkgJiYgIW9wdGlvbnMuaW5jbHVkZUVtcHR5UnVsZXMpKSB7CkBAIC0yMjM4LDcg
KzIyNzQsNyBAQCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBTdHlsZVJlc29sdmVyOjpwc2V1ZG9T
dHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCBQcwogICAgIHJldHVybiBtX3J1bGVMaXN0
LnJlbGVhc2UoKTsKIH0KIAotaW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y2hlY2tTZWxlY3Rv
cihjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKQor
aW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYg
cnVsZURhdGEsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlLCBjb25zdCBDb250YWluZXJOb2Rl
KiBzY29wZU9mTGFzdEVsZW1lbnQpCiB7CiAgICAgbV9keW5hbWljUHNldWRvID0gTk9QU0VVRE87
CiAKQEAgLTIyNjMsNiArMjI5OSw3IEBAIGlubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6OmNoZWNr
U2VsZWN0b3IoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCBjb25zdCBDb250YWluCiAgICAgY29u
dGV4dC5lbGVtZW50U3R5bGUgPSBzdHlsZSgpOwogICAgIGNvbnRleHQuZWxlbWVudFBhcmVudFN0
eWxlID0gbV9wYXJlbnROb2RlID8gbV9wYXJlbnROb2RlLT5yZW5kZXJTdHlsZSgpIDogMDsKICAg
ICBjb250ZXh0LnNjb3BlID0gc2NvcGU7CisgICAgY29udGV4dC5zY29wZU9mTGFzdEVsZW1lbnQg
PSBzY29wZU9mTGFzdEVsZW1lbnQ7CiAgICAgY29udGV4dC5wc2V1ZG9TdHlsZSA9IG1fcHNldWRv
U3R5bGU7CiAgICAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIG1hdGNoID0gbV9zZWxl
Y3RvckNoZWNrZXIuY2hlY2tTZWxlY3Rvcihjb250ZXh0LCBtX2R5bmFtaWNQc2V1ZG8pOwogICAg
IGlmIChtYXRjaCAhPSBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2hlcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IDViZDI5NDBlNTdmMjk4MjFmZTYxM2VhMGU4YTM5YmZk
ZmI4OGQwN2QuLmJjN2VlM2VhN2NiODNmMzcxYzhmZTBlZTJhNmJjYThjYjJkMDVlNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk1l
ZGlhUXVlcnlFeHAuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJ1bGVG
ZWF0dXJlLmgiCisjaW5jbHVkZSAiUnVsZVNldC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaCIKICNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXIuaCIKICNpbmNsdWRlICJTZWxl
Y3RvckZpbHRlci5oIgpAQCAtNzYsNyArNzcsNiBAQCBjbGFzcyBNZWRpYVF1ZXJ5RXZhbHVhdG9y
OwogY2xhc3MgTm9kZTsKIGNsYXNzIFJlbmRlclJlZ2lvbjsKIGNsYXNzIFJ1bGVEYXRhOwotY2xh
c3MgUnVsZVNldDsKIGNsYXNzIFNldHRpbmdzOwogY2xhc3MgU3RhdGljQ1NTUnVsZUxpc3Q7CiBj
bGFzcyBTdHlsZUJ1aWxkZXI7CkBAIC0yOTksNiArMjk5LDEwIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgbG9hZFBlbmRpbmdSZXNvdXJjZXMoKTsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAg
IHZvaWQgYWRkU2hhZG93RGlzdHJpYnV0ZWRSdWxlKFN0eWxlUnVsZSosIHNpemVfdCBzZWxlY3Rv
ckluZGV4LCBDb250YWluZXJOb2RlKiBzY29wZSwgQWRkUnVsZUZsYWdzKTsKKyNlbmRpZgorCiBw
cml2YXRlOgogICAgIC8vIFRoaXMgZnVuY3Rpb24gZml4ZXMgdXAgdGhlIGRlZmF1bHQgZm9udCBz
aXplIGlmIGl0IGRldGVjdHMgdGhhdCB0aGUgY3VycmVudCBnZW5lcmljIGZvbnQgZmFtaWx5IGhh
cyBjaGFuZ2VkLiAtZHdoCiAgICAgdm9pZCBjaGVja0ZvckdlbmVyaWNGYW1pbHlDaGFuZ2UoUmVu
ZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOwpAQCAtMzQzLDkgKzM0NywxMCBA
QCBwcml2YXRlOgogICAgIH07CiAKICAgICBzdHJ1Y3QgTWF0Y2hPcHRpb25zIHsKLSAgICAgICAg
TWF0Y2hPcHRpb25zKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIGNvbnN0IENvbnRhaW5lck5vZGUq
IHNjb3BlID0gMCkgOiBzY29wZShzY29wZSksIGluY2x1ZGVFbXB0eVJ1bGVzKGluY2x1ZGVFbXB0
eVJ1bGVzKSB7IH0KKyAgICAgICAgTWF0Y2hPcHRpb25zKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMs
IGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlID0gMCkgOiBzY29wZShzY29wZSksIGluY2x1ZGVF
bXB0eVJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKSwgc2NvcGVPZkxhc3RFbGVtZW50KDApIHsgfQog
ICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZTsKICAgICAgICAgYm9vbCBpbmNsdWRl
RW1wdHlSdWxlczsKKyAgICAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGVPZkxhc3RFbGVt
ZW50OwogICAgIH07CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNYXRjaGVkUHJvcGVydGllcyhNYXRj
aFJlc3VsdCYsIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMsIFN0eWxlUnVsZSog
PSAwLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlID0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaEFsbCwg
Ym9vbCBpblJlZ2lvblJ1bGUgPSBmYWxzZSk7CkBAIC0zNTgsNiArMzYzLDEwIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBtYXRjaFVzZXJSdWxlcyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5
UnVsZXMpOwogICAgIHZvaWQgbWF0Y2hTY29wZWRBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYsIGJv
b2wgaW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIHZvaWQgbWF0Y2hIb3N0UnVsZXMoTWF0Y2hSZXN1
bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAg
ICB2b2lkIG1hdGNoU2hhZG93RGlzdHJpYnV0ZWRSdWxlcyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5j
bHVkZUVtcHR5UnVsZXMpOworI2VuZGlmCisKICAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVz
KFJ1bGVTZXQqLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGNvbnN0
IE1hdGNoT3B0aW9ucyYpOwogICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24o
UnVsZVNldCosIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgY29uc3Qg
TWF0Y2hPcHRpb25zJik7CiAgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29u
c3QgVmVjdG9yPFJ1bGVEYXRhPiosIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJ
bmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJik7CkBAIC0zNjUsNyArMzc0LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNvcnRNYXRjaGVkUnVsZXMoKTsKICAgICB2b2lkIHNvcnRBbmRUcmFuc2Zlck1h
dGNoZWRSdWxlcyhNYXRjaFJlc3VsdCYpOwogCi0gICAgYm9vbCBjaGVja1NlbGVjdG9yKGNvbnN0
IFJ1bGVEYXRhJiwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUpOworICAgIGJvb2wgY2hlY2tT
ZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlLCBjb25z
dCBDb250YWluZXJOb2RlKiBzY29wZU9mTGFzdEVsZW1lbnQpOwogICAgIGJvb2wgY2hlY2tSZWdp
b25TZWxlY3RvcihDU1NTZWxlY3RvciogcmVnaW9uU2VsZWN0b3IsIEVsZW1lbnQqIHJlZ2lvbkVs
ZW1lbnQpOwogICAgIHZvaWQgYXBwbHlNYXRjaGVkUHJvcGVydGllcyhjb25zdCBNYXRjaFJlc3Vs
dCYsIGNvbnN0IEVsZW1lbnQqKTsKICAgICBlbnVtIFN0eWxlQXBwbGljYXRpb25QYXNzIHsKQEAg
LTM5Niw2ICs0MDUsMTEgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8UnVsZVNldD4gbV9hdXRob3JT
dHlsZTsKICAgICBPd25QdHI8UnVsZVNldD4gbV91c2VyU3R5bGU7CiAKKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ29udGFpbmVyTm9kZSosIE93blB0
cjxSdWxlU2V0PiA+IFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcDsKKyAgICBTaGFkb3dEaXN0
cmlidXRlZFJ1bGVTZXRNYXAgbV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXA7CisjZW5kaWYK
KwogICAgIFJ1bGVGZWF0dXJlU2V0IG1fZmVhdHVyZXM7CiAgICAgT3duUHRyPFJ1bGVTZXQ+IG1f
c2libGluZ1J1bGVTZXQ7CiAgICAgT3duUHRyPFJ1bGVTZXQ+IG1fdW5jb21tb25BdHRyaWJ1dGVS
dWxlU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9u
UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKaW5k
ZXggYWVkYWMxZDBmN2QxMGY2ZDg0ZTEzNjBlODEwMDMzOGE5MGM4MTJlMS4uMTdmYzc2NmY3ZGRl
YjAzZGE0ZmQ1OWU3ZDQxMGU4MDJmZGQ2ZTAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC0xNzksNiArMTc5LDM1IEBAIGlubGluZSBJbnNlcnRp
b25Qb2ludCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlKQog
ICAgIHJldHVybiBpbnNlcnRpb25Qb2ludDsKIH0KIAoraW5saW5lIHZvaWQgY29sbGVjdEFsbE1p
ZHBvaW50SW5zZXJ0aW9uUG9pbnRzKGNvbnN0IE5vZGUqIHByb2plY3RlZE5vZGUsIFZlY3RvcjxJ
bnNlcnRpb25Qb2ludCosIDg+JiByZXN1bHRzKQoreworICAgIEluc2VydGlvblBvaW50KiBpbnNl
cnRpb25Qb2ludCA9IDA7CisgICAgY29uc3QgTm9kZSogY3VycmVudCA9IHByb2plY3RlZE5vZGU7
CisKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93
ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKKyAgICAgICAgICAg
IHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7CisgICAgICAgICAgICBpZiAoSW5zZXJ0aW9u
UG9pbnQqIGluc2VydGVkVG8gPSBzaGFkb3ctPmRpc3RyaWJ1dG9yKCkuZmluZEluc2VydGlvblBv
aW50Rm9yKHByb2plY3RlZE5vZGUpKSB7CisgICAgICAgICAgICAgICAgY3VycmVudCA9IGluc2Vy
dGVkVG87CisgICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBpbnNlcnRlZFRvOworICAg
ICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKGluc2VydGlvblBvaW50KTsKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChO
b2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlRm9yRGlzdHJpYnV0aW9uKGN1cnJlbnQpKSB7CisgICAg
ICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBwYXJlbnQtPmlzU2hhZG93
Um9vdCgpID8gdG9TaGFkb3dSb290KHBhcmVudCktPmFzc2lnbmVkVG8oKSA6IDApIHsKKyAgICAg
ICAgICAgICAgICBjdXJyZW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAgICBpbnNlcnRp
b25Qb2ludCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoaW5z
ZXJ0aW9uUG9pbnQpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gSW5zZXJ0aW9uUG9pbnRfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAppbmRleCBmZjAw
Yzk1MDI3OGMzMzIwMWMwYWY5MmQ4YWI2NTk3ZThlYzk3ZmY1Li43NjRmMWVjZDE3MTUxNjc3MjVm
YzM3NGFmY2ZjNDg0NmM0MmNjMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaApAQCAtNzAsNyArNzAsNyBAQCBlbnVt
IFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eSB7CiAvLyBTdGF0aWMgcHNl
dWRvIHN0eWxlcy4gRHluYW1pYyBvbmVzIGFyZSBwcm9kdWNlZCBvbiB0aGUgZmx5LgogZW51bSBQ
c2V1ZG9JZCB7CiAgICAgLy8gVGhlIG9yZGVyIG11c3QgYmUgTk9QIElELCBwdWJsaWMgSURzLCBh
bmQgdGhlbiBpbnRlcm5hbCBJRHMuCi0gICAgTk9QU0VVRE8sIEZJUlNUX0xJTkUsIEZJUlNUX0xF
VFRFUiwgQkVGT1JFLCBBRlRFUiwgU0VMRUNUSU9OLCBGSVJTVF9MSU5FX0lOSEVSSVRFRCwgU0NS
T0xMQkFSLAorICAgIE5PUFNFVURPLCBGSVJTVF9MSU5FLCBGSVJTVF9MRVRURVIsIEJFRk9SRSwg
QUZURVIsIERJU1RSSUJVVEVELCBTRUxFQ1RJT04sIEZJUlNUX0xJTkVfSU5IRVJJVEVELCBTQ1JP
TExCQVIsCiAgICAgLy8gSW50ZXJuYWwgSURzIGZvbGxvdzoKICAgICBTQ1JPTExCQVJfVEhVTUIs
IFNDUk9MTEJBUl9CVVRUT04sIFNDUk9MTEJBUl9UUkFDSywgU0NST0xMQkFSX1RSQUNLX1BJRUNF
LCBTQ1JPTExCQVJfQ09STkVSLCBSRVNJWkVSLAogICAgIElOUFVUX0xJU1RfQlVUVE9OLApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDA0MTMxODc3ZTEzZDdmYjM4M2Q1Mzg4ZGI0Mjg2MjViMDBjM2JiNTUuLjliOTk5ZTIyMGVk
OTYxNmI4NDJkMDUxY2NjYzk0ODcxMWM4MWI5NDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAx
My0wMS0wNiAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1No
YWRvdyBET01dIEltcGxlbWVudHMgYSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxlbWVudC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMTY5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZv
ci1zaGFkb3ctZWxlbWVudC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC1tYXRjaC1hbGwtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
bmVzdGVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi1l
eHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQtZXhwZWN0ZWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVk
by1lbGVtZW50LXNjb3BlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0LWV4
cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRl
ZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50Lmh0bWw6IEFk
ZGVkLgorCiAyMDEzLTAxLTA2ICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgSGVhcC11c2UtYWZ0ZXItZnJlZSBpbiBXZWJDb3JlOjpEb2N1bWVudDo6aW1w
bGljaXRDbG9zZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42NGMyNmUyYjU2YzRjNmE3YzcwYzZjZmQ1OGEyMjdmOGUwZjQ0NjRmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1l
bGVtZW50LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAg
PGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3It
c2hhZG93LWVsZW1lbnQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGMyNmUyYjU2YzRjNmE3
YzcwYzZjZmQ1OGEyMjdmOGUwZjQ0NjRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxl
bWVudC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxk
aXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVt
ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzE0Mjk3MGQ3NDFkZGNmMjdmZWY3NDRhYjJlNDAzZWMxOTg5
MGYzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQuaHRtbApAQCAtMCwwICsx
LDIzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ3NoYWRvdzo6
ZGlzdHJpYnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRl
U2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykp
KSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNo
YWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdzaGFkb3cnKSkpKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC1leHBlY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50LW1hdGNoLWFsbC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhNjBiNzJlMGRlOTE3NzYy
YjJhMmE0YzVlYzNlZjlmNTY2ZWI0OTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLWV4cGVj
dGVkLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5
PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXY+CisgICAg
ICBub3JtYWwKKyAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAg
ICA8L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgbm9ybWFsCisgICAgICA8ZGl2IHN0eWxlPSJjb2xv
cjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJmNDA0ZjI2ZTdiZGE4MzBlNmViODU0YWM5NzVmM2RiYmM2Y2U5MDkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtbWF0Y2gtYWxsLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0Pgor
dmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRv
d1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50OjpkaXN0cmlidXRlZCguaGVsbG8pIHsgY29sb3I6
IGdyZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Fu
ZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAg
ICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQn
KSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJyksCisgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnaGVsbG8nfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4n
KSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2hlbGxvJ30sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVu
JykpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtbmVzdGVkLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTUxODM0NDJhMDc2
YzdmODFhOWM1NDIxMzFlNzlmYjc3NmYwMTFjYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQtZXhw
ZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJv
ZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdiBpZD0i
bmVzdGVkLWhvc3QiPgorICAgICAgdGV4dDEKKyAgICAgIDxkaXY+CisgICAgICAgIHRleHQyCisg
ICAgICAgIDxkaXY+CisgICAgICAgICAgdGV4dDMKKyAgICAgICAgICA8ZGl2IHN0eWxlPSJjb2xv
cjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAgICAgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAgICAg
ICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2Rpdj4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNTMyMWIwYTYzZTE0MjkzZGJhY2RhMzFkOWViMWU3ODVhN2ExOGVlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1l
bGVtZW50LW5lc3RlZC5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4K
K3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFk
b3dTdHlsZS5pbm5lckhUTUwgPSAnZGl2IGNvbnRlbnQ6OmRpc3RyaWJ1dGVkKGRpdiBjb250ZW50
OjpkaXN0cmlidXRlZChkaXYuZ3JlZW4pKSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5k
Ym94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5k
Q2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAg
ICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICduZXN0ZWQtaG9zdCd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSgndGV4dDEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdk
aXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCd0ZXh0MicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnZGl2J30pKSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzog
J2dyZWVuJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCd0ZXh0MycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7fSkpKSksCisgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnZGl2JywgeydjbGFzcyc6ICdncmVlbid9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpLAorICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoJ25vcm1hbCcpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTY5YzkxMjdkZTVlNzAzYjdhMWE1YzkzNjk0ZWE3Y2QwYjEyNDg0MgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAg
PGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdiBpZD0iaG9zdDIiPgorICAgICAgPGRpdiBzdHlsZT0n
Y29sb3I6IGdyZWVuJz4KKyAgICAgICAgZ3JlZW4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2Pgor
ICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24uaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1y
ZXByb2plY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Mjk1NTgwODMwODg5ZDVkOTNiNDVmMjRhZDY0
OWQyMmVhMjUzMzgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5odG1sCkBAIC0wLDAg
KzEsMjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnY29udGVu
dDo6ZGlzdHJpYnV0ZWQoLmZvbykgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxk
KAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNy
ZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnaG9zdDInfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAn
LmZvbyd9KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50
JykpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2Zvbyd9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykp
KSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC1zY29wZWQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDhkOWUyZGUzZTZmZTRi
ZmQ4OTgwYjYzZDAzOWJjNTRkODgzMWEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNjb3BlZC1leHBlY3Rl
ZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4K
KzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2Pm5vcm1hbDwv
ZGl2PgorICAgIDxkaXY+CisgICAgICA8ZGl2IHN0eWxlPSdjb2xvcjogZ3JlZW4nPmdyZWVuPC9k
aXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNj
b3BlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVk
by1lbGVtZW50LXNjb3BlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlNmUyNmYzOWExOTYyYjAxZmI4ZTNh
MDViMWRjM2Q5NGI4YWMzMDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLmh0bWwKQEAgLTAsMCAr
MSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50
OjpkaXN0cmlidXRlZChkaXYpIHsgY29sb3I6IGdyZWVuOyB9JzsKK3NoYWRvd1N0eWxlLnNldEF0
dHJpYnV0ZSgnc2NvcGVkJywgdHJ1ZSk7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgK
KyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJyNob3N0
LWNoaWxkMSd9KSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAn
I2hvc3QtY2hpbGQyJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxl
KSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0LWNoaWxkMSd9
LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1h
bCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QtY2hpbGQy
J30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3Jl
ZW4nKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQt
c2VsZWN0b3ItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLWV4cGVjdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjNkZWRlMTMzYjg2MmRkMTRjOTJlNjA1YzRhMWJlZDI4ZTM3YWRhZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1
ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNiBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+Cisg
IDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXY+CisgICAgICBub3JtYWwKKyAgICAgIDxkaXYgc3R5
bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2PgorICAg
ICAgbm9ybWFsCisgICAgICA8ZGl2Pm5vcm1hbDwvZGl2PgorICAgIDwvZGl2PgorICA8L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9y
dC1zZWxlY3Rvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2ZWQ1M2IwMGM2YzQ3YTNmMjQ4ZGE2MzNhODEy
NDc5NDE4Zjk4OWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci5odG1sCkBAIC0w
LDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnY29u
dGVudDo6ZGlzdHJpYnV0ZWQoZGl2LmhlbGxvIGRpdikgeyBjb2xvcjogZ3JlZW47IH0nOworCit2
YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94
LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAg
ICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHls
ZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2hlbGxvJ30sCisgICAgICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJyksCisgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSksCisgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJyksCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVh
dGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSkpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRl
ZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2Vk
LWluLXNlbGVjdG9yLWxpc3QtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjgyNTNlNGRhYjc0
MDU2NTgzOGQ4NDI1MGJiYTliZDkwNGQ5OTJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4tc2Vs
ZWN0b3ItbGlzdC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4K
KyAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAgPHA+bm9ybWFs
PC9wPgorICAgIDxwIHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9wPgorICA8L2Rpdj4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2Vk
LWluLXNlbGVjdG9yLWxpc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGYxN2ViNjI3MzE0ZThkYzEwNTdh
MDEzYTQyMTk5M2FlZTJiODYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlz
dC5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dT
dHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5l
ckhUTUwgPSAnY29udGVudDo6ZGlzdHJpYnV0ZWQoZGl2KSwgcCB7IGNvbG9yOiBncmVlbjsgfSc7
CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3Nh
bmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwK
KyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRv
d1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JyksCisgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ3AnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpLAorICAgICAgICAgICAgICBjcmVh
dGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoJ2dyZWVuJykpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ3AnLCB7J2NsYXNz
JzogJ2hlbGxvJ30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgnbm9ybWFsJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1l
bGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQ1NTU4ODNlZTJlMDMzY2ZiNmNiNzExNzdkMjhlNmJh
Mzg4MDFlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRv
bS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2
PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0
eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnY29udGVudDo6ZGlzdHJpYnV0ZWQoZGl2
KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdk
aXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAg
ICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdjb250ZW50JykpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9z
dC1jaGlsZCd9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJ2dyZWVuJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182063</attachid>
            <date>2013-01-09 22:14:56 -0800</date>
            <delta_ts>2013-01-10 00:05:35 -0800</delta_ts>
            <desc>iteration. A lot of refinements.</desc>
            <filename>bug-82169-20130110151159.patch</filename>
            <type>text/plain</type>
            <size>60948</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlZTBmODNhODUyNmNjZTY3MDE0OWNiNjJhNjY1M2Y1N2UzYTM4Y2E1Li43
ODQ1YjI0NmQwMmE0NjAwYjY2YmFkNzg3YmZjZmQ4Mzg2YzY2YmM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMxIEBACisyMDEzLTAxLTA2ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbU2hhZG93IERPTV0gSW1wbGVtZW50cyBhICc6OmRpc3RyaWJ1dGVkKCkn
IHBzZXVkbyBlbGVtZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODIxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnRzIGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvIGVsZW1lbnQuCisg
ICAgICAgIFNlZSB0aGUgU2hhZG93IERPTSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgZGV0YWlsLgor
CisgICAgICAgICMgRklYTUU6IFVwZGF0ZSBVUkwgYWZ0ZXIgdGhlIHNwZWMgaXMgdXBkYXRlZC4K
KyAgICAgICAgaHR0cDovL2R2Y3MudzMub3JnL2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlw
L3NwZWMvc2hhZG93L2luZGV4Lmh0bWwjc2VsZWN0aW5nLW5vZGVzLWRpc3RyaWJ1dGVkLXRvLWlu
c2VydGlvbi1wb2ludHMKKworICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB3ZSBhcmUgZ2l2
ZW4gdGhlIGZvbGxvd2luZyBET00gdHJlZSBhbmQgc2hhZG93IHRyZWU6CisKKyAgICAgICAgLSA8
QT4KKyAgICAgICAgICAtIDxCPgorICAgICAgICAgIC0gPEM+CisKKyAgICAgICAgW0EncyBTaGFk
b3dSb290XQorICAgICAgICAgIDxDPgorICAgICAgICAgIC0gPHN0eWxlPgorICAgICAgICAgICAg
ICBEIGNvbnRlbnQ6OmRpc3RyaWJ1dGVkKEIpIHsgY29sb3I6IGdyZWVuOyB9CisgICAgICAgICAg
LSA8RD4KKyAgICAgICAgICAgIC0gPGNvbnRlbnQ+CisKKyAgICAgICAgSW4gdGhpcyBjYXNlLCB0
aGUgc3R5bGUgcnVsZSBkZWZpbmVkIGluIHNoYWRvdyB0cmVlIG1hdGNoZXMgbm9kZSAnQicuCisK
KyAgICAgICAgQSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxlbWVudCBjYW4gbm90IGJlIGEg
cHNldWRvIGNsYXNzIHNpbmNlCisgICAgICAgIGFuIGludGVyc2VjdGlvbiBiZXR3ZWVuIG1hdGNo
ZWRfZWxlbWVudHMoc29tZV9zZWxlY3RvcikgYW5kCisgICAgICAgIG1hdGNoZWRfZWxlbWVudHMo
c29tZV9zZWxlY3Rvcjo6ZGlzdHJpYnV0ZWQoLi4uKSkgaXMgYWx3YXlzIGFuCisgICAgICAgIGVt
cHR5IHNldC4KKworICAgICAgICBBICc6OmRpc3RyaWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50IGlz
IHRoZSBmaXJzdCBDU1MgcnVsZSB3aGljaAorICAgICAgICBjcm9zc2VzIHRoZSBzaGFkb3cgYm91
bmRhcnkgZnJvbSBhIHNoYWRvdyB0cmVlIHRvIHRoZSB0cmVlIG9mIGl0cworICAgICAgICBzaGFk
b3cgaG9zdC4gVGhhdCBtZWFucyBhICc6OmRpc3RyaWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50IGlz
CisgICAgICAgIGRlZmluZWQgaW4gc2hhZG93IHRyZWUsIGJ1dCB0aGUgbm9kZSB3aGljaCBpcyBt
YXRjaGVkIGluIHRoZSBydWxlCisgICAgICAgIGlzIG91dHNpZGUgb2YgdGhlIHNoYWRvdyB0cmVl
LiBUaGVyZWZvcmUsIHdlIGNhbm5vdCBwcmVkaWN0IHdoZXJlCisgICAgICAgIHRoZSBtYXRjaGVk
IG5vZGUgd2lsbCBiZSBiZWZvcmVoYW5kLiAgQ3VycmVudCBDU1MgaW1wbGVtZW50YXRpb24KKyAg
ICAgICAgYXNzdW1lcyB0aGUgZmluYWwgdGFyZ2V0IGlzIGFwcGxpZWQgaW4gdGhlIGN1cnJlbnQg
c2NvcGUuCisKKyAgICAgICAgVG8gb3ZlcmNvbWUgdGhpcyBpc3N1ZSwgU3R5bGVSZXNvbHZlciBu
b3cgaGFzCisgICAgICAgIFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC4gIEEgc3R5bGUgcnVs
ZSB3aWxsIGJlIHN0b3JlZCBpbiB0aGlzCisgICAgICAgIFJ1bGVTZXRNYXAgaWYgdGhlIHJ1bGUg
aW5jbHVkZXMgYSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxlbWVudC4KKyAgICAgICAgVGhp
cyBSdWxlU2V0TWFwIGFsc28ga2VlcHMgdHJhY2sgb2YgZWFjaCBSdWxlU2V0CisgICAgICAgIGJ5
IG1hcHBpbmcgaXQgd2l0aCBhIHNjb3BlIHdoZXJlIHRoZSBydWxlIHdhcyBvcmlnaW5hbGx5Cisg
ICAgICAgIGRlZmluZWQuIEluIHRoZSBleGFtcGxlLCB0aGUgc2NvcGUgaXMgJ0MnLiAgVGhlIHNj
b3BlIGlzIHVzZWQgdG8KKyAgICAgICAgY2hlY2sgd2hldGhlciB0aGUgbGVmdC1tb3N0IG1hdGNo
ZWQgZWxlbWVudCAoaW4gdGhlIGV4YW1wbGUsIGl0J3MKKyAgICAgICAgYSBub2RlICdEJykgZXhp
c3RzIGluIHRoZSBzY29wZS4KKworICAgICAgICBJbnRlcm5hbGx5LCBhICc6OmRpc3RyaWJ1dGVk
JyBwc2V1ZG8gZWxlbWVudCBpcyByZXByZXNlbnRlZCBieSBhCisgICAgICAgIG5ld2x5IGludHJv
ZHVjZWQgJ1NoYWRvd0Rpc3RyaWJ1dGVkJyByZWxhdGlvbi4gIFRoYXQgbWFrZXMgYW4KKyAgICAg
ICAgaW1wbGVtZW50YXRpb24gb2YgU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKCkgbXVj
aCBzaW1wbGVyLgorICAgICAgICBBIHRyYW5zZm9ybWF0aW9uIGZyb20gYSBkaXN0cmlidXRlZCBw
c2V1ZG8gZWxlbWVudCB0byBhCisgICAgICAgIFNoYWRvd0Rpc3RyaWJ1dGVkIGlzIGRvbmUgaW4g
cGFyc2luZyBzdGFnZSBvZiBDU1MuCisKKyAgICAgICAgU2luY2UgJzo6ZGlzdHJpYnV0ZWQoKScg
aXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUsIGl0J3MgYWN0dWFsbHkKKyAgICAgICAgcHJlZml4
ZWQgd2l0aCAnLXdlYmtpdC0nIGFuZCBndWFyZGVkIGJ5IFNIQURPV19ET00gZmxhZy4KKworICAg
ICAgICBUZXN0czogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZv
ci1zaGFkb3ctZWxlbWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlz
dHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC1uZXN0ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LW5vLW1hdGNoLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24uaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LXNjb3BlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQt
cHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1s
aXN0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1
ZG8tZWxlbWVudC13aXRoLWFueS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQuaHRtbAorCisgICAgICAgICogY3NzL0NTU0dyYW1t
YXIueS5pbjoKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6ZGV0ZWN0RGFzaFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6cmV3cml0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpyZXdyaXRlU3BlY2lmaWVycyk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5o
OgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyU2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NT
UGFyc2VyVmFsdWVzLmg6CisgICAgICAgIChDU1NQYXJzZXJTZWxlY3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6ZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpzZXRGdW5jdGlvbkFyZ3VtZW50U2Vs
ZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OmlzRGlzdHJpYnV0
ZWRQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnBzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6Om5h
bWVUb1BzZXVkb1R5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmV4dHJh
Y3RQc2V1ZG9UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZWxlY3RvclRl
eHQpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOgorICAgICAgICAoQ1NTU2VsZWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6aXNE
aXN0cmlidXRlZFBzZXVkb0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6
OmlzU2hhZG93RGlzdHJpYnV0ZWQpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvckxpc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTZWxlY3Rvckhhc1NoYWRvd0Rpc3RyaWJ1
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9ySGFzU2hhZG93RGlzdHJpYnV0ZWQ6Om9w
ZXJhdG9yKCkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JMaXN0OjpoYXNTaGFkb3dE
aXN0cmlidXRlZEF0KToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0Lmg6CisgICAgICAg
IChDU1NTZWxlY3Rvckxpc3QpOgorICAgICAgICAqIGNzcy9SdWxlU2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KToKKyAgICAgICAgKiBjc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tTZWxlY3Rvcik6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5oOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dDo6U2VsZWN0
b3JDaGVja2luZ0NvbnRleHQpOgorICAgICAgICAoU2VsZWN0b3JDaGVja2luZ0NvbnRleHQpOgor
ICAgICAgICAqIGNzcy9TZWxlY3RvckZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3RvckZpbHRlcjo6Y29sbGVjdElkZW50aWZpZXJIYXNoZXMpOgorICAgICAgICAqIGNzcy9TdHls
ZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnJlc2V0QXV0
aG9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjphZGRTaGFkb3dEaXN0cmlidXRlZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSZXNvbHZlcjo6bWF0Y2hTaGFkb3dEaXN0cmlidXRlZFJ1bGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmVzb2x2ZXI6Om1hdGNoQXV0aG9yUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNoZWNrU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9TdHls
ZVJlc29sdmVyLmg6CisgICAgICAgIChTdHlsZVJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6Ok1hdGNoT3B0aW9uczo6TWF0Y2hPcHRpb25zKToKKyAgICAgICAgKE1h
dGNoT3B0aW9ucyk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbGxlY3RBbGxJbnNlcnRpb25Qb2ludHMpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmg6
CisKIDIwMTMtMDEtMDkgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+
CiAKICAgICAgICAgUmVtb3ZlIGRldmljZVNjYWxlRmFjdG9yIGFyZ3VtZW50IGluIGNvbXB1dGVN
aW5pbXVtU2NhbGVGYWN0b3JGb3JDb250ZW50Q29udGFpbmVkKCkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dy
YW1tYXIueS5pbgppbmRleCAxZmQ0NWU0OTVjZTk2YTVhYTQ1YzY0YjFkZTliYmY2MGMwZmU3NGMz
Li43YThjODI2NzgzN2JlZmIzYTA5MGNiYWI2OTRjODc3ZDYxNjA2MjcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkuaW4KQEAgLTYxLDcgKzYxLDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IGNz
c3l5ZXJyb3Iodm9pZCosIGNvbnN0IGNoYXIqKQogCiAlfQogCisjaWYgRU5BQkxFX1NIQURPV19E
T00KKyVleHBlY3QgNjYKKyNlbHNlCiAlZXhwZWN0IDY1CisjZW5kaWYKIAogJW5vbmFzc29jIExP
V0VTVF9QUkVDCiAKQEAgLTE3Nyw2ICsxODEsNyBAQCBzdGF0aWMgaW5saW5lIGludCBjc3N5eWVy
cm9yKHZvaWQqLCBjb25zdCBjaGFyKikKICV0b2tlbiA8c3RyaW5nPiBDVUVGVU5DVElPTgogI2Vu
ZGlmCiAldG9rZW4gPHN0cmluZz4gTk9URlVOQ1RJT04KKyV0b2tlbiA8c3RyaW5nPiBESVNUUklC
VVRFREZVTkNUSU9OCiAldG9rZW4gPHN0cmluZz4gQ0FMQ0ZVTkNUSU9OCiAldG9rZW4gPHN0cmlu
Zz4gTUlORlVOQ1RJT04KICV0b2tlbiA8c3RyaW5nPiBNQVhGVU5DVElPTgpAQCAtMTE0NCwxMiAr
MTE0OSwxMiBAQCBzaW1wbGVfc2VsZWN0b3I6CiAgICAgfCBlbGVtZW50X25hbWUgc3BlY2lmaWVy
X2xpc3QgewogICAgICAgICAkJCA9ICQyOwogICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICBw
YXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20sICQxLCAkJCk7
CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+cmV3cml0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5h
bWUobnVsbEF0b20sICQxLCAkJCk7CiAgICAgfQogICAgIHwgc3BlY2lmaWVyX2xpc3QgewogICAg
ICAgICAkJCA9ICQxOwogICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICBwYXJzZXItPnVwZGF0
ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20sIHN0YXJBdG9tLCAkJCk7CisgICAg
ICAgICAgICAkJCA9IHBhcnNlci0+cmV3cml0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVs
bEF0b20sIHN0YXJBdG9tLCAkJCk7CiAgICAgfQogICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIGVs
ZW1lbnRfbmFtZSB7CiAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9y
KCk7CkBAIC0xMTU4LDEyICsxMTYzLDEyIEBAIHNpbXBsZV9zZWxlY3RvcjoKICAgICB8IG5hbWVz
cGFjZV9zZWxlY3RvciBlbGVtZW50X25hbWUgc3BlY2lmaWVyX2xpc3QgewogICAgICAgICAkJCA9
ICQzOwogICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmll
cnNXaXRoRWxlbWVudE5hbWUoJDEsICQyLCAkJCk7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+
cmV3cml0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsICQyLCAkJCk7CiAgICAgfQogICAg
IHwgbmFtZXNwYWNlX3NlbGVjdG9yIHNwZWNpZmllcl9saXN0IHsKICAgICAgICAgJCQgPSAkMjsK
ICAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0
aEVsZW1lbnROYW1lKCQxLCBzdGFyQXRvbSwgJCQpOworICAgICAgICAgICAgJCQgPSBwYXJzZXIt
PnJld3JpdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKCQxLCBzdGFyQXRvbSwgJCQpOwogICAg
IH0KICAgOwogCkBAIC0xMjA4LDcgKzEyMTMsNyBAQCBzcGVjaWZpZXJfbGlzdDoKICAgICAgICAg
aWYgKCEkMikKICAgICAgICAgICAgICQkID0gMDsKICAgICAgICAgZWxzZSBpZiAoJDEpCi0gICAg
ICAgICAgICAkJCA9IHBhcnNlci0+dXBkYXRlU3BlY2lmaWVycygkMSwgJDIpOworICAgICAgICAg
ICAgJCQgPSBwYXJzZXItPnJld3JpdGVTcGVjaWZpZXJzKCQxLCAkMik7CiAgICAgfQogICAgIHwg
c3BlY2lmaWVyX2xpc3QgZXJyb3IgewogICAgICAgICAkJCA9IDA7CkBAIC0xMzU1LDYgKzEzNjAs
MTkgQEAgcHNldWRvOgogICAgICAgICAgICAgJCQgPSAwOwogICAgIH0KICNlbmRpZgorI2lmIEVO
QUJMRV9TSEFET1dfRE9NCisgICAgfCAnOicgJzonIERJU1RSSUJVVEVERlVOQ1RJT04gbWF5YmVf
c3BhY2Ugc2VsZWN0b3IgbWF5YmVfc3BhY2UgJyknIHsKKyAgICAgICAgaWYgKCEkNSkKKyAgICAg
ICAgICAgICQkID0gMDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+
Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1Nl
bGVjdG9yOjpQc2V1ZG9FbGVtZW50KTsKKyAgICAgICAgICAgICQkLT5zZXRGdW5jdGlvbkFyZ3Vt
ZW50U2VsZWN0b3IoJDUpOworICAgICAgICAgICAgJDMubG93ZXIoKTsKKyAgICAgICAgICAgICQk
LT5zZXRWYWx1ZSgkMyk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKICAgICAvLyB1c2UgYnkg
Oi13ZWJraXQtYW55LgogICAgIC8vIEZJWE1FOiBzaG91bGQgd2Ugc3VwcG9ydCBnZW5lcmljIHNl
bGVjdG9ycyBoZXJlIG9yIGp1c3Qgc2ltcGxlX3NlbGVjdG9ycz8KICAgICAvLyBVc2Ugc2ltcGxl
X3NlbGVjdG9yX2xpc3QgZm9yIG5vdyB0byBtYXRjaCAtbW96LWFueS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAKaW5kZXggMDQ4YjUzNzY2MTA0NDZlYzAzNTYyZDNhYjhlYzJjNzQzZTM4NjkzZi4u
NTNjZjhjM2I0OWU0NmRhYWE4ZTZhMWM3MDlkZDM5MjQ5M2U5MDJlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAKQEAgLTk2NzIsNiArOTY3MiwxMCBAQCBpbmxpbmUgdm9pZCBDU1NQYXJzZXI6
OmRldGVjdERhc2hUb2tlbihpbnQgbGVuZ3RoKQogI2VuZGlmCiAgICAgfSBlbHNlIGlmIChsZW5n
dGggPT0gMTIgJiYgaXNFcXVhbFRvQ1NTSWRlbnRpZmllcihuYW1lICsgMSwgIndlYmtpdC1jYWxj
IikpCiAgICAgICAgIG1fdG9rZW4gPSBDQUxDRlVOQ1RJT047CisjaWYgRU5BQkxFKFNIQURPV19E
T00pCisgICAgZWxzZSBpZiAobGVuZ3RoID09IDE5ICYmIGlzRXF1YWxUb0NTU0lkZW50aWZpZXIo
bmFtZSArIDEsICJ3ZWJraXQtZGlzdHJpYnV0ZWQiKSkKKyAgICAgICAgbV90b2tlbiA9IERJU1RS
SUJVVEVERlVOQ1RJT047CisjZW5kaWYKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+CkBAIC0xMDYwNiwxNiArMTA2MTAsMzIgQEAgUXVhbGlmaWVkTmFtZSBDU1NQYXJzZXI6
OmRldGVybWluZU5hbWVJbk5hbWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY28K
ICAgICByZXR1cm4gUXVhbGlmaWVkTmFtZShwcmVmaXgsIGxvY2FsTmFtZSwgbV9zdHlsZVNoZWV0
LT5kZXRlcm1pbmVOYW1lc3BhY2UocHJlZml4KSk7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjp1cGRh
dGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNl
UHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnROYW1lLCBDU1NQYXJzZXJTZWxlY3Rv
ciogc3BlY2lmaWVycykKK0NTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXI6OnJld3JpdGVTcGVj
aWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlZml4
LCBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnROYW1lLCBDU1NQYXJzZXJTZWxlY3Rvciogc3Bl
Y2lmaWVycykKIHsKICAgICBBdG9taWNTdHJpbmcgZGV0ZXJtaW5lZE5hbWVzcGFjZSA9IG5hbWVz
cGFjZVByZWZpeCAhPSBudWxsQXRvbSAmJiBtX3N0eWxlU2hlZXQgPyBtX3N0eWxlU2hlZXQtPmRl
dGVybWluZU5hbWVzcGFjZShuYW1lc3BhY2VQcmVmaXgpIDogbV9kZWZhdWx0TmFtZXNwYWNlOwog
ICAgIFF1YWxpZmllZE5hbWUgdGFnID0gUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VQcmVmaXgsIGVs
ZW1lbnROYW1lLCBkZXRlcm1pbmVkTmFtZXNwYWNlKTsKKworI2lmIEVOQUJMRShTSEFET1dfRE9N
KQorICAgIGlmIChzcGVjaWZpZXJzLT5pc0Rpc3RyaWJ1dGVkUHNldWRvRWxlbWVudCgpKSB7Cisg
ICAgICAgIENTU1BhcnNlclNlbGVjdG9yKiBhcmd1bWVudFNlbGVjdG9yID0gc3BlY2lmaWVycy0+
ZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKCk7CisgICAgICAgIEFTU0VSVChhcmd1bWVudFNlbGVj
dG9yKTsKKyAgICAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGVuZCA9IGFyZ3VtZW50U2VsZWN0b3I7
CisgICAgICAgIHdoaWxlIChlbmQtPnRhZ0hpc3RvcnkoKSkKKyAgICAgICAgICAgIGVuZCA9IGVu
ZC0+dGFnSGlzdG9yeSgpOworICAgICAgICBPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IGVsZW1l
bnROYW1lU2VsZWN0b3IgPSBhZG9wdFB0cihuZXcgQ1NTUGFyc2VyU2VsZWN0b3IpOworICAgICAg
ICBlbGVtZW50TmFtZVNlbGVjdG9yLT5zZXRUYWcodGFnKTsKKyAgICAgICAgZW5kLT5zZXRUYWdI
aXN0b3J5KGVsZW1lbnROYW1lU2VsZWN0b3IucmVsZWFzZSgpKTsKKyAgICAgICAgZW5kLT5zZXRS
ZWxhdGlvbihDU1NTZWxlY3Rvcjo6U2hhZG93RGlzdHJpYnV0ZWQpOworICAgICAgICByZXR1cm4g
YXJndW1lbnRTZWxlY3RvcjsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmICghc3BlY2lmaWVycy0+
aXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkpIHsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAg
ICAgIGlmICghKHNwZWNpZmllcnMtPnBzZXVkb1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRv
Q3VlKSkKICNlbmRpZgogICAgICAgICAgICAgc3BlY2lmaWVycy0+c2V0VGFnKHRhZyk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHNwZWNpZmllcnM7CiAgICAgfQogCiAgICAgQ1NT
UGFyc2VyU2VsZWN0b3IqIGxhc3RTaGFkb3dEZXNjZW5kYW50ID0gc3BlY2lmaWVyczsKQEAgLTEw
NjI4LDcgKzEwNjQ4LDcgQEAgdm9pZCBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxl
bWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VQcmUKIAogICAgIGlmIChsYXN0
U2hhZG93RGVzY2VuZGFudC0+dGFnSGlzdG9yeSgpKSB7CiAgICAgICAgIGxhc3RTaGFkb3dEZXNj
ZW5kYW50LT50YWdIaXN0b3J5KCktPnNldFRhZyh0YWcpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBzcGVjaWZpZXJzOwogICAgIH0KIAogICAgIC8vIEZvciBzaGFkb3ctSUQgcHNl
dWRvLWVsZW1lbnRzIHRvIGJlIGNvcnJlY3RseSBtYXRjaGVkLCB0aGUgU2hhZG93RGVzY2VuZGFu
dCBjb21iaW5hdG9yIGhhcyB0byBiZSB1c2VkLgpAQCAtMTA2MzcsOSArMTA2NTcsMTAgQEAgdm9p
ZCBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lc3BhY2VQcmUKICAgICBlbGVtZW50TmFtZVNlbGVjdG9yLT5zZXRUYWcodGFn
KTsKICAgICBsYXN0U2hhZG93RGVzY2VuZGFudC0+c2V0VGFnSGlzdG9yeShlbGVtZW50TmFtZVNl
bGVjdG9yLnJlbGVhc2UoKSk7CiAgICAgbGFzdFNoYWRvd0Rlc2NlbmRhbnQtPnNldFJlbGF0aW9u
KENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50KTsKKyAgICByZXR1cm4gc3BlY2lmaWVyczsK
IH0KIAotQ1NTUGFyc2VyU2VsZWN0b3IqIENTU1BhcnNlcjo6dXBkYXRlU3BlY2lmaWVycyhDU1NQ
YXJzZXJTZWxlY3Rvciogc3BlY2lmaWVycywgQ1NTUGFyc2VyU2VsZWN0b3IqIG5ld1NwZWNpZmll
cikKK0NTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXI6OnJld3JpdGVTcGVjaWZpZXJzKENTU1Bh
cnNlclNlbGVjdG9yKiBzcGVjaWZpZXJzLCBDU1NQYXJzZXJTZWxlY3RvciogbmV3U3BlY2lmaWVy
KQogewogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAobmV3U3BlY2lmaWVyLT5pc0N1
c3RvbVBzZXVkb0VsZW1lbnQoKSB8fCBuZXdTcGVjaWZpZXItPnBzZXVkb1R5cGUoKSA9PSBDU1NT
ZWxlY3Rvcjo6UHNldWRvQ3VlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggMzkyZmY5ODQw
YzVhNmM4MzljMmYyMTQ0MzdhYjc1ODRiYjcyNWE5ZC4uNzFiMDI2NmQzYzM1ZDM3YWJjYzIxMjk5
M2IxNjk0ZmNkZTNmNjZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtMzA5LDggKzMwOSw4
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkTmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYg
cHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIHVyaSk7CiAgICAgUXVhbGlmaWVkTmFtZSBkZXRl
cm1pbmVOYW1lSW5OYW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxOYW1lKTsKLSAgICB2b2lkIHVwZGF0ZVNwZWNpZmllcnNXaXRoRWxl
bWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VQcmVmaXgsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZWxlbWVudE5hbWUsIENTU1BhcnNlclNlbGVjdG9yKik7Ci0gICAgQ1NTUGFyc2Vy
U2VsZWN0b3IqIHVwZGF0ZVNwZWNpZmllcnMoQ1NTUGFyc2VyU2VsZWN0b3IqLCBDU1NQYXJzZXJT
ZWxlY3RvciopOworICAgIENTU1BhcnNlclNlbGVjdG9yKiByZXdyaXRlU3BlY2lmaWVyc1dpdGhF
bGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVByZWZpeCwgY29uc3QgQXRv
bWljU3RyaW5nJiBlbGVtZW50TmFtZSwgQ1NTUGFyc2VyU2VsZWN0b3IqKTsKKyAgICBDU1NQYXJz
ZXJTZWxlY3RvciogcmV3cml0ZVNwZWNpZmllcnMoQ1NTUGFyc2VyU2VsZWN0b3IqLCBDU1NQYXJz
ZXJTZWxlY3RvciopOwogCiAgICAgdm9pZCBpbnZhbGlkQmxvY2tIaXQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcAppbmRleCBkMjNiODU4NWQ1ZDdiYjhlYjBmMjY4MjM0
YjZlZDA2YTU4ODFkZjI3Li5lNWEwYjM3N2U3ZWQ3NjA1ZDJmOTI2NzRmM2Y4YTZmMzc5ZmFmMjVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcApAQCAtMTQ2LDYgKzE0Niw5
IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlclZhbHVlOjpjcmVhdGVDU1NWYWx1ZSgp
CiAKIENTU1BhcnNlclNlbGVjdG9yOjpDU1NQYXJzZXJTZWxlY3RvcigpCiAgICAgOiBtX3NlbGVj
dG9yKGFkb3B0UHRyKGZhc3ROZXc8Q1NTU2VsZWN0b3I+KCkpKQorI2lmIEVOQUJMRShTSEFET1df
RE9NKQorICAgICwgbV9mdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IoMCkKKyNlbmRpZgogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKaW5kZXggMTMwMWIxY2UwZTExMzcyM2Nj
ZjgyMTYyOGVlMDVlMmUzMTAyMzY3Yi4uMmNkNDA5OTRmMDFmYmZlZTdjZTZjYjAxMDgzZjQxNDk1
MzlhMTQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaApAQCAtMTg2LDYgKzE4
NiwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93
blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiYgc2VsZWN0b3JWZWN0b3IpOwogCisjaWYgRU5BQkxF
KFNIQURPV19ET00pCisgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGZ1bmN0aW9uQXJndW1lbnRTZWxl
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yOyB9CisgICAg
dm9pZCBzZXRGdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IoQ1NTUGFyc2VyU2VsZWN0b3IqIHNlbGVj
dG9yKSB7IG1fZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yID0gc2VsZWN0b3I7IH0KKyAgICBib29s
IGlzRGlzdHJpYnV0ZWRQc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvci0+
aXNEaXN0cmlidXRlZFBzZXVkb0VsZW1lbnQoKTsgfQorI2VuZGlmCisKICAgICBDU1NTZWxlY3Rv
cjo6UHNldWRvVHlwZSBwc2V1ZG9UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvci0+cHNl
dWRvVHlwZSgpOyB9CiAgICAgYm9vbCBpc0N1c3RvbVBzZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBtX3NlbGVjdG9yLT5pc0N1c3RvbVBzZXVkb0VsZW1lbnQoKTsgfQogCkBAIC0yMDAsNiAr
MjA2LDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBPd25QdHI8Q1NTU2VsZWN0b3I+IG1fc2Vs
ZWN0b3I7CiAgICAgT3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBtX3RhZ0hpc3Rvcnk7CisjaWYg
RU5BQkxFKFNIQURPV19ET00pCisgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIG1fZnVuY3Rpb25Bcmd1
bWVudFNlbGVjdG9yOworI2VuZGlmCiB9OwogCiBpbmxpbmUgYm9vbCBDU1NQYXJzZXJTZWxlY3Rv
cjo6aGFzU2hhZG93RGVzY2VuZGFudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNw
cAppbmRleCA1YTZlY2NhZmI5NDJjMGQ2ZmE3M2E2MmI2ZmZjNzQyMWYzY2FhOWVjLi4yZDA3ODU1
NTliY2IwNWVkM2NlM2NkMDAyZGYyM2E1NGJhM2FjZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxl
Y3Rvci5jcHAKQEAgLTEzOSw2ICsxMzksMTAgQEAgUHNldWRvSWQgQ1NTU2VsZWN0b3I6OnBzZXVk
b0lkKFBzZXVkb1R5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuIEJFRk9SRTsKICAgICBjYXNlIFBz
ZXVkb0FmdGVyOgogICAgICAgICByZXR1cm4gQUZURVI7CisjaWYgRU5BQkxFKFNIQURPV19ET00p
CisgICAgY2FzZSBQc2V1ZG9EaXN0cmlidXRlZDoKKyAgICAgICAgcmV0dXJuIERJU1RSSUJVVEVE
OworI2VuZGlmCiAgICAgY2FzZSBQc2V1ZG9TY3JvbGxiYXI6CiAgICAgICAgIHJldHVybiBTQ1JP
TExCQVI7CiAgICAgY2FzZSBQc2V1ZG9TY3JvbGxiYXJCdXR0b246CkBAIC0zMTYsNiArMzIwLDkg
QEAgc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1NlbGVjdG9yOjpQc2V1ZG9U
eXBlPiogbmFtZVRvUHNldWRvVHlwZU1hcCgKICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQog
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzZWFtbGVzc0RvY3VtZW50LCAo
Ii13ZWJraXQtc2VhbWxlc3MtZG9jdW1lbnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgZGlzdHJpYnV0ZWQsICgiLXdlYmtpdC1kaXN0cmlidXRl
ZCgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisjZW5kaWYKICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaW5SYW5nZSwgKCJpbi1yYW5nZSIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgb3V0T2ZSYW5nZSwgKCJvdXQtb2YtcmFuZ2UiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKQEAgLTM5OCw2ICs0MDUsOSBAQCBzdGF0aWMg
SGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGU+KiBuYW1l
VG9Qc2V1ZG9UeXBlTWFwKAogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCiAgICAgICAgIG5h
bWVUb1BzZXVkb1R5cGUtPnNldChzZWFtbGVzc0RvY3VtZW50LmltcGwoKSwgQ1NTU2VsZWN0b3I6
OlBzZXVkb1NlYW1sZXNzRG9jdW1lbnQpOwogI2VuZGlmCisjaWYgRU5BQkxFKFNIQURPV19ET00p
CisgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChkaXN0cmlidXRlZC5pbXBsKCksIENTU1Nl
bGVjdG9yOjpQc2V1ZG9EaXN0cmlidXRlZCk7CisjZW5kaWYKICAgICAgICAgbmFtZVRvUHNldWRv
VHlwZS0+c2V0KGluUmFuZ2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvSW5SYW5nZSk7CiAg
ICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChvdXRPZlJhbmdlLmltcGwoKSwgQ1NTU2VsZWN0
b3I6OlBzZXVkb091dE9mUmFuZ2UpOwogICAgIH0KQEAgLTQ0OCw2ICs0NTgsOSBAQCB2b2lkIENT
U1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSgpIGNvbnN0CiAgICAgY2FzZSBQc2V1ZG9GaXJz
dExldHRlcjoKICAgICBjYXNlIFBzZXVkb0ZpcnN0TGluZToKICAgICAgICAgY29tcGF0ID0gdHJ1
ZTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBjYXNlIFBzZXVkb0Rpc3RyaWJ1dGVkOgor
I2VuZGlmCiAgICAgY2FzZSBQc2V1ZG9SZXNpemVyOgogICAgIGNhc2UgUHNldWRvU2Nyb2xsYmFy
OgogICAgIGNhc2UgUHNldWRvU2Nyb2xsYmFyQ29ybmVyOgpAQCAtNjg0LDYgKzY5NywxMCBAQCBT
dHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2hhZG93RGVzY2Vu
ZGFudDoKICAgICAgICAgICAgIHJldHVybiB0YWdIaXN0b3J5VGV4dCArIHN0ci50b1N0cmluZygp
OworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFk
b3dEaXN0cmlidXRlZDoKKyAgICAgICAgICAgIHJldHVybiB0YWdIaXN0b3J5VGV4dCArICI6Oi13
ZWJraXQtZGlzdHJpYnV0ZWQoIiArIHN0ci50b1N0cmluZygpICsgIikiOworI2VuZGlmCiAgICAg
ICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rv
ci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKaW5kZXggMDY0OThmNGVjNzgx
MmM2NjlhNTY3MjM1ZTU1YTk5ZTQ1OGZkYTI1Mi4uMjMwNjk1NDM5NTFhOTg1ODRlMWI3ZGIwMGI1
OWY1MDg0ZTljMDI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTc2LDcgKzc2LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERpcmVjdEFkamFjZW50LAogICAg
ICAgICAgICAgSW5kaXJlY3RBZGphY2VudCwKICAgICAgICAgICAgIFN1YlNlbGVjdG9yLAotICAg
ICAgICAgICAgU2hhZG93RGVzY2VuZGFudAorICAgICAgICAgICAgU2hhZG93RGVzY2VuZGFudCwK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgICAgIFNoYWRvd0Rpc3RyaWJ1dGVkCisj
ZW5kaWYKICAgICAgICAgfTsKIAogICAgICAgICBlbnVtIFBzZXVkb1R5cGUgewpAQCAtMTYxLDcg
KzE2NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBQc2V1ZG9GdXR1cmVD
dWUsCiAjZW5kaWYKICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQotICAgICAgICAgICAgUHNl
dWRvU2VhbWxlc3NEb2N1bWVudAorICAgICAgICAgICAgUHNldWRvU2VhbWxlc3NEb2N1bWVudCwK
KyNlbmRpZgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICAgICAgUHNldWRvRGlzdHJp
YnV0ZWQKICNlbmRpZgogICAgICAgICB9OwogCkBAIC0yMjMsNiArMjI5LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0N1c3RvbVBzZXVkb0VsZW1lbnQoKSBjb25zdDsK
ICAgICAgICAgYm9vbCBpc1NpYmxpbmdTZWxlY3RvcigpIGNvbnN0OwogICAgICAgICBib29sIGlz
QXR0cmlidXRlU2VsZWN0b3IoKSBjb25zdDsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAg
ICAgYm9vbCBpc0Rpc3RyaWJ1dGVkUHNldWRvRWxlbWVudCgpIGNvbnN0OworICAgICAgICBib29s
IGlzU2hhZG93RGlzdHJpYnV0ZWQoKSBjb25zdDsKKyNlbmRpZgogCiAgICAgICAgIFJlbGF0aW9u
IHJlbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVsYXRpb24+KG1fcmVsYXRp
b24pOyB9CiAKQEAgLTMzNSw2ICszNDUsMTggQEAgaW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6Omlz
QXR0cmlidXRlU2VsZWN0b3IoKSBjb25zdAogICAgICAgICB8fCBtX21hdGNoID09IENTU1NlbGVj
dG9yOjpFbmQ7CiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKK2lubGluZSBib29sIENTU1Nl
bGVjdG9yOjppc0Rpc3RyaWJ1dGVkUHNldWRvRWxlbWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fbWF0Y2ggPT0gUHNldWRvRWxlbWVudCAmJiBwc2V1ZG9UeXBlKCkgPT0gUHNldWRvRGlzdHJp
YnV0ZWQ7Cit9CisKK2lubGluZSBib29sIENTU1NlbGVjdG9yOjppc1NoYWRvd0Rpc3RyaWJ1dGVk
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWxhdGlvbiA9PSBDU1NTZWxlY3Rvcjo6U2hhZG93
RGlzdHJpYnV0ZWQ7Cit9CisjZW5kaWYKKwogaW5saW5lIHZvaWQgQ1NTU2VsZWN0b3I6OnNldFZh
bHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgLy8gTmVlZCB0byBkbyByZWYg
Y291bnRpbmcgbWFudWFsbHkgZm9yIHRoZSB1bmlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yTGlzdC5jcHAKaW5kZXggNDMxMzZkMWM5MDFjNjM0MWJhY2JlZjgzOTQ5ZGY5NGU2MGYxYzM2
Yy4uYzUyOTNmYjJhMjAzZWQ2ZjE5ZmM1NzE1MjM2YjVkOWY2NjRiZjUzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKQEAgLTIxMSw2ICsyMTEsMjEgQEAgYm9vbCBDU1NT
ZWxlY3Rvckxpc3Q6Omhhc0ludmFsaWRTZWxlY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIGZvckVh
Y2hTZWxlY3RvcihmdW5jdG9yLCB0aGlzKTsKIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQor
Y2xhc3MgU2VsZWN0b3JIYXNTaGFkb3dEaXN0cmlidXRlZCB7CitwdWJsaWM6CisgICAgYm9vbCBv
cGVyYXRvcigpKENTU1NlbGVjdG9yKiBzZWxlY3RvcikKKyAgICB7CisgICAgICAgIHJldHVybiBz
ZWxlY3Rvci0+aXNTaGFkb3dEaXN0cmlidXRlZCgpOworICAgIH0KK307CisKK2Jvb2wgQ1NTU2Vs
ZWN0b3JMaXN0OjpoYXNTaGFkb3dEaXN0cmlidXRlZEF0KHNpemVfdCBpbmRleCkgY29uc3QKK3sK
KyAgICBTZWxlY3Rvckhhc1NoYWRvd0Rpc3RyaWJ1dGVkIGZ1bmN0b3I7CisgICAgcmV0dXJuIGZv
ckVhY2hUYWdTZWxlY3RvcihmdW5jdG9yLCBzZWxlY3RvckF0KGluZGV4KSk7Cit9CiAKKyNlbmRp
ZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2VsZWN0b3JMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0
LmgKaW5kZXggNGZjZmVlMmZhYTQxODJkN2E5YWIwNTViY2NlNTE5ZmU3NGUyMjcxNS4uNGU3YjU4
MmRiYzUxMThhNDVlNDZkYmJmMGNkODk0YTlmNzQzZjZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvckxpc3QuaApAQCAtNjAsNiArNjAsMTAgQEAgcHVibGljOgogICAgIGJvb2wgc2VsZWN0
b3JzTmVlZE5hbWVzcGFjZVJlc29sdXRpb24oKTsKICAgICBib29sIGhhc0ludmFsaWRTZWxlY3Rv
cigpIGNvbnN0OwogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgYm9vbCBoYXNTaGFkb3dE
aXN0cmlidXRlZEF0KHNpemVfdCBpbmRleCkgY29uc3Q7CisjZW5kaWYKKwogICAgIFN0cmluZyBz
ZWxlY3RvcnNUZXh0KCkgY29uc3Q7CiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxl
U2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAppbmRleCBkODQwMDRkOWNj
YzE0ODQzZTRiNDBhNmJkNjJhYzcyYThkZmIyMmViLi5iYjE0ODkzNzU5NTJkMmUxYzk5NjBjNWJj
M2I0ZWY0ZTI4NWQzOWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCkBAIC0yODcsOSArMjg3LDI1
IEBAIHZvaWQgUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVldENvbnRlbnRzKiBz
aGVldCwgY29uc3QgTWVkaWFRdWVyeUV2YWx1CiAgICAgICAgIFN0eWxlUnVsZUJhc2UqIHJ1bGUg
PSBydWxlc1tpXS5nZXQoKTsKIAogICAgICAgICBBU1NFUlQoIXJ1bGUtPmlzSW1wb3J0UnVsZSgp
KTsKLSAgICAgICAgaWYgKHJ1bGUtPmlzU3R5bGVSdWxlKCkpCi0gICAgICAgICAgICBhZGRTdHls
ZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlKj4ocnVsZSksIGFkZFJ1bGVGbGFncyk7Ci0gICAg
ICAgIGVsc2UgaWYgKHJ1bGUtPmlzUGFnZVJ1bGUoKSkKKyAgICAgICAgaWYgKHJ1bGUtPmlzU3R5
bGVSdWxlKCkpIHsKKyAgICAgICAgICAgIFN0eWxlUnVsZSogc3R5bGVSdWxlID0gc3RhdGljX2Nh
c3Q8U3R5bGVSdWxlKj4ocnVsZSk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgICAg
ICBpZiAoIXNjb3BlKQorICAgICAgICAgICAgICAgIGFkZFN0eWxlUnVsZShzdHlsZVJ1bGUsIGFk
ZFJ1bGVGbGFncyk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb25zdCBD
U1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCA9IHN0eWxlUnVsZS0+c2VsZWN0b3JMaXN0KCk7
CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3Qgc2VsZWN0b3JJbmRleCA9IDA7IHNlbGVjdG9y
SW5kZXggIT0gbm90Rm91bmQ7IHNlbGVjdG9ySW5kZXggPSBzZWxlY3Rvckxpc3QuaW5kZXhPZk5l
eHRTZWxlY3RvckFmdGVyKHNlbGVjdG9ySW5kZXgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChzZWxlY3Rvckxpc3QuaGFzU2hhZG93RGlzdHJpYnV0ZWRBdChzZWxlY3RvckluZGV4KSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVyLT5hZGRTaGFkb3dEaXN0cmlidXRlZFJ1bGUo
c3R5bGVSdWxlLCBzZWxlY3RvckluZGV4LCBjb25zdF9jYXN0PENvbnRhaW5lck5vZGUqPihzY29w
ZSksIGFkZFJ1bGVGbGFncyk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGFkZFJ1bGUoc3R5bGVSdWxlLCBzZWxlY3RvckluZGV4LCBhZGRSdWxlRmxh
Z3MpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyNlbHNlCisgICAgICAgICAg
ICBhZGRTdHlsZVJ1bGUoc3R5bGVSdWxlLCBhZGRSdWxlRmxhZ3MpOworI2VuZGlmCisKKyAgICAg
ICAgfSBlbHNlIGlmIChydWxlLT5pc1BhZ2VSdWxlKCkpCiAgICAgICAgICAgICBhZGRQYWdlUnVs
ZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGVQYWdlKj4ocnVsZSkpOwogICAgICAgICBlbHNlIGlmIChy
dWxlLT5pc01lZGlhUnVsZSgpKSB7CiAgICAgICAgICAgICBTdHlsZVJ1bGVNZWRpYSogbWVkaWFS
dWxlID0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxlTWVkaWEqPihydWxlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggMmEzNWZkMDZmYjJjNWM5ODU1ZDQ1MTA3MThiMjBl
NjkwZWY1OWVlOS4uZTA4NmM1OTQwNzM4ZjMzOGFmZDQ5OTkzZDUyMzg4ZDk5YWQ3ZDc3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNp
bmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxQcm9ncmVzc0VsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCisjaW5jbHVkZSAiSW5zZXJ0aW9u
UG9pbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0yODEsOCArMjgyLDEz
IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNr
U2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVjCiAKICAgICAvLyBQcmVwYXJlIG5leHQgc2VsZWN0
b3IKICAgICBDU1NTZWxlY3RvciogaGlzdG9yeVNlbGVjdG9yID0gY29udGV4dC5zZWxlY3Rvci0+
dGFnSGlzdG9yeSgpOwotICAgIGlmICghaGlzdG9yeVNlbGVjdG9yKQorICAgIGlmICghaGlzdG9y
eVNlbGVjdG9yKSB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgIGlmIChjb250ZXh0
LnNjb3BlT2ZMYXN0RWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmVsZW1lbnQt
PmlzRGVzY2VuZGFudE9mKGNvbnRleHQuc2NvcGVPZkxhc3RFbGVtZW50KSA/IFNlbGVjdG9yTWF0
Y2hlcyA6IFNlbGVjdG9yRmFpbHNMb2NhbGx5OworI2VuZGlmCiAgICAgICAgIHJldHVybiBTZWxl
Y3Rvck1hdGNoZXM7CisgICAgfQogCiAgICAgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQgbmV4dENv
bnRleHQoY29udGV4dCk7CiAgICAgbmV4dENvbnRleHQuc2VsZWN0b3IgPSBoaXN0b3J5U2VsZWN0
b3I7CkBAIC0zODQsNiArMzkwLDI2IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBT
ZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVjCiAgICAgICAg
ICAgICBuZXh0Q29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgPSAwOwogICAgICAgICAgICAgcmV0
dXJuIGNoZWNrU2VsZWN0b3IobmV4dENvbnRleHQsIGlnbm9yZUR5bmFtaWNQc2V1ZG8pOwogICAg
ICAgICB9CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2hh
ZG93RGlzdHJpYnV0ZWQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIFZlY3RvcjxJbnNlcnRpb25Q
b2ludCosIDg+IGluc2VydGlvblBvaW50czsKKyAgICAgICAgICAgIGZvciAoRWxlbWVudCogZWxl
bWVudCA9IGNvbnRleHQuZWxlbWVudDsgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVu
dEVsZW1lbnQoKSkgeworICAgICAgICAgICAgICAgIGluc2VydGlvblBvaW50cy5jbGVhcigpOwor
ICAgICAgICAgICAgICAgIGNvbGxlY3RBbGxJbnNlcnRpb25Qb2ludHMoZWxlbWVudCwgaW5zZXJ0
aW9uUG9pbnRzKTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc2Vy
dGlvblBvaW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBuZXh0Q29udGV4
dC5lbGVtZW50ID0gaW5zZXJ0aW9uUG9pbnRzW2ldOworICAgICAgICAgICAgICAgICAgICBuZXh0
Q29udGV4dC5pc1N1YlNlbGVjdG9yID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIG5leHRD
b250ZXh0LmVsZW1lbnRTdHlsZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIG5leHRDb250ZXh0
LmVsZW1lbnRQYXJlbnRTdHlsZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIFNlbGVjdG9yTWF0
Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKG5leHRDb250ZXh0LCBpZ25vcmVEeW5hbWljUHNldWRv
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoID09IFNlbGVjdG9yTWF0Y2hlcykKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7
CisgICAgICAgIH0KKyNlbmRpZgogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4IDMzMTkzZjc2YmMzMjgyNmFkMGQz
ZWU2MTQ1MTViOWJhYzVkMjUyMGIuLmQ5NjZkMmU1N2Q4NWY0MDQ1NmQwMWE2NmFjMjIwYjE3NDg4
MjBjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKQEAgLTYzLDYgKzYzLDcg
QEAgcHVibGljOgogICAgICAgICAgICAgLCBpc1N1YlNlbGVjdG9yKGZhbHNlKQogICAgICAgICAg
ICAgLCBoYXNTY3JvbGxiYXJQc2V1ZG8oZmFsc2UpCiAgICAgICAgICAgICAsIGhhc1NlbGVjdGlv
blBzZXVkbyhmYWxzZSkKKyAgICAgICAgICAgICwgc2NvcGVPZkxhc3RFbGVtZW50KDApCiAgICAg
ICAgIHsgfQogCiAgICAgICAgIENTU1NlbGVjdG9yKiBzZWxlY3RvcjsKQEAgLTc1LDYgKzc2LDcg
QEAgcHVibGljOgogICAgICAgICBib29sIGlzU3ViU2VsZWN0b3I7CiAgICAgICAgIGJvb2wgaGFz
U2Nyb2xsYmFyUHNldWRvOwogICAgICAgICBib29sIGhhc1NlbGVjdGlvblBzZXVkbzsKKyAgICAg
ICAgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGVPZkxhc3RFbGVtZW50OwogICAgIH07CiAKICAg
ICBib29sIGNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgYm9vbCBpc0Zhc3RD
aGVja2FibGVTZWxlY3RvciA9IGZhbHNlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JG
aWx0ZXIuY3BwCmluZGV4IGNlYWE3NjgxNDkwMGMwYjMxZDM5NGM0ZjI2Y2M0Y2JiNWUzNWU4ZGMu
LjZiMzkwNjVlODA5NjM4NzBkZGI1MGQ4NWM5N2Y1M2MzOGExNzU0MDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yRmlsdGVyLmNwcApAQCAtMTQ4LDYgKzE0OCw5IEBAIHZvaWQgU2VsZWN0b3JG
aWx0ZXI6OmNvbGxlY3RJZGVudGlmaWVySGFzaGVzKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3Rv
ciwgdW5zaWduCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50OgogICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpJbmRpcmVjdEFkamFjZW50OgogICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50OgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEaXN0cmlidXRlZDoKKyNlbmRpZgogICAgICAg
ICAgICAgc2tpcE92ZXJTdWJzZWxlY3RvcnMgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKaW5kZXggMDk4ZTBkNTdjMGI3ZTFkNzRlZDE1MDhmN2U5MDBkNTE2YzJlOTcw
ZC4uZTViOWU4OTM3MTU0ZjQyNDI0YjEzODZhZmRkZTAwNmIyYmFjNjYxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMzY0LDYgKzM2NCw5IEBAIHZvaWQgU3R5bGVSZXNv
bHZlcjo6cmVzZXRBdXRob3JTdHlsZSgpCiB7CiAgICAgbV9hdXRob3JTdHlsZSA9IFJ1bGVTZXQ6
OmNyZWF0ZSgpOwogICAgIG1fYXV0aG9yU3R5bGUtPmRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKTsK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1h
cC5jbGVhcigpOworI2VuZGlmCiB9CiAKIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwZW5kQXV0aG9y
U3R5bGVTaGVldHModW5zaWduZWQgZmlyc3ROZXcsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5
bGVTaGVldD4gPiYgc3R5bGVTaGVldHMpCkBAIC00NDgsNiArNDUxLDIwIEBAIHZvaWQgU3R5bGVS
ZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHlsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4g
cnVsZSkKICAgICBtX2tleWZyYW1lc1J1bGVNYXAuc2V0KHMuaW1wbCgpLCBydWxlKTsKIH0KIAor
CisjaWYgRU5BQkxFKFNIQURPV19ET00pCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZFNoYWRvd0Rp
c3RyaWJ1dGVkUnVsZShTdHlsZVJ1bGUqIHJ1bGUsIHNpemVfdCBzZWxlY3RvckluZGV4LCBDb250
YWluZXJOb2RlKiBzY29wZSwgQWRkUnVsZUZsYWdzIGFkZFJ1bGVGbGFncykKK3sKKyAgICBpZiAo
bV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAuY29udGFpbnMoc2NvcGUpKQorICAgICAgICBt
X3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5nZXQoc2NvcGUpLT5hZGRSdWxlKHJ1bGUsIHNl
bGVjdG9ySW5kZXgsIGFkZFJ1bGVGbGFncyk7CisgICAgZWxzZSB7CisgICAgICAgIE93blB0cjxS
dWxlU2V0PiBydWxlU2V0Rm9yU2NvcGUgPSBhZG9wdFB0cihuZXcgUnVsZVNldCgpKTsKKyAgICAg
ICAgcnVsZVNldEZvclNjb3BlLT5hZGRSdWxlKHJ1bGUsIHNlbGVjdG9ySW5kZXgsIGFkZFJ1bGVG
bGFncyk7CisgICAgICAgIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLmFkZChzY29wZSwg
cnVsZVNldEZvclNjb3BlLnJlbGVhc2UoKSk7CisgICAgfQorfQorI2VuZGlmCisKIFN0eWxlUmVz
b2x2ZXI6On5TdHlsZVJlc29sdmVyKCkKIHsKICAgICBtX2ZvbnRTZWxlY3Rvci0+Y2xlYXJEb2N1
bWVudCgpOwpAQCAtNjY0LDcgKzY4MSw4IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1h
dGNoaW5nUnVsZXMoUnVsZVNldCogcnVsZXMsIGludCYgZmlyc3RSdWxlSW5kZXgsIGluCiAgICAg
VHJlZVNjb3BlKiB0cmVlU2NvcGUgPSBtX2VsZW1lbnQtPnRyZWVTY29wZSgpOwogICAgIGlmICgh
TWF0Y2hpbmdVQVJ1bGVzU2NvcGU6OmlzTWF0Y2hpbmdVQVJ1bGVzKCkKICAgICAgICAgJiYgIXRy
ZWVTY29wZS0+YXBwbHlBdXRob3JTdHlsZXMoKQotICAgICAgICAmJiAoIW9wdGlvbnMuc2NvcGUg
fHwgb3B0aW9ucy5zY29wZS0+dHJlZVNjb3BlKCkgIT0gdHJlZVNjb3BlKSkKKyAgICAgICAgJiYg
KCFvcHRpb25zLnNjb3BlIHx8IG9wdGlvbnMuc2NvcGUtPnRyZWVTY29wZSgpICE9IHRyZWVTY29w
ZSkKKyAgICAgICAgJiYgIW9wdGlvbnMuc2NvcGVPZkxhc3RFbGVtZW50KQogICAgICAgICByZXR1
cm47CiAKICAgICAvLyBXZSBuZWVkIHRvIGNvbGxlY3QgdGhlIHJ1bGVzIGZvciBpZCwgY2xhc3Ms
IHRhZywgYW5kIGV2ZXJ5dGhpbmcgZWxzZSBpbnRvIGEgYnVmZmVyIGFuZApAQCAtNzk5LDYgKzgx
NywxNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoSG9zdFJ1bGVzKE1hdGNoUmVzdWx0JiBy
ZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShT
SEFET1dfRE9NKQordm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaFNoYWRvd0Rpc3RyaWJ1dGVkUnVs
ZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKK3sKKyAgICBm
b3IgKFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcDo6aXRlcmF0b3IgaXQgPSBtX3NoYWRvd0Rp
c3RyaWJ1dGVkUnVsZVNldE1hcC5iZWdpbigpOyBpdCAhPSBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVs
ZVNldE1hcC5lbmQoKTsgKytpdCkgeworICAgICAgICBNYXRjaE9wdGlvbnMgb3B0aW9ucyhpbmNs
dWRlRW1wdHlSdWxlcywgMCk7CisgICAgICAgIG9wdGlvbnMuc2NvcGVPZkxhc3RFbGVtZW50ID0g
aXQtPmtleTsKKyAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMoaXQtPnZhbHVlLmdldCgpLCBy
ZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVs
ZSwgb3B0aW9ucyk7CisgICAgfQorfQorI2VuZGlmCisKIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0
Y2hBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVz
KQogewogICAgIG1fbWF0Y2hlZFJ1bGVzLmNsZWFyKCk7CkBAIC04MTEsNiArODQwLDkgQEAgdm9p
ZCBTdHlsZVJlc29sdmVyOjptYXRjaEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJv
b2wgaW5jbHVkZUVtcHR5UnVsZXMKICAgICBNYXRjaE9wdGlvbnMgb3B0aW9ucyhpbmNsdWRlRW1w
dHlSdWxlcyk7CiAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMobV9hdXRob3JTdHlsZS5nZXQoKSwg
cmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1
bGUsIG9wdGlvbnMpOwogICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKG1fYXV0aG9y
U3R5bGUuZ2V0KCksIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2Vz
Lmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBt
YXRjaFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXMocmVzdWx0LCBpbmNsdWRlRW1wdHlSdWxlcyk7Cisj
ZW5kaWYKICAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMocmVzdWx0KTsKIAogICAgIG1h
dGNoU2NvcGVkQXV0aG9yUnVsZXMocmVzdWx0LCBpbmNsdWRlRW1wdHlSdWxlcyk7CkBAIC04NDcs
NyArODc5LDExIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JM
aXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIHJ1bGVzLCBpCiAKICAgICAvLyBJbiBzb21lIGNh
c2VzIHdlIG1heSBlbmQgdXAgbG9va2luZyB1cCBzdHlsZSBmb3IgcmFuZG9tIGVsZW1lbnRzIGlu
IHRoZSBtaWRkbGUgb2YgYSByZWN1cnNpdmUgdHJlZSByZXNvbHZlLgogICAgIC8vIEFuY2VzdG9y
IGlkZW50aWZpZXIgZmlsdGVyIHdvbid0IGJlIHVwLXRvLWRhdGUgaW4gdGhhdCBjYXNlIGFuZCB3
ZSBjYW4ndCB1c2UgdGhlIGZhc3QgcGF0aC4KKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBi
b29sIGNhblVzZUZhc3RSZWplY3QgPSBtX3NlbGVjdG9yRmlsdGVyLnBhcmVudFN0YWNrSXNDb25z
aXN0ZW50KG1fcGFyZW50Tm9kZSkgJiYgIW9wdGlvbnMuc2NvcGVPZkxhc3RFbGVtZW50OworI2Vs
c2UKICAgICBib29sIGNhblVzZUZhc3RSZWplY3QgPSBtX3NlbGVjdG9yRmlsdGVyLnBhcmVudFN0
YWNrSXNDb25zaXN0ZW50KG1fcGFyZW50Tm9kZSk7CisjZW5kaWYKIAogICAgIHVuc2lnbmVkIHNp
emUgPSBydWxlcy0+c2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKQEAgLTg1Nyw3ICs4OTMsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRj
aGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBydWxlcywgaQogCiAgICAg
ICAgIFN0eWxlUnVsZSogcnVsZSA9IHJ1bGVEYXRhLnJ1bGUoKTsKICAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbE1hdGNoUnVsZShkb2N1bWVudCgpLCBydWxlLCB0aGlzKTsKLSAgICAgICAgaWYgKGNoZWNr
U2VsZWN0b3IocnVsZURhdGEsIG9wdGlvbnMuc2NvcGUpKSB7CisgICAgICAgIGlmIChjaGVja1Nl
bGVjdG9yKHJ1bGVEYXRhLCBvcHRpb25zLnNjb3BlLCBvcHRpb25zLnNjb3BlT2ZMYXN0RWxlbWVu
dCkpIHsKICAgICAgICAgICAgIC8vIElmIHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0aWVzIHRvIGFw
cGx5LCB0aGVuIGlnbm9yZSBpdCBpbiB0aGUgbm9uLWRlYnVnIG1vZGUuCiAgICAgICAgICAgICBj
b25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzID0gcnVsZS0+cHJvcGVydGllcygpOwog
ICAgICAgICAgICAgaWYgKCFwcm9wZXJ0aWVzIHx8IChwcm9wZXJ0aWVzLT5pc0VtcHR5KCkgJiYg
IW9wdGlvbnMuaW5jbHVkZUVtcHR5UnVsZXMpKSB7CkBAIC0yMjM4LDcgKzIyNzQsNyBAQCBQYXNz
UmVmUHRyPENTU1J1bGVMaXN0PiBTdHlsZVJlc29sdmVyOjpwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxl
bWVudChFbGVtZW50KiBlLCBQcwogICAgIHJldHVybiBtX3J1bGVMaXN0LnJlbGVhc2UoKTsKIH0K
IAotaW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0
YSYgcnVsZURhdGEsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKQoraW5saW5lIGJvb2wgU3R5
bGVSZXNvbHZlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0
IENvbnRhaW5lck5vZGUqIHNjb3BlLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZU9mTGFzdEVs
ZW1lbnQpCiB7CiAgICAgbV9keW5hbWljUHNldWRvID0gTk9QU0VVRE87CiAKQEAgLTIyNjMsNiAr
MjI5OSw3IEBAIGlubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6OmNoZWNrU2VsZWN0b3IoY29uc3Qg
UnVsZURhdGEmIHJ1bGVEYXRhLCBjb25zdCBDb250YWluCiAgICAgY29udGV4dC5lbGVtZW50U3R5
bGUgPSBzdHlsZSgpOwogICAgIGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlID0gbV9wYXJlbnRO
b2RlID8gbV9wYXJlbnROb2RlLT5yZW5kZXJTdHlsZSgpIDogMDsKICAgICBjb250ZXh0LnNjb3Bl
ID0gc2NvcGU7CisgICAgY29udGV4dC5zY29wZU9mTGFzdEVsZW1lbnQgPSBzY29wZU9mTGFzdEVs
ZW1lbnQ7CiAgICAgY29udGV4dC5wc2V1ZG9TdHlsZSA9IG1fcHNldWRvU3R5bGU7CiAgICAgU2Vs
ZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIG1hdGNoID0gbV9zZWxlY3RvckNoZWNrZXIuY2hl
Y2tTZWxlY3Rvcihjb250ZXh0LCBtX2R5bmFtaWNQc2V1ZG8pOwogICAgIGlmIChtYXRjaCAhPSBT
ZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2hlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5oCmluZGV4IDViZDI5NDBlNTdmMjk4MjFmZTYxM2VhMGU4YTM5YmZkZmI4OGQwN2QuLmJjN2Vl
M2VhN2NiODNmMzcxYzhmZTBlZTJhNmJjYThjYjJkMDVlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk1lZGlhUXVlcnlFeHAuaCIK
ICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJ1bGVGZWF0dXJlLmgiCisjaW5j
bHVkZSAiUnVsZVNldC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNp
bmNsdWRlICJTZWxlY3RvckNoZWNrZXIuaCIKICNpbmNsdWRlICJTZWxlY3RvckZpbHRlci5oIgpA
QCAtNzYsNyArNzcsNiBAQCBjbGFzcyBNZWRpYVF1ZXJ5RXZhbHVhdG9yOwogY2xhc3MgTm9kZTsK
IGNsYXNzIFJlbmRlclJlZ2lvbjsKIGNsYXNzIFJ1bGVEYXRhOwotY2xhc3MgUnVsZVNldDsKIGNs
YXNzIFNldHRpbmdzOwogY2xhc3MgU3RhdGljQ1NTUnVsZUxpc3Q7CiBjbGFzcyBTdHlsZUJ1aWxk
ZXI7CkBAIC0yOTksNiArMjk5LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbG9hZFBlbmRpbmdS
ZXNvdXJjZXMoKTsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIHZvaWQgYWRkU2hhZG93
RGlzdHJpYnV0ZWRSdWxlKFN0eWxlUnVsZSosIHNpemVfdCBzZWxlY3RvckluZGV4LCBDb250YWlu
ZXJOb2RlKiBzY29wZSwgQWRkUnVsZUZsYWdzKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIC8v
IFRoaXMgZnVuY3Rpb24gZml4ZXMgdXAgdGhlIGRlZmF1bHQgZm9udCBzaXplIGlmIGl0IGRldGVj
dHMgdGhhdCB0aGUgY3VycmVudCBnZW5lcmljIGZvbnQgZmFtaWx5IGhhcyBjaGFuZ2VkLiAtZHdo
CiAgICAgdm9pZCBjaGVja0ZvckdlbmVyaWNGYW1pbHlDaGFuZ2UoUmVuZGVyU3R5bGUqLCBSZW5k
ZXJTdHlsZSogcGFyZW50U3R5bGUpOwpAQCAtMzQzLDkgKzM0NywxMCBAQCBwcml2YXRlOgogICAg
IH07CiAKICAgICBzdHJ1Y3QgTWF0Y2hPcHRpb25zIHsKLSAgICAgICAgTWF0Y2hPcHRpb25zKGJv
b2wgaW5jbHVkZUVtcHR5UnVsZXMsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlID0gMCkgOiBz
Y29wZShzY29wZSksIGluY2x1ZGVFbXB0eVJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKSB7IH0KKyAg
ICAgICAgTWF0Y2hPcHRpb25zKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIGNvbnN0IENvbnRhaW5l
ck5vZGUqIHNjb3BlID0gMCkgOiBzY29wZShzY29wZSksIGluY2x1ZGVFbXB0eVJ1bGVzKGluY2x1
ZGVFbXB0eVJ1bGVzKSwgc2NvcGVPZkxhc3RFbGVtZW50KDApIHsgfQogICAgICAgICBjb25zdCBD
b250YWluZXJOb2RlKiBzY29wZTsKICAgICAgICAgYm9vbCBpbmNsdWRlRW1wdHlSdWxlczsKKyAg
ICAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGVPZkxhc3RFbGVtZW50OwogICAgIH07CiAK
ICAgICBzdGF0aWMgdm9pZCBhZGRNYXRjaGVkUHJvcGVydGllcyhNYXRjaFJlc3VsdCYsIGNvbnN0
IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMsIFN0eWxlUnVsZSogPSAwLCB1bnNpZ25lZCBs
aW5rTWF0Y2hUeXBlID0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaEFsbCwgYm9vbCBpblJlZ2lvblJ1
bGUgPSBmYWxzZSk7CkBAIC0zNTgsNiArMzYzLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXRj
aFVzZXJSdWxlcyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIHZv
aWQgbWF0Y2hTY29wZWRBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5
UnVsZXMpOwogICAgIHZvaWQgbWF0Y2hIb3N0UnVsZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1
ZGVFbXB0eVJ1bGVzKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICB2b2lkIG1hdGNoU2hh
ZG93RGlzdHJpYnV0ZWRSdWxlcyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMp
OworI2VuZGlmCisKICAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzKFJ1bGVTZXQqLCBpbnQm
IGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYp
OwogICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24oUnVsZVNldCosIGludCYg
Zmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJik7
CiAgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1bGVE
YXRhPiosIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgY29uc3QgTWF0
Y2hPcHRpb25zJik7CkBAIC0zNjUsNyArMzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNvcnRN
YXRjaGVkUnVsZXMoKTsKICAgICB2b2lkIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhNYXRj
aFJlc3VsdCYpOwogCi0gICAgYm9vbCBjaGVja1NlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJiwgY29u
c3QgQ29udGFpbmVyTm9kZSogc2NvcGUpOworICAgIGJvb2wgY2hlY2tTZWxlY3Rvcihjb25zdCBS
dWxlRGF0YSYsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlLCBjb25zdCBDb250YWluZXJOb2Rl
KiBzY29wZU9mTGFzdEVsZW1lbnQpOwogICAgIGJvb2wgY2hlY2tSZWdpb25TZWxlY3RvcihDU1NT
ZWxlY3RvciogcmVnaW9uU2VsZWN0b3IsIEVsZW1lbnQqIHJlZ2lvbkVsZW1lbnQpOwogICAgIHZv
aWQgYXBwbHlNYXRjaGVkUHJvcGVydGllcyhjb25zdCBNYXRjaFJlc3VsdCYsIGNvbnN0IEVsZW1l
bnQqKTsKICAgICBlbnVtIFN0eWxlQXBwbGljYXRpb25QYXNzIHsKQEAgLTM5Niw2ICs0MDUsMTEg
QEAgcHJpdmF0ZToKICAgICBPd25QdHI8UnVsZVNldD4gbV9hdXRob3JTdHlsZTsKICAgICBPd25Q
dHI8UnVsZVNldD4gbV91c2VyU3R5bGU7CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICB0
eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ29udGFpbmVyTm9kZSosIE93blB0cjxSdWxlU2V0PiA+IFNo
YWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcDsKKyAgICBTaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRN
YXAgbV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXA7CisjZW5kaWYKKwogICAgIFJ1bGVGZWF0
dXJlU2V0IG1fZmVhdHVyZXM7CiAgICAgT3duUHRyPFJ1bGVTZXQ+IG1fc2libGluZ1J1bGVTZXQ7
CiAgICAgT3duUHRyPFJ1bGVTZXQ+IG1fdW5jb21tb25BdHRyaWJ1dGVSdWxlU2V0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKaW5kZXggMjBjZTc3ZDBhMzc5
ZWZjYzI0NDhhNjU4OTlkNmM1OGYzN2Y5YzliOC4uOTE2MmI3ZmRhMDM0N2UyYzk0ZDE3MGRlZmVl
N2E2YWYwN2ZlMWNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5z
ZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5oCkBAIC0xNTQsNiArMTU0LDI5IEBAIGlubGluZSBFbGVtZW50U2hhZG93KiBzaGFkb3dP
ZlBhcmVudEZvckRpc3RyaWJ1dGlvbihjb25zdCBOb2RlKiBub2RlKQogCiBJbnNlcnRpb25Qb2lu
dCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKik7CiAKK2lubGluZSB2b2lkIGNvbGxl
Y3RBbGxJbnNlcnRpb25Qb2ludHMoY29uc3QgTm9kZSogcHJvamVjdGVkTm9kZSwgVmVjdG9yPElu
c2VydGlvblBvaW50KiwgOD4mIHJlc3VsdHMpCit7CisgICAgY29uc3QgTm9kZSogY3VycmVudCA9
IHByb2plY3RlZE5vZGU7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKEVsZW1lbnRT
aGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKGN1cnJlbnQpKSB7
CisgICAgICAgICAgICBzaGFkb3ctPmVuc3VyZURpc3RyaWJ1dGlvbigpOworICAgICAgICAgICAg
aWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRlZFRvID0gc2hhZG93LT5kaXN0cmlidXRvcigpLmZp
bmRJbnNlcnRpb25Qb2ludEZvcihwcm9qZWN0ZWROb2RlKSkgeworICAgICAgICAgICAgICAgIGN1
cnJlbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKGluc2Vy
dGVkVG8pOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGlmIChOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlRm9yRGlzdHJpYnV0aW9u
KGN1cnJlbnQpKSB7CisgICAgICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8g
PSBwYXJlbnQtPmlzU2hhZG93Um9vdCgpID8gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjphc3Np
Z25lZFRvKHRvU2hhZG93Um9vdChwYXJlbnQpKSA6IDApIHsKKyAgICAgICAgICAgICAgICBjdXJy
ZW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChpbnNlcnRl
ZFRvKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICByZXR1cm47CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBJbnNlcnRpb25Qb2ludF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCmluZGV4IGZmMDBjOTUwMjc4YzMz
MjAxYzBhZjkyZDhhYjY1OTdlOGVjOTdmZjUuLjc2NGYxZWNkMTcxNTE2NzcyNWZjMzc0YWZjZmM0
ODQ2YzQyY2MxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZUNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCkBAIC03MCw3ICs3MCw3IEBAIGVudW0gU3R5bGVEaWZm
ZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5IHsKIC8vIFN0YXRpYyBwc2V1ZG8gc3R5bGVz
LiBEeW5hbWljIG9uZXMgYXJlIHByb2R1Y2VkIG9uIHRoZSBmbHkuCiBlbnVtIFBzZXVkb0lkIHsK
ICAgICAvLyBUaGUgb3JkZXIgbXVzdCBiZSBOT1AgSUQsIHB1YmxpYyBJRHMsIGFuZCB0aGVuIGlu
dGVybmFsIElEcy4KLSAgICBOT1BTRVVETywgRklSU1RfTElORSwgRklSU1RfTEVUVEVSLCBCRUZP
UkUsIEFGVEVSLCBTRUxFQ1RJT04sIEZJUlNUX0xJTkVfSU5IRVJJVEVELCBTQ1JPTExCQVIsCisg
ICAgTk9QU0VVRE8sIEZJUlNUX0xJTkUsIEZJUlNUX0xFVFRFUiwgQkVGT1JFLCBBRlRFUiwgRElT
VFJJQlVURUQsIFNFTEVDVElPTiwgRklSU1RfTElORV9JTkhFUklURUQsIFNDUk9MTEJBUiwKICAg
ICAvLyBJbnRlcm5hbCBJRHMgZm9sbG93OgogICAgIFNDUk9MTEJBUl9USFVNQiwgU0NST0xMQkFS
X0JVVFRPTiwgU0NST0xMQkFSX1RSQUNLLCBTQ1JPTExCQVJfVFJBQ0tfUElFQ0UsIFNDUk9MTEJB
Ul9DT1JORVIsIFJFU0laRVIsCiAgICAgSU5QVVRfTElTVF9CVVRUT04sCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjllZWUw
ODQyYzAxN2QxOTNlNmU1N2IyZmFjZGMxYjMyOGFhZDU3Ny4uZGRiOWM0NzNiYWM0OGNkM2U4MTYx
ZTMzYzRlMmFiOGQyNzU3ZWUwOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEzLTAxLTA2ICBI
YXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0g
SW1wbGVtZW50cyBhICc6OmRpc3RyaWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50LgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIxNjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1l
bGVtZW50LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1h
dGNoLWFsbC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNj
ZW5kYW50LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0
ZWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbm8tbWF0Y2gtZXhwZWN0ZWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVk
by1lbGVtZW50LW5vLW1hdGNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50LXJlcHJvamVjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29w
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3ItZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQt
c2VsZWN0b3IuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC1leHBlY3RlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC13aXRoLWFueS1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtd2l0aC1hbnkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTAxLTA5ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBc3NlcnQgdHJp
Z2dlcmVkIGluIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvciB3aGVuIHNjcm9sbGJh
ciAoZS5nLiA6aG9yaXpvbnRhbCkgc2VsZWN0b3IgaXMgc3BlY2lmaWVkLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGMyNmUyYjU2YzRjNmE3Yzcw
YzZjZmQ1OGEyMjdmOGUwZjQ0NjRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLmh0bWwKQEAg
LTAsMCArMSw5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJz
YW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVu
Ij5ncmVlbjwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3It
c2hhZG93LWVsZW1lbnQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQtZXhwZWN0ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NGMyNmUyYjU2YzRjNmE3YzcwYzZjZmQ1OGEyMjdmOGUwZjQ0NjRm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC1leHBlY3RlZC5odG1sCkBAIC0w
LDAgKzEsOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2Fu
ZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+
Z3JlZW48L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNo
YWRvdy1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRk
YzM3YzVjNmM0ODg2N2RmNWNiODE0NzI4YTM2OWZkOGQyM2U2MQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1m
b3Itc2hhZG93LWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3Jp
cHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwor
c2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ3NoYWRvdzo6LXdlYmtpdC1kaXN0cmlidXRlZChkaXYp
IHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2Rp
dicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAg
ICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpLAorICAgICAgICAgICAg
ICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUsCisgICAg
ICAgICAgICAgICAgICBjcmVhdGVET00oJ3NoYWRvdycpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJp
YnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLWV4
cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE2MGI3MmUwZGU5MTc3NjJiMmEyYTRjNWVjM2VmOWY1
NjZlYjQ5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwtZXhwZWN0ZWQuaHRtbApAQCAtMCww
ICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5k
Ym94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdj4KKyAgICAgIG5vcm1hbAorICAgICAg
PGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxk
aXY+CisgICAgICBub3JtYWwKKyAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48
L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
bWF0Y2gtYWxsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQt
cHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjlmMmZmMmI0MTM3YTBj
NWFlZWRjODVlODkxMmYyZWMzNGViMmZiYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwuaHRt
bApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1M
ID0gJ2NvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoLmhlbGxvKSB7IGNvbG9yOiBncmVlbjsg
fSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsK
K3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3Qn
fSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNo
YWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2hlbGxvJ30sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSwKKyAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdoZWxsbyd9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSkpKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWRlc2NlbmRhbnQt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWMxODc4NTZmZWUxOGY0ZTQyN2YyMWE3NzFiMzJkMTEzMThmNTNiMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC1tYXRjaC1kZXNjZW5kYW50LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9
Imhvc3QiPgorICAgIDxwPgorICAgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwv
ZGl2PgorICAgIDwvcD4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0
Y2gtZGVzY2VuZGFudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWRlc2NlbmRhbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTQw
NDNlODU1YTUwOGQ0OGI1YTA2MDBlMGY2ODY2OTg4MzAwMjgyCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1h
dGNoLWRlc2NlbmRhbnQuaHRtbApAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+
Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hh
ZG93U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2KSB7
IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYn
LCB7fSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAg
IHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAor
ICAgICAgICAgICAgICBjcmVhdGVET00oJ3AnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJp
YnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLWV4cGVjdGVk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTUxODM0NDJhMDc2YzdmODFhOWM1NDIxMzFlNzlmYjc3NmYwMTFj
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIwIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAg
PGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdiBpZD0ibmVzdGVkLWhvc3QiPgorICAgICAgdGV4dDEK
KyAgICAgIDxkaXY+CisgICAgICAgIHRleHQyCisgICAgICAgIDxkaXY+CisgICAgICAgICAgdGV4
dDMKKyAgICAgICAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAg
ICAgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAg
ICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1u
ZXN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1
ZG8tZWxlbWVudC1uZXN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTY3YTNlZmVjYTBmNDA4YTZkMzg3
NTY5Mjk3ZWZlNjIzNTg4MGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC5odG1sCkBAIC0wLDAg
KzEsMzIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnZGl2IGNv
bnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2IGNvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0
ZWQoZGl2LmdyZWVuKSkgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAg
IGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNo
YWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnbmVz
dGVkLWhvc3QnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3RleHQxJyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgndGV4dDInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJ2Rpdid9KSkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdncmVlbid9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgndGV4dDMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdjb250ZW50Jywge30pKSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHsnY2xhc3MnOiAnZ3JlZW4nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCdncmVlbicpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3Jt
YWwnKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5vLW1hdGNo
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQt
cHNldWRvLWVsZW1lbnQtbm8tbWF0Y2gtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDVmZWZm
NzVjNzlhZWRlNWJmOGU0OWJiZWQwYjcxNTVkY2U2ODBkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5vLW1h
dGNoLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxw
Pm5vcm1hbDwvcD4KKyAgICA8ZGl2PgorICAgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAgICA8L2Rp
dj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbm8tbWF0Y2guaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1u
by1tYXRjaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhZTM5Y2VjMzQ3NTkzN2ExZWQ1M2QxNTgyZTZmZTNj
OGIyMDFkNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbm8tbWF0Y2guaHRtbApAQCAtMCwwICsxLDI3IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5k
Ym94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ3RoaXMtZG9lcy1ub3Qt
bWF0Y2g6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CitzaGFk
b3dTdHlsZS5pbm5lckhUTUwgPSAncDo6LXdlYmtpdC1kaXN0cmlidXRlZChkaXYpIHsgY29sb3I6
IGdyZWVuOyB9JzsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdkaXY6Oi13ZWJraXQtZGlzdHJp
YnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93
Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdwJywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdk
aXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQn
KSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdC1jaGlsZCd9
LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1h
bCcpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0
aW9uLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTY5YzkxMjdkZTVlNzAzYjdhMWE1YzkzNjk0ZWE3Y2QwYjEyNDg0MgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9z
dCI+CisgICAgPGRpdiBpZD0iaG9zdDIiPgorICAgICAgPGRpdiBzdHlsZT0nY29sb3I6IGdyZWVu
Jz4KKyAgICAgICAgZ3JlZW4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8L2Rpdj4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24uaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24u
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hNzM1ZmE3MDllODYxYjBkYjRhZTRjYzQ2NGZmN2FmYTFhMTllMGM4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hh
ZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3gi
PjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnY29udGVudDo6LXdlYmtpdC1k
aXN0cmlidXRlZCguZm9vKSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRl
U2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdo
b3N0Mid9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcuZm9v
J30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSkp
LAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnZm9vJ30sCisgICAg
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNjb3BlZC1leHBlY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50LXNjb3BlZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0OGQ5ZTJkZTNlNmZlNGJmZDg5
ODBiNjNkMDM5YmM1NGQ4ODMxYTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLWV4cGVjdGVkLmh0
bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRp
diBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXY+bm9ybWFsPC9kaXY+
CisgICAgPGRpdj4KKyAgICAgIDxkaXYgc3R5bGU9J2NvbG9yOiBncmVlbic+Z3JlZW48L2Rpdj4K
KyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtc2NvcGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFhNzFhYmM3OTA5NjMzMDBhMzI0N2U4NTY4
NTBhODM2MTM1ODg1YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQuaHRtbApAQCAtMCwwICsxLDI3
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJz
YW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRlbnQ6Oi13
ZWJraXQtZGlzdHJpYnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CitzaGFkb3dTdHlsZS5z
ZXRBdHRyaWJ1dGUoJ3Njb3BlZCcsIHRydWUpOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0
ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jv
b3QoCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcj
aG9zdC1jaGlsZDEnfSksCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0
JzogJyNob3N0LWNoaWxkMid9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dT
dHlsZSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdC1jaGls
ZDEnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdu
b3JtYWwnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0LWNo
aWxkMid9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
J2dyZWVuJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBw
b3J0LXNlbGVjdG9yLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjIzZGVkZTEzM2I4NjJkZDE0YzkyZTYwNWM0YTFiZWQyOGUzN2FkYWQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQt
cHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEs
MTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3gi
PgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2PgorICAgICAgbm9ybWFsCisgICAgICA8ZGl2
IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdj4K
KyAgICAgIG5vcm1hbAorICAgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9k
aXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1
cHBvcnQtc2VsZWN0b3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZmRiZDg2ZWY3ODJiMTQxY2ZmNTliYTNj
MTY1YmE1N2ViM2U3ODVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3IuaHRtbApA
QCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0g
J2NvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2LmhlbGxvIGRpdikgeyBjb2xvcjogZ3Jl
ZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94
Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdo
b3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAg
ICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwK
KyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2hlbGxvJ30sCisgICAg
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJyksCisg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSks
CisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAg
ICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJyksCisgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSkpKSk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
YjgyNTNlNGRhYjc0MDU2NTgzOGQ4NDI1MGJiYTliZDkwNGQ5OTJhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2
IGlkPSJob3N0Ij4KKyAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+Cisg
ICAgPHA+bm9ybWFsPC9wPgorICAgIDxwIHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9wPgor
ICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxp
c3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDZkNTQ4ZjZi
YTM5MWNiNzRhODIzMTZlZGI5NmRjNWQyZTcxZjM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4t
c2VsZWN0b3ItbGlzdC5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4K
K3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFk
b3dTdHlsZS5pbm5lckhUTUwgPSAnY29udGVudDo6LXdlYmtpdC1kaXN0cmlidXRlZChkaXYpLCBw
IHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2Rp
dicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAg
ICAgICAgICAgICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00o
J2NvbnRlbnQnKSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgncCcsIHt9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSks
CisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAg
ICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSksCisgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgncCcsIHsnY2xhc3MnOiAnaGVsbG8nfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtd2l0aC1hbnktZXhw
ZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzM3OTk0M2RmNjQ4OTAzMjRkYzAyZDlkZTMwMTg1MWEx
MTE4NjUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCAr
MSwxOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJv
eCI+CisgIDxkaXY+CisgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAgICA8ZGl2IHN0eWxlPSJjb2xv
cjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgIDwvZGl2PgorICA8ZGl2PgorICAgIDxkaXY+bm9ybWFs
PC9kaXY+CisgICAgPGRpdiBzdHlsZT0iY29sb3I6IHJlZCI+cmVkPC9kaXY+CisgIDwvZGl2Pgor
ICA8ZGl2PgorICAgIDxkaXY+bm9ybWFsPC9kaXY+CisgICAgPGRpdiBzdHlsZT0iY29sb3I6IGJs
dWUiPmJsdWU8L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtd2l0
aC1hbnkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1
ZG8tZWxlbWVudC13aXRoLWFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjYTIzNWE0M2RiM2Y3YjNiNzli
OWFlNGNjOTdhODM3ZThjNmE4ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtd2l0aC1hbnkuaHRtbApAQCAt
MCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUxID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlMS5pbm5lckhUTUwgPSAn
Kjo6LXdlYmtpdC1kaXN0cmlidXRlZChkaXYpIHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNo
YWRvd1N0eWxlMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHls
ZTIuaW5uZXJIVE1MID0gJ2NvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoKikgeyBjb2xvcjog
cmVkOyB9JzsKKwordmFyIHNoYWRvd1N0eWxlMyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0
eWxlJyk7CitzaGFkb3dTdHlsZTMuaW5uZXJIVE1MID0gJyo6Oi13ZWJraXQtZGlzdHJpYnV0ZWQo
KikgeyBjb2xvcjogYmx1ZTsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdk
aXYnLCB7fSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAg
ICAgIHNoYWRvd1N0eWxlMSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25v
cm1hbCcpKSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSkpOworCitzYW5kYm94LmFwcGVuZENoaWxk
KAorICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jv
b3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZTIsCisgICAgICAgICAgICAgICAgICBj
cmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSksCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00o
J2NvbnRlbnQnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgncmVkJykpKSk7CitzYW5k
Ym94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAg
IGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZTMsCisgICAg
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSksCisgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2
Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgn
Ymx1ZScpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQyNDNjYTFjOGM5NGYzMjY4YjY0ZjcwZWRkMjEyNmIwN2IwZGYwMWEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3Jp
cHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwor
c2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2
KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdk
aXYnLCB7fSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAg
ICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jykp
LAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182077</attachid>
            <date>2013-01-10 00:05:44 -0800</date>
            <delta_ts>2013-01-10 00:24:23 -0800</delta_ts>
            <desc>use enum CrossBoundary instead of scopeOfLastElement. Reuse scope.</desc>
            <filename>bug-82169-20130110170247.patch</filename>
            <type>text/plain</type>
            <size>61663</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlZTBmODNhODUyNmNjZTY3MDE0OWNiNjJhNjY1M2Y1N2UzYTM4Y2E1Li44
NzZkN2EwZjgyZWI2YTRlMmIzMjk0NGNhMDk0YjI1YTAwYTI2MTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMzIEBACisyMDEzLTAxLTA2ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbU2hhZG93IERPTV0gSW1wbGVtZW50cyBhICc6OmRpc3RyaWJ1dGVkKCkn
IHBzZXVkbyBlbGVtZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODIxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnRzIGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvIGVsZW1lbnQuCisg
ICAgICAgIFNlZSB0aGUgU2hhZG93IERPTSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgZGV0YWlsLgor
CisgICAgICAgICMgRklYTUU6IFVwZGF0ZSBVUkwgYWZ0ZXIgdGhlIHNwZWMgaXMgdXBkYXRlZC4K
KyAgICAgICAgaHR0cDovL2R2Y3MudzMub3JnL2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlw
L3NwZWMvc2hhZG93L2luZGV4Lmh0bWwjc2VsZWN0aW5nLW5vZGVzLWRpc3RyaWJ1dGVkLXRvLWlu
c2VydGlvbi1wb2ludHMKKworICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB3ZSBhcmUgZ2l2
ZW4gdGhlIGZvbGxvd2luZyBET00gdHJlZSBhbmQgc2hhZG93IHRyZWU6CisKKyAgICAgICAgLSA8
QT4KKyAgICAgICAgICAtIDxCPgorICAgICAgICAgIC0gPEM+CisKKyAgICAgICAgW0EncyBTaGFk
b3dSb290XQorICAgICAgICAgIDxDPgorICAgICAgICAgIC0gPHN0eWxlPgorICAgICAgICAgICAg
ICBEIGNvbnRlbnQ6OmRpc3RyaWJ1dGVkKEIpIHsgY29sb3I6IGdyZWVuOyB9CisgICAgICAgICAg
LSA8RD4KKyAgICAgICAgICAgIC0gPGNvbnRlbnQ+CisKKyAgICAgICAgSW4gdGhpcyBjYXNlLCB0
aGUgc3R5bGUgcnVsZSBkZWZpbmVkIGluIHNoYWRvdyB0cmVlIG1hdGNoZXMgbm9kZSAnQicuCisK
KyAgICAgICAgQSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxlbWVudCBjYW4gbm90IGJlIGEg
cHNldWRvIGNsYXNzIHNpbmNlCisgICAgICAgIGFuIGludGVyc2VjdGlvbiBiZXR3ZWVuIG1hdGNo
ZWRfZWxlbWVudHMoc29tZV9zZWxlY3RvcikgYW5kCisgICAgICAgIG1hdGNoZWRfZWxlbWVudHMo
c29tZV9zZWxlY3Rvcjo6ZGlzdHJpYnV0ZWQoLi4uKSkgaXMgYWx3YXlzIGFuCisgICAgICAgIGVt
cHR5IHNldC4KKworICAgICAgICBBICc6OmRpc3RyaWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50IGlz
IHRoZSBmaXJzdC1ldmVyICpmdW5jdGlvbmFsKgorICAgICAgICBwc2V1ZG8gZWxlbWVudCB3aGlj
aCB0YWtlcyBwYXJhbWV0ZXIuICBJdCdzIGFsc28gdGhlIGZpcnN0IENTUworICAgICAgICBydWxl
IHdoaWNoIGNyb3NzZXMgdGhlIHNoYWRvdyBib3VuZGFyeSBmcm9tIGEgc2hhZG93IHRyZWUgdG8g
dGhlCisgICAgICAgIHRyZWUgb2YgaXRzIHNoYWRvdyBob3N0LiBUaGF0IG1lYW5zIGEgJzo6ZGlz
dHJpYnV0ZWQoKScgcHNldWRvCisgICAgICAgIGVsZW1lbnQgaXMgZGVmaW5lZCBpbiBzaGFkb3cg
dHJlZSwgYnV0IHRoZSBub2RlIHdoaWNoIGlzIG1hdGNoZWQKKyAgICAgICAgaW4gdGhlIHJ1bGUg
aXMgb3V0c2lkZSBvZiB0aGUgc2hhZG93IHRyZWUuIFRoZXJlZm9yZSwgd2UgY2Fubm90CisgICAg
ICAgIHByZWRpY3Qgd2hlcmUgdGhlIG1hdGNoZWQgbm9kZSB3aWxsIGJlIGJlZm9yZWhhbmQuICBD
dXJyZW50IENTUworICAgICAgICBpbXBsZW1lbnRhdGlvbiBhc3N1bWVzIHRoZSBmaW5hbCB0YXJn
ZXQgaXMgYXBwbGllZCBpbiB0aGUgY3VycmVudAorICAgICAgICBzY29wZS4KKworICAgICAgICBU
byBvdmVyY29tZSB0aGlzIGlzc3VlLCBTdHlsZVJlc29sdmVyIG5vdyBoYXMKKyAgICAgICAgU2hh
ZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLiAgQSBzdHlsZSBydWxlIHdpbGwgYmUgc3RvcmVkIGlu
IHRoaXMKKyAgICAgICAgUnVsZVNldE1hcCBpZiB0aGUgcnVsZSBpbmNsdWRlcyBhICc6OmRpc3Ry
aWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50LgorICAgICAgICBUaGlzIFJ1bGVTZXRNYXAgYWxzbyBr
ZWVwcyB0cmFjayBvZiBlYWNoIFJ1bGVTZXQKKyAgICAgICAgYnkgbWFwcGluZyBpdCB3aXRoIGEg
c2NvcGUgd2hlcmUgdGhlIHJ1bGUgd2FzIG9yaWdpbmFsbHkKKyAgICAgICAgZGVmaW5lZC4gSW4g
dGhlIGV4YW1wbGUsIHRoZSBzY29wZSBpcyAnQycuICBUaGUgc2NvcGUgaXMgdXNlZCB0bworICAg
ICAgICBjaGVjayB3aGV0aGVyIHRoZSBsZWZ0LW1vc3QgbWF0Y2hlZCBlbGVtZW50IChpbiB0aGUg
ZXhhbXBsZSwgaXQncworICAgICAgICBhIG5vZGUgJ0QnKSBleGlzdHMgaW4gdGhlIHNjb3BlLgor
CisgICAgICAgIEludGVybmFsbHksIGEgJzo6ZGlzdHJpYnV0ZWQnIHBzZXVkbyBlbGVtZW50IGlz
IHJlcHJlc2VudGVkIGJ5IGEKKyAgICAgICAgbmV3bHkgaW50cm9kdWNlZCAnU2hhZG93RGlzdHJp
YnV0ZWQnIHJlbGF0aW9uLiAgVGhhdCBtYWtlcyBhbgorICAgICAgICBpbXBsZW1lbnRhdGlvbiBv
ZiBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoKSBtdWNoIHNpbXBsZXIuCisgICAgICAg
IEEgdHJhbnNmb3JtYXRpb24gZnJvbSBhIGRpc3RyaWJ1dGVkIHBzZXVkbyBlbGVtZW50IHRvIGEK
KyAgICAgICAgU2hhZG93RGlzdHJpYnV0ZWQgaXMgZG9uZSBpbiBwYXJzaW5nIHN0YWdlIG9mIENT
Uy4KKworICAgICAgICBTaW5jZSAnOjpkaXN0cmlidXRlZCgpJyBpcyBhbiBleHBlcmltZW50YWwg
ZmVhdHVyZSwgaXQncyBhY3R1YWxseQorICAgICAgICBwcmVmaXhlZCB3aXRoICctd2Via2l0LScg
YW5kIGd1YXJkZWQgYnkgU0hBRE9XX0RPTSBmbGFnLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50Lmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC1tYXRjaC1hbGwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWRlc2NlbmRhbnQuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtbm8tbWF0Y2guaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBw
b3J0LXNlbGVjdG9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOgorICAgICAgICAq
IGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpkZXRlY3RE
YXNoVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpyZXdyaXRlU3BlY2lmaWVy
c1dpdGhFbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnJld3JpdGVT
cGVjaWZpZXJzKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgICogY3NzL0NT
U1BhcnNlclZhbHVlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6
Q1NTUGFyc2VyU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuaDoKKyAg
ICAgICAgKENTU1BhcnNlclNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNl
bGVjdG9yOjpmdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyU2VsZWN0b3I6OnNldEZ1bmN0aW9uQXJndW1lbnRTZWxlY3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6aXNEaXN0cmlidXRlZFBzZXVkb0VsZW1lbnQpOgor
ICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxl
Y3Rvcjo6cHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6bmFtZVRvUHNldWRvVHlwZU1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCk6CisgICAgICAgICogY3Nz
L0NTU1NlbGVjdG9yLmg6CisgICAgICAgIChDU1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjppc0Rpc3RyaWJ1dGVkUHNldWRvRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6aXNTaGFkb3dEaXN0cmlidXRl
ZCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFNlbGVjdG9ySGFzU2hhZG93RGlzdHJpYnV0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0b3JIYXNTaGFkb3dEaXN0cmlidXRlZDo6b3BlcmF0b3IoKSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTZWxlY3Rvckxpc3Q6Omhhc1NoYWRvd0Rpc3RyaWJ1dGVkQXQpOgorICAg
ICAgICAqIGNzcy9DU1NTZWxlY3Rvckxpc3QuaDoKKyAgICAgICAgKENTU1NlbGVjdG9yTGlzdCk6
CisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6
YWRkUnVsZXNGcm9tU2hlZXQpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKToKKyAgICAg
ICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNo
ZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0OjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCk6
CisgICAgICAgIChTZWxlY3RvckNoZWNraW5nQ29udGV4dCk6CisgICAgICAgICogY3NzL1NlbGVj
dG9yRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0
SWRlbnRpZmllckhhc2hlcyk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cmVzZXRBdXRob3JTdHlsZSk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkZFNoYWRvd0Rp
c3RyaWJ1dGVkUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0
TWF0Y2hpbmdSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRjaFNo
YWRvd0Rpc3RyaWJ1dGVkUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
bWF0Y2hBdXRob3JSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xs
ZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6Y2hlY2tTZWxlY3Rvcik6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAg
ICAgKFN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6TWF0
Y2hPcHRpb25zOjpNYXRjaE9wdGlvbnMpOgorICAgICAgICAoTWF0Y2hPcHRpb25zKToKKyAgICAg
ICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6Y29s
bGVjdEFsbEluc2VydGlvblBvaW50cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoKKwogMjAxMy0wMS0wOSAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBSZW1vdmUg
ZGV2aWNlU2NhbGVGYWN0b3IgYXJndW1lbnQgaW4gY29tcHV0ZU1pbmltdW1TY2FsZUZhY3RvckZv
ckNvbnRlbnRDb250YWluZWQoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFtbWFyLnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCmluZGV4IDFm
ZDQ1ZTQ5NWNlOTZhNWFhNDVjNjRiMWRlOWJiZjYwYzBmZTc0YzMuLjdhOGM4MjY3ODM3YmVmYjNh
MDkwY2JhYjY5NGM4NzdkNjE2MDYyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgpA
QCAtNjEsNyArNjEsMTEgQEAgc3RhdGljIGlubGluZSBpbnQgY3NzeXllcnJvcih2b2lkKiwgY29u
c3QgY2hhciopCiAKICV9CiAKKyNpZiBFTkFCTEVfU0hBRE9XX0RPTQorJWV4cGVjdCA2NgorI2Vs
c2UKICVleHBlY3QgNjUKKyNlbmRpZgogCiAlbm9uYXNzb2MgTE9XRVNUX1BSRUMKIApAQCAtMTc3
LDYgKzE4MSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGNzc3l5ZXJyb3Iodm9pZCosIGNvbnN0IGNo
YXIqKQogJXRva2VuIDxzdHJpbmc+IENVRUZVTkNUSU9OCiAjZW5kaWYKICV0b2tlbiA8c3RyaW5n
PiBOT1RGVU5DVElPTgorJXRva2VuIDxzdHJpbmc+IERJU1RSSUJVVEVERlVOQ1RJT04KICV0b2tl
biA8c3RyaW5nPiBDQUxDRlVOQ1RJT04KICV0b2tlbiA8c3RyaW5nPiBNSU5GVU5DVElPTgogJXRv
a2VuIDxzdHJpbmc+IE1BWEZVTkNUSU9OCkBAIC0xMTQ0LDEyICsxMTQ5LDEyIEBAIHNpbXBsZV9z
ZWxlY3RvcjoKICAgICB8IGVsZW1lbnRfbmFtZSBzcGVjaWZpZXJfbGlzdCB7CiAgICAgICAgICQk
ID0gJDI7CiAgICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lm
aWVyc1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwgJDEsICQkKTsKKyAgICAgICAgICAgICQkID0g
cGFyc2VyLT5yZXdyaXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwgJDEsICQk
KTsKICAgICB9CiAgICAgfCBzcGVjaWZpZXJfbGlzdCB7CiAgICAgICAgICQkID0gJDE7CiAgICAg
ICAgIGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVt
ZW50TmFtZShudWxsQXRvbSwgc3RhckF0b20sICQkKTsKKyAgICAgICAgICAgICQkID0gcGFyc2Vy
LT5yZXdyaXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwgc3RhckF0b20sICQk
KTsKICAgICB9CiAgICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1lIHsKICAgICAg
ICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKQEAgLTExNTgsMTIgKzEx
NjMsMTIgQEAgc2ltcGxlX3NlbGVjdG9yOgogICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIGVsZW1l
bnRfbmFtZSBzcGVjaWZpZXJfbGlzdCB7CiAgICAgICAgICQkID0gJDM7CiAgICAgICAgIGlmICgk
JCkKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSgk
MSwgJDIsICQkKTsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5yZXdyaXRlU3BlY2lmaWVyc1dp
dGhFbGVtZW50TmFtZSgkMSwgJDIsICQkKTsKICAgICB9CiAgICAgfCBuYW1lc3BhY2Vfc2VsZWN0
b3Igc3BlY2lmaWVyX2xpc3QgewogICAgICAgICAkJCA9ICQyOwogICAgICAgICBpZiAoJCQpCi0g
ICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsIHN0
YXJBdG9tLCAkJCk7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+cmV3cml0ZVNwZWNpZmllcnNX
aXRoRWxlbWVudE5hbWUoJDEsIHN0YXJBdG9tLCAkJCk7CiAgICAgfQogICA7CiAKQEAgLTEyMDgs
NyArMTIxMyw3IEBAIHNwZWNpZmllcl9saXN0OgogICAgICAgICBpZiAoISQyKQogICAgICAgICAg
ICAgJCQgPSAwOwogICAgICAgICBlbHNlIGlmICgkMSkKLSAgICAgICAgICAgICQkID0gcGFyc2Vy
LT51cGRhdGVTcGVjaWZpZXJzKCQxLCAkMik7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+cmV3
cml0ZVNwZWNpZmllcnMoJDEsICQyKTsKICAgICB9CiAgICAgfCBzcGVjaWZpZXJfbGlzdCBlcnJv
ciB7CiAgICAgICAgICQkID0gMDsKQEAgLTEzNTUsNiArMTM2MCwxOSBAQCBwc2V1ZG86CiAgICAg
ICAgICAgICAkJCA9IDA7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFX1NIQURPV19ET00KKyAg
ICB8ICc6JyAnOicgRElTVFJJQlVURURGVU5DVElPTiBtYXliZV9zcGFjZSBzZWxlY3RvciBtYXli
ZV9zcGFjZSAnKScgeworICAgICAgICBpZiAoISQ1KQorICAgICAgICAgICAgJCQgPSAwOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVj
dG9yKCk7CisgICAgICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1l
bnQpOworICAgICAgICAgICAgJCQtPnNldEZ1bmN0aW9uQXJndW1lbnRTZWxlY3RvcigkNSk7Cisg
ICAgICAgICAgICAkMy5sb3dlcigpOworICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQzKTsKKyAg
ICAgICAgfQorICAgIH0KKyNlbmRpZgogICAgIC8vIHVzZSBieSA6LXdlYmtpdC1hbnkuCiAgICAg
Ly8gRklYTUU6IHNob3VsZCB3ZSBzdXBwb3J0IGdlbmVyaWMgc2VsZWN0b3JzIGhlcmUgb3IganVz
dCBzaW1wbGVfc2VsZWN0b3JzPwogICAgIC8vIFVzZSBzaW1wbGVfc2VsZWN0b3JfbGlzdCBmb3Ig
bm93IHRvIG1hdGNoIC1tb3otYW55LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCAwNDhi
NTM3NjYxMDQ0NmVjMDM1NjJkM2FiOGVjMmM3NDNlMzg2OTNmLi41M2NmOGMzYjQ5ZTQ2ZGFhYThl
NmExYzcwOWRkMzkyNDkzZTkwMmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtOTY3
Miw2ICs5NjcyLDEwIEBAIGlubGluZSB2b2lkIENTU1BhcnNlcjo6ZGV0ZWN0RGFzaFRva2VuKGlu
dCBsZW5ndGgpCiAjZW5kaWYKICAgICB9IGVsc2UgaWYgKGxlbmd0aCA9PSAxMiAmJiBpc0VxdWFs
VG9DU1NJZGVudGlmaWVyKG5hbWUgKyAxLCAid2Via2l0LWNhbGMiKSkKICAgICAgICAgbV90b2tl
biA9IENBTENGVU5DVElPTjsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBlbHNlIGlmIChs
ZW5ndGggPT0gMTkgJiYgaXNFcXVhbFRvQ1NTSWRlbnRpZmllcihuYW1lICsgMSwgIndlYmtpdC1k
aXN0cmlidXRlZCIpKQorICAgICAgICBtX3Rva2VuID0gRElTVFJJQlVURURGVU5DVElPTjsKKyNl
bmRpZgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KQEAgLTEwNjA2LDE2
ICsxMDYxMCwzMiBAQCBRdWFsaWZpZWROYW1lIENTU1BhcnNlcjo6ZGV0ZXJtaW5lTmFtZUluTmFt
ZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjbwogICAgIHJldHVybiBRdWFsaWZp
ZWROYW1lKHByZWZpeCwgbG9jYWxOYW1lLCBtX3N0eWxlU2hlZXQtPmRldGVybWluZU5hbWVzcGFj
ZShwcmVmaXgpKTsKIH0KIAotdm9pZCBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxl
bWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VQcmVmaXgsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZWxlbWVudE5hbWUsIENTU1BhcnNlclNlbGVjdG9yKiBzcGVjaWZpZXJzKQorQ1NT
UGFyc2VyU2VsZWN0b3IqIENTU1BhcnNlcjo6cmV3cml0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5h
bWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VQcmVmaXgsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZWxlbWVudE5hbWUsIENTU1BhcnNlclNlbGVjdG9yKiBzcGVjaWZpZXJzKQogewogICAgIEF0
b21pY1N0cmluZyBkZXRlcm1pbmVkTmFtZXNwYWNlID0gbmFtZXNwYWNlUHJlZml4ICE9IG51bGxB
dG9tICYmIG1fc3R5bGVTaGVldCA/IG1fc3R5bGVTaGVldC0+ZGV0ZXJtaW5lTmFtZXNwYWNlKG5h
bWVzcGFjZVByZWZpeCkgOiBtX2RlZmF1bHROYW1lc3BhY2U7CiAgICAgUXVhbGlmaWVkTmFtZSB0
YWcgPSBRdWFsaWZpZWROYW1lKG5hbWVzcGFjZVByZWZpeCwgZWxlbWVudE5hbWUsIGRldGVybWlu
ZWROYW1lc3BhY2UpOworCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgaWYgKHNwZWNpZmll
cnMtPmlzRGlzdHJpYnV0ZWRQc2V1ZG9FbGVtZW50KCkpIHsKKyAgICAgICAgQ1NTUGFyc2VyU2Vs
ZWN0b3IqIGFyZ3VtZW50U2VsZWN0b3IgPSBzcGVjaWZpZXJzLT5mdW5jdGlvbkFyZ3VtZW50U2Vs
ZWN0b3IoKTsKKyAgICAgICAgQVNTRVJUKGFyZ3VtZW50U2VsZWN0b3IpOworICAgICAgICBDU1NQ
YXJzZXJTZWxlY3RvciogZW5kID0gYXJndW1lbnRTZWxlY3RvcjsKKyAgICAgICAgd2hpbGUgKGVu
ZC0+dGFnSGlzdG9yeSgpKQorICAgICAgICAgICAgZW5kID0gZW5kLT50YWdIaXN0b3J5KCk7Cisg
ICAgICAgIE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gZWxlbWVudE5hbWVTZWxlY3RvciA9IGFk
b3B0UHRyKG5ldyBDU1NQYXJzZXJTZWxlY3Rvcik7CisgICAgICAgIGVsZW1lbnROYW1lU2VsZWN0
b3ItPnNldFRhZyh0YWcpOworICAgICAgICBlbmQtPnNldFRhZ0hpc3RvcnkoZWxlbWVudE5hbWVT
ZWxlY3Rvci5yZWxlYXNlKCkpOworICAgICAgICBlbmQtPnNldFJlbGF0aW9uKENTU1NlbGVjdG9y
OjpTaGFkb3dEaXN0cmlidXRlZCk7CisgICAgICAgIHJldHVybiBhcmd1bWVudFNlbGVjdG9yOwor
ICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKCFzcGVjaWZpZXJzLT5pc0N1c3RvbVBzZXVkb0VsZW1l
bnQoKSkgewogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICAgICAgaWYgKCEoc3BlY2lmaWVy
cy0+cHNldWRvVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DdWUpKQogI2VuZGlmCiAgICAg
ICAgICAgICBzcGVjaWZpZXJzLT5zZXRUYWcodGFnKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gc3BlY2lmaWVyczsKICAgICB9CiAKICAgICBDU1NQYXJzZXJTZWxlY3RvciogbGFz
dFNoYWRvd0Rlc2NlbmRhbnQgPSBzcGVjaWZpZXJzOwpAQCAtMTA2MjgsNyArMTA2NDgsNyBAQCB2
b2lkIENTU1BhcnNlcjo6dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWVzcGFjZVByZQogCiAgICAgaWYgKGxhc3RTaGFkb3dEZXNjZW5kYW50LT50
YWdIaXN0b3J5KCkpIHsKICAgICAgICAgbGFzdFNoYWRvd0Rlc2NlbmRhbnQtPnRhZ0hpc3Rvcnko
KS0+c2V0VGFnKHRhZyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHNwZWNpZmll
cnM7CiAgICAgfQogCiAgICAgLy8gRm9yIHNoYWRvdy1JRCBwc2V1ZG8tZWxlbWVudHMgdG8gYmUg
Y29ycmVjdGx5IG1hdGNoZWQsIHRoZSBTaGFkb3dEZXNjZW5kYW50IGNvbWJpbmF0b3IgaGFzIHRv
IGJlIHVzZWQuCkBAIC0xMDYzNyw5ICsxMDY1NywxMCBAQCB2b2lkIENTU1BhcnNlcjo6dXBkYXRl
U3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVBy
ZQogICAgIGVsZW1lbnROYW1lU2VsZWN0b3ItPnNldFRhZyh0YWcpOwogICAgIGxhc3RTaGFkb3dE
ZXNjZW5kYW50LT5zZXRUYWdIaXN0b3J5KGVsZW1lbnROYW1lU2VsZWN0b3IucmVsZWFzZSgpKTsK
ICAgICBsYXN0U2hhZG93RGVzY2VuZGFudC0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6OlNoYWRv
d0Rlc2NlbmRhbnQpOworICAgIHJldHVybiBzcGVjaWZpZXJzOwogfQogCi1DU1NQYXJzZXJTZWxl
Y3RvciogQ1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzKENTU1BhcnNlclNlbGVjdG9yKiBzcGVj
aWZpZXJzLCBDU1NQYXJzZXJTZWxlY3RvciogbmV3U3BlY2lmaWVyKQorQ1NTUGFyc2VyU2VsZWN0
b3IqIENTU1BhcnNlcjo6cmV3cml0ZVNwZWNpZmllcnMoQ1NTUGFyc2VyU2VsZWN0b3IqIHNwZWNp
ZmllcnMsIENTU1BhcnNlclNlbGVjdG9yKiBuZXdTcGVjaWZpZXIpCiB7CiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQogICAgIGlmIChuZXdTcGVjaWZpZXItPmlzQ3VzdG9tUHNldWRvRWxlbWVudCgp
IHx8IG5ld1NwZWNpZmllci0+cHNldWRvVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DdWUp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCAzOTJmZjk4NDBjNWE2YzgzOWMyZjIxNDQzN2Fi
NzU4NGJiNzI1YTlkLi43MWIwMjY2ZDNjMzVkMzdhYmNjMjEyOTkzYjE2OTRmY2RlM2Y2NmQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0zMDksOCArMzA5LDggQEAgcHVibGljOgogCiAgICAg
dm9pZCBhZGROYW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdXJpKTsKICAgICBRdWFsaWZpZWROYW1lIGRldGVybWluZU5hbWVJbk5hbWVzcGFj
ZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5h
bWUpOwotICAgIHZvaWQgdXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWVzcGFjZVByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50TmFt
ZSwgQ1NTUGFyc2VyU2VsZWN0b3IqKTsKLSAgICBDU1NQYXJzZXJTZWxlY3RvciogdXBkYXRlU3Bl
Y2lmaWVycyhDU1NQYXJzZXJTZWxlY3RvciosIENTU1BhcnNlclNlbGVjdG9yKik7CisgICAgQ1NT
UGFyc2VyU2VsZWN0b3IqIHJld3JpdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRO
YW1lLCBDU1NQYXJzZXJTZWxlY3RvciopOworICAgIENTU1BhcnNlclNlbGVjdG9yKiByZXdyaXRl
U3BlY2lmaWVycyhDU1NQYXJzZXJTZWxlY3RvciosIENTU1BhcnNlclNlbGVjdG9yKik7CiAKICAg
ICB2b2lkIGludmFsaWRCbG9ja0hpdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyVmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1
ZXMuY3BwCmluZGV4IGQyM2I4NTg1ZDVkN2JiOGViMGYyNjgyMzRiNmVkMDZhNTg4MWRmMjcuLmU1
YTBiMzc3ZTdlZDc2MDVkMmY5MjY3NGYzZjhhNmYzNzlmYWYyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXJWYWx1ZXMuY3BwCkBAIC0xNDYsNiArMTQ2LDkgQEAgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gQ1NTUGFyc2VyVmFsdWU6OmNyZWF0ZUNTU1ZhbHVlKCkKIAogQ1NTUGFyc2VyU2VsZWN0
b3I6OkNTU1BhcnNlclNlbGVjdG9yKCkKICAgICA6IG1fc2VsZWN0b3IoYWRvcHRQdHIoZmFzdE5l
dzxDU1NTZWxlY3Rvcj4oKSkpCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgLCBtX2Z1bmN0
aW9uQXJndW1lbnRTZWxlY3RvcigwKQorI2VuZGlmCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXJWYWx1ZXMuaAppbmRleCAxMzAxYjFjZTBlMTEzNzIzY2NmODIxNjI4ZWUwNWUyZTMxMDIz
NjdiLi4yY2Q0MDk5NGYwMWZiZmVlN2NlNmNiMDEwODNmNDE0OTUzOWExNDMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCkBAIC0xODYsNiArMTg2LDEyIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgYWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVj
dG9yPiA+JiBzZWxlY3RvclZlY3Rvcik7CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBD
U1NQYXJzZXJTZWxlY3RvciogZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9mdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3I7IH0KKyAgICB2b2lkIHNldEZ1bmN0aW9uQXJn
dW1lbnRTZWxlY3RvcihDU1NQYXJzZXJTZWxlY3Rvciogc2VsZWN0b3IpIHsgbV9mdW5jdGlvbkFy
Z3VtZW50U2VsZWN0b3IgPSBzZWxlY3RvcjsgfQorICAgIGJvb2wgaXNEaXN0cmlidXRlZFBzZXVk
b0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yLT5pc0Rpc3RyaWJ1dGVkUHNldWRv
RWxlbWVudCgpOyB9CisjZW5kaWYKKwogICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHBzZXVk
b1R5cGUoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yLT5wc2V1ZG9UeXBlKCk7IH0KICAgICBi
b29sIGlzQ3VzdG9tUHNldWRvRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3ItPmlz
Q3VzdG9tUHNldWRvRWxlbWVudCgpOyB9CiAKQEAgLTIwMCw2ICsyMDYsOSBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIE93blB0cjxDU1NTZWxlY3Rvcj4gbV9zZWxlY3RvcjsKICAgICBPd25QdHI8
Q1NTUGFyc2VyU2VsZWN0b3I+IG1fdGFnSGlzdG9yeTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
KyAgICBDU1NQYXJzZXJTZWxlY3RvciogbV9mdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3I7CisjZW5k
aWYKIH07CiAKIGlubGluZSBib29sIENTU1BhcnNlclNlbGVjdG9yOjpoYXNTaGFkb3dEZXNjZW5k
YW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCmluZGV4IDVhNmVjY2FmYjk0
MmMwZDZmYTczYTYyYjZmZmM3NDIxZjNjYWE5ZWMuLjJkMDc4NTU1OWJjYjA1ZWQzY2UzY2QwMDJk
ZjIzYTU0YmEzYWNkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcApAQCAtMTM5LDYg
KzEzOSwxMCBAQCBQc2V1ZG9JZCBDU1NTZWxlY3Rvcjo6cHNldWRvSWQoUHNldWRvVHlwZSB0eXBl
KQogICAgICAgICByZXR1cm4gQkVGT1JFOwogICAgIGNhc2UgUHNldWRvQWZ0ZXI6CiAgICAgICAg
IHJldHVybiBBRlRFUjsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBjYXNlIFBzZXVkb0Rp
c3RyaWJ1dGVkOgorICAgICAgICByZXR1cm4gRElTVFJJQlVURUQ7CisjZW5kaWYKICAgICBjYXNl
IFBzZXVkb1Njcm9sbGJhcjoKICAgICAgICAgcmV0dXJuIFNDUk9MTEJBUjsKICAgICBjYXNlIFBz
ZXVkb1Njcm9sbGJhckJ1dHRvbjoKQEAgLTMxNiw2ICszMjAsOSBAQCBzdGF0aWMgSGFzaE1hcDxB
dG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGU+KiBuYW1lVG9Qc2V1ZG9U
eXBlTWFwKAogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCiAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIHNlYW1sZXNzRG9jdW1lbnQsICgiLXdlYmtpdC1zZWFtbGVzcy1k
b2N1bWVudCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICNlbmRpZgor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBkaXN0cmlidXRlZCwgKCItd2Via2l0LWRpc3RyaWJ1dGVkKCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyNlbmRpZgogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBpblJhbmdlLCAoImluLXJhbmdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBv
dXRPZlJhbmdlLCAoIm91dC1vZi1yYW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKIApAQCAtMzk4LDYgKzQwNSw5IEBAIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmlu
Z0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVkb1R5cGVNYXAoCiAj
aWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0
KHNlYW1sZXNzRG9jdW1lbnQuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvU2VhbWxlc3NEb2N1
bWVudCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgbmFtZVRvUHNl
dWRvVHlwZS0+c2V0KGRpc3RyaWJ1dGVkLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Rpc3Ry
aWJ1dGVkKTsKKyNlbmRpZgogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoaW5SYW5nZS5p
bXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9JblJhbmdlKTsKICAgICAgICAgbmFtZVRvUHNldWRv
VHlwZS0+c2V0KG91dE9mUmFuZ2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvT3V0T2ZSYW5n
ZSk7CiAgICAgfQpAQCAtNDQ4LDYgKzQ1OCw5IEBAIHZvaWQgQ1NTU2VsZWN0b3I6OmV4dHJhY3RQ
c2V1ZG9UeXBlKCkgY29uc3QKICAgICBjYXNlIFBzZXVkb0ZpcnN0TGV0dGVyOgogICAgIGNhc2Ug
UHNldWRvRmlyc3RMaW5lOgogICAgICAgICBjb21wYXQgPSB0cnVlOworI2lmIEVOQUJMRShTSEFE
T1dfRE9NKQorICAgIGNhc2UgUHNldWRvRGlzdHJpYnV0ZWQ6CisjZW5kaWYKICAgICBjYXNlIFBz
ZXVkb1Jlc2l6ZXI6CiAgICAgY2FzZSBQc2V1ZG9TY3JvbGxiYXI6CiAgICAgY2FzZSBQc2V1ZG9T
Y3JvbGxiYXJDb3JuZXI6CkBAIC02ODQsNiArNjk3LDEwIEBAIFN0cmluZyBDU1NTZWxlY3Rvcjo6
c2VsZWN0b3JUZXh0KCkgY29uc3QKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50OgogICAgICAgICAgICAg
cmV0dXJuIHRhZ0hpc3RvcnlUZXh0ICsgc3RyLnRvU3RyaW5nKCk7CisjaWYgRU5BQkxFKFNIQURP
V19ET00pCisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rpc3RyaWJ1dGVkOgorICAg
ICAgICAgICAgcmV0dXJuIHRhZ0hpc3RvcnlUZXh0ICsgIjo6LXdlYmtpdC1kaXN0cmlidXRlZCgi
ICsgc3RyLnRvU3RyaW5nKCkgKyAiKSI7CisjZW5kaWYKICAgICAgICAgfQogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCAwNjQ5OGY0ZWM3ODEyYzY2OWE1NjcyMzVlNTVhOTll
NDU4ZmRhMjUyLi4yMzA2OTU0Mzk1MWE5ODU4NGUxYjdkYjAwYjU5ZjUwODRlOWMwMjgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3IuaApAQCAtNzYsNyArNzYsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAgICAgRGlyZWN0QWRqYWNlbnQsCiAgICAgICAgICAgICBJbmRpcmVjdEFk
amFjZW50LAogICAgICAgICAgICAgU3ViU2VsZWN0b3IsCi0gICAgICAgICAgICBTaGFkb3dEZXNj
ZW5kYW50CisgICAgICAgICAgICBTaGFkb3dEZXNjZW5kYW50LAorI2lmIEVOQUJMRShTSEFET1df
RE9NKQorICAgICAgICAgICAgU2hhZG93RGlzdHJpYnV0ZWQKKyNlbmRpZgogICAgICAgICB9Owog
CiAgICAgICAgIGVudW0gUHNldWRvVHlwZSB7CkBAIC0xNjEsNyArMTY0LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFBzZXVkb0Z1dHVyZUN1ZSwKICNlbmRpZgogI2lmIEVO
QUJMRShJRlJBTUVfU0VBTUxFU1MpCi0gICAgICAgICAgICBQc2V1ZG9TZWFtbGVzc0RvY3VtZW50
CisgICAgICAgICAgICBQc2V1ZG9TZWFtbGVzc0RvY3VtZW50LAorI2VuZGlmCisjaWYgRU5BQkxF
KFNIQURPV19ET00pCisgICAgICAgICAgICBQc2V1ZG9EaXN0cmlidXRlZAogI2VuZGlmCiAgICAg
ICAgIH07CiAKQEAgLTIyMyw2ICsyMjksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBib29sIGlzQ3VzdG9tUHNldWRvRWxlbWVudCgpIGNvbnN0OwogICAgICAgICBib29sIGlzU2li
bGluZ1NlbGVjdG9yKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNBdHRyaWJ1dGVTZWxlY3Rvcigp
IGNvbnN0OworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICBib29sIGlzRGlzdHJpYnV0
ZWRQc2V1ZG9FbGVtZW50KCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNTaGFkb3dEaXN0cmlidXRl
ZCgpIGNvbnN0OworI2VuZGlmCiAKICAgICAgICAgUmVsYXRpb24gcmVsYXRpb24oKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxSZWxhdGlvbj4obV9yZWxhdGlvbik7IH0KIApAQCAtMzM1LDYg
KzM0NSwxOCBAQCBpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6aXNBdHRyaWJ1dGVTZWxlY3Rvcigp
IGNvbnN0CiAgICAgICAgIHx8IG1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OkVuZDsKIH0KIAorI2lm
IEVOQUJMRShTSEFET1dfRE9NKQoraW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6OmlzRGlzdHJpYnV0
ZWRQc2V1ZG9FbGVtZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tYXRjaCA9PSBQc2V1ZG9F
bGVtZW50ICYmIHBzZXVkb1R5cGUoKSA9PSBQc2V1ZG9EaXN0cmlidXRlZDsKK30KKworaW5saW5l
IGJvb2wgQ1NTU2VsZWN0b3I6OmlzU2hhZG93RGlzdHJpYnV0ZWQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3JlbGF0aW9uID09IENTU1NlbGVjdG9yOjpTaGFkb3dEaXN0cmlidXRlZDsKK30KKyNl
bmRpZgorCiBpbmxpbmUgdm9pZCBDU1NTZWxlY3Rvcjo6c2V0VmFsdWUoY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICAvLyBOZWVkIHRvIGRvIHJlZiBjb3VudGluZyBtYW51YWxseSBm
b3IgdGhlIHVuaW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAppbmRleCA0
MzEzNmQxYzkwMWM2MzQxYmFjYmVmODM5NDlkZjk0ZTYwZjFjMzZjLi5jNTI5M2ZiMmEyMDNlZDZm
MTlmYzU3MTUyMzZiNWQ5ZjY2NGJmNTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3JMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JM
aXN0LmNwcApAQCAtMjExLDYgKzIxMSwyMSBAQCBib29sIENTU1NlbGVjdG9yTGlzdDo6aGFzSW52
YWxpZFNlbGVjdG9yKCkgY29uc3QKICAgICByZXR1cm4gZm9yRWFjaFNlbGVjdG9yKGZ1bmN0b3Is
IHRoaXMpOwogfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCitjbGFzcyBTZWxlY3Rvckhhc1No
YWRvd0Rpc3RyaWJ1dGVkIHsKK3B1YmxpYzoKKyAgICBib29sIG9wZXJhdG9yKCkoQ1NTU2VsZWN0
b3IqIHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbGVjdG9yLT5pc1NoYWRvd0Rp
c3RyaWJ1dGVkKCk7CisgICAgfQorfTsKKworYm9vbCBDU1NTZWxlY3Rvckxpc3Q6Omhhc1NoYWRv
d0Rpc3RyaWJ1dGVkQXQoc2l6ZV90IGluZGV4KSBjb25zdAoreworICAgIFNlbGVjdG9ySGFzU2hh
ZG93RGlzdHJpYnV0ZWQgZnVuY3RvcjsKKyAgICByZXR1cm4gZm9yRWFjaFRhZ1NlbGVjdG9yKGZ1
bmN0b3IsIHNlbGVjdG9yQXQoaW5kZXgpKTsKK30KIAorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaAppbmRleCA0ZmNmZWUyZmFh
NDE4MmQ3YTlhYjA1NWJjY2U1MTlmZTc0ZTIyNzE1Li40ZTdiNTgyZGJjNTExOGE0NWU0NmRiYmYw
Y2Q4OTRhOWY3NDNmNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3JMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCkBAIC02
MCw2ICs2MCwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZWxlY3RvcnNOZWVkTmFtZXNwYWNlUmVz
b2x1dGlvbigpOwogICAgIGJvb2wgaGFzSW52YWxpZFNlbGVjdG9yKCkgY29uc3Q7CiAKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKKyAgICBib29sIGhhc1NoYWRvd0Rpc3RyaWJ1dGVkQXQoc2l6ZV90
IGluZGV4KSBjb25zdDsKKyNlbmRpZgorCiAgICAgU3RyaW5nIHNlbGVjdG9yc1RleHQoKSBjb25z
dDsKIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1J1bGVTZXQuY3BwCmluZGV4IGQ4NDAwNGQ5Y2NjMTQ4NDNlNGI0MGE2YmQ2MmFj
NzJhOGRmYjIyZWIuLmJiMTQ4OTM3NTk1MmQyZTFjOTk2MGM1YmMzYjRlZjRlMjg1ZDM5ZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvUnVsZVNldC5jcHAKQEAgLTI4Nyw5ICsyODcsMjUgQEAgdm9pZCBSdWxlU2V0Ojph
ZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVudHMqIHNoZWV0LCBjb25zdCBNZWRpYVF1
ZXJ5RXZhbHUKICAgICAgICAgU3R5bGVSdWxlQmFzZSogcnVsZSA9IHJ1bGVzW2ldLmdldCgpOwog
CiAgICAgICAgIEFTU0VSVCghcnVsZS0+aXNJbXBvcnRSdWxlKCkpOwotICAgICAgICBpZiAocnVs
ZS0+aXNTdHlsZVJ1bGUoKSkKLSAgICAgICAgICAgIGFkZFN0eWxlUnVsZShzdGF0aWNfY2FzdDxT
dHlsZVJ1bGUqPihydWxlKSwgYWRkUnVsZUZsYWdzKTsKLSAgICAgICAgZWxzZSBpZiAocnVsZS0+
aXNQYWdlUnVsZSgpKQorICAgICAgICBpZiAocnVsZS0+aXNTdHlsZVJ1bGUoKSkgeworICAgICAg
ICAgICAgU3R5bGVSdWxlKiBzdHlsZVJ1bGUgPSBzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihydWxl
KTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgICAgIGlmICghc2NvcGUpCisgICAg
ICAgICAgICAgICAgYWRkU3R5bGVSdWxlKHN0eWxlUnVsZSwgYWRkUnVsZUZsYWdzKTsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2Vs
ZWN0b3JMaXN0ID0gc3R5bGVSdWxlLT5zZWxlY3Rvckxpc3QoKTsKKyAgICAgICAgICAgICAgICBm
b3IgKHNpemVfdCBzZWxlY3RvckluZGV4ID0gMDsgc2VsZWN0b3JJbmRleCAhPSBub3RGb3VuZDsg
c2VsZWN0b3JJbmRleCA9IHNlbGVjdG9yTGlzdC5pbmRleE9mTmV4dFNlbGVjdG9yQWZ0ZXIoc2Vs
ZWN0b3JJbmRleCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yTGlzdC5oYXNT
aGFkb3dEaXN0cmlidXRlZEF0KHNlbGVjdG9ySW5kZXgpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzb2x2ZXItPmFkZFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZShzdHlsZVJ1bGUsIHNlbGVjdG9y
SW5kZXgsIGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSo+KHNjb3BlKSwgYWRkUnVsZUZsYWdzKTsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgYWRkUnVs
ZShzdHlsZVJ1bGUsIHNlbGVjdG9ySW5kZXgsIGFkZFJ1bGVGbGFncyk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgICAgIGFkZFN0eWxlUnVsZShzdHls
ZVJ1bGUsIGFkZFJ1bGVGbGFncyk7CisjZW5kaWYKKworICAgICAgICB9IGVsc2UgaWYgKHJ1bGUt
PmlzUGFnZVJ1bGUoKSkKICAgICAgICAgICAgIGFkZFBhZ2VSdWxlKHN0YXRpY19jYXN0PFN0eWxl
UnVsZVBhZ2UqPihydWxlKSk7CiAgICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlzTWVkaWFSdWxlKCkp
IHsKICAgICAgICAgICAgIFN0eWxlUnVsZU1lZGlhKiBtZWRpYVJ1bGUgPSBzdGF0aWNfY2FzdDxT
dHlsZVJ1bGVNZWRpYSo+KHJ1bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNw
cAppbmRleCAyYTM1ZmQwNmZiMmM1Yzk4NTVkNDUxMDcxOGIyMGU2OTBlZjU5ZWU5Li4xMTE2YWRi
YzI3YjNjODlhYzY4MzZlNTY0NWYwNGJkODczZDZhMDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkhUTUxPcHRpb25F
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFByb2dyZXNzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxTdHlsZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgogI2luY2x1ZGUg
Ikluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTI4MSw4ICsyODIsMTMgQEAgU2VsZWN0b3JDaGVja2Vy
OjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxl
Y3RvckNoZWMKIAogICAgIC8vIFByZXBhcmUgbmV4dCBzZWxlY3RvcgogICAgIENTU1NlbGVjdG9y
KiBoaXN0b3J5U2VsZWN0b3IgPSBjb250ZXh0LnNlbGVjdG9yLT50YWdIaXN0b3J5KCk7Ci0gICAg
aWYgKCFoaXN0b3J5U2VsZWN0b3IpCisgICAgaWYgKCFoaXN0b3J5U2VsZWN0b3IpIHsKKyAgICAg
ICAgaWYgKGNvbnRleHQuY3Jvc3NCb3VuZGFyeSA9PSBDcm9zc2VzQm91bmRhcnkpIHsKKyAgICAg
ICAgICAgIEFTU0VSVChjb250ZXh0LnNjb3BlKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0
LnNjb3BlLT5jb250YWlucyhjb250ZXh0LmVsZW1lbnQpID8gU2VsZWN0b3JNYXRjaGVzIDogU2Vs
ZWN0b3JGYWlsc0xvY2FsbHk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFNlbGVjdG9yTWF0
Y2hlczsKKyAgICB9CiAKICAgICBTZWxlY3RvckNoZWNraW5nQ29udGV4dCBuZXh0Q29udGV4dChj
b250ZXh0KTsKICAgICBuZXh0Q29udGV4dC5zZWxlY3RvciA9IGhpc3RvcnlTZWxlY3RvcjsKQEAg
LTM4NCw2ICszOTAsMjYgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWMKICAgICAgICAgICAgIG5l
eHRDb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9IDA7CiAgICAgICAgICAgICByZXR1cm4gY2hl
Y2tTZWxlY3RvcihuZXh0Q29udGV4dCwgaWdub3JlRHluYW1pY1BzZXVkbyk7CiAgICAgICAgIH0K
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEaXN0
cmlidXRlZDoKKyAgICAgICAgeworICAgICAgICAgICAgVmVjdG9yPEluc2VydGlvblBvaW50Kiwg
OD4gaW5zZXJ0aW9uUG9pbnRzOworICAgICAgICAgICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0g
Y29udGV4dC5lbGVtZW50OyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVu
dCgpKSB7CisgICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnRzLmNsZWFyKCk7CisgICAgICAg
ICAgICAgICAgY29sbGVjdEFsbEluc2VydGlvblBvaW50cyhlbGVtZW50LCBpbnNlcnRpb25Qb2lu
dHMpOworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zZXJ0aW9uUG9p
bnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1l
bnQgPSBpbnNlcnRpb25Qb2ludHNbaV07CisgICAgICAgICAgICAgICAgICAgIG5leHRDb250ZXh0
LmlzU3ViU2VsZWN0b3IgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgbmV4dENvbnRleHQu
ZWxlbWVudFN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbmV4dENvbnRleHQuZWxlbWVu
dFBhcmVudFN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBtYXRj
aCA9IGNoZWNrU2VsZWN0b3IobmV4dENvbnRleHQsIGlnbm9yZUR5bmFtaWNQc2V1ZG8pOworICAg
ICAgICAgICAgICAgICAgICBpZiAobWF0Y2ggPT0gU2VsZWN0b3JNYXRjaGVzKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKKyAgICAg
ICAgfQorI2VuZGlmCiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXggMzMxOTNmNzZiYzMyODI2YWQwZDNlZTYxNDUx
NWI5YmFjNWQyNTIwYi4uNTEzMThjMmE2MjJmMjc0NmExYTYxMTM5Y2IwMDNjMjhiOGYzOGZhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaApAQCAtNDksNiArNDksNyBAQCBwdWJs
aWM6CiAgICAgZW51bSBTZWxlY3Rvck1hdGNoIHsgU2VsZWN0b3JNYXRjaGVzLCBTZWxlY3RvckZh
aWxzTG9jYWxseSwgU2VsZWN0b3JGYWlsc0FsbFNpYmxpbmdzLCBTZWxlY3RvckZhaWxzQ29tcGxl
dGVseSB9OwogICAgIGVudW0gVmlzaXRlZE1hdGNoVHlwZSB7IFZpc2l0ZWRNYXRjaERpc2FibGVk
LCBWaXNpdGVkTWF0Y2hFbmFibGVkIH07CiAgICAgZW51bSBNb2RlIHsgUmVzb2x2aW5nU3R5bGUg
PSAwLCBDb2xsZWN0aW5nUnVsZXMsIFF1ZXJ5aW5nUnVsZXMsIFNoYXJpbmdSdWxlcyB9OworICAg
IGVudW0gQ3Jvc3NCb3VuZGFyeSB7IERvZXNOb3RDcm9zc0JvdW5kYXJ5LCBDcm9zc2VzQm91bmRh
cnkgfTsKIAogICAgIHN0cnVjdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCB7CiAgICAgICAgIC8v
IEluaXRpYWwgc2VsZWN0b3IgY29uc3RydWN0b3IKQEAgLTYzLDYgKzY0LDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgLCBpc1N1YlNlbGVjdG9yKGZhbHNlKQogICAgICAgICAgICAgLCBoYXNTY3Jv
bGxiYXJQc2V1ZG8oZmFsc2UpCiAgICAgICAgICAgICAsIGhhc1NlbGVjdGlvblBzZXVkbyhmYWxz
ZSkKKyAgICAgICAgICAgICwgY3Jvc3NCb3VuZGFyeShEb2VzTm90Q3Jvc3NCb3VuZGFyeSkKICAg
ICAgICAgeyB9CiAKICAgICAgICAgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yOwpAQCAtNzUsNiArNzcs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXNTdWJTZWxlY3RvcjsKICAgICAgICAgYm9vbCBo
YXNTY3JvbGxiYXJQc2V1ZG87CiAgICAgICAgIGJvb2wgaGFzU2VsZWN0aW9uUHNldWRvOworICAg
ICAgICBDcm9zc0JvdW5kYXJ5IGNyb3NzQm91bmRhcnk7CiAgICAgfTsKIAogICAgIGJvb2wgY2hl
Y2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBib29sIGlzRmFzdENoZWNrYWJsZVNl
bGVjdG9yID0gZmFsc2UpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAK
aW5kZXggY2VhYTc2ODE0OTAwYzBiMzFkMzk0YzRmMjZjYzRjYmI1ZTM1ZThkYy4uNmIzOTA2NWU4
MDk2Mzg3MGRkYjUwZDg1Yzk3ZjUzYzM4YTE3NTQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JGaWx0ZXIuY3BwCkBAIC0xNDgsNiArMTQ4LDkgQEAgdm9pZCBTZWxlY3RvckZpbHRlcjo6Y29s
bGVjdElkZW50aWZpZXJIYXNoZXMoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCB1bnNpZ24K
ICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RGlyZWN0QWRqYWNlbnQ6CiAgICAgICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OkluZGlyZWN0QWRqYWNlbnQ6CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OlNoYWRvd0Rlc2NlbmRhbnQ6CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OlNoYWRvd0Rpc3RyaWJ1dGVkOgorI2VuZGlmCiAgICAgICAgICAgICBza2lw
T3ZlclN1YnNlbGVjdG9ycyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cAppbmRleCAwOThlMGQ1N2MwYjdlMWQ3NGVkMTUwOGY3ZTkwMGQ1MTZjMmU5NzBkLi5mMzc2NmQ0
MGRiN2FmNmZiN2NhY2VmODU4M2JlYjZhOGIzZTk4YThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCkBAIC0zNjQsNiArMzY0LDkgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpyZXNl
dEF1dGhvclN0eWxlKCkKIHsKICAgICBtX2F1dGhvclN0eWxlID0gUnVsZVNldDo6Y3JlYXRlKCk7
CiAgICAgbV9hdXRob3JTdHlsZS0+ZGlzYWJsZUF1dG9TaHJpbmtUb0ZpdCgpOworI2lmIEVOQUJM
RShTSEFET1dfRE9NKQorICAgIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLmNsZWFyKCk7
CisjZW5kaWYKIH0KIAogdm9pZCBTdHlsZVJlc29sdmVyOjphcHBlbmRBdXRob3JTdHlsZVNoZWV0
cyh1bnNpZ25lZCBmaXJzdE5ldywgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+
JiBzdHlsZVNoZWV0cykKQEAgLTQ0OCw2ICs0NTEsMjAgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjph
ZGRLZXlmcmFtZVN0eWxlKFBhc3NSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPiBydWxlKQogICAg
IG1fa2V5ZnJhbWVzUnVsZU1hcC5zZXQocy5pbXBsKCksIHJ1bGUpOwogfQogCisKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkU2hhZG93RGlzdHJpYnV0ZWRS
dWxlKFN0eWxlUnVsZSogcnVsZSwgc2l6ZV90IHNlbGVjdG9ySW5kZXgsIENvbnRhaW5lck5vZGUq
IHNjb3BlLCBBZGRSdWxlRmxhZ3MgYWRkUnVsZUZsYWdzKQoreworICAgIGlmIChtX3NoYWRvd0Rp
c3RyaWJ1dGVkUnVsZVNldE1hcC5jb250YWlucyhzY29wZSkpCisgICAgICAgIG1fc2hhZG93RGlz
dHJpYnV0ZWRSdWxlU2V0TWFwLmdldChzY29wZSktPmFkZFJ1bGUocnVsZSwgc2VsZWN0b3JJbmRl
eCwgYWRkUnVsZUZsYWdzKTsKKyAgICBlbHNlIHsKKyAgICAgICAgT3duUHRyPFJ1bGVTZXQ+IHJ1
bGVTZXRGb3JTY29wZSA9IGFkb3B0UHRyKG5ldyBSdWxlU2V0KCkpOworICAgICAgICBydWxlU2V0
Rm9yU2NvcGUtPmFkZFJ1bGUocnVsZSwgc2VsZWN0b3JJbmRleCwgYWRkUnVsZUZsYWdzKTsKKyAg
ICAgICAgbV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAuYWRkKHNjb3BlLCBydWxlU2V0Rm9y
U2NvcGUucmVsZWFzZSgpKTsKKyAgICB9Cit9CisjZW5kaWYKKwogU3R5bGVSZXNvbHZlcjo6flN0
eWxlUmVzb2x2ZXIoKQogewogICAgIG1fZm9udFNlbGVjdG9yLT5jbGVhckRvY3VtZW50KCk7CkBA
IC02NjQsNyArNjgxLDggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxl
cyhSdWxlU2V0KiBydWxlcywgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW4KICAgICBUcmVlU2NvcGUq
IHRyZWVTY29wZSA9IG1fZWxlbWVudC0+dHJlZVNjb3BlKCk7CiAgICAgaWYgKCFNYXRjaGluZ1VB
UnVsZXNTY29wZTo6aXNNYXRjaGluZ1VBUnVsZXMoKQogICAgICAgICAmJiAhdHJlZVNjb3BlLT5h
cHBseUF1dGhvclN0eWxlcygpCi0gICAgICAgICYmICghb3B0aW9ucy5zY29wZSB8fCBvcHRpb25z
LnNjb3BlLT50cmVlU2NvcGUoKSAhPSB0cmVlU2NvcGUpKQorICAgICAgICAmJiAoIW9wdGlvbnMu
c2NvcGUgfHwgb3B0aW9ucy5zY29wZS0+dHJlZVNjb3BlKCkgIT0gdHJlZVNjb3BlKQorICAgICAg
ICAmJiBvcHRpb25zLmNyb3NzQm91bmRhcnkgPT0gU2VsZWN0b3JDaGVja2VyOjpEb2VzTm90Q3Jv
c3NCb3VuZGFyeSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2UgbmVlZCB0byBjb2xsZWN0
IHRoZSBydWxlcyBmb3IgaWQsIGNsYXNzLCB0YWcsIGFuZCBldmVyeXRoaW5nIGVsc2UgaW50byBh
IGJ1ZmZlciBhbmQKQEAgLTc5OSw2ICs4MTcsMTYgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRj
aEhvc3RSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQog
I2VuZGlmCiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6
bWF0Y2hTaGFkb3dEaXN0cmlidXRlZFJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5j
bHVkZUVtcHR5UnVsZXMpCit7CisgICAgZm9yIChTaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAuYmVnaW4oKTsgaXQg
IT0gbV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAuZW5kKCk7ICsraXQpIHsKKyAgICAgICAg
TWF0Y2hPcHRpb25zIG9wdGlvbnMoaW5jbHVkZUVtcHR5UnVsZXMsIGl0LT5rZXksIFNlbGVjdG9y
Q2hlY2tlcjo6Q3Jvc3Nlc0JvdW5kYXJ5KTsKKyAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMo
aXQtPnZhbHVlLmdldCgpLCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJh
bmdlcy5sYXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7CisgICAgfQorfQorI2VuZGlmCisKIHZvaWQg
U3R5bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29s
IGluY2x1ZGVFbXB0eVJ1bGVzKQogewogICAgIG1fbWF0Y2hlZFJ1bGVzLmNsZWFyKCk7CkBAIC04
MTEsNiArODM5LDkgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaEF1dGhvclJ1bGVzKE1hdGNo
UmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMKICAgICBNYXRjaE9wdGlvbnMg
b3B0aW9ucyhpbmNsdWRlRW1wdHlSdWxlcyk7CiAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMobV9h
dXRob3JTdHlsZS5nZXQoKSwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5y
YW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOwogICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVz
Rm9yUmVnaW9uKG1fYXV0aG9yU3R5bGUuZ2V0KCksIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JS
dWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKKyAgICBtYXRjaFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXMocmVzdWx0LCBpbmNs
dWRlRW1wdHlSdWxlcyk7CisjZW5kaWYKICAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMo
cmVzdWx0KTsKIAogICAgIG1hdGNoU2NvcGVkQXV0aG9yUnVsZXMocmVzdWx0LCBpbmNsdWRlRW1w
dHlSdWxlcyk7CkBAIC04NDcsNyArODc4LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0
TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogcnVsZXMsIGkKIAog
ICAgIC8vIEluIHNvbWUgY2FzZXMgd2UgbWF5IGVuZCB1cCBsb29raW5nIHVwIHN0eWxlIGZvciBy
YW5kb20gZWxlbWVudHMgaW4gdGhlIG1pZGRsZSBvZiBhIHJlY3Vyc2l2ZSB0cmVlIHJlc29sdmUu
CiAgICAgLy8gQW5jZXN0b3IgaWRlbnRpZmllciBmaWx0ZXIgd29uJ3QgYmUgdXAtdG8tZGF0ZSBp
biB0aGF0IGNhc2UgYW5kIHdlIGNhbid0IHVzZSB0aGUgZmFzdCBwYXRoLgotICAgIGJvb2wgY2Fu
VXNlRmFzdFJlamVjdCA9IG1fc2VsZWN0b3JGaWx0ZXIucGFyZW50U3RhY2tJc0NvbnNpc3RlbnQo
bV9wYXJlbnROb2RlKTsKKyAgICBib29sIGNhblVzZUZhc3RSZWplY3QgPSBtX3NlbGVjdG9yRmls
dGVyLnBhcmVudFN0YWNrSXNDb25zaXN0ZW50KG1fcGFyZW50Tm9kZSkgJiYgb3B0aW9ucy5jcm9z
c0JvdW5kYXJ5ID09IFNlbGVjdG9yQ2hlY2tlcjo6RG9lc05vdENyb3NzQm91bmRhcnk7CiAKICAg
ICB1bnNpZ25lZCBzaXplID0gcnVsZXMtPnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7CkBAIC04NTcsNyArODg4LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVy
Ojpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogcnVs
ZXMsIGkKIAogICAgICAgICBTdHlsZVJ1bGUqIHJ1bGUgPSBydWxlRGF0YS5ydWxlKCk7CiAgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxNYXRjaFJ1bGUoZG9jdW1lbnQoKSwgcnVsZSwgdGhpcyk7Ci0gICAg
ICAgIGlmIChjaGVja1NlbGVjdG9yKHJ1bGVEYXRhLCBvcHRpb25zLnNjb3BlKSkgeworICAgICAg
ICBpZiAoY2hlY2tTZWxlY3RvcihydWxlRGF0YSwgb3B0aW9ucy5zY29wZSwgb3B0aW9ucy5jcm9z
c0JvdW5kYXJ5KSkgewogICAgICAgICAgICAgLy8gSWYgdGhlIHJ1bGUgaGFzIG5vIHByb3BlcnRp
ZXMgdG8gYXBwbHksIHRoZW4gaWdub3JlIGl0IGluIHRoZSBub24tZGVidWcgbW9kZS4KICAgICAg
ICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMgPSBydWxlLT5wcm9wZXJ0
aWVzKCk7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnRpZXMgfHwgKHByb3BlcnRpZXMtPmlzRW1w
dHkoKSAmJiAhb3B0aW9ucy5pbmNsdWRlRW1wdHlSdWxlcykpIHsKQEAgLTIyMzgsNyArMjI2OSw3
IEBAIFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IFN0eWxlUmVzb2x2ZXI6OnBzZXVkb1N0eWxlUnVs
ZXNGb3JFbGVtZW50KEVsZW1lbnQqIGUsIFBzCiAgICAgcmV0dXJuIG1fcnVsZUxpc3QucmVsZWFz
ZSgpOwogfQogCi1pbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpjaGVja1NlbGVjdG9yKGNvbnN0
IFJ1bGVEYXRhJiBydWxlRGF0YSwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUpCitpbmxpbmUg
Ym9vbCBTdHlsZVJlc29sdmVyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0
YSwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUsIFNlbGVjdG9yQ2hlY2tlcjo6Q3Jvc3NCb3Vu
ZGFyeSBjcm9zc0JvdW5kYXJ5KQogewogICAgIG1fZHluYW1pY1BzZXVkbyA9IE5PUFNFVURPOwog
CkBAIC0yMjYzLDYgKzIyOTQsNyBAQCBpbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpjaGVja1Nl
bGVjdG9yKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgY29uc3QgQ29udGFpbgogICAgIGNvbnRl
eHQuZWxlbWVudFN0eWxlID0gc3R5bGUoKTsKICAgICBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHls
ZSA9IG1fcGFyZW50Tm9kZSA/IG1fcGFyZW50Tm9kZS0+cmVuZGVyU3R5bGUoKSA6IDA7CiAgICAg
Y29udGV4dC5zY29wZSA9IHNjb3BlOworICAgIGNvbnRleHQuY3Jvc3NCb3VuZGFyeSA9IGNyb3Nz
Qm91bmRhcnk7CiAgICAgY29udGV4dC5wc2V1ZG9TdHlsZSA9IG1fcHNldWRvU3R5bGU7CiAgICAg
U2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIG1hdGNoID0gbV9zZWxlY3RvckNoZWNrZXIu
Y2hlY2tTZWxlY3Rvcihjb250ZXh0LCBtX2R5bmFtaWNQc2V1ZG8pOwogICAgIGlmIChtYXRjaCAh
PSBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2hlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5oCmluZGV4IDViZDI5NDBlNTdmMjk4MjFmZTYxM2VhMGU4YTM5YmZkZmI4OGQwN2QuLmJi
M2I3MmI1MzgzZDE0MzNmOTZlOTc1ZTg4NjBkYmZiZDRjNjNlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk1lZGlhUXVlcnlFeHAu
aCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJ1bGVGZWF0dXJlLmgiCisj
aW5jbHVkZSAiUnVsZVNldC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIK
ICNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXIuaCIKICNpbmNsdWRlICJTZWxlY3RvckZpbHRlci5o
IgpAQCAtNzYsNyArNzcsNiBAQCBjbGFzcyBNZWRpYVF1ZXJ5RXZhbHVhdG9yOwogY2xhc3MgTm9k
ZTsKIGNsYXNzIFJlbmRlclJlZ2lvbjsKIGNsYXNzIFJ1bGVEYXRhOwotY2xhc3MgUnVsZVNldDsK
IGNsYXNzIFNldHRpbmdzOwogY2xhc3MgU3RhdGljQ1NTUnVsZUxpc3Q7CiBjbGFzcyBTdHlsZUJ1
aWxkZXI7CkBAIC0yOTksNiArMjk5LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbG9hZFBlbmRp
bmdSZXNvdXJjZXMoKTsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIHZvaWQgYWRkU2hh
ZG93RGlzdHJpYnV0ZWRSdWxlKFN0eWxlUnVsZSosIHNpemVfdCBzZWxlY3RvckluZGV4LCBDb250
YWluZXJOb2RlKiBzY29wZSwgQWRkUnVsZUZsYWdzKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IC8vIFRoaXMgZnVuY3Rpb24gZml4ZXMgdXAgdGhlIGRlZmF1bHQgZm9udCBzaXplIGlmIGl0IGRl
dGVjdHMgdGhhdCB0aGUgY3VycmVudCBnZW5lcmljIGZvbnQgZmFtaWx5IGhhcyBjaGFuZ2VkLiAt
ZHdoCiAgICAgdm9pZCBjaGVja0ZvckdlbmVyaWNGYW1pbHlDaGFuZ2UoUmVuZGVyU3R5bGUqLCBS
ZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOwpAQCAtMzQzLDkgKzM0NywxMSBAQCBwcml2YXRlOgog
ICAgIH07CiAKICAgICBzdHJ1Y3QgTWF0Y2hPcHRpb25zIHsKLSAgICAgICAgTWF0Y2hPcHRpb25z
KGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlID0gMCkg
OiBzY29wZShzY29wZSksIGluY2x1ZGVFbXB0eVJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKSB7IH0K
KyAgICAgICAgTWF0Y2hPcHRpb25zKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIGNvbnN0IENvbnRh
aW5lck5vZGUqIHNjb3BlID0gMCwgU2VsZWN0b3JDaGVja2VyOjpDcm9zc0JvdW5kYXJ5IGNyb3Nz
Qm91bmRhcnkgPSBTZWxlY3RvckNoZWNrZXI6OkRvZXNOb3RDcm9zc0JvdW5kYXJ5KQorICAgICAg
ICAgICAgOiBzY29wZShzY29wZSksIGluY2x1ZGVFbXB0eVJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVz
KSwgY3Jvc3NCb3VuZGFyeShjcm9zc0JvdW5kYXJ5KSB7IH0KICAgICAgICAgY29uc3QgQ29udGFp
bmVyTm9kZSogc2NvcGU7CiAgICAgICAgIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXM7CisgICAgICAg
IFNlbGVjdG9yQ2hlY2tlcjo6Q3Jvc3NCb3VuZGFyeSBjcm9zc0JvdW5kYXJ5OwogICAgIH07CiAK
ICAgICBzdGF0aWMgdm9pZCBhZGRNYXRjaGVkUHJvcGVydGllcyhNYXRjaFJlc3VsdCYsIGNvbnN0
IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMsIFN0eWxlUnVsZSogPSAwLCB1bnNpZ25lZCBs
aW5rTWF0Y2hUeXBlID0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaEFsbCwgYm9vbCBpblJlZ2lvblJ1
bGUgPSBmYWxzZSk7CkBAIC0zNTgsNiArMzY0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXRj
aFVzZXJSdWxlcyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIHZv
aWQgbWF0Y2hTY29wZWRBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5
UnVsZXMpOwogICAgIHZvaWQgbWF0Y2hIb3N0UnVsZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1
ZGVFbXB0eVJ1bGVzKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICB2b2lkIG1hdGNoU2hh
ZG93RGlzdHJpYnV0ZWRSdWxlcyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMp
OworI2VuZGlmCisKICAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzKFJ1bGVTZXQqLCBpbnQm
IGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYp
OwogICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24oUnVsZVNldCosIGludCYg
Zmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJik7
CiAgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1bGVE
YXRhPiosIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgY29uc3QgTWF0
Y2hPcHRpb25zJik7CkBAIC0zNjUsNyArMzc1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNvcnRN
YXRjaGVkUnVsZXMoKTsKICAgICB2b2lkIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhNYXRj
aFJlc3VsdCYpOwogCi0gICAgYm9vbCBjaGVja1NlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJiwgY29u
c3QgQ29udGFpbmVyTm9kZSogc2NvcGUpOworICAgIGJvb2wgY2hlY2tTZWxlY3Rvcihjb25zdCBS
dWxlRGF0YSYsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlLCBTZWxlY3RvckNoZWNrZXI6OkNy
b3NzQm91bmRhcnkgPSBTZWxlY3RvckNoZWNrZXI6OkRvZXNOb3RDcm9zc0JvdW5kYXJ5KTsKICAg
ICBib29sIGNoZWNrUmVnaW9uU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHJlZ2lvblNlbGVjdG9yLCBF
bGVtZW50KiByZWdpb25FbGVtZW50KTsKICAgICB2b2lkIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMo
Y29uc3QgTWF0Y2hSZXN1bHQmLCBjb25zdCBFbGVtZW50Kik7CiAgICAgZW51bSBTdHlsZUFwcGxp
Y2F0aW9uUGFzcyB7CkBAIC0zOTYsNiArNDA2LDExIEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFJ1
bGVTZXQ+IG1fYXV0aG9yU3R5bGU7CiAgICAgT3duUHRyPFJ1bGVTZXQ+IG1fdXNlclN0eWxlOwog
CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IENvbnRh
aW5lck5vZGUqLCBPd25QdHI8UnVsZVNldD4gPiBTaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXA7
CisgICAgU2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxl
U2V0TWFwOworI2VuZGlmCisKICAgICBSdWxlRmVhdHVyZVNldCBtX2ZlYXR1cmVzOwogICAgIE93
blB0cjxSdWxlU2V0PiBtX3NpYmxpbmdSdWxlU2V0OwogICAgIE93blB0cjxSdWxlU2V0PiBtX3Vu
Y29tbW9uQXR0cmlidXRlUnVsZVNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNl
cnRpb25Qb2ludC5oCmluZGV4IDIwY2U3N2QwYTM3OWVmY2MyNDQ4YTY1ODk5ZDZjNThmMzdmOWM5
YjguLjkxNjJiN2ZkYTAzNDdlMmM5NGQxNzBkZWZlZTdhNmFmMDdmZTFjYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtMTU0LDYgKzE1NCwyOSBA
QCBpbmxpbmUgRWxlbWVudFNoYWRvdyogc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY29u
c3QgTm9kZSogbm9kZSkKIAogSW5zZXJ0aW9uUG9pbnQqIHJlc29sdmVSZXByb2plY3Rpb24oY29u
c3QgTm9kZSopOwogCitpbmxpbmUgdm9pZCBjb2xsZWN0QWxsSW5zZXJ0aW9uUG9pbnRzKGNvbnN0
IE5vZGUqIHByb2plY3RlZE5vZGUsIFZlY3RvcjxJbnNlcnRpb25Qb2ludCosIDg+JiByZXN1bHRz
KQoreworICAgIGNvbnN0IE5vZGUqIGN1cnJlbnQgPSBwcm9qZWN0ZWROb2RlOworICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBzaGFkb3dPZlBh
cmVudEZvckRpc3RyaWJ1dGlvbihjdXJyZW50KSkgeworICAgICAgICAgICAgc2hhZG93LT5lbnN1
cmVEaXN0cmlidXRpb24oKTsKKyAgICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0
ZWRUbyA9IHNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5maW5kSW5zZXJ0aW9uUG9pbnRGb3IocHJvamVj
dGVkTm9kZSkpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAg
ICAgICAgICAgICByZXN1bHRzLmFwcGVuZChpbnNlcnRlZFRvKTsKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoTm9kZSogcGFy
ZW50ID0gcGFyZW50Tm9kZUZvckRpc3RyaWJ1dGlvbihjdXJyZW50KSkgeworICAgICAgICAgICAg
aWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRlZFRvID0gcGFyZW50LT5pc1NoYWRvd1Jvb3QoKSA/
IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWduZWRUbyh0b1NoYWRvd1Jvb3QocGFyZW50
KSkgOiAwKSB7CisgICAgICAgICAgICAgICAgY3VycmVudCA9IGluc2VydGVkVG87CisgICAgICAg
ICAgICAgICAgcmVzdWx0cy5hcHBlbmQoaW5zZXJ0ZWRUbyk7CisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0K
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSW5zZXJ0aW9uUG9pbnRf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
Q29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVD
b25zdGFudHMuaAppbmRleCBmZjAwYzk1MDI3OGMzMzIwMWMwYWY5MmQ4YWI2NTk3ZThlYzk3ZmY1
Li43NjRmMWVjZDE3MTUxNjc3MjVmYzM3NGFmY2ZjNDg0NmM0MmNjMWZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaApA
QCAtNzAsNyArNzAsNyBAQCBlbnVtIFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9w
ZXJ0eSB7CiAvLyBTdGF0aWMgcHNldWRvIHN0eWxlcy4gRHluYW1pYyBvbmVzIGFyZSBwcm9kdWNl
ZCBvbiB0aGUgZmx5LgogZW51bSBQc2V1ZG9JZCB7CiAgICAgLy8gVGhlIG9yZGVyIG11c3QgYmUg
Tk9QIElELCBwdWJsaWMgSURzLCBhbmQgdGhlbiBpbnRlcm5hbCBJRHMuCi0gICAgTk9QU0VVRE8s
IEZJUlNUX0xJTkUsIEZJUlNUX0xFVFRFUiwgQkVGT1JFLCBBRlRFUiwgU0VMRUNUSU9OLCBGSVJT
VF9MSU5FX0lOSEVSSVRFRCwgU0NST0xMQkFSLAorICAgIE5PUFNFVURPLCBGSVJTVF9MSU5FLCBG
SVJTVF9MRVRURVIsIEJFRk9SRSwgQUZURVIsIERJU1RSSUJVVEVELCBTRUxFQ1RJT04sIEZJUlNU
X0xJTkVfSU5IRVJJVEVELCBTQ1JPTExCQVIsCiAgICAgLy8gSW50ZXJuYWwgSURzIGZvbGxvdzoK
ICAgICBTQ1JPTExCQVJfVEhVTUIsIFNDUk9MTEJBUl9CVVRUT04sIFNDUk9MTEJBUl9UUkFDSywg
U0NST0xMQkFSX1RSQUNLX1BJRUNFLCBTQ1JPTExCQVJfQ09STkVSLCBSRVNJWkVSLAogICAgIElO
UFVUX0xJU1RfQlVUVE9OLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI5ZWVlMDg0MmMwMTdkMTkzZTZlNTdiMmZhY2RjMWIz
MjhhYWQ1NzcuLmRkYjljNDczYmFjNDhjZDNlODE2MWUzM2M0ZTJhYjhkMjc1N2VlMDkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMyBAQAorMjAxMy0wMS0wNiAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW1NoYWRvdyBET01dIEltcGxlbWVudHMgYSAnOjpkaXN0cmlidXRl
ZCgpJyBwc2V1ZG8gZWxlbWVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgyMTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
ZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
Zm9yLXNoYWRvdy1lbGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwtZXhwZWN0ZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LW1hdGNoLWFsbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJp
YnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtZGVzY2VuZGFudC1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
bWF0Y2gtZGVzY2VuZGFudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LW5vLW1hdGNoLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uby1tYXRjaC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24uaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LXNjb3BlZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVj
dG9yLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWlu
LXNlbGVjdG9yLWxpc3QtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRv
LWVsZW1lbnQtd2l0aC1hbnktZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC5o
dG1sOiBBZGRlZC4KKwogMjAxMy0wMS0wOSAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgQXNzZXJ0IHRyaWdnZXJlZCBpbiBTZWxlY3RvckNoZWNrZXI6
OmNoZWNrT25lU2VsZWN0b3Igd2hlbiBzY3JvbGxiYXIgKGUuZy4gOmhvcml6b250YWwpIHNlbGVj
dG9yIGlzIHNwZWNpZmllZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjRjMjZlMmI1NmM0YzZhN2M3MGM2Y2ZkNThhMjI3ZjhlMGY0NDY0ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3Qi
PgorICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50LWV4cGVjdGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtZm9yLXNoYWRvdy1lbGVtZW50LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRjMjZlMmI1
NmM0YzZhN2M3MGM2Y2ZkNThhMjI3ZjhlMGY0NDY0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hh
ZG93LWVsZW1lbnQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDkgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4K
KyAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgIDwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFk
b3ctZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkZGMzN2M1YzZjNDg4NjdkZjVjYjgxNDcyOGEz
NjlmZDhkMjNlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50Lmh0bWwKQEAg
LTAsMCArMSwyMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdz
aGFkb3c6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3Zh
ciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3gu
YXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAg
ICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoJ2dyZWVuJykpKSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAg
ICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdz
aGFkb3cnKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNo
LWFsbC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlh
NjBiNzJlMGRlOTE3NzYyYjJhMmE0YzVlYzNlZjlmNTY2ZWI0OTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
bWF0Y2gtYWxsLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgor
ICAgIDxkaXY+CisgICAgICBub3JtYWwKKyAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+
Z3JlZW48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgbm9ybWFsCisgICAgICA8
ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY5ZjJmZjJiNDEzN2EwYzVhZWVkYzg1ZTg5MTJmMmVjMzRlYjJmYmIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ct
ZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9k
aXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
c3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3Ry
aWJ1dGVkKC5oZWxsbykgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAg
IGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNo
YWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdu
b3JtYWwnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFz
cyc6ICdoZWxsbyd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2
Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgn
bm9ybWFsJyksCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xh
c3MnOiAnaGVsbG8nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtZGVzY2Vu
ZGFudC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjMTg3ODU2ZmVlMThmNGU0MjdmMjFhNzcx
YjMyZDExMzE4ZjUzYjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtZGVzY2VuZGFudC1leHBlY3Rl
ZC5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4K
KzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8cD4KKyAgICAgIDxk
aXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgICA8L3A+CisgIDwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWRlc2NlbmRhbnQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1k
ZXNjZW5kYW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmU0MDQzZTg1NWE1MDhkNDhiNWEwNjAwZTBmNjg2
Njk4ODMwMDI4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50Lmh0bWwKQEAgLTAs
MCArMSwyMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250
ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdikgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIg
c2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFw
cGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgIGNyZWF0
ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdw
Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdn
cmVlbicpKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3Rl
ZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LW5lc3RlZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1MTgzNDQy
YTA3NmM3ZjgxYTljNTQyMTMxZTc5ZmI3NzZmMDExY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVk
LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
Kzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYg
aWQ9Im5lc3RlZC1ob3N0Ij4KKyAgICAgIHRleHQxCisgICAgICA8ZGl2PgorICAgICAgICB0ZXh0
MgorICAgICAgICA8ZGl2PgorICAgICAgICAgIHRleHQzCisgICAgICAgICAgPGRpdiBzdHlsZT0i
Y29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgICAgICAgIDxkaXY+bm9ybWFsPC9kaXY+Cisg
ICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzE2N2EzZWZlY2EwZjQwOGE2ZDM4NzU2OTI5N2VmZTYyMzU4ODBkNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1
ZG8tZWxlbWVudC1uZXN0ZWQuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3Jp
cHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwor
c2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2RpdiBjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVk
KGRpdiBjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdi5ncmVlbikpIHsgY29sb3I6IGdy
ZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJv
eCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAn
aG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ25lc3RlZC1ob3N0J30sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCd0ZXh0MScpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3RleHQyJyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7
J3NlbGVjdCc6ICdkaXYnfSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2RpdicsIHsnY2xhc3MnOiAnZ3JlZW4nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3RleHQzJyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHt9KSkpKSwK
KyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2dyZWVuJ30sCisgICAg
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSksCisg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uby1tYXRjaC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5vLW1hdGNoLWV4
cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA1ZmVmZjc1Yzc5YWVkZTViZjhlNDliYmVkMGI3MTU1
ZGNlNjgwZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uby1tYXRjaC1leHBlY3RlZC5odG1sCkBAIC0wLDAg
KzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRi
b3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8cD5ub3JtYWw8L3A+CisgICAgPGRpdj4KKyAg
ICAgIDxkaXY+bm9ybWFsPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LW5vLW1hdGNoLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbm8tbWF0Y2guaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
YWUzOWNlYzM0NzU5MzdhMWVkNTNkMTU4MmU2ZmUzYzhiMjAxZDYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LW5vLW1hdGNoLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFy
IHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0
eWxlLmlubmVySFRNTCA9ICd0aGlzLWRvZXMtbm90LW1hdGNoOjotd2Via2l0LWRpc3RyaWJ1dGVk
KGRpdikgeyBjb2xvcjogZ3JlZW47IH0nOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ3A6Oi13
ZWJraXQtZGlzdHJpYnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CitzaGFkb3dTdHlsZS5p
bm5lckhUTUwgPSAnZGl2Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdikgeyBjb2xvcjogZ3JlZW47
IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7
CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0
J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBz
aGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgncCcsIHt9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpKSwK
KyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpKSwKKyAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QtY2hpbGQnfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVj
dGlvbi1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2OWM5MTI3ZGU1ZTcwM2I3YTFhNWM5MzY5
NGVhN2NkMGIxMjQ4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0
bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRp
diBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYgaWQ9Imhvc3QyIj4K
KyAgICAgIDxkaXYgc3R5bGU9J2NvbG9yOiBncmVlbic+CisgICAgICAgIGdyZWVuCisgICAgICA8
L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
cmVwcm9qZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTczNWZhNzA5
ZTg2MWIwZGI0YWU0Y2M0NjRmZjdhZmExYTE5ZTBjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2pl
Y3Rpb24uaHRtbApAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hh
ZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUu
aW5uZXJIVE1MID0gJ2NvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoLmZvbykgeyBjb2xvcjog
Z3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5k
Ym94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6
ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdDInfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnLmZvbyd9KSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2NsYXNzJzogJ2Zvbyd9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC1zY29wZWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQtZXhwZWN0ZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43NDhkOWUyZGUzZTZmZTRiZmQ4OTgwYjYzZDAzOWJjNTRkODgzMWEyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LXNjb3BlZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlk
PSJob3N0Ij4KKyAgICA8ZGl2Pm5vcm1hbDwvZGl2PgorICAgIDxkaXY+CisgICAgICA8ZGl2IHN0
eWxlPSdjb2xvcjogZ3JlZW4nPmdyZWVuPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNjb3BlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNjb3BlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRhYTcxYWJjNzkwOTYzMzAwYTMyNDdlODU2ODUwYTgzNjEzNTg4NWMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtc2NvcGVkLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0Pgor
dmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRv
d1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdikgeyBj
b2xvcjogZ3JlZW47IH0nOworc2hhZG93U3R5bGUuc2V0QXR0cmlidXRlKCdzY29wZWQnLCB0cnVl
KTsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOwor
c2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9
LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnI2hvc3QtY2hpbGQxJ30pLAorICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcjaG9zdC1jaGlsZDInfSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUpKSwKKyAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QtY2hpbGQxJ30sCisgICAgICAgICAgICAgICAgICAg
ICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpLAorICAgICAgICAgICAgICBj
cmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdC1jaGlsZDInfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSkpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LXN1cHBvcnQtc2VsZWN0b3ItZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yM2RlZGUxMzNiODYy
ZGQxNGM5MmU2MDVjNGExYmVkMjhlMzdhZGFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2Vs
ZWN0b3ItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAg
PGRpdj4KKyAgICAgIG5vcm1hbAorICAgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVl
bjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXY+CisgICAgICBub3JtYWwKKyAgICAgIDxkaXY+
bm9ybWFsPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1l
bGVtZW50LXN1cHBvcnQtc2VsZWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2ZkYmQ4NmVmNzgyYjE0MWNmZjU5YmEzYzE2NWJhNTdlYjNlNzg1ZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9t
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+
Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5
bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1
dGVkKGRpdi5oZWxsbyBkaXYpIHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgK
KyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVh
dGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAg
ICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydjbGFzcyc6ICdoZWxsbyd9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJ25vcm1hbCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgnbm9ybWFsJykpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1s
aXN0LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI4MjUzZTRkYWI3NDA1NjU4MzhkODQyNTBi
YmE5YmQ5MDRkOTkyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QtZXhw
ZWN0ZWQuaHRtbApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJv
ZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdiBzdHls
ZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgIDxwPm5vcm1hbDwvcD4KKyAgICA8cCBz
dHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvcD4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1s
aXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA2ZDU0OGY2YmEzOTFjYjc0YTgyMzE2ZWRiOTZkYzVkMmU3
MWYzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QuaHRtbApAQCAtMCww
ICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRl
bnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2KSwgcCB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3Zh
ciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3gu
YXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAg
ICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxl
LAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JyksCisgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ3AnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJ2dyZWVuJykpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ3AnLCB7J2NsYXNzJzogJ2hl
bGxvJ30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgn
bm9ybWFsJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC13aXRo
LWFueS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTcz
Nzk5NDNkZjY0ODkwMzI0ZGMwMmQ5ZGUzMDE4NTFhMTExODY1MQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC13
aXRoLWFueS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2PgorICAgIDxkaXY+bm9y
bWFsPC9kaXY+CisgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICA8
L2Rpdj4KKyAgPGRpdj4KKyAgICA8ZGl2Pm5vcm1hbDwvZGl2PgorICAgIDxkaXYgc3R5bGU9ImNv
bG9yOiByZWQiPnJlZDwvZGl2PgorICA8L2Rpdj4KKyAgPGRpdj4KKyAgICA8ZGl2Pm5vcm1hbDwv
ZGl2PgorICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBibHVlIj5ibHVlPC9kaXY+CisgIDwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtd2l0aC1hbnkuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zY2EyMzVhNDNkYjNmN2IzYjc5YjlhZTRjYzk3YTgzN2U4YzZhOGU3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LXdpdGgtYW55Lmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8
c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxl
Jyk7CitzaGFkb3dTdHlsZTEuaW5uZXJIVE1MID0gJyo6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2
KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzaGFkb3dTdHlsZTIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUyLmlubmVySFRNTCA9ICdjb250ZW50Ojot
d2Via2l0LWRpc3RyaWJ1dGVkKCopIHsgY29sb3I6IHJlZDsgfSc7CisKK3ZhciBzaGFkb3dTdHls
ZTMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUzLmlubmVy
SFRNTCA9ICcqOjotd2Via2l0LWRpc3RyaWJ1dGVkKCopIHsgY29sb3I6IGJsdWU7IH0nOworCit2
YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94
LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgIGNy
ZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZTEsCisgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSksCisgICAgICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2NvbnRlbnQnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
e30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3Jl
ZW4nKSkpKTsKKworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHt9
LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hh
ZG93U3R5bGUyLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykp
LAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoJ3JlZCcpKSkpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVh
dGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAg
ICAgICAgICAgICAgc2hhZG93U3R5bGUzLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdk
aXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgnbm9ybWFsJykpLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jykp
LAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2JsdWUnKSkpKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjQzY2ExYzhj
OTRmMzI2OGI2NGY3MGVkZDIxMjZiMDdiMGRmMDFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50Lmh0bWwKQEAg
LTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdj
b250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdikgeyBjb2xvcjogZ3JlZW47IH0nOworCit2
YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94
LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgIGNy
ZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCdncmVlbicpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182079</attachid>
            <date>2013-01-10 00:24:31 -0800</date>
            <delta_ts>2013-01-11 00:37:36 -0800</delta_ts>
            <desc>Remove DISTRIBUTED from RenderStyleConstants.h</desc>
            <filename>bug-82169-20130110172134.patch</filename>
            <type>text/plain</type>
            <size>60653</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlZTBmODNhODUyNmNjZTY3MDE0OWNiNjJhNjY1M2Y1N2UzYTM4Y2E1Li5h
ZmQwN2E4M2IwZjhhMTQ3Yjc2MTg5ZjgyMTIyYTQ2M2NhMDIxNjBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMyIEBACisyMDEzLTAxLTA2ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbU2hhZG93IERPTV0gSW1wbGVtZW50cyBhICc6OmRpc3RyaWJ1dGVkKCkn
IHBzZXVkbyBlbGVtZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODIxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnRzIGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvIGVsZW1lbnQuCisg
ICAgICAgIFNlZSB0aGUgU2hhZG93IERPTSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgZGV0YWlsLgor
CisgICAgICAgICMgRklYTUU6IFVwZGF0ZSBVUkwgYWZ0ZXIgdGhlIHNwZWMgaXMgdXBkYXRlZC4K
KyAgICAgICAgaHR0cDovL2R2Y3MudzMub3JnL2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlw
L3NwZWMvc2hhZG93L2luZGV4Lmh0bWwjc2VsZWN0aW5nLW5vZGVzLWRpc3RyaWJ1dGVkLXRvLWlu
c2VydGlvbi1wb2ludHMKKworICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB3ZSBhcmUgZ2l2
ZW4gdGhlIGZvbGxvd2luZyBET00gdHJlZSBhbmQgc2hhZG93IHRyZWU6CisKKyAgICAgICAgLSA8
QT4KKyAgICAgICAgICAtIDxCPgorICAgICAgICAgIC0gPEM+CisKKyAgICAgICAgW0EncyBTaGFk
b3dSb290XQorICAgICAgICAgIDxDPgorICAgICAgICAgIC0gPHN0eWxlPgorICAgICAgICAgICAg
ICBEIGNvbnRlbnQ6OmRpc3RyaWJ1dGVkKEIpIHsgY29sb3I6IGdyZWVuOyB9CisgICAgICAgICAg
LSA8RD4KKyAgICAgICAgICAgIC0gPGNvbnRlbnQ+CisKKyAgICAgICAgSW4gdGhpcyBjYXNlLCB0
aGUgc3R5bGUgcnVsZSBkZWZpbmVkIGluIHNoYWRvdyB0cmVlIG1hdGNoZXMgbm9kZSAnQicuCisK
KyAgICAgICAgQSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxlbWVudCBjYW4gbm90IGJlIGEg
cHNldWRvIGNsYXNzIHNpbmNlCisgICAgICAgIGFuIGludGVyc2VjdGlvbiBiZXR3ZWVuIG1hdGNo
ZWRfZWxlbWVudHMoc29tZV9zZWxlY3RvcikgYW5kCisgICAgICAgIG1hdGNoZWRfZWxlbWVudHMo
c29tZV9zZWxlY3Rvcjo6ZGlzdHJpYnV0ZWQoLi4uKSkgaXMgYWx3YXlzIGFuCisgICAgICAgIGVt
cHR5IHNldC4KKworICAgICAgICBBICc6OmRpc3RyaWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50IGlz
IHRoZSBmaXJzdC1ldmVyICpmdW5jdGlvbmFsKgorICAgICAgICBwc2V1ZG8gZWxlbWVudCB3aGlj
aCB0YWtlcyBwYXJhbWV0ZXIuICBJdCdzIGFsc28gdGhlIGZpcnN0IENTUworICAgICAgICBydWxl
IHdoaWNoIGNyb3NzZXMgdGhlIHNoYWRvdyBib3VuZGFyeSBmcm9tIGEgc2hhZG93IHRyZWUgdG8g
dGhlCisgICAgICAgIHRyZWUgb2YgaXRzIHNoYWRvdyBob3N0LiBUaGF0IG1lYW5zIGEgJzo6ZGlz
dHJpYnV0ZWQoKScgcHNldWRvCisgICAgICAgIGVsZW1lbnQgaXMgZGVmaW5lZCBpbiBzaGFkb3cg
dHJlZSwgYnV0IHRoZSBub2RlIHdoaWNoIGlzIG1hdGNoZWQKKyAgICAgICAgaW4gdGhlIHJ1bGUg
aXMgb3V0c2lkZSBvZiB0aGUgc2hhZG93IHRyZWUuIFRoZXJlZm9yZSwgd2UgY2Fubm90CisgICAg
ICAgIHByZWRpY3Qgd2hlcmUgdGhlIG1hdGNoZWQgbm9kZSB3aWxsIGJlIGJlZm9yZWhhbmQuICBD
dXJyZW50IENTUworICAgICAgICBpbXBsZW1lbnRhdGlvbiBhc3N1bWVzIHRoZSBmaW5hbCB0YXJn
ZXQgaXMgYXBwbGllZCBpbiB0aGUgY3VycmVudAorICAgICAgICBzY29wZS4KKworICAgICAgICBU
byBvdmVyY29tZSB0aGlzIGlzc3VlLCBTdHlsZVJlc29sdmVyIG5vdyBoYXMKKyAgICAgICAgU2hh
ZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLiAgQSBzdHlsZSBydWxlIHdpbGwgYmUgc3RvcmVkIGlu
IHRoaXMKKyAgICAgICAgUnVsZVNldE1hcCBpZiB0aGUgcnVsZSBpbmNsdWRlcyBhICc6OmRpc3Ry
aWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50LgorICAgICAgICBUaGlzIFJ1bGVTZXRNYXAgYWxzbyBr
ZWVwcyB0cmFjayBvZiBlYWNoIFJ1bGVTZXQKKyAgICAgICAgYnkgbWFwcGluZyBpdCB3aXRoIGEg
c2NvcGUgd2hlcmUgdGhlIHJ1bGUgd2FzIG9yaWdpbmFsbHkKKyAgICAgICAgZGVmaW5lZC4gSW4g
dGhlIGV4YW1wbGUsIHRoZSBzY29wZSBpcyAnQycuICBUaGUgc2NvcGUgaXMgdXNlZCB0bworICAg
ICAgICBjaGVjayB3aGV0aGVyIHRoZSBsZWZ0LW1vc3QgbWF0Y2hlZCBlbGVtZW50IChpbiB0aGUg
ZXhhbXBsZSwgaXQncworICAgICAgICBhIG5vZGUgJ0QnKSBleGlzdHMgaW4gdGhlIHNjb3BlLgor
CisgICAgICAgIEludGVybmFsbHksIGEgJzo6ZGlzdHJpYnV0ZWQnIHBzZXVkbyBlbGVtZW50IGlz
IHJlcHJlc2VudGVkIGJ5IGEKKyAgICAgICAgbmV3bHkgaW50cm9kdWNlZCAnU2hhZG93RGlzdHJp
YnV0ZWQnIHJlbGF0aW9uLiAgVGhhdCBtYWtlcyBhbgorICAgICAgICBpbXBsZW1lbnRhdGlvbiBv
ZiBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoKSBtdWNoIHNpbXBsZXIuCisgICAgICAg
IEEgdHJhbnNmb3JtYXRpb24gZnJvbSBhIGRpc3RyaWJ1dGVkIHBzZXVkbyBlbGVtZW50IHRvIGEK
KyAgICAgICAgU2hhZG93RGlzdHJpYnV0ZWQgaXMgZG9uZSBpbiBwYXJzaW5nIHN0YWdlIG9mIENT
Uy4KKworICAgICAgICBTaW5jZSAnOjpkaXN0cmlidXRlZCgpJyBpcyBhbiBleHBlcmltZW50YWwg
ZmVhdHVyZSwgaXQncyBhY3R1YWxseQorICAgICAgICBwcmVmaXhlZCB3aXRoICctd2Via2l0LScg
YW5kIGd1YXJkZWQgYnkgU0hBRE9XX0RPTSBmbGFnLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50Lmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC1tYXRjaC1hbGwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWRlc2NlbmRhbnQuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtbm8tbWF0Y2guaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBw
b3J0LXNlbGVjdG9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOgorICAgICAgICAq
IGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpkZXRlY3RE
YXNoVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpyZXdyaXRlU3BlY2lmaWVy
c1dpdGhFbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnJld3JpdGVT
cGVjaWZpZXJzKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgICogY3NzL0NT
U1BhcnNlclZhbHVlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6
Q1NTUGFyc2VyU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuaDoKKyAg
ICAgICAgKENTU1BhcnNlclNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNl
bGVjdG9yOjpmdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyU2VsZWN0b3I6OnNldEZ1bmN0aW9uQXJndW1lbnRTZWxlY3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6aXNEaXN0cmlidXRlZFBzZXVkb0VsZW1lbnQpOgor
ICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxl
Y3Rvcjo6cHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6bmFtZVRvUHNldWRvVHlwZU1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCk6CisgICAgICAgICogY3Nz
L0NTU1NlbGVjdG9yLmg6CisgICAgICAgIChDU1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjppc0Rpc3RyaWJ1dGVkUHNldWRvRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6aXNTaGFkb3dEaXN0cmlidXRl
ZCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFNlbGVjdG9ySGFzU2hhZG93RGlzdHJpYnV0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0b3JIYXNTaGFkb3dEaXN0cmlidXRlZDo6b3BlcmF0b3IoKSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTZWxlY3Rvckxpc3Q6Omhhc1NoYWRvd0Rpc3RyaWJ1dGVkQXQpOgorICAg
ICAgICAqIGNzcy9DU1NTZWxlY3Rvckxpc3QuaDoKKyAgICAgICAgKENTU1NlbGVjdG9yTGlzdCk6
CisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6
YWRkUnVsZXNGcm9tU2hlZXQpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKToKKyAgICAg
ICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNo
ZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0OjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCk6
CisgICAgICAgIChTZWxlY3RvckNoZWNraW5nQ29udGV4dCk6CisgICAgICAgICogY3NzL1NlbGVj
dG9yRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0
SWRlbnRpZmllckhhc2hlcyk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cmVzZXRBdXRob3JTdHlsZSk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkZFNoYWRvd0Rp
c3RyaWJ1dGVkUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0
TWF0Y2hpbmdSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRjaFNo
YWRvd0Rpc3RyaWJ1dGVkUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
bWF0Y2hBdXRob3JSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xs
ZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6Y2hlY2tTZWxlY3Rvcik6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAg
ICAgKFN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6TWF0
Y2hPcHRpb25zOjpNYXRjaE9wdGlvbnMpOgorICAgICAgICAoTWF0Y2hPcHRpb25zKToKKyAgICAg
ICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6Y29s
bGVjdEFsbEluc2VydGlvblBvaW50cyk6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMy0wMS0w
OSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBS
ZW1vdmUgZGV2aWNlU2NhbGVGYWN0b3IgYXJndW1lbnQgaW4gY29tcHV0ZU1pbmltdW1TY2FsZUZh
Y3RvckZvckNvbnRlbnRDb250YWluZWQoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCmlu
ZGV4IDFmZDQ1ZTQ5NWNlOTZhNWFhNDVjNjRiMWRlOWJiZjYwYzBmZTc0YzMuLjdhOGM4MjY3ODM3
YmVmYjNhMDkwY2JhYjY5NGM4NzdkNjE2MDYyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcmFtbWFyLnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIu
eS5pbgpAQCAtNjEsNyArNjEsMTEgQEAgc3RhdGljIGlubGluZSBpbnQgY3NzeXllcnJvcih2b2lk
KiwgY29uc3QgY2hhciopCiAKICV9CiAKKyNpZiBFTkFCTEVfU0hBRE9XX0RPTQorJWV4cGVjdCA2
NgorI2Vsc2UKICVleHBlY3QgNjUKKyNlbmRpZgogCiAlbm9uYXNzb2MgTE9XRVNUX1BSRUMKIApA
QCAtMTc3LDYgKzE4MSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGNzc3l5ZXJyb3Iodm9pZCosIGNv
bnN0IGNoYXIqKQogJXRva2VuIDxzdHJpbmc+IENVRUZVTkNUSU9OCiAjZW5kaWYKICV0b2tlbiA8
c3RyaW5nPiBOT1RGVU5DVElPTgorJXRva2VuIDxzdHJpbmc+IERJU1RSSUJVVEVERlVOQ1RJT04K
ICV0b2tlbiA8c3RyaW5nPiBDQUxDRlVOQ1RJT04KICV0b2tlbiA8c3RyaW5nPiBNSU5GVU5DVElP
TgogJXRva2VuIDxzdHJpbmc+IE1BWEZVTkNUSU9OCkBAIC0xMTQ0LDEyICsxMTQ5LDEyIEBAIHNp
bXBsZV9zZWxlY3RvcjoKICAgICB8IGVsZW1lbnRfbmFtZSBzcGVjaWZpZXJfbGlzdCB7CiAgICAg
ICAgICQkID0gJDI7CiAgICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRl
U3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwgJDEsICQkKTsKKyAgICAgICAgICAg
ICQkID0gcGFyc2VyLT5yZXdyaXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwg
JDEsICQkKTsKICAgICB9CiAgICAgfCBzcGVjaWZpZXJfbGlzdCB7CiAgICAgICAgICQkID0gJDE7
CiAgICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dp
dGhFbGVtZW50TmFtZShudWxsQXRvbSwgc3RhckF0b20sICQkKTsKKyAgICAgICAgICAgICQkID0g
cGFyc2VyLT5yZXdyaXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwgc3RhckF0
b20sICQkKTsKICAgICB9CiAgICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1lIHsK
ICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKQEAgLTExNTgs
MTIgKzExNjMsMTIgQEAgc2ltcGxlX3NlbGVjdG9yOgogICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9y
IGVsZW1lbnRfbmFtZSBzcGVjaWZpZXJfbGlzdCB7CiAgICAgICAgICQkID0gJDM7CiAgICAgICAg
IGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50
TmFtZSgkMSwgJDIsICQkKTsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5yZXdyaXRlU3BlY2lm
aWVyc1dpdGhFbGVtZW50TmFtZSgkMSwgJDIsICQkKTsKICAgICB9CiAgICAgfCBuYW1lc3BhY2Vf
c2VsZWN0b3Igc3BlY2lmaWVyX2xpc3QgewogICAgICAgICAkJCA9ICQyOwogICAgICAgICBpZiAo
JCQpCi0gICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUo
JDEsIHN0YXJBdG9tLCAkJCk7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+cmV3cml0ZVNwZWNp
ZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsIHN0YXJBdG9tLCAkJCk7CiAgICAgfQogICA7CiAKQEAg
LTEyMDgsNyArMTIxMyw3IEBAIHNwZWNpZmllcl9saXN0OgogICAgICAgICBpZiAoISQyKQogICAg
ICAgICAgICAgJCQgPSAwOwogICAgICAgICBlbHNlIGlmICgkMSkKLSAgICAgICAgICAgICQkID0g
cGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzKCQxLCAkMik7CisgICAgICAgICAgICAkJCA9IHBhcnNl
ci0+cmV3cml0ZVNwZWNpZmllcnMoJDEsICQyKTsKICAgICB9CiAgICAgfCBzcGVjaWZpZXJfbGlz
dCBlcnJvciB7CiAgICAgICAgICQkID0gMDsKQEAgLTEzNTUsNiArMTM2MCwxOSBAQCBwc2V1ZG86
CiAgICAgICAgICAgICAkJCA9IDA7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFX1NIQURPV19E
T00KKyAgICB8ICc6JyAnOicgRElTVFJJQlVURURGVU5DVElPTiBtYXliZV9zcGFjZSBzZWxlY3Rv
ciBtYXliZV9zcGFjZSAnKScgeworICAgICAgICBpZiAoISQ1KQorICAgICAgICAgICAgJCQgPSAw
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGlu
Z1NlbGVjdG9yKCk7CisgICAgICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVk
b0VsZW1lbnQpOworICAgICAgICAgICAgJCQtPnNldEZ1bmN0aW9uQXJndW1lbnRTZWxlY3Rvcigk
NSk7CisgICAgICAgICAgICAkMy5sb3dlcigpOworICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQz
KTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgogICAgIC8vIHVzZSBieSA6LXdlYmtpdC1hbnku
CiAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBzdXBwb3J0IGdlbmVyaWMgc2VsZWN0b3JzIGhlcmUg
b3IganVzdCBzaW1wbGVfc2VsZWN0b3JzPwogICAgIC8vIFVzZSBzaW1wbGVfc2VsZWN0b3JfbGlz
dCBmb3Igbm93IHRvIG1hdGNoIC1tb3otYW55LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRl
eCAwNDhiNTM3NjYxMDQ0NmVjMDM1NjJkM2FiOGVjMmM3NDNlMzg2OTNmLi41M2NmOGMzYjQ5ZTQ2
ZGFhYThlNmExYzcwOWRkMzkyNDkzZTkwMmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApA
QCAtOTY3Miw2ICs5NjcyLDEwIEBAIGlubGluZSB2b2lkIENTU1BhcnNlcjo6ZGV0ZWN0RGFzaFRv
a2VuKGludCBsZW5ndGgpCiAjZW5kaWYKICAgICB9IGVsc2UgaWYgKGxlbmd0aCA9PSAxMiAmJiBp
c0VxdWFsVG9DU1NJZGVudGlmaWVyKG5hbWUgKyAxLCAid2Via2l0LWNhbGMiKSkKICAgICAgICAg
bV90b2tlbiA9IENBTENGVU5DVElPTjsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBlbHNl
IGlmIChsZW5ndGggPT0gMTkgJiYgaXNFcXVhbFRvQ1NTSWRlbnRpZmllcihuYW1lICsgMSwgIndl
YmtpdC1kaXN0cmlidXRlZCIpKQorICAgICAgICBtX3Rva2VuID0gRElTVFJJQlVURURGVU5DVElP
TjsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KQEAgLTEw
NjA2LDE2ICsxMDYxMCwzMiBAQCBRdWFsaWZpZWROYW1lIENTU1BhcnNlcjo6ZGV0ZXJtaW5lTmFt
ZUluTmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjbwogICAgIHJldHVybiBR
dWFsaWZpZWROYW1lKHByZWZpeCwgbG9jYWxOYW1lLCBtX3N0eWxlU2hlZXQtPmRldGVybWluZU5h
bWVzcGFjZShwcmVmaXgpKTsKIH0KIAotdm9pZCBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnNX
aXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VQcmVmaXgsIGNvbnN0
IEF0b21pY1N0cmluZyYgZWxlbWVudE5hbWUsIENTU1BhcnNlclNlbGVjdG9yKiBzcGVjaWZpZXJz
KQorQ1NTUGFyc2VyU2VsZWN0b3IqIENTU1BhcnNlcjo6cmV3cml0ZVNwZWNpZmllcnNXaXRoRWxl
bWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VQcmVmaXgsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZWxlbWVudE5hbWUsIENTU1BhcnNlclNlbGVjdG9yKiBzcGVjaWZpZXJzKQogewog
ICAgIEF0b21pY1N0cmluZyBkZXRlcm1pbmVkTmFtZXNwYWNlID0gbmFtZXNwYWNlUHJlZml4ICE9
IG51bGxBdG9tICYmIG1fc3R5bGVTaGVldCA/IG1fc3R5bGVTaGVldC0+ZGV0ZXJtaW5lTmFtZXNw
YWNlKG5hbWVzcGFjZVByZWZpeCkgOiBtX2RlZmF1bHROYW1lc3BhY2U7CiAgICAgUXVhbGlmaWVk
TmFtZSB0YWcgPSBRdWFsaWZpZWROYW1lKG5hbWVzcGFjZVByZWZpeCwgZWxlbWVudE5hbWUsIGRl
dGVybWluZWROYW1lc3BhY2UpOworCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgaWYgKHNw
ZWNpZmllcnMtPmlzRGlzdHJpYnV0ZWRQc2V1ZG9FbGVtZW50KCkpIHsKKyAgICAgICAgQ1NTUGFy
c2VyU2VsZWN0b3IqIGFyZ3VtZW50U2VsZWN0b3IgPSBzcGVjaWZpZXJzLT5mdW5jdGlvbkFyZ3Vt
ZW50U2VsZWN0b3IoKTsKKyAgICAgICAgQVNTRVJUKGFyZ3VtZW50U2VsZWN0b3IpOworICAgICAg
ICBDU1NQYXJzZXJTZWxlY3RvciogZW5kID0gYXJndW1lbnRTZWxlY3RvcjsKKyAgICAgICAgd2hp
bGUgKGVuZC0+dGFnSGlzdG9yeSgpKQorICAgICAgICAgICAgZW5kID0gZW5kLT50YWdIaXN0b3J5
KCk7CisgICAgICAgIE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gZWxlbWVudE5hbWVTZWxlY3Rv
ciA9IGFkb3B0UHRyKG5ldyBDU1NQYXJzZXJTZWxlY3Rvcik7CisgICAgICAgIGVsZW1lbnROYW1l
U2VsZWN0b3ItPnNldFRhZyh0YWcpOworICAgICAgICBlbmQtPnNldFRhZ0hpc3RvcnkoZWxlbWVu
dE5hbWVTZWxlY3Rvci5yZWxlYXNlKCkpOworICAgICAgICBlbmQtPnNldFJlbGF0aW9uKENTU1Nl
bGVjdG9yOjpTaGFkb3dEaXN0cmlidXRlZCk7CisgICAgICAgIHJldHVybiBhcmd1bWVudFNlbGVj
dG9yOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKCFzcGVjaWZpZXJzLT5pc0N1c3RvbVBzZXVk
b0VsZW1lbnQoKSkgewogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICAgICAgaWYgKCEoc3Bl
Y2lmaWVycy0+cHNldWRvVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DdWUpKQogI2VuZGlm
CiAgICAgICAgICAgICBzcGVjaWZpZXJzLT5zZXRUYWcodGFnKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gc3BlY2lmaWVyczsKICAgICB9CiAKICAgICBDU1NQYXJzZXJTZWxlY3Rv
ciogbGFzdFNoYWRvd0Rlc2NlbmRhbnQgPSBzcGVjaWZpZXJzOwpAQCAtMTA2MjgsNyArMTA2NDgs
NyBAQCB2b2lkIENTU1BhcnNlcjo6dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVByZQogCiAgICAgaWYgKGxhc3RTaGFkb3dEZXNjZW5k
YW50LT50YWdIaXN0b3J5KCkpIHsKICAgICAgICAgbGFzdFNoYWRvd0Rlc2NlbmRhbnQtPnRhZ0hp
c3RvcnkoKS0+c2V0VGFnKHRhZyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHNw
ZWNpZmllcnM7CiAgICAgfQogCiAgICAgLy8gRm9yIHNoYWRvdy1JRCBwc2V1ZG8tZWxlbWVudHMg
dG8gYmUgY29ycmVjdGx5IG1hdGNoZWQsIHRoZSBTaGFkb3dEZXNjZW5kYW50IGNvbWJpbmF0b3Ig
aGFzIHRvIGJlIHVzZWQuCkBAIC0xMDYzNyw5ICsxMDY1NywxMCBAQCB2b2lkIENTU1BhcnNlcjo6
dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVz
cGFjZVByZQogICAgIGVsZW1lbnROYW1lU2VsZWN0b3ItPnNldFRhZyh0YWcpOwogICAgIGxhc3RT
aGFkb3dEZXNjZW5kYW50LT5zZXRUYWdIaXN0b3J5KGVsZW1lbnROYW1lU2VsZWN0b3IucmVsZWFz
ZSgpKTsKICAgICBsYXN0U2hhZG93RGVzY2VuZGFudC0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6
OlNoYWRvd0Rlc2NlbmRhbnQpOworICAgIHJldHVybiBzcGVjaWZpZXJzOwogfQogCi1DU1NQYXJz
ZXJTZWxlY3RvciogQ1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzKENTU1BhcnNlclNlbGVjdG9y
KiBzcGVjaWZpZXJzLCBDU1NQYXJzZXJTZWxlY3RvciogbmV3U3BlY2lmaWVyKQorQ1NTUGFyc2Vy
U2VsZWN0b3IqIENTU1BhcnNlcjo6cmV3cml0ZVNwZWNpZmllcnMoQ1NTUGFyc2VyU2VsZWN0b3Iq
IHNwZWNpZmllcnMsIENTU1BhcnNlclNlbGVjdG9yKiBuZXdTcGVjaWZpZXIpCiB7CiAjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQogICAgIGlmIChuZXdTcGVjaWZpZXItPmlzQ3VzdG9tUHNldWRvRWxl
bWVudCgpIHx8IG5ld1NwZWNpZmllci0+cHNldWRvVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1
ZG9DdWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCAzOTJmZjk4NDBjNWE2YzgzOWMyZjIx
NDQzN2FiNzU4NGJiNzI1YTlkLi43MWIwMjY2ZDNjMzVkMzdhYmNjMjEyOTkzYjE2OTRmY2RlM2Y2
NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0zMDksOCArMzA5LDggQEAgcHVibGljOgog
CiAgICAgdm9pZCBhZGROYW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0
IEF0b21pY1N0cmluZyYgdXJpKTsKICAgICBRdWFsaWZpZWROYW1lIGRldGVybWluZU5hbWVJbk5h
bWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBs
b2NhbE5hbWUpOwotICAgIHZvaWQgdXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGVt
ZW50TmFtZSwgQ1NTUGFyc2VyU2VsZWN0b3IqKTsKLSAgICBDU1NQYXJzZXJTZWxlY3RvciogdXBk
YXRlU3BlY2lmaWVycyhDU1NQYXJzZXJTZWxlY3RvciosIENTU1BhcnNlclNlbGVjdG9yKik7Cisg
ICAgQ1NTUGFyc2VyU2VsZWN0b3IqIHJld3JpdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGVs
ZW1lbnROYW1lLCBDU1NQYXJzZXJTZWxlY3RvciopOworICAgIENTU1BhcnNlclNlbGVjdG9yKiBy
ZXdyaXRlU3BlY2lmaWVycyhDU1NQYXJzZXJTZWxlY3RvciosIENTU1BhcnNlclNlbGVjdG9yKik7
CiAKICAgICB2b2lkIGludmFsaWRCbG9ja0hpdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXJWYWx1ZXMuY3BwCmluZGV4IGQyM2I4NTg1ZDVkN2JiOGViMGYyNjgyMzRiNmVkMDZhNTg4MWRm
MjcuLmU1YTBiMzc3ZTdlZDc2MDVkMmY5MjY3NGYzZjhhNmYzNzlmYWYyNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCkBAIC0xNDYsNiArMTQ2LDkgQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyVmFsdWU6OmNyZWF0ZUNTU1ZhbHVlKCkKIAogQ1NTUGFyc2Vy
U2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKCkKICAgICA6IG1fc2VsZWN0b3IoYWRvcHRQdHIo
ZmFzdE5ldzxDU1NTZWxlY3Rvcj4oKSkpCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgLCBt
X2Z1bmN0aW9uQXJndW1lbnRTZWxlY3RvcigwKQorI2VuZGlmCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXJWYWx1ZXMuaAppbmRleCAxMzAxYjFjZTBlMTEzNzIzY2NmODIxNjI4ZWUwNWUy
ZTMxMDIzNjdiLi4yY2Q0MDk5NGYwMWZiZmVlN2NlNmNiMDEwODNmNDE0OTUzOWExNDMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCkBAIC0xODYsNiArMTg2LDEyIEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgYWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNl
clNlbGVjdG9yPiA+JiBzZWxlY3RvclZlY3Rvcik7CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
KyAgICBDU1NQYXJzZXJTZWxlY3RvciogZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9mdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3I7IH0KKyAgICB2b2lkIHNldEZ1bmN0
aW9uQXJndW1lbnRTZWxlY3RvcihDU1NQYXJzZXJTZWxlY3Rvciogc2VsZWN0b3IpIHsgbV9mdW5j
dGlvbkFyZ3VtZW50U2VsZWN0b3IgPSBzZWxlY3RvcjsgfQorICAgIGJvb2wgaXNEaXN0cmlidXRl
ZFBzZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yLT5pc0Rpc3RyaWJ1dGVk
UHNldWRvRWxlbWVudCgpOyB9CisjZW5kaWYKKwogICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBl
IHBzZXVkb1R5cGUoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yLT5wc2V1ZG9UeXBlKCk7IH0K
ICAgICBib29sIGlzQ3VzdG9tUHNldWRvRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0
b3ItPmlzQ3VzdG9tUHNldWRvRWxlbWVudCgpOyB9CiAKQEAgLTIwMCw2ICsyMDYsOSBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIE93blB0cjxDU1NTZWxlY3Rvcj4gbV9zZWxlY3RvcjsKICAgICBP
d25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IG1fdGFnSGlzdG9yeTsKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKKyAgICBDU1NQYXJzZXJTZWxlY3RvciogbV9mdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3I7
CisjZW5kaWYKIH07CiAKIGlubGluZSBib29sIENTU1BhcnNlclNlbGVjdG9yOjpoYXNTaGFkb3dE
ZXNjZW5kYW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxl
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCmluZGV4IDVhNmVj
Y2FmYjk0MmMwZDZmYTczYTYyYjZmZmM3NDIxZjNjYWE5ZWMuLjdkODQ3NGI1MzEzZWFmOTQ3ZDlm
ODA0NjVhNzA0YTZmY2IyYWZhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcApAQCAt
MjI3LDYgKzIyNyw5IEBAIFBzZXVkb0lkIENTU1NlbGVjdG9yOjpwc2V1ZG9JZChQc2V1ZG9UeXBl
IHR5cGUpCiAjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKICAgICBjYXNlIFBzZXVkb1NlYW1s
ZXNzRG9jdW1lbnQ6CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBjYXNlIFBz
ZXVkb0Rpc3RyaWJ1dGVkOgorI2VuZGlmCiAgICAgICAgIHJldHVybiBOT1BTRVVETzsKICAgICBj
YXNlIFBzZXVkb05vdFBhcnNlZDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0z
MTYsNiArMzE5LDkgQEAgc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1NlbGVj
dG9yOjpQc2V1ZG9UeXBlPiogbmFtZVRvUHNldWRvVHlwZU1hcCgKICNpZiBFTkFCTEUoSUZSQU1F
X1NFQU1MRVNTKQogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzZWFtbGVz
c0RvY3VtZW50LCAoIi13ZWJraXQtc2VhbWxlc3MtZG9jdW1lbnQiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZGlzdHJpYnV0ZWQsICgiLXdlYmtp
dC1kaXN0cmlidXRlZCgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisj
ZW5kaWYKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaW5SYW5nZSwgKCJp
bi1yYW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgb3V0T2ZSYW5nZSwgKCJvdXQtb2YtcmFuZ2Ui
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKQEAgLTM5OCw2ICs0MDQs
OSBAQCBzdGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsZWN0b3I6OlBzZXVk
b1R5cGU+KiBuYW1lVG9Qc2V1ZG9UeXBlTWFwKAogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1Mp
CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChzZWFtbGVzc0RvY3VtZW50LmltcGwoKSwg
Q1NTU2VsZWN0b3I6OlBzZXVkb1NlYW1sZXNzRG9jdW1lbnQpOwogI2VuZGlmCisjaWYgRU5BQkxF
KFNIQURPV19ET00pCisgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChkaXN0cmlidXRlZC5p
bXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9EaXN0cmlidXRlZCk7CisjZW5kaWYKICAgICAgICAg
bmFtZVRvUHNldWRvVHlwZS0+c2V0KGluUmFuZ2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRv
SW5SYW5nZSk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChvdXRPZlJhbmdlLmltcGwo
KSwgQ1NTU2VsZWN0b3I6OlBzZXVkb091dE9mUmFuZ2UpOwogICAgIH0KQEAgLTQ0OCw2ICs0NTcs
OSBAQCB2b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSgpIGNvbnN0CiAgICAgY2Fz
ZSBQc2V1ZG9GaXJzdExldHRlcjoKICAgICBjYXNlIFBzZXVkb0ZpcnN0TGluZToKICAgICAgICAg
Y29tcGF0ID0gdHJ1ZTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBjYXNlIFBzZXVkb0Rp
c3RyaWJ1dGVkOgorI2VuZGlmCiAgICAgY2FzZSBQc2V1ZG9SZXNpemVyOgogICAgIGNhc2UgUHNl
dWRvU2Nyb2xsYmFyOgogICAgIGNhc2UgUHNldWRvU2Nyb2xsYmFyQ29ybmVyOgpAQCAtNjg0LDYg
KzY5NiwxMCBAQCBTdHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCgpIGNvbnN0CiAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
U2hhZG93RGVzY2VuZGFudDoKICAgICAgICAgICAgIHJldHVybiB0YWdIaXN0b3J5VGV4dCArIHN0
ci50b1N0cmluZygpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpTaGFkb3dEaXN0cmlidXRlZDoKKyAgICAgICAgICAgIHJldHVybiB0YWdIaXN0b3J5
VGV4dCArICI6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoIiArIHN0ci50b1N0cmluZygpICsgIikiOwor
I2VuZGlmCiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKaW5kZXgg
MDY0OThmNGVjNzgxMmM2NjlhNTY3MjM1ZTU1YTk5ZTQ1OGZkYTI1Mi4uMjMwNjk1NDM5NTFhOTg1
ODRlMWI3ZGIwMGI1OWY1MDg0ZTljMDI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAg
LTc2LDcgKzc2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERpcmVjdEFk
amFjZW50LAogICAgICAgICAgICAgSW5kaXJlY3RBZGphY2VudCwKICAgICAgICAgICAgIFN1YlNl
bGVjdG9yLAotICAgICAgICAgICAgU2hhZG93RGVzY2VuZGFudAorICAgICAgICAgICAgU2hhZG93
RGVzY2VuZGFudCwKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgICAgIFNoYWRvd0Rp
c3RyaWJ1dGVkCisjZW5kaWYKICAgICAgICAgfTsKIAogICAgICAgICBlbnVtIFBzZXVkb1R5cGUg
ewpAQCAtMTYxLDcgKzE2NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBQ
c2V1ZG9GdXR1cmVDdWUsCiAjZW5kaWYKICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQotICAg
ICAgICAgICAgUHNldWRvU2VhbWxlc3NEb2N1bWVudAorICAgICAgICAgICAgUHNldWRvU2VhbWxl
c3NEb2N1bWVudCwKKyNlbmRpZgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICAgICAg
UHNldWRvRGlzdHJpYnV0ZWQKICNlbmRpZgogICAgICAgICB9OwogCkBAIC0yMjMsNiArMjI5LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0N1c3RvbVBzZXVkb0VsZW1l
bnQoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc1NpYmxpbmdTZWxlY3RvcigpIGNvbnN0OwogICAg
ICAgICBib29sIGlzQXR0cmlidXRlU2VsZWN0b3IoKSBjb25zdDsKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKKyAgICAgICAgYm9vbCBpc0Rpc3RyaWJ1dGVkUHNldWRvRWxlbWVudCgpIGNvbnN0Owor
ICAgICAgICBib29sIGlzU2hhZG93RGlzdHJpYnV0ZWQoKSBjb25zdDsKKyNlbmRpZgogCiAgICAg
ICAgIFJlbGF0aW9uIHJlbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVsYXRp
b24+KG1fcmVsYXRpb24pOyB9CiAKQEAgLTMzNSw2ICszNDUsMTggQEAgaW5saW5lIGJvb2wgQ1NT
U2VsZWN0b3I6OmlzQXR0cmlidXRlU2VsZWN0b3IoKSBjb25zdAogICAgICAgICB8fCBtX21hdGNo
ID09IENTU1NlbGVjdG9yOjpFbmQ7CiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKK2lubGlu
ZSBib29sIENTU1NlbGVjdG9yOjppc0Rpc3RyaWJ1dGVkUHNldWRvRWxlbWVudCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fbWF0Y2ggPT0gUHNldWRvRWxlbWVudCAmJiBwc2V1ZG9UeXBlKCkgPT0g
UHNldWRvRGlzdHJpYnV0ZWQ7Cit9CisKK2lubGluZSBib29sIENTU1NlbGVjdG9yOjppc1NoYWRv
d0Rpc3RyaWJ1dGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWxhdGlvbiA9PSBDU1NTZWxl
Y3Rvcjo6U2hhZG93RGlzdHJpYnV0ZWQ7Cit9CisjZW5kaWYKKwogaW5saW5lIHZvaWQgQ1NTU2Vs
ZWN0b3I6OnNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgLy8gTmVl
ZCB0byBkbyByZWYgY291bnRpbmcgbWFudWFsbHkgZm9yIHRoZSB1bmlvbi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKaW5kZXggNDMxMzZkMWM5MDFjNjM0MWJhY2JlZjgzOTQ5
ZGY5NGU2MGYxYzM2Yy4uYzUyOTNmYjJhMjAzZWQ2ZjE5ZmM1NzE1MjM2YjVkOWY2NjRiZjUzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKQEAgLTIxMSw2ICsyMTEsMjEg
QEAgYm9vbCBDU1NTZWxlY3Rvckxpc3Q6Omhhc0ludmFsaWRTZWxlY3RvcigpIGNvbnN0CiAgICAg
cmV0dXJuIGZvckVhY2hTZWxlY3RvcihmdW5jdG9yLCB0aGlzKTsKIH0KIAorI2lmIEVOQUJMRShT
SEFET1dfRE9NKQorY2xhc3MgU2VsZWN0b3JIYXNTaGFkb3dEaXN0cmlidXRlZCB7CitwdWJsaWM6
CisgICAgYm9vbCBvcGVyYXRvcigpKENTU1NlbGVjdG9yKiBzZWxlY3RvcikKKyAgICB7CisgICAg
ICAgIHJldHVybiBzZWxlY3Rvci0+aXNTaGFkb3dEaXN0cmlidXRlZCgpOworICAgIH0KK307CisK
K2Jvb2wgQ1NTU2VsZWN0b3JMaXN0OjpoYXNTaGFkb3dEaXN0cmlidXRlZEF0KHNpemVfdCBpbmRl
eCkgY29uc3QKK3sKKyAgICBTZWxlY3Rvckhhc1NoYWRvd0Rpc3RyaWJ1dGVkIGZ1bmN0b3I7Cisg
ICAgcmV0dXJuIGZvckVhY2hUYWdTZWxlY3RvcihmdW5jdG9yLCBzZWxlY3RvckF0KGluZGV4KSk7
Cit9CiAKKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3JMaXN0LmgKaW5kZXggNGZjZmVlMmZhYTQxODJkN2E5YWIwNTViY2NlNTE5ZmU3NGUy
MjcxNS4uNGU3YjU4MmRiYzUxMThhNDVlNDZkYmJmMGNkODk0YTlmNzQzZjZiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaApAQCAtNjAsNiArNjAsMTAgQEAgcHVibGljOgogICAg
IGJvb2wgc2VsZWN0b3JzTmVlZE5hbWVzcGFjZVJlc29sdXRpb24oKTsKICAgICBib29sIGhhc0lu
dmFsaWRTZWxlY3RvcigpIGNvbnN0OwogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgYm9v
bCBoYXNTaGFkb3dEaXN0cmlidXRlZEF0KHNpemVfdCBpbmRleCkgY29uc3Q7CisjZW5kaWYKKwog
ICAgIFN0cmluZyBzZWxlY3RvcnNUZXh0KCkgY29uc3Q7CiAKICAgICB2b2lkIHJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9SdWxlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAppbmRl
eCBkODQwMDRkOWNjYzE0ODQzZTRiNDBhNmJkNjJhYzcyYThkZmIyMmViLi5iYjE0ODkzNzU5NTJk
MmUxYzk5NjBjNWJjM2I0ZWY0ZTI4NWQzOWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvUnVsZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCkBAIC0y
ODcsOSArMjg3LDI1IEBAIHZvaWQgUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVl
dENvbnRlbnRzKiBzaGVldCwgY29uc3QgTWVkaWFRdWVyeUV2YWx1CiAgICAgICAgIFN0eWxlUnVs
ZUJhc2UqIHJ1bGUgPSBydWxlc1tpXS5nZXQoKTsKIAogICAgICAgICBBU1NFUlQoIXJ1bGUtPmlz
SW1wb3J0UnVsZSgpKTsKLSAgICAgICAgaWYgKHJ1bGUtPmlzU3R5bGVSdWxlKCkpCi0gICAgICAg
ICAgICBhZGRTdHlsZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlKj4ocnVsZSksIGFkZFJ1bGVG
bGFncyk7Ci0gICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlzUGFnZVJ1bGUoKSkKKyAgICAgICAgaWYg
KHJ1bGUtPmlzU3R5bGVSdWxlKCkpIHsKKyAgICAgICAgICAgIFN0eWxlUnVsZSogc3R5bGVSdWxl
ID0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxlKj4ocnVsZSk7CisjaWYgRU5BQkxFKFNIQURPV19ET00p
CisgICAgICAgICAgICBpZiAoIXNjb3BlKQorICAgICAgICAgICAgICAgIGFkZFN0eWxlUnVsZShz
dHlsZVJ1bGUsIGFkZFJ1bGVGbGFncyk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCA9IHN0eWxlUnVsZS0+c2Vs
ZWN0b3JMaXN0KCk7CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3Qgc2VsZWN0b3JJbmRleCA9
IDA7IHNlbGVjdG9ySW5kZXggIT0gbm90Rm91bmQ7IHNlbGVjdG9ySW5kZXggPSBzZWxlY3Rvckxp
c3QuaW5kZXhPZk5leHRTZWxlY3RvckFmdGVyKHNlbGVjdG9ySW5kZXgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChzZWxlY3Rvckxpc3QuaGFzU2hhZG93RGlzdHJpYnV0ZWRBdChzZWxlY3Rv
ckluZGV4KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVyLT5hZGRTaGFkb3dEaXN0
cmlidXRlZFJ1bGUoc3R5bGVSdWxlLCBzZWxlY3RvckluZGV4LCBjb25zdF9jYXN0PENvbnRhaW5l
ck5vZGUqPihzY29wZSksIGFkZFJ1bGVGbGFncyk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFJ1bGUoc3R5bGVSdWxlLCBzZWxlY3RvckluZGV4
LCBhZGRSdWxlRmxhZ3MpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyNlbHNl
CisgICAgICAgICAgICBhZGRTdHlsZVJ1bGUoc3R5bGVSdWxlLCBhZGRSdWxlRmxhZ3MpOworI2Vu
ZGlmCisKKyAgICAgICAgfSBlbHNlIGlmIChydWxlLT5pc1BhZ2VSdWxlKCkpCiAgICAgICAgICAg
ICBhZGRQYWdlUnVsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGVQYWdlKj4ocnVsZSkpOwogICAgICAg
ICBlbHNlIGlmIChydWxlLT5pc01lZGlhUnVsZSgpKSB7CiAgICAgICAgICAgICBTdHlsZVJ1bGVN
ZWRpYSogbWVkaWFSdWxlID0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxlTWVkaWEqPihydWxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggMmEzNWZkMDZmYjJjNWM5ODU1
ZDQ1MTA3MThiMjBlNjkwZWY1OWVlOS4uMTExNmFkYmMyN2IzYzg5YWM2ODM2ZTU2NDVmMDRiZDg3
M2Q2YTAzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTQwLDYg
KzQwLDcgQEAKICNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxQ
cm9ncmVzc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSW5zZXJ0aW9uUG9pbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0y
ODEsOCArMjgyLDEzIEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNo
ZWNrZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVjCiAKICAgICAvLyBQcmVwYXJl
IG5leHQgc2VsZWN0b3IKICAgICBDU1NTZWxlY3RvciogaGlzdG9yeVNlbGVjdG9yID0gY29udGV4
dC5zZWxlY3Rvci0+dGFnSGlzdG9yeSgpOwotICAgIGlmICghaGlzdG9yeVNlbGVjdG9yKQorICAg
IGlmICghaGlzdG9yeVNlbGVjdG9yKSB7CisgICAgICAgIGlmIChjb250ZXh0LmNyb3NzQm91bmRh
cnkgPT0gQ3Jvc3Nlc0JvdW5kYXJ5KSB7CisgICAgICAgICAgICBBU1NFUlQoY29udGV4dC5zY29w
ZSk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5zY29wZS0+Y29udGFpbnMoY29udGV4dC5l
bGVtZW50KSA/IFNlbGVjdG9yTWF0Y2hlcyA6IFNlbGVjdG9yRmFpbHNMb2NhbGx5OworICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBTZWxlY3Rvck1hdGNoZXM7CisgICAgfQogCiAgICAgU2VsZWN0
b3JDaGVja2luZ0NvbnRleHQgbmV4dENvbnRleHQoY29udGV4dCk7CiAgICAgbmV4dENvbnRleHQu
c2VsZWN0b3IgPSBoaXN0b3J5U2VsZWN0b3I7CkBAIC0zODQsNiArMzkwLDI2IEBAIFNlbGVjdG9y
Q2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoY29u
c3QgU2VsZWN0b3JDaGVjCiAgICAgICAgICAgICBuZXh0Q29udGV4dC5lbGVtZW50UGFyZW50U3R5
bGUgPSAwOwogICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3IobmV4dENvbnRleHQsIGln
bm9yZUR5bmFtaWNQc2V1ZG8pOwogICAgICAgICB9CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2hhZG93RGlzdHJpYnV0ZWQ6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIFZlY3RvcjxJbnNlcnRpb25Qb2ludCosIDg+IGluc2VydGlvblBvaW50czsKKyAgICAg
ICAgICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IGNvbnRleHQuZWxlbWVudDsgZWxlbWVudDsg
ZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgeworICAgICAgICAgICAgICAgIGlu
c2VydGlvblBvaW50cy5jbGVhcigpOworICAgICAgICAgICAgICAgIGNvbGxlY3RBbGxJbnNlcnRp
b25Qb2ludHMoZWxlbWVudCwgaW5zZXJ0aW9uUG9pbnRzKTsKKyAgICAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGluc2VydGlvblBvaW50cy5zaXplKCk7ICsraSkgeworICAgICAg
ICAgICAgICAgICAgICBuZXh0Q29udGV4dC5lbGVtZW50ID0gaW5zZXJ0aW9uUG9pbnRzW2ldOwor
ICAgICAgICAgICAgICAgICAgICBuZXh0Q29udGV4dC5pc1N1YlNlbGVjdG9yID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnRTdHlsZSA9IDA7CisgICAgICAg
ICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9IDA7CisgICAgICAg
ICAgICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKG5leHRDb250
ZXh0LCBpZ25vcmVEeW5hbWljUHNldWRvKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNo
ID09IFNlbGVjdG9yTWF0Y2hlcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRj
aDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g
U2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CisgICAgICAgIH0KKyNlbmRpZgogICAgIH0KIAogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmlu
ZGV4IDMzMTkzZjc2YmMzMjgyNmFkMGQzZWU2MTQ1MTViOWJhYzVkMjUyMGIuLjUxMzE4YzJhNjIy
ZjI3NDZhMWE2MTEzOWNiMDAzYzI4YjhmMzhmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TZWxlY3RvckNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIGVudW0gU2VsZWN0b3JNYXRj
aCB7IFNlbGVjdG9yTWF0Y2hlcywgU2VsZWN0b3JGYWlsc0xvY2FsbHksIFNlbGVjdG9yRmFpbHNB
bGxTaWJsaW5ncywgU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkgfTsKICAgICBlbnVtIFZpc2l0ZWRN
YXRjaFR5cGUgeyBWaXNpdGVkTWF0Y2hEaXNhYmxlZCwgVmlzaXRlZE1hdGNoRW5hYmxlZCB9Owog
ICAgIGVudW0gTW9kZSB7IFJlc29sdmluZ1N0eWxlID0gMCwgQ29sbGVjdGluZ1J1bGVzLCBRdWVy
eWluZ1J1bGVzLCBTaGFyaW5nUnVsZXMgfTsKKyAgICBlbnVtIENyb3NzQm91bmRhcnkgeyBEb2Vz
Tm90Q3Jvc3NCb3VuZGFyeSwgQ3Jvc3Nlc0JvdW5kYXJ5IH07CiAKICAgICBzdHJ1Y3QgU2VsZWN0
b3JDaGVja2luZ0NvbnRleHQgewogICAgICAgICAvLyBJbml0aWFsIHNlbGVjdG9yIGNvbnN0cnVj
dG9yCkBAIC02Myw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICwgaXNTdWJTZWxlY3Rv
cihmYWxzZSkKICAgICAgICAgICAgICwgaGFzU2Nyb2xsYmFyUHNldWRvKGZhbHNlKQogICAgICAg
ICAgICAgLCBoYXNTZWxlY3Rpb25Qc2V1ZG8oZmFsc2UpCisgICAgICAgICAgICAsIGNyb3NzQm91
bmRhcnkoRG9lc05vdENyb3NzQm91bmRhcnkpCiAgICAgICAgIHsgfQogCiAgICAgICAgIENTU1Nl
bGVjdG9yKiBzZWxlY3RvcjsKQEAgLTc1LDYgKzc3LDcgQEAgcHVibGljOgogICAgICAgICBib29s
IGlzU3ViU2VsZWN0b3I7CiAgICAgICAgIGJvb2wgaGFzU2Nyb2xsYmFyUHNldWRvOwogICAgICAg
ICBib29sIGhhc1NlbGVjdGlvblBzZXVkbzsKKyAgICAgICAgQ3Jvc3NCb3VuZGFyeSBjcm9zc0Jv
dW5kYXJ5OwogICAgIH07CiAKICAgICBib29sIGNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBF
bGVtZW50KiwgYm9vbCBpc0Zhc3RDaGVja2FibGVTZWxlY3RvciA9IGZhbHNlKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwCmluZGV4IGNlYWE3NjgxNDkwMGMwYjMxZDM5
NGM0ZjI2Y2M0Y2JiNWUzNWU4ZGMuLjZiMzkwNjVlODA5NjM4NzBkZGI1MGQ4NWM5N2Y1M2MzOGEx
NzU0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcApAQCAtMTQ4LDYgKzE0
OCw5IEBAIHZvaWQgU2VsZWN0b3JGaWx0ZXI6OmNvbGxlY3RJZGVudGlmaWVySGFzaGVzKGNvbnN0
IENTU1NlbGVjdG9yKiBzZWxlY3RvciwgdW5zaWduCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OkRpcmVjdEFkamFjZW50OgogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpJbmRpcmVjdEFkamFj
ZW50OgogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50OgorI2lmIEVO
QUJMRShTSEFET1dfRE9NKQorICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEaXN0cmli
dXRlZDoKKyNlbmRpZgogICAgICAgICAgICAgc2tpcE92ZXJTdWJzZWxlY3RvcnMgPSB0cnVlOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMDk4ZTBkNTdjMGI3ZTFkNzRl
ZDE1MDhmN2U5MDBkNTE2YzJlOTcwZC4uZjM3NjZkNDBkYjdhZjZmYjdjYWNlZjg1ODNiZWI2YThi
M2U5OGE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMzY0LDYgKzM2
NCw5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6cmVzZXRBdXRob3JTdHlsZSgpCiB7CiAgICAgbV9h
dXRob3JTdHlsZSA9IFJ1bGVTZXQ6OmNyZWF0ZSgpOwogICAgIG1fYXV0aG9yU3R5bGUtPmRpc2Fi
bGVBdXRvU2hyaW5rVG9GaXQoKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBtX3NoYWRv
d0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5jbGVhcigpOworI2VuZGlmCiB9CiAKIHZvaWQgU3R5bGVS
ZXNvbHZlcjo6YXBwZW5kQXV0aG9yU3R5bGVTaGVldHModW5zaWduZWQgZmlyc3ROZXcsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgc3R5bGVTaGVldHMpCkBAIC00NDgsNiAr
NDUxLDIwIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHlsZShQYXNzUmVmUHRy
PFN0eWxlUnVsZUtleWZyYW1lcz4gcnVsZSkKICAgICBtX2tleWZyYW1lc1J1bGVNYXAuc2V0KHMu
aW1wbCgpLCBydWxlKTsKIH0KIAorCisjaWYgRU5BQkxFKFNIQURPV19ET00pCit2b2lkIFN0eWxl
UmVzb2x2ZXI6OmFkZFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZShTdHlsZVJ1bGUqIHJ1bGUsIHNpemVf
dCBzZWxlY3RvckluZGV4LCBDb250YWluZXJOb2RlKiBzY29wZSwgQWRkUnVsZUZsYWdzIGFkZFJ1
bGVGbGFncykKK3sKKyAgICBpZiAobV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAuY29udGFp
bnMoc2NvcGUpKQorICAgICAgICBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5nZXQoc2Nv
cGUpLT5hZGRSdWxlKHJ1bGUsIHNlbGVjdG9ySW5kZXgsIGFkZFJ1bGVGbGFncyk7CisgICAgZWxz
ZSB7CisgICAgICAgIE93blB0cjxSdWxlU2V0PiBydWxlU2V0Rm9yU2NvcGUgPSBhZG9wdFB0cihu
ZXcgUnVsZVNldCgpKTsKKyAgICAgICAgcnVsZVNldEZvclNjb3BlLT5hZGRSdWxlKHJ1bGUsIHNl
bGVjdG9ySW5kZXgsIGFkZFJ1bGVGbGFncyk7CisgICAgICAgIG1fc2hhZG93RGlzdHJpYnV0ZWRS
dWxlU2V0TWFwLmFkZChzY29wZSwgcnVsZVNldEZvclNjb3BlLnJlbGVhc2UoKSk7CisgICAgfQor
fQorI2VuZGlmCisKIFN0eWxlUmVzb2x2ZXI6On5TdHlsZVJlc29sdmVyKCkKIHsKICAgICBtX2Zv
bnRTZWxlY3Rvci0+Y2xlYXJEb2N1bWVudCgpOwpAQCAtNjY0LDcgKzY4MSw4IEBAIHZvaWQgU3R5
bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMoUnVsZVNldCogcnVsZXMsIGludCYgZmly
c3RSdWxlSW5kZXgsIGluCiAgICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUgPSBtX2VsZW1lbnQtPnRy
ZWVTY29wZSgpOwogICAgIGlmICghTWF0Y2hpbmdVQVJ1bGVzU2NvcGU6OmlzTWF0Y2hpbmdVQVJ1
bGVzKCkKICAgICAgICAgJiYgIXRyZWVTY29wZS0+YXBwbHlBdXRob3JTdHlsZXMoKQotICAgICAg
ICAmJiAoIW9wdGlvbnMuc2NvcGUgfHwgb3B0aW9ucy5zY29wZS0+dHJlZVNjb3BlKCkgIT0gdHJl
ZVNjb3BlKSkKKyAgICAgICAgJiYgKCFvcHRpb25zLnNjb3BlIHx8IG9wdGlvbnMuc2NvcGUtPnRy
ZWVTY29wZSgpICE9IHRyZWVTY29wZSkKKyAgICAgICAgJiYgb3B0aW9ucy5jcm9zc0JvdW5kYXJ5
ID09IFNlbGVjdG9yQ2hlY2tlcjo6RG9lc05vdENyb3NzQm91bmRhcnkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIC8vIFdlIG5lZWQgdG8gY29sbGVjdCB0aGUgcnVsZXMgZm9yIGlkLCBjbGFzcywg
dGFnLCBhbmQgZXZlcnl0aGluZyBlbHNlIGludG8gYSBidWZmZXIgYW5kCkBAIC03OTksNiArODE3
LDE2IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hIb3N0UnVsZXMoTWF0Y2hSZXN1bHQmIHJl
c3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKFNI
QURPV19ET00pCit2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoU2hhZG93RGlzdHJpYnV0ZWRSdWxl
cyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQoreworICAgIGZv
ciAoU2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwOjppdGVyYXRvciBpdCA9IG1fc2hhZG93RGlz
dHJpYnV0ZWRSdWxlU2V0TWFwLmJlZ2luKCk7IGl0ICE9IG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxl
U2V0TWFwLmVuZCgpOyArK2l0KSB7CisgICAgICAgIE1hdGNoT3B0aW9ucyBvcHRpb25zKGluY2x1
ZGVFbXB0eVJ1bGVzLCBpdC0+a2V5LCBTZWxlY3RvckNoZWNrZXI6OkNyb3NzZXNCb3VuZGFyeSk7
CisgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKGl0LT52YWx1ZS5nZXQoKSwgcmVzdWx0LnJh
bmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlv
bnMpOworICAgIH0KK30KKyNlbmRpZgorCiB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoQXV0aG9y
UnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKIHsKICAg
ICBtX21hdGNoZWRSdWxlcy5jbGVhcigpOwpAQCAtODExLDYgKzgzOSw5IEBAIHZvaWQgU3R5bGVS
ZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1
ZGVFbXB0eVJ1bGVzCiAgICAgTWF0Y2hPcHRpb25zIG9wdGlvbnMoaW5jbHVkZUVtcHR5UnVsZXMp
OwogICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKG1fYXV0aG9yU3R5bGUuZ2V0KCksIHJlc3VsdC5y
YW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBvcHRp
b25zKTsKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtX2F1dGhvclN0eWxlLmdl
dCgpLCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0
aG9yUnVsZSwgb3B0aW9ucyk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgbWF0Y2hTaGFk
b3dEaXN0cmlidXRlZFJ1bGVzKHJlc3VsdCwgaW5jbHVkZUVtcHR5UnVsZXMpOworI2VuZGlmCiAg
ICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKHJlc3VsdCk7CiAKICAgICBtYXRjaFNjb3Bl
ZEF1dGhvclJ1bGVzKHJlc3VsdCwgaW5jbHVkZUVtcHR5UnVsZXMpOwpAQCAtODQ3LDcgKzg3OCw3
IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0
IFZlY3RvcjxSdWxlRGF0YT4qIHJ1bGVzLCBpCiAKICAgICAvLyBJbiBzb21lIGNhc2VzIHdlIG1h
eSBlbmQgdXAgbG9va2luZyB1cCBzdHlsZSBmb3IgcmFuZG9tIGVsZW1lbnRzIGluIHRoZSBtaWRk
bGUgb2YgYSByZWN1cnNpdmUgdHJlZSByZXNvbHZlLgogICAgIC8vIEFuY2VzdG9yIGlkZW50aWZp
ZXIgZmlsdGVyIHdvbid0IGJlIHVwLXRvLWRhdGUgaW4gdGhhdCBjYXNlIGFuZCB3ZSBjYW4ndCB1
c2UgdGhlIGZhc3QgcGF0aC4KLSAgICBib29sIGNhblVzZUZhc3RSZWplY3QgPSBtX3NlbGVjdG9y
RmlsdGVyLnBhcmVudFN0YWNrSXNDb25zaXN0ZW50KG1fcGFyZW50Tm9kZSk7CisgICAgYm9vbCBj
YW5Vc2VGYXN0UmVqZWN0ID0gbV9zZWxlY3RvckZpbHRlci5wYXJlbnRTdGFja0lzQ29uc2lzdGVu
dChtX3BhcmVudE5vZGUpICYmIG9wdGlvbnMuY3Jvc3NCb3VuZGFyeSA9PSBTZWxlY3RvckNoZWNr
ZXI6OkRvZXNOb3RDcm9zc0JvdW5kYXJ5OwogCiAgICAgdW5zaWduZWQgc2l6ZSA9IHJ1bGVzLT5z
aXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewpAQCAtODU3
LDcgKzg4OCw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JM
aXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIHJ1bGVzLCBpCiAKICAgICAgICAgU3R5bGVSdWxl
KiBydWxlID0gcnVsZURhdGEucnVsZSgpOwogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTWF0Y2hSdWxl
KGRvY3VtZW50KCksIHJ1bGUsIHRoaXMpOwotICAgICAgICBpZiAoY2hlY2tTZWxlY3RvcihydWxl
RGF0YSwgb3B0aW9ucy5zY29wZSkpIHsKKyAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3IocnVsZURh
dGEsIG9wdGlvbnMuc2NvcGUsIG9wdGlvbnMuY3Jvc3NCb3VuZGFyeSkpIHsKICAgICAgICAgICAg
IC8vIElmIHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0aWVzIHRvIGFwcGx5LCB0aGVuIGlnbm9yZSBp
dCBpbiB0aGUgbm9uLWRlYnVnIG1vZGUuCiAgICAgICAgICAgICBjb25zdCBTdHlsZVByb3BlcnR5
U2V0KiBwcm9wZXJ0aWVzID0gcnVsZS0+cHJvcGVydGllcygpOwogICAgICAgICAgICAgaWYgKCFw
cm9wZXJ0aWVzIHx8IChwcm9wZXJ0aWVzLT5pc0VtcHR5KCkgJiYgIW9wdGlvbnMuaW5jbHVkZUVt
cHR5UnVsZXMpKSB7CkBAIC0yMjM4LDcgKzIyNjksNyBAQCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0
PiBTdHlsZVJlc29sdmVyOjpwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCBQ
cwogICAgIHJldHVybiBtX3J1bGVMaXN0LnJlbGVhc2UoKTsKIH0KIAotaW5saW5lIGJvb2wgU3R5
bGVSZXNvbHZlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0
IENvbnRhaW5lck5vZGUqIHNjb3BlKQoraW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y2hlY2tT
ZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNj
b3BlLCBTZWxlY3RvckNoZWNrZXI6OkNyb3NzQm91bmRhcnkgY3Jvc3NCb3VuZGFyeSkKIHsKICAg
ICBtX2R5bmFtaWNQc2V1ZG8gPSBOT1BTRVVETzsKIApAQCAtMjI2Myw2ICsyMjk0LDcgQEAgaW5s
aW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYgcnVs
ZURhdGEsIGNvbnN0IENvbnRhaW4KICAgICBjb250ZXh0LmVsZW1lbnRTdHlsZSA9IHN0eWxlKCk7
CiAgICAgY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgPSBtX3BhcmVudE5vZGUgPyBtX3BhcmVu
dE5vZGUtPnJlbmRlclN0eWxlKCkgOiAwOwogICAgIGNvbnRleHQuc2NvcGUgPSBzY29wZTsKKyAg
ICBjb250ZXh0LmNyb3NzQm91bmRhcnkgPSBjcm9zc0JvdW5kYXJ5OwogICAgIGNvbnRleHQucHNl
dWRvU3R5bGUgPSBtX3BzZXVkb1N0eWxlOwogICAgIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JN
YXRjaCBtYXRjaCA9IG1fc2VsZWN0b3JDaGVja2VyLmNoZWNrU2VsZWN0b3IoY29udGV4dCwgbV9k
eW5hbWljUHNldWRvKTsKICAgICBpZiAobWF0Y2ggIT0gU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rv
ck1hdGNoZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCA1YmQyOTQwZTU3ZjI5
ODIxZmU2MTNlYTBlOGEzOWJmZGZiODhkMDdkLi5iYjNiNzJiNTM4M2QxNDMzZjk2ZTk3NWU4ODYw
ZGJmYmQ0YzYzZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJNZWRpYVF1ZXJ5RXhwLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUu
aCIKICNpbmNsdWRlICJSdWxlRmVhdHVyZS5oIgorI2luY2x1ZGUgIlJ1bGVTZXQuaCIKICNpbmNs
dWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2Vy
LmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JGaWx0ZXIuaCIKQEAgLTc2LDcgKzc3LDYgQEAgY2xhc3Mg
TWVkaWFRdWVyeUV2YWx1YXRvcjsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSZW5kZXJSZWdpb247CiBj
bGFzcyBSdWxlRGF0YTsKLWNsYXNzIFJ1bGVTZXQ7CiBjbGFzcyBTZXR0aW5nczsKIGNsYXNzIFN0
YXRpY0NTU1J1bGVMaXN0OwogY2xhc3MgU3R5bGVCdWlsZGVyOwpAQCAtMjk5LDYgKzI5OSwxMCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWRQZW5kaW5nUmVzb3VyY2VzKCk7CiAKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKKyAgICB2b2lkIGFkZFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZShTdHlsZVJ1
bGUqLCBzaXplX3Qgc2VsZWN0b3JJbmRleCwgQ29udGFpbmVyTm9kZSogc2NvcGUsIEFkZFJ1bGVG
bGFncyk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGZpeGVzIHVw
IHRoZSBkZWZhdWx0IGZvbnQgc2l6ZSBpZiBpdCBkZXRlY3RzIHRoYXQgdGhlIGN1cnJlbnQgZ2Vu
ZXJpYyBmb250IGZhbWlseSBoYXMgY2hhbmdlZC4gLWR3aAogICAgIHZvaWQgY2hlY2tGb3JHZW5l
cmljRmFtaWx5Q2hhbmdlKFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKTsK
QEAgLTM0Myw5ICszNDcsMTEgQEAgcHJpdmF0ZToKICAgICB9OwogCiAgICAgc3RydWN0IE1hdGNo
T3B0aW9ucyB7Ci0gICAgICAgIE1hdGNoT3B0aW9ucyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBj
b25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9IDApIDogc2NvcGUoc2NvcGUpLCBpbmNsdWRlRW1w
dHlSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcykgeyB9CisgICAgICAgIE1hdGNoT3B0aW9ucyhib29s
IGluY2x1ZGVFbXB0eVJ1bGVzLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9IDAsIFNlbGVj
dG9yQ2hlY2tlcjo6Q3Jvc3NCb3VuZGFyeSBjcm9zc0JvdW5kYXJ5ID0gU2VsZWN0b3JDaGVja2Vy
OjpEb2VzTm90Q3Jvc3NCb3VuZGFyeSkKKyAgICAgICAgICAgIDogc2NvcGUoc2NvcGUpLCBpbmNs
dWRlRW1wdHlSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcyksIGNyb3NzQm91bmRhcnkoY3Jvc3NCb3Vu
ZGFyeSkgeyB9CiAgICAgICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlOwogICAgICAgICBi
b29sIGluY2x1ZGVFbXB0eVJ1bGVzOworICAgICAgICBTZWxlY3RvckNoZWNrZXI6OkNyb3NzQm91
bmRhcnkgY3Jvc3NCb3VuZGFyeTsKICAgICB9OwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWF0Y2hl
ZFByb3BlcnRpZXMoTWF0Y2hSZXN1bHQmLCBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0
aWVzLCBTdHlsZVJ1bGUqID0gMCwgdW5zaWduZWQgbGlua01hdGNoVHlwZSA9IFNlbGVjdG9yQ2hl
Y2tlcjo6TWF0Y2hBbGwsIGJvb2wgaW5SZWdpb25SdWxlID0gZmFsc2UpOwpAQCAtMzU4LDYgKzM2
NCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgbWF0Y2hVc2VyUnVsZXMoTWF0Y2hSZXN1bHQmLCBi
b29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKICAgICB2b2lkIG1hdGNoU2NvcGVkQXV0aG9yUnVsZXMo
TWF0Y2hSZXN1bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKICAgICB2b2lkIG1hdGNoSG9z
dFJ1bGVzKE1hdGNoUmVzdWx0JiwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CisjaWYgRU5BQkxF
KFNIQURPV19ET00pCisgICAgdm9pZCBtYXRjaFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXMoTWF0Y2hS
ZXN1bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyNlbmRpZgorCiAgICAgdm9pZCBjb2xs
ZWN0TWF0Y2hpbmdSdWxlcyhSdWxlU2V0KiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0
UnVsZUluZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmKTsKICAgICB2b2lkIGNvbGxlY3RNYXRjaGlu
Z1J1bGVzRm9yUmVnaW9uKFJ1bGVTZXQqLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RS
dWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYpOwogICAgIHZvaWQgY29sbGVjdE1hdGNoaW5n
UnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qLCBpbnQmIGZpcnN0UnVsZUluZGV4
LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYpOwpAQCAtMzY1LDcgKzM3
NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzb3J0TWF0Y2hlZFJ1bGVzKCk7CiAgICAgdm9pZCBz
b3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoTWF0Y2hSZXN1bHQmKTsKIAotICAgIGJvb2wgY2hl
Y2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKTsK
KyAgICBib29sIGNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmLCBjb25zdCBDb250YWluZXJO
b2RlKiBzY29wZSwgU2VsZWN0b3JDaGVja2VyOjpDcm9zc0JvdW5kYXJ5ID0gU2VsZWN0b3JDaGVj
a2VyOjpEb2VzTm90Q3Jvc3NCb3VuZGFyeSk7CiAgICAgYm9vbCBjaGVja1JlZ2lvblNlbGVjdG9y
KENTU1NlbGVjdG9yKiByZWdpb25TZWxlY3RvciwgRWxlbWVudCogcmVnaW9uRWxlbWVudCk7CiAg
ICAgdm9pZCBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzKGNvbnN0IE1hdGNoUmVzdWx0JiwgY29uc3Qg
RWxlbWVudCopOwogICAgIGVudW0gU3R5bGVBcHBsaWNhdGlvblBhc3MgewpAQCAtMzk2LDYgKzQw
NiwxMSBAQCBwcml2YXRlOgogICAgIE93blB0cjxSdWxlU2V0PiBtX2F1dGhvclN0eWxlOwogICAg
IE93blB0cjxSdWxlU2V0PiBtX3VzZXJTdHlsZTsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQor
ICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBDb250YWluZXJOb2RlKiwgT3duUHRyPFJ1bGVTZXQ+
ID4gU2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwOworICAgIFNoYWRvd0Rpc3RyaWJ1dGVkUnVs
ZVNldE1hcCBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcDsKKyNlbmRpZgorCiAgICAgUnVs
ZUZlYXR1cmVTZXQgbV9mZWF0dXJlczsKICAgICBPd25QdHI8UnVsZVNldD4gbV9zaWJsaW5nUnVs
ZVNldDsKICAgICBPd25QdHI8UnVsZVNldD4gbV91bmNvbW1vbkF0dHJpYnV0ZVJ1bGVTZXQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAppbmRleCAyMGNlNzdk
MGEzNzllZmNjMjQ0OGE2NTg5OWQ2YzU4ZjM3ZjljOWI4Li45MTYyYjdmZGEwMzQ3ZTJjOTRkMTcw
ZGVmZWU3YTZhZjA3ZmUxY2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9JbnNlcnRpb25Qb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2Vy
dGlvblBvaW50LmgKQEAgLTE1NCw2ICsxNTQsMjkgQEAgaW5saW5lIEVsZW1lbnRTaGFkb3cqIHNo
YWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCiAKIEluc2VydGlv
blBvaW50KiByZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqKTsKIAoraW5saW5lIHZvaWQg
Y29sbGVjdEFsbEluc2VydGlvblBvaW50cyhjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlLCBWZWN0
b3I8SW5zZXJ0aW9uUG9pbnQqLCA4PiYgcmVzdWx0cykKK3sKKyAgICBjb25zdCBOb2RlKiBjdXJy
ZW50ID0gcHJvamVjdGVkTm9kZTsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpZiAoRWxl
bWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY3VycmVu
dCkpIHsKKyAgICAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7CisgICAgICAg
ICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBzaGFkb3ctPmRpc3RyaWJ1dG9y
KCkuZmluZEluc2VydGlvblBvaW50Rm9yKHByb2plY3RlZE5vZGUpKSB7CisgICAgICAgICAgICAg
ICAgY3VycmVudCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQo
aW5zZXJ0ZWRUbyk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKE5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGVGb3JEaXN0cmli
dXRpb24oY3VycmVudCkpIHsKKyAgICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0
ZWRUbyA9IHBhcmVudC0+aXNTaGFkb3dSb290KCkgPyBTY29wZUNvbnRlbnREaXN0cmlidXRpb246
OmFzc2lnbmVkVG8odG9TaGFkb3dSb290KHBhcmVudCkpIDogMCkgeworICAgICAgICAgICAgICAg
IGN1cnJlbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKGlu
c2VydGVkVG8pOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEluc2VydGlvblBvaW50X2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyOWVlZTA4NDJjMDE3ZDE5
M2U2ZTU3YjJmYWNkYzFiMzI4YWFkNTc3Li5kZGI5YzQ3M2JhYzQ4Y2QzZTgxNjFlMzNjNGUyYWI4
ZDI3NTdlZTA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTMtMDEtMDYgIEhheWF0byBJdG8g
IDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBJbXBsZW1lbnRz
IGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvIGVsZW1lbnQuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjE2OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQtZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLWV4
cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRl
ZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWRlc2NlbmRhbnQtZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LW1hdGNoLWRlc2NlbmRhbnQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtbmVzdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uby1tYXRjaC1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
bm8tbWF0Y2guaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9q
ZWN0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRl
ZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNjb3BlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtc3VwcG9ydC1zZWxlY3Rvci1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRv
LWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWlu
LXNlbGVjdG9yLWxpc3QuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC13aXRo
LWFueS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQt
cHNldWRvLWVsZW1lbnQuaHRtbDogQWRkZWQuCisKIDIwMTMtMDEtMDkgIFNoaW55YSBLYXdhbmFr
YSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFzc2VydCB0cmlnZ2VyZWQgaW4g
U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yIHdoZW4gc2Nyb2xsYmFyIChlLmcuIDpo
b3Jpem9udGFsKSBzZWxlY3RvciBpcyBzcGVjaWZpZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0YzI2ZTJiNTZjNGM2YTdjNzBjNmNmZDU4YTIy
N2Y4ZTBmNDQ2NGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDkg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgor
ICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9k
aXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxl
bWVudC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC1leHBlY3RlZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY0YzI2ZTJiNTZjNGM2YTdjNzBjNmNmZDU4YTIyN2Y4ZTBmNDQ2NGYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRv
LWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw5IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAg
PGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2
PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1l
bnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZGRjMzdjNWM2YzQ4
ODY3ZGY1Y2I4MTQ3MjhhMzY5ZmQ4ZDIzZTYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ct
ZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsMjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBz
aGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHls
ZS5pbm5lckhUTUwgPSAnc2hhZG93Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdikgeyBjb2xvcjog
Z3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5k
Ym94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6
ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSksCisgICAgICAgICAgICAgIGNyZWF0ZVNo
YWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnc2hhZG93JykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1
ZG8tZWxlbWVudC1tYXRjaC1hbGwtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwtZXhwZWN0ZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45YTYwYjcyZTBkZTkxNzc2MmIyYTJhNGM1ZWMzZWY5ZjU2NmViNDk4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTYgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8
ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2PgorICAgICAgbm9ybWFsCisgICAgICA8ZGl2IHN0eWxl
PSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdj4KKyAgICAg
IG5vcm1hbAorICAgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAg
IDwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC1tYXRjaC1hbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWYyZmYyYjQxMzdhMGM1YWVlZGM4NWU4
OTEyZjJlYzM0ZWIyZmJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC5odG1sCkBAIC0wLDAg
KzEsMjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnY29udGVu
dDo6LXdlYmtpdC1kaXN0cmlidXRlZCguaGVsbG8pIHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFy
IHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5h
cHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAg
ICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUs
CisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSksCisgICAgICAgICAgICAg
IGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgnbm9ybWFsJyksCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2RpdicsIHsnY2xhc3MnOiAnaGVsbG8nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpLAorICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdkaXYnLCB7J2NsYXNzJzogJ2hlbGxvJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSkpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtZGVzY2VuZGFudC1leHBlY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50LW1hdGNoLWRlc2NlbmRhbnQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzE4Nzg1NmZl
ZTE4ZjRlNDI3ZjIxYTc3MWIzMmQxMTMxOGY1M2IxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWRl
c2NlbmRhbnQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+Cisg
ICAgPHA+CisgICAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAg
PC9wPgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5k
YW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRv
LWVsZW1lbnQtbWF0Y2gtZGVzY2VuZGFudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlNDA0M2U4NTVhNTA4
ZDQ4YjVhMDYwMGUwZjY4NjY5ODgzMDAyODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtZGVzY2Vu
ZGFudC5odG1sCkBAIC0wLDAgKzEsMjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFk
b3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5p
bm5lckhUTUwgPSAnY29udGVudDo6LXdlYmtpdC1kaXN0cmlidXRlZChkaXYpIHsgY29sb3I6IGdy
ZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJv
eCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAg
ICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hhZG93U3R5
bGUsCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSksCisgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgncCcsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1
ZG8tZWxlbWVudC1uZXN0ZWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQtZXhwZWN0ZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lNTE4MzQ0MmEwNzZjN2Y4MWE5YzU0MjEzMWU3OWZiNzc2ZjAxMWNjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVk
by1lbGVtZW50LW5lc3RlZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjAgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJo
b3N0Ij4KKyAgICA8ZGl2IGlkPSJuZXN0ZWQtaG9zdCI+CisgICAgICB0ZXh0MQorICAgICAgPGRp
dj4KKyAgICAgICAgdGV4dDIKKyAgICAgICAgPGRpdj4KKyAgICAgICAgICB0ZXh0MworICAgICAg
ICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgICAgICAgICA8ZGl2
Pm5vcm1hbDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2Pgor
ICA8L2Rpdj4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LW5lc3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxNjdhM2VmZWNhMGY0MDhhNmQzODc1NjkyOTdlZmU2
MjM1ODgwZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWwKQEAgLTAsMCArMSwzMiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
aGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJv
eCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdkaXYgY29udGVudDo6LXdl
YmtpdC1kaXN0cmlidXRlZChkaXYgY29udGVudDo6LXdlYmtpdC1kaXN0cmlidXRlZChkaXYuZ3Jl
ZW4pKSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgK
KyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICduZXN0ZWQtaG9zdCd9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgndGV4dDEnKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCd0
ZXh0MicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnZGl2J30pKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2dyZWVuJ30sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCd0ZXh0
MycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2Nv
bnRlbnQnLCB7fSkpKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6
ICdncmVlbid9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJ2dyZWVuJykpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpKSkpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbm8tbWF0Y2gtZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC1uby1tYXRjaC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwNWZlZmY3NWM3OWFlZGU1
YmY4ZTQ5YmJlZDBiNzE1NWRjZTY4MGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbm8tbWF0Y2gtZXhwZWN0
ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+
Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAgPHA+bm9ybWFsPC9w
PgorICAgIDxkaXY+CisgICAgICA8ZGl2Pm5vcm1hbDwvZGl2PgorICAgIDwvZGl2PgorICA8L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uby1tYXRjaC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5vLW1hdGNoLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYmFlMzljZWMzNDc1OTM3YTFlZDUzZDE1ODJlNmZlM2M4YjIwMWQ2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRl
ZC1wc2V1ZG8tZWxlbWVudC1uby1tYXRjaC5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRv
bS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2
PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0
eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAndGhpcy1kb2VzLW5vdC1tYXRjaDo6LXdl
YmtpdC1kaXN0cmlidXRlZChkaXYpIHsgY29sb3I6IGdyZWVuOyB9JzsKK3NoYWRvd1N0eWxlLmlu
bmVySFRNTCA9ICdwOjotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdikgeyBjb2xvcjogZ3JlZW47IH0n
Oworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2Rpdjo6LXdlYmtpdC1kaXN0cmlidXRlZChkaXYp
IHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2Rp
dicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAg
ICAgICAgICAgICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00o
J3AnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCdub3JtYWwnKSksCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSksCisgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0LWNoaWxkJ30sCisgICAgICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpKSk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24tZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjljOTEyN2Rl
NWU3MDNiN2ExYTVjOTM2OTRlYTdjZDBiMTI0ODQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVj
dGlvbi1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8
ZGl2IGlkPSJob3N0MiI+CisgICAgICA8ZGl2IHN0eWxlPSdjb2xvcjogZ3JlZW4nPgorICAgICAg
ICBncmVlbgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmE3MzVmYTcwOWU4NjFiMGRiNGFlNGNjNDY0ZmY3YWZhMWExOWUwYzgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRv
LWVsZW1lbnQtcmVwcm9qZWN0aW9uLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8
c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUn
KTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVk
KC5mb28pIHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVE
T00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290
KAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QyJ30sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJy5mb28nfSkpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSksCisgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdmb28nfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSkpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVk
LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzQ4ZDllMmRlM2U2ZmU0YmZkODk4MGI2M2QwMzli
YzU0ZDg4MzFhMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQtZXhwZWN0ZWQuaHRtbApAQCAtMCww
ICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5k
Ym94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAgICA8ZGl2
PgorICAgICAgPGRpdiBzdHlsZT0nY29sb3I6IGdyZWVuJz5ncmVlbjwvZGl2PgorICAgIDwvZGl2
PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29w
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kYWE3MWFiYzc5MDk2MzMwMGEzMjQ3ZTg1Njg1MGE4MzYxMzU4
ODVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LXNjb3BlZC5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93
LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwv
ZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnY29udGVudDo6LXdlYmtpdC1kaXN0
cmlidXRlZChkaXYpIHsgY29sb3I6IGdyZWVuOyB9JzsKK3NoYWRvd1N0eWxlLnNldEF0dHJpYnV0
ZSgnc2NvcGVkJywgdHJ1ZSk7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYn
LCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJyNob3N0LWNoaWxk
MSd9KSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnI2hvc3Qt
Y2hpbGQyJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlKSksCisg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0LWNoaWxkMSd9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpKSwK
KyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QtY2hpbGQyJ30sCisg
ICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkp
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0
b3ItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRl
ZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjNkZWRlMTMzYjg2MmRkMTRjOTJlNjA1YzRhMWJlZDI4ZTM3YWRhZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC1zdXBwb3J0LXNlbGVjdG9yLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYg
aWQ9Imhvc3QiPgorICAgIDxkaXY+CisgICAgICBub3JtYWwKKyAgICAgIDxkaXYgc3R5bGU9ImNv
bG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgbm9y
bWFsCisgICAgICA8ZGl2Pm5vcm1hbDwvZGl2PgorICAgIDwvZGl2PgorICA8L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxl
Y3Rvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmZGJkODZlZjc4MmIxNDFjZmY1OWJhM2MxNjViYTU3ZWIz
ZTc4NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlz
dHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci5odG1sCkBAIC0wLDAgKzEs
MjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnY29udGVudDo6
LXdlYmtpdC1kaXN0cmlidXRlZChkaXYuaGVsbG8gZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CisK
K3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRi
b3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAg
ICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0
eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnaGVsbG8nfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSwKKyAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVz
ZWQtaW4tc2VsZWN0b3ItbGlzdC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiODI1M2U0ZGFi
NzQwNTY1ODM4ZDg0MjUwYmJhOWJkOTA0ZDk5MmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1z
ZWxlY3Rvci1saXN0LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3Qi
PgorICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgICA8cD5ub3Jt
YWw8L3A+CisgICAgPHAgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L3A+CisgIDwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVz
ZWQtaW4tc2VsZWN0b3ItbGlzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwNmQ1NDhmNmJhMzkxY2I3NGE4
MjMxNmVkYjk2ZGM1ZDJlNzFmMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1s
aXN0Lmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRv
d1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlu
bmVySFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdiksIHAgeyBjb2xvcjog
Z3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5k
Ym94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6
ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAg
ICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcp
LAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdwJywge30sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSwKKyAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdw
JywgeydjbGFzcyc6ICdoZWxsbyd9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtd2l0aC1hbnktZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC13aXRoLWFueS1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE3Mzc5OTQzZGY2NDg5MDMyNGRjMDJkOWRlMzAxODUxYTExMTg2NTEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQt
cHNldWRvLWVsZW1lbnQtd2l0aC1hbnktZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE4IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRp
dj4KKyAgICA8ZGl2Pm5vcm1hbDwvZGl2PgorICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+
Z3JlZW48L2Rpdj4KKyAgPC9kaXY+CisgIDxkaXY+CisgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAg
ICA8ZGl2IHN0eWxlPSJjb2xvcjogcmVkIj5yZWQ8L2Rpdj4KKyAgPC9kaXY+CisgIDxkaXY+Cisg
ICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAgICA8ZGl2IHN0eWxlPSJjb2xvcjogYmx1ZSI+Ymx1ZTwv
ZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC13aXRoLWFueS5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LXdpdGgtYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NhMjM1YTQzZGIzZjdiM2I3OWI5YWU0Y2M5N2E4
MzdlOGM2YThlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC13aXRoLWFueS5odG1sCkBAIC0wLDAgKzEsNDkg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNh
bmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZTEgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUxLmlubmVySFRNTCA9ICcqOjotd2Via2l0
LWRpc3RyaWJ1dGVkKGRpdikgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2hhZG93U3R5bGUy
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlMi5pbm5lckhU
TUwgPSAnY29udGVudDo6LXdlYmtpdC1kaXN0cmlidXRlZCgqKSB7IGNvbG9yOiByZWQ7IH0nOwor
Cit2YXIgc2hhZG93U3R5bGUzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3No
YWRvd1N0eWxlMy5pbm5lckhUTUwgPSAnKjo6LXdlYmtpdC1kaXN0cmlidXRlZCgqKSB7IGNvbG9y
OiBibHVlOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Fu
ZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHt9LAor
ICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hhZG93
U3R5bGUxLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpLAor
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAgICAgICAgICAgICBj
cmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoJ2dyZWVuJykpKSk7CisKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAg
ICAgICAgICAgICAgIHNoYWRvd1N0eWxlMiwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoJ25vcm1hbCcpKSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcp
KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdyZWQnKSkpKTsKK3NhbmRib3guYXBwZW5k
Q2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hh
ZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlMywKKyAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpKSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnY29udGVudCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdibHVlJykpKSk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDI0M2NhMWM4Yzk0ZjMyNjhiNjRmNzBlZGQyMTI2YjA3YjBkZjAxYQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBz
aGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHls
ZS5pbm5lckhUTUwgPSAnY29udGVudDo6LXdlYmtpdC1kaXN0cmlidXRlZChkaXYpIHsgY29sb3I6
IGdyZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Fu
ZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHt9LAor
ICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hhZG93
U3R5bGUsCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSksCisgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182283</attachid>
            <date>2013-01-11 00:37:43 -0800</date>
            <delta_ts>2013-01-11 01:19:32 -0800</delta_ts>
            <desc>Refactor StyleResolver so that a class ShadowDistributedRules can be separataed.</desc>
            <filename>bug-82169-20130111173446.patch</filename>
            <type>text/plain</type>
            <size>71410</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlZTBmODNhODUyNmNjZTY3MDE0OWNiNjJhNjY1M2Y1N2UzYTM4Y2E1Li42
ODQxOThlNTIxMjhmYjJlMjQzZTQxMDU3MGQ4NGNmOWIwMTM4YzBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQzIEBACisyMDEzLTAxLTA2ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbU2hhZG93IERPTV0gSW1wbGVtZW50cyBhICc6OmRpc3RyaWJ1dGVkKCkn
IHBzZXVkbyBlbGVtZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODIxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnRzIGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvIGVsZW1lbnQuCisg
ICAgICAgIFNlZSB0aGUgU2hhZG93IERPTSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgZGV0YWlsLgor
CisgICAgICAgICMgRklYTUU6IFVwZGF0ZSBVUkwgYWZ0ZXIgdGhlIHNwZWMgaXMgdXBkYXRlZC4K
KyAgICAgICAgaHR0cDovL2R2Y3MudzMub3JnL2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlw
L3NwZWMvc2hhZG93L2luZGV4Lmh0bWwjc2VsZWN0aW5nLW5vZGVzLWRpc3RyaWJ1dGVkLXRvLWlu
c2VydGlvbi1wb2ludHMKKworICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB3ZSBhcmUgZ2l2
ZW4gdGhlIGZvbGxvd2luZyBET00gdHJlZSBhbmQgc2hhZG93IHRyZWU6CisKKyAgICAgICAgLSA8
QT4KKyAgICAgICAgICAtIDxCPgorICAgICAgICAgIC0gPEM+CisKKyAgICAgICAgW0EncyBTaGFk
b3dSb290XQorICAgICAgICAgIDxDPgorICAgICAgICAgIC0gPHN0eWxlPgorICAgICAgICAgICAg
ICBEIGNvbnRlbnQ6OmRpc3RyaWJ1dGVkKEIpIHsgY29sb3I6IGdyZWVuOyB9CisgICAgICAgICAg
LSA8RD4KKyAgICAgICAgICAgIC0gPGNvbnRlbnQ+CisKKyAgICAgICAgSW4gdGhpcyBjYXNlLCB0
aGUgc3R5bGUgcnVsZSBkZWZpbmVkIGluIHNoYWRvdyB0cmVlIG1hdGNoZXMgbm9kZSAnQicuCisK
KyAgICAgICAgQSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxlbWVudCBjYW4gbm90IGJlIGEg
cHNldWRvIGNsYXNzIHNpbmNlCisgICAgICAgIGFuIGludGVyc2VjdGlvbiBiZXR3ZWVuIG1hdGNo
ZWRfZWxlbWVudHMoc29tZV9zZWxlY3RvcikgYW5kCisgICAgICAgIG1hdGNoZWRfZWxlbWVudHMo
c29tZV9zZWxlY3Rvcjo6ZGlzdHJpYnV0ZWQoLi4uKSkgaXMgYWx3YXlzIGFuCisgICAgICAgIGVt
cHR5IHNldC4KKworICAgICAgICBBICc6OmRpc3RyaWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50IGlz
IHRoZSBmaXJzdC1ldmVyICpmdW5jdGlvbmFsKgorICAgICAgICBwc2V1ZG8gZWxlbWVudCB3aGlj
aCB0YWtlcyBwYXJhbWV0ZXIuICBJdCdzIGFsc28gdGhlIGZpcnN0IENTUworICAgICAgICBydWxl
IHdoaWNoIGNyb3NzZXMgdGhlIHNoYWRvdyBib3VuZGFyeSBmcm9tIGEgc2hhZG93IHRyZWUgdG8g
dGhlCisgICAgICAgIHRyZWUgb2YgaXRzIHNoYWRvdyBob3N0LiBUaGF0IG1lYW5zIGEgJzo6ZGlz
dHJpYnV0ZWQoKScgcHNldWRvCisgICAgICAgIGVsZW1lbnQgaXMgZGVmaW5lZCBpbiBzaGFkb3cg
dHJlZSwgYnV0IHRoZSBub2RlIHdoaWNoIGlzIG1hdGNoZWQKKyAgICAgICAgaW4gdGhlIHJ1bGUg
aXMgb3V0c2lkZSBvZiB0aGUgc2hhZG93IHRyZWUuIFRoZXJlZm9yZSwgd2UgY2Fubm90CisgICAg
ICAgIHByZWRpY3Qgd2hlcmUgdGhlIG1hdGNoZWQgbm9kZSB3aWxsIGJlIGJlZm9yZWhhbmQuICBD
dXJyZW50IENTUworICAgICAgICBpbXBsZW1lbnRhdGlvbiBhc3N1bWVzIHRoZSBmaW5hbCB0YXJn
ZXQgaXMgYXBwbGllZCBpbiB0aGUgY3VycmVudAorICAgICAgICBzY29wZS4KKworICAgICAgICBU
byBvdmVyY29tZSB0aGlzIGlzc3VlLCBTdHlsZVJlc29sdmVyIG5vdyBoYXMKKyAgICAgICAgU2hh
ZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLiAgQSBzdHlsZSBydWxlIHdpbGwgYmUgc3RvcmVkIGlu
IHRoaXMKKyAgICAgICAgUnVsZVNldE1hcCBpZiB0aGUgcnVsZSBpbmNsdWRlcyBhICc6OmRpc3Ry
aWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50LgorICAgICAgICBUaGlzIFJ1bGVTZXRNYXAgYWxzbyBr
ZWVwcyB0cmFjayBvZiBlYWNoIFJ1bGVTZXQKKyAgICAgICAgYnkgbWFwcGluZyBpdCB3aXRoIGEg
c2NvcGUgd2hlcmUgdGhlIHJ1bGUgd2FzIG9yaWdpbmFsbHkKKyAgICAgICAgZGVmaW5lZC4gSW4g
dGhlIGV4YW1wbGUsIHRoZSBzY29wZSBpcyAnQycuICBUaGUgc2NvcGUgaXMgdXNlZCB0bworICAg
ICAgICBjaGVjayB3aGV0aGVyIHRoZSBsZWZ0LW1vc3QgbWF0Y2hlZCBlbGVtZW50IChpbiB0aGUg
ZXhhbXBsZSwgaXQncworICAgICAgICBhIG5vZGUgJ0QnKSBleGlzdHMgaW4gdGhlIHNjb3BlLgor
CisgICAgICAgIEludGVybmFsbHksIGEgJzo6ZGlzdHJpYnV0ZWQnIHBzZXVkbyBlbGVtZW50IGlz
IHJlcHJlc2VudGVkIGJ5IGEKKyAgICAgICAgbmV3bHkgaW50cm9kdWNlZCAnU2hhZG93RGlzdHJp
YnV0ZWQnIHJlbGF0aW9uLiAgVGhhdCBtYWtlcyBhbgorICAgICAgICBpbXBsZW1lbnRhdGlvbiBv
ZiBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoKSBtdWNoIHNpbXBsZXIuCisgICAgICAg
IEEgdHJhbnNmb3JtYXRpb24gZnJvbSBhIGRpc3RyaWJ1dGVkIHBzZXVkbyBlbGVtZW50IHRvIGEK
KyAgICAgICAgU2hhZG93RGlzdHJpYnV0ZWQgaXMgZG9uZSBpbiBwYXJzaW5nIHN0YWdlIG9mIENT
Uy4KKworICAgICAgICBTaW5jZSAnOjpkaXN0cmlidXRlZCgpJyBpcyBhbiBleHBlcmltZW50YWwg
ZmVhdHVyZSwgaXQncyBhY3R1YWxseQorICAgICAgICBwcmVmaXhlZCB3aXRoICctd2Via2l0LScg
YW5kIGd1YXJkZWQgYnkgU0hBRE9XX0RPTSBmbGFnLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50Lmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC1tYXRjaC1hbGwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWRlc2NlbmRhbnQuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtbm8tbWF0Y2guaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBw
b3J0LXNlbGVjdG9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOgorICAgICAgICAq
IGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpkZXRlY3RE
YXNoVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpyZXdyaXRlU3BlY2lmaWVy
c1dpdGhFbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnJld3JpdGVT
cGVjaWZpZXJzKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgICogY3NzL0NT
U1BhcnNlclZhbHVlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6
Q1NTUGFyc2VyU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuaDoKKyAg
ICAgICAgKENTU1BhcnNlclNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNl
bGVjdG9yOjpmdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyU2VsZWN0b3I6OnNldEZ1bmN0aW9uQXJndW1lbnRTZWxlY3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6aXNEaXN0cmlidXRlZFBzZXVkb0VsZW1lbnQpOgor
ICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxl
Y3Rvcjo6cHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6bmFtZVRvUHNldWRvVHlwZU1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCk6CisgICAgICAgICogY3Nz
L0NTU1NlbGVjdG9yLmg6CisgICAgICAgIChDU1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjppc0Rpc3RyaWJ1dGVkUHNldWRvRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6aXNTaGFkb3dEaXN0cmlidXRl
ZCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFNlbGVjdG9ySGFzU2hhZG93RGlzdHJpYnV0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0b3JIYXNTaGFkb3dEaXN0cmlidXRlZDo6b3BlcmF0b3IoKSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTZWxlY3Rvckxpc3Q6Omhhc1NoYWRvd0Rpc3RyaWJ1dGVkQXQpOgorICAg
ICAgICAqIGNzcy9DU1NTZWxlY3Rvckxpc3QuaDoKKyAgICAgICAgKENTU1NlbGVjdG9yTGlzdCk6
CisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6
YWRkUnVsZXNGcm9tU2hlZXQpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKToKKyAgICAg
ICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNo
ZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0OjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCk6
CisgICAgICAgIChTZWxlY3RvckNoZWNraW5nQ29udGV4dCk6CisgICAgICAgICogY3NzL1NlbGVj
dG9yRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0
SWRlbnRpZmllckhhc2hlcyk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEaXN0cmlidXRlZFJ1bGVz
OjphZGRTaGFkb3dEaXN0cmlidXRlZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93RGlz
dHJpYnV0ZWRSdWxlczo6Y29sbGVjdE1hdGNoUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6cmVzZXRBdXRob3JTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVJlc29sdmVyOjphZGRTaGFkb3dEaXN0cmlidXRlZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bWF0Y2hTY29wZWRBdXRob3JSdWxlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRjaEhvc3RSdWxlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjptYXRjaEF1dGhvclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6Om1hdGNoVXNlclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UmVzb2x2ZXI6Om1hdGNoVUFSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
Ojpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6c3R5bGVTaGFyaW5nQ2FuZGlkYXRlTWF0Y2hlc1J1bGVTZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y2hlY2tTZWxlY3Rvcik6CisgICAgICAgICogY3NzL1N0
eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKE1hdGNoUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpNYXRjaFJlcXVlc3Q6Ok1hdGNoUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpNYXRjaFJl
cXVlc3Q6OnVwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTaGFkb3dEaXN0
cmlidXRlZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXM6
OmNsZWFyKToKKyAgICAgICAgKFN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93
L0luc2VydGlvblBvaW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0QWxsSW5zZXJ0aW9u
UG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEzLTAxLTA5ICBIdWFuZyBEb25nc3Vu
ZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFJlbW92ZSBkZXZpY2VTY2Fs
ZUZhY3RvciBhcmd1bWVudCBpbiBjb21wdXRlTWluaW11bVNjYWxlRmFjdG9yRm9yQ29udGVudENv
bnRhaW5lZCgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5p
biBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KaW5kZXggMWZkNDVlNDk1Y2U5
NmE1YWE0NWM2NGIxZGU5YmJmNjBjMGZlNzRjMy4uN2E4YzgyNjc4MzdiZWZiM2EwOTBjYmFiNjk0
Yzg3N2Q2MTYwNjI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIu
eS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCkBAIC02MSw3ICs2
MSwxMSBAQCBzdGF0aWMgaW5saW5lIGludCBjc3N5eWVycm9yKHZvaWQqLCBjb25zdCBjaGFyKikK
IAogJX0KIAorI2lmIEVOQUJMRV9TSEFET1dfRE9NCislZXhwZWN0IDY2CisjZWxzZQogJWV4cGVj
dCA2NQorI2VuZGlmCiAKICVub25hc3NvYyBMT1dFU1RfUFJFQwogCkBAIC0xNzcsNiArMTgxLDcg
QEAgc3RhdGljIGlubGluZSBpbnQgY3NzeXllcnJvcih2b2lkKiwgY29uc3QgY2hhciopCiAldG9r
ZW4gPHN0cmluZz4gQ1VFRlVOQ1RJT04KICNlbmRpZgogJXRva2VuIDxzdHJpbmc+IE5PVEZVTkNU
SU9OCisldG9rZW4gPHN0cmluZz4gRElTVFJJQlVURURGVU5DVElPTgogJXRva2VuIDxzdHJpbmc+
IENBTENGVU5DVElPTgogJXRva2VuIDxzdHJpbmc+IE1JTkZVTkNUSU9OCiAldG9rZW4gPHN0cmlu
Zz4gTUFYRlVOQ1RJT04KQEAgLTExNDQsMTIgKzExNDksMTIgQEAgc2ltcGxlX3NlbGVjdG9yOgog
ICAgIHwgZWxlbWVudF9uYW1lIHNwZWNpZmllcl9saXN0IHsKICAgICAgICAgJCQgPSAkMjsKICAg
ICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVs
ZW1lbnROYW1lKG51bGxBdG9tLCAkMSwgJCQpOworICAgICAgICAgICAgJCQgPSBwYXJzZXItPnJl
d3JpdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKG51bGxBdG9tLCAkMSwgJCQpOwogICAgIH0K
ICAgICB8IHNwZWNpZmllcl9saXN0IHsKICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgaWYgKCQk
KQotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKG51
bGxBdG9tLCBzdGFyQXRvbSwgJCQpOworICAgICAgICAgICAgJCQgPSBwYXJzZXItPnJld3JpdGVT
cGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKG51bGxBdG9tLCBzdGFyQXRvbSwgJCQpOwogICAgIH0K
ICAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBlbGVtZW50X25hbWUgewogICAgICAgICAkJCA9IHBh
cnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwpAQCAtMTE1OCwxMiArMTE2MywxMiBAQCBz
aW1wbGVfc2VsZWN0b3I6CiAgICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1lIHNw
ZWNpZmllcl9saXN0IHsKICAgICAgICAgJCQgPSAkMzsKICAgICAgICAgaWYgKCQkKQotICAgICAg
ICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKCQxLCAkMiwgJCQp
OworICAgICAgICAgICAgJCQgPSBwYXJzZXItPnJld3JpdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnRO
YW1lKCQxLCAkMiwgJCQpOwogICAgIH0KICAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBzcGVjaWZp
ZXJfbGlzdCB7CiAgICAgICAgICQkID0gJDI7CiAgICAgICAgIGlmICgkJCkKLSAgICAgICAgICAg
IHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSgkMSwgc3RhckF0b20sICQk
KTsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5yZXdyaXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50
TmFtZSgkMSwgc3RhckF0b20sICQkKTsKICAgICB9CiAgIDsKIApAQCAtMTIwOCw3ICsxMjEzLDcg
QEAgc3BlY2lmaWVyX2xpc3Q6CiAgICAgICAgIGlmICghJDIpCiAgICAgICAgICAgICAkJCA9IDA7
CiAgICAgICAgIGVsc2UgaWYgKCQxKQotICAgICAgICAgICAgJCQgPSBwYXJzZXItPnVwZGF0ZVNw
ZWNpZmllcnMoJDEsICQyKTsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5yZXdyaXRlU3BlY2lm
aWVycygkMSwgJDIpOwogICAgIH0KICAgICB8IHNwZWNpZmllcl9saXN0IGVycm9yIHsKICAgICAg
ICAgJCQgPSAwOwpAQCAtMTM1NSw2ICsxMzYwLDE5IEBAIHBzZXVkbzoKICAgICAgICAgICAgICQk
ID0gMDsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEVfU0hBRE9XX0RPTQorICAgIHwgJzonICc6
JyBESVNUUklCVVRFREZVTkNUSU9OIG1heWJlX3NwYWNlIHNlbGVjdG9yIG1heWJlX3NwYWNlICcp
JyB7CisgICAgICAgIGlmICghJDUpCisgICAgICAgICAgICAkJCA9IDA7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAg
ICAgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCk7CisgICAg
ICAgICAgICAkJC0+c2V0RnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKCQ1KTsKKyAgICAgICAgICAg
ICQzLmxvd2VyKCk7CisgICAgICAgICAgICAkJC0+c2V0VmFsdWUoJDMpOworICAgICAgICB9Cisg
ICAgfQorI2VuZGlmCiAgICAgLy8gdXNlIGJ5IDotd2Via2l0LWFueS4KICAgICAvLyBGSVhNRTog
c2hvdWxkIHdlIHN1cHBvcnQgZ2VuZXJpYyBzZWxlY3RvcnMgaGVyZSBvciBqdXN0IHNpbXBsZV9z
ZWxlY3RvcnM/CiAgICAgLy8gVXNlIHNpbXBsZV9zZWxlY3Rvcl9saXN0IGZvciBub3cgdG8gbWF0
Y2ggLW1vei1hbnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDA0OGI1Mzc2NjEwNDQ2
ZWMwMzU2MmQzYWI4ZWMyYzc0M2UzODY5M2YuLjUzY2Y4YzNiNDllNDZkYWFhOGU2YTFjNzA5ZGQz
OTI0OTNlOTAyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC05NjcyLDYgKzk2NzIs
MTAgQEAgaW5saW5lIHZvaWQgQ1NTUGFyc2VyOjpkZXRlY3REYXNoVG9rZW4oaW50IGxlbmd0aCkK
ICNlbmRpZgogICAgIH0gZWxzZSBpZiAobGVuZ3RoID09IDEyICYmIGlzRXF1YWxUb0NTU0lkZW50
aWZpZXIobmFtZSArIDEsICJ3ZWJraXQtY2FsYyIpKQogICAgICAgICBtX3Rva2VuID0gQ0FMQ0ZV
TkNUSU9OOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGVsc2UgaWYgKGxlbmd0aCA9PSAx
OSAmJiBpc0VxdWFsVG9DU1NJZGVudGlmaWVyKG5hbWUgKyAxLCAid2Via2l0LWRpc3RyaWJ1dGVk
IikpCisgICAgICAgIG1fdG9rZW4gPSBESVNUUklCVVRFREZVTkNUSU9OOworI2VuZGlmCiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgpAQCAtMTA2MDYsMTYgKzEwNjEwLDMy
IEBAIFF1YWxpZmllZE5hbWUgQ1NTUGFyc2VyOjpkZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoY29u
c3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvCiAgICAgcmV0dXJuIFF1YWxpZmllZE5hbWUocHJl
Zml4LCBsb2NhbE5hbWUsIG1fc3R5bGVTaGVldC0+ZGV0ZXJtaW5lTmFtZXNwYWNlKHByZWZpeCkp
OwogfQogCi12b2lkIENTU1BhcnNlcjo6dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBl
bGVtZW50TmFtZSwgQ1NTUGFyc2VyU2VsZWN0b3IqIHNwZWNpZmllcnMpCitDU1NQYXJzZXJTZWxl
Y3RvciogQ1NTUGFyc2VyOjpyZXdyaXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWVzcGFjZVByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50
TmFtZSwgQ1NTUGFyc2VyU2VsZWN0b3IqIHNwZWNpZmllcnMpCiB7CiAgICAgQXRvbWljU3RyaW5n
IGRldGVybWluZWROYW1lc3BhY2UgPSBuYW1lc3BhY2VQcmVmaXggIT0gbnVsbEF0b20gJiYgbV9z
dHlsZVNoZWV0ID8gbV9zdHlsZVNoZWV0LT5kZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNwYWNlUHJl
Zml4KSA6IG1fZGVmYXVsdE5hbWVzcGFjZTsKICAgICBRdWFsaWZpZWROYW1lIHRhZyA9IFF1YWxp
ZmllZE5hbWUobmFtZXNwYWNlUHJlZml4LCBlbGVtZW50TmFtZSwgZGV0ZXJtaW5lZE5hbWVzcGFj
ZSk7CisKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBpZiAoc3BlY2lmaWVycy0+aXNEaXN0
cmlidXRlZFBzZXVkb0VsZW1lbnQoKSkgeworICAgICAgICBDU1NQYXJzZXJTZWxlY3RvciogYXJn
dW1lbnRTZWxlY3RvciA9IHNwZWNpZmllcnMtPmZ1bmN0aW9uQXJndW1lbnRTZWxlY3RvcigpOwor
ICAgICAgICBBU1NFUlQoYXJndW1lbnRTZWxlY3Rvcik7CisgICAgICAgIENTU1BhcnNlclNlbGVj
dG9yKiBlbmQgPSBhcmd1bWVudFNlbGVjdG9yOworICAgICAgICB3aGlsZSAoZW5kLT50YWdIaXN0
b3J5KCkpCisgICAgICAgICAgICBlbmQgPSBlbmQtPnRhZ0hpc3RvcnkoKTsKKyAgICAgICAgT3du
UHRyPENTU1BhcnNlclNlbGVjdG9yPiBlbGVtZW50TmFtZVNlbGVjdG9yID0gYWRvcHRQdHIobmV3
IENTU1BhcnNlclNlbGVjdG9yKTsKKyAgICAgICAgZWxlbWVudE5hbWVTZWxlY3Rvci0+c2V0VGFn
KHRhZyk7CisgICAgICAgIGVuZC0+c2V0VGFnSGlzdG9yeShlbGVtZW50TmFtZVNlbGVjdG9yLnJl
bGVhc2UoKSk7CisgICAgICAgIGVuZC0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6OlNoYWRvd0Rp
c3RyaWJ1dGVkKTsKKyAgICAgICAgcmV0dXJuIGFyZ3VtZW50U2VsZWN0b3I7CisgICAgfQorI2Vu
ZGlmCisKICAgICBpZiAoIXNwZWNpZmllcnMtPmlzQ3VzdG9tUHNldWRvRWxlbWVudCgpKSB7CiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICAgICBpZiAoIShzcGVjaWZpZXJzLT5wc2V1ZG9U
eXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0N1ZSkpCiAjZW5kaWYKICAgICAgICAgICAgIHNw
ZWNpZmllcnMtPnNldFRhZyh0YWcpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBz
cGVjaWZpZXJzOwogICAgIH0KIAogICAgIENTU1BhcnNlclNlbGVjdG9yKiBsYXN0U2hhZG93RGVz
Y2VuZGFudCA9IHNwZWNpZmllcnM7CkBAIC0xMDYyOCw3ICsxMDY0OCw3IEBAIHZvaWQgQ1NTUGFy
c2VyOjp1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZXNwYWNlUHJlCiAKICAgICBpZiAobGFzdFNoYWRvd0Rlc2NlbmRhbnQtPnRhZ0hpc3Rvcnko
KSkgewogICAgICAgICBsYXN0U2hhZG93RGVzY2VuZGFudC0+dGFnSGlzdG9yeSgpLT5zZXRUYWco
dGFnKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gc3BlY2lmaWVyczsKICAgICB9
CiAKICAgICAvLyBGb3Igc2hhZG93LUlEIHBzZXVkby1lbGVtZW50cyB0byBiZSBjb3JyZWN0bHkg
bWF0Y2hlZCwgdGhlIFNoYWRvd0Rlc2NlbmRhbnQgY29tYmluYXRvciBoYXMgdG8gYmUgdXNlZC4K
QEAgLTEwNjM3LDkgKzEwNjU3LDEwIEBAIHZvaWQgQ1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJz
V2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlCiAgICAgZWxl
bWVudE5hbWVTZWxlY3Rvci0+c2V0VGFnKHRhZyk7CiAgICAgbGFzdFNoYWRvd0Rlc2NlbmRhbnQt
PnNldFRhZ0hpc3RvcnkoZWxlbWVudE5hbWVTZWxlY3Rvci5yZWxlYXNlKCkpOwogICAgIGxhc3RT
aGFkb3dEZXNjZW5kYW50LT5zZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6U2hhZG93RGVzY2VuZGFu
dCk7CisgICAgcmV0dXJuIHNwZWNpZmllcnM7CiB9CiAKLUNTU1BhcnNlclNlbGVjdG9yKiBDU1NQ
YXJzZXI6OnVwZGF0ZVNwZWNpZmllcnMoQ1NTUGFyc2VyU2VsZWN0b3IqIHNwZWNpZmllcnMsIENT
U1BhcnNlclNlbGVjdG9yKiBuZXdTcGVjaWZpZXIpCitDU1NQYXJzZXJTZWxlY3RvciogQ1NTUGFy
c2VyOjpyZXdyaXRlU3BlY2lmaWVycyhDU1NQYXJzZXJTZWxlY3Rvciogc3BlY2lmaWVycywgQ1NT
UGFyc2VyU2VsZWN0b3IqIG5ld1NwZWNpZmllcikKIHsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CiAgICAgaWYgKG5ld1NwZWNpZmllci0+aXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkgfHwgbmV3U3Bl
Y2lmaWVyLT5wc2V1ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0N1ZSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5oCmluZGV4IDM5MmZmOTg0MGM1YTZjODM5YzJmMjE0NDM3YWI3NTg0YmI3MjVh
OWQuLjcxYjAyNjZkM2MzNWQzN2FiY2MyMTI5OTNiMTY5NGZjZGUzZjY2ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmgKQEAgLTMwOSw4ICszMDksOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZE5h
bWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiB1
cmkpOwogICAgIFF1YWxpZmllZE5hbWUgZGV0ZXJtaW5lTmFtZUluTmFtZXNwYWNlKGNvbnN0IEF0
b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSk7Ci0gICAg
dm9pZCB1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZXNwYWNlUHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnROYW1lLCBDU1NQYXJz
ZXJTZWxlY3RvciopOwotICAgIENTU1BhcnNlclNlbGVjdG9yKiB1cGRhdGVTcGVjaWZpZXJzKENT
U1BhcnNlclNlbGVjdG9yKiwgQ1NTUGFyc2VyU2VsZWN0b3IqKTsKKyAgICBDU1NQYXJzZXJTZWxl
Y3RvciogcmV3cml0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lc3BhY2VQcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudE5hbWUsIENTU1Bh
cnNlclNlbGVjdG9yKik7CisgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIHJld3JpdGVTcGVjaWZpZXJz
KENTU1BhcnNlclNlbGVjdG9yKiwgQ1NTUGFyc2VyU2VsZWN0b3IqKTsKIAogICAgIHZvaWQgaW52
YWxpZEJsb2NrSGl0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXJWYWx1ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKaW5k
ZXggZDIzYjg1ODVkNWQ3YmI4ZWIwZjI2ODIzNGI2ZWQwNmE1ODgxZGYyNy4uZTVhMGIzNzdlN2Vk
NzYwNWQyZjkyNjc0ZjNmOGE2ZjM3OWZhZjI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
clZhbHVlcy5jcHAKQEAgLTE0Niw2ICsxNDYsOSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQ
YXJzZXJWYWx1ZTo6Y3JlYXRlQ1NTVmFsdWUoKQogCiBDU1NQYXJzZXJTZWxlY3Rvcjo6Q1NTUGFy
c2VyU2VsZWN0b3IoKQogICAgIDogbV9zZWxlY3RvcihhZG9wdFB0cihmYXN0TmV3PENTU1NlbGVj
dG9yPigpKSkKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAsIG1fZnVuY3Rpb25Bcmd1bWVu
dFNlbGVjdG9yKDApCisjZW5kaWYKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlclZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVl
cy5oCmluZGV4IDEzMDFiMWNlMGUxMTM3MjNjY2Y4MjE2MjhlZTA1ZTJlMzEwMjM2N2IuLjJjZDQw
OTk0ZjAxZmJmZWU3Y2U2Y2IwMTA4M2Y0MTQ5NTM5YTE0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyVmFsdWVzLmgKQEAgLTE4Niw2ICsxODYsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBh
ZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4mIHNl
bGVjdG9yVmVjdG9yKTsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIENTU1BhcnNlclNl
bGVjdG9yKiBmdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0
aW9uQXJndW1lbnRTZWxlY3RvcjsgfQorICAgIHZvaWQgc2V0RnVuY3Rpb25Bcmd1bWVudFNlbGVj
dG9yKENTU1BhcnNlclNlbGVjdG9yKiBzZWxlY3RvcikgeyBtX2Z1bmN0aW9uQXJndW1lbnRTZWxl
Y3RvciA9IHNlbGVjdG9yOyB9CisgICAgYm9vbCBpc0Rpc3RyaWJ1dGVkUHNldWRvRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3ItPmlzRGlzdHJpYnV0ZWRQc2V1ZG9FbGVtZW50KCk7
IH0KKyNlbmRpZgorCiAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgcHNldWRvVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2VsZWN0b3ItPnBzZXVkb1R5cGUoKTsgfQogICAgIGJvb2wgaXNDdXN0
b21Qc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvci0+aXNDdXN0b21Qc2V1
ZG9FbGVtZW50KCk7IH0KIApAQCAtMjAwLDYgKzIwNiw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgT3duUHRyPENTU1NlbGVjdG9yPiBtX3NlbGVjdG9yOwogICAgIE93blB0cjxDU1NQYXJzZXJT
ZWxlY3Rvcj4gbV90YWdIaXN0b3J5OworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIENTU1Bh
cnNlclNlbGVjdG9yKiBtX2Z1bmN0aW9uQXJndW1lbnRTZWxlY3RvcjsKKyNlbmRpZgogfTsKIAog
aW5saW5lIGJvb2wgQ1NTUGFyc2VyU2VsZWN0b3I6Omhhc1NoYWRvd0Rlc2NlbmRhbnQoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXggNWE2ZWNjYWZiOTQyYzBkNmZhNzNh
NjJiNmZmYzc0MjFmM2NhYTllYy4uN2Q4NDc0YjUzMTNlYWY5NDdkOWY4MDQ2NWE3MDRhNmZjYjJh
ZmE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCkBAIC0yMjcsNiArMjI3LDkgQEAg
UHNldWRvSWQgQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVkb1R5cGUgdHlwZSkKICNpZiBFTkFC
TEUoSUZSQU1FX1NFQU1MRVNTKQogICAgIGNhc2UgUHNldWRvU2VhbWxlc3NEb2N1bWVudDoKICNl
bmRpZgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGNhc2UgUHNldWRvRGlzdHJpYnV0ZWQ6
CisjZW5kaWYKICAgICAgICAgcmV0dXJuIE5PUFNFVURPOwogICAgIGNhc2UgUHNldWRvTm90UGFy
c2VkOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTMxNiw2ICszMTksOSBAQCBz
dGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGU+
KiBuYW1lVG9Qc2V1ZG9UeXBlTWFwKAogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCiAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNlYW1sZXNzRG9jdW1lbnQsICgiLXdl
YmtpdC1zZWFtbGVzcy1kb2N1bWVudCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKICNlbmRpZgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBkaXN0cmlidXRlZCwgKCItd2Via2l0LWRpc3RyaWJ1dGVkKCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyNlbmRpZgogICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpblJhbmdlLCAoImluLXJhbmdlIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBvdXRPZlJhbmdlLCAoIm91dC1vZi1yYW5nZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIApAQCAtMzk4LDYgKzQwNCw5IEBAIHN0YXRpYyBIYXNo
TWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1Bz
ZXVkb1R5cGVNYXAoCiAjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKICAgICAgICAgbmFtZVRv
UHNldWRvVHlwZS0+c2V0KHNlYW1sZXNzRG9jdW1lbnQuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNl
dWRvU2VhbWxlc3NEb2N1bWVudCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAg
ICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGRpc3RyaWJ1dGVkLmltcGwoKSwgQ1NTU2VsZWN0
b3I6OlBzZXVkb0Rpc3RyaWJ1dGVkKTsKKyNlbmRpZgogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBl
LT5zZXQoaW5SYW5nZS5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9JblJhbmdlKTsKICAgICAg
ICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KG91dE9mUmFuZ2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6
UHNldWRvT3V0T2ZSYW5nZSk7CiAgICAgfQpAQCAtNDQ4LDYgKzQ1Nyw5IEBAIHZvaWQgQ1NTU2Vs
ZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY29uc3QKICAgICBjYXNlIFBzZXVkb0ZpcnN0TGV0
dGVyOgogICAgIGNhc2UgUHNldWRvRmlyc3RMaW5lOgogICAgICAgICBjb21wYXQgPSB0cnVlOwor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGNhc2UgUHNldWRvRGlzdHJpYnV0ZWQ6CisjZW5k
aWYKICAgICBjYXNlIFBzZXVkb1Jlc2l6ZXI6CiAgICAgY2FzZSBQc2V1ZG9TY3JvbGxiYXI6CiAg
ICAgY2FzZSBQc2V1ZG9TY3JvbGxiYXJDb3JuZXI6CkBAIC02ODQsNiArNjk2LDEwIEBAIFN0cmlu
ZyBDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KCkgY29uc3QKICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50
OgogICAgICAgICAgICAgcmV0dXJuIHRhZ0hpc3RvcnlUZXh0ICsgc3RyLnRvU3RyaW5nKCk7Cisj
aWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rp
c3RyaWJ1dGVkOgorICAgICAgICAgICAgcmV0dXJuIHRhZ0hpc3RvcnlUZXh0ICsgIjo6LXdlYmtp
dC1kaXN0cmlidXRlZCgiICsgc3RyLnRvU3RyaW5nKCkgKyAiKSI7CisjZW5kaWYKICAgICAgICAg
fQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCAwNjQ5OGY0ZWM3ODEyYzY2
OWE1NjcyMzVlNTVhOTllNDU4ZmRhMjUyLi4yMzA2OTU0Mzk1MWE5ODU4NGUxYjdkYjAwYjU5ZjUw
ODRlOWMwMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApAQCAtNzYsNyArNzYsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgRGlyZWN0QWRqYWNlbnQsCiAgICAgICAg
ICAgICBJbmRpcmVjdEFkamFjZW50LAogICAgICAgICAgICAgU3ViU2VsZWN0b3IsCi0gICAgICAg
ICAgICBTaGFkb3dEZXNjZW5kYW50CisgICAgICAgICAgICBTaGFkb3dEZXNjZW5kYW50LAorI2lm
IEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICAgICAgU2hhZG93RGlzdHJpYnV0ZWQKKyNlbmRp
ZgogICAgICAgICB9OwogCiAgICAgICAgIGVudW0gUHNldWRvVHlwZSB7CkBAIC0xNjEsNyArMTY0
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFBzZXVkb0Z1dHVyZUN1ZSwK
ICNlbmRpZgogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCi0gICAgICAgICAgICBQc2V1ZG9T
ZWFtbGVzc0RvY3VtZW50CisgICAgICAgICAgICBQc2V1ZG9TZWFtbGVzc0RvY3VtZW50LAorI2Vu
ZGlmCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgICAgICBQc2V1ZG9EaXN0cmlidXRl
ZAogI2VuZGlmCiAgICAgICAgIH07CiAKQEAgLTIyMyw2ICsyMjksMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBib29sIGlzQ3VzdG9tUHNldWRvRWxlbWVudCgpIGNvbnN0OwogICAg
ICAgICBib29sIGlzU2libGluZ1NlbGVjdG9yKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNBdHRy
aWJ1dGVTZWxlY3RvcigpIGNvbnN0OworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICBi
b29sIGlzRGlzdHJpYnV0ZWRQc2V1ZG9FbGVtZW50KCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNT
aGFkb3dEaXN0cmlidXRlZCgpIGNvbnN0OworI2VuZGlmCiAKICAgICAgICAgUmVsYXRpb24gcmVs
YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZWxhdGlvbj4obV9yZWxhdGlvbik7
IH0KIApAQCAtMzM1LDYgKzM0NSwxOCBAQCBpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6aXNBdHRy
aWJ1dGVTZWxlY3RvcigpIGNvbnN0CiAgICAgICAgIHx8IG1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6
OkVuZDsKIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQoraW5saW5lIGJvb2wgQ1NTU2VsZWN0
b3I6OmlzRGlzdHJpYnV0ZWRQc2V1ZG9FbGVtZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9t
YXRjaCA9PSBQc2V1ZG9FbGVtZW50ICYmIHBzZXVkb1R5cGUoKSA9PSBQc2V1ZG9EaXN0cmlidXRl
ZDsKK30KKworaW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6OmlzU2hhZG93RGlzdHJpYnV0ZWQoKSBj
b25zdAoreworICAgIHJldHVybiBtX3JlbGF0aW9uID09IENTU1NlbGVjdG9yOjpTaGFkb3dEaXN0
cmlidXRlZDsKK30KKyNlbmRpZgorCiBpbmxpbmUgdm9pZCBDU1NTZWxlY3Rvcjo6c2V0VmFsdWUo
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyBOZWVkIHRvIGRvIHJlZiBjb3Vu
dGluZyBtYW51YWxseSBmb3IgdGhlIHVuaW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JM
aXN0LmNwcAppbmRleCA0MzEzNmQxYzkwMWM2MzQxYmFjYmVmODM5NDlkZjk0ZTYwZjFjMzZjLi5j
NTI5M2ZiMmEyMDNlZDZmMTlmYzU3MTUyMzZiNWQ5ZjY2NGJmNTMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2VsZWN0b3JMaXN0LmNwcApAQCAtMjExLDYgKzIxMSwyMSBAQCBib29sIENTU1NlbGVj
dG9yTGlzdDo6aGFzSW52YWxpZFNlbGVjdG9yKCkgY29uc3QKICAgICByZXR1cm4gZm9yRWFjaFNl
bGVjdG9yKGZ1bmN0b3IsIHRoaXMpOwogfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCitjbGFz
cyBTZWxlY3Rvckhhc1NoYWRvd0Rpc3RyaWJ1dGVkIHsKK3B1YmxpYzoKKyAgICBib29sIG9wZXJh
dG9yKCkoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbGVj
dG9yLT5pc1NoYWRvd0Rpc3RyaWJ1dGVkKCk7CisgICAgfQorfTsKKworYm9vbCBDU1NTZWxlY3Rv
ckxpc3Q6Omhhc1NoYWRvd0Rpc3RyaWJ1dGVkQXQoc2l6ZV90IGluZGV4KSBjb25zdAoreworICAg
IFNlbGVjdG9ySGFzU2hhZG93RGlzdHJpYnV0ZWQgZnVuY3RvcjsKKyAgICByZXR1cm4gZm9yRWFj
aFRhZ1NlbGVjdG9yKGZ1bmN0b3IsIHNlbGVjdG9yQXQoaW5kZXgpKTsKK30KIAorI2VuZGlmCiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvckxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaApp
bmRleCA0ZmNmZWUyZmFhNDE4MmQ3YTlhYjA1NWJjY2U1MTlmZTc0ZTIyNzE1Li40ZTdiNTgyZGJj
NTExOGE0NWU0NmRiYmYwY2Q4OTRhOWY3NDNmNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yTGlzdC5oCkBAIC02MCw2ICs2MCwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZWxlY3RvcnNO
ZWVkTmFtZXNwYWNlUmVzb2x1dGlvbigpOwogICAgIGJvb2wgaGFzSW52YWxpZFNlbGVjdG9yKCkg
Y29uc3Q7CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBib29sIGhhc1NoYWRvd0Rpc3Ry
aWJ1dGVkQXQoc2l6ZV90IGluZGV4KSBjb25zdDsKKyNlbmRpZgorCiAgICAgU3RyaW5nIHNlbGVj
dG9yc1RleHQoKSBjb25zdDsKIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCmluZGV4IGQ4NDAwNGQ5Y2NjMTQ4
NDNlNGI0MGE2YmQ2MmFjNzJhOGRmYjIyZWIuLmJiMTQ4OTM3NTk1MmQyZTFjOTk2MGM1YmMzYjRl
ZjRlMjg1ZDM5ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKQEAgLTI4Nyw5ICsyODcsMjUgQEAg
dm9pZCBSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVudHMqIHNoZWV0
LCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHUKICAgICAgICAgU3R5bGVSdWxlQmFzZSogcnVsZSA9IHJ1
bGVzW2ldLmdldCgpOwogCiAgICAgICAgIEFTU0VSVCghcnVsZS0+aXNJbXBvcnRSdWxlKCkpOwot
ICAgICAgICBpZiAocnVsZS0+aXNTdHlsZVJ1bGUoKSkKLSAgICAgICAgICAgIGFkZFN0eWxlUnVs
ZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihydWxlKSwgYWRkUnVsZUZsYWdzKTsKLSAgICAgICAg
ZWxzZSBpZiAocnVsZS0+aXNQYWdlUnVsZSgpKQorICAgICAgICBpZiAocnVsZS0+aXNTdHlsZVJ1
bGUoKSkgeworICAgICAgICAgICAgU3R5bGVSdWxlKiBzdHlsZVJ1bGUgPSBzdGF0aWNfY2FzdDxT
dHlsZVJ1bGUqPihydWxlKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgICAgIGlm
ICghc2NvcGUpCisgICAgICAgICAgICAgICAgYWRkU3R5bGVSdWxlKHN0eWxlUnVsZSwgYWRkUnVs
ZUZsYWdzKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGNvbnN0IENTU1Nl
bGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0ID0gc3R5bGVSdWxlLT5zZWxlY3Rvckxpc3QoKTsKKyAg
ICAgICAgICAgICAgICBmb3IgKHNpemVfdCBzZWxlY3RvckluZGV4ID0gMDsgc2VsZWN0b3JJbmRl
eCAhPSBub3RGb3VuZDsgc2VsZWN0b3JJbmRleCA9IHNlbGVjdG9yTGlzdC5pbmRleE9mTmV4dFNl
bGVjdG9yQWZ0ZXIoc2VsZWN0b3JJbmRleCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNl
bGVjdG9yTGlzdC5oYXNTaGFkb3dEaXN0cmlidXRlZEF0KHNlbGVjdG9ySW5kZXgpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzb2x2ZXItPmFkZFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZShzdHls
ZVJ1bGUsIHNlbGVjdG9ySW5kZXgsIGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSo+KHNjb3BlKSwg
YWRkUnVsZUZsYWdzKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgYWRkUnVsZShzdHlsZVJ1bGUsIHNlbGVjdG9ySW5kZXgsIGFkZFJ1bGVGbGFncyk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgICAgIGFk
ZFN0eWxlUnVsZShzdHlsZVJ1bGUsIGFkZFJ1bGVGbGFncyk7CisjZW5kaWYKKworICAgICAgICB9
IGVsc2UgaWYgKHJ1bGUtPmlzUGFnZVJ1bGUoKSkKICAgICAgICAgICAgIGFkZFBhZ2VSdWxlKHN0
YXRpY19jYXN0PFN0eWxlUnVsZVBhZ2UqPihydWxlKSk7CiAgICAgICAgIGVsc2UgaWYgKHJ1bGUt
PmlzTWVkaWFSdWxlKCkpIHsKICAgICAgICAgICAgIFN0eWxlUnVsZU1lZGlhKiBtZWRpYVJ1bGUg
PSBzdGF0aWNfY2FzdDxTdHlsZVJ1bGVNZWRpYSo+KHJ1bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcAppbmRleCAyYTM1ZmQwNmZiMmM1Yzk4NTVkNDUxMDcxOGIyMGU2OTBl
ZjU5ZWU5Li4xMTE2YWRiYzI3YjNjODlhYzY4MzZlNTY0NWYwNGJkODczZDZhMDMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1
ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFByb2dyZXNzRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbnNlcnRpb25Qb2lu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk5v
ZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTI4MSw4ICsyODIsMTMgQEAg
U2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxl
Y3Rvcihjb25zdCBTZWxlY3RvckNoZWMKIAogICAgIC8vIFByZXBhcmUgbmV4dCBzZWxlY3Rvcgog
ICAgIENTU1NlbGVjdG9yKiBoaXN0b3J5U2VsZWN0b3IgPSBjb250ZXh0LnNlbGVjdG9yLT50YWdI
aXN0b3J5KCk7Ci0gICAgaWYgKCFoaXN0b3J5U2VsZWN0b3IpCisgICAgaWYgKCFoaXN0b3J5U2Vs
ZWN0b3IpIHsKKyAgICAgICAgaWYgKGNvbnRleHQuY3Jvc3NCb3VuZGFyeSA9PSBDcm9zc2VzQm91
bmRhcnkpIHsKKyAgICAgICAgICAgIEFTU0VSVChjb250ZXh0LnNjb3BlKTsKKyAgICAgICAgICAg
IHJldHVybiBjb250ZXh0LnNjb3BlLT5jb250YWlucyhjb250ZXh0LmVsZW1lbnQpID8gU2VsZWN0
b3JNYXRjaGVzIDogU2VsZWN0b3JGYWlsc0xvY2FsbHk7CisgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIFNlbGVjdG9yTWF0Y2hlczsKKyAgICB9CiAKICAgICBTZWxlY3RvckNoZWNraW5nQ29udGV4
dCBuZXh0Q29udGV4dChjb250ZXh0KTsKICAgICBuZXh0Q29udGV4dC5zZWxlY3RvciA9IGhpc3Rv
cnlTZWxlY3RvcjsKQEAgLTM4NCw2ICszOTAsMjYgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rv
ck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWMK
ICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9IDA7CiAgICAgICAg
ICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihuZXh0Q29udGV4dCwgaWdub3JlRHluYW1pY1BzZXVk
byk7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBjYXNlIENTU1NlbGVj
dG9yOjpTaGFkb3dEaXN0cmlidXRlZDoKKyAgICAgICAgeworICAgICAgICAgICAgVmVjdG9yPElu
c2VydGlvblBvaW50KiwgOD4gaW5zZXJ0aW9uUG9pbnRzOworICAgICAgICAgICAgZm9yIChFbGVt
ZW50KiBlbGVtZW50ID0gY29udGV4dC5lbGVtZW50OyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVu
dC0+cGFyZW50RWxlbWVudCgpKSB7CisgICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnRzLmNs
ZWFyKCk7CisgICAgICAgICAgICAgICAgY29sbGVjdEFsbEluc2VydGlvblBvaW50cyhlbGVtZW50
LCBpbnNlcnRpb25Qb2ludHMpOworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgaW5zZXJ0aW9uUG9pbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIG5l
eHRDb250ZXh0LmVsZW1lbnQgPSBpbnNlcnRpb25Qb2ludHNbaV07CisgICAgICAgICAgICAgICAg
ICAgIG5leHRDb250ZXh0LmlzU3ViU2VsZWN0b3IgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgbmV4dENvbnRleHQuZWxlbWVudFN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbmV4
dENvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgU2Vs
ZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3IobmV4dENvbnRleHQsIGlnbm9yZUR5bmFt
aWNQc2V1ZG8pOworICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2ggPT0gU2VsZWN0b3JNYXRj
aGVzKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29t
cGxldGVseTsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXggMzMxOTNmNzZiYzMy
ODI2YWQwZDNlZTYxNDUxNWI5YmFjNWQyNTIwYi4uNTEzMThjMmE2MjJmMjc0NmExYTYxMTM5Y2Iw
MDNjMjhiOGYzOGZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaApAQCAtNDks
NiArNDksNyBAQCBwdWJsaWM6CiAgICAgZW51bSBTZWxlY3Rvck1hdGNoIHsgU2VsZWN0b3JNYXRj
aGVzLCBTZWxlY3RvckZhaWxzTG9jYWxseSwgU2VsZWN0b3JGYWlsc0FsbFNpYmxpbmdzLCBTZWxl
Y3RvckZhaWxzQ29tcGxldGVseSB9OwogICAgIGVudW0gVmlzaXRlZE1hdGNoVHlwZSB7IFZpc2l0
ZWRNYXRjaERpc2FibGVkLCBWaXNpdGVkTWF0Y2hFbmFibGVkIH07CiAgICAgZW51bSBNb2RlIHsg
UmVzb2x2aW5nU3R5bGUgPSAwLCBDb2xsZWN0aW5nUnVsZXMsIFF1ZXJ5aW5nUnVsZXMsIFNoYXJp
bmdSdWxlcyB9OworICAgIGVudW0gQ3Jvc3NCb3VuZGFyeSB7IERvZXNOb3RDcm9zc0JvdW5kYXJ5
LCBDcm9zc2VzQm91bmRhcnkgfTsKIAogICAgIHN0cnVjdCBTZWxlY3RvckNoZWNraW5nQ29udGV4
dCB7CiAgICAgICAgIC8vIEluaXRpYWwgc2VsZWN0b3IgY29uc3RydWN0b3IKQEAgLTYzLDYgKzY0
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgLCBpc1N1YlNlbGVjdG9yKGZhbHNlKQogICAgICAg
ICAgICAgLCBoYXNTY3JvbGxiYXJQc2V1ZG8oZmFsc2UpCiAgICAgICAgICAgICAsIGhhc1NlbGVj
dGlvblBzZXVkbyhmYWxzZSkKKyAgICAgICAgICAgICwgY3Jvc3NCb3VuZGFyeShEb2VzTm90Q3Jv
c3NCb3VuZGFyeSkKICAgICAgICAgeyB9CiAKICAgICAgICAgQ1NTU2VsZWN0b3IqIHNlbGVjdG9y
OwpAQCAtNzUsNiArNzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXNTdWJTZWxlY3RvcjsK
ICAgICAgICAgYm9vbCBoYXNTY3JvbGxiYXJQc2V1ZG87CiAgICAgICAgIGJvb2wgaGFzU2VsZWN0
aW9uUHNldWRvOworICAgICAgICBDcm9zc0JvdW5kYXJ5IGNyb3NzQm91bmRhcnk7CiAgICAgfTsK
IAogICAgIGJvb2wgY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBib29sIGlz
RmFzdENoZWNrYWJsZVNlbGVjdG9yID0gZmFsc2UpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxl
Y3RvckZpbHRlci5jcHAKaW5kZXggY2VhYTc2ODE0OTAwYzBiMzFkMzk0YzRmMjZjYzRjYmI1ZTM1
ZThkYy4uNmIzOTA2NWU4MDk2Mzg3MGRkYjUwZDg1Yzk3ZjUzYzM4YTE3NTQwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwCkBAIC0xNDgsNiArMTQ4LDkgQEAgdm9pZCBTZWxl
Y3RvckZpbHRlcjo6Y29sbGVjdElkZW50aWZpZXJIYXNoZXMoY29uc3QgQ1NTU2VsZWN0b3IqIHNl
bGVjdG9yLCB1bnNpZ24KICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RGlyZWN0QWRqYWNlbnQ6
CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkluZGlyZWN0QWRqYWNlbnQ6CiAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rlc2NlbmRhbnQ6CisjaWYgRU5BQkxFKFNIQURPV19ET00p
CisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rpc3RyaWJ1dGVkOgorI2VuZGlmCiAg
ICAgICAgICAgICBza2lwT3ZlclN1YnNlbGVjdG9ycyA9IHRydWU7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcAppbmRleCAwOThlMGQ1N2MwYjdlMWQ3NGVkMTUwOGY3ZTkwMGQ1MTZj
MmU5NzBkLi43NzQ0ZjM1YjkxM2IzNWU1NGM5ZTExYmM4NmE5ZWYxZDY1M2YwZTFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0yNTgsNiArMjU4LDI2IEBAIHN0YXRpYyBT
dHlsZVByb3BlcnR5U2V0KiByaWdodFRvTGVmdERlY2xhcmF0aW9uKCkKICAgICByZXR1cm4gcmln
aHRUb0xlZnREZWNsLmdldCgpOwogfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCit2b2lkIFNo
YWRvd0Rpc3RyaWJ1dGVkUnVsZXM6OmFkZFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZShTdHlsZVJ1bGUq
IHJ1bGUsIHNpemVfdCBzZWxlY3RvckluZGV4LCBDb250YWluZXJOb2RlKiBzY29wZSwgQWRkUnVs
ZUZsYWdzIGFkZFJ1bGVGbGFncykKK3sKKyAgICBpZiAobV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVT
ZXRNYXAuY29udGFpbnMoc2NvcGUpKQorICAgICAgICBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNl
dE1hcC5nZXQoc2NvcGUpLT5hZGRSdWxlKHJ1bGUsIHNlbGVjdG9ySW5kZXgsIGFkZFJ1bGVGbGFn
cyk7CisgICAgZWxzZSB7CisgICAgICAgIE93blB0cjxSdWxlU2V0PiBydWxlU2V0Rm9yU2NvcGUg
PSBhZG9wdFB0cihuZXcgUnVsZVNldCgpKTsKKyAgICAgICAgcnVsZVNldEZvclNjb3BlLT5hZGRS
dWxlKHJ1bGUsIHNlbGVjdG9ySW5kZXgsIGFkZFJ1bGVGbGFncyk7CisgICAgICAgIG1fc2hhZG93
RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLmFkZChzY29wZSwgcnVsZVNldEZvclNjb3BlLnJlbGVhc2Uo
KSk7CisgICAgfQorfQorCit2b2lkIFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXM6OmNvbGxlY3RNYXRj
aFJlcXVlc3RzKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIFZlY3RvcjxNYXRjaFJlcXVlc3Q+JiBt
YXRjaFJlcXVlc3RzKQoreworICAgIGZvciAoU2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwOjpp
dGVyYXRvciBpdCA9IG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLmJlZ2luKCk7IGl0ICE9
IG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLmVuZCgpOyArK2l0KQorICAgICAgICBtYXRj
aFJlcXVlc3RzLmFwcGVuZChNYXRjaFJlcXVlc3QoaXQtPnZhbHVlLmdldCgpLCBpdC0+a2V5LCBp
bmNsdWRlRW1wdHlSdWxlcywgIFNlbGVjdG9yQ2hlY2tlcjo6Q3Jvc3Nlc0JvdW5kYXJ5KSk7Cit9
CisKKyNlbmRpZgorCiAKIFN0eWxlUmVzb2x2ZXI6OlN0eWxlUmVzb2x2ZXIoRG9jdW1lbnQqIGRv
Y3VtZW50LCBib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykKICAgICA6IG1faGFzVUFBcHBl
YXJhbmNlKGZhbHNlKQpAQCAtMzY0LDYgKzM4NCw5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6cmVz
ZXRBdXRob3JTdHlsZSgpCiB7CiAgICAgbV9hdXRob3JTdHlsZSA9IFJ1bGVTZXQ6OmNyZWF0ZSgp
OwogICAgIG1fYXV0aG9yU3R5bGUtPmRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKTsKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKKyAgICBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZXMuY2xlYXIoKTsKKyNl
bmRpZgogfQogCiB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKHVu
c2lnbmVkIGZpcnN0TmV3LCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHN0
eWxlU2hlZXRzKQpAQCAtNDQ4LDYgKzQ3MSwxNCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZEtl
eWZyYW1lU3R5bGUoUGFzc1JlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IHJ1bGUpCiAgICAgbV9r
ZXlmcmFtZXNSdWxlTWFwLnNldChzLmltcGwoKSwgcnVsZSk7CiB9CiAKKworI2lmIEVOQUJMRShT
SEFET1dfRE9NKQordm9pZCBTdHlsZVJlc29sdmVyOjphZGRTaGFkb3dEaXN0cmlidXRlZFJ1bGUo
U3R5bGVSdWxlKiBydWxlLCBzaXplX3Qgc2VsZWN0b3JJbmRleCwgQ29udGFpbmVyTm9kZSogc2Nv
cGUsIEFkZFJ1bGVGbGFncyBhZGRSdWxlRmxhZ3MpCit7CisgICAgbV9zaGFkb3dEaXN0cmlidXRl
ZFJ1bGVzLmFkZFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZShydWxlLCBzZWxlY3RvckluZGV4LCBzY29w
ZSwgYWRkUnVsZUZsYWdzKTsKK30KKyNlbmRpZgorCiBTdHlsZVJlc29sdmVyOjp+U3R5bGVSZXNv
bHZlcigpCiB7CiAgICAgbV9mb250U2VsZWN0b3ItPmNsZWFyRG9jdW1lbnQoKTsKQEAgLTY0Miwy
MCArNjczLDIwIEBAIGlubGluZSBib29sIE1hdGNoaW5nVUFSdWxlc1Njb3BlOjppc01hdGNoaW5n
VUFSdWxlcygpCiAKIGJvb2wgTWF0Y2hpbmdVQVJ1bGVzU2NvcGU6Om1fbWF0Y2hpbmdVQVJ1bGVz
ID0gZmFsc2U7CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMoUnVs
ZVNldCogcnVsZXMsIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgY29u
c3QgTWF0Y2hPcHRpb25zJiBvcHRpb25zKQordm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0
Y2hpbmdSdWxlcyhjb25zdCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdCwgaW50JiBmaXJzdFJ1
bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4KQogewotICAgIEFTU0VSVChydWxlcyk7CisgICAg
QVNTRVJUKG1hdGNoUmVxdWVzdC5ydWxlU2V0KTsKICAgICBBU1NFUlQobV9lbGVtZW50KTsKIAog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcHNldWRvSWQgPSBtX2VsZW1lbnQtPnNoYWRvd1BzZXVk
b0lkKCk7CiAgICAgaWYgKCFwc2V1ZG9JZC5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKG1f
c3R5bGVkRWxlbWVudCk7Ci0gICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChydWxl
cy0+c2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKHBzZXVkb0lkLmltcGwoKSksIGZpcnN0UnVsZUlu
ZGV4LCBsYXN0UnVsZUluZGV4LCBvcHRpb25zKTsKKyAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVs
ZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5zaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMo
cHNldWRvSWQuaW1wbCgpKSwgbWF0Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJ
bmRleCk7CiAgICAgfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGlmIChtX2VsZW1l
bnQtPmlzV2ViVlRUTm9kZSgpKQotICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qo
cnVsZXMtPmN1ZVBzZXVkb1J1bGVzKCksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4LCBv
cHRpb25zKTsKKyAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVz
dC5ydWxlU2V0LT5jdWVQc2V1ZG9SdWxlcygpLCBtYXRjaFJlcXVlc3QsIGZpcnN0UnVsZUluZGV4
LCBsYXN0UnVsZUluZGV4KTsKICNlbmRpZgogICAgIC8vIENoZWNrIHdoZXRoZXIgb3RoZXIgdHlw
ZXMgb2YgcnVsZXMgYXJlIGFwcGxpY2FibGUgaW4gdGhlIGN1cnJlbnQgdHJlZSBzY29wZS4gQ3Jp
dGVyaWEgZm9yIHRoaXM6CiAgICAgLy8gYSkgaXQncyBhIFVBIHJ1bGUKQEAgLTY2NCwzOCArNjk1
LDM5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMoUnVsZVNldCog
cnVsZXMsIGludCYgZmlyc3RSdWxlSW5kZXgsIGluCiAgICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUg
PSBtX2VsZW1lbnQtPnRyZWVTY29wZSgpOwogICAgIGlmICghTWF0Y2hpbmdVQVJ1bGVzU2NvcGU6
OmlzTWF0Y2hpbmdVQVJ1bGVzKCkKICAgICAgICAgJiYgIXRyZWVTY29wZS0+YXBwbHlBdXRob3JT
dHlsZXMoKQotICAgICAgICAmJiAoIW9wdGlvbnMuc2NvcGUgfHwgb3B0aW9ucy5zY29wZS0+dHJl
ZVNjb3BlKCkgIT0gdHJlZVNjb3BlKSkKKyAgICAgICAgJiYgKCFtYXRjaFJlcXVlc3Quc2NvcGUg
fHwgbWF0Y2hSZXF1ZXN0LnNjb3BlLT50cmVlU2NvcGUoKSAhPSB0cmVlU2NvcGUpCisgICAgICAg
ICYmIG1hdGNoUmVxdWVzdC5jcm9zc0JvdW5kYXJ5ID09IFNlbGVjdG9yQ2hlY2tlcjo6RG9lc05v
dENyb3NzQm91bmRhcnkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIG5lZWQgdG8gY29s
bGVjdCB0aGUgcnVsZXMgZm9yIGlkLCBjbGFzcywgdGFnLCBhbmQgZXZlcnl0aGluZyBlbHNlIGlu
dG8gYSBidWZmZXIgYW5kCiAgICAgLy8gdGhlbiBzb3J0IHRoZSBidWZmZXIuCiAgICAgaWYgKG1f
ZWxlbWVudC0+aGFzSUQoKSkKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KHJ1
bGVzLT5pZFJ1bGVzKG1fZWxlbWVudC0+aWRGb3JTdHlsZVJlc29sdXRpb24oKS5pbXBsKCkpLCBm
aXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgb3B0aW9ucyk7CisgICAgICAgIGNvbGxlY3RN
YXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+aWRSdWxlcyhtX2VsZW1l
bnQtPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCkuaW1wbCgpKSwgbWF0Y2hSZXF1ZXN0LCBmaXJzdFJ1
bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CiAgICAgaWYgKG1fc3R5bGVkRWxlbWVudCAmJiBtX3N0
eWxlZEVsZW1lbnQtPmhhc0NsYXNzKCkpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX3N0eWxlZEVsZW1lbnQtPmNsYXNzTmFtZXMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgICAg
IGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChydWxlcy0+Y2xhc3NSdWxlcyhtX3N0eWxlZEVs
ZW1lbnQtPmNsYXNzTmFtZXMoKVtpXS5pbXBsKCkpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJ
bmRleCwgb3B0aW9ucyk7CisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qo
bWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPmNsYXNzUnVsZXMobV9zdHlsZWRFbGVtZW50LT5jbGFzc05h
bWVzKClbaV0uaW1wbCgpKSwgbWF0Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJ
bmRleCk7CiAgICAgfQogCiAgICAgaWYgKG1fZWxlbWVudC0+aXNMaW5rKCkpCi0gICAgICAgIGNv
bGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChydWxlcy0+bGlua1BzZXVkb0NsYXNzUnVsZXMoKSwg
Zmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgsIG9wdGlvbnMpOworICAgICAgICBjb2xsZWN0
TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPmxpbmtQc2V1ZG9DbGFz
c1J1bGVzKCksIG1hdGNoUmVxdWVzdCwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgpOwog
ICAgIGlmIChtX3NlbGVjdG9yQ2hlY2tlci5tYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyhtX2VsZW1l
bnQpKQotICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QocnVsZXMtPmZvY3VzUHNl
dWRvQ2xhc3NSdWxlcygpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgb3B0aW9ucyk7
Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KHJ1bGVzLT50YWdSdWxlcyhtX2VsZW1l
bnQtPmxvY2FsTmFtZSgpLmltcGwoKSksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4LCBv
cHRpb25zKTsKLSAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QocnVsZXMtPnVuaXZlcnNh
bFJ1bGVzKCksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4LCBvcHRpb25zKTsKKyAgICAg
ICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5mb2N1
c1BzZXVkb0NsYXNzUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1
bGVJbmRleCk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5y
dWxlU2V0LT50YWdSdWxlcyhtX2VsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSksIG1hdGNoUmVx
dWVzdCwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgpOworICAgIGNvbGxlY3RNYXRjaGlu
Z1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+dW5pdmVyc2FsUnVsZXMoKSwgbWF0
Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CiB9CiAKLXZvaWQgU3R5
bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24oUnVsZVNldCogcnVsZXMs
IGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRp
b25zJiBvcHRpb25zKQordm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zv
clJlZ2lvbihjb25zdCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdCwgaW50JiBmaXJzdFJ1bGVJ
bmRleCwgaW50JiBsYXN0UnVsZUluZGV4KQogewogICAgIGlmICghbV9yZWdpb25Gb3JTdHlsaW5n
KQogICAgICAgICByZXR1cm47CiAKLSAgICB1bnNpZ25lZCBzaXplID0gcnVsZXMtPm1fcmVnaW9u
U2VsZWN0b3JzQW5kUnVsZVNldHMuc2l6ZSgpOworICAgIHVuc2lnbmVkIHNpemUgPSBtYXRjaFJl
cXVlc3QucnVsZVNldC0+bV9yZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cy5zaXplKCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBDU1NTZWxlY3Rv
ciogcmVnaW9uU2VsZWN0b3IgPSBydWxlcy0+bV9yZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cy5h
dChpKS5zZWxlY3RvcjsKKyAgICAgICAgQ1NTU2VsZWN0b3IqIHJlZ2lvblNlbGVjdG9yID0gbWF0
Y2hSZXF1ZXN0LnJ1bGVTZXQtPm1fcmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHMuYXQoaSkuc2Vs
ZWN0b3I7CiAgICAgICAgIGlmIChjaGVja1JlZ2lvblNlbGVjdG9yKHJlZ2lvblNlbGVjdG9yLCBz
dGF0aWNfY2FzdDxFbGVtZW50Kj4obV9yZWdpb25Gb3JTdHlsaW5nLT5ub2RlKCkpKSkgewotICAg
ICAgICAgICAgUnVsZVNldCogcmVnaW9uUnVsZXMgPSBydWxlcy0+bV9yZWdpb25TZWxlY3RvcnNB
bmRSdWxlU2V0cy5hdChpKS5ydWxlU2V0LmdldCgpOworICAgICAgICAgICAgUnVsZVNldCogcmVn
aW9uUnVsZXMgPSBtYXRjaFJlcXVlc3QucnVsZVNldC0+bV9yZWdpb25TZWxlY3RvcnNBbmRSdWxl
U2V0cy5hdChpKS5ydWxlU2V0LmdldCgpOwogICAgICAgICAgICAgQVNTRVJUKHJlZ2lvblJ1bGVz
KTsKLSAgICAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKHJlZ2lvblJ1bGVzLCBmaXJzdFJ1
bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgb3B0aW9ucyk7CisgICAgICAgICAgICBjb2xsZWN0TWF0
Y2hpbmdSdWxlcyhtYXRjaFJlcXVlc3QudXBkYXRlZChyZWdpb25SdWxlcyksIGZpcnN0UnVsZUlu
ZGV4LCBsYXN0UnVsZUluZGV4KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTc1Myw5ICs3ODUs
OSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoU2NvcGVkQXV0aG9yUnVsZXMoTWF0Y2hSZXN1
bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdAogICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgTWF0Y2hPcHRpb25zIG9wdGlvbnMoaW5j
bHVkZUVtcHR5UnVsZXMsIGZyYW1lLm1fc2NvcGUpOwotICAgICAgICAgICAgY29sbGVjdE1hdGNo
aW5nUnVsZXMoZnJhbWUubV9ydWxlU2V0LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwg
cmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7Ci0gICAgICAgICAgICBjb2xs
ZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihmcmFtZS5tX3J1bGVTZXQsIHJlc3VsdC5yYW5nZXMu
Zmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsK
KyAgICAgICAgICAgIE1hdGNoUmVxdWVzdCBtYXRjaFJlcXVlc3QoZnJhbWUubV9ydWxlU2V0LCBm
cmFtZS5tX3Njb3BlLCBpbmNsdWRlRW1wdHlSdWxlcyk7CisgICAgICAgICAgICBjb2xsZWN0TWF0
Y2hpbmdSdWxlcyhtYXRjaFJlcXVlc3QsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCBy
ZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlKTsKKyAgICAgICAgICAgIGNvbGxlY3RNYXRjaGlu
Z1J1bGVzRm9yUmVnaW9uKG1hdGNoUmVxdWVzdCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1
bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUpOwogICAgICAgICAgICAgc29ydEFuZFRy
YW5zZmVyTWF0Y2hlZFJ1bGVzKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9CkBAIC03ODksOSAr
ODIxLDkgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaEhvc3RSdWxlcyhNYXRjaFJlc3VsdCYg
cmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQogICAgIGlmIChtYXRjaGVkUnVsZXMuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBNYXRjaE9wdGlvbnMgb3B0aW9ucyhpbmNs
dWRlRW1wdHlSdWxlcywgbV9lbGVtZW50KTsKKyAgICBNYXRjaFJlcXVlc3QgbWF0Y2hSZXF1ZXN0
KDAsIG1fZWxlbWVudCwgaW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IG1hdGNoZWRSdWxlcy5zaXplKCk7IGkgPiAwOyAtLWkpCi0gICAgICAgIGNvbGxlY3RNYXRjaGlu
Z1J1bGVzKG1hdGNoZWRSdWxlcy5hdChpLTEpLCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVs
ZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7CisgICAgICAgIGNvbGxl
Y3RNYXRjaGluZ1J1bGVzKG1hdGNoUmVxdWVzdC51cGRhdGVkKG1hdGNoZWRSdWxlcy5hdChpLTEp
KSwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhv
clJ1bGUpOwogICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhyZXN1bHQpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKQEAgLTgwOCw5ICs4NDAsMTUgQEAgdm9pZCBTdHls
ZVJlc29sdmVyOjptYXRjaEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5j
bHVkZUVtcHR5UnVsZXMKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTWF0Y2ggZ2xvYmFsIGF1
dGhvciBydWxlcy4KLSAgICBNYXRjaE9wdGlvbnMgb3B0aW9ucyhpbmNsdWRlRW1wdHlSdWxlcyk7
Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXMobV9hdXRob3JTdHlsZS5nZXQoKSwgcmVzdWx0LnJh
bmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlv
bnMpOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKG1fYXV0aG9yU3R5bGUuZ2V0
KCksIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRo
b3JSdWxlLCBvcHRpb25zKTsKKyAgICBNYXRjaFJlcXVlc3QgbWF0Y2hSZXF1ZXN0KG1fYXV0aG9y
U3R5bGUuZ2V0KCksIDAsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdS
dWxlcyhtYXRjaFJlcXVlc3QsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQu
cmFuZ2VzLmxhc3RBdXRob3JSdWxlKTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lv
bihtYXRjaFJlcXVlc3QsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFu
Z2VzLmxhc3RBdXRob3JSdWxlKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBWZWN0b3I8
TWF0Y2hSZXF1ZXN0PiBtYXRjaFJlcXVlc3RzOworICAgIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxl
cy5jb2xsZWN0TWF0Y2hSZXF1ZXN0cyhpbmNsdWRlRW1wdHlSdWxlcywgbWF0Y2hSZXF1ZXN0cyk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXRjaFJlcXVlc3RzLnNpemUoKTsgKytpKQor
ICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhtYXRjaFJlcXVlc3RzW2ldLCByZXN1bHQucmFu
Z2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSk7CisjZW5k
aWYKICAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMocmVzdWx0KTsKIAogICAgIG1hdGNo
U2NvcGVkQXV0aG9yUnVsZXMocmVzdWx0LCBpbmNsdWRlRW1wdHlSdWxlcyk7CkBAIC04MjQsOCAr
ODYyLDkgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaFVzZXJSdWxlcyhNYXRjaFJlc3VsdCYg
cmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQogICAgIG1fbWF0Y2hlZFJ1bGVzLmNsZWFy
KCk7CiAKICAgICByZXN1bHQucmFuZ2VzLmxhc3RVc2VyUnVsZSA9IHJlc3VsdC5tYXRjaGVkUHJv
cGVydGllcy5zaXplKCkgLSAxOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKG1fdXNlclN0eWxl
LmdldCgpLCByZXN1bHQucmFuZ2VzLmZpcnN0VXNlclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdFVz
ZXJSdWxlLCBpbmNsdWRlRW1wdHlSdWxlcyk7Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JS
ZWdpb24obV91c2VyU3R5bGUuZ2V0KCksIHJlc3VsdC5yYW5nZXMuZmlyc3RVc2VyUnVsZSwgcmVz
dWx0LnJhbmdlcy5sYXN0VXNlclJ1bGUsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyAgICBNYXRjaFJl
cXVlc3QgbWF0Y2hSZXF1ZXN0KG1fdXNlclN0eWxlLmdldCgpLCAwLCBpbmNsdWRlRW1wdHlSdWxl
cyk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMobWF0Y2hSZXF1ZXN0LCByZXN1bHQucmFuZ2Vz
LmZpcnN0VXNlclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdFVzZXJSdWxlKTsKKyAgICBjb2xsZWN0
TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtYXRjaFJlcXVlc3QsIHJlc3VsdC5yYW5nZXMuZmlyc3RV
c2VyUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0VXNlclJ1bGUpOwogCiAgICAgc29ydEFuZFRyYW5z
ZmVyTWF0Y2hlZFJ1bGVzKHJlc3VsdCk7CiB9CkBAIC04MzUsMTkgKzg3NCwxOSBAQCB2b2lkIFN0
eWxlUmVzb2x2ZXI6Om1hdGNoVUFSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBSdWxlU2V0KiBy
dWxlcykKICAgICBtX21hdGNoZWRSdWxlcy5jbGVhcigpOwogICAgIAogICAgIHJlc3VsdC5yYW5n
ZXMubGFzdFVBUnVsZSA9IHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcy5zaXplKCkgLSAxOwotICAg
IGNvbGxlY3RNYXRjaGluZ1J1bGVzKHJ1bGVzLCByZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxlLCBy
ZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGZhbHNlKTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxl
cyhNYXRjaFJlcXVlc3QocnVsZXMsIDAsIGZhbHNlKSwgcmVzdWx0LnJhbmdlcy5maXJzdFVBUnVs
ZSwgcmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxlKTsKIAogICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNo
ZWRSdWxlcyhyZXN1bHQpOwogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGlu
Z1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBydWxlcywgaW50JiBmaXJzdFJ1
bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmIG9wdGlvbnMp
Cit2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBW
ZWN0b3I8UnVsZURhdGE+KiBydWxlcywgY29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3Qs
IGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCkKIHsKICAgICBpZiAoIXJ1
bGVzKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBJbiBzb21lIGNhc2VzIHdlIG1heSBlbmQg
dXAgbG9va2luZyB1cCBzdHlsZSBmb3IgcmFuZG9tIGVsZW1lbnRzIGluIHRoZSBtaWRkbGUgb2Yg
YSByZWN1cnNpdmUgdHJlZSByZXNvbHZlLgogICAgIC8vIEFuY2VzdG9yIGlkZW50aWZpZXIgZmls
dGVyIHdvbid0IGJlIHVwLXRvLWRhdGUgaW4gdGhhdCBjYXNlIGFuZCB3ZSBjYW4ndCB1c2UgdGhl
IGZhc3QgcGF0aC4KLSAgICBib29sIGNhblVzZUZhc3RSZWplY3QgPSBtX3NlbGVjdG9yRmlsdGVy
LnBhcmVudFN0YWNrSXNDb25zaXN0ZW50KG1fcGFyZW50Tm9kZSk7CisgICAgYm9vbCBjYW5Vc2VG
YXN0UmVqZWN0ID0gbV9zZWxlY3RvckZpbHRlci5wYXJlbnRTdGFja0lzQ29uc2lzdGVudChtX3Bh
cmVudE5vZGUpICYmIG1hdGNoUmVxdWVzdC5jcm9zc0JvdW5kYXJ5ID09IFNlbGVjdG9yQ2hlY2tl
cjo6RG9lc05vdENyb3NzQm91bmRhcnk7CiAKICAgICB1bnNpZ25lZCBzaXplID0gcnVsZXMtPnNp
emUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CkBAIC04NTcs
MTAgKzg5NiwxMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9y
TGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBydWxlcywgaQogCiAgICAgICAgIFN0eWxlUnVs
ZSogcnVsZSA9IHJ1bGVEYXRhLnJ1bGUoKTsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1hdGNoUnVs
ZShkb2N1bWVudCgpLCBydWxlLCB0aGlzKTsKLSAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3IocnVs
ZURhdGEsIG9wdGlvbnMuc2NvcGUpKSB7CisgICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHJ1bGVE
YXRhLCBtYXRjaFJlcXVlc3Quc2NvcGUsIG1hdGNoUmVxdWVzdC5jcm9zc0JvdW5kYXJ5KSkgewog
ICAgICAgICAgICAgLy8gSWYgdGhlIHJ1bGUgaGFzIG5vIHByb3BlcnRpZXMgdG8gYXBwbHksIHRo
ZW4gaWdub3JlIGl0IGluIHRoZSBub24tZGVidWcgbW9kZS4KICAgICAgICAgICAgIGNvbnN0IFN0
eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMgPSBydWxlLT5wcm9wZXJ0aWVzKCk7Ci0gICAgICAg
ICAgICBpZiAoIXByb3BlcnRpZXMgfHwgKHByb3BlcnRpZXMtPmlzRW1wdHkoKSAmJiAhb3B0aW9u
cy5pbmNsdWRlRW1wdHlSdWxlcykpIHsKKyAgICAgICAgICAgIGlmICghcHJvcGVydGllcyB8fCAo
cHJvcGVydGllcy0+aXNFbXB0eSgpICYmICFtYXRjaFJlcXVlc3QuaW5jbHVkZUVtcHR5UnVsZXMp
KSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNYXRjaFJ1
bGUoY29va2llLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICB9CkBAIC0xMDYxLDcgKzExMDAsNyBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OnN0eWxlU2hhcmlu
Z0NhbmRpZGF0ZU1hdGNoZXNSdWxlU2V0KFJ1bGVTZXQqIHJ1bGVTZXQpCiAKICAgICBpbnQgZmly
c3RSdWxlSW5kZXggPSAtMSwgbGFzdFJ1bGVJbmRleCA9IC0xOwogICAgIG1fc2VsZWN0b3JDaGVj
a2VyLnNldE1vZGUoU2VsZWN0b3JDaGVja2VyOjpTaGFyaW5nUnVsZXMpOwotICAgIGNvbGxlY3RN
YXRjaGluZ1J1bGVzKHJ1bGVTZXQsIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4LCBmYWxz
ZSk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMoTWF0Y2hSZXF1ZXN0KHJ1bGVTZXQsIDAsIGZh
bHNlKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgpOwogICAgIG1fc2VsZWN0b3JDaGVj
a2VyLnNldE1vZGUoU2VsZWN0b3JDaGVja2VyOjpSZXNvbHZpbmdTdHlsZSk7CiAgICAgaWYgKG1f
bWF0Y2hlZFJ1bGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjIzOCw3
ICsyMjc3LDcgQEAgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gU3R5bGVSZXNvbHZlcjo6cHNldWRv
U3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCogZSwgUHMKICAgICByZXR1cm4gbV9ydWxlTGlz
dC5yZWxlYXNlKCk7CiB9CiAKLWlubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6OmNoZWNrU2VsZWN0
b3IoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSkK
K2lubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEm
IHJ1bGVEYXRhLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSwgU2VsZWN0b3JDaGVja2VyOjpD
cm9zc0JvdW5kYXJ5IGNyb3NzQm91bmRhcnkpCiB7CiAgICAgbV9keW5hbWljUHNldWRvID0gTk9Q
U0VVRE87CiAKQEAgLTIyNjMsNiArMjMwMiw3IEBAIGlubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6
OmNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCBjb25zdCBDb250YWluCiAg
ICAgY29udGV4dC5lbGVtZW50U3R5bGUgPSBzdHlsZSgpOwogICAgIGNvbnRleHQuZWxlbWVudFBh
cmVudFN0eWxlID0gbV9wYXJlbnROb2RlID8gbV9wYXJlbnROb2RlLT5yZW5kZXJTdHlsZSgpIDog
MDsKICAgICBjb250ZXh0LnNjb3BlID0gc2NvcGU7CisgICAgY29udGV4dC5jcm9zc0JvdW5kYXJ5
ID0gY3Jvc3NCb3VuZGFyeTsKICAgICBjb250ZXh0LnBzZXVkb1N0eWxlID0gbV9wc2V1ZG9TdHls
ZTsKICAgICBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBtX3NlbGVjdG9y
Q2hlY2tlci5jaGVja1NlbGVjdG9yKGNvbnRleHQsIG1fZHluYW1pY1BzZXVkbyk7CiAgICAgaWYg
KG1hdGNoICE9IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaGVzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmgKaW5kZXggNWJkMjk0MGU1N2YyOTgyMWZlNjEzZWEwZThhMzliZmRmYjg4
ZDA3ZC4uZGI4NTFlZWJhMGYyMGI3YTVhODc1NWM2Njk0OTdiOWIwODY2NzgyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiTWVkaWFR
dWVyeUV4cC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUnVsZUZlYXR1
cmUuaCIKKyNpbmNsdWRlICJSdWxlU2V0LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oIgogI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgIlNlbGVjdG9y
RmlsdGVyLmgiCkBAIC03Niw3ICs3Nyw2IEBAIGNsYXNzIE1lZGlhUXVlcnlFdmFsdWF0b3I7CiBj
bGFzcyBOb2RlOwogY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xhc3MgUnVsZURhdGE7Ci1jbGFzcyBS
dWxlU2V0OwogY2xhc3MgU2V0dGluZ3M7CiBjbGFzcyBTdGF0aWNDU1NSdWxlTGlzdDsKIGNsYXNz
IFN0eWxlQnVpbGRlcjsKQEAgLTEzMSw2ICsxMzEsMzIgQEAgZW51bSBSdWxlTWF0Y2hpbmdCZWhh
dmlvciB7CiAgICAgTWF0Y2hPbmx5VXNlckFnZW50UnVsZXMsCiB9OwogCitjbGFzcyBNYXRjaFJl
cXVlc3QgeworcHVibGljOgorICAgIE1hdGNoUmVxdWVzdChSdWxlU2V0KiBydWxlU2V0LCBjb25z
dCBDb250YWluZXJOb2RlKiBzY29wZSwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcywgU2VsZWN0b3JD
aGVja2VyOjpDcm9zc0JvdW5kYXJ5IGNyb3NzQm91bmRhcnkgPSBTZWxlY3RvckNoZWNrZXI6OkRv
ZXNOb3RDcm9zc0JvdW5kYXJ5KQorICAgICAgICA6IHJ1bGVTZXQocnVsZVNldCkKKyAgICAgICAg
LCBzY29wZShzY29wZSkKKyAgICAgICAgLCBpbmNsdWRlRW1wdHlSdWxlcyhpbmNsdWRlRW1wdHlS
dWxlcykKKyAgICAgICAgLCBjcm9zc0JvdW5kYXJ5KGNyb3NzQm91bmRhcnkpIHsgfQorICAgIGNv
bnN0IFJ1bGVTZXQqIHJ1bGVTZXQ7CisgICAgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGU7Cisg
ICAgY29uc3QgYm9vbCBpbmNsdWRlRW1wdHlSdWxlczsKKyAgICBjb25zdCBTZWxlY3RvckNoZWNr
ZXI6OkNyb3NzQm91bmRhcnkgY3Jvc3NCb3VuZGFyeTsKKyAgICBNYXRjaFJlcXVlc3QgdXBkYXRl
ZChSdWxlU2V0KiBuZXdSdWxlU2V0KSBjb25zdCB7IHJldHVybiBNYXRjaFJlcXVlc3QobmV3UnVs
ZVNldCwgc2NvcGUsIGluY2x1ZGVFbXB0eVJ1bGVzLCBjcm9zc0JvdW5kYXJ5KTsgfQorfTsKKwor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQorY2xhc3MgU2hhZG93RGlzdHJpYnV0ZWRSdWxlcyB7Citw
dWJsaWM6CisgICAgdm9pZCBhZGRTaGFkb3dEaXN0cmlidXRlZFJ1bGUoU3R5bGVSdWxlKiwgc2l6
ZV90IHNlbGVjdG9ySW5kZXgsIENvbnRhaW5lck5vZGUqIHNjb3BlLCBBZGRSdWxlRmxhZ3MpOwor
ICAgIHZvaWQgY29sbGVjdE1hdGNoUmVxdWVzdHMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcywgVmVj
dG9yPE1hdGNoUmVxdWVzdD4mKTsKKyAgICB2b2lkIGNsZWFyKCkgeyBtX3NoYWRvd0Rpc3RyaWJ1
dGVkUnVsZVNldE1hcC5jbGVhcigpOyB9Citwcml2YXRlOgorICAgIHR5cGVkZWYgSGFzaE1hcDxj
b25zdCBDb250YWluZXJOb2RlKiwgT3duUHRyPFJ1bGVTZXQ+ID4gU2hhZG93RGlzdHJpYnV0ZWRS
dWxlU2V0TWFwOworICAgIFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcCBtX3NoYWRvd0Rpc3Ry
aWJ1dGVkUnVsZVNldE1hcDsKK307CisjZW5kaWYKKwogLy8gVGhpcyBjbGFzcyBzZWxlY3RzIGEg
UmVuZGVyU3R5bGUgZm9yIGEgZ2l2ZW4gZWxlbWVudCBiYXNlZCBvbiBhIGNvbGxlY3Rpb24gb2Yg
c3R5bGVzaGVldHMuCiBjbGFzcyBTdHlsZVJlc29sdmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShTdHlsZVJlc29sdmVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0yOTksNiAr
MzI1LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbG9hZFBlbmRpbmdSZXNvdXJjZXMoKTsKIAor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIHZvaWQgYWRkU2hhZG93RGlzdHJpYnV0ZWRSdWxl
KFN0eWxlUnVsZSosIHNpemVfdCBzZWxlY3RvckluZGV4LCBDb250YWluZXJOb2RlKiBzY29wZSwg
QWRkUnVsZUZsYWdzKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIC8vIFRoaXMgZnVuY3Rpb24g
Zml4ZXMgdXAgdGhlIGRlZmF1bHQgZm9udCBzaXplIGlmIGl0IGRldGVjdHMgdGhhdCB0aGUgY3Vy
cmVudCBnZW5lcmljIGZvbnQgZmFtaWx5IGhhcyBjaGFuZ2VkLiAtZHdoCiAgICAgdm9pZCBjaGVj
a0ZvckdlbmVyaWNGYW1pbHlDaGFuZ2UoUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUpOwpAQCAtMzQyLDEyICszNzIsNiBAQCBwcml2YXRlOgogICAgICAgICBib29sIGlzQ2Fj
aGVhYmxlOwogICAgIH07CiAKLSAgICBzdHJ1Y3QgTWF0Y2hPcHRpb25zIHsKLSAgICAgICAgTWF0
Y2hPcHRpb25zKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNj
b3BlID0gMCkgOiBzY29wZShzY29wZSksIGluY2x1ZGVFbXB0eVJ1bGVzKGluY2x1ZGVFbXB0eVJ1
bGVzKSB7IH0KLSAgICAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGU7Ci0gICAgICAgIGJv
b2wgaW5jbHVkZUVtcHR5UnVsZXM7Ci0gICAgfTsKLQogICAgIHN0YXRpYyB2b2lkIGFkZE1hdGNo
ZWRQcm9wZXJ0aWVzKE1hdGNoUmVzdWx0JiwgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVy
dGllcywgU3R5bGVSdWxlKiA9IDAsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUgPSBTZWxlY3RvckNo
ZWNrZXI6Ok1hdGNoQWxsLCBib29sIGluUmVnaW9uUnVsZSA9IGZhbHNlKTsKICAgICB2b2lkIGFk
ZEVsZW1lbnRTdHlsZVByb3BlcnRpZXMoTWF0Y2hSZXN1bHQmLCBjb25zdCBTdHlsZVByb3BlcnR5
U2V0KiwgYm9vbCBpc0NhY2hlYWJsZSA9IHRydWUpOwogCkBAIC0zNTgsMTQgKzM4MiwxNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgbWF0Y2hVc2VyUnVsZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1
ZGVFbXB0eVJ1bGVzKTsKICAgICB2b2lkIG1hdGNoU2NvcGVkQXV0aG9yUnVsZXMoTWF0Y2hSZXN1
bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKICAgICB2b2lkIG1hdGNoSG9zdFJ1bGVzKE1h
dGNoUmVzdWx0JiwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7Ci0gICAgdm9pZCBjb2xsZWN0TWF0
Y2hpbmdSdWxlcyhSdWxlU2V0KiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUlu
ZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmKTsKLSAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVz
Rm9yUmVnaW9uKFJ1bGVTZXQqLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5k
ZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYpOwotICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNG
b3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQm
IGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYpOworCisgICAgdm9pZCBjb2xsZWN0
TWF0Y2hpbmdSdWxlcyhjb25zdCBNYXRjaFJlcXVlc3QmLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBp
bnQmIGxhc3RSdWxlSW5kZXgpOworICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdp
b24oY29uc3QgTWF0Y2hSZXF1ZXN0JiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVs
ZUluZGV4KTsKKyAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0
b3I8UnVsZURhdGE+KiwgY29uc3QgTWF0Y2hSZXF1ZXN0JiwgaW50JiBmaXJzdFJ1bGVJbmRleCwg
aW50JiBsYXN0UnVsZUluZGV4KTsKKwogICAgIGJvb2wgZmFzdFJlamVjdFNlbGVjdG9yKGNvbnN0
IFJ1bGVEYXRhJikgY29uc3Q7CiAgICAgdm9pZCBzb3J0TWF0Y2hlZFJ1bGVzKCk7CiAgICAgdm9p
ZCBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoTWF0Y2hSZXN1bHQmKTsKIAotICAgIGJvb2wg
Y2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3Bl
KTsKKyAgICBib29sIGNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmLCBjb25zdCBDb250YWlu
ZXJOb2RlKiBzY29wZSwgU2VsZWN0b3JDaGVja2VyOjpDcm9zc0JvdW5kYXJ5ID0gU2VsZWN0b3JD
aGVja2VyOjpEb2VzTm90Q3Jvc3NCb3VuZGFyeSk7CiAgICAgYm9vbCBjaGVja1JlZ2lvblNlbGVj
dG9yKENTU1NlbGVjdG9yKiByZWdpb25TZWxlY3RvciwgRWxlbWVudCogcmVnaW9uRWxlbWVudCk7
CiAgICAgdm9pZCBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzKGNvbnN0IE1hdGNoUmVzdWx0JiwgY29u
c3QgRWxlbWVudCopOwogICAgIGVudW0gU3R5bGVBcHBsaWNhdGlvblBhc3MgewpAQCAtMzk2LDYg
KzQyMiw4IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFJ1bGVTZXQ+IG1fYXV0aG9yU3R5bGU7CiAg
ICAgT3duUHRyPFJ1bGVTZXQ+IG1fdXNlclN0eWxlOwogCisgICAgU2hhZG93RGlzdHJpYnV0ZWRS
dWxlcyBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZXM7CisKICAgICBSdWxlRmVhdHVyZVNldCBtX2Zl
YXR1cmVzOwogICAgIE93blB0cjxSdWxlU2V0PiBtX3NpYmxpbmdSdWxlU2V0OwogICAgIE93blB0
cjxSdWxlU2V0PiBtX3VuY29tbW9uQXR0cmlidXRlUnVsZVNldDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmluZGV4IDIwY2U3N2QwYTM3OWVmY2MyNDQ4YTY1
ODk5ZDZjNThmMzdmOWM5YjguLjkxNjJiN2ZkYTAzNDdlMmM5NGQxNzBkZWZlZTdhNmFmMDdmZTFj
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAt
MTU0LDYgKzE1NCwyOSBAQCBpbmxpbmUgRWxlbWVudFNoYWRvdyogc2hhZG93T2ZQYXJlbnRGb3JE
aXN0cmlidXRpb24oY29uc3QgTm9kZSogbm9kZSkKIAogSW5zZXJ0aW9uUG9pbnQqIHJlc29sdmVS
ZXByb2plY3Rpb24oY29uc3QgTm9kZSopOwogCitpbmxpbmUgdm9pZCBjb2xsZWN0QWxsSW5zZXJ0
aW9uUG9pbnRzKGNvbnN0IE5vZGUqIHByb2plY3RlZE5vZGUsIFZlY3RvcjxJbnNlcnRpb25Qb2lu
dCosIDg+JiByZXN1bHRzKQoreworICAgIGNvbnN0IE5vZGUqIGN1cnJlbnQgPSBwcm9qZWN0ZWRO
b2RlOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFk
b3cgPSBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbihjdXJyZW50KSkgeworICAgICAgICAg
ICAgc2hhZG93LT5lbnN1cmVEaXN0cmlidXRpb24oKTsKKyAgICAgICAgICAgIGlmIChJbnNlcnRp
b25Qb2ludCogaW5zZXJ0ZWRUbyA9IHNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5maW5kSW5zZXJ0aW9u
UG9pbnRGb3IocHJvamVjdGVkTm9kZSkpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gaW5z
ZXJ0ZWRUbzsKKyAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChpbnNlcnRlZFRvKTsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBpZiAoTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZUZvckRpc3RyaWJ1dGlvbihjdXJyZW50KSkg
eworICAgICAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRlZFRvID0gcGFyZW50LT5p
c1NoYWRvd1Jvb3QoKSA/IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWduZWRUbyh0b1No
YWRvd1Jvb3QocGFyZW50KSkgOiAwKSB7CisgICAgICAgICAgICAgICAgY3VycmVudCA9IGluc2Vy
dGVkVG87CisgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoaW5zZXJ0ZWRUbyk7CisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
SW5zZXJ0aW9uUG9pbnRfaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI5ZWVlMDg0MmMwMTdkMTkzZTZlNTdiMmZhY2RjMWIz
MjhhYWQ1NzcuLmRkYjljNDczYmFjNDhjZDNlODE2MWUzM2M0ZTJhYjhkMjc1N2VlMDkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMyBAQAorMjAxMy0wMS0wNiAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW1NoYWRvdyBET01dIEltcGxlbWVudHMgYSAnOjpkaXN0cmlidXRl
ZCgpJyBwc2V1ZG8gZWxlbWVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgyMTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
ZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
Zm9yLXNoYWRvdy1lbGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwtZXhwZWN0ZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LW1hdGNoLWFsbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJp
YnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtZGVzY2VuZGFudC1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
bWF0Y2gtZGVzY2VuZGFudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LW5vLW1hdGNoLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uby1tYXRjaC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24uaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LXNjb3BlZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVj
dG9yLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWlu
LXNlbGVjdG9yLWxpc3QtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRv
LWVsZW1lbnQtd2l0aC1hbnktZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC5o
dG1sOiBBZGRlZC4KKwogMjAxMy0wMS0wOSAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgQXNzZXJ0IHRyaWdnZXJlZCBpbiBTZWxlY3RvckNoZWNrZXI6
OmNoZWNrT25lU2VsZWN0b3Igd2hlbiBzY3JvbGxiYXIgKGUuZy4gOmhvcml6b250YWwpIHNlbGVj
dG9yIGlzIHNwZWNpZmllZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjRjMjZlMmI1NmM0YzZhN2M3MGM2Y2ZkNThhMjI3ZjhlMGY0NDY0ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3Qi
PgorICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50LWV4cGVjdGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtZm9yLXNoYWRvdy1lbGVtZW50LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRjMjZlMmI1
NmM0YzZhN2M3MGM2Y2ZkNThhMjI3ZjhlMGY0NDY0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hh
ZG93LWVsZW1lbnQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDkgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4K
KyAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgIDwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFk
b3ctZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkZGMzN2M1YzZjNDg4NjdkZjVjYjgxNDcyOGEz
NjlmZDhkMjNlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50Lmh0bWwKQEAg
LTAsMCArMSwyMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdz
aGFkb3c6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3Zh
ciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3gu
YXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAg
ICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoJ2dyZWVuJykpKSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAg
ICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdz
aGFkb3cnKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNo
LWFsbC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlh
NjBiNzJlMGRlOTE3NzYyYjJhMmE0YzVlYzNlZjlmNTY2ZWI0OTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
bWF0Y2gtYWxsLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgor
ICAgIDxkaXY+CisgICAgICBub3JtYWwKKyAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+
Z3JlZW48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgbm9ybWFsCisgICAgICA8
ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY5ZjJmZjJiNDEzN2EwYzVhZWVkYzg1ZTg5MTJmMmVjMzRlYjJmYmIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ct
ZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9k
aXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
c3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3Ry
aWJ1dGVkKC5oZWxsbykgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAg
IGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNo
YWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdu
b3JtYWwnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFz
cyc6ICdoZWxsbyd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2
Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgn
bm9ybWFsJyksCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xh
c3MnOiAnaGVsbG8nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtZGVzY2Vu
ZGFudC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjMTg3ODU2ZmVlMThmNGU0MjdmMjFhNzcx
YjMyZDExMzE4ZjUzYjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtZGVzY2VuZGFudC1leHBlY3Rl
ZC5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4K
KzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8cD4KKyAgICAgIDxk
aXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgICA8L3A+CisgIDwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWRlc2NlbmRhbnQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1k
ZXNjZW5kYW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmU0MDQzZTg1NWE1MDhkNDhiNWEwNjAwZTBmNjg2
Njk4ODMwMDI4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50Lmh0bWwKQEAgLTAs
MCArMSwyMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250
ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdikgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIg
c2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFw
cGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgIGNyZWF0
ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdw
Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdn
cmVlbicpKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3Rl
ZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LW5lc3RlZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1MTgzNDQy
YTA3NmM3ZjgxYTljNTQyMTMxZTc5ZmI3NzZmMDExY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVk
LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
Kzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYg
aWQ9Im5lc3RlZC1ob3N0Ij4KKyAgICAgIHRleHQxCisgICAgICA8ZGl2PgorICAgICAgICB0ZXh0
MgorICAgICAgICA8ZGl2PgorICAgICAgICAgIHRleHQzCisgICAgICAgICAgPGRpdiBzdHlsZT0i
Y29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgICAgICAgIDxkaXY+bm9ybWFsPC9kaXY+Cisg
ICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzE2N2EzZWZlY2EwZjQwOGE2ZDM4NzU2OTI5N2VmZTYyMzU4ODBkNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1
ZG8tZWxlbWVudC1uZXN0ZWQuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3Jp
cHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwor
c2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2RpdiBjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVk
KGRpdiBjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdi5ncmVlbikpIHsgY29sb3I6IGdy
ZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJv
eCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAn
aG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ25lc3RlZC1ob3N0J30sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCd0ZXh0MScpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3RleHQyJyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7
J3NlbGVjdCc6ICdkaXYnfSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2RpdicsIHsnY2xhc3MnOiAnZ3JlZW4nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3RleHQzJyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHt9KSkpKSwK
KyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2dyZWVuJ30sCisgICAg
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSksCisg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uby1tYXRjaC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5vLW1hdGNoLWV4
cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA1ZmVmZjc1Yzc5YWVkZTViZjhlNDliYmVkMGI3MTU1
ZGNlNjgwZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uby1tYXRjaC1leHBlY3RlZC5odG1sCkBAIC0wLDAg
KzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRi
b3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8cD5ub3JtYWw8L3A+CisgICAgPGRpdj4KKyAg
ICAgIDxkaXY+bm9ybWFsPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LW5vLW1hdGNoLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbm8tbWF0Y2guaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
YWUzOWNlYzM0NzU5MzdhMWVkNTNkMTU4MmU2ZmUzYzhiMjAxZDYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LW5vLW1hdGNoLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFy
IHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0
eWxlLmlubmVySFRNTCA9ICd0aGlzLWRvZXMtbm90LW1hdGNoOjotd2Via2l0LWRpc3RyaWJ1dGVk
KGRpdikgeyBjb2xvcjogZ3JlZW47IH0nOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ3A6Oi13
ZWJraXQtZGlzdHJpYnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CitzaGFkb3dTdHlsZS5p
bm5lckhUTUwgPSAnZGl2Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdikgeyBjb2xvcjogZ3JlZW47
IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7
CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0
J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBz
aGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgncCcsIHt9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpKSwK
KyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpKSwKKyAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QtY2hpbGQnfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVj
dGlvbi1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2OWM5MTI3ZGU1ZTcwM2I3YTFhNWM5MzY5
NGVhN2NkMGIxMjQ4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0
bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRp
diBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYgaWQ9Imhvc3QyIj4K
KyAgICAgIDxkaXYgc3R5bGU9J2NvbG9yOiBncmVlbic+CisgICAgICAgIGdyZWVuCisgICAgICA8
L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
cmVwcm9qZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTczNWZhNzA5
ZTg2MWIwZGI0YWU0Y2M0NjRmZjdhZmExYTE5ZTBjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2pl
Y3Rpb24uaHRtbApAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hh
ZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUu
aW5uZXJIVE1MID0gJ2NvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoLmZvbykgeyBjb2xvcjog
Z3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5k
Ym94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6
ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdDInfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnLmZvbyd9KSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2NsYXNzJzogJ2Zvbyd9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC1zY29wZWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQtZXhwZWN0ZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43NDhkOWUyZGUzZTZmZTRiZmQ4OTgwYjYzZDAzOWJjNTRkODgzMWEyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LXNjb3BlZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlk
PSJob3N0Ij4KKyAgICA8ZGl2Pm5vcm1hbDwvZGl2PgorICAgIDxkaXY+CisgICAgICA8ZGl2IHN0
eWxlPSdjb2xvcjogZ3JlZW4nPmdyZWVuPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNjb3BlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNjb3BlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRhYTcxYWJjNzkwOTYzMzAwYTMyNDdlODU2ODUwYTgzNjEzNTg4NWMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtc2NvcGVkLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0Pgor
dmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRv
d1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdikgeyBj
b2xvcjogZ3JlZW47IH0nOworc2hhZG93U3R5bGUuc2V0QXR0cmlidXRlKCdzY29wZWQnLCB0cnVl
KTsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOwor
c2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9
LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnI2hvc3QtY2hpbGQxJ30pLAorICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcjaG9zdC1jaGlsZDInfSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUpKSwKKyAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QtY2hpbGQxJ30sCisgICAgICAgICAgICAgICAgICAg
ICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpLAorICAgICAgICAgICAgICBj
cmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdC1jaGlsZDInfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSkpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LXN1cHBvcnQtc2VsZWN0b3ItZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yM2RlZGUxMzNiODYy
ZGQxNGM5MmU2MDVjNGExYmVkMjhlMzdhZGFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2Vs
ZWN0b3ItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAg
PGRpdj4KKyAgICAgIG5vcm1hbAorICAgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVl
bjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXY+CisgICAgICBub3JtYWwKKyAgICAgIDxkaXY+
bm9ybWFsPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1l
bGVtZW50LXN1cHBvcnQtc2VsZWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2ZkYmQ4NmVmNzgyYjE0MWNmZjU5YmEzYzE2NWJhNTdlYjNlNzg1ZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9t
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+
Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5
bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1
dGVkKGRpdi5oZWxsbyBkaXYpIHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgK
KyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVh
dGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAg
ICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydjbGFzcyc6ICdoZWxsbyd9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJ25vcm1hbCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgnbm9ybWFsJykpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1s
aXN0LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI4MjUzZTRkYWI3NDA1NjU4MzhkODQyNTBi
YmE5YmQ5MDRkOTkyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QtZXhw
ZWN0ZWQuaHRtbApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJv
ZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdiBzdHls
ZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgIDxwPm5vcm1hbDwvcD4KKyAgICA8cCBz
dHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvcD4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1s
aXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA2ZDU0OGY2YmEzOTFjYjc0YTgyMzE2ZWRiOTZkYzVkMmU3
MWYzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QuaHRtbApAQCAtMCww
ICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRl
bnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2KSwgcCB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3Zh
ciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3gu
YXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAg
ICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxl
LAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JyksCisgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ3AnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJ2dyZWVuJykpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ3AnLCB7J2NsYXNzJzogJ2hl
bGxvJ30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgn
bm9ybWFsJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC13aXRo
LWFueS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTcz
Nzk5NDNkZjY0ODkwMzI0ZGMwMmQ5ZGUzMDE4NTFhMTExODY1MQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC13
aXRoLWFueS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2PgorICAgIDxkaXY+bm9y
bWFsPC9kaXY+CisgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICA8
L2Rpdj4KKyAgPGRpdj4KKyAgICA8ZGl2Pm5vcm1hbDwvZGl2PgorICAgIDxkaXYgc3R5bGU9ImNv
bG9yOiByZWQiPnJlZDwvZGl2PgorICA8L2Rpdj4KKyAgPGRpdj4KKyAgICA8ZGl2Pm5vcm1hbDwv
ZGl2PgorICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBibHVlIj5ibHVlPC9kaXY+CisgIDwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtd2l0aC1hbnkuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zY2EyMzVhNDNkYjNmN2IzYjc5YjlhZTRjYzk3YTgzN2U4YzZhOGU3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LXdpdGgtYW55Lmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8
c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxl
Jyk7CitzaGFkb3dTdHlsZTEuaW5uZXJIVE1MID0gJyo6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2
KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzaGFkb3dTdHlsZTIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUyLmlubmVySFRNTCA9ICdjb250ZW50Ojot
d2Via2l0LWRpc3RyaWJ1dGVkKCopIHsgY29sb3I6IHJlZDsgfSc7CisKK3ZhciBzaGFkb3dTdHls
ZTMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUzLmlubmVy
SFRNTCA9ICcqOjotd2Via2l0LWRpc3RyaWJ1dGVkKCopIHsgY29sb3I6IGJsdWU7IH0nOworCit2
YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94
LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgIGNy
ZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZTEsCisgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSksCisgICAgICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2NvbnRlbnQnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
e30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3Jl
ZW4nKSkpKTsKKworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHt9
LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hh
ZG93U3R5bGUyLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykp
LAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoJ3JlZCcpKSkpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVh
dGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAg
ICAgICAgICAgICAgc2hhZG93U3R5bGUzLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdk
aXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgnbm9ybWFsJykpLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jykp
LAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2JsdWUnKSkpKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjQzY2ExYzhj
OTRmMzI2OGI2NGY3MGVkZDIxMjZiMDdiMGRmMDFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50Lmh0bWwKQEAg
LTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdj
b250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdikgeyBjb2xvcjogZ3JlZW47IH0nOworCit2
YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94
LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgIGNy
ZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCdncmVlbicpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182293</attachid>
            <date>2013-01-11 01:19:40 -0800</date>
            <delta_ts>2013-01-14 22:14:50 -0800</delta_ts>
            <desc>Update a ChangeLog</desc>
            <filename>bug-82169-20130111181642.patch</filename>
            <type>text/plain</type>
            <size>71668</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlZTBmODNhODUyNmNjZTY3MDE0OWNiNjJhNjY1M2Y1N2UzYTM4Y2E1Li5l
ZDkzODg4YjBmOTM3ZTY1NzVlMzBjY2M0MWYyZTI5NzEzNjNlN2RiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQ4IEBACisyMDEzLTAxLTA2ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbU2hhZG93IERPTV0gSW1wbGVtZW50cyBhICc6OmRpc3RyaWJ1dGVkKCkn
IHBzZXVkbyBlbGVtZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODIxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnRzIGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvIGVsZW1lbnQuCisg
ICAgICAgIFNlZSB0aGUgU2hhZG93IERPTSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgZGV0YWlsLgor
CisgICAgICAgICMgRklYTUU6IFVwZGF0ZSBVUkwgYWZ0ZXIgdGhlIHNwZWMgaXMgdXBkYXRlZC4K
KyAgICAgICAgaHR0cDovL2R2Y3MudzMub3JnL2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlw
L3NwZWMvc2hhZG93L2luZGV4Lmh0bWwjc2VsZWN0aW5nLW5vZGVzLWRpc3RyaWJ1dGVkLXRvLWlu
c2VydGlvbi1wb2ludHMKKworICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB3ZSBhcmUgZ2l2
ZW4gdGhlIGZvbGxvd2luZyBET00gdHJlZSBhbmQgc2hhZG93IHRyZWU6CisKKyAgICAgICAgLSA8
QT4KKyAgICAgICAgICAtIDxCPgorICAgICAgICAgIC0gPEM+CisKKyAgICAgICAgW0EncyBTaGFk
b3dSb290XQorICAgICAgICAgIDxDPgorICAgICAgICAgIC0gPHN0eWxlPgorICAgICAgICAgICAg
ICBEIGNvbnRlbnQ6OmRpc3RyaWJ1dGVkKEIpIHsgY29sb3I6IGdyZWVuOyB9CisgICAgICAgICAg
LSA8RD4KKyAgICAgICAgICAgIC0gPGNvbnRlbnQ+CisKKyAgICAgICAgSW4gdGhpcyBjYXNlLCB0
aGUgc3R5bGUgcnVsZSBkZWZpbmVkIGluIHNoYWRvdyB0cmVlIG1hdGNoZXMgbm9kZSAnQicuCisK
KyAgICAgICAgQSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxlbWVudCBjYW4gbm90IGJlIGEg
cHNldWRvIGNsYXNzIHNpbmNlCisgICAgICAgIGFuIGludGVyc2VjdGlvbiBiZXR3ZWVuIG1hdGNo
ZWRfZWxlbWVudHMoc29tZV9zZWxlY3RvcikgYW5kCisgICAgICAgIG1hdGNoZWRfZWxlbWVudHMo
c29tZV9zZWxlY3Rvcjo6ZGlzdHJpYnV0ZWQoLi4uKSkgaXMgYWx3YXlzIGFuCisgICAgICAgIGVt
cHR5IHNldC4KKworICAgICAgICBBICc6OmRpc3RyaWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50IGlz
IHRoZSBmaXJzdC1ldmVyICpmdW5jdGlvbmFsKgorICAgICAgICBwc2V1ZG8gZWxlbWVudCB3aGlj
aCB0YWtlcyBwYXJhbWV0ZXIuICBJdCdzIGFsc28gdGhlIGZpcnN0IENTUworICAgICAgICBydWxl
IHdoaWNoIGNyb3NzZXMgdGhlIHNoYWRvdyBib3VuZGFyeSBmcm9tIGEgc2hhZG93IHRyZWUgdG8g
dGhlCisgICAgICAgIHRyZWUgb2YgaXRzIHNoYWRvdyBob3N0LiBUaGF0IG1lYW5zIGEgJzo6ZGlz
dHJpYnV0ZWQoKScgcHNldWRvCisgICAgICAgIGVsZW1lbnQgaXMgZGVmaW5lZCBpbiBzaGFkb3cg
dHJlZSwgYnV0IHRoZSBub2RlIHdoaWNoIGlzIG1hdGNoZWQKKyAgICAgICAgaW4gdGhlIHJ1bGUg
aXMgb3V0c2lkZSBvZiB0aGUgc2hhZG93IHRyZWUuIFRoZXJlZm9yZSwgd2UgY2Fubm90CisgICAg
ICAgIHByZWRpY3Qgd2hlcmUgdGhlIG1hdGNoZWQgbm9kZSB3aWxsIGJlIGJlZm9yZWhhbmQuICBD
dXJyZW50IENTUworICAgICAgICBpbXBsZW1lbnRhdGlvbiBhc3N1bWVzIHRoZSBmaW5hbCB0YXJn
ZXQgaXMgYXBwbGllZCBpbiB0aGUgY3VycmVudAorICAgICAgICBzY29wZS4KKworICAgICAgICBU
byBvdmVyY29tZSB0aGlzIGlzc3VlLCBTdHlsZVJlc29sdmVyIG5vdyBoYXMgYSBpbnN0YW5jZSBv
ZgorICAgICAgICBTaGFkb3dEaXN0cmlidXRlZFJ1bGVzIGNsYXNzLiAgQSBzdHlsZSBydWxlIHdp
bGwgYmUgc3RvcmVkIGluIHRoaXMKKyAgICAgICAgaW5zdGFuY2UgaWYgdGhlIHJ1bGUgaW5jbHVk
ZXMgYSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxlbWVudC4KKyAgICAgICAgVGhpcyBjbGFz
cyBhbHNvIGtlZXBzIHRyYWNrIG9mIGVhY2ggUnVsZVNldCBieSBtYXBwaW5nIGl0IHdpdGggYQor
ICAgICAgICBzY29wZSB3aGVyZSB0aGUgcnVsZSB3YXMgb3JpZ2luYWxseSBkZWZpbmVkLiBJbiB0
aGUgZXhhbXBsZSwgdGhlCisgICAgICAgIHNjb3BlIGlzICdDJy4gIFRoZSBzY29wZSBpcyB1c2Vk
IHRvIGNoZWNrIHdoZXRoZXIgdGhlIGxlZnQtbW9zdAorICAgICAgICBtYXRjaGVkIGVsZW1lbnQg
KGluIHRoZSBleGFtcGxlLCBpdCdzIGEgbm9kZSAnRCcpIGV4aXN0cyBpbiB0aGUKKyAgICAgICAg
c2NvcGUuCisKKyAgICAgICAgVG8gaW50cm9kdWNlIFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXMsIHRo
aXMgcGF0Y2ggZmFjdG9yZWQKKyAgICAgICAgU3R5bGVSZXNvbHZlciBhbmQgaW50cm9kdWNlcyBh
IE1hdGNoUmVxdWVzdCwgd2hpY2ggcmVwbGFjZWQKKyAgICAgICAgU3R5bGVSZXNvbHZlcjo6TWF0
Y2hPcHRpb25zLCBzbyB0aGF0IHJlbGF0ZWQgcmVxdWVzdCBwYXJhbWV0ZXJzCisgICAgICAgIGFy
ZSBnYXRoZXJlZCBpbnRvIGEgb25lIGNsYXNzLgorCisgICAgICAgIEludGVybmFsbHksIGEgJzo6
ZGlzdHJpYnV0ZWQnIHBzZXVkbyBlbGVtZW50IGlzIHJlcHJlc2VudGVkIGJ5IGEKKyAgICAgICAg
bmV3bHkgaW50cm9kdWNlZCAnU2hhZG93RGlzdHJpYnV0ZWQnIHJlbGF0aW9uLiAgVGhhdCBtYWtl
cyBhbgorICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2Vs
ZWN0b3IoKSBtdWNoIHNpbXBsZXIuCisgICAgICAgIEEgdHJhbnNmb3JtYXRpb24gZnJvbSBhIGRp
c3RyaWJ1dGVkIHBzZXVkbyBlbGVtZW50IHRvIGEKKyAgICAgICAgU2hhZG93RGlzdHJpYnV0ZWQg
aXMgZG9uZSBpbiBwYXJzaW5nIHN0YWdlIG9mIENTUy4KKworICAgICAgICBTaW5jZSAnOjpkaXN0
cmlidXRlZCgpJyBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZSwgaXQncyBhY3R1YWxseQorICAg
ICAgICBwcmVmaXhlZCB3aXRoICctd2Via2l0LScgYW5kIGd1YXJkZWQgYnkgU0hBRE9XX0RPTSBm
bGFnLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRv
LWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNo
LWRlc2NlbmRhbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbm8tbWF0Y2guaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVj
dGlvbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtc2NvcGVkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWlu
LXNlbGVjdG9yLWxpc3QuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC5odG1sCisKKyAgICAgICAgKiBj
c3MvQ1NTR3JhbW1hci55LmluOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpkZXRlY3REYXNoVG9rZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpyZXdyaXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OnJld3JpdGVTcGVjaWZpZXJzKToKKyAgICAgICAgKiBjc3Mv
Q1NTUGFyc2VyLmg6CisgICAgICAgICogY3NzL0NTU1BhcnNlclZhbHVlcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6Q1NTUGFyc2VyU2VsZWN0b3IpOgorICAgICAg
ICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuaDoKKyAgICAgICAgKENTU1BhcnNlclNlbGVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpmdW5jdGlvbkFyZ3VtZW50U2Vs
ZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnNldEZ1bmN0aW9u
QXJndW1lbnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6
aXNEaXN0cmlidXRlZFBzZXVkb0VsZW1lbnQpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6cHNldWRvSWQpOgorICAgICAgICAo
V2ViQ29yZTo6bmFtZVRvUHNldWRvVHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxl
Y3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6
OnNlbGVjdG9yVGV4dCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6CisgICAgICAgIChD
U1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yOjppc0Rpc3RyaWJ1dGVkUHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTZWxlY3Rvcjo6aXNTaGFkb3dEaXN0cmlidXRlZCk6CisgICAgICAgICogY3NzL0NTU1NlbGVj
dG9yTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNlbGVjdG9ySGFzU2hh
ZG93RGlzdHJpYnV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JIYXNTaGFkb3dEaXN0
cmlidXRlZDo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxpc3Q6
Omhhc1NoYWRvd0Rpc3RyaWJ1dGVkQXQpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvckxpc3Qu
aDoKKyAgICAgICAgKENTU1NlbGVjdG9yTGlzdCk6CisgICAgICAgICogY3NzL1J1bGVTZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQpOgorICAgICAg
ICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JD
aGVja2VyOjpjaGVja1NlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250
ZXh0OjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCk6CisgICAgICAgIChTZWxlY3RvckNoZWNraW5n
Q29udGV4dCk6CisgICAgICAgICogY3NzL1NlbGVjdG9yRmlsdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0SWRlbnRpZmllckhhc2hlcyk6CisgICAgICAg
ICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dEaXN0cmlidXRlZFJ1bGVzOjphZGRTaGFkb3dEaXN0cmlidXRlZFJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93RGlzdHJpYnV0ZWRSdWxlczo6Y29sbGVjdE1hdGNo
UmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cmVzZXRBdXRob3JT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphZGRTaGFkb3dEaXN0cmli
dXRlZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNo
aW5nUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNo
aW5nUnVsZXNGb3JSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bWF0
Y2hTY29wZWRBdXRob3JSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpt
YXRjaEhvc3RSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRjaEF1
dGhvclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Om1hdGNoVXNlclJ1
bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Om1hdGNoVUFSdWxlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxp
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c3R5bGVTaGFyaW5nQ2FuZGlk
YXRlTWF0Y2hlc1J1bGVTZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y2hl
Y2tTZWxlY3Rvcik6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKE1h
dGNoUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpNYXRjaFJlcXVlc3Q6Ok1hdGNoUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpNYXRjaFJlcXVlc3Q6OnVwZGF0ZWQpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChTaGFkb3dEaXN0cmlidXRlZFJ1bGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXM6OmNsZWFyKToKKyAgICAgICAgKFN0eWxlUmVz
b2x2ZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpjb2xsZWN0QWxsSW5zZXJ0aW9uUG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmUp
OgorCiAyMDEzLTAxLTA5ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0
PgogCiAgICAgICAgIFJlbW92ZSBkZXZpY2VTY2FsZUZhY3RvciBhcmd1bWVudCBpbiBjb21wdXRl
TWluaW11bVNjYWxlRmFjdG9yRm9yQ29udGVudENvbnRhaW5lZCgpLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFtbWFyLnkuaW4KaW5kZXggMWZkNDVlNDk1Y2U5NmE1YWE0NWM2NGIxZGU5YmJmNjBjMGZlNzRj
My4uN2E4YzgyNjc4MzdiZWZiM2EwOTBjYmFiNjk0Yzg3N2Q2MTYwNjI3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55LmluCkBAIC02MSw3ICs2MSwxMSBAQCBzdGF0aWMgaW5saW5lIGludCBj
c3N5eWVycm9yKHZvaWQqLCBjb25zdCBjaGFyKikKIAogJX0KIAorI2lmIEVOQUJMRV9TSEFET1df
RE9NCislZXhwZWN0IDY2CisjZWxzZQogJWV4cGVjdCA2NQorI2VuZGlmCiAKICVub25hc3NvYyBM
T1dFU1RfUFJFQwogCkBAIC0xNzcsNiArMTgxLDcgQEAgc3RhdGljIGlubGluZSBpbnQgY3NzeXll
cnJvcih2b2lkKiwgY29uc3QgY2hhciopCiAldG9rZW4gPHN0cmluZz4gQ1VFRlVOQ1RJT04KICNl
bmRpZgogJXRva2VuIDxzdHJpbmc+IE5PVEZVTkNUSU9OCisldG9rZW4gPHN0cmluZz4gRElTVFJJ
QlVURURGVU5DVElPTgogJXRva2VuIDxzdHJpbmc+IENBTENGVU5DVElPTgogJXRva2VuIDxzdHJp
bmc+IE1JTkZVTkNUSU9OCiAldG9rZW4gPHN0cmluZz4gTUFYRlVOQ1RJT04KQEAgLTExNDQsMTIg
KzExNDksMTIgQEAgc2ltcGxlX3NlbGVjdG9yOgogICAgIHwgZWxlbWVudF9uYW1lIHNwZWNpZmll
cl9saXN0IHsKICAgICAgICAgJCQgPSAkMjsKICAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAg
cGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKG51bGxBdG9tLCAkMSwgJCQp
OworICAgICAgICAgICAgJCQgPSBwYXJzZXItPnJld3JpdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnRO
YW1lKG51bGxBdG9tLCAkMSwgJCQpOwogICAgIH0KICAgICB8IHNwZWNpZmllcl9saXN0IHsKICAg
ICAgICAgJCQgPSAkMTsKICAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFyc2VyLT51cGRh
dGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKG51bGxBdG9tLCBzdGFyQXRvbSwgJCQpOworICAg
ICAgICAgICAgJCQgPSBwYXJzZXItPnJld3JpdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKG51
bGxBdG9tLCBzdGFyQXRvbSwgJCQpOwogICAgIH0KICAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBl
bGVtZW50X25hbWUgewogICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rv
cigpOwpAQCAtMTE1OCwxMiArMTE2MywxMiBAQCBzaW1wbGVfc2VsZWN0b3I6CiAgICAgfCBuYW1l
c3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1lIHNwZWNpZmllcl9saXN0IHsKICAgICAgICAgJCQg
PSAkMzsKICAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZp
ZXJzV2l0aEVsZW1lbnROYW1lKCQxLCAkMiwgJCQpOworICAgICAgICAgICAgJCQgPSBwYXJzZXIt
PnJld3JpdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKCQxLCAkMiwgJCQpOwogICAgIH0KICAg
ICB8IG5hbWVzcGFjZV9zZWxlY3RvciBzcGVjaWZpZXJfbGlzdCB7CiAgICAgICAgICQkID0gJDI7
CiAgICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dp
dGhFbGVtZW50TmFtZSgkMSwgc3RhckF0b20sICQkKTsKKyAgICAgICAgICAgICQkID0gcGFyc2Vy
LT5yZXdyaXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSgkMSwgc3RhckF0b20sICQkKTsKICAg
ICB9CiAgIDsKIApAQCAtMTIwOCw3ICsxMjEzLDcgQEAgc3BlY2lmaWVyX2xpc3Q6CiAgICAgICAg
IGlmICghJDIpCiAgICAgICAgICAgICAkJCA9IDA7CiAgICAgICAgIGVsc2UgaWYgKCQxKQotICAg
ICAgICAgICAgJCQgPSBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnMoJDEsICQyKTsKKyAgICAgICAg
ICAgICQkID0gcGFyc2VyLT5yZXdyaXRlU3BlY2lmaWVycygkMSwgJDIpOwogICAgIH0KICAgICB8
IHNwZWNpZmllcl9saXN0IGVycm9yIHsKICAgICAgICAgJCQgPSAwOwpAQCAtMTM1NSw2ICsxMzYw
LDE5IEBAIHBzZXVkbzoKICAgICAgICAgICAgICQkID0gMDsKICAgICB9CiAjZW5kaWYKKyNpZiBF
TkFCTEVfU0hBRE9XX0RPTQorICAgIHwgJzonICc6JyBESVNUUklCVVRFREZVTkNUSU9OIG1heWJl
X3NwYWNlIHNlbGVjdG9yIG1heWJlX3NwYWNlICcpJyB7CisgICAgICAgIGlmICghJDUpCisgICAg
ICAgICAgICAkJCA9IDA7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgJCQgPSBwYXJzZXIt
PmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgICAgICQkLT5zZXRNYXRjaChDU1NT
ZWxlY3Rvcjo6UHNldWRvRWxlbWVudCk7CisgICAgICAgICAgICAkJC0+c2V0RnVuY3Rpb25Bcmd1
bWVudFNlbGVjdG9yKCQ1KTsKKyAgICAgICAgICAgICQzLmxvd2VyKCk7CisgICAgICAgICAgICAk
JC0+c2V0VmFsdWUoJDMpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCiAgICAgLy8gdXNlIGJ5
IDotd2Via2l0LWFueS4KICAgICAvLyBGSVhNRTogc2hvdWxkIHdlIHN1cHBvcnQgZ2VuZXJpYyBz
ZWxlY3RvcnMgaGVyZSBvciBqdXN0IHNpbXBsZV9zZWxlY3RvcnM/CiAgICAgLy8gVXNlIHNpbXBs
ZV9zZWxlY3Rvcl9saXN0IGZvciBub3cgdG8gbWF0Y2ggLW1vei1hbnkuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwCmluZGV4IDA0OGI1Mzc2NjEwNDQ2ZWMwMzU2MmQzYWI4ZWMyYzc0M2UzODY5M2Yu
LjUzY2Y4YzNiNDllNDZkYWFhOGU2YTFjNzA5ZGQzOTI0OTNlOTAyZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwCkBAIC05NjcyLDYgKzk2NzIsMTAgQEAgaW5saW5lIHZvaWQgQ1NTUGFyc2Vy
OjpkZXRlY3REYXNoVG9rZW4oaW50IGxlbmd0aCkKICNlbmRpZgogICAgIH0gZWxzZSBpZiAobGVu
Z3RoID09IDEyICYmIGlzRXF1YWxUb0NTU0lkZW50aWZpZXIobmFtZSArIDEsICJ3ZWJraXQtY2Fs
YyIpKQogICAgICAgICBtX3Rva2VuID0gQ0FMQ0ZVTkNUSU9OOworI2lmIEVOQUJMRShTSEFET1df
RE9NKQorICAgIGVsc2UgaWYgKGxlbmd0aCA9PSAxOSAmJiBpc0VxdWFsVG9DU1NJZGVudGlmaWVy
KG5hbWUgKyAxLCAid2Via2l0LWRpc3RyaWJ1dGVkIikpCisgICAgICAgIG1fdG9rZW4gPSBESVNU
UklCVVRFREZVTkNUSU9OOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgpAQCAtMTA2MDYsMTYgKzEwNjEwLDMyIEBAIFF1YWxpZmllZE5hbWUgQ1NTUGFyc2Vy
OjpkZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNv
CiAgICAgcmV0dXJuIFF1YWxpZmllZE5hbWUocHJlZml4LCBsb2NhbE5hbWUsIG1fc3R5bGVTaGVl
dC0+ZGV0ZXJtaW5lTmFtZXNwYWNlKHByZWZpeCkpOwogfQogCi12b2lkIENTU1BhcnNlcjo6dXBk
YXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFj
ZVByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50TmFtZSwgQ1NTUGFyc2VyU2VsZWN0
b3IqIHNwZWNpZmllcnMpCitDU1NQYXJzZXJTZWxlY3RvciogQ1NTUGFyc2VyOjpyZXdyaXRlU3Bl
Y2lmaWVyc1dpdGhFbGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVByZWZp
eCwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50TmFtZSwgQ1NTUGFyc2VyU2VsZWN0b3IqIHNw
ZWNpZmllcnMpCiB7CiAgICAgQXRvbWljU3RyaW5nIGRldGVybWluZWROYW1lc3BhY2UgPSBuYW1l
c3BhY2VQcmVmaXggIT0gbnVsbEF0b20gJiYgbV9zdHlsZVNoZWV0ID8gbV9zdHlsZVNoZWV0LT5k
ZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNwYWNlUHJlZml4KSA6IG1fZGVmYXVsdE5hbWVzcGFjZTsK
ICAgICBRdWFsaWZpZWROYW1lIHRhZyA9IFF1YWxpZmllZE5hbWUobmFtZXNwYWNlUHJlZml4LCBl
bGVtZW50TmFtZSwgZGV0ZXJtaW5lZE5hbWVzcGFjZSk7CisKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKKyAgICBpZiAoc3BlY2lmaWVycy0+aXNEaXN0cmlidXRlZFBzZXVkb0VsZW1lbnQoKSkgewor
ICAgICAgICBDU1NQYXJzZXJTZWxlY3RvciogYXJndW1lbnRTZWxlY3RvciA9IHNwZWNpZmllcnMt
PmZ1bmN0aW9uQXJndW1lbnRTZWxlY3RvcigpOworICAgICAgICBBU1NFUlQoYXJndW1lbnRTZWxl
Y3Rvcik7CisgICAgICAgIENTU1BhcnNlclNlbGVjdG9yKiBlbmQgPSBhcmd1bWVudFNlbGVjdG9y
OworICAgICAgICB3aGlsZSAoZW5kLT50YWdIaXN0b3J5KCkpCisgICAgICAgICAgICBlbmQgPSBl
bmQtPnRhZ0hpc3RvcnkoKTsKKyAgICAgICAgT3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBlbGVt
ZW50TmFtZVNlbGVjdG9yID0gYWRvcHRQdHIobmV3IENTU1BhcnNlclNlbGVjdG9yKTsKKyAgICAg
ICAgZWxlbWVudE5hbWVTZWxlY3Rvci0+c2V0VGFnKHRhZyk7CisgICAgICAgIGVuZC0+c2V0VGFn
SGlzdG9yeShlbGVtZW50TmFtZVNlbGVjdG9yLnJlbGVhc2UoKSk7CisgICAgICAgIGVuZC0+c2V0
UmVsYXRpb24oQ1NTU2VsZWN0b3I6OlNoYWRvd0Rpc3RyaWJ1dGVkKTsKKyAgICAgICAgcmV0dXJu
IGFyZ3VtZW50U2VsZWN0b3I7CisgICAgfQorI2VuZGlmCisKICAgICBpZiAoIXNwZWNpZmllcnMt
PmlzQ3VzdG9tUHNldWRvRWxlbWVudCgpKSB7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAg
ICAgICBpZiAoIShzcGVjaWZpZXJzLT5wc2V1ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVk
b0N1ZSkpCiAjZW5kaWYKICAgICAgICAgICAgIHNwZWNpZmllcnMtPnNldFRhZyh0YWcpOwotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBzcGVjaWZpZXJzOwogICAgIH0KIAogICAgIENT
U1BhcnNlclNlbGVjdG9yKiBsYXN0U2hhZG93RGVzY2VuZGFudCA9IHNwZWNpZmllcnM7CkBAIC0x
MDYyOCw3ICsxMDY0OCw3IEBAIHZvaWQgQ1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzV2l0aEVs
ZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlCiAKICAgICBpZiAobGFz
dFNoYWRvd0Rlc2NlbmRhbnQtPnRhZ0hpc3RvcnkoKSkgewogICAgICAgICBsYXN0U2hhZG93RGVz
Y2VuZGFudC0+dGFnSGlzdG9yeSgpLT5zZXRUYWcodGFnKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gc3BlY2lmaWVyczsKICAgICB9CiAKICAgICAvLyBGb3Igc2hhZG93LUlEIHBz
ZXVkby1lbGVtZW50cyB0byBiZSBjb3JyZWN0bHkgbWF0Y2hlZCwgdGhlIFNoYWRvd0Rlc2NlbmRh
bnQgY29tYmluYXRvciBoYXMgdG8gYmUgdXNlZC4KQEAgLTEwNjM3LDkgKzEwNjU3LDEwIEBAIHZv
aWQgQ1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZXNwYWNlUHJlCiAgICAgZWxlbWVudE5hbWVTZWxlY3Rvci0+c2V0VGFnKHRh
Zyk7CiAgICAgbGFzdFNoYWRvd0Rlc2NlbmRhbnQtPnNldFRhZ0hpc3RvcnkoZWxlbWVudE5hbWVT
ZWxlY3Rvci5yZWxlYXNlKCkpOwogICAgIGxhc3RTaGFkb3dEZXNjZW5kYW50LT5zZXRSZWxhdGlv
bihDU1NTZWxlY3Rvcjo6U2hhZG93RGVzY2VuZGFudCk7CisgICAgcmV0dXJuIHNwZWNpZmllcnM7
CiB9CiAKLUNTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnMoQ1NT
UGFyc2VyU2VsZWN0b3IqIHNwZWNpZmllcnMsIENTU1BhcnNlclNlbGVjdG9yKiBuZXdTcGVjaWZp
ZXIpCitDU1NQYXJzZXJTZWxlY3RvciogQ1NTUGFyc2VyOjpyZXdyaXRlU3BlY2lmaWVycyhDU1NQ
YXJzZXJTZWxlY3Rvciogc3BlY2lmaWVycywgQ1NTUGFyc2VyU2VsZWN0b3IqIG5ld1NwZWNpZmll
cikKIHsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgaWYgKG5ld1NwZWNpZmllci0+aXND
dXN0b21Qc2V1ZG9FbGVtZW50KCkgfHwgbmV3U3BlY2lmaWVyLT5wc2V1ZG9UeXBlKCkgPT0gQ1NT
U2VsZWN0b3I6OlBzZXVkb0N1ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IDM5MmZmOTg0
MGM1YTZjODM5YzJmMjE0NDM3YWI3NTg0YmI3MjVhOWQuLjcxYjAyNjZkM2MzNWQzN2FiY2MyMTI5
OTNiMTY5NGZjZGUzZjY2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTMwOSw4ICszMDks
OCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZE5hbWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcm
IHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiB1cmkpOwogICAgIFF1YWxpZmllZE5hbWUgZGV0
ZXJtaW5lTmFtZUluTmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBB
dG9taWNTdHJpbmcmIGxvY2FsTmFtZSk7Ci0gICAgdm9pZCB1cGRhdGVTcGVjaWZpZXJzV2l0aEVs
ZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlZml4LCBjb25zdCBBdG9t
aWNTdHJpbmcmIGVsZW1lbnROYW1lLCBDU1NQYXJzZXJTZWxlY3RvciopOwotICAgIENTU1BhcnNl
clNlbGVjdG9yKiB1cGRhdGVTcGVjaWZpZXJzKENTU1BhcnNlclNlbGVjdG9yKiwgQ1NTUGFyc2Vy
U2VsZWN0b3IqKTsKKyAgICBDU1NQYXJzZXJTZWxlY3RvciogcmV3cml0ZVNwZWNpZmllcnNXaXRo
RWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VQcmVmaXgsIGNvbnN0IEF0
b21pY1N0cmluZyYgZWxlbWVudE5hbWUsIENTU1BhcnNlclNlbGVjdG9yKik7CisgICAgQ1NTUGFy
c2VyU2VsZWN0b3IqIHJld3JpdGVTcGVjaWZpZXJzKENTU1BhcnNlclNlbGVjdG9yKiwgQ1NTUGFy
c2VyU2VsZWN0b3IqKTsKIAogICAgIHZvaWQgaW52YWxpZEJsb2NrSGl0KCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKaW5kZXggZDIzYjg1ODVkNWQ3YmI4ZWIwZjI2ODIz
NGI2ZWQwNmE1ODgxZGYyNy4uZTVhMGIzNzdlN2VkNzYwNWQyZjkyNjc0ZjNmOGE2ZjM3OWZhZjI1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKQEAgLTE0Niw2ICsxNDYs
OSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXJWYWx1ZTo6Y3JlYXRlQ1NTVmFsdWUo
KQogCiBDU1NQYXJzZXJTZWxlY3Rvcjo6Q1NTUGFyc2VyU2VsZWN0b3IoKQogICAgIDogbV9zZWxl
Y3RvcihhZG9wdFB0cihmYXN0TmV3PENTU1NlbGVjdG9yPigpKSkKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKKyAgICAsIG1fZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKDApCisjZW5kaWYKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCmluZGV4IDEzMDFiMWNlMGUxMTM3MjNj
Y2Y4MjE2MjhlZTA1ZTJlMzEwMjM2N2IuLjJjZDQwOTk0ZjAxZmJmZWU3Y2U2Y2IwMTA4M2Y0MTQ5
NTM5YTE0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKQEAgLTE4Niw2ICsx
ODYsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxP
d25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4mIHNlbGVjdG9yVmVjdG9yKTsKIAorI2lmIEVOQUJM
RShTSEFET1dfRE9NKQorICAgIENTU1BhcnNlclNlbGVjdG9yKiBmdW5jdGlvbkFyZ3VtZW50U2Vs
ZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uQXJndW1lbnRTZWxlY3RvcjsgfQorICAg
IHZvaWQgc2V0RnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKENTU1BhcnNlclNlbGVjdG9yKiBzZWxl
Y3RvcikgeyBtX2Z1bmN0aW9uQXJndW1lbnRTZWxlY3RvciA9IHNlbGVjdG9yOyB9CisgICAgYm9v
bCBpc0Rpc3RyaWJ1dGVkUHNldWRvRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3It
PmlzRGlzdHJpYnV0ZWRQc2V1ZG9FbGVtZW50KCk7IH0KKyNlbmRpZgorCiAgICAgQ1NTU2VsZWN0
b3I6OlBzZXVkb1R5cGUgcHNldWRvVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3ItPnBz
ZXVkb1R5cGUoKTsgfQogICAgIGJvb2wgaXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9zZWxlY3Rvci0+aXNDdXN0b21Qc2V1ZG9FbGVtZW50KCk7IH0KIApAQCAtMjAwLDYg
KzIwNiw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgT3duUHRyPENTU1NlbGVjdG9yPiBtX3Nl
bGVjdG9yOwogICAgIE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gbV90YWdIaXN0b3J5OworI2lm
IEVOQUJMRShTSEFET1dfRE9NKQorICAgIENTU1BhcnNlclNlbGVjdG9yKiBtX2Z1bmN0aW9uQXJn
dW1lbnRTZWxlY3RvcjsKKyNlbmRpZgogfTsKIAogaW5saW5lIGJvb2wgQ1NTUGFyc2VyU2VsZWN0
b3I6Omhhc1NoYWRvd0Rlc2NlbmRhbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5j
cHAKaW5kZXggNWE2ZWNjYWZiOTQyYzBkNmZhNzNhNjJiNmZmYzc0MjFmM2NhYTllYy4uN2Q4NDc0
YjUzMTNlYWY5NDdkOWY4MDQ2NWE3MDRhNmZjYjJhZmE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3IuY3BwCkBAIC0yMjcsNiArMjI3LDkgQEAgUHNldWRvSWQgQ1NTU2VsZWN0b3I6OnBzZXVk
b0lkKFBzZXVkb1R5cGUgdHlwZSkKICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQogICAgIGNh
c2UgUHNldWRvU2VhbWxlc3NEb2N1bWVudDoKICNlbmRpZgorI2lmIEVOQUJMRShTSEFET1dfRE9N
KQorICAgIGNhc2UgUHNldWRvRGlzdHJpYnV0ZWQ6CisjZW5kaWYKICAgICAgICAgcmV0dXJuIE5P
UFNFVURPOwogICAgIGNhc2UgUHNldWRvTm90UGFyc2VkOgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKQEAgLTMxNiw2ICszMTksOSBAQCBzdGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJ
bXBsKiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGU+KiBuYW1lVG9Qc2V1ZG9UeXBlTWFwKAogI2lm
IEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIHNlYW1sZXNzRG9jdW1lbnQsICgiLXdlYmtpdC1zZWFtbGVzcy1kb2N1bWVudCIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICNlbmRpZgorI2lmIEVOQUJMRShT
SEFET1dfRE9NKQorICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBkaXN0cmli
dXRlZCwgKCItd2Via2l0LWRpc3RyaWJ1dGVkKCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyNlbmRpZgogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBpblJhbmdlLCAoImluLXJhbmdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBvdXRPZlJhbmdlLCAo
Im91dC1vZi1yYW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIApA
QCAtMzk4LDYgKzQwNCw5IEBAIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NT
ZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVkb1R5cGVNYXAoCiAjaWYgRU5BQkxFKElG
UkFNRV9TRUFNTEVTUykKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KHNlYW1sZXNzRG9j
dW1lbnQuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvU2VhbWxlc3NEb2N1bWVudCk7CiAjZW5k
aWYKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0
KGRpc3RyaWJ1dGVkLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Rpc3RyaWJ1dGVkKTsKKyNl
bmRpZgogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoaW5SYW5nZS5pbXBsKCksIENTU1Nl
bGVjdG9yOjpQc2V1ZG9JblJhbmdlKTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KG91
dE9mUmFuZ2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvT3V0T2ZSYW5nZSk7CiAgICAgfQpA
QCAtNDQ4LDYgKzQ1Nyw5IEBAIHZvaWQgQ1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKCkg
Y29uc3QKICAgICBjYXNlIFBzZXVkb0ZpcnN0TGV0dGVyOgogICAgIGNhc2UgUHNldWRvRmlyc3RM
aW5lOgogICAgICAgICBjb21wYXQgPSB0cnVlOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAg
IGNhc2UgUHNldWRvRGlzdHJpYnV0ZWQ6CisjZW5kaWYKICAgICBjYXNlIFBzZXVkb1Jlc2l6ZXI6
CiAgICAgY2FzZSBQc2V1ZG9TY3JvbGxiYXI6CiAgICAgY2FzZSBQc2V1ZG9TY3JvbGxiYXJDb3Ju
ZXI6CkBAIC02ODQsNiArNjk2LDEwIEBAIFN0cmluZyBDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0
KCkgY29uc3QKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50OgogICAgICAgICAgICAgcmV0dXJuIHRhZ0hp
c3RvcnlUZXh0ICsgc3RyLnRvU3RyaW5nKCk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rpc3RyaWJ1dGVkOgorICAgICAgICAgICAgcmV0
dXJuIHRhZ0hpc3RvcnlUZXh0ICsgIjo6LXdlYmtpdC1kaXN0cmlidXRlZCgiICsgc3RyLnRvU3Ry
aW5nKCkgKyAiKSI7CisjZW5kaWYKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3IuaAppbmRleCAwNjQ5OGY0ZWM3ODEyYzY2OWE1NjcyMzVlNTVhOTllNDU4ZmRhMjUyLi4y
MzA2OTU0Mzk1MWE5ODU4NGUxYjdkYjAwYjU5ZjUwODRlOWMwMjgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3IuaApAQCAtNzYsNyArNzYsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAgICAgRGlyZWN0QWRqYWNlbnQsCiAgICAgICAgICAgICBJbmRpcmVjdEFkamFjZW50LAogICAg
ICAgICAgICAgU3ViU2VsZWN0b3IsCi0gICAgICAgICAgICBTaGFkb3dEZXNjZW5kYW50CisgICAg
ICAgICAgICBTaGFkb3dEZXNjZW5kYW50LAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAg
ICAgICAgU2hhZG93RGlzdHJpYnV0ZWQKKyNlbmRpZgogICAgICAgICB9OwogCiAgICAgICAgIGVu
dW0gUHNldWRvVHlwZSB7CkBAIC0xNjEsNyArMTY0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgICAgIFBzZXVkb0Z1dHVyZUN1ZSwKICNlbmRpZgogI2lmIEVOQUJMRShJRlJBTUVf
U0VBTUxFU1MpCi0gICAgICAgICAgICBQc2V1ZG9TZWFtbGVzc0RvY3VtZW50CisgICAgICAgICAg
ICBQc2V1ZG9TZWFtbGVzc0RvY3VtZW50LAorI2VuZGlmCisjaWYgRU5BQkxFKFNIQURPV19ET00p
CisgICAgICAgICAgICBQc2V1ZG9EaXN0cmlidXRlZAogI2VuZGlmCiAgICAgICAgIH07CiAKQEAg
LTIyMyw2ICsyMjksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzQ3Vz
dG9tUHNldWRvRWxlbWVudCgpIGNvbnN0OwogICAgICAgICBib29sIGlzU2libGluZ1NlbGVjdG9y
KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNBdHRyaWJ1dGVTZWxlY3RvcigpIGNvbnN0OworI2lm
IEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICBib29sIGlzRGlzdHJpYnV0ZWRQc2V1ZG9FbGVt
ZW50KCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNTaGFkb3dEaXN0cmlidXRlZCgpIGNvbnN0Owor
I2VuZGlmCiAKICAgICAgICAgUmVsYXRpb24gcmVsYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxSZWxhdGlvbj4obV9yZWxhdGlvbik7IH0KIApAQCAtMzM1LDYgKzM0NSwxOCBAQCBp
bmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6aXNBdHRyaWJ1dGVTZWxlY3RvcigpIGNvbnN0CiAgICAg
ICAgIHx8IG1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OkVuZDsKIH0KIAorI2lmIEVOQUJMRShTSEFE
T1dfRE9NKQoraW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6OmlzRGlzdHJpYnV0ZWRQc2V1ZG9FbGVt
ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tYXRjaCA9PSBQc2V1ZG9FbGVtZW50ICYmIHBz
ZXVkb1R5cGUoKSA9PSBQc2V1ZG9EaXN0cmlidXRlZDsKK30KKworaW5saW5lIGJvb2wgQ1NTU2Vs
ZWN0b3I6OmlzU2hhZG93RGlzdHJpYnV0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3JlbGF0
aW9uID09IENTU1NlbGVjdG9yOjpTaGFkb3dEaXN0cmlidXRlZDsKK30KKyNlbmRpZgorCiBpbmxp
bmUgdm9pZCBDU1NTZWxlY3Rvcjo6c2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkK
IHsKICAgICAvLyBOZWVkIHRvIGRvIHJlZiBjb3VudGluZyBtYW51YWxseSBmb3IgdGhlIHVuaW9u
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAppbmRleCA0MzEzNmQxYzkwMWM2
MzQxYmFjYmVmODM5NDlkZjk0ZTYwZjFjMzZjLi5jNTI5M2ZiMmEyMDNlZDZmMTlmYzU3MTUyMzZi
NWQ5ZjY2NGJmNTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JM
aXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcApAQCAt
MjExLDYgKzIxMSwyMSBAQCBib29sIENTU1NlbGVjdG9yTGlzdDo6aGFzSW52YWxpZFNlbGVjdG9y
KCkgY29uc3QKICAgICByZXR1cm4gZm9yRWFjaFNlbGVjdG9yKGZ1bmN0b3IsIHRoaXMpOwogfQog
CisjaWYgRU5BQkxFKFNIQURPV19ET00pCitjbGFzcyBTZWxlY3Rvckhhc1NoYWRvd0Rpc3RyaWJ1
dGVkIHsKK3B1YmxpYzoKKyAgICBib29sIG9wZXJhdG9yKCkoQ1NTU2VsZWN0b3IqIHNlbGVjdG9y
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbGVjdG9yLT5pc1NoYWRvd0Rpc3RyaWJ1dGVkKCk7
CisgICAgfQorfTsKKworYm9vbCBDU1NTZWxlY3Rvckxpc3Q6Omhhc1NoYWRvd0Rpc3RyaWJ1dGVk
QXQoc2l6ZV90IGluZGV4KSBjb25zdAoreworICAgIFNlbGVjdG9ySGFzU2hhZG93RGlzdHJpYnV0
ZWQgZnVuY3RvcjsKKyAgICByZXR1cm4gZm9yRWFjaFRhZ1NlbGVjdG9yKGZ1bmN0b3IsIHNlbGVj
dG9yQXQoaW5kZXgpKTsKK30KIAorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaAppbmRleCA0ZmNmZWUyZmFhNDE4MmQ3YTlhYjA1
NWJjY2U1MTlmZTc0ZTIyNzE1Li40ZTdiNTgyZGJjNTExOGE0NWU0NmRiYmYwY2Q4OTRhOWY3NDNm
NmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCkBAIC02MCw2ICs2MCwxMCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBzZWxlY3RvcnNOZWVkTmFtZXNwYWNlUmVzb2x1dGlvbigpOwog
ICAgIGJvb2wgaGFzSW52YWxpZFNlbGVjdG9yKCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKKyAgICBib29sIGhhc1NoYWRvd0Rpc3RyaWJ1dGVkQXQoc2l6ZV90IGluZGV4KSBjb25z
dDsKKyNlbmRpZgorCiAgICAgU3RyaW5nIHNlbGVjdG9yc1RleHQoKSBjb25zdDsKIAogICAgIHZv
aWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1
bGVTZXQuY3BwCmluZGV4IGQ4NDAwNGQ5Y2NjMTQ4NDNlNGI0MGE2YmQ2MmFjNzJhOGRmYjIyZWIu
LmJiMTQ4OTM3NTk1MmQyZTFjOTk2MGM1YmMzYjRlZjRlMjg1ZDM5ZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVs
ZVNldC5jcHAKQEAgLTI4Nyw5ICsyODcsMjUgQEAgdm9pZCBSdWxlU2V0OjphZGRSdWxlc0Zyb21T
aGVldChTdHlsZVNoZWV0Q29udGVudHMqIHNoZWV0LCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHUKICAg
ICAgICAgU3R5bGVSdWxlQmFzZSogcnVsZSA9IHJ1bGVzW2ldLmdldCgpOwogCiAgICAgICAgIEFT
U0VSVCghcnVsZS0+aXNJbXBvcnRSdWxlKCkpOwotICAgICAgICBpZiAocnVsZS0+aXNTdHlsZVJ1
bGUoKSkKLSAgICAgICAgICAgIGFkZFN0eWxlUnVsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihy
dWxlKSwgYWRkUnVsZUZsYWdzKTsKLSAgICAgICAgZWxzZSBpZiAocnVsZS0+aXNQYWdlUnVsZSgp
KQorICAgICAgICBpZiAocnVsZS0+aXNTdHlsZVJ1bGUoKSkgeworICAgICAgICAgICAgU3R5bGVS
dWxlKiBzdHlsZVJ1bGUgPSBzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihydWxlKTsKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKKyAgICAgICAgICAgIGlmICghc2NvcGUpCisgICAgICAgICAgICAgICAg
YWRkU3R5bGVSdWxlKHN0eWxlUnVsZSwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0ID0g
c3R5bGVSdWxlLT5zZWxlY3Rvckxpc3QoKTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBz
ZWxlY3RvckluZGV4ID0gMDsgc2VsZWN0b3JJbmRleCAhPSBub3RGb3VuZDsgc2VsZWN0b3JJbmRl
eCA9IHNlbGVjdG9yTGlzdC5pbmRleE9mTmV4dFNlbGVjdG9yQWZ0ZXIoc2VsZWN0b3JJbmRleCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yTGlzdC5oYXNTaGFkb3dEaXN0cmli
dXRlZEF0KHNlbGVjdG9ySW5kZXgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZXIt
PmFkZFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZShzdHlsZVJ1bGUsIHNlbGVjdG9ySW5kZXgsIGNvbnN0
X2Nhc3Q8Q29udGFpbmVyTm9kZSo+KHNjb3BlKSwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgYWRkUnVsZShzdHlsZVJ1bGUs
IHNlbGVjdG9ySW5kZXgsIGFkZFJ1bGVGbGFncyk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorI2Vsc2UKKyAgICAgICAgICAgIGFkZFN0eWxlUnVsZShzdHlsZVJ1bGUsIGFkZFJ1
bGVGbGFncyk7CisjZW5kaWYKKworICAgICAgICB9IGVsc2UgaWYgKHJ1bGUtPmlzUGFnZVJ1bGUo
KSkKICAgICAgICAgICAgIGFkZFBhZ2VSdWxlKHN0YXRpY19jYXN0PFN0eWxlUnVsZVBhZ2UqPihy
dWxlKSk7CiAgICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlzTWVkaWFSdWxlKCkpIHsKICAgICAgICAg
ICAgIFN0eWxlUnVsZU1lZGlhKiBtZWRpYVJ1bGUgPSBzdGF0aWNfY2FzdDxTdHlsZVJ1bGVNZWRp
YSo+KHJ1bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCAyYTM1
ZmQwNmZiMmM1Yzk4NTVkNDUxMDcxOGIyMGU2OTBlZjU5ZWU5Li4xMTE2YWRiYzI3YjNjODlhYzY4
MzZlNTY0NWYwNGJkODczZDZhMDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2Vy
LmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTFByb2dyZXNzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1l
bnQuaCIKKyNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKQEAgLTI4MSw4ICsyODIsMTMgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1h
dGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWMKIAog
ICAgIC8vIFByZXBhcmUgbmV4dCBzZWxlY3RvcgogICAgIENTU1NlbGVjdG9yKiBoaXN0b3J5U2Vs
ZWN0b3IgPSBjb250ZXh0LnNlbGVjdG9yLT50YWdIaXN0b3J5KCk7Ci0gICAgaWYgKCFoaXN0b3J5
U2VsZWN0b3IpCisgICAgaWYgKCFoaXN0b3J5U2VsZWN0b3IpIHsKKyAgICAgICAgaWYgKGNvbnRl
eHQuY3Jvc3NCb3VuZGFyeSA9PSBDcm9zc2VzQm91bmRhcnkpIHsKKyAgICAgICAgICAgIEFTU0VS
VChjb250ZXh0LnNjb3BlKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnNjb3BlLT5jb250
YWlucyhjb250ZXh0LmVsZW1lbnQpID8gU2VsZWN0b3JNYXRjaGVzIDogU2VsZWN0b3JGYWlsc0xv
Y2FsbHk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFNlbGVjdG9yTWF0Y2hlczsKKyAgICB9
CiAKICAgICBTZWxlY3RvckNoZWNraW5nQ29udGV4dCBuZXh0Q29udGV4dChjb250ZXh0KTsKICAg
ICBuZXh0Q29udGV4dC5zZWxlY3RvciA9IGhpc3RvcnlTZWxlY3RvcjsKQEAgLTM4NCw2ICszOTAs
MjYgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWMKICAgICAgICAgICAgIG5leHRDb250ZXh0LmVs
ZW1lbnRQYXJlbnRTdHlsZSA9IDA7CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3Rvcihu
ZXh0Q29udGV4dCwgaWdub3JlRHluYW1pY1BzZXVkbyk7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEaXN0cmlidXRlZDoKKyAg
ICAgICAgeworICAgICAgICAgICAgVmVjdG9yPEluc2VydGlvblBvaW50KiwgOD4gaW5zZXJ0aW9u
UG9pbnRzOworICAgICAgICAgICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0gY29udGV4dC5lbGVt
ZW50OyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CisgICAg
ICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnRzLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY29s
bGVjdEFsbEluc2VydGlvblBvaW50cyhlbGVtZW50LCBpbnNlcnRpb25Qb2ludHMpOworICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zZXJ0aW9uUG9pbnRzLnNpemUoKTsg
KytpKSB7CisgICAgICAgICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnQgPSBpbnNlcnRp
b25Qb2ludHNbaV07CisgICAgICAgICAgICAgICAgICAgIG5leHRDb250ZXh0LmlzU3ViU2VsZWN0
b3IgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgbmV4dENvbnRleHQuZWxlbWVudFN0eWxl
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbmV4dENvbnRleHQuZWxlbWVudFBhcmVudFN0eWxl
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2Vs
ZWN0b3IobmV4dENvbnRleHQsIGlnbm9yZUR5bmFtaWNQc2V1ZG8pOworICAgICAgICAgICAgICAg
ICAgICBpZiAobWF0Y2ggPT0gU2VsZWN0b3JNYXRjaGVzKQorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG1hdGNoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKKyAgICAgICAgfQorI2VuZGlm
CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JDaGVja2VyLmgKaW5kZXggMzMxOTNmNzZiYzMyODI2YWQwZDNlZTYxNDUxNWI5YmFjNWQyNTIw
Yi4uNTEzMThjMmE2MjJmMjc0NmExYTYxMTM5Y2IwMDNjMjhiOGYzOGZhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TZWxlY3RvckNoZWNrZXIuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgZW51
bSBTZWxlY3Rvck1hdGNoIHsgU2VsZWN0b3JNYXRjaGVzLCBTZWxlY3RvckZhaWxzTG9jYWxseSwg
U2VsZWN0b3JGYWlsc0FsbFNpYmxpbmdzLCBTZWxlY3RvckZhaWxzQ29tcGxldGVseSB9OwogICAg
IGVudW0gVmlzaXRlZE1hdGNoVHlwZSB7IFZpc2l0ZWRNYXRjaERpc2FibGVkLCBWaXNpdGVkTWF0
Y2hFbmFibGVkIH07CiAgICAgZW51bSBNb2RlIHsgUmVzb2x2aW5nU3R5bGUgPSAwLCBDb2xsZWN0
aW5nUnVsZXMsIFF1ZXJ5aW5nUnVsZXMsIFNoYXJpbmdSdWxlcyB9OworICAgIGVudW0gQ3Jvc3NC
b3VuZGFyeSB7IERvZXNOb3RDcm9zc0JvdW5kYXJ5LCBDcm9zc2VzQm91bmRhcnkgfTsKIAogICAg
IHN0cnVjdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCB7CiAgICAgICAgIC8vIEluaXRpYWwgc2Vs
ZWN0b3IgY29uc3RydWN0b3IKQEAgLTYzLDYgKzY0LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
LCBpc1N1YlNlbGVjdG9yKGZhbHNlKQogICAgICAgICAgICAgLCBoYXNTY3JvbGxiYXJQc2V1ZG8o
ZmFsc2UpCiAgICAgICAgICAgICAsIGhhc1NlbGVjdGlvblBzZXVkbyhmYWxzZSkKKyAgICAgICAg
ICAgICwgY3Jvc3NCb3VuZGFyeShEb2VzTm90Q3Jvc3NCb3VuZGFyeSkKICAgICAgICAgeyB9CiAK
ICAgICAgICAgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yOwpAQCAtNzUsNiArNzcsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGJvb2wgaXNTdWJTZWxlY3RvcjsKICAgICAgICAgYm9vbCBoYXNTY3JvbGxiYXJQ
c2V1ZG87CiAgICAgICAgIGJvb2wgaGFzU2VsZWN0aW9uUHNldWRvOworICAgICAgICBDcm9zc0Jv
dW5kYXJ5IGNyb3NzQm91bmRhcnk7CiAgICAgfTsKIAogICAgIGJvb2wgY2hlY2tTZWxlY3RvcihD
U1NTZWxlY3RvciosIEVsZW1lbnQqLCBib29sIGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yID0gZmFs
c2UpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAKaW5kZXggY2VhYTc2
ODE0OTAwYzBiMzFkMzk0YzRmMjZjYzRjYmI1ZTM1ZThkYy4uNmIzOTA2NWU4MDk2Mzg3MGRkYjUw
ZDg1Yzk3ZjUzYzM4YTE3NTQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVj
dG9yRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3Bw
CkBAIC0xNDgsNiArMTQ4LDkgQEAgdm9pZCBTZWxlY3RvckZpbHRlcjo6Y29sbGVjdElkZW50aWZp
ZXJIYXNoZXMoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCB1bnNpZ24KICAgICAgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6RGlyZWN0QWRqYWNlbnQ6CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OkluZGlyZWN0QWRqYWNlbnQ6CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rlc2Nl
bmRhbnQ6CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OlNoYWRvd0Rpc3RyaWJ1dGVkOgorI2VuZGlmCiAgICAgICAgICAgICBza2lwT3ZlclN1YnNlbGVj
dG9ycyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6RGVzY2VuZGFudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAwOThl
MGQ1N2MwYjdlMWQ3NGVkMTUwOGY3ZTkwMGQ1MTZjMmU5NzBkLi43NzQ0ZjM1YjkxM2IzNWU1NGM5
ZTExYmM4NmE5ZWYxZDY1M2YwZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CkBAIC0yNTgsNiArMjU4LDI2IEBAIHN0YXRpYyBTdHlsZVByb3BlcnR5U2V0KiByaWdodFRvTGVm
dERlY2xhcmF0aW9uKCkKICAgICByZXR1cm4gcmlnaHRUb0xlZnREZWNsLmdldCgpOwogfQogCisj
aWYgRU5BQkxFKFNIQURPV19ET00pCit2b2lkIFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXM6OmFkZFNo
YWRvd0Rpc3RyaWJ1dGVkUnVsZShTdHlsZVJ1bGUqIHJ1bGUsIHNpemVfdCBzZWxlY3RvckluZGV4
LCBDb250YWluZXJOb2RlKiBzY29wZSwgQWRkUnVsZUZsYWdzIGFkZFJ1bGVGbGFncykKK3sKKyAg
ICBpZiAobV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAuY29udGFpbnMoc2NvcGUpKQorICAg
ICAgICBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5nZXQoc2NvcGUpLT5hZGRSdWxlKHJ1
bGUsIHNlbGVjdG9ySW5kZXgsIGFkZFJ1bGVGbGFncyk7CisgICAgZWxzZSB7CisgICAgICAgIE93
blB0cjxSdWxlU2V0PiBydWxlU2V0Rm9yU2NvcGUgPSBhZG9wdFB0cihuZXcgUnVsZVNldCgpKTsK
KyAgICAgICAgcnVsZVNldEZvclNjb3BlLT5hZGRSdWxlKHJ1bGUsIHNlbGVjdG9ySW5kZXgsIGFk
ZFJ1bGVGbGFncyk7CisgICAgICAgIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLmFkZChz
Y29wZSwgcnVsZVNldEZvclNjb3BlLnJlbGVhc2UoKSk7CisgICAgfQorfQorCit2b2lkIFNoYWRv
d0Rpc3RyaWJ1dGVkUnVsZXM6OmNvbGxlY3RNYXRjaFJlcXVlc3RzKGJvb2wgaW5jbHVkZUVtcHR5
UnVsZXMsIFZlY3RvcjxNYXRjaFJlcXVlc3Q+JiBtYXRjaFJlcXVlc3RzKQoreworICAgIGZvciAo
U2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwOjppdGVyYXRvciBpdCA9IG1fc2hhZG93RGlzdHJp
YnV0ZWRSdWxlU2V0TWFwLmJlZ2luKCk7IGl0ICE9IG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0
TWFwLmVuZCgpOyArK2l0KQorICAgICAgICBtYXRjaFJlcXVlc3RzLmFwcGVuZChNYXRjaFJlcXVl
c3QoaXQtPnZhbHVlLmdldCgpLCBpdC0+a2V5LCBpbmNsdWRlRW1wdHlSdWxlcywgIFNlbGVjdG9y
Q2hlY2tlcjo6Q3Jvc3Nlc0JvdW5kYXJ5KSk7Cit9CisKKyNlbmRpZgorCiAKIFN0eWxlUmVzb2x2
ZXI6OlN0eWxlUmVzb2x2ZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIG1hdGNoQXV0aG9yQW5k
VXNlclN0eWxlcykKICAgICA6IG1faGFzVUFBcHBlYXJhbmNlKGZhbHNlKQpAQCAtMzY0LDYgKzM4
NCw5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6cmVzZXRBdXRob3JTdHlsZSgpCiB7CiAgICAgbV9h
dXRob3JTdHlsZSA9IFJ1bGVTZXQ6OmNyZWF0ZSgpOwogICAgIG1fYXV0aG9yU3R5bGUtPmRpc2Fi
bGVBdXRvU2hyaW5rVG9GaXQoKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBtX3NoYWRv
d0Rpc3RyaWJ1dGVkUnVsZXMuY2xlYXIoKTsKKyNlbmRpZgogfQogCiB2b2lkIFN0eWxlUmVzb2x2
ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKHVuc2lnbmVkIGZpcnN0TmV3LCBjb25zdCBWZWN0
b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHN0eWxlU2hlZXRzKQpAQCAtNDQ4LDYgKzQ3MSwx
NCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZEtleWZyYW1lU3R5bGUoUGFzc1JlZlB0cjxTdHls
ZVJ1bGVLZXlmcmFtZXM+IHJ1bGUpCiAgICAgbV9rZXlmcmFtZXNSdWxlTWFwLnNldChzLmltcGwo
KSwgcnVsZSk7CiB9CiAKKworI2lmIEVOQUJMRShTSEFET1dfRE9NKQordm9pZCBTdHlsZVJlc29s
dmVyOjphZGRTaGFkb3dEaXN0cmlidXRlZFJ1bGUoU3R5bGVSdWxlKiBydWxlLCBzaXplX3Qgc2Vs
ZWN0b3JJbmRleCwgQ29udGFpbmVyTm9kZSogc2NvcGUsIEFkZFJ1bGVGbGFncyBhZGRSdWxlRmxh
Z3MpCit7CisgICAgbV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVzLmFkZFNoYWRvd0Rpc3RyaWJ1dGVk
UnVsZShydWxlLCBzZWxlY3RvckluZGV4LCBzY29wZSwgYWRkUnVsZUZsYWdzKTsKK30KKyNlbmRp
ZgorCiBTdHlsZVJlc29sdmVyOjp+U3R5bGVSZXNvbHZlcigpCiB7CiAgICAgbV9mb250U2VsZWN0
b3ItPmNsZWFyRG9jdW1lbnQoKTsKQEAgLTY0MiwyMCArNjczLDIwIEBAIGlubGluZSBib29sIE1h
dGNoaW5nVUFSdWxlc1Njb3BlOjppc01hdGNoaW5nVUFSdWxlcygpCiAKIGJvb2wgTWF0Y2hpbmdV
QVJ1bGVzU2NvcGU6Om1fbWF0Y2hpbmdVQVJ1bGVzID0gZmFsc2U7CiAKLXZvaWQgU3R5bGVSZXNv
bHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMoUnVsZVNldCogcnVsZXMsIGludCYgZmlyc3RSdWxl
SW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJiBvcHRpb25zKQor
dm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyhjb25zdCBNYXRjaFJlcXVl
c3QmIG1hdGNoUmVxdWVzdCwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4
KQogewotICAgIEFTU0VSVChydWxlcyk7CisgICAgQVNTRVJUKG1hdGNoUmVxdWVzdC5ydWxlU2V0
KTsKICAgICBBU1NFUlQobV9lbGVtZW50KTsKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcHNl
dWRvSWQgPSBtX2VsZW1lbnQtPnNoYWRvd1BzZXVkb0lkKCk7CiAgICAgaWYgKCFwc2V1ZG9JZC5p
c0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKG1fc3R5bGVkRWxlbWVudCk7Ci0gICAgICAgIGNv
bGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChydWxlcy0+c2hhZG93UHNldWRvRWxlbWVudFJ1bGVz
KHBzZXVkb0lkLmltcGwoKSksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4LCBvcHRpb25z
KTsKKyAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxl
U2V0LT5zaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMocHNldWRvSWQuaW1wbCgpKSwgbWF0Y2hSZXF1
ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CiAgICAgfQogCiAjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQogICAgIGlmIChtX2VsZW1lbnQtPmlzV2ViVlRUTm9kZSgpKQotICAgICAg
ICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QocnVsZXMtPmN1ZVBzZXVkb1J1bGVzKCksIGZp
cnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4LCBvcHRpb25zKTsKKyAgICAgICAgY29sbGVjdE1h
dGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5jdWVQc2V1ZG9SdWxlcygp
LCBtYXRjaFJlcXVlc3QsIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsKICNlbmRpZgog
ICAgIC8vIENoZWNrIHdoZXRoZXIgb3RoZXIgdHlwZXMgb2YgcnVsZXMgYXJlIGFwcGxpY2FibGUg
aW4gdGhlIGN1cnJlbnQgdHJlZSBzY29wZS4gQ3JpdGVyaWEgZm9yIHRoaXM6CiAgICAgLy8gYSkg
aXQncyBhIFVBIHJ1bGUKQEAgLTY2NCwzOCArNjk1LDM5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6
Y29sbGVjdE1hdGNoaW5nUnVsZXMoUnVsZVNldCogcnVsZXMsIGludCYgZmlyc3RSdWxlSW5kZXgs
IGluCiAgICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUgPSBtX2VsZW1lbnQtPnRyZWVTY29wZSgpOwog
ICAgIGlmICghTWF0Y2hpbmdVQVJ1bGVzU2NvcGU6OmlzTWF0Y2hpbmdVQVJ1bGVzKCkKICAgICAg
ICAgJiYgIXRyZWVTY29wZS0+YXBwbHlBdXRob3JTdHlsZXMoKQotICAgICAgICAmJiAoIW9wdGlv
bnMuc2NvcGUgfHwgb3B0aW9ucy5zY29wZS0+dHJlZVNjb3BlKCkgIT0gdHJlZVNjb3BlKSkKKyAg
ICAgICAgJiYgKCFtYXRjaFJlcXVlc3Quc2NvcGUgfHwgbWF0Y2hSZXF1ZXN0LnNjb3BlLT50cmVl
U2NvcGUoKSAhPSB0cmVlU2NvcGUpCisgICAgICAgICYmIG1hdGNoUmVxdWVzdC5jcm9zc0JvdW5k
YXJ5ID09IFNlbGVjdG9yQ2hlY2tlcjo6RG9lc05vdENyb3NzQm91bmRhcnkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIFdlIG5lZWQgdG8gY29sbGVjdCB0aGUgcnVsZXMgZm9yIGlkLCBjbGFz
cywgdGFnLCBhbmQgZXZlcnl0aGluZyBlbHNlIGludG8gYSBidWZmZXIgYW5kCiAgICAgLy8gdGhl
biBzb3J0IHRoZSBidWZmZXIuCiAgICAgaWYgKG1fZWxlbWVudC0+aGFzSUQoKSkKLSAgICAgICAg
Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KHJ1bGVzLT5pZFJ1bGVzKG1fZWxlbWVudC0+aWRG
b3JTdHlsZVJlc29sdXRpb24oKS5pbXBsKCkpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRl
eCwgb3B0aW9ucyk7CisgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJl
cXVlc3QucnVsZVNldC0+aWRSdWxlcyhtX2VsZW1lbnQtPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCku
aW1wbCgpKSwgbWF0Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CiAg
ICAgaWYgKG1fc3R5bGVkRWxlbWVudCAmJiBtX3N0eWxlZEVsZW1lbnQtPmhhc0NsYXNzKCkpIHsK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3N0eWxlZEVsZW1lbnQtPmNsYXNzTmFt
ZXMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlz
dChydWxlcy0+Y2xhc3NSdWxlcyhtX3N0eWxlZEVsZW1lbnQtPmNsYXNzTmFtZXMoKVtpXS5pbXBs
KCkpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgb3B0aW9ucyk7CisgICAgICAgICAg
ICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPmNsYXNz
UnVsZXMobV9zdHlsZWRFbGVtZW50LT5jbGFzc05hbWVzKClbaV0uaW1wbCgpKSwgbWF0Y2hSZXF1
ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CiAgICAgfQogCiAgICAgaWYgKG1f
ZWxlbWVudC0+aXNMaW5rKCkpCi0gICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChy
dWxlcy0+bGlua1BzZXVkb0NsYXNzUnVsZXMoKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5k
ZXgsIG9wdGlvbnMpOworICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hS
ZXF1ZXN0LnJ1bGVTZXQtPmxpbmtQc2V1ZG9DbGFzc1J1bGVzKCksIG1hdGNoUmVxdWVzdCwgZmly
c3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgpOwogICAgIGlmIChtX3NlbGVjdG9yQ2hlY2tlci5t
YXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyhtX2VsZW1lbnQpKQotICAgICAgICBjb2xsZWN0TWF0Y2hp
bmdSdWxlc0Zvckxpc3QocnVsZXMtPmZvY3VzUHNldWRvQ2xhc3NSdWxlcygpLCBmaXJzdFJ1bGVJ
bmRleCwgbGFzdFJ1bGVJbmRleCwgb3B0aW9ucyk7Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXNG
b3JMaXN0KHJ1bGVzLT50YWdSdWxlcyhtX2VsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSksIGZp
cnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4LCBvcHRpb25zKTsKLSAgICBjb2xsZWN0TWF0Y2hp
bmdSdWxlc0Zvckxpc3QocnVsZXMtPnVuaXZlcnNhbFJ1bGVzKCksIGZpcnN0UnVsZUluZGV4LCBs
YXN0UnVsZUluZGV4LCBvcHRpb25zKTsKKyAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JM
aXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5mb2N1c1BzZXVkb0NsYXNzUnVsZXMoKSwgbWF0Y2hS
ZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CisgICAgY29sbGVjdE1hdGNo
aW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT50YWdSdWxlcyhtX2VsZW1lbnQt
PmxvY2FsTmFtZSgpLmltcGwoKSksIG1hdGNoUmVxdWVzdCwgZmlyc3RSdWxlSW5kZXgsIGxhc3RS
dWxlSW5kZXgpOworICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3Qu
cnVsZVNldC0+dW5pdmVyc2FsUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwg
bGFzdFJ1bGVJbmRleCk7CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5n
UnVsZXNGb3JSZWdpb24oUnVsZVNldCogcnVsZXMsIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYg
bGFzdFJ1bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJiBvcHRpb25zKQordm9pZCBTdHlsZVJl
c29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihjb25zdCBNYXRjaFJlcXVlc3Qm
IG1hdGNoUmVxdWVzdCwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4KQog
ewogICAgIGlmICghbV9yZWdpb25Gb3JTdHlsaW5nKQogICAgICAgICByZXR1cm47CiAKLSAgICB1
bnNpZ25lZCBzaXplID0gcnVsZXMtPm1fcmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHMuc2l6ZSgp
OworICAgIHVuc2lnbmVkIHNpemUgPSBtYXRjaFJlcXVlc3QucnVsZVNldC0+bV9yZWdpb25TZWxl
Y3RvcnNBbmRSdWxlU2V0cy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNp
emU7ICsraSkgewotICAgICAgICBDU1NTZWxlY3RvciogcmVnaW9uU2VsZWN0b3IgPSBydWxlcy0+
bV9yZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cy5hdChpKS5zZWxlY3RvcjsKKyAgICAgICAgQ1NT
U2VsZWN0b3IqIHJlZ2lvblNlbGVjdG9yID0gbWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPm1fcmVnaW9u
U2VsZWN0b3JzQW5kUnVsZVNldHMuYXQoaSkuc2VsZWN0b3I7CiAgICAgICAgIGlmIChjaGVja1Jl
Z2lvblNlbGVjdG9yKHJlZ2lvblNlbGVjdG9yLCBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9yZWdp
b25Gb3JTdHlsaW5nLT5ub2RlKCkpKSkgewotICAgICAgICAgICAgUnVsZVNldCogcmVnaW9uUnVs
ZXMgPSBydWxlcy0+bV9yZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cy5hdChpKS5ydWxlU2V0Lmdl
dCgpOworICAgICAgICAgICAgUnVsZVNldCogcmVnaW9uUnVsZXMgPSBtYXRjaFJlcXVlc3QucnVs
ZVNldC0+bV9yZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cy5hdChpKS5ydWxlU2V0LmdldCgpOwog
ICAgICAgICAgICAgQVNTRVJUKHJlZ2lvblJ1bGVzKTsKLSAgICAgICAgICAgIGNvbGxlY3RNYXRj
aGluZ1J1bGVzKHJlZ2lvblJ1bGVzLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgb3B0
aW9ucyk7CisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhtYXRjaFJlcXVlc3QudXBk
YXRlZChyZWdpb25SdWxlcyksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsKICAgICAg
ICAgfQogICAgIH0KIH0KQEAgLTc1Myw5ICs3ODUsOSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1h
dGNoU2NvcGVkQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1w
dAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgTWF0Y2hPcHRpb25zIG9wdGlvbnMoaW5jbHVkZUVtcHR5UnVsZXMsIGZyYW1lLm1fc2Nv
cGUpOwotICAgICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMoZnJhbWUubV9ydWxlU2V0LCBy
ZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVs
ZSwgb3B0aW9ucyk7Ci0gICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihm
cmFtZS5tX3J1bGVTZXQsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFu
Z2VzLmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKKyAgICAgICAgICAgIE1hdGNoUmVxdWVzdCBt
YXRjaFJlcXVlc3QoZnJhbWUubV9ydWxlU2V0LCBmcmFtZS5tX3Njb3BlLCBpbmNsdWRlRW1wdHlS
dWxlcyk7CisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhtYXRjaFJlcXVlc3QsIHJl
c3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxl
KTsKKyAgICAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKG1hdGNoUmVxdWVz
dCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhv
clJ1bGUpOwogICAgICAgICAgICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKHJlc3VsdCk7
CiAgICAgICAgIH0KICAgICB9CkBAIC03ODksOSArODIxLDkgQEAgdm9pZCBTdHlsZVJlc29sdmVy
OjptYXRjaEhvc3RSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1
bGVzKQogICAgIGlmIChtYXRjaGVkUnVsZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBNYXRjaE9wdGlvbnMgb3B0aW9ucyhpbmNsdWRlRW1wdHlSdWxlcywgbV9lbGVtZW50KTsK
KyAgICBNYXRjaFJlcXVlc3QgbWF0Y2hSZXF1ZXN0KDAsIG1fZWxlbWVudCwgaW5jbHVkZUVtcHR5
UnVsZXMpOwogICAgIGZvciAodW5zaWduZWQgaSA9IG1hdGNoZWRSdWxlcy5zaXplKCk7IGkgPiAw
OyAtLWkpCi0gICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKG1hdGNoZWRSdWxlcy5hdChpLTEp
LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9y
UnVsZSwgb3B0aW9ucyk7CisgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKG1hdGNoUmVxdWVz
dC51cGRhdGVkKG1hdGNoZWRSdWxlcy5hdChpLTEpKSwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhv
clJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUpOwogICAgIHNvcnRBbmRUcmFuc2Zl
ck1hdGNoZWRSdWxlcyhyZXN1bHQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsK
QEAgLTgwOCw5ICs4NDAsMTUgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaEF1dGhvclJ1bGVz
KE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gTWF0Y2ggZ2xvYmFsIGF1dGhvciBydWxlcy4KLSAgICBNYXRjaE9wdGlv
bnMgb3B0aW9ucyhpbmNsdWRlRW1wdHlSdWxlcyk7Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXMo
bV9hdXRob3JTdHlsZS5nZXQoKSwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3Vs
dC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1
bGVzRm9yUmVnaW9uKG1fYXV0aG9yU3R5bGUuZ2V0KCksIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRo
b3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKKyAgICBNYXRj
aFJlcXVlc3QgbWF0Y2hSZXF1ZXN0KG1fYXV0aG9yU3R5bGUuZ2V0KCksIDAsIGluY2x1ZGVFbXB0
eVJ1bGVzKTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhtYXRjaFJlcXVlc3QsIHJlc3VsdC5y
YW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlKTsKKyAg
ICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtYXRjaFJlcXVlc3QsIHJlc3VsdC5yYW5n
ZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlKTsKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKKyAgICBWZWN0b3I8TWF0Y2hSZXF1ZXN0PiBtYXRjaFJlcXVlc3Rz
OworICAgIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlcy5jb2xsZWN0TWF0Y2hSZXF1ZXN0cyhpbmNs
dWRlRW1wdHlSdWxlcywgbWF0Y2hSZXF1ZXN0cyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtYXRjaFJlcXVlc3RzLnNpemUoKTsgKytpKQorICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxl
cyhtYXRjaFJlcXVlc3RzW2ldLCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0
LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSk7CisjZW5kaWYKICAgICBzb3J0QW5kVHJhbnNmZXJNYXRj
aGVkUnVsZXMocmVzdWx0KTsKIAogICAgIG1hdGNoU2NvcGVkQXV0aG9yUnVsZXMocmVzdWx0LCBp
bmNsdWRlRW1wdHlSdWxlcyk7CkBAIC04MjQsOCArODYyLDkgQEAgdm9pZCBTdHlsZVJlc29sdmVy
OjptYXRjaFVzZXJSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1
bGVzKQogICAgIG1fbWF0Y2hlZFJ1bGVzLmNsZWFyKCk7CiAKICAgICByZXN1bHQucmFuZ2VzLmxh
c3RVc2VyUnVsZSA9IHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcy5zaXplKCkgLSAxOwotICAgIGNv
bGxlY3RNYXRjaGluZ1J1bGVzKG1fdXNlclN0eWxlLmdldCgpLCByZXN1bHQucmFuZ2VzLmZpcnN0
VXNlclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdFVzZXJSdWxlLCBpbmNsdWRlRW1wdHlSdWxlcyk7
Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24obV91c2VyU3R5bGUuZ2V0KCksIHJl
c3VsdC5yYW5nZXMuZmlyc3RVc2VyUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0VXNlclJ1bGUsIGlu
Y2x1ZGVFbXB0eVJ1bGVzKTsKKyAgICBNYXRjaFJlcXVlc3QgbWF0Y2hSZXF1ZXN0KG1fdXNlclN0
eWxlLmdldCgpLCAwLCBpbmNsdWRlRW1wdHlSdWxlcyk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVs
ZXMobWF0Y2hSZXF1ZXN0LCByZXN1bHQucmFuZ2VzLmZpcnN0VXNlclJ1bGUsIHJlc3VsdC5yYW5n
ZXMubGFzdFVzZXJSdWxlKTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtYXRj
aFJlcXVlc3QsIHJlc3VsdC5yYW5nZXMuZmlyc3RVc2VyUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0
VXNlclJ1bGUpOwogCiAgICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKHJlc3VsdCk7CiB9
CkBAIC04MzUsMTkgKzg3NCwxOSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoVUFSdWxlcyhN
YXRjaFJlc3VsdCYgcmVzdWx0LCBSdWxlU2V0KiBydWxlcykKICAgICBtX21hdGNoZWRSdWxlcy5j
bGVhcigpOwogICAgIAogICAgIHJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSA9IHJlc3VsdC5tYXRj
aGVkUHJvcGVydGllcy5zaXplKCkgLSAxOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKHJ1bGVz
LCByZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGZh
bHNlKTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhNYXRjaFJlcXVlc3QocnVsZXMsIDAsIGZh
bHNlKSwgcmVzdWx0LnJhbmdlcy5maXJzdFVBUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxl
KTsKIAogICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhyZXN1bHQpOwogfQogCi12b2lk
IFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8
UnVsZURhdGE+KiBydWxlcywgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4
LCBjb25zdCBNYXRjaE9wdGlvbnMmIG9wdGlvbnMpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxl
Y3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBydWxlcywgY29u
c3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3QsIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYg
bGFzdFJ1bGVJbmRleCkKIHsKICAgICBpZiAoIXJ1bGVzKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBJbiBzb21lIGNhc2VzIHdlIG1heSBlbmQgdXAgbG9va2luZyB1cCBzdHlsZSBmb3IgcmFu
ZG9tIGVsZW1lbnRzIGluIHRoZSBtaWRkbGUgb2YgYSByZWN1cnNpdmUgdHJlZSByZXNvbHZlLgog
ICAgIC8vIEFuY2VzdG9yIGlkZW50aWZpZXIgZmlsdGVyIHdvbid0IGJlIHVwLXRvLWRhdGUgaW4g
dGhhdCBjYXNlIGFuZCB3ZSBjYW4ndCB1c2UgdGhlIGZhc3QgcGF0aC4KLSAgICBib29sIGNhblVz
ZUZhc3RSZWplY3QgPSBtX3NlbGVjdG9yRmlsdGVyLnBhcmVudFN0YWNrSXNDb25zaXN0ZW50KG1f
cGFyZW50Tm9kZSk7CisgICAgYm9vbCBjYW5Vc2VGYXN0UmVqZWN0ID0gbV9zZWxlY3RvckZpbHRl
ci5wYXJlbnRTdGFja0lzQ29uc2lzdGVudChtX3BhcmVudE5vZGUpICYmIG1hdGNoUmVxdWVzdC5j
cm9zc0JvdW5kYXJ5ID09IFNlbGVjdG9yQ2hlY2tlcjo6RG9lc05vdENyb3NzQm91bmRhcnk7CiAK
ICAgICB1bnNpZ25lZCBzaXplID0gcnVsZXMtPnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc2l6ZTsgKytpKSB7CkBAIC04NTcsMTAgKzg5NiwxMCBAQCB2b2lkIFN0eWxlUmVz
b2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+
KiBydWxlcywgaQogCiAgICAgICAgIFN0eWxlUnVsZSogcnVsZSA9IHJ1bGVEYXRhLnJ1bGUoKTsK
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbE1hdGNoUnVsZShkb2N1bWVudCgpLCBydWxlLCB0aGlzKTsK
LSAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3IocnVsZURhdGEsIG9wdGlvbnMuc2NvcGUpKSB7Cisg
ICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHJ1bGVEYXRhLCBtYXRjaFJlcXVlc3Quc2NvcGUsIG1h
dGNoUmVxdWVzdC5jcm9zc0JvdW5kYXJ5KSkgewogICAgICAgICAgICAgLy8gSWYgdGhlIHJ1bGUg
aGFzIG5vIHByb3BlcnRpZXMgdG8gYXBwbHksIHRoZW4gaWdub3JlIGl0IGluIHRoZSBub24tZGVi
dWcgbW9kZS4KICAgICAgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMg
PSBydWxlLT5wcm9wZXJ0aWVzKCk7Ci0gICAgICAgICAgICBpZiAoIXByb3BlcnRpZXMgfHwgKHBy
b3BlcnRpZXMtPmlzRW1wdHkoKSAmJiAhb3B0aW9ucy5pbmNsdWRlRW1wdHlSdWxlcykpIHsKKyAg
ICAgICAgICAgIGlmICghcHJvcGVydGllcyB8fCAocHJvcGVydGllcy0+aXNFbXB0eSgpICYmICFt
YXRjaFJlcXVlc3QuaW5jbHVkZUVtcHR5UnVsZXMpKSB7CiAgICAgICAgICAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNYXRjaFJ1bGUoY29va2llLCBmYWxzZSk7CiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CkBAIC0xMDYxLDcgKzExMDAsNyBAQCBi
b29sIFN0eWxlUmVzb2x2ZXI6OnN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNSdWxlU2V0KFJ1
bGVTZXQqIHJ1bGVTZXQpCiAKICAgICBpbnQgZmlyc3RSdWxlSW5kZXggPSAtMSwgbGFzdFJ1bGVJ
bmRleCA9IC0xOwogICAgIG1fc2VsZWN0b3JDaGVja2VyLnNldE1vZGUoU2VsZWN0b3JDaGVja2Vy
OjpTaGFyaW5nUnVsZXMpOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKHJ1bGVTZXQsIGZpcnN0
UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4LCBmYWxzZSk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVs
ZXMoTWF0Y2hSZXF1ZXN0KHJ1bGVTZXQsIDAsIGZhbHNlKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RS
dWxlSW5kZXgpOwogICAgIG1fc2VsZWN0b3JDaGVja2VyLnNldE1vZGUoU2VsZWN0b3JDaGVja2Vy
OjpSZXNvbHZpbmdTdHlsZSk7CiAgICAgaWYgKG1fbWF0Y2hlZFJ1bGVzLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjIzOCw3ICsyMjc3LDcgQEAgUGFzc1JlZlB0cjxDU1NS
dWxlTGlzdD4gU3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVu
dCogZSwgUHMKICAgICByZXR1cm4gbV9ydWxlTGlzdC5yZWxlYXNlKCk7CiB9CiAKLWlubGluZSBi
b29sIFN0eWxlUmVzb2x2ZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRh
LCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSkKK2lubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6
OmNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCBjb25zdCBDb250YWluZXJO
b2RlKiBzY29wZSwgU2VsZWN0b3JDaGVja2VyOjpDcm9zc0JvdW5kYXJ5IGNyb3NzQm91bmRhcnkp
CiB7CiAgICAgbV9keW5hbWljUHNldWRvID0gTk9QU0VVRE87CiAKQEAgLTIyNjMsNiArMjMwMiw3
IEBAIGlubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURh
dGEmIHJ1bGVEYXRhLCBjb25zdCBDb250YWluCiAgICAgY29udGV4dC5lbGVtZW50U3R5bGUgPSBz
dHlsZSgpOwogICAgIGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlID0gbV9wYXJlbnROb2RlID8g
bV9wYXJlbnROb2RlLT5yZW5kZXJTdHlsZSgpIDogMDsKICAgICBjb250ZXh0LnNjb3BlID0gc2Nv
cGU7CisgICAgY29udGV4dC5jcm9zc0JvdW5kYXJ5ID0gY3Jvc3NCb3VuZGFyeTsKICAgICBjb250
ZXh0LnBzZXVkb1N0eWxlID0gbV9wc2V1ZG9TdHlsZTsKICAgICBTZWxlY3RvckNoZWNrZXI6OlNl
bGVjdG9yTWF0Y2ggbWF0Y2ggPSBtX3NlbGVjdG9yQ2hlY2tlci5jaGVja1NlbGVjdG9yKGNvbnRl
eHQsIG1fZHluYW1pY1BzZXVkbyk7CiAgICAgaWYgKG1hdGNoICE9IFNlbGVjdG9yQ2hlY2tlcjo6
U2VsZWN0b3JNYXRjaGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggNWJkMjk0
MGU1N2YyOTgyMWZlNjEzZWEwZThhMzliZmRmYjg4ZDA3ZC4uZGI4NTFlZWJhMGYyMGI3YTVhODc1
NWM2Njk0OTdiOWIwODY2NzgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgogI2luY2x1ZGUgIlJlbmRl
clN0eWxlLmgiCiAjaW5jbHVkZSAiUnVsZUZlYXR1cmUuaCIKKyNpbmNsdWRlICJSdWxlU2V0Lmgi
CiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNlbGVjdG9y
Q2hlY2tlci5oIgogI2luY2x1ZGUgIlNlbGVjdG9yRmlsdGVyLmgiCkBAIC03Niw3ICs3Nyw2IEBA
IGNsYXNzIE1lZGlhUXVlcnlFdmFsdWF0b3I7CiBjbGFzcyBOb2RlOwogY2xhc3MgUmVuZGVyUmVn
aW9uOwogY2xhc3MgUnVsZURhdGE7Ci1jbGFzcyBSdWxlU2V0OwogY2xhc3MgU2V0dGluZ3M7CiBj
bGFzcyBTdGF0aWNDU1NSdWxlTGlzdDsKIGNsYXNzIFN0eWxlQnVpbGRlcjsKQEAgLTEzMSw2ICsx
MzEsMzIgQEAgZW51bSBSdWxlTWF0Y2hpbmdCZWhhdmlvciB7CiAgICAgTWF0Y2hPbmx5VXNlckFn
ZW50UnVsZXMsCiB9OwogCitjbGFzcyBNYXRjaFJlcXVlc3QgeworcHVibGljOgorICAgIE1hdGNo
UmVxdWVzdChSdWxlU2V0KiBydWxlU2V0LCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSwgYm9v
bCBpbmNsdWRlRW1wdHlSdWxlcywgU2VsZWN0b3JDaGVja2VyOjpDcm9zc0JvdW5kYXJ5IGNyb3Nz
Qm91bmRhcnkgPSBTZWxlY3RvckNoZWNrZXI6OkRvZXNOb3RDcm9zc0JvdW5kYXJ5KQorICAgICAg
ICA6IHJ1bGVTZXQocnVsZVNldCkKKyAgICAgICAgLCBzY29wZShzY29wZSkKKyAgICAgICAgLCBp
bmNsdWRlRW1wdHlSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcykKKyAgICAgICAgLCBjcm9zc0JvdW5k
YXJ5KGNyb3NzQm91bmRhcnkpIHsgfQorICAgIGNvbnN0IFJ1bGVTZXQqIHJ1bGVTZXQ7CisgICAg
Y29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGU7CisgICAgY29uc3QgYm9vbCBpbmNsdWRlRW1wdHlS
dWxlczsKKyAgICBjb25zdCBTZWxlY3RvckNoZWNrZXI6OkNyb3NzQm91bmRhcnkgY3Jvc3NCb3Vu
ZGFyeTsKKyAgICBNYXRjaFJlcXVlc3QgdXBkYXRlZChSdWxlU2V0KiBuZXdSdWxlU2V0KSBjb25z
dCB7IHJldHVybiBNYXRjaFJlcXVlc3QobmV3UnVsZVNldCwgc2NvcGUsIGluY2x1ZGVFbXB0eVJ1
bGVzLCBjcm9zc0JvdW5kYXJ5KTsgfQorfTsKKworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorY2xh
c3MgU2hhZG93RGlzdHJpYnV0ZWRSdWxlcyB7CitwdWJsaWM6CisgICAgdm9pZCBhZGRTaGFkb3dE
aXN0cmlidXRlZFJ1bGUoU3R5bGVSdWxlKiwgc2l6ZV90IHNlbGVjdG9ySW5kZXgsIENvbnRhaW5l
ck5vZGUqIHNjb3BlLCBBZGRSdWxlRmxhZ3MpOworICAgIHZvaWQgY29sbGVjdE1hdGNoUmVxdWVz
dHMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcywgVmVjdG9yPE1hdGNoUmVxdWVzdD4mKTsKKyAgICB2
b2lkIGNsZWFyKCkgeyBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5jbGVhcigpOyB9Citw
cml2YXRlOgorICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBDb250YWluZXJOb2RlKiwgT3duUHRy
PFJ1bGVTZXQ+ID4gU2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwOworICAgIFNoYWRvd0Rpc3Ry
aWJ1dGVkUnVsZVNldE1hcCBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcDsKK307CisjZW5k
aWYKKwogLy8gVGhpcyBjbGFzcyBzZWxlY3RzIGEgUmVuZGVyU3R5bGUgZm9yIGEgZ2l2ZW4gZWxl
bWVudCBiYXNlZCBvbiBhIGNvbGxlY3Rpb24gb2Ygc3R5bGVzaGVldHMuCiBjbGFzcyBTdHlsZVJl
c29sdmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHlsZVJlc29sdmVyKTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0yOTksNiArMzI1LDEwIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgbG9hZFBlbmRpbmdSZXNvdXJjZXMoKTsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAg
IHZvaWQgYWRkU2hhZG93RGlzdHJpYnV0ZWRSdWxlKFN0eWxlUnVsZSosIHNpemVfdCBzZWxlY3Rv
ckluZGV4LCBDb250YWluZXJOb2RlKiBzY29wZSwgQWRkUnVsZUZsYWdzKTsKKyNlbmRpZgorCiBw
cml2YXRlOgogICAgIC8vIFRoaXMgZnVuY3Rpb24gZml4ZXMgdXAgdGhlIGRlZmF1bHQgZm9udCBz
aXplIGlmIGl0IGRldGVjdHMgdGhhdCB0aGUgY3VycmVudCBnZW5lcmljIGZvbnQgZmFtaWx5IGhh
cyBjaGFuZ2VkLiAtZHdoCiAgICAgdm9pZCBjaGVja0ZvckdlbmVyaWNGYW1pbHlDaGFuZ2UoUmVu
ZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOwpAQCAtMzQyLDEyICszNzIsNiBA
QCBwcml2YXRlOgogICAgICAgICBib29sIGlzQ2FjaGVhYmxlOwogICAgIH07CiAKLSAgICBzdHJ1
Y3QgTWF0Y2hPcHRpb25zIHsKLSAgICAgICAgTWF0Y2hPcHRpb25zKGJvb2wgaW5jbHVkZUVtcHR5
UnVsZXMsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlID0gMCkgOiBzY29wZShzY29wZSksIGlu
Y2x1ZGVFbXB0eVJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKSB7IH0KLSAgICAgICAgY29uc3QgQ29u
dGFpbmVyTm9kZSogc2NvcGU7Ci0gICAgICAgIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXM7Ci0gICAg
fTsKLQogICAgIHN0YXRpYyB2b2lkIGFkZE1hdGNoZWRQcm9wZXJ0aWVzKE1hdGNoUmVzdWx0Jiwg
Y29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcywgU3R5bGVSdWxlKiA9IDAsIHVuc2ln
bmVkIGxpbmtNYXRjaFR5cGUgPSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoQWxsLCBib29sIGluUmVn
aW9uUnVsZSA9IGZhbHNlKTsKICAgICB2b2lkIGFkZEVsZW1lbnRTdHlsZVByb3BlcnRpZXMoTWF0
Y2hSZXN1bHQmLCBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiwgYm9vbCBpc0NhY2hlYWJsZSA9IHRy
dWUpOwogCkBAIC0zNTgsMTQgKzM4MiwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgbWF0Y2hVc2Vy
UnVsZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKICAgICB2b2lkIG1h
dGNoU2NvcGVkQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVz
KTsKICAgICB2b2lkIG1hdGNoSG9zdFJ1bGVzKE1hdGNoUmVzdWx0JiwgYm9vbCBpbmNsdWRlRW1w
dHlSdWxlcyk7Ci0gICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhSdWxlU2V0KiwgaW50JiBm
aXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmKTsK
LSAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKFJ1bGVTZXQqLCBpbnQmIGZp
cnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYpOwot
ICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0
YT4qLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNo
T3B0aW9ucyYpOworCisgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhjb25zdCBNYXRjaFJl
cXVlc3QmLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgpOworICAgIHZv
aWQgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24oY29uc3QgTWF0Y2hSZXF1ZXN0JiwgaW50
JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4KTsKKyAgICB2b2lkIGNvbGxlY3RN
YXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiwgY29uc3QgTWF0Y2hS
ZXF1ZXN0JiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4KTsKKwogICAg
IGJvb2wgZmFzdFJlamVjdFNlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJikgY29uc3Q7CiAgICAgdm9p
ZCBzb3J0TWF0Y2hlZFJ1bGVzKCk7CiAgICAgdm9pZCBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVs
ZXMoTWF0Y2hSZXN1bHQmKTsKIAotICAgIGJvb2wgY2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0
YSYsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKTsKKyAgICBib29sIGNoZWNrU2VsZWN0b3Io
Y29uc3QgUnVsZURhdGEmLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSwgU2VsZWN0b3JDaGVj
a2VyOjpDcm9zc0JvdW5kYXJ5ID0gU2VsZWN0b3JDaGVja2VyOjpEb2VzTm90Q3Jvc3NCb3VuZGFy
eSk7CiAgICAgYm9vbCBjaGVja1JlZ2lvblNlbGVjdG9yKENTU1NlbGVjdG9yKiByZWdpb25TZWxl
Y3RvciwgRWxlbWVudCogcmVnaW9uRWxlbWVudCk7CiAgICAgdm9pZCBhcHBseU1hdGNoZWRQcm9w
ZXJ0aWVzKGNvbnN0IE1hdGNoUmVzdWx0JiwgY29uc3QgRWxlbWVudCopOwogICAgIGVudW0gU3R5
bGVBcHBsaWNhdGlvblBhc3MgewpAQCAtMzk2LDYgKzQyMiw4IEBAIHByaXZhdGU6CiAgICAgT3du
UHRyPFJ1bGVTZXQ+IG1fYXV0aG9yU3R5bGU7CiAgICAgT3duUHRyPFJ1bGVTZXQ+IG1fdXNlclN0
eWxlOwogCisgICAgU2hhZG93RGlzdHJpYnV0ZWRSdWxlcyBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVs
ZXM7CisKICAgICBSdWxlRmVhdHVyZVNldCBtX2ZlYXR1cmVzOwogICAgIE93blB0cjxSdWxlU2V0
PiBtX3NpYmxpbmdSdWxlU2V0OwogICAgIE93blB0cjxSdWxlU2V0PiBtX3VuY29tbW9uQXR0cmli
dXRlUnVsZVNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2Vy
dGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5o
CmluZGV4IDIwY2U3N2QwYTM3OWVmY2MyNDQ4YTY1ODk5ZDZjNThmMzdmOWM5YjguLjkxNjJiN2Zk
YTAzNDdlMmM5NGQxNzBkZWZlZTdhNmFmMDdmZTFjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtMTU0LDYgKzE1NCwyOSBAQCBpbmxpbmUgRWxl
bWVudFNoYWRvdyogc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY29uc3QgTm9kZSogbm9k
ZSkKIAogSW5zZXJ0aW9uUG9pbnQqIHJlc29sdmVSZXByb2plY3Rpb24oY29uc3QgTm9kZSopOwog
CitpbmxpbmUgdm9pZCBjb2xsZWN0QWxsSW5zZXJ0aW9uUG9pbnRzKGNvbnN0IE5vZGUqIHByb2pl
Y3RlZE5vZGUsIFZlY3RvcjxJbnNlcnRpb25Qb2ludCosIDg+JiByZXN1bHRzKQoreworICAgIGNv
bnN0IE5vZGUqIGN1cnJlbnQgPSBwcm9qZWN0ZWROb2RlOworICAgIHdoaWxlICh0cnVlKSB7Cisg
ICAgICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBzaGFkb3dPZlBhcmVudEZvckRpc3Ry
aWJ1dGlvbihjdXJyZW50KSkgeworICAgICAgICAgICAgc2hhZG93LT5lbnN1cmVEaXN0cmlidXRp
b24oKTsKKyAgICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHNoYWRv
dy0+ZGlzdHJpYnV0b3IoKS5maW5kSW5zZXJ0aW9uUG9pbnRGb3IocHJvamVjdGVkTm9kZSkpIHsK
KyAgICAgICAgICAgICAgICBjdXJyZW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAgICBy
ZXN1bHRzLmFwcGVuZChpbnNlcnRlZFRvKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoTm9kZSogcGFyZW50ID0gcGFyZW50
Tm9kZUZvckRpc3RyaWJ1dGlvbihjdXJyZW50KSkgeworICAgICAgICAgICAgaWYgKEluc2VydGlv
blBvaW50KiBpbnNlcnRlZFRvID0gcGFyZW50LT5pc1NoYWRvd1Jvb3QoKSA/IFNjb3BlQ29udGVu
dERpc3RyaWJ1dGlvbjo6YXNzaWduZWRUbyh0b1NoYWRvd1Jvb3QocGFyZW50KSkgOiAwKSB7Cisg
ICAgICAgICAgICAgICAgY3VycmVudCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgcmVz
dWx0cy5hcHBlbmQoaW5zZXJ0ZWRUbyk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSW5zZXJ0aW9uUG9pbnRfaApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI5
ZWVlMDg0MmMwMTdkMTkzZTZlNTdiMmZhY2RjMWIzMjhhYWQ1NzcuLmRkYjljNDczYmFjNDhjZDNl
ODE2MWUzM2M0ZTJhYjhkMjc1N2VlMDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMy0wMS0w
NiAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NoYWRvdyBE
T01dIEltcGxlbWVudHMgYSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxlbWVudC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMTY5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFk
b3ctZWxlbWVudC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC1tYXRjaC1hbGwtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gt
ZGVzY2VuZGFudC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtZGVzY2VuZGFudC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
bmVzdGVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5vLW1hdGNoLWV4cGVj
dGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC1uby1tYXRjaC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC1yZXByb2plY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNjb3BlZC1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
c2NvcGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRl
ZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBw
b3J0LXNlbGVjdG9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QtZXhwZWN0ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1l
bGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtd2l0aC1hbnktZXhwZWN0ZWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVk
by1lbGVtZW50LXdpdGgtYW55Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC5odG1sOiBBZGRlZC4KKwogMjAxMy0wMS0wOSAg
U2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQXNzZXJ0
IHRyaWdnZXJlZCBpbiBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3Igd2hlbiBzY3Jv
bGxiYXIgKGUuZy4gOmhvcml6b250YWwpIHNlbGVjdG9yIGlzIHNwZWNpZmllZC4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRjMjZlMmI1NmM0YzZh
N2M3MGM2Y2ZkNThhMjI3ZjhlMGY0NDY0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1leHBlY3RlZC5odG1s
CkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBp
ZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBn
cmVlbiI+Z3JlZW48L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
Zm9yLXNoYWRvdy1lbGVtZW50LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50LWV4cGVj
dGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRjMjZlMmI1NmM0YzZhN2M3MGM2Y2ZkNThhMjI3ZjhlMGY0
NDY0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQtZXhwZWN0ZWQuaHRtbApA
QCAtMCwwICsxLDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9
InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3Jl
ZW4iPmdyZWVuPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZv
ci1zaGFkb3ctZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkZGMzN2M1YzZjNDg4NjdkZjVjYjgxNDcyOGEzNjlmZDhkMjNlNjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtZm9yLXNoYWRvdy1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8
c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUn
KTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdzaGFkb3c6Oi13ZWJraXQtZGlzdHJpYnV0ZWQo
ZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgK
KyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSwKKyAgICAgICAg
ICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAor
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdzaGFkb3cnKSkpKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFs
bC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhNjBiNzJlMGRlOTE3NzYyYjJhMmE0YzVlYzNl
ZjlmNTY2ZWI0OTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLWV4cGVjdGVkLmh0bWwKQEAg
LTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0i
c2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXY+CisgICAgICBub3JtYWwKKyAg
ICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgICA8L2Rpdj4KKyAg
ICA8ZGl2PgorICAgICAgbm9ybWFsCisgICAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdy
ZWVuPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50LW1hdGNoLWFsbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZjJmZjJiNDEz
N2EwYzVhZWVkYzg1ZTg5MTJmMmVjMzRlYjJmYmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxs
Lmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0
eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVy
SFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKC5oZWxsbykgeyBjb2xvcjogZ3Jl
ZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94
Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdo
b3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAg
ICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwK
KyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdoZWxsbyd9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSks
CisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAg
ICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJyksCisgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnaGVsbG8nfSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkp
KSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5k
YW50LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtZGVzY2VuZGFudC1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFjMTg3ODU2ZmVlMThmNGU0MjdmMjFhNzcxYjMyZDExMzE4ZjUzYjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtbWF0Y2gtZGVzY2VuZGFudC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2
IGlkPSJob3N0Ij4KKyAgICA8cD4KKyAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3Jl
ZW48L2Rpdj4KKyAgICA8L3A+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LW1hdGNoLWRlc2NlbmRhbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmU0MDQzZTg1NWE1MDhkNDhiNWEwNjAwZTBmNjg2Njk4ODMwMDI4MgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC1tYXRjaC1kZXNjZW5kYW50Lmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2Ny
aXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsK
K3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRp
dikgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgn
ZGl2Jywge30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAg
ICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcp
KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdwJywge30sCisgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSkpKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC1leHBl
Y3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1MTgzNDQyYTA3NmM3ZjgxYTljNTQyMTMxZTc5ZmI3NzZm
MDExY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlz
dHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwy
MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+
CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYgaWQ9Im5lc3RlZC1ob3N0Ij4KKyAgICAgIHRl
eHQxCisgICAgICA8ZGl2PgorICAgICAgICB0ZXh0MgorICAgICAgICA8ZGl2PgorICAgICAgICAg
IHRleHQzCisgICAgICAgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2Pgor
ICAgICAgICAgIDxkaXY+bm9ybWFsPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+
CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtbmVzdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQt
cHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzE2N2EzZWZlY2EwZjQwOGE2
ZDM4NzU2OTI5N2VmZTYyMzU4ODBkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQuaHRtbApAQCAt
MCwwICsxLDMyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2Rp
diBjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdiBjb250ZW50Ojotd2Via2l0LWRpc3Ry
aWJ1dGVkKGRpdi5ncmVlbikpIHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgK
KyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVh
dGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzog
J25lc3RlZC1ob3N0J30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93
Um9vdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCd0ZXh0
MScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoJ3RleHQyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICdkaXYnfSkpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnZ3JlZW4n
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoJ3RleHQzJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZURPTSgnY29udGVudCcsIHt9KSkpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdk
aXYnLCB7J2NsYXNzJzogJ2dyZWVuJ30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2
Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgn
bm9ybWFsJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uby1t
YXRjaC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LW5vLW1hdGNoLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA1
ZmVmZjc1Yzc5YWVkZTViZjhlNDliYmVkMGI3MTU1ZGNlNjgwZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1u
by1tYXRjaC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAg
ICA8cD5ub3JtYWw8L3A+CisgICAgPGRpdj4KKyAgICAgIDxkaXY+bm9ybWFsPC9kaXY+CisgICAg
PC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5vLW1hdGNoLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtbm8tbWF0Y2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYWUzOWNlYzM0NzU5MzdhMWVkNTNkMTU4MmU2
ZmUzYzhiMjAxZDYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5vLW1hdGNoLmh0bWwKQEAgLTAsMCArMSwy
NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
c2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICd0aGlzLWRvZXMt
bm90LW1hdGNoOjotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdikgeyBjb2xvcjogZ3JlZW47IH0nOwor
c2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ3A6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2KSB7IGNv
bG9yOiBncmVlbjsgfSc7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnZGl2Ojotd2Via2l0LWRp
c3RyaWJ1dGVkKGRpdikgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAg
IGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNo
YWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgncCcsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpKSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURP
TSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250
ZW50JykpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QtY2hp
bGQnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdu
b3JtYWwnKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJv
amVjdGlvbi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU2OWM5MTI3ZGU1ZTcwM2I3YTFhNWM5MzY5NGVhN2NkMGIxMjQ4NDIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9
Imhvc3QiPgorICAgIDxkaXYgaWQ9Imhvc3QyIj4KKyAgICAgIDxkaXYgc3R5bGU9J2NvbG9yOiBn
cmVlbic+CisgICAgICAgIGdyZWVuCisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0
aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTczNWZhNzA5ZTg2MWIwZGI0YWU0Y2M0NjRmZjdhZmExYTE5
ZTBjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24uaHRtbApAQCAtMCwwICsxLDI1IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5k
Ym94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRlbnQ6Oi13ZWJr
aXQtZGlzdHJpYnV0ZWQoLmZvbykgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxk
KAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNy
ZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnaG9zdDInfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAn
LmZvbyd9KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50
JykpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2Zvbyd9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykp
KSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC1zY29wZWQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDhkOWUyZGUzZTZmZTRi
ZmQ4OTgwYjYzZDAzOWJjNTRkODgzMWEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNjb3BlZC1leHBlY3Rl
ZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4K
KzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2Pm5vcm1hbDwv
ZGl2PgorICAgIDxkaXY+CisgICAgICA8ZGl2IHN0eWxlPSdjb2xvcjogZ3JlZW4nPmdyZWVuPC9k
aXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNj
b3BlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVk
by1lbGVtZW50LXNjb3BlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhYTcxYWJjNzkwOTYzMzAwYTMyNDdl
ODU2ODUwYTgzNjEzNTg4NWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLmh0bWwKQEAgLTAsMCAr
MSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50
Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdikgeyBjb2xvcjogZ3JlZW47IH0nOworc2hhZG93U3R5
bGUuc2V0QXR0cmlidXRlKCdzY29wZWQnLCB0cnVlKTsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBj
cmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFk
b3dSb290KAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3Qn
OiAnI2hvc3QtY2hpbGQxJ30pLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3Nl
bGVjdCc6ICcjaG9zdC1jaGlsZDInfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hh
ZG93U3R5bGUpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3Qt
Y2hpbGQxJ30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSgnbm9ybWFsJykpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9z
dC1jaGlsZDInfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCdncmVlbicpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
c3VwcG9ydC1zZWxlY3Rvci1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3ItZXhwZWN0ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yM2RlZGUxMzNiODYyZGQxNGM5MmU2MDVjNGExYmVkMjhlMzdhZGFk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3ItZXhwZWN0ZWQuaHRtbApAQCAtMCww
ICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5k
Ym94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdj4KKyAgICAgIG5vcm1hbAorICAgICAg
PGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxk
aXY+CisgICAgICBub3JtYWwKKyAgICAgIDxkaXY+bm9ybWFsPC9kaXY+CisgICAgPC9kaXY+Cisg
IDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3IuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC1zdXBwb3J0LXNlbGVjdG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZkYmQ4NmVmNzgyYjE0MWNmZjU5
YmEzYzE2NWJhNTdlYjNlNzg1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLmh0
bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRN
TCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdi5oZWxsbyBkaXYpIHsgY29sb3I6
IGdyZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Fu
ZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAg
ICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQn
KSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdoZWxsbyd9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcp
LAorICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4n
KSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpKSkpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0LWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmI4MjUzZTRkYWI3NDA1NjU4MzhkODQyNTBiYmE5YmQ5MDRkOTkyYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDExIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAg
PGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2
PgorICAgIDxwPm5vcm1hbDwvcD4KKyAgICA8cCBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwv
cD4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rv
ci1saXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA2ZDU0
OGY2YmEzOTFjYjc0YTgyMzE2ZWRiOTZkYzVkMmU3MWYzNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2Vk
LWluLXNlbGVjdG9yLWxpc3QuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3Jp
cHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwor
c2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2
KSwgcCB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgK
KyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdjb250ZW50JyksCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3AnLCB7fSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4n
KSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpLAorICAgICAgICAgICAg
ICBjcmVhdGVET00oJ3AnLCB7J2NsYXNzJzogJ2hlbGxvJ30sCisgICAgICAgICAgICAgICAgICAg
ICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpKSk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC13aXRoLWFueS1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55
LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTczNzk5NDNkZjY0ODkwMzI0ZGMwMmQ5ZGUzMDE4
NTFhMTExODY1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC13aXRoLWFueS1leHBlY3RlZC5odG1sCkBAIC0w
LDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNh
bmRib3giPgorICA8ZGl2PgorICAgIDxkaXY+bm9ybWFsPC9kaXY+CisgICAgPGRpdiBzdHlsZT0i
Y29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICA8L2Rpdj4KKyAgPGRpdj4KKyAgICA8ZGl2Pm5v
cm1hbDwvZGl2PgorICAgIDxkaXYgc3R5bGU9ImNvbG9yOiByZWQiPnJlZDwvZGl2PgorICA8L2Rp
dj4KKyAgPGRpdj4KKyAgICA8ZGl2Pm5vcm1hbDwvZGl2PgorICAgIDxkaXYgc3R5bGU9ImNvbG9y
OiBibHVlIj5ibHVlPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LXdpdGgtYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQt
cHNldWRvLWVsZW1lbnQtd2l0aC1hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2EyMzVhNDNkYjNmN2Iz
Yjc5YjlhZTRjYzk3YTgzN2U4YzZhOGU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55Lmh0bWwK
QEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlMSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZTEuaW5uZXJIVE1M
ID0gJyo6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3Zh
ciBzaGFkb3dTdHlsZTIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93
U3R5bGUyLmlubmVySFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKCopIHsgY29s
b3I6IHJlZDsgfSc7CisKK3ZhciBzaGFkb3dTdHlsZTMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdzdHlsZScpOworc2hhZG93U3R5bGUzLmlubmVySFRNTCA9ICcqOjotd2Via2l0LWRpc3RyaWJ1
dGVkKCopIHsgY29sb3I6IGJsdWU7IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURP
TSgnZGl2Jywge30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAg
ICAgICAgICBzaGFkb3dTdHlsZTEsCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KCdub3JtYWwnKSksCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSksCisg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpKTsKKworc2FuZGJveC5hcHBlbmRD
aGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFk
b3dSb290KAorICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUyLAorICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpLAorICAgICAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdjb250ZW50JykpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3JlZCcpKSkpOwor
c2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAg
ICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUzLAor
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpLAorICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJ2JsdWUnKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50Lmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kMjQzY2ExYzhjOTRmMzI2OGI2NGY3MGVkZDIxMjZiMDdiMGRm
MDFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8
c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUn
KTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVk
KGRpdikgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURP
TSgnZGl2Jywge30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAg
ICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVu
dCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSkpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182702</attachid>
            <date>2013-01-14 22:08:19 -0800</date>
            <delta_ts>2013-01-16 01:30:56 -0800</delta_ts>
            <desc>iter</desc>
            <filename>bug-82169-20130115150519.patch</filename>
            <type>text/plain</type>
            <size>70897</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjMyNDhiMTJmMDY3Yzc2
ZTE1NzgzMjYzYTgyYjg3ZWY4MmQyZmQ3Yi4uMmEyZTc4ZTQ2Yzk2M2ZmMjlmOTRlNTkzNjg1NjNl
ZDEwZmZlM2QxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OCBAQAorMjAxMy0wMS0wNiAgSGF5
YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NoYWRvdyBET01dIElt
cGxlbWVudHMgYSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxlbWVudC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMTY5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBhICc6OmRpc3Ry
aWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50LgorICAgICAgICBTZWUgdGhlIFNoYWRvdyBET00gc3Bl
Y2lmaWNhdGlvbiBmb3IgdGhlIGRldGFpbC4KKworICAgICAgICAjIEZJWE1FOiBVcGRhdGUgVVJM
IGFmdGVyIHRoZSBzcGVjIGlzIHVwZGF0ZWQuCisgICAgICAgIGh0dHA6Ly9kdmNzLnczLm9yZy9o
Zy93ZWJjb21wb25lbnRzL3Jhdy1maWxlL3RpcC9zcGVjL3NoYWRvdy9pbmRleC5odG1sI3NlbGVj
dGluZy1ub2Rlcy1kaXN0cmlidXRlZC10by1pbnNlcnRpb24tcG9pbnRzCisKKyAgICAgICAgRm9y
IGV4YW1wbGUsIHN1cHBvc2Ugd2UgYXJlIGdpdmVuIHRoZSBmb2xsb3dpbmcgRE9NIHRyZWUgYW5k
IHNoYWRvdyB0cmVlOgorCisgICAgICAgIC0gPEE+CisgICAgICAgICAgLSA8Qj4KKyAgICAgICAg
ICAtIDxDPgorCisgICAgICAgIFtBJ3MgU2hhZG93Um9vdF0KKyAgICAgICAgICA8Qz4KKyAgICAg
ICAgICAtIDxzdHlsZT4KKyAgICAgICAgICAgICAgRCBjb250ZW50OjpkaXN0cmlidXRlZChCKSB7
IGNvbG9yOiBncmVlbjsgfQorICAgICAgICAgIC0gPEQ+CisgICAgICAgICAgICAtIDxjb250ZW50
PgorCisgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIHN0eWxlIHJ1bGUgZGVmaW5lZCBpbiBzaGFk
b3cgdHJlZSBtYXRjaGVzIG5vZGUgJ0InLgorCisgICAgICAgIEEgJzo6ZGlzdHJpYnV0ZWQoKScg
cHNldWRvIGVsZW1lbnQgY2FuIG5vdCBiZSBhIHBzZXVkbyBjbGFzcyBzaW5jZQorICAgICAgICBh
biBpbnRlcnNlY3Rpb24gYmV0d2VlbiBtYXRjaGVkX2VsZW1lbnRzKHNvbWVfc2VsZWN0b3IpIGFu
ZAorICAgICAgICBtYXRjaGVkX2VsZW1lbnRzKHNvbWVfc2VsZWN0b3I6OmRpc3RyaWJ1dGVkKC4u
LikpIGlzIGFsd2F5cyBhbgorICAgICAgICBlbXB0eSBzZXQuCisKKyAgICAgICAgQSAnOjpkaXN0
cmlidXRlZCgpJyBwc2V1ZG8gZWxlbWVudCBpcyB0aGUgZmlyc3QtZXZlciAqZnVuY3Rpb25hbCoK
KyAgICAgICAgcHNldWRvIGVsZW1lbnQgd2hpY2ggdGFrZXMgcGFyYW1ldGVyLiAgSXQncyBhbHNv
IHRoZSBmaXJzdCBDU1MKKyAgICAgICAgcnVsZSB3aGljaCBjcm9zc2VzIHRoZSBzaGFkb3cgYm91
bmRhcnkgZnJvbSBhIHNoYWRvdyB0cmVlIHRvIHRoZQorICAgICAgICB0cmVlIG9mIGl0cyBzaGFk
b3cgaG9zdC4gVGhhdCBtZWFucyBhICc6OmRpc3RyaWJ1dGVkKCknIHBzZXVkbworICAgICAgICBl
bGVtZW50IGlzIGRlZmluZWQgaW4gc2hhZG93IHRyZWUsIGJ1dCB0aGUgbm9kZSB3aGljaCBpcyBt
YXRjaGVkCisgICAgICAgIGluIHRoZSBydWxlIGlzIG91dHNpZGUgb2YgdGhlIHNoYWRvdyB0cmVl
LiBUaGVyZWZvcmUsIHdlIGNhbm5vdAorICAgICAgICBwcmVkaWN0IHdoZXJlIHRoZSBtYXRjaGVk
IG5vZGUgd2lsbCBiZSBiZWZvcmVoYW5kLiAgQ3VycmVudCBDU1MKKyAgICAgICAgaW1wbGVtZW50
YXRpb24gYXNzdW1lcyB0aGUgZmluYWwgdGFyZ2V0IGlzIGFwcGxpZWQgaW4gdGhlIGN1cnJlbnQK
KyAgICAgICAgc2NvcGUuCisKKyAgICAgICAgVG8gb3ZlcmNvbWUgdGhpcyBpc3N1ZSwgU3R5bGVS
ZXNvbHZlciBub3cgaGFzIGEgaW5zdGFuY2Ugb2YKKyAgICAgICAgU2hhZG93RGlzdHJpYnV0ZWRS
dWxlcyBjbGFzcy4gIEEgc3R5bGUgcnVsZSB3aWxsIGJlIHN0b3JlZCBpbiB0aGlzCisgICAgICAg
IGluc3RhbmNlIGlmIHRoZSBydWxlIGluY2x1ZGVzIGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRv
IGVsZW1lbnQuCisgICAgICAgIFRoaXMgY2xhc3MgYWxzbyBrZWVwcyB0cmFjayBvZiBlYWNoIFJ1
bGVTZXQgYnkgbWFwcGluZyBpdCB3aXRoIGEKKyAgICAgICAgc2NvcGUgd2hlcmUgdGhlIHJ1bGUg
d2FzIG9yaWdpbmFsbHkgZGVmaW5lZC4gSW4gdGhlIGV4YW1wbGUsIHRoZQorICAgICAgICBzY29w
ZSBpcyAnQycuICBUaGUgc2NvcGUgaXMgdXNlZCB0byBjaGVjayB3aGV0aGVyIHRoZSBsZWZ0LW1v
c3QKKyAgICAgICAgbWF0Y2hlZCBlbGVtZW50IChpbiB0aGUgZXhhbXBsZSwgaXQncyBhIG5vZGUg
J0QnKSBleGlzdHMgaW4gdGhlCisgICAgICAgIHNjb3BlLgorCisgICAgICAgIFRvIGludHJvZHVj
ZSBTaGFkb3dEaXN0cmlidXRlZFJ1bGVzLCB0aGlzIHBhdGNoIGZhY3RvcmVkCisgICAgICAgIFN0
eWxlUmVzb2x2ZXIgYW5kIGludHJvZHVjZXMgYSBNYXRjaFJlcXVlc3QsIHdoaWNoIHJlcGxhY2Vk
CisgICAgICAgIFN0eWxlUmVzb2x2ZXI6Ok1hdGNoT3B0aW9ucywgc28gdGhhdCByZWxhdGVkIHJl
cXVlc3QgcGFyYW1ldGVycworICAgICAgICBhcmUgZ2F0aGVyZWQgaW50byBhIG9uZSBjbGFzcy4K
KworICAgICAgICBJbnRlcm5hbGx5LCBhICc6OmRpc3RyaWJ1dGVkJyBwc2V1ZG8gZWxlbWVudCBp
cyByZXByZXNlbnRlZCBieSBhCisgICAgICAgIG5ld2x5IGludHJvZHVjZWQgJ1NoYWRvd0Rpc3Ry
aWJ1dGVkJyByZWxhdGlvbi4gIFRoYXQgbWFrZXMgYW4KKyAgICAgICAgaW1wbGVtZW50YXRpb24g
b2YgU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKCkgbXVjaCBzaW1wbGVyLgorICAgICAg
ICBBIHRyYW5zZm9ybWF0aW9uIGZyb20gYSBkaXN0cmlidXRlZCBwc2V1ZG8gZWxlbWVudCB0byBh
CisgICAgICAgIFNoYWRvd0Rpc3RyaWJ1dGVkIGlzIGRvbmUgaW4gcGFyc2luZyBzdGFnZSBvZiBD
U1MuCisKKyAgICAgICAgU2luY2UgJzo6ZGlzdHJpYnV0ZWQoKScgaXMgYW4gZXhwZXJpbWVudGFs
IGZlYXR1cmUsIGl0J3MgYWN0dWFsbHkKKyAgICAgICAgcHJlZml4ZWQgd2l0aCAnLXdlYmtpdC0n
IGFuZCBndWFyZGVkIGJ5IFNIQURPV19ET00gZmxhZy4KKworICAgICAgICBUZXN0czogZmFzdC9k
b20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtbWF0Y2gtYWxsLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50Lmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50LW5vLW1hdGNoLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24uaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNjb3BlZC5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3Vw
cG9ydC1zZWxlY3Rvci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJp
YnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0Lmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC13aXRoLWFu
eS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRv
LWVsZW1lbnQuaHRtbAorCisgICAgICAgICogY3NzL0NTU0dyYW1tYXIueS5pbjoKKyAgICAgICAg
KiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6ZGV0ZWN0
RGFzaFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cmV3cml0ZVNwZWNpZmll
cnNXaXRoRWxlbWVudE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpyZXdyaXRl
U3BlY2lmaWVycyk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAqIGNzcy9D
U1NQYXJzZXJWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6
OkNTU1BhcnNlclNlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyVmFsdWVzLmg6Cisg
ICAgICAgIChDU1NQYXJzZXJTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJT
ZWxlY3Rvcjo6ZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlclNlbGVjdG9yOjpzZXRGdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OmlzRGlzdHJpYnV0ZWRQc2V1ZG9FbGVtZW50KToK
KyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3I6OnBzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6Om5hbWVUb1BzZXVkb1R5cGVNYXAp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZWxlY3RvclRleHQpOgorICAgICAgICAqIGNz
cy9DU1NTZWxlY3Rvci5oOgorICAgICAgICAoQ1NTU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6aXNEaXN0cmlidXRlZFBzZXVkb0Vs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmlzU2hhZG93RGlzdHJpYnV0
ZWQpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChTZWxlY3Rvckhhc1NoYWRvd0Rpc3RyaWJ1dGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdG9ySGFzU2hhZG93RGlzdHJpYnV0ZWQ6Om9wZXJhdG9yKCkpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JMaXN0OjpoYXNTaGFkb3dEaXN0cmlidXRlZEF0KToKKyAg
ICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0Lmg6CisgICAgICAgIChDU1NTZWxlY3Rvckxpc3Qp
OgorICAgICAgICAqIGNzcy9SdWxlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6
OmFkZENoaWxkUnVsZXMpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjptYXRjaCk6CisgICAgICAgICogY3NzL1Nl
bGVjdG9yQ2hlY2tlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpTZWxl
Y3RvckNoZWNraW5nQ29udGV4dDo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQpOgorICAgICAgICAo
U2VsZWN0b3JDaGVja2luZ0NvbnRleHQpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckZpbHRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckZpbHRlcjo6Y29sbGVjdElkZW50aWZpZXJI
YXNoZXMpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93RGlzdHJpYnV0ZWRSdWxlczo6YWRkUnVsZSk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEaXN0cmlidXRlZFJ1bGVzOjpjb2xsZWN0TWF0Y2hS
ZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpyZXNldEF1dGhvclN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1
bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1
bGVzRm9yUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Om1hdGNoU2Nv
cGVkQXV0aG9yUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bWF0Y2hI
b3N0UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JS
dWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRjaFVzZXJSdWxlcyk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRjaFVBUnVsZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1h
dGNoZXNSdWxlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnJ1bGVNYXRj
aGVzKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAoTWF0Y2hSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGNoUmVxdWVzdDo6TWF0Y2hSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1hdGNoUmVxdWVzdDo6Y2xvbmVXaXRoKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoU2hhZG93RGlzdHJpYnV0ZWRSdWxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dEaXN0cmlidXRlZFJ1bGVzOjpjbGVhcik6CisgICAgICAgIChTdHlsZVJlc29sdmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnNoYWRvd0Rpc3RyaWJ1dGVkUnVs
ZXMpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpjb2xsZWN0QWxsSW5zZXJ0aW9uUG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmUpOgor
CiAyMDEzLTAxLTE0ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBZ
ZXQgYW5vdGhlciB1bnJldmlld2VkIGF0dGVtcHRlZCBRVCBidWlsZCBmaXgsIHRoaXMgdGltZSBi
ZWNhdXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgppbmRleCA1NjgxNGNkYzZiZTA4NDEy
YzI0NjQxZGQyMGVkY2JiYjY3OGM4NTdjLi42NDk3OGJiNWZmMmRiYTQwNDg1Y2ZhZjYxOGE5YzA0
NjU4ODczY2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55Lmlu
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KQEAgLTYxLDcgKzYxLDEx
IEBAIHN0YXRpYyBpbmxpbmUgaW50IGNzc3l5ZXJyb3Iodm9pZCosIGNvbnN0IGNoYXIqKQogCiAl
fQogCisjaWYgRU5BQkxFX1NIQURPV19ET00KKyVleHBlY3QgNjYKKyNlbHNlCiAlZXhwZWN0IDY1
CisjZW5kaWYKIAogJW5vbmFzc29jIExPV0VTVF9QUkVDCiAKQEAgLTE3Nyw2ICsxODEsNyBAQCBz
dGF0aWMgaW5saW5lIGludCBjc3N5eWVycm9yKHZvaWQqLCBjb25zdCBjaGFyKikKICV0b2tlbiA8
c3RyaW5nPiBDVUVGVU5DVElPTgogI2VuZGlmCiAldG9rZW4gPHN0cmluZz4gTk9URlVOQ1RJT04K
KyV0b2tlbiA8c3RyaW5nPiBESVNUUklCVVRFREZVTkNUSU9OCiAldG9rZW4gPHN0cmluZz4gQ0FM
Q0ZVTkNUSU9OCiAldG9rZW4gPHN0cmluZz4gTUlORlVOQ1RJT04KICV0b2tlbiA8c3RyaW5nPiBN
QVhGVU5DVElPTgpAQCAtMTE0NCwxMiArMTE0OSwxMiBAQCBzaW1wbGVfc2VsZWN0b3I6CiAgICAg
fCBlbGVtZW50X25hbWUgc3BlY2lmaWVyX2xpc3QgewogICAgICAgICAkJCA9ICQyOwogICAgICAg
ICBpZiAoJCQpCi0gICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVu
dE5hbWUobnVsbEF0b20sICQxLCAkJCk7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+cmV3cml0
ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20sICQxLCAkJCk7CiAgICAgfQogICAg
IHwgc3BlY2lmaWVyX2xpc3QgewogICAgICAgICAkJCA9ICQxOwogICAgICAgICBpZiAoJCQpCi0g
ICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0
b20sIHN0YXJBdG9tLCAkJCk7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+cmV3cml0ZVNwZWNp
ZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20sIHN0YXJBdG9tLCAkJCk7CiAgICAgfQogICAg
IHwgbmFtZXNwYWNlX3NlbGVjdG9yIGVsZW1lbnRfbmFtZSB7CiAgICAgICAgICQkID0gcGFyc2Vy
LT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CkBAIC0xMTU4LDEyICsxMTYzLDEyIEBAIHNpbXBs
ZV9zZWxlY3RvcjoKICAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBlbGVtZW50X25hbWUgc3BlY2lm
aWVyX2xpc3QgewogICAgICAgICAkJCA9ICQzOwogICAgICAgICBpZiAoJCQpCi0gICAgICAgICAg
ICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsICQyLCAkJCk7Cisg
ICAgICAgICAgICAkJCA9IHBhcnNlci0+cmV3cml0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUo
JDEsICQyLCAkJCk7CiAgICAgfQogICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIHNwZWNpZmllcl9s
aXN0IHsKICAgICAgICAgJCQgPSAkMjsKICAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFy
c2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKCQxLCBzdGFyQXRvbSwgJCQpOwor
ICAgICAgICAgICAgJCQgPSBwYXJzZXItPnJld3JpdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1l
KCQxLCBzdGFyQXRvbSwgJCQpOwogICAgIH0KICAgOwogCkBAIC0xMjA4LDcgKzEyMTMsNyBAQCBz
cGVjaWZpZXJfbGlzdDoKICAgICAgICAgaWYgKCEkMikKICAgICAgICAgICAgICQkID0gMDsKICAg
ICAgICAgZWxzZSBpZiAoJDEpCi0gICAgICAgICAgICAkJCA9IHBhcnNlci0+dXBkYXRlU3BlY2lm
aWVycygkMSwgJDIpOworICAgICAgICAgICAgJCQgPSBwYXJzZXItPnJld3JpdGVTcGVjaWZpZXJz
KCQxLCAkMik7CiAgICAgfQogICAgIHwgc3BlY2lmaWVyX2xpc3QgZXJyb3IgewogICAgICAgICAk
JCA9IDA7CkBAIC0xMzU1LDYgKzEzNjAsMTkgQEAgcHNldWRvOgogICAgICAgICAgICAgJCQgPSAw
OwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRV9TSEFET1dfRE9NCisgICAgfCAnOicgJzonIERJ
U1RSSUJVVEVERlVOQ1RJT04gbWF5YmVfc3BhY2Ugc2VsZWN0b3IgbWF5YmVfc3BhY2UgJyknIHsK
KyAgICAgICAgaWYgKCEkNSkKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAg
ICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50KTsKKyAgICAgICAg
ICAgICQkLT5zZXRGdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IoJDUpOworICAgICAgICAgICAgJDMu
bG93ZXIoKTsKKyAgICAgICAgICAgICQkLT5zZXRWYWx1ZSgkMyk7CisgICAgICAgIH0KKyAgICB9
CisjZW5kaWYKICAgICAvLyB1c2UgYnkgOi13ZWJraXQtYW55LgogICAgIC8vIEZJWE1FOiBzaG91
bGQgd2Ugc3VwcG9ydCBnZW5lcmljIHNlbGVjdG9ycyBoZXJlIG9yIGp1c3Qgc2ltcGxlX3NlbGVj
dG9ycz8KICAgICAvLyBVc2Ugc2ltcGxlX3NlbGVjdG9yX2xpc3QgZm9yIG5vdyB0byBtYXRjaCAt
bW96LWFueS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggYmEwOWZkMDI0ZWVkMjA3MjZl
ZThhNjY2ZDY4M2ExM2FjZDNhMGNkMy4uYjE1MWJjOTIxNmMwODVjY2VhYjE2NzdlNGJiMDc5MTgy
ZDdkZDNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTk2ODgsNiArOTY4OCwxMCBA
QCBpbmxpbmUgdm9pZCBDU1NQYXJzZXI6OmRldGVjdERhc2hUb2tlbihpbnQgbGVuZ3RoKQogI2Vu
ZGlmCiAgICAgfSBlbHNlIGlmIChsZW5ndGggPT0gMTIgJiYgaXNFcXVhbFRvQ1NTSWRlbnRpZmll
cihuYW1lICsgMSwgIndlYmtpdC1jYWxjIikpCiAgICAgICAgIG1fdG9rZW4gPSBDQUxDRlVOQ1RJ
T047CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgZWxzZSBpZiAobGVuZ3RoID09IDE5ICYm
IGlzRXF1YWxUb0NTU0lkZW50aWZpZXIobmFtZSArIDEsICJ3ZWJraXQtZGlzdHJpYnV0ZWQiKSkK
KyAgICAgICAgbV90b2tlbiA9IERJU1RSSUJVVEVERlVOQ1RJT047CisjZW5kaWYKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CkBAIC0xMDYzMiwxNiArMTA2MzYsMzIgQEAg
UXVhbGlmaWVkTmFtZSBDU1NQYXJzZXI6OmRldGVybWluZU5hbWVJbk5hbWVzcGFjZShjb25zdCBB
dG9taWNTdHJpbmcmIHByZWZpeCwgY28KICAgICByZXR1cm4gUXVhbGlmaWVkTmFtZShwcmVmaXgs
IGxvY2FsTmFtZSwgbV9zdHlsZVNoZWV0LT5kZXRlcm1pbmVOYW1lc3BhY2UocHJlZml4KSk7CiB9
CiAKLXZvaWQgQ1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1l
bnROYW1lLCBDU1NQYXJzZXJTZWxlY3Rvciogc3BlY2lmaWVycykKK0NTU1BhcnNlclNlbGVjdG9y
KiBDU1NQYXJzZXI6OnJld3JpdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZXNwYWNlUHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnROYW1l
LCBDU1NQYXJzZXJTZWxlY3Rvciogc3BlY2lmaWVycykKIHsKICAgICBBdG9taWNTdHJpbmcgZGV0
ZXJtaW5lZE5hbWVzcGFjZSA9IG5hbWVzcGFjZVByZWZpeCAhPSBudWxsQXRvbSAmJiBtX3N0eWxl
U2hlZXQgPyBtX3N0eWxlU2hlZXQtPmRldGVybWluZU5hbWVzcGFjZShuYW1lc3BhY2VQcmVmaXgp
IDogbV9kZWZhdWx0TmFtZXNwYWNlOwogICAgIFF1YWxpZmllZE5hbWUgdGFnID0gUXVhbGlmaWVk
TmFtZShuYW1lc3BhY2VQcmVmaXgsIGVsZW1lbnROYW1lLCBkZXRlcm1pbmVkTmFtZXNwYWNlKTsK
KworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGlmIChzcGVjaWZpZXJzLT5pc0Rpc3RyaWJ1
dGVkUHNldWRvRWxlbWVudCgpKSB7CisgICAgICAgIENTU1BhcnNlclNlbGVjdG9yKiBhcmd1bWVu
dFNlbGVjdG9yID0gc3BlY2lmaWVycy0+ZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKCk7CisgICAg
ICAgIEFTU0VSVChhcmd1bWVudFNlbGVjdG9yKTsKKyAgICAgICAgQ1NTUGFyc2VyU2VsZWN0b3Iq
IGVuZCA9IGFyZ3VtZW50U2VsZWN0b3I7CisgICAgICAgIHdoaWxlIChlbmQtPnRhZ0hpc3Rvcnko
KSkKKyAgICAgICAgICAgIGVuZCA9IGVuZC0+dGFnSGlzdG9yeSgpOworICAgICAgICBPd25QdHI8
Q1NTUGFyc2VyU2VsZWN0b3I+IGVsZW1lbnROYW1lU2VsZWN0b3IgPSBhZG9wdFB0cihuZXcgQ1NT
UGFyc2VyU2VsZWN0b3IpOworICAgICAgICBlbGVtZW50TmFtZVNlbGVjdG9yLT5zZXRUYWcodGFn
KTsKKyAgICAgICAgZW5kLT5zZXRUYWdIaXN0b3J5KGVsZW1lbnROYW1lU2VsZWN0b3IucmVsZWFz
ZSgpKTsKKyAgICAgICAgZW5kLT5zZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6U2hhZG93RGlzdHJp
YnV0ZWQpOworICAgICAgICByZXR1cm4gYXJndW1lbnRTZWxlY3RvcjsKKyAgICB9CisjZW5kaWYK
KwogICAgIGlmICghc3BlY2lmaWVycy0+aXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkpIHsKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCiAgICAgICAgIGlmICghKHNwZWNpZmllcnMtPnBzZXVkb1R5cGUo
KSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ3VlKSkKICNlbmRpZgogICAgICAgICAgICAgc3BlY2lm
aWVycy0+c2V0VGFnKHRhZyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHNwZWNp
ZmllcnM7CiAgICAgfQogCiAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGxhc3RTaGFkb3dEZXNjZW5k
YW50ID0gc3BlY2lmaWVyczsKQEAgLTEwNjU0LDcgKzEwNjc0LDcgQEAgdm9pZCBDU1NQYXJzZXI6
OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
c3BhY2VQcmUKIAogICAgIGlmIChsYXN0U2hhZG93RGVzY2VuZGFudC0+dGFnSGlzdG9yeSgpKSB7
CiAgICAgICAgIGxhc3RTaGFkb3dEZXNjZW5kYW50LT50YWdIaXN0b3J5KCktPnNldFRhZyh0YWcp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBzcGVjaWZpZXJzOwogICAgIH0KIAog
ICAgIC8vIEZvciBzaGFkb3ctSUQgcHNldWRvLWVsZW1lbnRzIHRvIGJlIGNvcnJlY3RseSBtYXRj
aGVkLCB0aGUgU2hhZG93RGVzY2VuZGFudCBjb21iaW5hdG9yIGhhcyB0byBiZSB1c2VkLgpAQCAt
MTA2NjMsOSArMTA2ODMsMTAgQEAgdm9pZCBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRo
RWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VQcmUKICAgICBlbGVtZW50
TmFtZVNlbGVjdG9yLT5zZXRUYWcodGFnKTsKICAgICBsYXN0U2hhZG93RGVzY2VuZGFudC0+c2V0
VGFnSGlzdG9yeShlbGVtZW50TmFtZVNlbGVjdG9yLnJlbGVhc2UoKSk7CiAgICAgbGFzdFNoYWRv
d0Rlc2NlbmRhbnQtPnNldFJlbGF0aW9uKENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50KTsK
KyAgICByZXR1cm4gc3BlY2lmaWVyczsKIH0KIAotQ1NTUGFyc2VyU2VsZWN0b3IqIENTU1BhcnNl
cjo6dXBkYXRlU3BlY2lmaWVycyhDU1NQYXJzZXJTZWxlY3Rvciogc3BlY2lmaWVycywgQ1NTUGFy
c2VyU2VsZWN0b3IqIG5ld1NwZWNpZmllcikKK0NTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXI6
OnJld3JpdGVTcGVjaWZpZXJzKENTU1BhcnNlclNlbGVjdG9yKiBzcGVjaWZpZXJzLCBDU1NQYXJz
ZXJTZWxlY3RvciogbmV3U3BlY2lmaWVyKQogewogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAg
ICBpZiAobmV3U3BlY2lmaWVyLT5pc0N1c3RvbVBzZXVkb0VsZW1lbnQoKSB8fCBuZXdTcGVjaWZp
ZXItPnBzZXVkb1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ3VlKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmgKaW5kZXggMTRhY2Q1OTcyMWZlZjY2M2JiOTlmZTM2MGQ1NWVlZTE3NDMzNGFjMS4u
ODg0MGYwN2UwYTNlZjAwYjE0YTQ5MDc0NWNmNzcwYTBjYWMzYzBhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuaApAQCAtMzA5LDggKzMwOSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkTmFtZXNw
YWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIHVyaSk7
CiAgICAgUXVhbGlmaWVkTmFtZSBkZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoY29uc3QgQXRvbWlj
U3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKTsKLSAgICB2b2lk
IHVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
c3BhY2VQcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudE5hbWUsIENTU1BhcnNlclNl
bGVjdG9yKik7Ci0gICAgQ1NTUGFyc2VyU2VsZWN0b3IqIHVwZGF0ZVNwZWNpZmllcnMoQ1NTUGFy
c2VyU2VsZWN0b3IqLCBDU1NQYXJzZXJTZWxlY3RvciopOworICAgIENTU1BhcnNlclNlbGVjdG9y
KiByZXdyaXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWVzcGFjZVByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50TmFtZSwgQ1NTUGFyc2Vy
U2VsZWN0b3IqKTsKKyAgICBDU1NQYXJzZXJTZWxlY3RvciogcmV3cml0ZVNwZWNpZmllcnMoQ1NT
UGFyc2VyU2VsZWN0b3IqLCBDU1NQYXJzZXJTZWxlY3RvciopOwogCiAgICAgdm9pZCBpbnZhbGlk
QmxvY2tIaXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZh
bHVlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcAppbmRleCBk
MjNiODU4NWQ1ZDdiYjhlYjBmMjY4MjM0YjZlZDA2YTU4ODFkZjI3Li5lNWEwYjM3N2U3ZWQ3NjA1
ZDJmOTI2NzRmM2Y4YTZmMzc5ZmFmMjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFs
dWVzLmNwcApAQCAtMTQ2LDYgKzE0Niw5IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNl
clZhbHVlOjpjcmVhdGVDU1NWYWx1ZSgpCiAKIENTU1BhcnNlclNlbGVjdG9yOjpDU1NQYXJzZXJT
ZWxlY3RvcigpCiAgICAgOiBtX3NlbGVjdG9yKGFkb3B0UHRyKGZhc3ROZXc8Q1NTU2VsZWN0b3I+
KCkpKQorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICwgbV9mdW5jdGlvbkFyZ3VtZW50U2Vs
ZWN0b3IoMCkKKyNlbmRpZgogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyVmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgK
aW5kZXggMTMwMWIxY2UwZTExMzcyM2NjZjgyMTYyOGVlMDVlMmUzMTAyMzY3Yi4uMmNkNDA5OTRm
MDFmYmZlZTdjZTZjYjAxMDgzZjQxNDk1MzlhMTQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXJWYWx1ZXMuaApAQCAtMTg2LDYgKzE4NiwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkb3B0
U2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiYgc2VsZWN0
b3JWZWN0b3IpOwogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgQ1NTUGFyc2VyU2VsZWN0
b3IqIGZ1bmN0aW9uQXJndW1lbnRTZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25B
cmd1bWVudFNlbGVjdG9yOyB9CisgICAgdm9pZCBzZXRGdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3Io
Q1NTUGFyc2VyU2VsZWN0b3IqIHNlbGVjdG9yKSB7IG1fZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9y
ID0gc2VsZWN0b3I7IH0KKyAgICBib29sIGlzRGlzdHJpYnV0ZWRQc2V1ZG9FbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9zZWxlY3Rvci0+aXNEaXN0cmlidXRlZFBzZXVkb0VsZW1lbnQoKTsgfQor
I2VuZGlmCisKICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSBwc2V1ZG9UeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9zZWxlY3Rvci0+cHNldWRvVHlwZSgpOyB9CiAgICAgYm9vbCBpc0N1c3RvbVBz
ZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yLT5pc0N1c3RvbVBzZXVkb0Vs
ZW1lbnQoKTsgfQogCkBAIC0yMDAsNiArMjA2LDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBP
d25QdHI8Q1NTU2VsZWN0b3I+IG1fc2VsZWN0b3I7CiAgICAgT3duUHRyPENTU1BhcnNlclNlbGVj
dG9yPiBtX3RhZ0hpc3Rvcnk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgQ1NTUGFyc2Vy
U2VsZWN0b3IqIG1fZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yOworI2VuZGlmCiB9OwogCiBpbmxp
bmUgYm9vbCBDU1NQYXJzZXJTZWxlY3Rvcjo6aGFzU2hhZG93RGVzY2VuZGFudCgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCA1YTZlY2NhZmI5NDJjMGQ2ZmE3M2E2MmI2
ZmZjNzQyMWYzY2FhOWVjLi43ZDg0NzRiNTMxM2VhZjk0N2Q5ZjgwNDY1YTcwNGE2ZmNiMmFmYTRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKQEAgLTIyNyw2ICsyMjcsOSBAQCBQc2V1
ZG9JZCBDU1NTZWxlY3Rvcjo6cHNldWRvSWQoUHNldWRvVHlwZSB0eXBlKQogI2lmIEVOQUJMRShJ
RlJBTUVfU0VBTUxFU1MpCiAgICAgY2FzZSBQc2V1ZG9TZWFtbGVzc0RvY3VtZW50OgogI2VuZGlm
CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgY2FzZSBQc2V1ZG9EaXN0cmlidXRlZDoKKyNl
bmRpZgogICAgICAgICByZXR1cm4gTk9QU0VVRE87CiAgICAgY2FzZSBQc2V1ZG9Ob3RQYXJzZWQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzE2LDYgKzMxOSw5IEBAIHN0YXRp
YyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5h
bWVUb1BzZXVkb1R5cGVNYXAoCiAjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2VhbWxlc3NEb2N1bWVudCwgKCItd2Via2l0
LXNlYW1sZXNzLWRvY3VtZW50IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OwogI2VuZGlmCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIGRpc3RyaWJ1dGVkLCAoIi13ZWJraXQtZGlzdHJpYnV0ZWQoIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworI2VuZGlmCiAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGluUmFuZ2UsICgiaW4tcmFuZ2UiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIG91dE9mUmFuZ2UsICgib3V0LW9mLXJhbmdlIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOwogCkBAIC0zOTgsNiArNDA0LDkgQEAgc3RhdGljIEhhc2hNYXA8
QXRvbWljU3RyaW5nSW1wbCosIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlPiogbmFtZVRvUHNldWRv
VHlwZU1hcCgKICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQogICAgICAgICBuYW1lVG9Qc2V1
ZG9UeXBlLT5zZXQoc2VhbWxlc3NEb2N1bWVudC5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9T
ZWFtbGVzc0RvY3VtZW50KTsKICNlbmRpZgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAg
ICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoZGlzdHJpYnV0ZWQuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6
UHNldWRvRGlzdHJpYnV0ZWQpOworI2VuZGlmCiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNl
dChpblJhbmdlLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0luUmFuZ2UpOwogICAgICAgICBu
YW1lVG9Qc2V1ZG9UeXBlLT5zZXQob3V0T2ZSYW5nZS5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1
ZG9PdXRPZlJhbmdlKTsKICAgICB9CkBAIC00NDgsNiArNDU3LDkgQEAgdm9pZCBDU1NTZWxlY3Rv
cjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25zdAogICAgIGNhc2UgUHNldWRvRmlyc3RMZXR0ZXI6
CiAgICAgY2FzZSBQc2V1ZG9GaXJzdExpbmU6CiAgICAgICAgIGNvbXBhdCA9IHRydWU7CisjaWYg
RU5BQkxFKFNIQURPV19ET00pCisgICAgY2FzZSBQc2V1ZG9EaXN0cmlidXRlZDoKKyNlbmRpZgog
ICAgIGNhc2UgUHNldWRvUmVzaXplcjoKICAgICBjYXNlIFBzZXVkb1Njcm9sbGJhcjoKICAgICBj
YXNlIFBzZXVkb1Njcm9sbGJhckNvcm5lcjoKQEAgLTY4NCw2ICs2OTYsMTAgQEAgU3RyaW5nIENT
U1NlbGVjdG9yOjpzZWxlY3RvclRleHQoKSBjb25zdAogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rlc2NlbmRhbnQ6CiAg
ICAgICAgICAgICByZXR1cm4gdGFnSGlzdG9yeVRleHQgKyBzdHIudG9TdHJpbmcoKTsKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2hhZG93RGlzdHJp
YnV0ZWQ6CisgICAgICAgICAgICByZXR1cm4gdGFnSGlzdG9yeVRleHQgKyAiOjotd2Via2l0LWRp
c3RyaWJ1dGVkKCIgKyBzdHIudG9TdHJpbmcoKSArICIpIjsKKyNlbmRpZgogICAgICAgICB9CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCmluZGV4IGE1ZDIzOWZlMGM0YTM4MzU4ZWJm
ZTZiY2E1YzZhZWE5ODA0N2MyMzkuLmMwNjY0N2I1Y2VjOGM5YjM4MGMwZTBlMzE3YTBlMWE2YTgy
NzhlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCkBAIC03NSw3ICs3NSwxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBEaXJlY3RBZGphY2VudCwKICAgICAgICAgICAg
IEluZGlyZWN0QWRqYWNlbnQsCiAgICAgICAgICAgICBTdWJTZWxlY3RvciwKLSAgICAgICAgICAg
IFNoYWRvd0Rlc2NlbmRhbnQKKyAgICAgICAgICAgIFNoYWRvd0Rlc2NlbmRhbnQsCisjaWYgRU5B
QkxFKFNIQURPV19ET00pCisgICAgICAgICAgICBTaGFkb3dEaXN0cmlidXRlZAorI2VuZGlmCiAg
ICAgICAgIH07CiAKICAgICAgICAgZW51bSBQc2V1ZG9UeXBlIHsKQEAgLTE2MCw3ICsxNjMsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgUHNldWRvRnV0dXJlQ3VlLAogI2Vu
ZGlmCiAjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKLSAgICAgICAgICAgIFBzZXVkb1NlYW1s
ZXNzRG9jdW1lbnQKKyAgICAgICAgICAgIFBzZXVkb1NlYW1sZXNzRG9jdW1lbnQsCisjZW5kaWYK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgICAgIFBzZXVkb0Rpc3RyaWJ1dGVkCiAj
ZW5kaWYKICAgICAgICAgfTsKIApAQCAtMjIyLDYgKzIyOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGJvb2wgaXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkgY29uc3Q7CiAgICAgICAg
IGJvb2wgaXNTaWJsaW5nU2VsZWN0b3IoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc0F0dHJpYnV0
ZVNlbGVjdG9yKCkgY29uc3Q7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgIGJvb2wg
aXNEaXN0cmlidXRlZFBzZXVkb0VsZW1lbnQoKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc1NoYWRv
d0Rpc3RyaWJ1dGVkKCkgY29uc3Q7CisjZW5kaWYKIAogICAgICAgICBSZWxhdGlvbiByZWxhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlbGF0aW9uPihtX3JlbGF0aW9uKTsgfQog
CkBAIC0zMzQsNiArMzQ0LDE4IEBAIGlubGluZSBib29sIENTU1NlbGVjdG9yOjppc0F0dHJpYnV0
ZVNlbGVjdG9yKCkgY29uc3QKICAgICAgICAgfHwgbV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6RW5k
OwogfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCitpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6
aXNEaXN0cmlidXRlZFBzZXVkb0VsZW1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX21hdGNo
ID09IFBzZXVkb0VsZW1lbnQgJiYgcHNldWRvVHlwZSgpID09IFBzZXVkb0Rpc3RyaWJ1dGVkOwor
fQorCitpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6aXNTaGFkb3dEaXN0cmlidXRlZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6OlNoYWRvd0Rpc3RyaWJ1
dGVkOworfQorI2VuZGlmCisKIGlubGluZSB2b2lkIENTU1NlbGVjdG9yOjpzZXRWYWx1ZShjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIC8vIE5lZWQgdG8gZG8gcmVmIGNvdW50aW5n
IG1hbnVhbGx5IGZvciB0aGUgdW5pb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3JMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3Qu
Y3BwCmluZGV4IDQzMTM2ZDFjOTAxYzYzNDFiYWNiZWY4Mzk0OWRmOTRlNjBmMWMzNmMuLmM1Mjkz
ZmIyYTIwM2VkNmYxOWZjNTcxNTIzNmI1ZDlmNjY0YmY1MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvckxpc3QuY3BwCkBAIC0yMTEsNiArMjExLDIxIEBAIGJvb2wgQ1NTU2VsZWN0b3JM
aXN0OjpoYXNJbnZhbGlkU2VsZWN0b3IoKSBjb25zdAogICAgIHJldHVybiBmb3JFYWNoU2VsZWN0
b3IoZnVuY3RvciwgdGhpcyk7CiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKK2NsYXNzIFNl
bGVjdG9ySGFzU2hhZG93RGlzdHJpYnV0ZWQgeworcHVibGljOgorICAgIGJvb2wgb3BlcmF0b3Io
KShDU1NTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgeworICAgICAgICByZXR1cm4gc2VsZWN0b3It
PmlzU2hhZG93RGlzdHJpYnV0ZWQoKTsKKyAgICB9Cit9OworCitib29sIENTU1NlbGVjdG9yTGlz
dDo6aGFzU2hhZG93RGlzdHJpYnV0ZWRBdChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgU2Vs
ZWN0b3JIYXNTaGFkb3dEaXN0cmlidXRlZCBmdW5jdG9yOworICAgIHJldHVybiBmb3JFYWNoVGFn
U2VsZWN0b3IoZnVuY3Rvciwgc2VsZWN0b3JBdChpbmRleCkpOworfQogCisjZW5kaWYKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Nl
bGVjdG9yTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCmluZGV4
IDRmY2ZlZTJmYWE0MTgyZDdhOWFiMDU1YmNjZTUxOWZlNzRlMjI3MTUuLjRlN2I1ODJkYmM1MTE4
YTQ1ZTQ2ZGJiZjBjZDg5NGE5Zjc0M2Y2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTZWxlY3Rvckxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JM
aXN0LmgKQEAgLTYwLDYgKzYwLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHNlbGVjdG9yc05lZWRO
YW1lc3BhY2VSZXNvbHV0aW9uKCk7CiAgICAgYm9vbCBoYXNJbnZhbGlkU2VsZWN0b3IoKSBjb25z
dDsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGJvb2wgaGFzU2hhZG93RGlzdHJpYnV0
ZWRBdChzaXplX3QgaW5kZXgpIGNvbnN0OworI2VuZGlmCisKICAgICBTdHJpbmcgc2VsZWN0b3Jz
VGV4dCgpIGNvbnN0OwogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKaW5kZXggZDdiNTIwYjkwODJhMTcwOTcw
ZTFhNmQ3NzllZDZhZTUzNWM5MjQyZi4uMGQxNzA4NmYzMzhiZGNkZWM0NzNiMjMzYjZmMWFjYmRk
MWFjNTgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcApAQCAtMjc4LDkgKzI3OCwyNSBAQCB2b2lk
IFJ1bGVTZXQ6OmFkZENoaWxkUnVsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNl
PiA+JiBydWxlcywgY29uc3QgTQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBydWxlcy5z
aXplKCk7ICsraSkgewogICAgICAgICBTdHlsZVJ1bGVCYXNlKiBydWxlID0gcnVsZXNbaV0uZ2V0
KCk7CiAKLSAgICAgICAgaWYgKHJ1bGUtPmlzU3R5bGVSdWxlKCkpCi0gICAgICAgICAgICBhZGRT
dHlsZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlKj4ocnVsZSksIGFkZFJ1bGVGbGFncyk7Ci0g
ICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlzUGFnZVJ1bGUoKSkKKyAgICAgICAgaWYgKHJ1bGUtPmlz
U3R5bGVSdWxlKCkpIHsKKyAgICAgICAgICAgIFN0eWxlUnVsZSogc3R5bGVSdWxlID0gc3RhdGlj
X2Nhc3Q8U3R5bGVSdWxlKj4ocnVsZSk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAg
ICAgICBpZiAoIXNjb3BlKQorICAgICAgICAgICAgICAgIGFkZFN0eWxlUnVsZShzdHlsZVJ1bGUs
IGFkZFJ1bGVGbGFncyk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb25z
dCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCA9IHN0eWxlUnVsZS0+c2VsZWN0b3JMaXN0
KCk7CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3Qgc2VsZWN0b3JJbmRleCA9IDA7IHNlbGVj
dG9ySW5kZXggIT0gbm90Rm91bmQ7IHNlbGVjdG9ySW5kZXggPSBzZWxlY3Rvckxpc3QuaW5kZXhP
Zk5leHRTZWxlY3RvckFmdGVyKHNlbGVjdG9ySW5kZXgpKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChzZWxlY3Rvckxpc3QuaGFzU2hhZG93RGlzdHJpYnV0ZWRBdChzZWxlY3RvckluZGV4KSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVyLT5zaGFkb3dEaXN0cmlidXRlZFJ1bGVz
KCkuYWRkUnVsZShzdHlsZVJ1bGUsIHNlbGVjdG9ySW5kZXgsIGNvbnN0X2Nhc3Q8Q29udGFpbmVy
Tm9kZSo+KHNjb3BlKSwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkUnVsZShzdHlsZVJ1bGUsIHNlbGVjdG9ySW5kZXgs
IGFkZFJ1bGVGbGFncyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorI2Vsc2UK
KyAgICAgICAgICAgIGFkZFN0eWxlUnVsZShzdHlsZVJ1bGUsIGFkZFJ1bGVGbGFncyk7CisjZW5k
aWYKKworICAgICAgICB9IGVsc2UgaWYgKHJ1bGUtPmlzUGFnZVJ1bGUoKSkKICAgICAgICAgICAg
IGFkZFBhZ2VSdWxlKHN0YXRpY19jYXN0PFN0eWxlUnVsZVBhZ2UqPihydWxlKSk7CiAgICAgICAg
IGVsc2UgaWYgKHJ1bGUtPmlzTWVkaWFSdWxlKCkpIHsKICAgICAgICAgICAgIFN0eWxlUnVsZU1l
ZGlhKiBtZWRpYVJ1bGUgPSBzdGF0aWNfY2FzdDxTdHlsZVJ1bGVNZWRpYSo+KHJ1bGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCAyZTg3NGY0ZmNkOTMwMDA5Yzk3
OGNjNmE5ZTQzZmViMjUxYjg0NjlmLi5mZjQ3YmYxMzE2N2Y4MDY0MjVjM2M3NDE3NGUzYmUxMGRi
M2I3OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtNDAsNiAr
NDAsNyBAQAogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBy
b2dyZXNzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJJbnNlcnRpb25Qb2ludC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTI4
MSw4ICsyODIsMTMgQEAgU2VsZWN0b3JDaGVja2VyOjpNYXRjaCBTZWxlY3RvckNoZWNrZXI6Om1h
dGNoKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb24KIAogICAgIC8vIFByZXBhcmUg
bmV4dCBzZWxlY3RvcgogICAgIENTU1NlbGVjdG9yKiBoaXN0b3J5U2VsZWN0b3IgPSBjb250ZXh0
LnNlbGVjdG9yLT50YWdIaXN0b3J5KCk7Ci0gICAgaWYgKCFoaXN0b3J5U2VsZWN0b3IpCisgICAg
aWYgKCFoaXN0b3J5U2VsZWN0b3IpIHsKKyAgICAgICAgaWYgKGNvbnRleHQuY3Jvc3NCb3VuZGFy
eSA9PSBDcm9zc2VzQm91bmRhcnkpIHsKKyAgICAgICAgICAgIEFTU0VSVChjb250ZXh0LnNjb3Bl
KTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnNjb3BlLT5jb250YWlucyhjb250ZXh0LmVs
ZW1lbnQpID8gU2VsZWN0b3JNYXRjaGVzIDogU2VsZWN0b3JGYWlsc0xvY2FsbHk7CisgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIFNlbGVjdG9yTWF0Y2hlczsKKyAgICB9CiAKICAgICBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCBuZXh0Q29udGV4dChjb250ZXh0KTsKICAgICBuZXh0Q29udGV4dC5z
ZWxlY3RvciA9IGhpc3RvcnlTZWxlY3RvcjsKQEAgLTM4NCw2ICszOTAsMjUgQEAgU2VsZWN0b3JD
aGVja2VyOjpNYXRjaCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoKGNvbnN0IFNlbGVjdG9yQ2hlY2tp
bmdDb250ZXh0JiBjb24KICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnRQYXJlbnRTdHls
ZSA9IDA7CiAgICAgICAgICAgICByZXR1cm4gbWF0Y2gobmV4dENvbnRleHQsIGlnbm9yZUR5bmFt
aWNQc2V1ZG8pOwogICAgICAgICB9CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6U2hhZG93RGlzdHJpYnV0ZWQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIFZl
Y3RvcjxJbnNlcnRpb25Qb2ludCosIDg+IGluc2VydGlvblBvaW50czsKKyAgICAgICAgICAgIGZv
ciAoRWxlbWVudCogZWxlbWVudCA9IGNvbnRleHQuZWxlbWVudDsgZWxlbWVudDsgZWxlbWVudCA9
IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgeworICAgICAgICAgICAgICAgIGluc2VydGlvblBv
aW50cy5jbGVhcigpOworICAgICAgICAgICAgICAgIGNvbGxlY3RBbGxJbnNlcnRpb25Qb2ludHMo
ZWxlbWVudCwgaW5zZXJ0aW9uUG9pbnRzKTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGluc2VydGlvblBvaW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAg
ICAgICBuZXh0Q29udGV4dC5lbGVtZW50ID0gaW5zZXJ0aW9uUG9pbnRzW2ldOworICAgICAgICAg
ICAgICAgICAgICBuZXh0Q29udGV4dC5pc1N1YlNlbGVjdG9yID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnRTdHlsZSA9IDA7CisgICAgICAgICAgICAgICAg
ICAgIG5leHRDb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9IDA7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChtYXRjaChuZXh0Q29udGV4dCwgaWdub3JlRHluYW1pY1BzZXVkbykgPT0gU2VsZWN0
b3JNYXRjaGVzKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yTWF0Y2hl
czsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g
U2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CisgICAgICAgIH0KKyNlbmRpZgogICAgIH0KIAogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmlu
ZGV4IDJhOTdmYzhjNjJjYzJhYWM0NTYzNjc2YjAwMTYyOGZjNDZlNDMxMTUuLjg2ZWE3ZmYzNGZi
OTJmYTNiNjJkYzM2MjBmOTlmZjRhNTBhN2JiNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TZWxlY3RvckNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIGVudW0gTWF0Y2ggeyBTZWxl
Y3Rvck1hdGNoZXMsIFNlbGVjdG9yRmFpbHNMb2NhbGx5LCBTZWxlY3RvckZhaWxzQWxsU2libGlu
Z3MsIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5IH07CiAgICAgZW51bSBWaXNpdGVkTWF0Y2hUeXBl
IHsgVmlzaXRlZE1hdGNoRGlzYWJsZWQsIFZpc2l0ZWRNYXRjaEVuYWJsZWQgfTsKICAgICBlbnVt
IE1vZGUgeyBSZXNvbHZpbmdTdHlsZSA9IDAsIENvbGxlY3RpbmdSdWxlcywgUXVlcnlpbmdSdWxl
cywgU2hhcmluZ1J1bGVzIH07CisgICAgZW51bSBDcm9zc0JvdW5kYXJ5IHsgRG9lc05vdENyb3Nz
Qm91bmRhcnksIENyb3NzZXNCb3VuZGFyeSB9OwogCiAgICAgc3RydWN0IFNlbGVjdG9yQ2hlY2tp
bmdDb250ZXh0IHsKICAgICAgICAgLy8gSW5pdGlhbCBzZWxlY3RvciBjb25zdHJ1Y3RvcgpAQCAt
NjMsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAsIGlzU3ViU2VsZWN0b3IoZmFsc2Up
CiAgICAgICAgICAgICAsIGhhc1Njcm9sbGJhclBzZXVkbyhmYWxzZSkKICAgICAgICAgICAgICwg
aGFzU2VsZWN0aW9uUHNldWRvKGZhbHNlKQorICAgICAgICAgICAgLCBjcm9zc0JvdW5kYXJ5KERv
ZXNOb3RDcm9zc0JvdW5kYXJ5KQogICAgICAgICB7IH0KIAogICAgICAgICBDU1NTZWxlY3Rvciog
c2VsZWN0b3I7CkBAIC03NSw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc1N1YlNl
bGVjdG9yOwogICAgICAgICBib29sIGhhc1Njcm9sbGJhclBzZXVkbzsKICAgICAgICAgYm9vbCBo
YXNTZWxlY3Rpb25Qc2V1ZG87CisgICAgICAgIENyb3NzQm91bmRhcnkgY3Jvc3NCb3VuZGFyeTsK
ICAgICB9OwogCiAgICAgYm9vbCBtYXRjaGVzKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIGJvb2wg
aXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IgPSBmYWxzZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yRmlsdGVyLmNwcAppbmRleCBjZWFhNzY4MTQ5MDBjMGIzMWQzOTRjNGYyNmNjNGNiYjVl
MzVlOGRjLi42YjM5MDY1ZTgwOTYzODcwZGRiNTBkODVjOTdmNTNjMzhhMTc1NDA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAKQEAgLTE0OCw2ICsxNDgsOSBAQCB2b2lkIFNl
bGVjdG9yRmlsdGVyOjpjb2xsZWN0SWRlbnRpZmllckhhc2hlcyhjb25zdCBDU1NTZWxlY3Rvciog
c2VsZWN0b3IsIHVuc2lnbgogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpEaXJlY3RBZGphY2Vu
dDoKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2VudDoKICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6U2hhZG93RGVzY2VuZGFudDoKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKKyAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2hhZG93RGlzdHJpYnV0ZWQ6CisjZW5kaWYK
ICAgICAgICAgICAgIHNraXBPdmVyU3Vic2VsZWN0b3JzID0gdHJ1ZTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpEZXNjZW5kYW50OgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDUwYWQ2MTZmZDhkOTk5NzZkMDg3YjM0MmFkYjg4NDAy
YmMzN2VlY2QuLmEwNTM3NWNkMTdkYzlhMmZhNzBlZjIxMWRlN2NmMjBjMDAzODFjY2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTI1OCw2ICsyNTgsMjUgQEAgc3RhdGlj
IFN0eWxlUHJvcGVydHlTZXQqIHJpZ2h0VG9MZWZ0RGVjbGFyYXRpb24oKQogICAgIHJldHVybiBy
aWdodFRvTGVmdERlY2wuZ2V0KCk7CiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKK3ZvaWQg
U2hhZG93RGlzdHJpYnV0ZWRSdWxlczo6YWRkUnVsZShTdHlsZVJ1bGUqIHJ1bGUsIHNpemVfdCBz
ZWxlY3RvckluZGV4LCBDb250YWluZXJOb2RlKiBzY29wZSwgQWRkUnVsZUZsYWdzIGFkZFJ1bGVG
bGFncykKK3sKKyAgICBpZiAobV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAuY29udGFpbnMo
c2NvcGUpKQorICAgICAgICBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5nZXQoc2NvcGUp
LT5hZGRSdWxlKHJ1bGUsIHNlbGVjdG9ySW5kZXgsIGFkZFJ1bGVGbGFncyk7CisgICAgZWxzZSB7
CisgICAgICAgIE93blB0cjxSdWxlU2V0PiBydWxlU2V0Rm9yU2NvcGUgPSBhZG9wdFB0cihuZXcg
UnVsZVNldCgpKTsKKyAgICAgICAgcnVsZVNldEZvclNjb3BlLT5hZGRSdWxlKHJ1bGUsIHNlbGVj
dG9ySW5kZXgsIGFkZFJ1bGVGbGFncyk7CisgICAgICAgIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxl
U2V0TWFwLmFkZChzY29wZSwgcnVsZVNldEZvclNjb3BlLnJlbGVhc2UoKSk7CisgICAgfQorfQor
Cit2b2lkIFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXM6OmNvbGxlY3RNYXRjaFJlcXVlc3RzKGJvb2wg
aW5jbHVkZUVtcHR5UnVsZXMsIFZlY3RvcjxNYXRjaFJlcXVlc3Q+JiBtYXRjaFJlcXVlc3RzKQor
eworICAgIGZvciAoU2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwOjppdGVyYXRvciBpdCA9IG1f
c2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLmJlZ2luKCk7IGl0ICE9IG1fc2hhZG93RGlzdHJp
YnV0ZWRSdWxlU2V0TWFwLmVuZCgpOyArK2l0KQorICAgICAgICBtYXRjaFJlcXVlc3RzLmFwcGVu
ZChNYXRjaFJlcXVlc3QoaXQtPnZhbHVlLmdldCgpLCBpdC0+a2V5LCBpbmNsdWRlRW1wdHlSdWxl
cywgIFNlbGVjdG9yQ2hlY2tlcjo6Q3Jvc3Nlc0JvdW5kYXJ5KSk7Cit9CisKKyNlbmRpZgogCiBT
dHlsZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBtYXRj
aEF1dGhvckFuZFVzZXJTdHlsZXMpCiAgICAgOiBtX2hhc1VBQXBwZWFyYW5jZShmYWxzZSkKQEAg
LTM2NCw2ICszODMsOSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnJlc2V0QXV0aG9yU3R5bGUoKQog
ewogICAgIG1fYXV0aG9yU3R5bGUgPSBSdWxlU2V0OjpjcmVhdGUoKTsKICAgICBtX2F1dGhvclN0
eWxlLT5kaXNhYmxlQXV0b1Nocmlua1RvRml0KCk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisg
ICAgbV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVzLmNsZWFyKCk7CisjZW5kaWYKIH0KIAogdm9pZCBT
dHlsZVJlc29sdmVyOjphcHBlbmRBdXRob3JTdHlsZVNoZWV0cyh1bnNpZ25lZCBmaXJzdE5ldywg
Y29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBzdHlsZVNoZWV0cykKQEAgLTY0
MiwyMCArNjY0LDIwIEBAIGlubGluZSBib29sIE1hdGNoaW5nVUFSdWxlc1Njb3BlOjppc01hdGNo
aW5nVUFSdWxlcygpCiAKIGJvb2wgTWF0Y2hpbmdVQVJ1bGVzU2NvcGU6Om1fbWF0Y2hpbmdVQVJ1
bGVzID0gZmFsc2U7CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMo
UnVsZVNldCogcnVsZXMsIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwg
Y29uc3QgTWF0Y2hPcHRpb25zJiBvcHRpb25zKQordm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0
TWF0Y2hpbmdSdWxlcyhjb25zdCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdCwgaW50JiBmaXJz
dFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4KQogewotICAgIEFTU0VSVChydWxlcyk7Cisg
ICAgQVNTRVJUKG1hdGNoUmVxdWVzdC5ydWxlU2V0KTsKICAgICBBU1NFUlQobV9lbGVtZW50KTsK
IAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcHNldWRvSWQgPSBtX2VsZW1lbnQtPnNoYWRvd1Bz
ZXVkb0lkKCk7CiAgICAgaWYgKCFwc2V1ZG9JZC5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJU
KG1fc3R5bGVkRWxlbWVudCk7Ci0gICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChy
dWxlcy0+c2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKHBzZXVkb0lkLmltcGwoKSksIGZpcnN0UnVs
ZUluZGV4LCBsYXN0UnVsZUluZGV4LCBvcHRpb25zKTsKKyAgICAgICAgY29sbGVjdE1hdGNoaW5n
UnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5zaGFkb3dQc2V1ZG9FbGVtZW50UnVs
ZXMocHNldWRvSWQuaW1wbCgpKSwgbWF0Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1
bGVJbmRleCk7CiAgICAgfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGlmIChtX2Vs
ZW1lbnQtPndlYlZUVE5vZGVUeXBlKCkpCi0gICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9y
TGlzdChydWxlcy0+Y3VlUHNldWRvUnVsZXMoKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5k
ZXgsIG9wdGlvbnMpOworICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hS
ZXF1ZXN0LnJ1bGVTZXQtPmN1ZVBzZXVkb1J1bGVzKCksIG1hdGNoUmVxdWVzdCwgZmlyc3RSdWxl
SW5kZXgsIGxhc3RSdWxlSW5kZXgpOwogI2VuZGlmCiAgICAgLy8gQ2hlY2sgd2hldGhlciBvdGhl
ciB0eXBlcyBvZiBydWxlcyBhcmUgYXBwbGljYWJsZSBpbiB0aGUgY3VycmVudCB0cmVlIHNjb3Bl
LiBDcml0ZXJpYSBmb3IgdGhpczoKICAgICAvLyBhKSBpdCdzIGEgVUEgcnVsZQpAQCAtNjY0LDM4
ICs2ODYsMzkgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyhSdWxl
U2V0KiBydWxlcywgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW4KICAgICBUcmVlU2NvcGUqIHRyZWVT
Y29wZSA9IG1fZWxlbWVudC0+dHJlZVNjb3BlKCk7CiAgICAgaWYgKCFNYXRjaGluZ1VBUnVsZXNT
Y29wZTo6aXNNYXRjaGluZ1VBUnVsZXMoKQogICAgICAgICAmJiAhdHJlZVNjb3BlLT5hcHBseUF1
dGhvclN0eWxlcygpCi0gICAgICAgICYmICghb3B0aW9ucy5zY29wZSB8fCBvcHRpb25zLnNjb3Bl
LT50cmVlU2NvcGUoKSAhPSB0cmVlU2NvcGUpKQorICAgICAgICAmJiAoIW1hdGNoUmVxdWVzdC5z
Y29wZSB8fCBtYXRjaFJlcXVlc3Quc2NvcGUtPnRyZWVTY29wZSgpICE9IHRyZWVTY29wZSkKKyAg
ICAgICAgJiYgbWF0Y2hSZXF1ZXN0LmNyb3NzQm91bmRhcnkgPT0gU2VsZWN0b3JDaGVja2VyOjpE
b2VzTm90Q3Jvc3NCb3VuZGFyeSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2UgbmVlZCB0
byBjb2xsZWN0IHRoZSBydWxlcyBmb3IgaWQsIGNsYXNzLCB0YWcsIGFuZCBldmVyeXRoaW5nIGVs
c2UgaW50byBhIGJ1ZmZlciBhbmQKICAgICAvLyB0aGVuIHNvcnQgdGhlIGJ1ZmZlci4KICAgICBp
ZiAobV9lbGVtZW50LT5oYXNJRCgpKQotICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxp
c3QocnVsZXMtPmlkUnVsZXMobV9lbGVtZW50LT5pZEZvclN0eWxlUmVzb2x1dGlvbigpLmltcGwo
KSksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4LCBvcHRpb25zKTsKKyAgICAgICAgY29s
bGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5pZFJ1bGVzKG1f
ZWxlbWVudC0+aWRGb3JTdHlsZVJlc29sdXRpb24oKS5pbXBsKCkpLCBtYXRjaFJlcXVlc3QsIGZp
cnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsKICAgICBpZiAobV9zdHlsZWRFbGVtZW50ICYm
IG1fc3R5bGVkRWxlbWVudC0+aGFzQ2xhc3MoKSkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fc3R5bGVkRWxlbWVudC0+Y2xhc3NOYW1lcygpLnNpemUoKTsgKytpKQotICAgICAg
ICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KHJ1bGVzLT5jbGFzc1J1bGVzKG1fc3R5
bGVkRWxlbWVudC0+Y2xhc3NOYW1lcygpW2ldLmltcGwoKSksIGZpcnN0UnVsZUluZGV4LCBsYXN0
UnVsZUluZGV4LCBvcHRpb25zKTsKKyAgICAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9y
TGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+Y2xhc3NSdWxlcyhtX3N0eWxlZEVsZW1lbnQtPmNs
YXNzTmFtZXMoKVtpXS5pbXBsKCkpLCBtYXRjaFJlcXVlc3QsIGZpcnN0UnVsZUluZGV4LCBsYXN0
UnVsZUluZGV4KTsKICAgICB9CiAKICAgICBpZiAobV9lbGVtZW50LT5pc0xpbmsoKSkKLSAgICAg
ICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KHJ1bGVzLT5saW5rUHNldWRvQ2xhc3NSdWxl
cygpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgb3B0aW9ucyk7CisgICAgICAgIGNv
bGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+bGlua1BzZXVk
b0NsYXNzUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRl
eCk7CiAgICAgaWYgKG1fc2VsZWN0b3JDaGVja2VyLm1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKG1f
ZWxlbWVudCkpCi0gICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChydWxlcy0+Zm9j
dXNQc2V1ZG9DbGFzc1J1bGVzKCksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4LCBvcHRp
b25zKTsKLSAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QocnVsZXMtPnRhZ1J1bGVzKG1f
ZWxlbWVudC0+bG9jYWxOYW1lKCkuaW1wbCgpKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5k
ZXgsIG9wdGlvbnMpOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChydWxlcy0+dW5p
dmVyc2FsUnVsZXMoKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgsIG9wdGlvbnMpOwor
ICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQt
PmZvY3VzUHNldWRvQ2xhc3NSdWxlcygpLCBtYXRjaFJlcXVlc3QsIGZpcnN0UnVsZUluZGV4LCBs
YXN0UnVsZUluZGV4KTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1
ZXN0LnJ1bGVTZXQtPnRhZ1J1bGVzKG1fZWxlbWVudC0+bG9jYWxOYW1lKCkuaW1wbCgpKSwgbWF0
Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CisgICAgY29sbGVjdE1h
dGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT51bml2ZXJzYWxSdWxlcygp
LCBtYXRjaFJlcXVlc3QsIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsKIH0KIAotdm9p
ZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihSdWxlU2V0KiBy
dWxlcywgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4LCBjb25zdCBNYXRj
aE9wdGlvbnMmIG9wdGlvbnMpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1
bGVzRm9yUmVnaW9uKGNvbnN0IE1hdGNoUmVxdWVzdCYgbWF0Y2hSZXF1ZXN0LCBpbnQmIGZpcnN0
UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgpCiB7CiAgICAgaWYgKCFtX3JlZ2lvbkZvclN0
eWxpbmcpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVuc2lnbmVkIHNpemUgPSBydWxlcy0+bV9y
ZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cy5zaXplKCk7CisgICAgdW5zaWduZWQgc2l6ZSA9IG1h
dGNoUmVxdWVzdC5ydWxlU2V0LT5tX3JlZ2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzLnNpemUoKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIENTU1Nl
bGVjdG9yKiByZWdpb25TZWxlY3RvciA9IHJ1bGVzLT5tX3JlZ2lvblNlbGVjdG9yc0FuZFJ1bGVT
ZXRzLmF0KGkpLnNlbGVjdG9yOworICAgICAgICBDU1NTZWxlY3RvciogcmVnaW9uU2VsZWN0b3Ig
PSBtYXRjaFJlcXVlc3QucnVsZVNldC0+bV9yZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cy5hdChp
KS5zZWxlY3RvcjsKICAgICAgICAgaWYgKGNoZWNrUmVnaW9uU2VsZWN0b3IocmVnaW9uU2VsZWN0
b3IsIHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX3JlZ2lvbkZvclN0eWxpbmctPm5vZGUoKSkpKSB7
Ci0gICAgICAgICAgICBSdWxlU2V0KiByZWdpb25SdWxlcyA9IHJ1bGVzLT5tX3JlZ2lvblNlbGVj
dG9yc0FuZFJ1bGVTZXRzLmF0KGkpLnJ1bGVTZXQuZ2V0KCk7CisgICAgICAgICAgICBSdWxlU2V0
KiByZWdpb25SdWxlcyA9IG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5tX3JlZ2lvblNlbGVjdG9yc0Fu
ZFJ1bGVTZXRzLmF0KGkpLnJ1bGVTZXQuZ2V0KCk7CiAgICAgICAgICAgICBBU1NFUlQocmVnaW9u
UnVsZXMpOwotICAgICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMocmVnaW9uUnVsZXMsIGZp
cnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4LCBvcHRpb25zKTsKKyAgICAgICAgICAgIGNvbGxl
Y3RNYXRjaGluZ1J1bGVzKG1hdGNoUmVxdWVzdC5jbG9uZVdpdGgocmVnaW9uUnVsZXMpLCBmaXJz
dFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC03NTMs
OSArNzc2LDkgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaFNjb3BlZEF1dGhvclJ1bGVzKE1h
dGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHQKICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIE1hdGNoT3B0aW9ucyBvcHRp
b25zKGluY2x1ZGVFbXB0eVJ1bGVzLCBmcmFtZS5tX3Njb3BlKTsKLSAgICAgICAgICAgIGNvbGxl
Y3RNYXRjaGluZ1J1bGVzKGZyYW1lLm1fcnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhv
clJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOwotICAgICAgICAg
ICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24oZnJhbWUubV9ydWxlU2V0LCByZXN1bHQu
cmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSwgb3B0
aW9ucyk7CisgICAgICAgICAgICBNYXRjaFJlcXVlc3QgbWF0Y2hSZXF1ZXN0KGZyYW1lLm1fcnVs
ZVNldCwgZnJhbWUubV9zY29wZSwgaW5jbHVkZUVtcHR5UnVsZXMpOworICAgICAgICAgICAgY29s
bGVjdE1hdGNoaW5nUnVsZXMobWF0Y2hSZXF1ZXN0LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9y
UnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSk7CisgICAgICAgICAgICBjb2xsZWN0
TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtYXRjaFJlcXVlc3QsIHJlc3VsdC5yYW5nZXMuZmlyc3RB
dXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlKTsKICAgICAgICAgICAgIHNv
cnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhyZXN1bHQpOwogICAgICAgICB9CiAgICAgfQpAQCAt
Nzg5LDkgKzgxMiw4IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hIb3N0UnVsZXMoTWF0Y2hS
ZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKICAgICBpZiAobWF0Y2hlZFJ1
bGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTWF0Y2hPcHRpb25zIG9wdGlv
bnMoaW5jbHVkZUVtcHR5UnVsZXMsIG1fZWxlbWVudCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
bWF0Y2hlZFJ1bGVzLnNpemUoKTsgaSA+IDA7IC0taSkKLSAgICAgICAgY29sbGVjdE1hdGNoaW5n
UnVsZXMobWF0Y2hlZFJ1bGVzLmF0KGktMSksIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxl
LCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKKyAgICAgICAgY29sbGVj
dE1hdGNoaW5nUnVsZXMoTWF0Y2hSZXF1ZXN0KG1hdGNoZWRSdWxlcy5hdChpLTEpLCBtX2VsZW1l
bnQsIGluY2x1ZGVFbXB0eVJ1bGVzKSwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJl
c3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUpOwogICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRS
dWxlcyhyZXN1bHQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKQEAgLTgwOCw5
ICs4MzAsMTUgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaEF1dGhvclJ1bGVzKE1hdGNoUmVz
dWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gTWF0Y2ggZ2xvYmFsIGF1dGhvciBydWxlcy4KLSAgICBNYXRjaE9wdGlvbnMgb3B0aW9u
cyhpbmNsdWRlRW1wdHlSdWxlcyk7Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXMobV9hdXRob3JT
dHlsZS5nZXQoKSwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMu
bGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVn
aW9uKG1fYXV0aG9yU3R5bGUuZ2V0KCksIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCBy
ZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKKyAgICBNYXRjaFJlcXVlc3Qg
bWF0Y2hSZXF1ZXN0KG1fYXV0aG9yU3R5bGUuZ2V0KCksIDAsIGluY2x1ZGVFbXB0eVJ1bGVzKTsK
KyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhtYXRjaFJlcXVlc3QsIHJlc3VsdC5yYW5nZXMuZmly
c3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlKTsKKyAgICBjb2xsZWN0
TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtYXRjaFJlcXVlc3QsIHJlc3VsdC5yYW5nZXMuZmlyc3RB
dXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlKTsKKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKKyAgICBWZWN0b3I8TWF0Y2hSZXF1ZXN0PiBtYXRjaFJlcXVlc3RzOworICAgIG1f
c2hhZG93RGlzdHJpYnV0ZWRSdWxlcy5jb2xsZWN0TWF0Y2hSZXF1ZXN0cyhpbmNsdWRlRW1wdHlS
dWxlcywgbWF0Y2hSZXF1ZXN0cyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXRjaFJl
cXVlc3RzLnNpemUoKTsgKytpKQorICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhtYXRjaFJl
cXVlc3RzW2ldLCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5s
YXN0QXV0aG9yUnVsZSk7CisjZW5kaWYKICAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMo
cmVzdWx0KTsKIAogICAgIG1hdGNoU2NvcGVkQXV0aG9yUnVsZXMocmVzdWx0LCBpbmNsdWRlRW1w
dHlSdWxlcyk7CkBAIC04MjQsOCArODUyLDkgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaFVz
ZXJSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQogICAg
IG1fbWF0Y2hlZFJ1bGVzLmNsZWFyKCk7CiAKICAgICByZXN1bHQucmFuZ2VzLmxhc3RVc2VyUnVs
ZSA9IHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcy5zaXplKCkgLSAxOwotICAgIGNvbGxlY3RNYXRj
aGluZ1J1bGVzKG1fdXNlclN0eWxlLmdldCgpLCByZXN1bHQucmFuZ2VzLmZpcnN0VXNlclJ1bGUs
IHJlc3VsdC5yYW5nZXMubGFzdFVzZXJSdWxlLCBpbmNsdWRlRW1wdHlSdWxlcyk7Ci0gICAgY29s
bGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24obV91c2VyU3R5bGUuZ2V0KCksIHJlc3VsdC5yYW5n
ZXMuZmlyc3RVc2VyUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0VXNlclJ1bGUsIGluY2x1ZGVFbXB0
eVJ1bGVzKTsKKyAgICBNYXRjaFJlcXVlc3QgbWF0Y2hSZXF1ZXN0KG1fdXNlclN0eWxlLmdldCgp
LCAwLCBpbmNsdWRlRW1wdHlSdWxlcyk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMobWF0Y2hS
ZXF1ZXN0LCByZXN1bHQucmFuZ2VzLmZpcnN0VXNlclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdFVz
ZXJSdWxlKTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtYXRjaFJlcXVlc3Qs
IHJlc3VsdC5yYW5nZXMuZmlyc3RVc2VyUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0VXNlclJ1bGUp
OwogCiAgICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKHJlc3VsdCk7CiB9CkBAIC04MzUs
MTkgKzg2NCwxOSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoVUFSdWxlcyhNYXRjaFJlc3Vs
dCYgcmVzdWx0LCBSdWxlU2V0KiBydWxlcykKICAgICBtX21hdGNoZWRSdWxlcy5jbGVhcigpOwog
ICAgIAogICAgIHJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSA9IHJlc3VsdC5tYXRjaGVkUHJvcGVy
dGllcy5zaXplKCkgLSAxOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKHJ1bGVzLCByZXN1bHQu
cmFuZ2VzLmZpcnN0VUFSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGZhbHNlKTsKKyAg
ICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhNYXRjaFJlcXVlc3QocnVsZXMsIDAsIGZhbHNlKSwgcmVz
dWx0LnJhbmdlcy5maXJzdFVBUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxlKTsKIAogICAg
IHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhyZXN1bHQpOwogfQogCi12b2lkIFN0eWxlUmVz
b2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+
KiBydWxlcywgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4LCBjb25zdCBN
YXRjaE9wdGlvbnMmIG9wdGlvbnMpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGlu
Z1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBydWxlcywgY29uc3QgTWF0Y2hS
ZXF1ZXN0JiBtYXRjaFJlcXVlc3QsIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJ
bmRleCkKIHsKICAgICBpZiAoIXJ1bGVzKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBJbiBz
b21lIGNhc2VzIHdlIG1heSBlbmQgdXAgbG9va2luZyB1cCBzdHlsZSBmb3IgcmFuZG9tIGVsZW1l
bnRzIGluIHRoZSBtaWRkbGUgb2YgYSByZWN1cnNpdmUgdHJlZSByZXNvbHZlLgogICAgIC8vIEFu
Y2VzdG9yIGlkZW50aWZpZXIgZmlsdGVyIHdvbid0IGJlIHVwLXRvLWRhdGUgaW4gdGhhdCBjYXNl
IGFuZCB3ZSBjYW4ndCB1c2UgdGhlIGZhc3QgcGF0aC4KLSAgICBib29sIGNhblVzZUZhc3RSZWpl
Y3QgPSBtX3NlbGVjdG9yRmlsdGVyLnBhcmVudFN0YWNrSXNDb25zaXN0ZW50KG1fcGFyZW50Tm9k
ZSk7CisgICAgYm9vbCBjYW5Vc2VGYXN0UmVqZWN0ID0gbV9zZWxlY3RvckZpbHRlci5wYXJlbnRT
dGFja0lzQ29uc2lzdGVudChtX3BhcmVudE5vZGUpICYmIG1hdGNoUmVxdWVzdC5jcm9zc0JvdW5k
YXJ5ID09IFNlbGVjdG9yQ2hlY2tlcjo6RG9lc05vdENyb3NzQm91bmRhcnk7CiAKICAgICB1bnNp
Z25lZCBzaXplID0gcnVsZXMtPnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7CkBAIC04NTcsMTAgKzg4NiwxMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNv
bGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBydWxlcywg
aQogCiAgICAgICAgIFN0eWxlUnVsZSogcnVsZSA9IHJ1bGVEYXRhLnJ1bGUoKTsKICAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbE1hdGNoUnVsZShkb2N1bWVudCgpLCBydWxlLCB0aGlzKTsKLSAgICAgICAg
aWYgKHJ1bGVNYXRjaGVzKHJ1bGVEYXRhLCBvcHRpb25zLnNjb3BlKSkgeworICAgICAgICBpZiAo
cnVsZU1hdGNoZXMocnVsZURhdGEsIG1hdGNoUmVxdWVzdC5zY29wZSwgbWF0Y2hSZXF1ZXN0LmNy
b3NzQm91bmRhcnkpKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUgcnVsZSBoYXMgbm8gcHJvcGVy
dGllcyB0byBhcHBseSwgdGhlbiBpZ25vcmUgaXQgaW4gdGhlIG5vbi1kZWJ1ZyBtb2RlLgogICAg
ICAgICAgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcyA9IHJ1bGUtPnByb3Bl
cnRpZXMoKTsKLSAgICAgICAgICAgIGlmICghcHJvcGVydGllcyB8fCAocHJvcGVydGllcy0+aXNF
bXB0eSgpICYmICFvcHRpb25zLmluY2x1ZGVFbXB0eVJ1bGVzKSkgeworICAgICAgICAgICAgaWYg
KCFwcm9wZXJ0aWVzIHx8IChwcm9wZXJ0aWVzLT5pc0VtcHR5KCkgJiYgIW1hdGNoUmVxdWVzdC5p
bmNsdWRlRW1wdHlSdWxlcykpIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZE1hdGNoUnVsZShjb29raWUsIGZhbHNlKTsKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIH0KQEAgLTEwNjEsNyArMTA5MCw3IEBAIGJvb2wgU3R5bGVSZXNv
bHZlcjo6c3R5bGVTaGFyaW5nQ2FuZGlkYXRlTWF0Y2hlc1J1bGVTZXQoUnVsZVNldCogcnVsZVNl
dCkKIAogICAgIGludCBmaXJzdFJ1bGVJbmRleCA9IC0xLCBsYXN0UnVsZUluZGV4ID0gLTE7CiAg
ICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0TW9kZShTZWxlY3RvckNoZWNrZXI6OlNoYXJpbmdSdWxl
cyk7Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXMocnVsZVNldCwgZmlyc3RSdWxlSW5kZXgsIGxh
c3RSdWxlSW5kZXgsIGZhbHNlKTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhNYXRjaFJlcXVl
c3QocnVsZVNldCwgMCwgZmFsc2UpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CiAg
ICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0TW9kZShTZWxlY3RvckNoZWNrZXI6OlJlc29sdmluZ1N0
eWxlKTsKICAgICBpZiAobV9tYXRjaGVkUnVsZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0yMjM1LDcgKzIyNjQsNyBAQCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBTdHls
ZVJlc29sdmVyOjpwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCBQcwogICAg
IHJldHVybiBtX3J1bGVMaXN0LnJlbGVhc2UoKTsKIH0KIAotaW5saW5lIGJvb2wgU3R5bGVSZXNv
bHZlcjo6cnVsZU1hdGNoZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCBjb25zdCBDb250YWlu
ZXJOb2RlKiBzY29wZSkKK2lubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6OnJ1bGVNYXRjaGVzKGNv
bnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUsIFNlbGVj
dG9yQ2hlY2tlcjo6Q3Jvc3NCb3VuZGFyeSBjcm9zc0JvdW5kYXJ5KQogewogICAgIG1fZHluYW1p
Y1BzZXVkbyA9IE5PUFNFVURPOwogCkBAIC0yMjYwLDYgKzIyODksNyBAQCBpbmxpbmUgYm9vbCBT
dHlsZVJlc29sdmVyOjpydWxlTWF0Y2hlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0
IENvbnRhaW5lcgogICAgIGNvbnRleHQuZWxlbWVudFN0eWxlID0gc3R5bGUoKTsKICAgICBjb250
ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9IG1fcGFyZW50Tm9kZSA/IG1fcGFyZW50Tm9kZS0+cmVu
ZGVyU3R5bGUoKSA6IDA7CiAgICAgY29udGV4dC5zY29wZSA9IHNjb3BlOworICAgIGNvbnRleHQu
Y3Jvc3NCb3VuZGFyeSA9IGNyb3NzQm91bmRhcnk7CiAgICAgY29udGV4dC5wc2V1ZG9TdHlsZSA9
IG1fcHNldWRvU3R5bGU7CiAgICAgU2VsZWN0b3JDaGVja2VyOjpNYXRjaCBtYXRjaCA9IG1fc2Vs
ZWN0b3JDaGVja2VyLm1hdGNoKGNvbnRleHQsIG1fZHluYW1pY1BzZXVkbyk7CiAgICAgaWYgKG1h
dGNoICE9IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaGVzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmgKaW5kZXggMzc1MGE1ZGY1OWU1NmM4MzdkZjJiYjRhM2QzMGJkMWJlYTg3MDJm
MC4uNzRkNWVlMzRiNzhjOGQ0ZmNlOWRkMDJmZjM5NzlkYTAwNmE3MGFmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiTWVkaWFRdWVy
eUV4cC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUnVsZUZlYXR1cmUu
aCIKKyNpbmNsdWRlICJSdWxlU2V0LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oIgogI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgIlNlbGVjdG9yRmls
dGVyLmgiCkBAIC03Niw3ICs3Nyw2IEBAIGNsYXNzIE1lZGlhUXVlcnlFdmFsdWF0b3I7CiBjbGFz
cyBOb2RlOwogY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xhc3MgUnVsZURhdGE7Ci1jbGFzcyBSdWxl
U2V0OwogY2xhc3MgU2V0dGluZ3M7CiBjbGFzcyBTdGF0aWNDU1NSdWxlTGlzdDsKIGNsYXNzIFN0
eWxlQnVpbGRlcjsKQEAgLTEzMSw2ICsxMzEsMzIgQEAgZW51bSBSdWxlTWF0Y2hpbmdCZWhhdmlv
ciB7CiAgICAgTWF0Y2hPbmx5VXNlckFnZW50UnVsZXMsCiB9OwogCitjbGFzcyBNYXRjaFJlcXVl
c3QgeworcHVibGljOgorICAgIE1hdGNoUmVxdWVzdChSdWxlU2V0KiBydWxlU2V0LCBjb25zdCBD
b250YWluZXJOb2RlKiBzY29wZSwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcywgU2VsZWN0b3JDaGVj
a2VyOjpDcm9zc0JvdW5kYXJ5IGNyb3NzQm91bmRhcnkgPSBTZWxlY3RvckNoZWNrZXI6OkRvZXNO
b3RDcm9zc0JvdW5kYXJ5KQorICAgICAgICA6IHJ1bGVTZXQocnVsZVNldCkKKyAgICAgICAgLCBz
Y29wZShzY29wZSkKKyAgICAgICAgLCBpbmNsdWRlRW1wdHlSdWxlcyhpbmNsdWRlRW1wdHlSdWxl
cykKKyAgICAgICAgLCBjcm9zc0JvdW5kYXJ5KGNyb3NzQm91bmRhcnkpIHsgfQorICAgIGNvbnN0
IFJ1bGVTZXQqIHJ1bGVTZXQ7CisgICAgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGU7CisgICAg
Y29uc3QgYm9vbCBpbmNsdWRlRW1wdHlSdWxlczsKKyAgICBjb25zdCBTZWxlY3RvckNoZWNrZXI6
OkNyb3NzQm91bmRhcnkgY3Jvc3NCb3VuZGFyeTsKKyAgICBNYXRjaFJlcXVlc3QgY2xvbmVXaXRo
KFJ1bGVTZXQqIG5ld1J1bGVTZXQpIGNvbnN0IHsgcmV0dXJuIE1hdGNoUmVxdWVzdChuZXdSdWxl
U2V0LCBzY29wZSwgaW5jbHVkZUVtcHR5UnVsZXMsIGNyb3NzQm91bmRhcnkpOyB9Cit9OworCisj
aWYgRU5BQkxFKFNIQURPV19ET00pCitjbGFzcyBTaGFkb3dEaXN0cmlidXRlZFJ1bGVzIHsKK3B1
YmxpYzoKKyAgICB2b2lkIGFkZFJ1bGUoU3R5bGVSdWxlKiwgc2l6ZV90IHNlbGVjdG9ySW5kZXgs
IENvbnRhaW5lck5vZGUqIHNjb3BlLCBBZGRSdWxlRmxhZ3MpOworICAgIHZvaWQgY29sbGVjdE1h
dGNoUmVxdWVzdHMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcywgVmVjdG9yPE1hdGNoUmVxdWVzdD4m
KTsKKyAgICB2b2lkIGNsZWFyKCkgeyBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5jbGVh
cigpOyB9Citwcml2YXRlOgorICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBDb250YWluZXJOb2Rl
KiwgT3duUHRyPFJ1bGVTZXQ+ID4gU2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwOworICAgIFNo
YWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcCBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcDsK
K307CisjZW5kaWYKKwogLy8gVGhpcyBjbGFzcyBzZWxlY3RzIGEgUmVuZGVyU3R5bGUgZm9yIGEg
Z2l2ZW4gZWxlbWVudCBiYXNlZCBvbiBhIGNvbGxlY3Rpb24gb2Ygc3R5bGVzaGVldHMuCiBjbGFz
cyBTdHlsZVJlc29sdmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHlsZVJlc29sdmVy
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0yOTksNiArMzI1LDEwIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgbG9hZFBlbmRpbmdSZXNvdXJjZXMoKTsKIAorI2lmIEVOQUJMRShTSEFET1df
RE9NKQorICAgIFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXMmIHNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXMo
KSB7IHJldHVybiBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZXM7IH0KKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIC8vIFRoaXMgZnVuY3Rpb24gZml4ZXMgdXAgdGhlIGRlZmF1bHQgZm9udCBzaXplIGlm
IGl0IGRldGVjdHMgdGhhdCB0aGUgY3VycmVudCBnZW5lcmljIGZvbnQgZmFtaWx5IGhhcyBjaGFu
Z2VkLiAtZHdoCiAgICAgdm9pZCBjaGVja0ZvckdlbmVyaWNGYW1pbHlDaGFuZ2UoUmVuZGVyU3R5
bGUqLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOwpAQCAtMzQyLDEyICszNzIsNiBAQCBwcml2
YXRlOgogICAgICAgICBib29sIGlzQ2FjaGVhYmxlOwogICAgIH07CiAKLSAgICBzdHJ1Y3QgTWF0
Y2hPcHRpb25zIHsKLSAgICAgICAgTWF0Y2hPcHRpb25zKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMs
IGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlID0gMCkgOiBzY29wZShzY29wZSksIGluY2x1ZGVF
bXB0eVJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKSB7IH0KLSAgICAgICAgY29uc3QgQ29udGFpbmVy
Tm9kZSogc2NvcGU7Ci0gICAgICAgIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXM7Ci0gICAgfTsKLQog
ICAgIHN0YXRpYyB2b2lkIGFkZE1hdGNoZWRQcm9wZXJ0aWVzKE1hdGNoUmVzdWx0JiwgY29uc3Qg
U3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcywgU3R5bGVSdWxlKiA9IDAsIHVuc2lnbmVkIGxp
bmtNYXRjaFR5cGUgPSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoQWxsLCBib29sIGluUmVnaW9uUnVs
ZSA9IGZhbHNlKTsKICAgICB2b2lkIGFkZEVsZW1lbnRTdHlsZVByb3BlcnRpZXMoTWF0Y2hSZXN1
bHQmLCBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiwgYm9vbCBpc0NhY2hlYWJsZSA9IHRydWUpOwog
CkBAIC0zNTgsMTQgKzM4MiwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgbWF0Y2hVc2VyUnVsZXMo
TWF0Y2hSZXN1bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKICAgICB2b2lkIG1hdGNoU2Nv
cGVkQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKICAg
ICB2b2lkIG1hdGNoSG9zdFJ1bGVzKE1hdGNoUmVzdWx0JiwgYm9vbCBpbmNsdWRlRW1wdHlSdWxl
cyk7Ci0gICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhSdWxlU2V0KiwgaW50JiBmaXJzdFJ1
bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmKTsKLSAgICB2
b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKFJ1bGVTZXQqLCBpbnQmIGZpcnN0UnVs
ZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYpOwotICAgIHZv
aWQgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qLCBp
bnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9u
cyYpOworCisgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhjb25zdCBNYXRjaFJlcXVlc3Qm
LCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgpOworICAgIHZvaWQgY29s
bGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24oY29uc3QgTWF0Y2hSZXF1ZXN0JiwgaW50JiBmaXJz
dFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4KTsKKyAgICB2b2lkIGNvbGxlY3RNYXRjaGlu
Z1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiwgY29uc3QgTWF0Y2hSZXF1ZXN0
JiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4KTsKKwogICAgIGJvb2wg
ZmFzdFJlamVjdFNlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJikgY29uc3Q7CiAgICAgdm9pZCBzb3J0
TWF0Y2hlZFJ1bGVzKCk7CiAgICAgdm9pZCBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoTWF0
Y2hSZXN1bHQmKTsKIAotICAgIGJvb2wgcnVsZU1hdGNoZXMoY29uc3QgUnVsZURhdGEmLCBjb25z
dCBDb250YWluZXJOb2RlKiBzY29wZSk7CisgICAgYm9vbCBydWxlTWF0Y2hlcyhjb25zdCBSdWxl
RGF0YSYsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlLCBTZWxlY3RvckNoZWNrZXI6OkNyb3Nz
Qm91bmRhcnkgPSBTZWxlY3RvckNoZWNrZXI6OkRvZXNOb3RDcm9zc0JvdW5kYXJ5KTsKICAgICBi
b29sIGNoZWNrUmVnaW9uU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHJlZ2lvblNlbGVjdG9yLCBFbGVt
ZW50KiByZWdpb25FbGVtZW50KTsKICAgICB2b2lkIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoY29u
c3QgTWF0Y2hSZXN1bHQmLCBjb25zdCBFbGVtZW50Kik7CiAgICAgZW51bSBTdHlsZUFwcGxpY2F0
aW9uUGFzcyB7CkBAIC0zOTYsNiArNDIyLDggQEAgcHJpdmF0ZToKICAgICBPd25QdHI8UnVsZVNl
dD4gbV9hdXRob3JTdHlsZTsKICAgICBPd25QdHI8UnVsZVNldD4gbV91c2VyU3R5bGU7CiAKKyAg
ICBTaGFkb3dEaXN0cmlidXRlZFJ1bGVzIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlczsKKwogICAg
IFJ1bGVGZWF0dXJlU2V0IG1fZmVhdHVyZXM7CiAgICAgT3duUHRyPFJ1bGVTZXQ+IG1fc2libGlu
Z1J1bGVTZXQ7CiAgICAgT3duUHRyPFJ1bGVTZXQ+IG1fdW5jb21tb25BdHRyaWJ1dGVSdWxlU2V0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKaW5kZXggNzQy
NDNlOWNhYTQ1MzdjNTk0YTkyOTBiNDY4MTFlM2I2MDA1YmNlNi4uN2ViODM3MjIzZDhjMTc4NDNl
ZDM3YTViYWExMWUxYzc3YjEwYjBlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9J
bnNlcnRpb25Qb2ludC5oCkBAIC0xNjEsNiArMTYxLDI5IEBAIGlubGluZSBFbGVtZW50U2hhZG93
KiBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbihjb25zdCBOb2RlKiBub2RlKQogCiBJbnNl
cnRpb25Qb2ludCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKik7CiAKK2lubGluZSB2
b2lkIGNvbGxlY3RBbGxJbnNlcnRpb25Qb2ludHMoY29uc3QgTm9kZSogcHJvamVjdGVkTm9kZSwg
VmVjdG9yPEluc2VydGlvblBvaW50KiwgOD4mIHJlc3VsdHMpCit7CisgICAgY29uc3QgTm9kZSog
Y3VycmVudCA9IHByb2plY3RlZE5vZGU7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYg
KEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKGN1
cnJlbnQpKSB7CisgICAgICAgICAgICBzaGFkb3ctPmVuc3VyZURpc3RyaWJ1dGlvbigpOworICAg
ICAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRlZFRvID0gc2hhZG93LT5kaXN0cmli
dXRvcigpLmZpbmRJbnNlcnRpb25Qb2ludEZvcihwcm9qZWN0ZWROb2RlKSkgeworICAgICAgICAg
ICAgICAgIGN1cnJlbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBw
ZW5kKGluc2VydGVkVG8pOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGlmIChOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlRm9yRGlz
dHJpYnV0aW9uKGN1cnJlbnQpKSB7CisgICAgICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGlu
c2VydGVkVG8gPSBwYXJlbnQtPmlzU2hhZG93Um9vdCgpID8gU2NvcGVDb250ZW50RGlzdHJpYnV0
aW9uOjphc3NpZ25lZFRvKHRvU2hhZG93Um9vdChwYXJlbnQpKSA6IDApIHsKKyAgICAgICAgICAg
ICAgICBjdXJyZW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVu
ZChpbnNlcnRlZFRvKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBJbnNlcnRpb25Qb2ludF9oCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTc4NjU4ODY0ZjYx
OGFmOTgwZTQyYmJjMGZlZTE2ZDRkZGRiY2QwOS4uM2M4Y2Q0MmE2ODVkNTU2NTMyZjlkZTc5OTI4
MmU2NTYwOTNlNGY2NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEzLTAxLTA2ICBIYXlhdG8g
SXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gSW1wbGVt
ZW50cyBhICc6OmRpc3RyaWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIxNjkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRlZC1wc2V1ZG8tZWxlbWVudC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50
LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFs
bC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJp
YnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50
LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQtZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LW5lc3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbm8tbWF0Y2gtZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50LW5vLW1hdGNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJl
cHJvamVjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJp
YnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1l
bGVtZW50LXN1cHBvcnQtc2VsZWN0b3ItZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0
b3IuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC1leHBlY3RlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNl
ZC1pbi1zZWxlY3Rvci1saXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC13aXRoLWFueS1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
d2l0aC1hbnkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTAxLTE0ICBEb21pbmljIENv
b25leSAgIDxkb21pbmljY0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBVbnJl
dmlld2VkIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjRjMjZlMmI1NmM0YzZhN2M3MGM2Y2ZkNThhMjI3ZjhlMGY0NDY0ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3Qi
PgorICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50LWV4cGVjdGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtZm9yLXNoYWRvdy1lbGVtZW50LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRjMjZlMmI1
NmM0YzZhN2M3MGM2Y2ZkNThhMjI3ZjhlMGY0NDY0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hh
ZG93LWVsZW1lbnQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDkgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4K
KyAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgIDwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFk
b3ctZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkZGMzN2M1YzZjNDg4NjdkZjVjYjgxNDcyOGEz
NjlmZDhkMjNlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50Lmh0bWwKQEAg
LTAsMCArMSwyMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdz
aGFkb3c6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3Zh
ciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3gu
YXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAg
ICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoJ2dyZWVuJykpKSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAg
ICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdz
aGFkb3cnKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNo
LWFsbC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlh
NjBiNzJlMGRlOTE3NzYyYjJhMmE0YzVlYzNlZjlmNTY2ZWI0OTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
bWF0Y2gtYWxsLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgor
ICAgIDxkaXY+CisgICAgICBub3JtYWwKKyAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+
Z3JlZW48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgbm9ybWFsCisgICAgICA8
ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY5ZjJmZjJiNDEzN2EwYzVhZWVkYzg1ZTg5MTJmMmVjMzRlYjJmYmIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ct
ZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9k
aXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
c3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3Ry
aWJ1dGVkKC5oZWxsbykgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAg
IGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNo
YWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdu
b3JtYWwnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFz
cyc6ICdoZWxsbyd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2
Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgn
bm9ybWFsJyksCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xh
c3MnOiAnaGVsbG8nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtZGVzY2Vu
ZGFudC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjMTg3ODU2ZmVlMThmNGU0MjdmMjFhNzcx
YjMyZDExMzE4ZjUzYjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtZGVzY2VuZGFudC1leHBlY3Rl
ZC5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4K
KzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8cD4KKyAgICAgIDxk
aXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgICA8L3A+CisgIDwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWRlc2NlbmRhbnQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1k
ZXNjZW5kYW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmU0MDQzZTg1NWE1MDhkNDhiNWEwNjAwZTBmNjg2
Njk4ODMwMDI4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50Lmh0bWwKQEAgLTAs
MCArMSwyMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250
ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdikgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIg
c2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFw
cGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgIGNyZWF0
ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdw
Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdn
cmVlbicpKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3Rl
ZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LW5lc3RlZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1MTgzNDQy
YTA3NmM3ZjgxYTljNTQyMTMxZTc5ZmI3NzZmMDExY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVk
LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
Kzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYg
aWQ9Im5lc3RlZC1ob3N0Ij4KKyAgICAgIHRleHQxCisgICAgICA8ZGl2PgorICAgICAgICB0ZXh0
MgorICAgICAgICA8ZGl2PgorICAgICAgICAgIHRleHQzCisgICAgICAgICAgPGRpdiBzdHlsZT0i
Y29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgICAgICAgIDxkaXY+bm9ybWFsPC9kaXY+Cisg
ICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzE2N2EzZWZlY2EwZjQwOGE2ZDM4NzU2OTI5N2VmZTYyMzU4ODBkNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1
ZG8tZWxlbWVudC1uZXN0ZWQuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3Jp
cHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwor
c2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2RpdiBjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVk
KGRpdiBjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdi5ncmVlbikpIHsgY29sb3I6IGdy
ZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJv
eCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAn
aG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ25lc3RlZC1ob3N0J30sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCd0ZXh0MScpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3RleHQyJyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7
J3NlbGVjdCc6ICdkaXYnfSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2RpdicsIHsnY2xhc3MnOiAnZ3JlZW4nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3RleHQzJyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHt9KSkpKSwK
KyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2dyZWVuJ30sCisgICAg
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSksCisg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uby1tYXRjaC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5vLW1hdGNoLWV4
cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA1ZmVmZjc1Yzc5YWVkZTViZjhlNDliYmVkMGI3MTU1
ZGNlNjgwZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uby1tYXRjaC1leHBlY3RlZC5odG1sCkBAIC0wLDAg
KzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRi
b3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8cD5ub3JtYWw8L3A+CisgICAgPGRpdj4KKyAg
ICAgIDxkaXY+bm9ybWFsPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LW5vLW1hdGNoLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbm8tbWF0Y2guaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
YWUzOWNlYzM0NzU5MzdhMWVkNTNkMTU4MmU2ZmUzYzhiMjAxZDYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LW5vLW1hdGNoLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFy
IHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0
eWxlLmlubmVySFRNTCA9ICd0aGlzLWRvZXMtbm90LW1hdGNoOjotd2Via2l0LWRpc3RyaWJ1dGVk
KGRpdikgeyBjb2xvcjogZ3JlZW47IH0nOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ3A6Oi13
ZWJraXQtZGlzdHJpYnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CitzaGFkb3dTdHlsZS5p
bm5lckhUTUwgPSAnZGl2Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdikgeyBjb2xvcjogZ3JlZW47
IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7
CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0
J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBz
aGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgncCcsIHt9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpKSwK
KyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpKSwKKyAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QtY2hpbGQnfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVj
dGlvbi1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2OWM5MTI3ZGU1ZTcwM2I3YTFhNWM5MzY5
NGVhN2NkMGIxMjQ4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0
bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRp
diBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYgaWQ9Imhvc3QyIj4K
KyAgICAgIDxkaXYgc3R5bGU9J2NvbG9yOiBncmVlbic+CisgICAgICAgIGdyZWVuCisgICAgICA8
L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
cmVwcm9qZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTczNWZhNzA5
ZTg2MWIwZGI0YWU0Y2M0NjRmZjdhZmExYTE5ZTBjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2pl
Y3Rpb24uaHRtbApAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hh
ZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUu
aW5uZXJIVE1MID0gJ2NvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoLmZvbykgeyBjb2xvcjog
Z3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5k
Ym94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6
ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdDInfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnLmZvbyd9KSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2NsYXNzJzogJ2Zvbyd9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC1zY29wZWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQtZXhwZWN0ZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43NDhkOWUyZGUzZTZmZTRiZmQ4OTgwYjYzZDAzOWJjNTRkODgzMWEyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LXNjb3BlZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlk
PSJob3N0Ij4KKyAgICA8ZGl2Pm5vcm1hbDwvZGl2PgorICAgIDxkaXY+CisgICAgICA8ZGl2IHN0
eWxlPSdjb2xvcjogZ3JlZW4nPmdyZWVuPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNjb3BlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNjb3BlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRhYTcxYWJjNzkwOTYzMzAwYTMyNDdlODU2ODUwYTgzNjEzNTg4NWMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtc2NvcGVkLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0Pgor
dmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRv
d1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdikgeyBj
b2xvcjogZ3JlZW47IH0nOworc2hhZG93U3R5bGUuc2V0QXR0cmlidXRlKCdzY29wZWQnLCB0cnVl
KTsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOwor
c2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9
LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnI2hvc3QtY2hpbGQxJ30pLAorICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcjaG9zdC1jaGlsZDInfSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUpKSwKKyAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QtY2hpbGQxJ30sCisgICAgICAgICAgICAgICAgICAg
ICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpLAorICAgICAgICAgICAgICBj
cmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdC1jaGlsZDInfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSkpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LXN1cHBvcnQtc2VsZWN0b3ItZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yM2RlZGUxMzNiODYy
ZGQxNGM5MmU2MDVjNGExYmVkMjhlMzdhZGFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2Vs
ZWN0b3ItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAg
PGRpdj4KKyAgICAgIG5vcm1hbAorICAgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVl
bjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXY+CisgICAgICBub3JtYWwKKyAgICAgIDxkaXY+
bm9ybWFsPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1l
bGVtZW50LXN1cHBvcnQtc2VsZWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2ZkYmQ4NmVmNzgyYjE0MWNmZjU5YmEzYzE2NWJhNTdlYjNlNzg1ZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9t
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+
Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5
bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1
dGVkKGRpdi5oZWxsbyBkaXYpIHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgK
KyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVh
dGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAg
ICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydjbGFzcyc6ICdoZWxsbyd9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJ25vcm1hbCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgnbm9ybWFsJykpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1s
aXN0LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI4MjUzZTRkYWI3NDA1NjU4MzhkODQyNTBi
YmE5YmQ5MDRkOTkyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QtZXhw
ZWN0ZWQuaHRtbApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJv
ZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdiBzdHls
ZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgIDxwPm5vcm1hbDwvcD4KKyAgICA8cCBz
dHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvcD4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1s
aXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA2ZDU0OGY2YmEzOTFjYjc0YTgyMzE2ZWRiOTZkYzVkMmU3
MWYzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QuaHRtbApAQCAtMCww
ICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRl
bnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2KSwgcCB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3Zh
ciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3gu
YXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAg
ICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxl
LAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JyksCisgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ3AnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJ2dyZWVuJykpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ3AnLCB7J2NsYXNzJzogJ2hl
bGxvJ30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgn
bm9ybWFsJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC13aXRo
LWFueS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTcz
Nzk5NDNkZjY0ODkwMzI0ZGMwMmQ5ZGUzMDE4NTFhMTExODY1MQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC13
aXRoLWFueS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2PgorICAgIDxkaXY+bm9y
bWFsPC9kaXY+CisgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICA8
L2Rpdj4KKyAgPGRpdj4KKyAgICA8ZGl2Pm5vcm1hbDwvZGl2PgorICAgIDxkaXYgc3R5bGU9ImNv
bG9yOiByZWQiPnJlZDwvZGl2PgorICA8L2Rpdj4KKyAgPGRpdj4KKyAgICA8ZGl2Pm5vcm1hbDwv
ZGl2PgorICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBibHVlIj5ibHVlPC9kaXY+CisgIDwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtd2l0aC1hbnkuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zY2EyMzVhNDNkYjNmN2IzYjc5YjlhZTRjYzk3YTgzN2U4YzZhOGU3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LXdpdGgtYW55Lmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8
c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxl
Jyk7CitzaGFkb3dTdHlsZTEuaW5uZXJIVE1MID0gJyo6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2
KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzaGFkb3dTdHlsZTIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUyLmlubmVySFRNTCA9ICdjb250ZW50Ojot
d2Via2l0LWRpc3RyaWJ1dGVkKCopIHsgY29sb3I6IHJlZDsgfSc7CisKK3ZhciBzaGFkb3dTdHls
ZTMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUzLmlubmVy
SFRNTCA9ICcqOjotd2Via2l0LWRpc3RyaWJ1dGVkKCopIHsgY29sb3I6IGJsdWU7IH0nOworCit2
YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94
LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgIGNy
ZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZTEsCisgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSksCisgICAgICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2NvbnRlbnQnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
e30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3Jl
ZW4nKSkpKTsKKworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHt9
LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hh
ZG93U3R5bGUyLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykp
LAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoJ3JlZCcpKSkpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVh
dGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAg
ICAgICAgICAgICAgc2hhZG93U3R5bGUzLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdk
aXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgnbm9ybWFsJykpLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jykp
LAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2JsdWUnKSkpKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjQzY2ExYzhj
OTRmMzI2OGI2NGY3MGVkZDIxMjZiMDdiMGRmMDFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50Lmh0bWwKQEAg
LTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdj
b250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdikgeyBjb2xvcjogZ3JlZW47IH0nOworCit2
YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94
LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgIGNy
ZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCdncmVlbicpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182936</attachid>
            <date>2013-01-16 01:31:04 -0800</date>
            <delta_ts>2013-01-16 20:47:06 -0800</delta_ts>
            <desc>Rebased on a factored patch.</desc>
            <filename>bug-82169-20130116182805.patch</filename>
            <type>text/plain</type>
            <size>61353</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5ODQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzA5NzVkZGRlOTkxMzE2
ZmZmOWVhMThmMmI5ZTA5NTBiY2JhY2YyZi4uYmJlOTMyYTBlNWRkZjdmNWI2MzExN2Y5ZTA4NmRl
YmJiOGFlY2NhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAxMy0wMS0xNiAgSGF5
YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NoYWRvdyBET01dIElt
cGxlbWVudHMgYSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxlbWVudC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMTY5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBhICc6OmRpc3Ry
aWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50LgorICAgICAgICBTZWUgdGhlIFNoYWRvdyBET00gc3Bl
Y2lmaWNhdGlvbiBmb3IgdGhlIGRldGFpbC4KKworICAgICAgICAjIEZJWE1FOiBVcGRhdGUgVVJM
IGFmdGVyIHRoZSBzcGVjIGlzIHVwZGF0ZWQuCisgICAgICAgIGh0dHA6Ly9kdmNzLnczLm9yZy9o
Zy93ZWJjb21wb25lbnRzL3Jhdy1maWxlL3RpcC9zcGVjL3NoYWRvdy9pbmRleC5odG1sI3NlbGVj
dGluZy1ub2Rlcy1kaXN0cmlidXRlZC10by1pbnNlcnRpb24tcG9pbnRzCisKKyAgICAgICAgRm9y
IGV4YW1wbGUsIHN1cHBvc2Ugd2UgYXJlIGdpdmVuIHRoZSBmb2xsb3dpbmcgRE9NIHRyZWUgYW5k
IHNoYWRvdyB0cmVlOgorCisgICAgICAgIC0gPEE+CisgICAgICAgICAgLSA8Qj4KKyAgICAgICAg
ICAtIDxDPgorCisgICAgICAgIFtBJ3MgU2hhZG93Um9vdF0KKyAgICAgICAgICA8Qz4KKyAgICAg
ICAgICAtIDxzdHlsZT4KKyAgICAgICAgICAgICAgRCBjb250ZW50OjpkaXN0cmlidXRlZChCKSB7
IGNvbG9yOiBncmVlbjsgfQorICAgICAgICAgIC0gPEQ+CisgICAgICAgICAgICAtIDxjb250ZW50
PgorCisgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIHN0eWxlIHJ1bGUgZGVmaW5lZCBpbiBzaGFk
b3cgdHJlZSBtYXRjaGVzIG5vZGUgJ0InLgorCisgICAgICAgIEEgJzo6ZGlzdHJpYnV0ZWQoKScg
cHNldWRvIGVsZW1lbnQgY2FuIG5vdCBiZSBhIHBzZXVkbyBjbGFzcyBzaW5jZQorICAgICAgICBh
biBpbnRlcnNlY3Rpb24gYmV0d2VlbiBtYXRjaGVkX2VsZW1lbnRzKHNvbWVfc2VsZWN0b3IpIGFu
ZAorICAgICAgICBtYXRjaGVkX2VsZW1lbnRzKHNvbWVfc2VsZWN0b3I6OmRpc3RyaWJ1dGVkKC4u
LikpIGlzIGFsd2F5cyBhbgorICAgICAgICBlbXB0eSBzZXQuCisKKyAgICAgICAgQSAnOjpkaXN0
cmlidXRlZCgpJyBwc2V1ZG8gZWxlbWVudCBpcyB0aGUgZmlyc3QtZXZlciAqZnVuY3Rpb25hbCoK
KyAgICAgICAgcHNldWRvIGVsZW1lbnQgd2hpY2ggdGFrZXMgcGFyYW1ldGVyLiAgSXQncyBhbHNv
IHRoZSBmaXJzdCBDU1MKKyAgICAgICAgcnVsZSB3aGljaCBjcm9zc2VzIHRoZSBzaGFkb3cgYm91
bmRhcnkgZnJvbSBhIHNoYWRvdyB0cmVlIHRvIHRoZQorICAgICAgICB0cmVlIG9mIGl0cyBzaGFk
b3cgaG9zdC4gVGhhdCBtZWFucyBhICc6OmRpc3RyaWJ1dGVkKCknIHBzZXVkbworICAgICAgICBl
bGVtZW50IGlzIGRlZmluZWQgaW4gc2hhZG93IHRyZWUsIGJ1dCB0aGUgbm9kZSB3aGljaCBpcyBt
YXRjaGVkCisgICAgICAgIGluIHRoZSBydWxlIGlzIG91dHNpZGUgb2YgdGhlIHNoYWRvdyB0cmVl
LiBUaGVyZWZvcmUsIHdlIGNhbm5vdAorICAgICAgICBwcmVkaWN0IHdoZXJlIHRoZSBtYXRjaGVk
IG5vZGUgd2lsbCBiZSBiZWZvcmVoYW5kLiAgQ3VycmVudCBDU1MKKyAgICAgICAgaW1wbGVtZW50
YXRpb24gYXNzdW1lcyB0aGUgZmluYWwgdGFyZ2V0IGlzIGFwcGxpZWQgaW4gdGhlIGN1cnJlbnQK
KyAgICAgICAgc2NvcGUuCisKKyAgICAgICAgVG8gb3ZlcmNvbWUgdGhpcyBpc3N1ZSwgU3R5bGVS
ZXNvbHZlciBub3cgaGFzIGEgaW5zdGFuY2Ugb2YKKyAgICAgICAgU2hhZG93RGlzdHJpYnV0ZWRS
dWxlcyBjbGFzcy4gIEEgc3R5bGUgcnVsZSB3aWxsIGJlIHN0b3JlZCBpbiB0aGlzCisgICAgICAg
IGluc3RhbmNlIGlmIHRoZSBydWxlIGluY2x1ZGVzIGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRv
IGVsZW1lbnQuCisgICAgICAgIFRoaXMgY2xhc3MgYWxzbyBrZWVwcyB0cmFjayBvZiBlYWNoIFJ1
bGVTZXQgYnkgbWFwcGluZyBpdCB3aXRoIGEKKyAgICAgICAgc2NvcGUgd2hlcmUgdGhlIHJ1bGUg
d2FzIG9yaWdpbmFsbHkgZGVmaW5lZC4gSW4gdGhlIGV4YW1wbGUsIHRoZQorICAgICAgICBzY29w
ZSBpcyAnQycuICBUaGUgc2NvcGUgaXMgdXNlZCB0byBjaGVjayB3aGV0aGVyIHRoZSBsZWZ0LW1v
c3QKKyAgICAgICAgbWF0Y2hlZCBlbGVtZW50IChpbiB0aGUgZXhhbXBsZSwgaXQncyBhIG5vZGUg
J0QnKSBleGlzdHMgaW4gdGhlCisgICAgICAgIHNjb3BlLgorCisgICAgICAgIEludGVybmFsbHks
IGEgJzo6ZGlzdHJpYnV0ZWQnIHBzZXVkbyBlbGVtZW50IGlzIHJlcHJlc2VudGVkIGJ5IGEKKyAg
ICAgICAgbmV3bHkgaW50cm9kdWNlZCAnU2hhZG93RGlzdHJpYnV0ZWQnIHJlbGF0aW9uLiAgVGhh
dCBtYWtlcyBhbgorICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBTZWxlY3RvckNoZWNrZXI6OmNo
ZWNrU2VsZWN0b3IoKSBtdWNoIHNpbXBsZXIuCisgICAgICAgIEEgdHJhbnNmb3JtYXRpb24gZnJv
bSBhIGRpc3RyaWJ1dGVkIHBzZXVkbyBlbGVtZW50IHRvIGEKKyAgICAgICAgU2hhZG93RGlzdHJp
YnV0ZWQgaXMgZG9uZSBpbiBwYXJzaW5nIHN0YWdlIG9mIENTUy4KKworICAgICAgICBTaW5jZSAn
OjpkaXN0cmlidXRlZCgpJyBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZSwgaXQncyBhY3R1YWxs
eQorICAgICAgICBwcmVmaXhlZCB3aXRoICctd2Via2l0LScgYW5kIGd1YXJkZWQgYnkgU0hBRE9X
X0RPTSBmbGFnLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQt
cHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LW1hdGNoLWRlc2NlbmRhbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbm8tbWF0Y2guaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJl
cHJvamVjdGlvbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3No
YWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11
c2VkLWluLXNlbGVjdG9yLWxpc3QuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55Lmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC5odG1sCisKKyAgICAg
ICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpkZXRlY3REYXNoVG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpyZXdyaXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnJld3JpdGVTcGVjaWZpZXJzKToKKyAgICAgICAg
KiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgICogY3NzL0NTU1BhcnNlclZhbHVlcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6Q1NTUGFyc2VyU2VsZWN0b3IpOgor
ICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuaDoKKyAgICAgICAgKENTU1BhcnNlclNlbGVj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpmdW5jdGlvbkFyZ3Vt
ZW50U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnNldEZ1
bmN0aW9uQXJndW1lbnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxl
Y3Rvcjo6aXNEaXN0cmlidXRlZFBzZXVkb0VsZW1lbnQpOgorICAgICAgICAqIGNzcy9DU1NTZWxl
Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6cHNldWRvSWQpOgorICAg
ICAgICAoV2ViQ29yZTo6bmFtZVRvUHNldWRvVHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3I6OnNlbGVjdG9yVGV4dCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6CisgICAg
ICAgIChDU1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NlbGVjdG9yOjppc0Rpc3RyaWJ1dGVkUHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTZWxlY3Rvcjo6aXNTaGFkb3dEaXN0cmlidXRlZCk6CisgICAgICAgICogY3NzL0NT
U1NlbGVjdG9yTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNlbGVjdG9y
SGFzU2hhZG93RGlzdHJpYnV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JIYXNTaGFk
b3dEaXN0cmlidXRlZDo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rv
ckxpc3Q6Omhhc1NoYWRvd0Rpc3RyaWJ1dGVkQXQpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rv
ckxpc3QuaDoKKyAgICAgICAgKENTU1NlbGVjdG9yTGlzdCk6CisgICAgICAgICogY3NzL1J1bGVT
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6YWRkQ2hpbGRSdWxlcyk6CisgICAg
ICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rv
ckNoZWNrZXI6Om1hdGNoKToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0OjpT
ZWxlY3RvckNoZWNraW5nQ29udGV4dCk6CisgICAgICAgIChTZWxlY3RvckNoZWNraW5nQ29udGV4
dCk6CisgICAgICAgICogY3NzL1NlbGVjdG9yRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0SWRlbnRpZmllckhhc2hlcyk6CisgICAgICAgICogY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dEaXN0cmlidXRlZFJ1bGVzOjphZGRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd0Rpc3RyaWJ1dGVkUnVsZXM6OmNvbGxlY3RNYXRjaFJlcXVlc3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnJlc2V0QXV0aG9yU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6cnVsZU1hdGNoZXMpOgorICAgICAgICAqIGNzcy9TdHlsZVJl
c29sdmVyLmg6CisgICAgICAgIChNYXRjaFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWF0
Y2hSZXF1ZXN0OjpNYXRjaFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWF0Y2hSZXF1ZXN0
OjpjbG9uZVdpdGgpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTaGFkb3dEaXN0cmli
dXRlZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXM6OmNs
ZWFyKToKKyAgICAgICAgKFN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6c2hhZG93RGlzdHJpYnV0ZWRSdWxlcyk6CisgICAgICAgICogaHRtbC9zaGFkb3cv
SW5zZXJ0aW9uUG9pbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RBbGxJbnNlcnRpb25Q
b2ludHMpOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTMtMDEtMTYgIFJ5b3N1a2UgTml3YSAg
PHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgR2V0IHJpZCBvZiBOb2RlOjpjcmVhdGVSYXJl
RGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbiBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KaW5kZXggNTY4MTRjZGM2YmUwODQxMmMy
NDY0MWRkMjBlZGNiYmI2NzhjODU3Yy4uNjQ5NzhiYjVmZjJkYmE0MDQ4NWNmYWY2MThhOWMwNDY1
ODg3M2NkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCkBAIC02MSw3ICs2MSwxMSBA
QCBzdGF0aWMgaW5saW5lIGludCBjc3N5eWVycm9yKHZvaWQqLCBjb25zdCBjaGFyKikKIAogJX0K
IAorI2lmIEVOQUJMRV9TSEFET1dfRE9NCislZXhwZWN0IDY2CisjZWxzZQogJWV4cGVjdCA2NQor
I2VuZGlmCiAKICVub25hc3NvYyBMT1dFU1RfUFJFQwogCkBAIC0xNzcsNiArMTgxLDcgQEAgc3Rh
dGljIGlubGluZSBpbnQgY3NzeXllcnJvcih2b2lkKiwgY29uc3QgY2hhciopCiAldG9rZW4gPHN0
cmluZz4gQ1VFRlVOQ1RJT04KICNlbmRpZgogJXRva2VuIDxzdHJpbmc+IE5PVEZVTkNUSU9OCisl
dG9rZW4gPHN0cmluZz4gRElTVFJJQlVURURGVU5DVElPTgogJXRva2VuIDxzdHJpbmc+IENBTENG
VU5DVElPTgogJXRva2VuIDxzdHJpbmc+IE1JTkZVTkNUSU9OCiAldG9rZW4gPHN0cmluZz4gTUFY
RlVOQ1RJT04KQEAgLTExNDQsMTIgKzExNDksMTIgQEAgc2ltcGxlX3NlbGVjdG9yOgogICAgIHwg
ZWxlbWVudF9uYW1lIHNwZWNpZmllcl9saXN0IHsKICAgICAgICAgJCQgPSAkMjsKICAgICAgICAg
aWYgKCQkKQotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnRO
YW1lKG51bGxBdG9tLCAkMSwgJCQpOworICAgICAgICAgICAgJCQgPSBwYXJzZXItPnJld3JpdGVT
cGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKG51bGxBdG9tLCAkMSwgJCQpOwogICAgIH0KICAgICB8
IHNwZWNpZmllcl9saXN0IHsKICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgaWYgKCQkKQotICAg
ICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKG51bGxBdG9t
LCBzdGFyQXRvbSwgJCQpOworICAgICAgICAgICAgJCQgPSBwYXJzZXItPnJld3JpdGVTcGVjaWZp
ZXJzV2l0aEVsZW1lbnROYW1lKG51bGxBdG9tLCBzdGFyQXRvbSwgJCQpOwogICAgIH0KICAgICB8
IG5hbWVzcGFjZV9zZWxlY3RvciBlbGVtZW50X25hbWUgewogICAgICAgICAkJCA9IHBhcnNlci0+
Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwpAQCAtMTE1OCwxMiArMTE2MywxMiBAQCBzaW1wbGVf
c2VsZWN0b3I6CiAgICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1lIHNwZWNpZmll
cl9saXN0IHsKICAgICAgICAgJCQgPSAkMzsKICAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAg
cGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKCQxLCAkMiwgJCQpOworICAg
ICAgICAgICAgJCQgPSBwYXJzZXItPnJld3JpdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKCQx
LCAkMiwgJCQpOwogICAgIH0KICAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBzcGVjaWZpZXJfbGlz
dCB7CiAgICAgICAgICQkID0gJDI7CiAgICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNl
ci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSgkMSwgc3RhckF0b20sICQkKTsKKyAg
ICAgICAgICAgICQkID0gcGFyc2VyLT5yZXdyaXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSgk
MSwgc3RhckF0b20sICQkKTsKICAgICB9CiAgIDsKIApAQCAtMTIwOCw3ICsxMjEzLDcgQEAgc3Bl
Y2lmaWVyX2xpc3Q6CiAgICAgICAgIGlmICghJDIpCiAgICAgICAgICAgICAkJCA9IDA7CiAgICAg
ICAgIGVsc2UgaWYgKCQxKQotICAgICAgICAgICAgJCQgPSBwYXJzZXItPnVwZGF0ZVNwZWNpZmll
cnMoJDEsICQyKTsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5yZXdyaXRlU3BlY2lmaWVycygk
MSwgJDIpOwogICAgIH0KICAgICB8IHNwZWNpZmllcl9saXN0IGVycm9yIHsKICAgICAgICAgJCQg
PSAwOwpAQCAtMTM1NSw2ICsxMzYwLDE5IEBAIHBzZXVkbzoKICAgICAgICAgICAgICQkID0gMDsK
ICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEVfU0hBRE9XX0RPTQorICAgIHwgJzonICc6JyBESVNU
UklCVVRFREZVTkNUSU9OIG1heWJlX3NwYWNlIHNlbGVjdG9yIG1heWJlX3NwYWNlICcpJyB7Cisg
ICAgICAgIGlmICghJDUpCisgICAgICAgICAgICAkJCA9IDA7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAg
ICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCk7CisgICAgICAgICAg
ICAkJC0+c2V0RnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKCQ1KTsKKyAgICAgICAgICAgICQzLmxv
d2VyKCk7CisgICAgICAgICAgICAkJC0+c2V0VmFsdWUoJDMpOworICAgICAgICB9CisgICAgfQor
I2VuZGlmCiAgICAgLy8gdXNlIGJ5IDotd2Via2l0LWFueS4KICAgICAvLyBGSVhNRTogc2hvdWxk
IHdlIHN1cHBvcnQgZ2VuZXJpYyBzZWxlY3RvcnMgaGVyZSBvciBqdXN0IHNpbXBsZV9zZWxlY3Rv
cnM/CiAgICAgLy8gVXNlIHNpbXBsZV9zZWxlY3Rvcl9saXN0IGZvciBub3cgdG8gbWF0Y2ggLW1v
ei1hbnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDM4MzRmMDQ2MzRjNGFmMjk3YTUw
N2E1MzAxYTA5YTViNTkwM2ExNTMuLjE4ZDIyYjNjODg2ZDFhNjlmNTI2NDNjYTJlZDU1NjQ5YzVi
YWQ1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC05ODk1LDYgKzk4OTUsMTAgQEAg
aW5saW5lIHZvaWQgQ1NTUGFyc2VyOjpkZXRlY3REYXNoVG9rZW4oaW50IGxlbmd0aCkKICNlbmRp
ZgogICAgIH0gZWxzZSBpZiAobGVuZ3RoID09IDEyICYmIGlzRXF1YWxUb0NTU0lkZW50aWZpZXIo
bmFtZSArIDEsICJ3ZWJraXQtY2FsYyIpKQogICAgICAgICBtX3Rva2VuID0gQ0FMQ0ZVTkNUSU9O
OworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGVsc2UgaWYgKGxlbmd0aCA9PSAxOSAmJiBp
c0VxdWFsVG9DU1NJZGVudGlmaWVyKG5hbWUgKyAxLCAid2Via2l0LWRpc3RyaWJ1dGVkIikpCisg
ICAgICAgIG1fdG9rZW4gPSBESVNUUklCVVRFREZVTkNUSU9OOworI2VuZGlmCiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgpAQCAtMTA4MzksMTYgKzEwODQzLDMyIEBAIFF1
YWxpZmllZE5hbWUgQ1NTUGFyc2VyOjpkZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoY29uc3QgQXRv
bWljU3RyaW5nJiBwcmVmaXgsIGNvCiAgICAgcmV0dXJuIFF1YWxpZmllZE5hbWUocHJlZml4LCBs
b2NhbE5hbWUsIG1fc3R5bGVTaGVldC0+ZGV0ZXJtaW5lTmFtZXNwYWNlKHByZWZpeCkpOwogfQog
Ci12b2lkIENTU1BhcnNlcjo6dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWVzcGFjZVByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50
TmFtZSwgQ1NTUGFyc2VyU2VsZWN0b3IqIHNwZWNpZmllcnMpCitDU1NQYXJzZXJTZWxlY3Rvciog
Q1NTUGFyc2VyOjpyZXdyaXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWVzcGFjZVByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50TmFtZSwg
Q1NTUGFyc2VyU2VsZWN0b3IqIHNwZWNpZmllcnMpCiB7CiAgICAgQXRvbWljU3RyaW5nIGRldGVy
bWluZWROYW1lc3BhY2UgPSBuYW1lc3BhY2VQcmVmaXggIT0gbnVsbEF0b20gJiYgbV9zdHlsZVNo
ZWV0ID8gbV9zdHlsZVNoZWV0LT5kZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNwYWNlUHJlZml4KSA6
IG1fZGVmYXVsdE5hbWVzcGFjZTsKICAgICBRdWFsaWZpZWROYW1lIHRhZyA9IFF1YWxpZmllZE5h
bWUobmFtZXNwYWNlUHJlZml4LCBlbGVtZW50TmFtZSwgZGV0ZXJtaW5lZE5hbWVzcGFjZSk7CisK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBpZiAoc3BlY2lmaWVycy0+aXNEaXN0cmlidXRl
ZFBzZXVkb0VsZW1lbnQoKSkgeworICAgICAgICBDU1NQYXJzZXJTZWxlY3RvciogYXJndW1lbnRT
ZWxlY3RvciA9IHNwZWNpZmllcnMtPmZ1bmN0aW9uQXJndW1lbnRTZWxlY3RvcigpOworICAgICAg
ICBBU1NFUlQoYXJndW1lbnRTZWxlY3Rvcik7CisgICAgICAgIENTU1BhcnNlclNlbGVjdG9yKiBl
bmQgPSBhcmd1bWVudFNlbGVjdG9yOworICAgICAgICB3aGlsZSAoZW5kLT50YWdIaXN0b3J5KCkp
CisgICAgICAgICAgICBlbmQgPSBlbmQtPnRhZ0hpc3RvcnkoKTsKKyAgICAgICAgT3duUHRyPENT
U1BhcnNlclNlbGVjdG9yPiBlbGVtZW50TmFtZVNlbGVjdG9yID0gYWRvcHRQdHIobmV3IENTU1Bh
cnNlclNlbGVjdG9yKTsKKyAgICAgICAgZWxlbWVudE5hbWVTZWxlY3Rvci0+c2V0VGFnKHRhZyk7
CisgICAgICAgIGVuZC0+c2V0VGFnSGlzdG9yeShlbGVtZW50TmFtZVNlbGVjdG9yLnJlbGVhc2Uo
KSk7CisgICAgICAgIGVuZC0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6OlNoYWRvd0Rpc3RyaWJ1
dGVkKTsKKyAgICAgICAgcmV0dXJuIGFyZ3VtZW50U2VsZWN0b3I7CisgICAgfQorI2VuZGlmCisK
ICAgICBpZiAoIXNwZWNpZmllcnMtPmlzQ3VzdG9tUHNldWRvRWxlbWVudCgpKSB7CiAjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQogICAgICAgICBpZiAoIShzcGVjaWZpZXJzLT5wc2V1ZG9UeXBlKCkg
PT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0N1ZSkpCiAjZW5kaWYKICAgICAgICAgICAgIHNwZWNpZmll
cnMtPnNldFRhZyh0YWcpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBzcGVjaWZp
ZXJzOwogICAgIH0KIAogICAgIENTU1BhcnNlclNlbGVjdG9yKiBsYXN0U2hhZG93RGVzY2VuZGFu
dCA9IHNwZWNpZmllcnM7CkBAIC0xMDg2MSw3ICsxMDg4MSw3IEBAIHZvaWQgQ1NTUGFyc2VyOjp1
cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNw
YWNlUHJlCiAKICAgICBpZiAobGFzdFNoYWRvd0Rlc2NlbmRhbnQtPnRhZ0hpc3RvcnkoKSkgewog
ICAgICAgICBsYXN0U2hhZG93RGVzY2VuZGFudC0+dGFnSGlzdG9yeSgpLT5zZXRUYWcodGFnKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gc3BlY2lmaWVyczsKICAgICB9CiAKICAg
ICAvLyBGb3Igc2hhZG93LUlEIHBzZXVkby1lbGVtZW50cyB0byBiZSBjb3JyZWN0bHkgbWF0Y2hl
ZCwgdGhlIFNoYWRvd0Rlc2NlbmRhbnQgY29tYmluYXRvciBoYXMgdG8gYmUgdXNlZC4KQEAgLTEw
ODcwLDkgKzEwODkwLDEwIEBAIHZvaWQgQ1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzV2l0aEVs
ZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlCiAgICAgZWxlbWVudE5h
bWVTZWxlY3Rvci0+c2V0VGFnKHRhZyk7CiAgICAgbGFzdFNoYWRvd0Rlc2NlbmRhbnQtPnNldFRh
Z0hpc3RvcnkoZWxlbWVudE5hbWVTZWxlY3Rvci5yZWxlYXNlKCkpOwogICAgIGxhc3RTaGFkb3dE
ZXNjZW5kYW50LT5zZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6U2hhZG93RGVzY2VuZGFudCk7Cisg
ICAgcmV0dXJuIHNwZWNpZmllcnM7CiB9CiAKLUNTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXI6
OnVwZGF0ZVNwZWNpZmllcnMoQ1NTUGFyc2VyU2VsZWN0b3IqIHNwZWNpZmllcnMsIENTU1BhcnNl
clNlbGVjdG9yKiBuZXdTcGVjaWZpZXIpCitDU1NQYXJzZXJTZWxlY3RvciogQ1NTUGFyc2VyOjpy
ZXdyaXRlU3BlY2lmaWVycyhDU1NQYXJzZXJTZWxlY3Rvciogc3BlY2lmaWVycywgQ1NTUGFyc2Vy
U2VsZWN0b3IqIG5ld1NwZWNpZmllcikKIHsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAg
aWYgKG5ld1NwZWNpZmllci0+aXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkgfHwgbmV3U3BlY2lmaWVy
LT5wc2V1ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0N1ZSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5oCmluZGV4IDU3ZTdjYzQxNGE5MDk1ZWE5YzNkZGI0NmUzNDI3ZTEwMzcxYTlmNGYuLmNj
NGY4MmM4YjZmM2NmMjMzYmJkYTRkYWMzZGJmYjM3OTNkMjA2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmgKQEAgLTMxMSw4ICszMTEsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZE5hbWVzcGFj
ZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiB1cmkpOwog
ICAgIFF1YWxpZmllZE5hbWUgZGV0ZXJtaW5lTmFtZUluTmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0
cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSk7Ci0gICAgdm9pZCB1
cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNw
YWNlUHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnROYW1lLCBDU1NQYXJzZXJTZWxl
Y3RvciopOwotICAgIENTU1BhcnNlclNlbGVjdG9yKiB1cGRhdGVTcGVjaWZpZXJzKENTU1BhcnNl
clNlbGVjdG9yKiwgQ1NTUGFyc2VyU2VsZWN0b3IqKTsKKyAgICBDU1NQYXJzZXJTZWxlY3Rvciog
cmV3cml0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
c3BhY2VQcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudE5hbWUsIENTU1BhcnNlclNl
bGVjdG9yKik7CisgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIHJld3JpdGVTcGVjaWZpZXJzKENTU1Bh
cnNlclNlbGVjdG9yKiwgQ1NTUGFyc2VyU2VsZWN0b3IqKTsKIAogICAgIHZvaWQgaW52YWxpZEJs
b2NrSGl0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKaW5kZXggZDIz
Yjg1ODVkNWQ3YmI4ZWIwZjI2ODIzNGI2ZWQwNmE1ODgxZGYyNy4uZTVhMGIzNzdlN2VkNzYwNWQy
ZjkyNjc0ZjNmOGE2ZjM3OWZhZjI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlclZhbHVlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVl
cy5jcHAKQEAgLTE0Niw2ICsxNDYsOSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXJW
YWx1ZTo6Y3JlYXRlQ1NTVmFsdWUoKQogCiBDU1NQYXJzZXJTZWxlY3Rvcjo6Q1NTUGFyc2VyU2Vs
ZWN0b3IoKQogICAgIDogbV9zZWxlY3RvcihhZG9wdFB0cihmYXN0TmV3PENTU1NlbGVjdG9yPigp
KSkKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAsIG1fZnVuY3Rpb25Bcmd1bWVudFNlbGVj
dG9yKDApCisjZW5kaWYKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlclZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCmlu
ZGV4IDEzMDFiMWNlMGUxMTM3MjNjY2Y4MjE2MjhlZTA1ZTJlMzEwMjM2N2IuLjJjZDQwOTk0ZjAx
ZmJmZWU3Y2U2Y2IwMTA4M2Y0MTQ5NTM5YTE0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
VmFsdWVzLmgKQEAgLTE4Niw2ICsxODYsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZG9wdFNl
bGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4mIHNlbGVjdG9y
VmVjdG9yKTsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIENTU1BhcnNlclNlbGVjdG9y
KiBmdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uQXJn
dW1lbnRTZWxlY3RvcjsgfQorICAgIHZvaWQgc2V0RnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKENT
U1BhcnNlclNlbGVjdG9yKiBzZWxlY3RvcikgeyBtX2Z1bmN0aW9uQXJndW1lbnRTZWxlY3RvciA9
IHNlbGVjdG9yOyB9CisgICAgYm9vbCBpc0Rpc3RyaWJ1dGVkUHNldWRvRWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2VsZWN0b3ItPmlzRGlzdHJpYnV0ZWRQc2V1ZG9FbGVtZW50KCk7IH0KKyNl
bmRpZgorCiAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgcHNldWRvVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2VsZWN0b3ItPnBzZXVkb1R5cGUoKTsgfQogICAgIGJvb2wgaXNDdXN0b21Qc2V1
ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvci0+aXNDdXN0b21Qc2V1ZG9FbGVt
ZW50KCk7IH0KIApAQCAtMjAwLDYgKzIwNiw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgT3du
UHRyPENTU1NlbGVjdG9yPiBtX3NlbGVjdG9yOwogICAgIE93blB0cjxDU1NQYXJzZXJTZWxlY3Rv
cj4gbV90YWdIaXN0b3J5OworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIENTU1BhcnNlclNl
bGVjdG9yKiBtX2Z1bmN0aW9uQXJndW1lbnRTZWxlY3RvcjsKKyNlbmRpZgogfTsKIAogaW5saW5l
IGJvb2wgQ1NTUGFyc2VyU2VsZWN0b3I6Omhhc1NoYWRvd0Rlc2NlbmRhbnQoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXggNWE2ZWNjYWZiOTQyYzBkNmZhNzNhNjJiNmZm
Yzc0MjFmM2NhYTllYy4uN2Q4NDc0YjUzMTNlYWY5NDdkOWY4MDQ2NWE3MDRhNmZjYjJhZmE0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCkBAIC0yMjcsNiArMjI3LDkgQEAgUHNldWRv
SWQgQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVkb1R5cGUgdHlwZSkKICNpZiBFTkFCTEUoSUZS
QU1FX1NFQU1MRVNTKQogICAgIGNhc2UgUHNldWRvU2VhbWxlc3NEb2N1bWVudDoKICNlbmRpZgor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGNhc2UgUHNldWRvRGlzdHJpYnV0ZWQ6CisjZW5k
aWYKICAgICAgICAgcmV0dXJuIE5PUFNFVURPOwogICAgIGNhc2UgUHNldWRvTm90UGFyc2VkOgog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTMxNiw2ICszMTksOSBAQCBzdGF0aWMg
SGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGU+KiBuYW1l
VG9Qc2V1ZG9UeXBlTWFwKAogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNlYW1sZXNzRG9jdW1lbnQsICgiLXdlYmtpdC1z
ZWFtbGVzcy1kb2N1bWVudCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
ICNlbmRpZgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBkaXN0cmlidXRlZCwgKCItd2Via2l0LWRpc3RyaWJ1dGVkKCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyNlbmRpZgogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpblJhbmdlLCAoImluLXJhbmdlIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBvdXRPZlJhbmdlLCAoIm91dC1vZi1yYW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKIApAQCAtMzk4LDYgKzQwNCw5IEBAIHN0YXRpYyBIYXNoTWFwPEF0
b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVkb1R5
cGVNYXAoCiAjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKICAgICAgICAgbmFtZVRvUHNldWRv
VHlwZS0+c2V0KHNlYW1sZXNzRG9jdW1lbnQuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvU2Vh
bWxlc3NEb2N1bWVudCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAg
bmFtZVRvUHNldWRvVHlwZS0+c2V0KGRpc3RyaWJ1dGVkLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0Rpc3RyaWJ1dGVkKTsKKyNlbmRpZgogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQo
aW5SYW5nZS5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9JblJhbmdlKTsKICAgICAgICAgbmFt
ZVRvUHNldWRvVHlwZS0+c2V0KG91dE9mUmFuZ2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRv
T3V0T2ZSYW5nZSk7CiAgICAgfQpAQCAtNDQ4LDYgKzQ1Nyw5IEBAIHZvaWQgQ1NTU2VsZWN0b3I6
OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY29uc3QKICAgICBjYXNlIFBzZXVkb0ZpcnN0TGV0dGVyOgog
ICAgIGNhc2UgUHNldWRvRmlyc3RMaW5lOgogICAgICAgICBjb21wYXQgPSB0cnVlOworI2lmIEVO
QUJMRShTSEFET1dfRE9NKQorICAgIGNhc2UgUHNldWRvRGlzdHJpYnV0ZWQ6CisjZW5kaWYKICAg
ICBjYXNlIFBzZXVkb1Jlc2l6ZXI6CiAgICAgY2FzZSBQc2V1ZG9TY3JvbGxiYXI6CiAgICAgY2Fz
ZSBQc2V1ZG9TY3JvbGxiYXJDb3JuZXI6CkBAIC02ODQsNiArNjk2LDEwIEBAIFN0cmluZyBDU1NT
ZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KCkgY29uc3QKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50OgogICAg
ICAgICAgICAgcmV0dXJuIHRhZ0hpc3RvcnlUZXh0ICsgc3RyLnRvU3RyaW5nKCk7CisjaWYgRU5B
QkxFKFNIQURPV19ET00pCisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rpc3RyaWJ1
dGVkOgorICAgICAgICAgICAgcmV0dXJuIHRhZ0hpc3RvcnlUZXh0ICsgIjo6LXdlYmtpdC1kaXN0
cmlidXRlZCgiICsgc3RyLnRvU3RyaW5nKCkgKyAiKSI7CisjZW5kaWYKICAgICAgICAgfQogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCBhNWQyMzlmZTBjNGEzODM1OGViZmU2
YmNhNWM2YWVhOTgwNDdjMjM5Li5jMDY2NDdiNWNlYzhjOWIzODBjMGUwZTMxN2EwZTFhNmE4Mjc4
ZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApAQCAtNzUsNyArNzUsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAgICAgRGlyZWN0QWRqYWNlbnQsCiAgICAgICAgICAgICBJ
bmRpcmVjdEFkamFjZW50LAogICAgICAgICAgICAgU3ViU2VsZWN0b3IsCi0gICAgICAgICAgICBT
aGFkb3dEZXNjZW5kYW50CisgICAgICAgICAgICBTaGFkb3dEZXNjZW5kYW50LAorI2lmIEVOQUJM
RShTSEFET1dfRE9NKQorICAgICAgICAgICAgU2hhZG93RGlzdHJpYnV0ZWQKKyNlbmRpZgogICAg
ICAgICB9OwogCiAgICAgICAgIGVudW0gUHNldWRvVHlwZSB7CkBAIC0xNjAsNyArMTYzLDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFBzZXVkb0Z1dHVyZUN1ZSwKICNlbmRp
ZgogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCi0gICAgICAgICAgICBQc2V1ZG9TZWFtbGVz
c0RvY3VtZW50CisgICAgICAgICAgICBQc2V1ZG9TZWFtbGVzc0RvY3VtZW50LAorI2VuZGlmCisj
aWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgICAgICBQc2V1ZG9EaXN0cmlidXRlZAogI2Vu
ZGlmCiAgICAgICAgIH07CiAKQEAgLTIyMiw2ICsyMjgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBib29sIGlzQ3VzdG9tUHNldWRvRWxlbWVudCgpIGNvbnN0OwogICAgICAgICBi
b29sIGlzU2libGluZ1NlbGVjdG9yKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNBdHRyaWJ1dGVT
ZWxlY3RvcigpIGNvbnN0OworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICBib29sIGlz
RGlzdHJpYnV0ZWRQc2V1ZG9FbGVtZW50KCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNTaGFkb3dE
aXN0cmlidXRlZCgpIGNvbnN0OworI2VuZGlmCiAKICAgICAgICAgUmVsYXRpb24gcmVsYXRpb24o
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZWxhdGlvbj4obV9yZWxhdGlvbik7IH0KIApA
QCAtMzM0LDYgKzM0NCwxOCBAQCBpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6aXNBdHRyaWJ1dGVT
ZWxlY3RvcigpIGNvbnN0CiAgICAgICAgIHx8IG1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OkVuZDsK
IH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQoraW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6Omlz
RGlzdHJpYnV0ZWRQc2V1ZG9FbGVtZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tYXRjaCA9
PSBQc2V1ZG9FbGVtZW50ICYmIHBzZXVkb1R5cGUoKSA9PSBQc2V1ZG9EaXN0cmlidXRlZDsKK30K
KworaW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6OmlzU2hhZG93RGlzdHJpYnV0ZWQoKSBjb25zdAor
eworICAgIHJldHVybiBtX3JlbGF0aW9uID09IENTU1NlbGVjdG9yOjpTaGFkb3dEaXN0cmlidXRl
ZDsKK30KKyNlbmRpZgorCiBpbmxpbmUgdm9pZCBDU1NTZWxlY3Rvcjo6c2V0VmFsdWUoY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyBOZWVkIHRvIGRvIHJlZiBjb3VudGluZyBt
YW51YWxseSBmb3IgdGhlIHVuaW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNw
cAppbmRleCA0MzEzNmQxYzkwMWM2MzQxYmFjYmVmODM5NDlkZjk0ZTYwZjFjMzZjLi5kN2I4ZDEw
NDk5ODY4YTY4N2U2M2M5M2U1YmM4ZDc1Y2JlMzU0ZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3JMaXN0LmNwcApAQCAtMjExLDYgKzIxMSwyMCBAQCBib29sIENTU1NlbGVjdG9yTGlz
dDo6aGFzSW52YWxpZFNlbGVjdG9yKCkgY29uc3QKICAgICByZXR1cm4gZm9yRWFjaFNlbGVjdG9y
KGZ1bmN0b3IsIHRoaXMpOwogfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCitjbGFzcyBTZWxl
Y3Rvckhhc1NoYWRvd0Rpc3RyaWJ1dGVkIHsKK3B1YmxpYzoKKyAgICBib29sIG9wZXJhdG9yKCko
Q1NTU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbGVjdG9yLT5p
c1NoYWRvd0Rpc3RyaWJ1dGVkKCk7CisgICAgfQorfTsKIAorYm9vbCBDU1NTZWxlY3Rvckxpc3Q6
Omhhc1NoYWRvd0Rpc3RyaWJ1dGVkQXQoc2l6ZV90IGluZGV4KSBjb25zdAoreworICAgIFNlbGVj
dG9ySGFzU2hhZG93RGlzdHJpYnV0ZWQgZnVuY3RvcjsKKyAgICByZXR1cm4gZm9yRWFjaFRhZ1Nl
bGVjdG9yKGZ1bmN0b3IsIHNlbGVjdG9yQXQoaW5kZXgpKTsKK30KKyNlbmRpZgogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3JMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgKaW5kZXggNGZj
ZmVlMmZhYTQxODJkN2E5YWIwNTViY2NlNTE5ZmU3NGUyMjcxNS4uNGU3YjU4MmRiYzUxMThhNDVl
NDZkYmJmMGNkODk0YTlmNzQzZjZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3Qu
aApAQCAtNjAsNiArNjAsMTAgQEAgcHVibGljOgogICAgIGJvb2wgc2VsZWN0b3JzTmVlZE5hbWVz
cGFjZVJlc29sdXRpb24oKTsKICAgICBib29sIGhhc0ludmFsaWRTZWxlY3RvcigpIGNvbnN0Owog
CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgYm9vbCBoYXNTaGFkb3dEaXN0cmlidXRlZEF0
KHNpemVfdCBpbmRleCkgY29uc3Q7CisjZW5kaWYKKwogICAgIFN0cmluZyBzZWxlY3RvcnNUZXh0
KCkgY29uc3Q7CiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAppbmRleCBkN2I1MjBiOTA4MmExNzA5NzBlMWE2
ZDc3OWVkNmFlNTM1YzkyNDJmLi4wZDE3MDg2ZjMzOGJkY2RlYzQ3M2IyMzNiNmYxYWNiZGQxYWM1
ODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCkBAIC0yNzgsOSArMjc4LDI1IEBAIHZvaWQgUnVs
ZVNldDo6YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+ID4m
IHJ1bGVzLCBjb25zdCBNCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJ1bGVzLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIFN0eWxlUnVsZUJhc2UqIHJ1bGUgPSBydWxlc1tpXS5nZXQoKTsK
IAotICAgICAgICBpZiAocnVsZS0+aXNTdHlsZVJ1bGUoKSkKLSAgICAgICAgICAgIGFkZFN0eWxl
UnVsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihydWxlKSwgYWRkUnVsZUZsYWdzKTsKLSAgICAg
ICAgZWxzZSBpZiAocnVsZS0+aXNQYWdlUnVsZSgpKQorICAgICAgICBpZiAocnVsZS0+aXNTdHls
ZVJ1bGUoKSkgeworICAgICAgICAgICAgU3R5bGVSdWxlKiBzdHlsZVJ1bGUgPSBzdGF0aWNfY2Fz
dDxTdHlsZVJ1bGUqPihydWxlKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgICAg
IGlmICghc2NvcGUpCisgICAgICAgICAgICAgICAgYWRkU3R5bGVSdWxlKHN0eWxlUnVsZSwgYWRk
UnVsZUZsYWdzKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGNvbnN0IENT
U1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0ID0gc3R5bGVSdWxlLT5zZWxlY3Rvckxpc3QoKTsK
KyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBzZWxlY3RvckluZGV4ID0gMDsgc2VsZWN0b3JJ
bmRleCAhPSBub3RGb3VuZDsgc2VsZWN0b3JJbmRleCA9IHNlbGVjdG9yTGlzdC5pbmRleE9mTmV4
dFNlbGVjdG9yQWZ0ZXIoc2VsZWN0b3JJbmRleCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHNlbGVjdG9yTGlzdC5oYXNTaGFkb3dEaXN0cmlidXRlZEF0KHNlbGVjdG9ySW5kZXgpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZXItPnNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXMoKS5h
ZGRSdWxlKHN0eWxlUnVsZSwgc2VsZWN0b3JJbmRleCwgY29uc3RfY2FzdDxDb250YWluZXJOb2Rl
Kj4oc2NvcGUpLCBhZGRSdWxlRmxhZ3MpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgICAgICBhZGRSdWxlKHN0eWxlUnVsZSwgc2VsZWN0b3JJbmRleCwgYWRk
UnVsZUZsYWdzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisjZWxzZQorICAg
ICAgICAgICAgYWRkU3R5bGVSdWxlKHN0eWxlUnVsZSwgYWRkUnVsZUZsYWdzKTsKKyNlbmRpZgor
CisgICAgICAgIH0gZWxzZSBpZiAocnVsZS0+aXNQYWdlUnVsZSgpKQogICAgICAgICAgICAgYWRk
UGFnZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlUGFnZSo+KHJ1bGUpKTsKICAgICAgICAgZWxz
ZSBpZiAocnVsZS0+aXNNZWRpYVJ1bGUoKSkgewogICAgICAgICAgICAgU3R5bGVSdWxlTWVkaWEq
IG1lZGlhUnVsZSA9IHN0YXRpY19jYXN0PFN0eWxlUnVsZU1lZGlhKj4ocnVsZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDJlODc0ZjRmY2Q5MzAwMDljOTc4Y2M2
YTllNDNmZWIyNTFiODQ2OWYuLmZmNDdiZjEzMTY3ZjgwNjQyNWMzYzc0MTc0ZTNiZTEwZGIzYjc5
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC00MCw2ICs0MCw3
IEBACiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUHJvZ3Jl
c3NFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgorI2luY2x1ZGUgIklu
c2VydGlvblBvaW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMjgxLDgg
KzI4MiwxMyBAQCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2go
Y29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbgogCiAgICAgLy8gUHJlcGFyZSBuZXh0
IHNlbGVjdG9yCiAgICAgQ1NTU2VsZWN0b3IqIGhpc3RvcnlTZWxlY3RvciA9IGNvbnRleHQuc2Vs
ZWN0b3ItPnRhZ0hpc3RvcnkoKTsKLSAgICBpZiAoIWhpc3RvcnlTZWxlY3RvcikKKyAgICBpZiAo
IWhpc3RvcnlTZWxlY3RvcikgeworICAgICAgICBpZiAoY29udGV4dC5jcm9zc0JvdW5kYXJ5ID09
IENyb3NzZXNCb3VuZGFyeSkgeworICAgICAgICAgICAgQVNTRVJUKGNvbnRleHQuc2NvcGUpOwor
ICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuc2NvcGUtPmNvbnRhaW5zKGNvbnRleHQuZWxlbWVu
dCkgPyBTZWxlY3Rvck1hdGNoZXMgOiBTZWxlY3RvckZhaWxzTG9jYWxseTsKKyAgICAgICAgfQog
ICAgICAgICByZXR1cm4gU2VsZWN0b3JNYXRjaGVzOworICAgIH0KIAogICAgIFNlbGVjdG9yQ2hl
Y2tpbmdDb250ZXh0IG5leHRDb250ZXh0KGNvbnRleHQpOwogICAgIG5leHRDb250ZXh0LnNlbGVj
dG9yID0gaGlzdG9yeVNlbGVjdG9yOwpAQCAtMzg0LDYgKzM5MCwyNSBAQCBTZWxlY3RvckNoZWNr
ZXI6Ok1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2goY29uc3QgU2VsZWN0b3JDaGVja2luZ0Nv
bnRleHQmIGNvbgogICAgICAgICAgICAgbmV4dENvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlID0g
MDsKICAgICAgICAgICAgIHJldHVybiBtYXRjaChuZXh0Q29udGV4dCwgaWdub3JlRHluYW1pY1Bz
ZXVkbyk7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBjYXNlIENTU1Nl
bGVjdG9yOjpTaGFkb3dEaXN0cmlidXRlZDoKKyAgICAgICAgeworICAgICAgICAgICAgVmVjdG9y
PEluc2VydGlvblBvaW50KiwgOD4gaW5zZXJ0aW9uUG9pbnRzOworICAgICAgICAgICAgZm9yIChF
bGVtZW50KiBlbGVtZW50ID0gY29udGV4dC5lbGVtZW50OyBlbGVtZW50OyBlbGVtZW50ID0gZWxl
bWVudC0+cGFyZW50RWxlbWVudCgpKSB7CisgICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnRz
LmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY29sbGVjdEFsbEluc2VydGlvblBvaW50cyhlbGVt
ZW50LCBpbnNlcnRpb25Qb2ludHMpOworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgaW5zZXJ0aW9uUG9pbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAg
IG5leHRDb250ZXh0LmVsZW1lbnQgPSBpbnNlcnRpb25Qb2ludHNbaV07CisgICAgICAgICAgICAg
ICAgICAgIG5leHRDb250ZXh0LmlzU3ViU2VsZWN0b3IgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgbmV4dENvbnRleHQuZWxlbWVudFN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAg
bmV4dENvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKG1hdGNoKG5leHRDb250ZXh0LCBpZ25vcmVEeW5hbWljUHNldWRvKSA9PSBTZWxlY3Rvck1h
dGNoZXMpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JNYXRjaGVzOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBTZWxl
Y3RvckZhaWxzQ29tcGxldGVseTsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgfQogCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXgg
MmE5N2ZjOGM2MmNjMmFhYzQ1NjM2NzZiMDAxNjI4ZmM0NmU0MzExNS4uODZlYTdmZjM0ZmI5MmZh
M2I2MmRjMzYyMGY5OWZmNGE1MGE3YmI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1NlbGVjdG9yQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNr
ZXIuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgZW51bSBNYXRjaCB7IFNlbGVjdG9y
TWF0Y2hlcywgU2VsZWN0b3JGYWlsc0xvY2FsbHksIFNlbGVjdG9yRmFpbHNBbGxTaWJsaW5ncywg
U2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkgfTsKICAgICBlbnVtIFZpc2l0ZWRNYXRjaFR5cGUgeyBW
aXNpdGVkTWF0Y2hEaXNhYmxlZCwgVmlzaXRlZE1hdGNoRW5hYmxlZCB9OwogICAgIGVudW0gTW9k
ZSB7IFJlc29sdmluZ1N0eWxlID0gMCwgQ29sbGVjdGluZ1J1bGVzLCBRdWVyeWluZ1J1bGVzLCBT
aGFyaW5nUnVsZXMgfTsKKyAgICBlbnVtIENyb3NzQm91bmRhcnkgeyBEb2VzTm90Q3Jvc3NCb3Vu
ZGFyeSwgQ3Jvc3Nlc0JvdW5kYXJ5IH07CiAKICAgICBzdHJ1Y3QgU2VsZWN0b3JDaGVja2luZ0Nv
bnRleHQgewogICAgICAgICAvLyBJbml0aWFsIHNlbGVjdG9yIGNvbnN0cnVjdG9yCkBAIC02Myw2
ICs2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICwgaXNTdWJTZWxlY3RvcihmYWxzZSkKICAg
ICAgICAgICAgICwgaGFzU2Nyb2xsYmFyUHNldWRvKGZhbHNlKQogICAgICAgICAgICAgLCBoYXNT
ZWxlY3Rpb25Qc2V1ZG8oZmFsc2UpCisgICAgICAgICAgICAsIGNyb3NzQm91bmRhcnkoRG9lc05v
dENyb3NzQm91bmRhcnkpCiAgICAgICAgIHsgfQogCiAgICAgICAgIENTU1NlbGVjdG9yKiBzZWxl
Y3RvcjsKQEAgLTc1LDYgKzc3LDcgQEAgcHVibGljOgogICAgICAgICBib29sIGlzU3ViU2VsZWN0
b3I7CiAgICAgICAgIGJvb2wgaGFzU2Nyb2xsYmFyUHNldWRvOwogICAgICAgICBib29sIGhhc1Nl
bGVjdGlvblBzZXVkbzsKKyAgICAgICAgQ3Jvc3NCb3VuZGFyeSBjcm9zc0JvdW5kYXJ5OwogICAg
IH07CiAKICAgICBib29sIG1hdGNoZXMoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgYm9vbCBpc0Zh
c3RDaGVja2FibGVTZWxlY3RvciA9IGZhbHNlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JGaWx0ZXIuY3BwCmluZGV4IGNlYWE3NjgxNDkwMGMwYjMxZDM5NGM0ZjI2Y2M0Y2JiNWUzNWU4
ZGMuLjZiMzkwNjVlODA5NjM4NzBkZGI1MGQ4NWM5N2Y1M2MzOGExNzU0MDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcApAQCAtMTQ4LDYgKzE0OCw5IEBAIHZvaWQgU2VsZWN0
b3JGaWx0ZXI6OmNvbGxlY3RJZGVudGlmaWVySGFzaGVzKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxl
Y3RvciwgdW5zaWduCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50Ogog
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpJbmRpcmVjdEFkamFjZW50OgogICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50OgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQor
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEaXN0cmlidXRlZDoKKyNlbmRpZgogICAg
ICAgICAgICAgc2tpcE92ZXJTdWJzZWxlY3RvcnMgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKaW5kZXggOGQ3NWE5M2VmYmY0YzM5MWY1OGJiN2YyMmY3YWIxYWViOTY0
OTQ3MS4uNmM0YjdlYjZkOTFmMmM3NDRkYWJjMTg1NWQwNDk4NTZmOGRiODY5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMjU4LDYgKzI1OCwyNSBAQCBzdGF0aWMgU3R5
bGVQcm9wZXJ0eVNldCogcmlnaHRUb0xlZnREZWNsYXJhdGlvbigpCiAgICAgcmV0dXJuIHJpZ2h0
VG9MZWZ0RGVjbC5nZXQoKTsKIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQordm9pZCBTaGFk
b3dEaXN0cmlidXRlZFJ1bGVzOjphZGRSdWxlKFN0eWxlUnVsZSogcnVsZSwgc2l6ZV90IHNlbGVj
dG9ySW5kZXgsIENvbnRhaW5lck5vZGUqIHNjb3BlLCBBZGRSdWxlRmxhZ3MgYWRkUnVsZUZsYWdz
KQoreworICAgIGlmIChtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5jb250YWlucyhzY29w
ZSkpCisgICAgICAgIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLmdldChzY29wZSktPmFk
ZFJ1bGUocnVsZSwgc2VsZWN0b3JJbmRleCwgYWRkUnVsZUZsYWdzKTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgT3duUHRyPFJ1bGVTZXQ+IHJ1bGVTZXRGb3JTY29wZSA9IGFkb3B0UHRyKG5ldyBSdWxl
U2V0KCkpOworICAgICAgICBydWxlU2V0Rm9yU2NvcGUtPmFkZFJ1bGUocnVsZSwgc2VsZWN0b3JJ
bmRleCwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAgbV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRN
YXAuYWRkKHNjb3BlLCBydWxlU2V0Rm9yU2NvcGUucmVsZWFzZSgpKTsKKyAgICB9Cit9CisKK3Zv
aWQgU2hhZG93RGlzdHJpYnV0ZWRSdWxlczo6Y29sbGVjdE1hdGNoUmVxdWVzdHMoYm9vbCBpbmNs
dWRlRW1wdHlSdWxlcywgVmVjdG9yPE1hdGNoUmVxdWVzdD4mIG1hdGNoUmVxdWVzdHMpCit7Cisg
ICAgZm9yIChTaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zaGFk
b3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAuYmVnaW4oKTsgaXQgIT0gbV9zaGFkb3dEaXN0cmlidXRl
ZFJ1bGVTZXRNYXAuZW5kKCk7ICsraXQpCisgICAgICAgIG1hdGNoUmVxdWVzdHMuYXBwZW5kKE1h
dGNoUmVxdWVzdChpdC0+dmFsdWUuZ2V0KCksIGluY2x1ZGVFbXB0eVJ1bGVzLCBpdC0+a2V5LCBT
ZWxlY3RvckNoZWNrZXI6OkNyb3NzZXNCb3VuZGFyeSkpOworfQorCisjZW5kaWYKIAogU3R5bGVS
ZXNvbHZlcjo6U3R5bGVSZXNvbHZlcihEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgbWF0Y2hBdXRo
b3JBbmRVc2VyU3R5bGVzKQogICAgIDogbV9oYXNVQUFwcGVhcmFuY2UoZmFsc2UpCkBAIC0zNjQs
NiArMzgzLDkgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpyZXNldEF1dGhvclN0eWxlKCkKIHsKICAg
ICBtX2F1dGhvclN0eWxlID0gUnVsZVNldDo6Y3JlYXRlKCk7CiAgICAgbV9hdXRob3JTdHlsZS0+
ZGlzYWJsZUF1dG9TaHJpbmtUb0ZpdCgpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIG1f
c2hhZG93RGlzdHJpYnV0ZWRSdWxlcy5jbGVhcigpOworI2VuZGlmCiB9CiAKIHZvaWQgU3R5bGVS
ZXNvbHZlcjo6YXBwZW5kQXV0aG9yU3R5bGVTaGVldHModW5zaWduZWQgZmlyc3ROZXcsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgc3R5bGVTaGVldHMpCkBAIC02NjQsNyAr
Njg2LDggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyhjb25zdCBN
YXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdCwgaW50JgogICAgIFRyZWVTY29wZSogdHJlZVNjb3Bl
ID0gbV9lbGVtZW50LT50cmVlU2NvcGUoKTsKICAgICBpZiAoIU1hdGNoaW5nVUFSdWxlc1Njb3Bl
Ojppc01hdGNoaW5nVUFSdWxlcygpCiAgICAgICAgICYmICF0cmVlU2NvcGUtPmFwcGx5QXV0aG9y
U3R5bGVzKCkKLSAgICAgICAgJiYgKCFtYXRjaFJlcXVlc3Quc2NvcGUgfHwgbWF0Y2hSZXF1ZXN0
LnNjb3BlLT50cmVlU2NvcGUoKSAhPSB0cmVlU2NvcGUpKQorICAgICAgICAmJiAoIW1hdGNoUmVx
dWVzdC5zY29wZSB8fCBtYXRjaFJlcXVlc3Quc2NvcGUtPnRyZWVTY29wZSgpICE9IHRyZWVTY29w
ZSkKKyAgICAgICAgJiYgbWF0Y2hSZXF1ZXN0LmNyb3NzQm91bmRhcnkgPT0gU2VsZWN0b3JDaGVj
a2VyOjpEb2VzTm90Q3Jvc3NCb3VuZGFyeSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2Ug
bmVlZCB0byBjb2xsZWN0IHRoZSBydWxlcyBmb3IgaWQsIGNsYXNzLCB0YWcsIGFuZCBldmVyeXRo
aW5nIGVsc2UgaW50byBhIGJ1ZmZlciBhbmQKQEAgLTgxMCw2ICs4MzMsMTIgQEAgdm9pZCBTdHls
ZVJlc29sdmVyOjptYXRjaEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5j
bHVkZUVtcHR5UnVsZXMKICAgICBNYXRjaFJlcXVlc3QgbWF0Y2hSZXF1ZXN0KG1fYXV0aG9yU3R5
bGUuZ2V0KCksIGluY2x1ZGVFbXB0eVJ1bGVzKTsKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyht
YXRjaFJlcXVlc3QsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2Vz
Lmxhc3RBdXRob3JSdWxlKTsKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtYXRj
aFJlcXVlc3QsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxh
c3RBdXRob3JSdWxlKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBWZWN0b3I8TWF0Y2hS
ZXF1ZXN0PiBtYXRjaFJlcXVlc3RzOworICAgIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlcy5jb2xs
ZWN0TWF0Y2hSZXF1ZXN0cyhpbmNsdWRlRW1wdHlSdWxlcywgbWF0Y2hSZXF1ZXN0cyk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXRjaFJlcXVlc3RzLnNpemUoKTsgKytpKQorICAgICAg
ICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhtYXRjaFJlcXVlc3RzW2ldLCByZXN1bHQucmFuZ2VzLmZp
cnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSk7CisjZW5kaWYKICAg
ICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMocmVzdWx0KTsKIAogICAgIG1hdGNoU2NvcGVk
QXV0aG9yUnVsZXMocmVzdWx0LCBpbmNsdWRlRW1wdHlSdWxlcyk7CkBAIC04NDcsNyArODc2LDcg
QEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3Qg
VmVjdG9yPFJ1bGVEYXRhPiogcnVsZXMsIGMKIAogICAgIC8vIEluIHNvbWUgY2FzZXMgd2UgbWF5
IGVuZCB1cCBsb29raW5nIHVwIHN0eWxlIGZvciByYW5kb20gZWxlbWVudHMgaW4gdGhlIG1pZGRs
ZSBvZiBhIHJlY3Vyc2l2ZSB0cmVlIHJlc29sdmUuCiAgICAgLy8gQW5jZXN0b3IgaWRlbnRpZmll
ciBmaWx0ZXIgd29uJ3QgYmUgdXAtdG8tZGF0ZSBpbiB0aGF0IGNhc2UgYW5kIHdlIGNhbid0IHVz
ZSB0aGUgZmFzdCBwYXRoLgotICAgIGJvb2wgY2FuVXNlRmFzdFJlamVjdCA9IG1fc2VsZWN0b3JG
aWx0ZXIucGFyZW50U3RhY2tJc0NvbnNpc3RlbnQobV9wYXJlbnROb2RlKTsKKyAgICBib29sIGNh
blVzZUZhc3RSZWplY3QgPSBtX3NlbGVjdG9yRmlsdGVyLnBhcmVudFN0YWNrSXNDb25zaXN0ZW50
KG1fcGFyZW50Tm9kZSkgJiYgbWF0Y2hSZXF1ZXN0LmNyb3NzQm91bmRhcnkgPT0gU2VsZWN0b3JD
aGVja2VyOjpEb2VzTm90Q3Jvc3NCb3VuZGFyeTsKIAogICAgIHVuc2lnbmVkIHNpemUgPSBydWxl
cy0+c2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKQEAg
LTg1Nyw3ICs4ODYsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVz
Rm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBydWxlcywgYwogCiAgICAgICAgIFN0eWxl
UnVsZSogcnVsZSA9IHJ1bGVEYXRhLnJ1bGUoKTsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1hdGNo
UnVsZShkb2N1bWVudCgpLCBydWxlLCB0aGlzKTsKLSAgICAgICAgaWYgKHJ1bGVNYXRjaGVzKHJ1
bGVEYXRhLCBtYXRjaFJlcXVlc3Quc2NvcGUpKSB7CisgICAgICAgIGlmIChydWxlTWF0Y2hlcyhy
dWxlRGF0YSwgbWF0Y2hSZXF1ZXN0LnNjb3BlLCBtYXRjaFJlcXVlc3QuY3Jvc3NCb3VuZGFyeSkp
IHsKICAgICAgICAgICAgIC8vIElmIHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0aWVzIHRvIGFwcGx5
LCB0aGVuIGlnbm9yZSBpdCBpbiB0aGUgbm9uLWRlYnVnIG1vZGUuCiAgICAgICAgICAgICBjb25z
dCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzID0gcnVsZS0+cHJvcGVydGllcygpOwogICAg
ICAgICAgICAgaWYgKCFwcm9wZXJ0aWVzIHx8IChwcm9wZXJ0aWVzLT5pc0VtcHR5KCkgJiYgIW1h
dGNoUmVxdWVzdC5pbmNsdWRlRW1wdHlSdWxlcykpIHsKQEAgLTIyMzksNyArMjI2OCw3IEBAIFBh
c3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IFN0eWxlUmVzb2x2ZXI6OnBzZXVkb1N0eWxlUnVsZXNGb3JF
bGVtZW50KEVsZW1lbnQqIGUsIFBzCiAgICAgcmV0dXJuIG1fcnVsZUxpc3QucmVsZWFzZSgpOwog
fQogCi1pbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpydWxlTWF0Y2hlcyhjb25zdCBSdWxlRGF0
YSYgcnVsZURhdGEsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKQoraW5saW5lIGJvb2wgU3R5
bGVSZXNvbHZlcjo6cnVsZU1hdGNoZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCBjb25zdCBD
b250YWluZXJOb2RlKiBzY29wZSwgU2VsZWN0b3JDaGVja2VyOjpDcm9zc0JvdW5kYXJ5IGNyb3Nz
Qm91bmRhcnkpCiB7CiAgICAgbV9keW5hbWljUHNldWRvID0gTk9QU0VVRE87CiAKQEAgLTIyNjQs
NiArMjI5Myw3IEBAIGlubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6OnJ1bGVNYXRjaGVzKGNvbnN0
IFJ1bGVEYXRhJiBydWxlRGF0YSwgY29uc3QgQ29udGFpbmVyCiAgICAgY29udGV4dC5lbGVtZW50
U3R5bGUgPSBzdHlsZSgpOwogICAgIGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlID0gbV9wYXJl
bnROb2RlID8gbV9wYXJlbnROb2RlLT5yZW5kZXJTdHlsZSgpIDogMDsKICAgICBjb250ZXh0LnNj
b3BlID0gc2NvcGU7CisgICAgY29udGV4dC5jcm9zc0JvdW5kYXJ5ID0gY3Jvc3NCb3VuZGFyeTsK
ICAgICBjb250ZXh0LnBzZXVkb1N0eWxlID0gbV9wc2V1ZG9TdHlsZTsKICAgICBTZWxlY3RvckNo
ZWNrZXI6Ok1hdGNoIG1hdGNoID0gbV9zZWxlY3RvckNoZWNrZXIubWF0Y2goY29udGV4dCwgbV9k
eW5hbWljUHNldWRvKTsKICAgICBpZiAobWF0Y2ggIT0gU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rv
ck1hdGNoZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCBkYmViNmVhYTc1NDRm
MTEzM2JhYTFjZWE2YmM1NWQzYTNjZWIxODdlLi4zOTQ5ZTY4MzY3MjBkMjMwM2QwOTY4MzQwNjc2
MmJiMDc5OGQ4MWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJNZWRpYVF1ZXJ5RXhwLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUu
aCIKICNpbmNsdWRlICJSdWxlRmVhdHVyZS5oIgorI2luY2x1ZGUgIlJ1bGVTZXQuaCIKICNpbmNs
dWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2Vy
LmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JGaWx0ZXIuaCIKQEAgLTc2LDcgKzc3LDYgQEAgY2xhc3Mg
TWVkaWFRdWVyeUV2YWx1YXRvcjsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSZW5kZXJSZWdpb247CiBj
bGFzcyBSdWxlRGF0YTsKLWNsYXNzIFJ1bGVTZXQ7CiBjbGFzcyBTZXR0aW5nczsKIGNsYXNzIFN0
YXRpY0NTU1J1bGVMaXN0OwogY2xhc3MgU3R5bGVCdWlsZGVyOwpAQCAtMTMxLDYgKzEzMSwzMiBA
QCBlbnVtIFJ1bGVNYXRjaGluZ0JlaGF2aW9yIHsKICAgICBNYXRjaE9ubHlVc2VyQWdlbnRSdWxl
cywKIH07CiAKK2NsYXNzIE1hdGNoUmVxdWVzdCB7CitwdWJsaWM6CisgICAgTWF0Y2hSZXF1ZXN0
KFJ1bGVTZXQqIHJ1bGVTZXQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMgPSBmYWxzZSwgY29uc3Qg
Q29udGFpbmVyTm9kZSogc2NvcGUgPSAwLCBTZWxlY3RvckNoZWNrZXI6OkNyb3NzQm91bmRhcnkg
Y3Jvc3NCb3VuZGFyeSA9IFNlbGVjdG9yQ2hlY2tlcjo6RG9lc05vdENyb3NzQm91bmRhcnkpCisg
ICAgICAgIDogcnVsZVNldChydWxlU2V0KQorICAgICAgICAsIGluY2x1ZGVFbXB0eVJ1bGVzKGlu
Y2x1ZGVFbXB0eVJ1bGVzKQorICAgICAgICAsIHNjb3BlKHNjb3BlKQorICAgICAgICAsIGNyb3Nz
Qm91bmRhcnkoY3Jvc3NCb3VuZGFyeSkgeyB9CisgICAgY29uc3QgUnVsZVNldCogcnVsZVNldDsK
KyAgICBjb25zdCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzOworICAgIGNvbnN0IENvbnRhaW5lck5v
ZGUqIHNjb3BlOworICAgIGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6Q3Jvc3NCb3VuZGFyeSBjcm9z
c0JvdW5kYXJ5OworICAgIE1hdGNoUmVxdWVzdCBjbG9uZVdpdGgoUnVsZVNldCogbmV3UnVsZVNl
dCkgY29uc3QgeyByZXR1cm4gTWF0Y2hSZXF1ZXN0KG5ld1J1bGVTZXQsIGluY2x1ZGVFbXB0eVJ1
bGVzLCBzY29wZSwgY3Jvc3NCb3VuZGFyeSk7IH0KK307CisKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKK2NsYXNzIFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXMgeworcHVibGljOgorICAgIHZvaWQgYWRk
UnVsZShTdHlsZVJ1bGUqLCBzaXplX3Qgc2VsZWN0b3JJbmRleCwgQ29udGFpbmVyTm9kZSogc2Nv
cGUsIEFkZFJ1bGVGbGFncyk7CisgICAgdm9pZCBjb2xsZWN0TWF0Y2hSZXF1ZXN0cyhib29sIGlu
Y2x1ZGVFbXB0eVJ1bGVzLCBWZWN0b3I8TWF0Y2hSZXF1ZXN0PiYpOworICAgIHZvaWQgY2xlYXIo
KSB7IG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLmNsZWFyKCk7IH0KK3ByaXZhdGU6Cisg
ICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IENvbnRhaW5lck5vZGUqLCBPd25QdHI8UnVsZVNldD4g
PiBTaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXA7CisgICAgU2hhZG93RGlzdHJpYnV0ZWRSdWxl
U2V0TWFwIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwOworfTsKKyNlbmRpZgorCiAvLyBU
aGlzIGNsYXNzIHNlbGVjdHMgYSBSZW5kZXJTdHlsZSBmb3IgYSBnaXZlbiBlbGVtZW50IGJhc2Vk
IG9uIGEgY29sbGVjdGlvbiBvZiBzdHlsZXNoZWV0cy4KIGNsYXNzIFN0eWxlUmVzb2x2ZXIgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0eWxlUmVzb2x2ZXIpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKQEAgLTE5Nyw2ICsyMjMsNyBAQCBwcml2YXRlOgogICAgIH0KICNlbmRpZgogCisK
ICAgICB2b2lkIGluaXRGb3JTdHlsZVJlc29sdmUoRWxlbWVudCosIFJlbmRlclN0eWxlKiBwYXJl
bnRTdHlsZSA9IDAsIFBzZXVkb0lkID0gTk9QU0VVRE8pOwogICAgIHZvaWQgaW5pdEVsZW1lbnQo
RWxlbWVudCopOwogICAgIHZvaWQgY29sbGVjdEZlYXR1cmVzKCk7CkBAIC0yOTksNiArMzI2LDEw
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbG9hZFBlbmRpbmdSZXNvdXJjZXMoKTsKIAorI2lmIEVO
QUJMRShTSEFET1dfRE9NKQorICAgIFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXMmIHNoYWRvd0Rpc3Ry
aWJ1dGVkUnVsZXMoKSB7IHJldHVybiBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZXM7IH0KKyNlbmRp
ZgorCiBwcml2YXRlOgogICAgIC8vIFRoaXMgZnVuY3Rpb24gZml4ZXMgdXAgdGhlIGRlZmF1bHQg
Zm9udCBzaXplIGlmIGl0IGRldGVjdHMgdGhhdCB0aGUgY3VycmVudCBnZW5lcmljIGZvbnQgZmFt
aWx5IGhhcyBjaGFuZ2VkLiAtZHdoCiAgICAgdm9pZCBjaGVja0ZvckdlbmVyaWNGYW1pbHlDaGFu
Z2UoUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOwpAQCAtMzQyLDE2ICsz
NzMsNiBAQCBwcml2YXRlOgogICAgICAgICBib29sIGlzQ2FjaGVhYmxlOwogICAgIH07CiAKLSAg
ICBzdHJ1Y3QgTWF0Y2hSZXF1ZXN0IHsKLSAgICAgICAgTWF0Y2hSZXF1ZXN0KFJ1bGVTZXQqIHJ1
bGVTZXQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMgPSBmYWxzZSwgY29uc3QgQ29udGFpbmVyTm9k
ZSogc2NvcGUgPSAwKQotICAgICAgICAgICAgOiBydWxlU2V0KHJ1bGVTZXQpCi0gICAgICAgICAg
ICAsIGluY2x1ZGVFbXB0eVJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKQotICAgICAgICAgICAgLCBz
Y29wZShzY29wZSkgeyB9Ci0gICAgICAgIGNvbnN0IFJ1bGVTZXQqIHJ1bGVTZXQ7Ci0gICAgICAg
IGNvbnN0IGJvb2wgaW5jbHVkZUVtcHR5UnVsZXM7Ci0gICAgICAgIGNvbnN0IENvbnRhaW5lck5v
ZGUqIHNjb3BlOwotICAgIH07Ci0KICAgICBzdGF0aWMgdm9pZCBhZGRNYXRjaGVkUHJvcGVydGll
cyhNYXRjaFJlc3VsdCYsIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMsIFN0eWxl
UnVsZSogPSAwLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlID0gU2VsZWN0b3JDaGVja2VyOjpNYXRj
aEFsbCwgYm9vbCBpblJlZ2lvblJ1bGUgPSBmYWxzZSk7CiAgICAgdm9pZCBhZGRFbGVtZW50U3R5
bGVQcm9wZXJ0aWVzKE1hdGNoUmVzdWx0JiwgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCosIGJvb2wg
aXNDYWNoZWFibGUgPSB0cnVlKTsKIApAQCAtMzcxLDcgKzM5Miw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzb3J0TWF0Y2hlZFJ1bGVzKCk7CiAgICAgdm9pZCBzb3J0QW5kVHJhbnNmZXJNYXRjaGVk
UnVsZXMoTWF0Y2hSZXN1bHQmKTsKIAotICAgIGJvb2wgcnVsZU1hdGNoZXMoY29uc3QgUnVsZURh
dGEmLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSk7CisgICAgYm9vbCBydWxlTWF0Y2hlcyhj
b25zdCBSdWxlRGF0YSYsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlLCBTZWxlY3RvckNoZWNr
ZXI6OkNyb3NzQm91bmRhcnkgPSBTZWxlY3RvckNoZWNrZXI6OkRvZXNOb3RDcm9zc0JvdW5kYXJ5
KTsKICAgICBib29sIGNoZWNrUmVnaW9uU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHJlZ2lvblNlbGVj
dG9yLCBFbGVtZW50KiByZWdpb25FbGVtZW50KTsKICAgICB2b2lkIGFwcGx5TWF0Y2hlZFByb3Bl
cnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBjb25zdCBFbGVtZW50Kik7CiAgICAgZW51bSBTdHls
ZUFwcGxpY2F0aW9uUGFzcyB7CkBAIC00MTMsNiArNDM0LDkgQEAgcHJpdmF0ZToKIAogICAgIHR5
cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1l
cz4gPiBLZXlmcmFtZXNSdWxlTWFwOwogICAgIEtleWZyYW1lc1J1bGVNYXAgbV9rZXlmcmFtZXNS
dWxlTWFwOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIFNoYWRvd0Rpc3RyaWJ1dGVkUnVs
ZXMgbV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVzOworI2VuZGlmCiAKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVuZGVyU3R5bGUqIHN0eWxlTm90WWV0QXZhaWxhYmxlKCkgeyByZXR1cm4gc19zdHlsZU5v
dFlldEF2YWlsYWJsZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBv
aW50LmgKaW5kZXggNzQyNDNlOWNhYTQ1MzdjNTk0YTkyOTBiNDY4MTFlM2I2MDA1YmNlNi4uN2Vi
ODM3MjIzZDhjMTc4NDNlZDM3YTViYWExMWUxYzc3YjEwYjBlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC0xNjEsNiArMTYxLDI5IEBAIGlubGlu
ZSBFbGVtZW50U2hhZG93KiBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbihjb25zdCBOb2Rl
KiBub2RlKQogCiBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2Rl
Kik7CiAKK2lubGluZSB2b2lkIGNvbGxlY3RBbGxJbnNlcnRpb25Qb2ludHMoY29uc3QgTm9kZSog
cHJvamVjdGVkTm9kZSwgVmVjdG9yPEluc2VydGlvblBvaW50KiwgOD4mIHJlc3VsdHMpCit7Cisg
ICAgY29uc3QgTm9kZSogY3VycmVudCA9IHByb2plY3RlZE5vZGU7CisgICAgd2hpbGUgKHRydWUp
IHsKKyAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9y
RGlzdHJpYnV0aW9uKGN1cnJlbnQpKSB7CisgICAgICAgICAgICBzaGFkb3ctPmVuc3VyZURpc3Ry
aWJ1dGlvbigpOworICAgICAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRlZFRvID0g
c2hhZG93LT5kaXN0cmlidXRvcigpLmZpbmRJbnNlcnRpb25Qb2ludEZvcihwcm9qZWN0ZWROb2Rl
KSkgeworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAg
ICAgIHJlc3VsdHMuYXBwZW5kKGluc2VydGVkVG8pOworICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChOb2RlKiBwYXJlbnQgPSBw
YXJlbnROb2RlRm9yRGlzdHJpYnV0aW9uKGN1cnJlbnQpKSB7CisgICAgICAgICAgICBpZiAoSW5z
ZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBwYXJlbnQtPmlzU2hhZG93Um9vdCgpID8gU2NvcGVD
b250ZW50RGlzdHJpYnV0aW9uOjphc3NpZ25lZFRvKHRvU2hhZG93Um9vdChwYXJlbnQpKSA6IDAp
IHsKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAg
ICByZXN1bHRzLmFwcGVuZChpbnNlcnRlZFRvKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBJbnNlcnRpb25Qb2ludF9oCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggZmI0ODZhM2NlMmU3OWE0NTJhNzlmNTFlMWM1NGIxNzAxNDQwZjlmMy4uMzRkN2YyZWM4MGMx
ZjUyZTlhMzhiMjIyODkwYWRmMTU1OWRmMDc3MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEz
LTAxLTE2ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hh
ZG93IERPTV0gSW1wbGVtZW50cyBhICc6OmRpc3RyaWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIxNjkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1leHBlY3RlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9y
LXNoYWRvdy1lbGVtZW50LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1l
bGVtZW50LW1hdGNoLWFsbC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1t
YXRjaC1kZXNjZW5kYW50LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC1uZXN0ZWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbm8tbWF0Y2gt
ZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LW5vLW1hdGNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24tZXhwZWN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLWV4cGVjdGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC1zY29wZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3ItZXhwZWN0ZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LXN1cHBvcnQtc2VsZWN0b3IuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC13aXRoLWFueS1leHBl
Y3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQt
cHNldWRvLWVsZW1lbnQtd2l0aC1hbnkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTAx
LTE1ICBUYWIgQXRraW5zICA8amFja2FsbWFnZUBnbWFpbC5jb20+CiAKICAgICAgICAgVXBkYXRl
IENTUzMgZ3JhZGllbnQgc3VwcG9ydCB0byB0aGUgbGF0ZXN0IHNwZWMgdmVyc2lvbgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGMyNmUyYjU2YzRj
NmE3YzcwYzZjZmQ1OGEyMjdmOGUwZjQ0NjRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLmh0
bWwKQEAgLTAsMCArMSw5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2
IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdiBzdHlsZT0iY29sb3I6
IGdyZWVuIj5ncmVlbjwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC1mb3Itc2hhZG93LWVsZW1lbnQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQtZXhw
ZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGMyNmUyYjU2YzRjNmE3YzcwYzZjZmQ1OGEyMjdmOGUw
ZjQ0NjRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC1leHBlY3RlZC5odG1s
CkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBp
ZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBn
cmVlbiI+Z3JlZW48L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
Zm9yLXNoYWRvdy1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlz
dHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGRkYzM3YzVjNmM0ODg2N2RmNWNiODE0NzI4YTM2OWZkOGQyM2U2MQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC1mb3Itc2hhZG93LWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20u
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4K
KzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHls
ZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ3NoYWRvdzo6LXdlYmtpdC1kaXN0cmlidXRl
ZChkaXYpIHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVE
T00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290
KAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpLAorICAgICAg
ICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUs
CisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3NoYWRvdycpKSkpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gt
YWxsLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE2MGI3MmUwZGU5MTc3NjJiMmEyYTRjNWVj
M2VmOWY1NjZlYjQ5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwtZXhwZWN0ZWQuaHRtbApA
QCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlk
PSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdj4KKyAgICAgIG5vcm1hbAor
ICAgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgIDwvZGl2Pgor
ICAgIDxkaXY+CisgICAgICBub3JtYWwKKyAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+
Z3JlZW48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtbWF0Y2gtYWxsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJp
YnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjlmMmZmMmI0
MTM3YTBjNWFlZWRjODVlODkxMmYyZWMzNGViMmZiYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1h
bGwuaHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93
U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5u
ZXJIVE1MID0gJ2NvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoLmhlbGxvKSB7IGNvbG9yOiBn
cmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRi
b3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzog
J2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAg
ICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jykp
LAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2hlbGxvJ30sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykp
KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdoZWxsbyd9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicp
KSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWRlc2Nl
bmRhbnQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50LWV4cGVjdGVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWMxODc4NTZmZWUxOGY0ZTQyN2YyMWE3NzFiMzJkMTEzMThmNTNiMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxk
aXYgaWQ9Imhvc3QiPgorICAgIDxwPgorICAgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5n
cmVlbjwvZGl2PgorICAgIDwvcD4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtbWF0Y2gtZGVzY2VuZGFudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWRlc2NlbmRhbnQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mZTQwNDNlODU1YTUwOGQ0OGI1YTA2MDBlMGY2ODY2OTg4MzAwMjgyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50LW1hdGNoLWRlc2NlbmRhbnQuaHRtbApAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxz
Y3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScp
Oworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQo
ZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9N
KCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAg
ICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50
JykpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ3AnLCB7fSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSkpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLWV4
cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTUxODM0NDJhMDc2YzdmODFhOWM1NDIxMzFlNzlmYjc3
NmYwMTFjYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsx
LDIwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94
Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdiBpZD0ibmVzdGVkLWhvc3QiPgorICAgICAg
dGV4dDEKKyAgICAgIDxkaXY+CisgICAgICAgIHRleHQyCisgICAgICAgIDxkaXY+CisgICAgICAg
ICAgdGV4dDMKKyAgICAgICAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+
CisgICAgICAgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICA8L2Rp
dj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC1uZXN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRl
ZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTY3YTNlZmVjYTBmNDA4
YTZkMzg3NTY5Mjk3ZWZlNjIzNTg4MGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC5odG1sCkBA
IC0wLDAgKzEsMzIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAn
ZGl2IGNvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2IGNvbnRlbnQ6Oi13ZWJraXQtZGlz
dHJpYnV0ZWQoZGl2LmdyZWVuKSkgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxk
KAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNy
ZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnbmVzdGVkLWhvc3QnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFk
b3dSb290KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3Rl
eHQxJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
e30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgndGV4dDInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJ2Rpdid9KSkpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdncmVl
bid9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgndGV4dDMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdjb250ZW50Jywge30pKSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHsnY2xhc3MnOiAnZ3JlZW4nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdk
aXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KCdub3JtYWwnKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5v
LW1hdGNoLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJp
YnV0ZWQtcHNldWRvLWVsZW1lbnQtbm8tbWF0Y2gtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
MDVmZWZmNzVjNzlhZWRlNWJmOGU0OWJiZWQwYjcxNTVkY2U2ODBkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LW5vLW1hdGNoLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgor
ICAgIDxwPm5vcm1hbDwvcD4KKyAgICA8ZGl2PgorICAgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAg
ICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbm8tbWF0Y2gu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC1uby1tYXRjaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhZTM5Y2VjMzQ3NTkzN2ExZWQ1M2QxNTgy
ZTZmZTNjOGIyMDFkNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbm8tbWF0Y2guaHRtbApAQCAtMCwwICsx
LDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ3RoaXMtZG9l
cy1ub3QtbWF0Y2g6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7
CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAncDo6LXdlYmtpdC1kaXN0cmlidXRlZChkaXYpIHsg
Y29sb3I6IGdyZWVuOyB9JzsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdkaXY6Oi13ZWJraXQt
ZGlzdHJpYnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRl
U2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdwJywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpLAorICAgICAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2Nv
bnRlbnQnKSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdC1j
aGlsZCd9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
J25vcm1hbCcpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVw
cm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlz
dHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTY5YzkxMjdkZTVlNzAzYjdhMWE1YzkzNjk0ZWE3Y2QwYjEyNDg0MgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBp
ZD0iaG9zdCI+CisgICAgPGRpdiBpZD0iaG9zdDIiPgorICAgICAgPGRpdiBzdHlsZT0nY29sb3I6
IGdyZWVuJz4KKyAgICAgICAgZ3JlZW4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24uaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2pl
Y3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzM1ZmE3MDllODYxYjBkYjRhZTRjYzQ2NGZmN2FmYTFh
MTllMGM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5odG1sCkBAIC0wLDAgKzEsMjUg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNh
bmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnY29udGVudDo6LXdl
YmtpdC1kaXN0cmlidXRlZCguZm9vKSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hp
bGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAg
Y3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywgeydp
ZCc6ICdob3N0Mid9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jv
b3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6
ICcuZm9vJ30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRl
bnQnKSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnZm9vJ30s
CisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4n
KSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNjb3BlZC1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVk
by1lbGVtZW50LXNjb3BlZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0OGQ5ZTJkZTNlNmZl
NGJmZDg5ODBiNjNkMDM5YmM1NGQ4ODMxYTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLWV4cGVj
dGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5
PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXY+bm9ybWFs
PC9kaXY+CisgICAgPGRpdj4KKyAgICAgIDxkaXYgc3R5bGU9J2NvbG9yOiBncmVlbic+Z3JlZW48
L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
c2NvcGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtc2NvcGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFhNzFhYmM3OTA5NjMzMDBhMzI0
N2U4NTY4NTBhODM2MTM1ODg1YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQuaHRtbApAQCAtMCww
ICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRl
bnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CitzaGFkb3dT
dHlsZS5zZXRBdHRyaWJ1dGUoJ3Njb3BlZCcsIHRydWUpOworCit2YXIgc2FuZGJveCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAg
IGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNo
YWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVj
dCc6ICcjaG9zdC1jaGlsZDEnfSksCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsn
c2VsZWN0JzogJyNob3N0LWNoaWxkMid9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aGFkb3dTdHlsZSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9z
dC1jaGlsZDEnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCdub3JtYWwnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdo
b3N0LWNoaWxkMid9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoJ2dyZWVuJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC1zdXBwb3J0LXNlbGVjdG9yLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci1leHBlY3Rl
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIzZGVkZTEzM2I4NjJkZDE0YzkyZTYwNWM0YTFiZWQyOGUzN2Fk
YWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJp
YnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci1leHBlY3RlZC5odG1sCkBAIC0w
LDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNh
bmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2PgorICAgICAgbm9ybWFsCisgICAg
ICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAgPC9kaXY+CisgICAg
PGRpdj4KKyAgICAgIG5vcm1hbAorICAgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAgICA8L2Rpdj4K
KyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50LXN1cHBvcnQtc2VsZWN0b3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZmRiZDg2ZWY3ODJiMTQxY2Zm
NTliYTNjMTY1YmE1N2ViM2U3ODVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3Iu
aHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5
bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJI
VE1MID0gJ2NvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2LmhlbGxvIGRpdikgeyBjb2xv
cjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz
YW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywgeydp
ZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAg
ICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVu
dCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2hlbGxvJ30s
CisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFs
JyksCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVl
bicpKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJyksCisgICAgICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSkpKSk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3Qt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QtZXhwZWN0ZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iYjgyNTNlNGRhYjc0MDU2NTgzOGQ4NDI1MGJiYTliZDkwNGQ5OTJhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1l
bGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTEg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgor
ICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9k
aXY+CisgICAgPHA+bm9ybWFsPC9wPgorICAgIDxwIHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVu
PC9wPgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVj
dG9yLWxpc3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDZk
NTQ4ZjZiYTM5MWNiNzRhODIzMTZlZGI5NmRjNWQyZTcxZjM2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVz
ZWQtaW4tc2VsZWN0b3ItbGlzdC5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNj
cmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7
CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnY29udGVudDo6LXdlYmtpdC1kaXN0cmlidXRlZChk
aXYpLCBwIHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVE
T00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290
KAorICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICBjcmVh
dGVET00oJ2NvbnRlbnQnKSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgncCcsIHt9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVl
bicpKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSksCisgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgncCcsIHsnY2xhc3MnOiAnaGVsbG8nfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSkpKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55LWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtd2l0aC1h
bnktZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzM3OTk0M2RmNjQ4OTAzMjRkYzAyZDlkZTMw
MTg1MWExMTE4NjUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55LWV4cGVjdGVkLmh0bWwKQEAg
LTAsMCArMSwxOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0i
c2FuZGJveCI+CisgIDxkaXY+CisgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAgICA8ZGl2IHN0eWxl
PSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgIDwvZGl2PgorICA8ZGl2PgorICAgIDxkaXY+
bm9ybWFsPC9kaXY+CisgICAgPGRpdiBzdHlsZT0iY29sb3I6IHJlZCI+cmVkPC9kaXY+CisgIDwv
ZGl2PgorICA8ZGl2PgorICAgIDxkaXY+bm9ybWFsPC9kaXY+CisgICAgPGRpdiBzdHlsZT0iY29s
b3I6IGJsdWUiPmJsdWU8L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtd2l0aC1hbnkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRl
ZC1wc2V1ZG8tZWxlbWVudC13aXRoLWFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjYTIzNWE0M2RiM2Y3
YjNiNzliOWFlNGNjOTdhODM3ZThjNmE4ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtd2l0aC1hbnkuaHRt
bApAQCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUx
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlMS5pbm5lckhU
TUwgPSAnKjo6LXdlYmtpdC1kaXN0cmlidXRlZChkaXYpIHsgY29sb3I6IGdyZWVuOyB9JzsKKwor
dmFyIHNoYWRvd1N0eWxlMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFk
b3dTdHlsZTIuaW5uZXJIVE1MID0gJ2NvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoKikgeyBj
b2xvcjogcmVkOyB9JzsKKwordmFyIHNoYWRvd1N0eWxlMyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZTMuaW5uZXJIVE1MID0gJyo6Oi13ZWJraXQtZGlzdHJp
YnV0ZWQoKikgeyBjb2xvcjogYmx1ZTsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRl
RE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAg
ICAgICAgICAgIHNoYWRvd1N0eWxlMSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2
Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJ25vcm1hbCcpKSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwK
KyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSkpOworCitzYW5kYm94LmFwcGVu
ZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgIGNyZWF0ZVNo
YWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZTIsCisgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSksCisgICAgICAgICAgICAgICAgICBjcmVh
dGVET00oJ2NvbnRlbnQnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisg
ICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgncmVkJykpKSk7
CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAg
ICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZTMs
CisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSksCisgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURP
TSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgnYmx1ZScpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyNDNjYTFjOGM5NGYzMjY4YjY0ZjcwZWRkMjEyNmIwN2Iw
ZGYwMWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlz
dHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20u
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4K
KzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHls
ZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0
ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRl
RE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAg
ICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250
ZW50JykpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183111</attachid>
            <date>2013-01-16 20:47:14 -0800</date>
            <delta_ts>2013-02-12 00:13:49 -0800</delta_ts>
            <desc>Addressed. We need to update the URL in the ChangeLog once the spec is updated.</desc>
            <filename>bug-82169-20130117134415.patch</filename>
            <type>text/plain</type>
            <size>61398</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5OTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQ5MmY5M2M3ZmY0Y2Vh
MjhjMTBlMDQxNzgxZDY2OWZkMmE5Y2U1ZS4uNDRlMjgxOGViYTM3MDQ1YjBmNDY5NzFmZmYyMjQ5
ZmM4NzI0NjY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzOCBAQAorMjAxMy0wMS0xNiAgSGF5
YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NoYWRvdyBET01dIElt
cGxlbWVudHMgYSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxlbWVudC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMTY5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBhICc6OmRpc3Ry
aWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50LgorICAgICAgICBTZWUgdGhlIFNoYWRvdyBET00gc3Bl
Y2lmaWNhdGlvbiBmb3IgdGhlIGRldGFpbC4KKworICAgICAgICAjIEZJWE1FOiBVcGRhdGUgYSBV
UkwgYWZ0ZXIgdGhlIHNwZWMgaXMgdXBkYXRlZC4KKyAgICAgICAgaHR0cDovL2R2Y3MudzMub3Jn
L2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwjc2Vs
ZWN0aW5nLW5vZGVzLWRpc3RyaWJ1dGVkLXRvLWluc2VydGlvbi1wb2ludHMKKworICAgICAgICBG
b3IgZXhhbXBsZSwgc3VwcG9zZSB3ZSBhcmUgZ2l2ZW4gdGhlIGZvbGxvd2luZyBET00gdHJlZSBh
bmQgc2hhZG93IHRyZWU6CisKKyAgICAgICAgLSA8QT4KKyAgICAgICAgICAtIDxCPgorICAgICAg
ICAgICAgLSA8Qz4KKworICAgICAgICBbQSdzIFNoYWRvd1Jvb3RdCisgICAgICAgICAgPEQ+Cisg
ICAgICAgICAgLSA8c3R5bGU+CisgICAgICAgICAgICAgIEUgY29udGVudDo6ZGlzdHJpYnV0ZWQo
QiBDKSB7IGNvbG9yOiBncmVlbjsgfQorICAgICAgICAgIC0gPEU+CisgICAgICAgICAgICAtIDxj
b250ZW50PiAgKE5vZGUgQiBpcyBkaXN0cmlidXRlZCB0byB0aGlzIGluc2VydGlvbiBwb2ludC4p
CisKKyAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgc3R5bGUgcnVsZSBkZWZpbmVkIGluIHRoZSBz
aGFkb3cgdHJlZSBtYXRjaGVzIG5vZGUgJ0MnLgorCisgICAgICAgIEEgJzo6ZGlzdHJpYnV0ZWQo
KScgcHNldWRvIGVsZW1lbnQgY2FuIG5vdCBiZSBhIHBzZXVkbyBjbGFzcyBzaW5jZQorICAgICAg
ICBhbiBpbnRlcnNlY3Rpb24gYmV0d2VlbiBtYXRjaGVkX2VsZW1lbnRzKHNvbWVfc2VsZWN0b3Ip
IGFuZAorICAgICAgICBtYXRjaGVkX2VsZW1lbnRzKHNvbWVfc2VsZWN0b3I6OmRpc3RyaWJ1dGVk
KC4uLikpIGlzIGFsd2F5cyBhbgorICAgICAgICBlbXB0eSBzZXQuIEEgJzo6ZGlzdHJpYnV0ZWQo
KScgcHNldWRvIGVsZW1lbnQgaXMgdGhlIGZpcnN0LWV2ZXIKKyAgICAgICAgKmZ1bmN0aW9uYWwq
IHBzZXVkbyBlbGVtZW50IHdoaWNoIHRha2VzIGEgcGFyYW1ldGVyLCB3aGljaCBjYW4gYmUKKyAg
ICAgICAgYSBzZWxlY3Rvci4KKworICAgICAgICBUaGlzIHJ1bGUgY3Jvc3NlcyB0aGUgc2hhZG93
IGJvdW5kYXJ5IGZyb20gYSBzaGFkb3cgdHJlZSB0byB0aGUKKyAgICAgICAgdHJlZSBvZiBpdHMg
c2hhZG93IGhvc3QuIFRoYXQgbWVhbnMgYSBydWxlIHdoaWNoIGluY2x1ZGVzCisgICAgICAgICc6
OmRpc3RyaWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50IGlzIGRlZmluZWQgaW4gc2hhZG93IHRyZWUs
IGJ1dAorICAgICAgICB0aGUgbm9kZSB3aGljaCBpcyBtYXRjaGVkIGluIHRoZSBydWxlLCB0aGUg
c3ViamVjdCBvZiB0aGUKKyAgICAgICAgc2VsZWN0b3IsIGlzIG91dHNpZGUgb2YgdGhlIHNoYWRv
dyB0cmVlLiBUaGVyZWZvcmUsIHdlIGNhbm5vdAorICAgICAgICBwcmVkaWN0IHdoZXJlIHRoZSBz
dWJqZWN0IG9mIHRoZSBzZWxlY3RvciB3aWxsIGJlIGJlZm9yZWhhbmQuCisgICAgICAgIEN1cnJl
bnQgQ1NTIGltcGxlbWVudGF0aW9uIGFzc3VtZXMgdGhlIHN1YmplY3Qgb2YgdGhlIHNlbGVjdG9y
CisgICAgICAgIG11c3QgZXhpc3QgaW4gdGhlIGN1cnJlbnQgc2NvcGUuCisKKyAgICAgICAgVG8g
b3ZlcmNvbWUgdGhpcyBpc3N1ZSwgU3R5bGVSZXNvbHZlciBub3cgaGFzIGEgaW5zdGFuY2Ugb2YK
KyAgICAgICAgU2hhZG93RGlzdHJpYnV0ZWRSdWxlcyBjbGFzcy4gIEEgc3R5bGUgcnVsZSB3aWxs
IGJlIHN0b3JlZCBpbiB0aGlzCisgICAgICAgIGluc3RhbmNlIGlmIHRoZSBydWxlIGluY2x1ZGVz
IGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvIGVsZW1lbnQuCisgICAgICAgIFRoaXMgY2xhc3Mg
YWxzbyBrZWVwcyB0cmFjayBvZiBlYWNoIFJ1bGVTZXQgYnkgbWFwcGluZyBpdCB3aXRoIGEKKyAg
ICAgICAgc2NvcGUgd2hlcmUgdGhlIHJ1bGUgd2FzIG9yaWdpbmFsbHkgZGVmaW5lZC4gSW4gdGhl
IGV4YW1wbGUsIHRoZQorICAgICAgICBzY29wZSBpcyAnRCcuICBUaGUgc2NvcGUgaXMgdXNlZCB0
byBjaGVjayB3aGV0aGVyIHRoZSBsZWZ0LW1vc3QKKyAgICAgICAgbWF0Y2hlZCBlbGVtZW50IChp
biB0aGUgZXhhbXBsZSwgaXQncyBhIG5vZGUgJ0UnKSBleGlzdHMgaW4gdGhlCisgICAgICAgIHNj
b3BlLgorCisgICAgICAgIEludGVybmFsbHksIGEgJzo6ZGlzdHJpYnV0ZWQnIHBzZXVkbyBlbGVt
ZW50IGlzIHJlcHJlc2VudGVkIGJ5IGEKKyAgICAgICAgbmV3bHkgaW50cm9kdWNlZCAnU2hhZG93
RGlzdHJpYnV0ZWQnIHJlbGF0aW9uLiAgVGhhdCBtYWtlcyBhbgorICAgICAgICBpbXBsZW1lbnRh
dGlvbiBvZiBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoKSBtdWNoIHNpbXBsZXIuCisg
ICAgICAgIEEgdHJhbnNmb3JtYXRpb24gZnJvbSBhIGRpc3RyaWJ1dGVkIHBzZXVkbyBlbGVtZW50
IHRvIGEKKyAgICAgICAgU2hhZG93RGlzdHJpYnV0ZWQgaXMgZG9uZSBpbiBwYXJzaW5nIHN0YWdl
IG9mIENTUy4KKworICAgICAgICBTaW5jZSAnOjpkaXN0cmlidXRlZCgpJyBpcyBhbiBleHBlcmlt
ZW50YWwgZmVhdHVyZSwgaXQncyBhY3R1YWxseQorICAgICAgICBwcmVmaXhlZCB3aXRoICctd2Vi
a2l0LScgYW5kIGd1YXJkZWQgYnkgU0hBRE9XX0RPTSBmbGFnLgorCisgICAgICAgIFRlc3RzOiBm
YXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVt
ZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1
ZG8tZWxlbWVudC1tYXRjaC1hbGwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWRlc2NlbmRhbnQuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3Rl
ZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRv
LWVsZW1lbnQtbm8tbWF0Y2guaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC1zdXBwb3J0LXNlbGVjdG9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdp
dGgtYW55Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOgorICAg
ICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpk
ZXRlY3REYXNoVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpyZXdyaXRlU3Bl
Y2lmaWVyc1dpdGhFbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnJl
d3JpdGVTcGVjaWZpZXJzKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgICog
Y3NzL0NTU1BhcnNlclZhbHVlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxl
Y3Rvcjo6Q1NTUGFyc2VyU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMu
aDoKKyAgICAgICAgKENTU1BhcnNlclNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlclNlbGVjdG9yOjpmdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnNldEZ1bmN0aW9uQXJndW1lbnRTZWxlY3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6aXNEaXN0cmlidXRlZFBzZXVkb0VsZW1l
bnQpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTZWxlY3Rvcjo6cHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6bmFtZVRvUHNldWRvVHlw
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCk6CisgICAgICAg
ICogY3NzL0NTU1NlbGVjdG9yLmg6CisgICAgICAgIChDU1NTZWxlY3Rvcik6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjppc0Rpc3RyaWJ1dGVkUHNl
dWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6aXNTaGFkb3dEaXN0
cmlidXRlZCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFNlbGVjdG9ySGFzU2hhZG93RGlzdHJpYnV0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0b3JIYXNTaGFkb3dEaXN0cmlidXRlZDo6b3BlcmF0b3IoKSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxpc3Q6Omhhc1NoYWRvd0Rpc3RyaWJ1dGVkQXQp
OgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvckxpc3QuaDoKKyAgICAgICAgKENTU1NlbGVjdG9y
TGlzdCk6CisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVs
ZVNldDo6YWRkQ2hpbGRSdWxlcyk6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6Om1hdGNoKToKKyAgICAgICAgKiBj
c3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6
OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0OjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCk6CisgICAg
ICAgIChTZWxlY3RvckNoZWNraW5nQ29udGV4dCk6CisgICAgICAgICogY3NzL1NlbGVjdG9yRmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0SWRlbnRp
Zmllckhhc2hlcyk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEaXN0cmlidXRlZFJ1bGVzOjphZGRS
dWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXM6OmNvbGxlY3RN
YXRjaFJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnJlc2V0QXV0
aG9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNo
aW5nUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JS
dWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdS
dWxlc0Zvckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cnVsZU1hdGNo
ZXMpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChNYXRjaFJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWF0Y2hSZXF1ZXN0OjpNYXRjaFJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWF0Y2hSZXF1ZXN0OjpjbG9uZVdpdGgpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChTaGFkb3dEaXN0cmlidXRlZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXM6OmNsZWFyKToKKyAgICAgICAgKFN0eWxlUmVzb2x2ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c2hhZG93RGlzdHJpYnV0ZWRSdWxl
cyk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbGxlY3RJbnNlcnRpb25Qb2ludHNXaGVyZU5vZGVJc0Rpc3RyaWJ1dGVkKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorCiAyMDEzLTAxLTE2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBn
b29nbGUuY29tPgogCiAgICAgICAgIFdlYkNvcmU6OlNjcmlwdFJ1bm5lcjo6dGltZXJGaXJlZCgp
IGlzIHJlcG9ydGVkIHRvIGNyYXNoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0dyYW1tYXIueS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KaW5kZXgg
NjE4N2Q2YzE1NDVhOGUzYzA3MTc2NDIwZTA0YTkzZWQ0MWVjMDgxMi4uNjA3ZWE3MTA5ZDA4ZTNk
NmU0MzIyMDc0YmY5NzA4ZDcxYmJiOTE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55Lmlu
CkBAIC02MSw3ICs2MSwxMSBAQCBzdGF0aWMgaW5saW5lIGludCBjc3N5eWVycm9yKHZvaWQqLCBj
b25zdCBjaGFyKikKIAogJX0KIAorI2lmIEVOQUJMRV9TSEFET1dfRE9NCislZXhwZWN0IDY2Cisj
ZWxzZQogJWV4cGVjdCA2NQorI2VuZGlmCiAKICVub25hc3NvYyBMT1dFU1RfUFJFQwogCkBAIC0x
NzcsNiArMTgxLDcgQEAgc3RhdGljIGlubGluZSBpbnQgY3NzeXllcnJvcih2b2lkKiwgY29uc3Qg
Y2hhciopCiAldG9rZW4gPHN0cmluZz4gQ1VFRlVOQ1RJT04KICNlbmRpZgogJXRva2VuIDxzdHJp
bmc+IE5PVEZVTkNUSU9OCisldG9rZW4gPHN0cmluZz4gRElTVFJJQlVURURGVU5DVElPTgogJXRv
a2VuIDxzdHJpbmc+IENBTENGVU5DVElPTgogJXRva2VuIDxzdHJpbmc+IE1JTkZVTkNUSU9OCiAl
dG9rZW4gPHN0cmluZz4gTUFYRlVOQ1RJT04KQEAgLTExNTMsMTIgKzExNTgsMTIgQEAgc2ltcGxl
X3NlbGVjdG9yOgogICAgIHwgZWxlbWVudF9uYW1lIHNwZWNpZmllcl9saXN0IHsKICAgICAgICAg
JCQgPSAkMjsKICAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVj
aWZpZXJzV2l0aEVsZW1lbnROYW1lKG51bGxBdG9tLCAkMSwgJCQpOworICAgICAgICAgICAgJCQg
PSBwYXJzZXItPnJld3JpdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKG51bGxBdG9tLCAkMSwg
JCQpOwogICAgIH0KICAgICB8IHNwZWNpZmllcl9saXN0IHsKICAgICAgICAgJCQgPSAkMTsKICAg
ICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVs
ZW1lbnROYW1lKG51bGxBdG9tLCBzdGFyQXRvbSwgJCQpOworICAgICAgICAgICAgJCQgPSBwYXJz
ZXItPnJld3JpdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKG51bGxBdG9tLCBzdGFyQXRvbSwg
JCQpOwogICAgIH0KICAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBlbGVtZW50X25hbWUgewogICAg
ICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwpAQCAtMTE2NywxMiAr
MTE3MiwxMiBAQCBzaW1wbGVfc2VsZWN0b3I6CiAgICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3IgZWxl
bWVudF9uYW1lIHNwZWNpZmllcl9saXN0IHsKICAgICAgICAgJCQgPSAkMzsKICAgICAgICAgaWYg
KCQkKQotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1l
KCQxLCAkMiwgJCQpOworICAgICAgICAgICAgJCQgPSBwYXJzZXItPnJld3JpdGVTcGVjaWZpZXJz
V2l0aEVsZW1lbnROYW1lKCQxLCAkMiwgJCQpOwogICAgIH0KICAgICB8IG5hbWVzcGFjZV9zZWxl
Y3RvciBzcGVjaWZpZXJfbGlzdCB7CiAgICAgICAgICQkID0gJDI7CiAgICAgICAgIGlmICgkJCkK
LSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSgkMSwg
c3RhckF0b20sICQkKTsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5yZXdyaXRlU3BlY2lmaWVy
c1dpdGhFbGVtZW50TmFtZSgkMSwgc3RhckF0b20sICQkKTsKICAgICB9CiAgIDsKIApAQCAtMTIx
Nyw3ICsxMjIyLDcgQEAgc3BlY2lmaWVyX2xpc3Q6CiAgICAgICAgIGlmICghJDIpCiAgICAgICAg
ICAgICAkJCA9IDA7CiAgICAgICAgIGVsc2UgaWYgKCQxKQotICAgICAgICAgICAgJCQgPSBwYXJz
ZXItPnVwZGF0ZVNwZWNpZmllcnMoJDEsICQyKTsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5y
ZXdyaXRlU3BlY2lmaWVycygkMSwgJDIpOwogICAgIH0KICAgICB8IHNwZWNpZmllcl9saXN0IGVy
cm9yIHsKICAgICAgICAgJCQgPSAwOwpAQCAtMTM2NCw2ICsxMzY5LDE5IEBAIHBzZXVkbzoKICAg
ICAgICAgICAgICQkID0gMDsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEVfU0hBRE9XX0RPTQor
ICAgIHwgJzonICc6JyBESVNUUklCVVRFREZVTkNUSU9OIG1heWJlX3NwYWNlIHNlbGVjdG9yIG1h
eWJlX3NwYWNlICcpJyB7CisgICAgICAgIGlmICghJDUpCisgICAgICAgICAgICAkJCA9IDA7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2Vs
ZWN0b3IoKTsKKyAgICAgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvRWxl
bWVudCk7CisgICAgICAgICAgICAkJC0+c2V0RnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKCQ1KTsK
KyAgICAgICAgICAgICQzLmxvd2VyKCk7CisgICAgICAgICAgICAkJC0+c2V0VmFsdWUoJDMpOwor
ICAgICAgICB9CisgICAgfQorI2VuZGlmCiAgICAgLy8gdXNlIGJ5IDotd2Via2l0LWFueS4KICAg
ICAvLyBGSVhNRTogc2hvdWxkIHdlIHN1cHBvcnQgZ2VuZXJpYyBzZWxlY3RvcnMgaGVyZSBvciBq
dXN0IHNpbXBsZV9zZWxlY3RvcnM/CiAgICAgLy8gVXNlIHNpbXBsZV9zZWxlY3Rvcl9saXN0IGZv
ciBub3cgdG8gbWF0Y2ggLW1vei1hbnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDhl
YzE0YjE4ZDY3MjBjNTg0YzgxZmY5OGEwNTU2NDFmY2Q0N2I4OGQuLjhkMTIwYjIyNmMzYzBhN2Fk
ZDg5MGZhYTM4NmFkYWI0YzgzYjhkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC05
ODk1LDYgKzk4OTUsMTAgQEAgaW5saW5lIHZvaWQgQ1NTUGFyc2VyOjpkZXRlY3REYXNoVG9rZW4o
aW50IGxlbmd0aCkKICNlbmRpZgogICAgIH0gZWxzZSBpZiAobGVuZ3RoID09IDEyICYmIGlzRXF1
YWxUb0NTU0lkZW50aWZpZXIobmFtZSArIDEsICJ3ZWJraXQtY2FsYyIpKQogICAgICAgICBtX3Rv
a2VuID0gQ0FMQ0ZVTkNUSU9OOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGVsc2UgaWYg
KGxlbmd0aCA9PSAxOSAmJiBpc0VxdWFsVG9DU1NJZGVudGlmaWVyKG5hbWUgKyAxLCAid2Via2l0
LWRpc3RyaWJ1dGVkIikpCisgICAgICAgIG1fdG9rZW4gPSBESVNUUklCVVRFREZVTkNUSU9OOwor
I2VuZGlmCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgpAQCAtMTA4OTUs
MTYgKzEwODk5LDMyIEBAIFF1YWxpZmllZE5hbWUgQ1NTUGFyc2VyOjpkZXRlcm1pbmVOYW1lSW5O
YW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvCiAgICAgcmV0dXJuIFF1YWxp
ZmllZE5hbWUocHJlZml4LCBsb2NhbE5hbWUsIG1fc3R5bGVTaGVldC0+ZGV0ZXJtaW5lTmFtZXNw
YWNlKHByZWZpeCkpOwogfQogCi12b2lkIENTU1BhcnNlcjo6dXBkYXRlU3BlY2lmaWVyc1dpdGhF
bGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVByZWZpeCwgY29uc3QgQXRv
bWljU3RyaW5nJiBlbGVtZW50TmFtZSwgQ1NTUGFyc2VyU2VsZWN0b3IqIHNwZWNpZmllcnMpCitD
U1NQYXJzZXJTZWxlY3RvciogQ1NTUGFyc2VyOjpyZXdyaXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50
TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVByZWZpeCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBlbGVtZW50TmFtZSwgQ1NTUGFyc2VyU2VsZWN0b3IqIHNwZWNpZmllcnMpCiB7CiAgICAg
QXRvbWljU3RyaW5nIGRldGVybWluZWROYW1lc3BhY2UgPSBuYW1lc3BhY2VQcmVmaXggIT0gbnVs
bEF0b20gJiYgbV9zdHlsZVNoZWV0ID8gbV9zdHlsZVNoZWV0LT5kZXRlcm1pbmVOYW1lc3BhY2Uo
bmFtZXNwYWNlUHJlZml4KSA6IG1fZGVmYXVsdE5hbWVzcGFjZTsKICAgICBRdWFsaWZpZWROYW1l
IHRhZyA9IFF1YWxpZmllZE5hbWUobmFtZXNwYWNlUHJlZml4LCBlbGVtZW50TmFtZSwgZGV0ZXJt
aW5lZE5hbWVzcGFjZSk7CisKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBpZiAoc3BlY2lm
aWVycy0+aXNEaXN0cmlidXRlZFBzZXVkb0VsZW1lbnQoKSkgeworICAgICAgICBDU1NQYXJzZXJT
ZWxlY3RvciogYXJndW1lbnRTZWxlY3RvciA9IHNwZWNpZmllcnMtPmZ1bmN0aW9uQXJndW1lbnRT
ZWxlY3RvcigpOworICAgICAgICBBU1NFUlQoYXJndW1lbnRTZWxlY3Rvcik7CisgICAgICAgIENT
U1BhcnNlclNlbGVjdG9yKiBlbmQgPSBhcmd1bWVudFNlbGVjdG9yOworICAgICAgICB3aGlsZSAo
ZW5kLT50YWdIaXN0b3J5KCkpCisgICAgICAgICAgICBlbmQgPSBlbmQtPnRhZ0hpc3RvcnkoKTsK
KyAgICAgICAgT3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBlbGVtZW50TmFtZVNlbGVjdG9yID0g
YWRvcHRQdHIobmV3IENTU1BhcnNlclNlbGVjdG9yKTsKKyAgICAgICAgZWxlbWVudE5hbWVTZWxl
Y3Rvci0+c2V0VGFnKHRhZyk7CisgICAgICAgIGVuZC0+c2V0VGFnSGlzdG9yeShlbGVtZW50TmFt
ZVNlbGVjdG9yLnJlbGVhc2UoKSk7CisgICAgICAgIGVuZC0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0
b3I6OlNoYWRvd0Rpc3RyaWJ1dGVkKTsKKyAgICAgICAgcmV0dXJuIGFyZ3VtZW50U2VsZWN0b3I7
CisgICAgfQorI2VuZGlmCisKICAgICBpZiAoIXNwZWNpZmllcnMtPmlzQ3VzdG9tUHNldWRvRWxl
bWVudCgpKSB7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICAgICBpZiAoIShzcGVjaWZp
ZXJzLT5wc2V1ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0N1ZSkpCiAjZW5kaWYKICAg
ICAgICAgICAgIHNwZWNpZmllcnMtPnNldFRhZyh0YWcpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBzcGVjaWZpZXJzOwogICAgIH0KIAogICAgIENTU1BhcnNlclNlbGVjdG9yKiBs
YXN0U2hhZG93RGVzY2VuZGFudCA9IHNwZWNpZmllcnM7CkBAIC0xMDkxNyw3ICsxMDkzNyw3IEBA
IHZvaWQgQ1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlCiAKICAgICBpZiAobGFzdFNoYWRvd0Rlc2NlbmRhbnQt
PnRhZ0hpc3RvcnkoKSkgewogICAgICAgICBsYXN0U2hhZG93RGVzY2VuZGFudC0+dGFnSGlzdG9y
eSgpLT5zZXRUYWcodGFnKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gc3BlY2lm
aWVyczsKICAgICB9CiAKICAgICAvLyBGb3Igc2hhZG93LUlEIHBzZXVkby1lbGVtZW50cyB0byBi
ZSBjb3JyZWN0bHkgbWF0Y2hlZCwgdGhlIFNoYWRvd0Rlc2NlbmRhbnQgY29tYmluYXRvciBoYXMg
dG8gYmUgdXNlZC4KQEAgLTEwOTI2LDkgKzEwOTQ2LDEwIEBAIHZvaWQgQ1NTUGFyc2VyOjp1cGRh
dGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNl
UHJlCiAgICAgZWxlbWVudE5hbWVTZWxlY3Rvci0+c2V0VGFnKHRhZyk7CiAgICAgbGFzdFNoYWRv
d0Rlc2NlbmRhbnQtPnNldFRhZ0hpc3RvcnkoZWxlbWVudE5hbWVTZWxlY3Rvci5yZWxlYXNlKCkp
OwogICAgIGxhc3RTaGFkb3dEZXNjZW5kYW50LT5zZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6U2hh
ZG93RGVzY2VuZGFudCk7CisgICAgcmV0dXJuIHNwZWNpZmllcnM7CiB9CiAKLUNTU1BhcnNlclNl
bGVjdG9yKiBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnMoQ1NTUGFyc2VyU2VsZWN0b3IqIHNw
ZWNpZmllcnMsIENTU1BhcnNlclNlbGVjdG9yKiBuZXdTcGVjaWZpZXIpCitDU1NQYXJzZXJTZWxl
Y3RvciogQ1NTUGFyc2VyOjpyZXdyaXRlU3BlY2lmaWVycyhDU1NQYXJzZXJTZWxlY3Rvciogc3Bl
Y2lmaWVycywgQ1NTUGFyc2VyU2VsZWN0b3IqIG5ld1NwZWNpZmllcikKIHsKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiAgICAgaWYgKG5ld1NwZWNpZmllci0+aXNDdXN0b21Qc2V1ZG9FbGVtZW50
KCkgfHwgbmV3U3BlY2lmaWVyLT5wc2V1ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0N1
ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IDE3ZTNhN2Q1YmI5YjJkZTk0ZDhjNGY4YzZk
MDgzMDg5MzEwZTZiOTcuLmEwMGNhZDlkZmI4MTAyNjY0Mzk4NzEyMjZjMTY1NTk2NzNmNDMyMDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTMxNiw4ICszMTYsOCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGFkZE5hbWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRv
bWljU3RyaW5nJiB1cmkpOwogICAgIFF1YWxpZmllZE5hbWUgZGV0ZXJtaW5lTmFtZUluTmFtZXNw
YWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2Fs
TmFtZSk7Ci0gICAgdm9pZCB1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRO
YW1lLCBDU1NQYXJzZXJTZWxlY3RvciopOwotICAgIENTU1BhcnNlclNlbGVjdG9yKiB1cGRhdGVT
cGVjaWZpZXJzKENTU1BhcnNlclNlbGVjdG9yKiwgQ1NTUGFyc2VyU2VsZWN0b3IqKTsKKyAgICBD
U1NQYXJzZXJTZWxlY3RvciogcmV3cml0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lc3BhY2VQcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVu
dE5hbWUsIENTU1BhcnNlclNlbGVjdG9yKik7CisgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIHJld3Jp
dGVTcGVjaWZpZXJzKENTU1BhcnNlclNlbGVjdG9yKiwgQ1NTUGFyc2VyU2VsZWN0b3IqKTsKIAog
ICAgIHZvaWQgaW52YWxpZEJsb2NrSGl0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZh
bHVlcy5jcHAKaW5kZXggZDIzYjg1ODVkNWQ3YmI4ZWIwZjI2ODIzNGI2ZWQwNmE1ODgxZGYyNy4u
ZTVhMGIzNzdlN2VkNzYwNWQyZjkyNjc0ZjNmOGE2ZjM3OWZhZjI1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKQEAgLTE0Niw2ICsxNDYsOSBAQCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBDU1NQYXJzZXJWYWx1ZTo6Y3JlYXRlQ1NTVmFsdWUoKQogCiBDU1NQYXJzZXJTZWxl
Y3Rvcjo6Q1NTUGFyc2VyU2VsZWN0b3IoKQogICAgIDogbV9zZWxlY3RvcihhZG9wdFB0cihmYXN0
TmV3PENTU1NlbGVjdG9yPigpKSkKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAsIG1fZnVu
Y3Rpb25Bcmd1bWVudFNlbGVjdG9yKDApCisjZW5kaWYKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlclZhbHVlcy5oCmluZGV4IDEzMDFiMWNlMGUxMTM3MjNjY2Y4MjE2MjhlZTA1ZTJlMzEw
MjM2N2IuLjJjZDQwOTk0ZjAxZmJmZWU3Y2U2Y2IwMTA4M2Y0MTQ5NTM5YTE0MzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKQEAgLTE4Niw2ICsxODYsMTIgQEAgcHVibGljOgog
CiAgICAgdm9pZCBhZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2Vs
ZWN0b3I+ID4mIHNlbGVjdG9yVmVjdG9yKTsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAg
IENTU1BhcnNlclNlbGVjdG9yKiBmdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2Z1bmN0aW9uQXJndW1lbnRTZWxlY3RvcjsgfQorICAgIHZvaWQgc2V0RnVuY3Rpb25B
cmd1bWVudFNlbGVjdG9yKENTU1BhcnNlclNlbGVjdG9yKiBzZWxlY3RvcikgeyBtX2Z1bmN0aW9u
QXJndW1lbnRTZWxlY3RvciA9IHNlbGVjdG9yOyB9CisgICAgYm9vbCBpc0Rpc3RyaWJ1dGVkUHNl
dWRvRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3ItPmlzRGlzdHJpYnV0ZWRQc2V1
ZG9FbGVtZW50KCk7IH0KKyNlbmRpZgorCiAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgcHNl
dWRvVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3ItPnBzZXVkb1R5cGUoKTsgfQogICAg
IGJvb2wgaXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvci0+
aXNDdXN0b21Qc2V1ZG9FbGVtZW50KCk7IH0KIApAQCAtMjAwLDYgKzIwNiw5IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgT3duUHRyPENTU1NlbGVjdG9yPiBtX3NlbGVjdG9yOwogICAgIE93blB0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4gbV90YWdIaXN0b3J5OworI2lmIEVOQUJMRShTSEFET1dfRE9N
KQorICAgIENTU1BhcnNlclNlbGVjdG9yKiBtX2Z1bmN0aW9uQXJndW1lbnRTZWxlY3RvcjsKKyNl
bmRpZgogfTsKIAogaW5saW5lIGJvb2wgQ1NTUGFyc2VyU2VsZWN0b3I6Omhhc1NoYWRvd0Rlc2Nl
bmRhbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXggNWE2ZWNjYWZi
OTQyYzBkNmZhNzNhNjJiNmZmYzc0MjFmM2NhYTllYy4uN2Q4NDc0YjUzMTNlYWY5NDdkOWY4MDQ2
NWE3MDRhNmZjYjJhZmE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCkBAIC0yMjcs
NiArMjI3LDkgQEAgUHNldWRvSWQgQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVkb1R5cGUgdHlw
ZSkKICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQogICAgIGNhc2UgUHNldWRvU2VhbWxlc3NE
b2N1bWVudDoKICNlbmRpZgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGNhc2UgUHNldWRv
RGlzdHJpYnV0ZWQ6CisjZW5kaWYKICAgICAgICAgcmV0dXJuIE5PUFNFVURPOwogICAgIGNhc2Ug
UHNldWRvTm90UGFyc2VkOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTMxNiw2
ICszMTksOSBAQCBzdGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsZWN0b3I6
OlBzZXVkb1R5cGU+KiBuYW1lVG9Qc2V1ZG9UeXBlTWFwKAogI2lmIEVOQUJMRShJRlJBTUVfU0VB
TUxFU1MpCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNlYW1sZXNzRG9j
dW1lbnQsICgiLXdlYmtpdC1zZWFtbGVzcy1kb2N1bWVudCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKICNlbmRpZgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBkaXN0cmlidXRlZCwgKCItd2Via2l0LWRp
c3RyaWJ1dGVkKCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyNlbmRp
ZgogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpblJhbmdlLCAoImluLXJh
bmdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBvdXRPZlJhbmdlLCAoIm91dC1vZi1yYW5nZSIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIApAQCAtMzk4LDYgKzQwNCw5IEBA
IHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlw
ZT4qIG5hbWVUb1BzZXVkb1R5cGVNYXAoCiAjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKICAg
ICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KHNlYW1sZXNzRG9jdW1lbnQuaW1wbCgpLCBDU1NT
ZWxlY3Rvcjo6UHNldWRvU2VhbWxlc3NEb2N1bWVudCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKKyAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGRpc3RyaWJ1dGVkLmltcGwo
KSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Rpc3RyaWJ1dGVkKTsKKyNlbmRpZgogICAgICAgICBuYW1l
VG9Qc2V1ZG9UeXBlLT5zZXQoaW5SYW5nZS5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9JblJh
bmdlKTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KG91dE9mUmFuZ2UuaW1wbCgpLCBD
U1NTZWxlY3Rvcjo6UHNldWRvT3V0T2ZSYW5nZSk7CiAgICAgfQpAQCAtNDQ4LDYgKzQ1Nyw5IEBA
IHZvaWQgQ1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY29uc3QKICAgICBjYXNlIFBz
ZXVkb0ZpcnN0TGV0dGVyOgogICAgIGNhc2UgUHNldWRvRmlyc3RMaW5lOgogICAgICAgICBjb21w
YXQgPSB0cnVlOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGNhc2UgUHNldWRvRGlzdHJp
YnV0ZWQ6CisjZW5kaWYKICAgICBjYXNlIFBzZXVkb1Jlc2l6ZXI6CiAgICAgY2FzZSBQc2V1ZG9T
Y3JvbGxiYXI6CiAgICAgY2FzZSBQc2V1ZG9TY3JvbGxiYXJDb3JuZXI6CkBAIC02ODQsNiArNjk2
LDEwIEBAIFN0cmluZyBDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KCkgY29uc3QKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFk
b3dEZXNjZW5kYW50OgogICAgICAgICAgICAgcmV0dXJuIHRhZ0hpc3RvcnlUZXh0ICsgc3RyLnRv
U3RyaW5nKCk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgIGNhc2UgQ1NTU2VsZWN0
b3I6OlNoYWRvd0Rpc3RyaWJ1dGVkOgorICAgICAgICAgICAgcmV0dXJuIHRhZ0hpc3RvcnlUZXh0
ICsgIjo6LXdlYmtpdC1kaXN0cmlidXRlZCgiICsgc3RyLnRvU3RyaW5nKCkgKyAiKSI7CisjZW5k
aWYKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCBhNWQy
MzlmZTBjNGEzODM1OGViZmU2YmNhNWM2YWVhOTgwNDdjMjM5Li5jMDY2NDdiNWNlYzhjOWIzODBj
MGUwZTMxN2EwZTFhNmE4Mjc4ZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApAQCAtNzUs
NyArNzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgRGlyZWN0QWRqYWNl
bnQsCiAgICAgICAgICAgICBJbmRpcmVjdEFkamFjZW50LAogICAgICAgICAgICAgU3ViU2VsZWN0
b3IsCi0gICAgICAgICAgICBTaGFkb3dEZXNjZW5kYW50CisgICAgICAgICAgICBTaGFkb3dEZXNj
ZW5kYW50LAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICAgICAgU2hhZG93RGlzdHJp
YnV0ZWQKKyNlbmRpZgogICAgICAgICB9OwogCiAgICAgICAgIGVudW0gUHNldWRvVHlwZSB7CkBA
IC0xNjAsNyArMTYzLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFBzZXVk
b0Z1dHVyZUN1ZSwKICNlbmRpZgogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCi0gICAgICAg
ICAgICBQc2V1ZG9TZWFtbGVzc0RvY3VtZW50CisgICAgICAgICAgICBQc2V1ZG9TZWFtbGVzc0Rv
Y3VtZW50LAorI2VuZGlmCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgICAgICBQc2V1
ZG9EaXN0cmlidXRlZAogI2VuZGlmCiAgICAgICAgIH07CiAKQEAgLTIyMiw2ICsyMjgsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzQ3VzdG9tUHNldWRvRWxlbWVudCgp
IGNvbnN0OwogICAgICAgICBib29sIGlzU2libGluZ1NlbGVjdG9yKCkgY29uc3Q7CiAgICAgICAg
IGJvb2wgaXNBdHRyaWJ1dGVTZWxlY3RvcigpIGNvbnN0OworI2lmIEVOQUJMRShTSEFET1dfRE9N
KQorICAgICAgICBib29sIGlzRGlzdHJpYnV0ZWRQc2V1ZG9FbGVtZW50KCkgY29uc3Q7CisgICAg
ICAgIGJvb2wgaXNTaGFkb3dEaXN0cmlidXRlZCgpIGNvbnN0OworI2VuZGlmCiAKICAgICAgICAg
UmVsYXRpb24gcmVsYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZWxhdGlvbj4o
bV9yZWxhdGlvbik7IH0KIApAQCAtMzM0LDYgKzM0NCwxOCBAQCBpbmxpbmUgYm9vbCBDU1NTZWxl
Y3Rvcjo6aXNBdHRyaWJ1dGVTZWxlY3RvcigpIGNvbnN0CiAgICAgICAgIHx8IG1fbWF0Y2ggPT0g
Q1NTU2VsZWN0b3I6OkVuZDsKIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQoraW5saW5lIGJv
b2wgQ1NTU2VsZWN0b3I6OmlzRGlzdHJpYnV0ZWRQc2V1ZG9FbGVtZW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9tYXRjaCA9PSBQc2V1ZG9FbGVtZW50ICYmIHBzZXVkb1R5cGUoKSA9PSBQc2V1
ZG9EaXN0cmlidXRlZDsKK30KKworaW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6OmlzU2hhZG93RGlz
dHJpYnV0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3JlbGF0aW9uID09IENTU1NlbGVjdG9y
OjpTaGFkb3dEaXN0cmlidXRlZDsKK30KKyNlbmRpZgorCiBpbmxpbmUgdm9pZCBDU1NTZWxlY3Rv
cjo6c2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyBOZWVkIHRv
IGRvIHJlZiBjb3VudGluZyBtYW51YWxseSBmb3IgdGhlIHVuaW9uLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3JMaXN0LmNwcAppbmRleCA0MzEzNmQxYzkwMWM2MzQxYmFjYmVmODM5NDlkZjk0
ZTYwZjFjMzZjLi5kN2I4ZDEwNDk5ODY4YTY4N2U2M2M5M2U1YmM4ZDc1Y2JlMzU0ZWQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcApAQCAtMjExLDYgKzIxMSwyMCBAQCBi
b29sIENTU1NlbGVjdG9yTGlzdDo6aGFzSW52YWxpZFNlbGVjdG9yKCkgY29uc3QKICAgICByZXR1
cm4gZm9yRWFjaFNlbGVjdG9yKGZ1bmN0b3IsIHRoaXMpOwogfQogCisjaWYgRU5BQkxFKFNIQURP
V19ET00pCitjbGFzcyBTZWxlY3Rvckhhc1NoYWRvd0Rpc3RyaWJ1dGVkIHsKK3B1YmxpYzoKKyAg
ICBib29sIG9wZXJhdG9yKCkoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHNlbGVjdG9yLT5pc1NoYWRvd0Rpc3RyaWJ1dGVkKCk7CisgICAgfQorfTsKIAorYm9v
bCBDU1NTZWxlY3Rvckxpc3Q6Omhhc1NoYWRvd0Rpc3RyaWJ1dGVkQXQoc2l6ZV90IGluZGV4KSBj
b25zdAoreworICAgIFNlbGVjdG9ySGFzU2hhZG93RGlzdHJpYnV0ZWQgZnVuY3RvcjsKKyAgICBy
ZXR1cm4gZm9yRWFjaFRhZ1NlbGVjdG9yKGZ1bmN0b3IsIHNlbGVjdG9yQXQoaW5kZXgpKTsKK30K
KyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3JMaXN0LmgKaW5kZXggNGZjZmVlMmZhYTQxODJkN2E5YWIwNTViY2NlNTE5ZmU3NGUyMjcxNS4u
NGU3YjU4MmRiYzUxMThhNDVlNDZkYmJmMGNkODk0YTlmNzQzZjZiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTZWxlY3Rvckxpc3QuaApAQCAtNjAsNiArNjAsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
c2VsZWN0b3JzTmVlZE5hbWVzcGFjZVJlc29sdXRpb24oKTsKICAgICBib29sIGhhc0ludmFsaWRT
ZWxlY3RvcigpIGNvbnN0OwogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgYm9vbCBoYXNT
aGFkb3dEaXN0cmlidXRlZEF0KHNpemVfdCBpbmRleCkgY29uc3Q7CisjZW5kaWYKKwogICAgIFN0
cmluZyBzZWxlY3RvcnNUZXh0KCkgY29uc3Q7CiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9SdWxlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAppbmRleCBhN2Mz
MmRmOGRlMWRhZWNjNTJkNjNjODhiMmE2OTJjZWYxZWVkNDBiLi5iZGRlZDEyNThhY2YxNzdjZWZh
OWE5ZDJiY2UzZTdjMjMwZjg2YjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVs
ZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCkBAIC0yNzgsOSAr
Mjc4LDI1IEBAIHZvaWQgUnVsZVNldDo6YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3I8UmVmUHRy
PFN0eWxlUnVsZUJhc2U+ID4mIHJ1bGVzLCBjb25zdCBNCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHJ1bGVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFN0eWxlUnVsZUJhc2UqIHJ1bGUg
PSBydWxlc1tpXS5nZXQoKTsKIAotICAgICAgICBpZiAocnVsZS0+aXNTdHlsZVJ1bGUoKSkKLSAg
ICAgICAgICAgIGFkZFN0eWxlUnVsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihydWxlKSwgYWRk
UnVsZUZsYWdzKTsKLSAgICAgICAgZWxzZSBpZiAocnVsZS0+aXNQYWdlUnVsZSgpKQorICAgICAg
ICBpZiAocnVsZS0+aXNTdHlsZVJ1bGUoKSkgeworICAgICAgICAgICAgU3R5bGVSdWxlKiBzdHls
ZVJ1bGUgPSBzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihydWxlKTsKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKKyAgICAgICAgICAgIGlmICghc2NvcGUpCisgICAgICAgICAgICAgICAgYWRkU3R5bGVS
dWxlKHN0eWxlUnVsZSwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0ID0gc3R5bGVSdWxl
LT5zZWxlY3Rvckxpc3QoKTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBzZWxlY3Rvcklu
ZGV4ID0gMDsgc2VsZWN0b3JJbmRleCAhPSBub3RGb3VuZDsgc2VsZWN0b3JJbmRleCA9IHNlbGVj
dG9yTGlzdC5pbmRleE9mTmV4dFNlbGVjdG9yQWZ0ZXIoc2VsZWN0b3JJbmRleCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yTGlzdC5oYXNTaGFkb3dEaXN0cmlidXRlZEF0KHNl
bGVjdG9ySW5kZXgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZXItPnNoYWRvd0Rp
c3RyaWJ1dGVkUnVsZXMoKS5hZGRSdWxlKHN0eWxlUnVsZSwgc2VsZWN0b3JJbmRleCwgY29uc3Rf
Y2FzdDxDb250YWluZXJOb2RlKj4oc2NvcGUpLCBhZGRSdWxlRmxhZ3MpOworICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRSdWxlKHN0eWxlUnVsZSwg
c2VsZWN0b3JJbmRleCwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisjZWxzZQorICAgICAgICAgICAgYWRkU3R5bGVSdWxlKHN0eWxlUnVsZSwgYWRkUnVs
ZUZsYWdzKTsKKyNlbmRpZgorCisgICAgICAgIH0gZWxzZSBpZiAocnVsZS0+aXNQYWdlUnVsZSgp
KQogICAgICAgICAgICAgYWRkUGFnZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlUGFnZSo+KHJ1
bGUpKTsKICAgICAgICAgZWxzZSBpZiAocnVsZS0+aXNNZWRpYVJ1bGUoKSkgewogICAgICAgICAg
ICAgU3R5bGVSdWxlTWVkaWEqIG1lZGlhUnVsZSA9IHN0YXRpY19jYXN0PFN0eWxlUnVsZU1lZGlh
Kj4ocnVsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDJlODc0
ZjRmY2Q5MzAwMDljOTc4Y2M2YTllNDNmZWIyNTFiODQ2OWYuLmMzODVlMjIzMGFmN2Y4OTJhYzYy
MWRmMTZlZjYyYjI0NjMzMTZkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxl
Y3RvckNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
Y3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MUHJvZ3Jlc3NFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVu
dC5oIgorI2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgpAQCAtMjgxLDggKzI4MiwxMyBAQCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoIFNlbGVj
dG9yQ2hlY2tlcjo6bWF0Y2goY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbgogCiAg
ICAgLy8gUHJlcGFyZSBuZXh0IHNlbGVjdG9yCiAgICAgQ1NTU2VsZWN0b3IqIGhpc3RvcnlTZWxl
Y3RvciA9IGNvbnRleHQuc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKTsKLSAgICBpZiAoIWhpc3RvcnlT
ZWxlY3RvcikKKyAgICBpZiAoIWhpc3RvcnlTZWxlY3RvcikgeworICAgICAgICBpZiAoY29udGV4
dC5iZWhhdmlvckF0Qm91bmRhcnkgPT0gQ3Jvc3Nlc0JvdW5kYXJ5KSB7CisgICAgICAgICAgICBB
U1NFUlQoY29udGV4dC5zY29wZSk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5zY29wZS0+
Y29udGFpbnMoY29udGV4dC5lbGVtZW50KSA/IFNlbGVjdG9yTWF0Y2hlcyA6IFNlbGVjdG9yRmFp
bHNMb2NhbGx5OworICAgICAgICB9CiAgICAgICAgIHJldHVybiBTZWxlY3Rvck1hdGNoZXM7Cisg
ICAgfQogCiAgICAgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQgbmV4dENvbnRleHQoY29udGV4dCk7
CiAgICAgbmV4dENvbnRleHQuc2VsZWN0b3IgPSBoaXN0b3J5U2VsZWN0b3I7CkBAIC0zODQsNiAr
MzkwLDI1IEBAIFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2ggU2VsZWN0b3JDaGVja2VyOjptYXRjaChj
b25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29uCiAgICAgICAgICAgICBuZXh0Q29udGV4
dC5lbGVtZW50UGFyZW50U3R5bGUgPSAwOwogICAgICAgICAgICAgcmV0dXJuIG1hdGNoKG5leHRD
b250ZXh0LCBpZ25vcmVEeW5hbWljUHNldWRvKTsKICAgICAgICAgfQorI2lmIEVOQUJMRShTSEFE
T1dfRE9NKQorICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rpc3RyaWJ1dGVkOgorICAgICAg
ICB7CisgICAgICAgICAgICBWZWN0b3I8SW5zZXJ0aW9uUG9pbnQqLCA4PiBpbnNlcnRpb25Qb2lu
dHM7CisgICAgICAgICAgICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQgPSBjb250ZXh0LmVsZW1lbnQ7
IGVsZW1lbnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKKyAgICAgICAg
ICAgICAgICBpbnNlcnRpb25Qb2ludHMuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjb2xsZWN0
SW5zZXJ0aW9uUG9pbnRzV2hlcmVOb2RlSXNEaXN0cmlidXRlZChlbGVtZW50LCBpbnNlcnRpb25Q
b2ludHMpOworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zZXJ0aW9u
UG9pbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIG5leHRDb250ZXh0LmVs
ZW1lbnQgPSBpbnNlcnRpb25Qb2ludHNbaV07CisgICAgICAgICAgICAgICAgICAgIG5leHRDb250
ZXh0LmlzU3ViU2VsZWN0b3IgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgbmV4dENvbnRl
eHQuZWxlbWVudFN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbmV4dENvbnRleHQuZWxl
bWVudFBhcmVudFN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoKG5leHRD
b250ZXh0LCBpZ25vcmVEeW5hbWljUHNldWRvKSA9PSBTZWxlY3Rvck1hdGNoZXMpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JNYXRjaGVzOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29tcGxl
dGVseTsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXggMmE5N2ZjOGM2MmNjMmFh
YzQ1NjM2NzZiMDAxNjI4ZmM0NmU0MzExNS4uZWViNWNkNGFhODg5NGI2NWYxYmM1N2I3NDM3OGUz
YTI5MjE0ZTExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaApAQCAtNDksNiAr
NDksNyBAQCBwdWJsaWM6CiAgICAgZW51bSBNYXRjaCB7IFNlbGVjdG9yTWF0Y2hlcywgU2VsZWN0
b3JGYWlsc0xvY2FsbHksIFNlbGVjdG9yRmFpbHNBbGxTaWJsaW5ncywgU2VsZWN0b3JGYWlsc0Nv
bXBsZXRlbHkgfTsKICAgICBlbnVtIFZpc2l0ZWRNYXRjaFR5cGUgeyBWaXNpdGVkTWF0Y2hEaXNh
YmxlZCwgVmlzaXRlZE1hdGNoRW5hYmxlZCB9OwogICAgIGVudW0gTW9kZSB7IFJlc29sdmluZ1N0
eWxlID0gMCwgQ29sbGVjdGluZ1J1bGVzLCBRdWVyeWluZ1J1bGVzLCBTaGFyaW5nUnVsZXMgfTsK
KyAgICBlbnVtIEJlaGF2aW9yQXRCb3VuZGFyeSB7IERvZXNOb3RDcm9zc0JvdW5kYXJ5LCBDcm9z
c2VzQm91bmRhcnkgfTsKIAogICAgIHN0cnVjdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCB7CiAg
ICAgICAgIC8vIEluaXRpYWwgc2VsZWN0b3IgY29uc3RydWN0b3IKQEAgLTYzLDYgKzY0LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgLCBpc1N1YlNlbGVjdG9yKGZhbHNlKQogICAgICAgICAgICAg
LCBoYXNTY3JvbGxiYXJQc2V1ZG8oZmFsc2UpCiAgICAgICAgICAgICAsIGhhc1NlbGVjdGlvblBz
ZXVkbyhmYWxzZSkKKyAgICAgICAgICAgICwgYmVoYXZpb3JBdEJvdW5kYXJ5KERvZXNOb3RDcm9z
c0JvdW5kYXJ5KQogICAgICAgICB7IH0KIAogICAgICAgICBDU1NTZWxlY3Rvciogc2VsZWN0b3I7
CkBAIC03NSw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc1N1YlNlbGVjdG9yOwog
ICAgICAgICBib29sIGhhc1Njcm9sbGJhclBzZXVkbzsKICAgICAgICAgYm9vbCBoYXNTZWxlY3Rp
b25Qc2V1ZG87CisgICAgICAgIEJlaGF2aW9yQXRCb3VuZGFyeSBiZWhhdmlvckF0Qm91bmRhcnk7
CiAgICAgfTsKIAogICAgIGJvb2wgbWF0Y2hlcyhDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBib29s
IGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yID0gZmFsc2UpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
ZWxlY3RvckZpbHRlci5jcHAKaW5kZXggY2VhYTc2ODE0OTAwYzBiMzFkMzk0YzRmMjZjYzRjYmI1
ZTM1ZThkYy4uNmIzOTA2NWU4MDk2Mzg3MGRkYjUwZDg1Yzk3ZjUzYzM4YTE3NTQwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwCkBAIC0xNDgsNiArMTQ4LDkgQEAgdm9pZCBT
ZWxlY3RvckZpbHRlcjo6Y29sbGVjdElkZW50aWZpZXJIYXNoZXMoY29uc3QgQ1NTU2VsZWN0b3Iq
IHNlbGVjdG9yLCB1bnNpZ24KICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RGlyZWN0QWRqYWNl
bnQ6CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkluZGlyZWN0QWRqYWNlbnQ6CiAgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rlc2NlbmRhbnQ6CisjaWYgRU5BQkxFKFNIQURPV19E
T00pCisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rpc3RyaWJ1dGVkOgorI2VuZGlm
CiAgICAgICAgICAgICBza2lwT3ZlclN1YnNlbGVjdG9ycyA9IHRydWU7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBhM2QxN2VjNzRjZDA3Mzg3YjRlMzgyMDM3YjQ2NjE4
MDk1MGI4NjUyLi5kNmU3NDk1Njc4YWMxNWI0YjNjNzk0MTllNTY4ZWNkMTkzM2IzMmRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0yNTksNiArMjU5LDI1IEBAIHN0YXRp
YyBTdHlsZVByb3BlcnR5U2V0KiByaWdodFRvTGVmdERlY2xhcmF0aW9uKCkKICAgICByZXR1cm4g
cmlnaHRUb0xlZnREZWNsLmdldCgpOwogfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCit2b2lk
IFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXM6OmFkZFJ1bGUoU3R5bGVSdWxlKiBydWxlLCBzaXplX3Qg
c2VsZWN0b3JJbmRleCwgQ29udGFpbmVyTm9kZSogc2NvcGUsIEFkZFJ1bGVGbGFncyBhZGRSdWxl
RmxhZ3MpCit7CisgICAgaWYgKG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLmNvbnRhaW5z
KHNjb3BlKSkKKyAgICAgICAgbV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAuZ2V0KHNjb3Bl
KS0+YWRkUnVsZShydWxlLCBzZWxlY3RvckluZGV4LCBhZGRSdWxlRmxhZ3MpOworICAgIGVsc2Ug
eworICAgICAgICBPd25QdHI8UnVsZVNldD4gcnVsZVNldEZvclNjb3BlID0gYWRvcHRQdHIobmV3
IFJ1bGVTZXQoKSk7CisgICAgICAgIHJ1bGVTZXRGb3JTY29wZS0+YWRkUnVsZShydWxlLCBzZWxl
Y3RvckluZGV4LCBhZGRSdWxlRmxhZ3MpOworICAgICAgICBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVs
ZVNldE1hcC5hZGQoc2NvcGUsIHJ1bGVTZXRGb3JTY29wZS5yZWxlYXNlKCkpOworICAgIH0KK30K
Kwordm9pZCBTaGFkb3dEaXN0cmlidXRlZFJ1bGVzOjpjb2xsZWN0TWF0Y2hSZXF1ZXN0cyhib29s
IGluY2x1ZGVFbXB0eVJ1bGVzLCBWZWN0b3I8TWF0Y2hSZXF1ZXN0PiYgbWF0Y2hSZXF1ZXN0cykK
K3sKKyAgICBmb3IgKFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcDo6aXRlcmF0b3IgaXQgPSBt
X3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5iZWdpbigpOyBpdCAhPSBtX3NoYWRvd0Rpc3Ry
aWJ1dGVkUnVsZVNldE1hcC5lbmQoKTsgKytpdCkKKyAgICAgICAgbWF0Y2hSZXF1ZXN0cy5hcHBl
bmQoTWF0Y2hSZXF1ZXN0KGl0LT52YWx1ZS5nZXQoKSwgaW5jbHVkZUVtcHR5UnVsZXMsIGl0LT5r
ZXksIFNlbGVjdG9yQ2hlY2tlcjo6Q3Jvc3Nlc0JvdW5kYXJ5KSk7Cit9CisKKyNlbmRpZgogCiBT
dHlsZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBtYXRj
aEF1dGhvckFuZFVzZXJTdHlsZXMpCiAgICAgOiBtX2hhc1VBQXBwZWFyYW5jZShmYWxzZSkKQEAg
LTM2NSw2ICszODQsOSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnJlc2V0QXV0aG9yU3R5bGUoKQog
ewogICAgIG1fYXV0aG9yU3R5bGUgPSBSdWxlU2V0OjpjcmVhdGUoKTsKICAgICBtX2F1dGhvclN0
eWxlLT5kaXNhYmxlQXV0b1Nocmlua1RvRml0KCk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisg
ICAgbV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVzLmNsZWFyKCk7CisjZW5kaWYKIH0KIAogdm9pZCBT
dHlsZVJlc29sdmVyOjphcHBlbmRBdXRob3JTdHlsZVNoZWV0cyh1bnNpZ25lZCBmaXJzdE5ldywg
Y29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBzdHlsZVNoZWV0cykKQEAgLTY2
NSw3ICs2ODcsOCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzKGNv
bnN0IE1hdGNoUmVxdWVzdCYgbWF0Y2hSZXF1ZXN0LCBpbnQmCiAgICAgVHJlZVNjb3BlKiB0cmVl
U2NvcGUgPSBtX2VsZW1lbnQtPnRyZWVTY29wZSgpOwogICAgIGlmICghTWF0Y2hpbmdVQVJ1bGVz
U2NvcGU6OmlzTWF0Y2hpbmdVQVJ1bGVzKCkKICAgICAgICAgJiYgIXRyZWVTY29wZS0+YXBwbHlB
dXRob3JTdHlsZXMoKQotICAgICAgICAmJiAoIW1hdGNoUmVxdWVzdC5zY29wZSB8fCBtYXRjaFJl
cXVlc3Quc2NvcGUtPnRyZWVTY29wZSgpICE9IHRyZWVTY29wZSkpCisgICAgICAgICYmICghbWF0
Y2hSZXF1ZXN0LnNjb3BlIHx8IG1hdGNoUmVxdWVzdC5zY29wZS0+dHJlZVNjb3BlKCkgIT0gdHJl
ZVNjb3BlKQorICAgICAgICAmJiBtYXRjaFJlcXVlc3QuY3Jvc3NCb3VuZGFyeSA9PSBTZWxlY3Rv
ckNoZWNrZXI6OkRvZXNOb3RDcm9zc0JvdW5kYXJ5KQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBXZSBuZWVkIHRvIGNvbGxlY3QgdGhlIHJ1bGVzIGZvciBpZCwgY2xhc3MsIHRhZywgYW5kIGV2
ZXJ5dGhpbmcgZWxzZSBpbnRvIGEgYnVmZmVyIGFuZApAQCAtODExLDYgKzgzNCwxMiBAQCB2b2lk
IFN0eWxlUmVzb2x2ZXI6Om1hdGNoQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9v
bCBpbmNsdWRlRW1wdHlSdWxlcwogICAgIE1hdGNoUmVxdWVzdCBtYXRjaFJlcXVlc3QobV9hdXRo
b3JTdHlsZS5nZXQoKSwgaW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIGNvbGxlY3RNYXRjaGluZ1J1
bGVzKG1hdGNoUmVxdWVzdCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5y
YW5nZXMubGFzdEF1dGhvclJ1bGUpOwogICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9u
KG1hdGNoUmVxdWVzdCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5n
ZXMubGFzdEF1dGhvclJ1bGUpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIFZlY3RvcjxN
YXRjaFJlcXVlc3Q+IG1hdGNoUmVxdWVzdHM7CisgICAgbV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVz
LmNvbGxlY3RNYXRjaFJlcXVlc3RzKGluY2x1ZGVFbXB0eVJ1bGVzLCBtYXRjaFJlcXVlc3RzKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hdGNoUmVxdWVzdHMuc2l6ZSgpOyArK2kpCisg
ICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKG1hdGNoUmVxdWVzdHNbaV0sIHJlc3VsdC5yYW5n
ZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlKTsKKyNlbmRp
ZgogICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhyZXN1bHQpOwogCiAgICAgbWF0Y2hT
Y29wZWRBdXRob3JSdWxlcyhyZXN1bHQsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKQEAgLTg0OCw3ICs4
NzcsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChj
b25zdCBWZWN0b3I8UnVsZURhdGE+KiBydWxlcywgYwogCiAgICAgLy8gSW4gc29tZSBjYXNlcyB3
ZSBtYXkgZW5kIHVwIGxvb2tpbmcgdXAgc3R5bGUgZm9yIHJhbmRvbSBlbGVtZW50cyBpbiB0aGUg
bWlkZGxlIG9mIGEgcmVjdXJzaXZlIHRyZWUgcmVzb2x2ZS4KICAgICAvLyBBbmNlc3RvciBpZGVu
dGlmaWVyIGZpbHRlciB3b24ndCBiZSB1cC10by1kYXRlIGluIHRoYXQgY2FzZSBhbmQgd2UgY2Fu
J3QgdXNlIHRoZSBmYXN0IHBhdGguCi0gICAgYm9vbCBjYW5Vc2VGYXN0UmVqZWN0ID0gbV9zZWxl
Y3RvckZpbHRlci5wYXJlbnRTdGFja0lzQ29uc2lzdGVudChtX3BhcmVudE5vZGUpOworICAgIGJv
b2wgY2FuVXNlRmFzdFJlamVjdCA9IG1fc2VsZWN0b3JGaWx0ZXIucGFyZW50U3RhY2tJc0NvbnNp
c3RlbnQobV9wYXJlbnROb2RlKSAmJiBtYXRjaFJlcXVlc3QuY3Jvc3NCb3VuZGFyeSA9PSBTZWxl
Y3RvckNoZWNrZXI6OkRvZXNOb3RDcm9zc0JvdW5kYXJ5OwogCiAgICAgdW5zaWduZWQgc2l6ZSA9
IHJ1bGVzLT5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkg
ewpAQCAtODU4LDcgKzg4Nyw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5n
UnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIHJ1bGVzLCBjCiAKICAgICAgICAg
U3R5bGVSdWxlKiBydWxlID0gcnVsZURhdGEucnVsZSgpOwogICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
TWF0Y2hSdWxlKGRvY3VtZW50KCksIHJ1bGUsIHRoaXMpOwotICAgICAgICBpZiAocnVsZU1hdGNo
ZXMocnVsZURhdGEsIG1hdGNoUmVxdWVzdC5zY29wZSkpIHsKKyAgICAgICAgaWYgKHJ1bGVNYXRj
aGVzKHJ1bGVEYXRhLCBtYXRjaFJlcXVlc3Quc2NvcGUsIG1hdGNoUmVxdWVzdC5jcm9zc0JvdW5k
YXJ5KSkgewogICAgICAgICAgICAgLy8gSWYgdGhlIHJ1bGUgaGFzIG5vIHByb3BlcnRpZXMgdG8g
YXBwbHksIHRoZW4gaWdub3JlIGl0IGluIHRoZSBub24tZGVidWcgbW9kZS4KICAgICAgICAgICAg
IGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMgPSBydWxlLT5wcm9wZXJ0aWVzKCk7
CiAgICAgICAgICAgICBpZiAoIXByb3BlcnRpZXMgfHwgKHByb3BlcnRpZXMtPmlzRW1wdHkoKSAm
JiAhbWF0Y2hSZXF1ZXN0LmluY2x1ZGVFbXB0eVJ1bGVzKSkgewpAQCAtMjI0MCw3ICsyMjY5LDcg
QEAgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gU3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxl
c0ZvckVsZW1lbnQoRWxlbWVudCogZSwgUHMKICAgICByZXR1cm4gbV9ydWxlTGlzdC5yZWxlYXNl
KCk7CiB9CiAKLWlubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6OnJ1bGVNYXRjaGVzKGNvbnN0IFJ1
bGVEYXRhJiBydWxlRGF0YSwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUpCitpbmxpbmUgYm9v
bCBTdHlsZVJlc29sdmVyOjpydWxlTWF0Y2hlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNv
bnN0IENvbnRhaW5lck5vZGUqIHNjb3BlLCBTZWxlY3RvckNoZWNrZXI6OkJlaGF2aW9yQXRCb3Vu
ZGFyeSBiZWhhdmlvckF0Qm91bmRhcnkpCiB7CiAgICAgbV9keW5hbWljUHNldWRvID0gTk9QU0VV
RE87CiAKQEAgLTIyNjUsNiArMjI5NCw3IEBAIGlubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6OnJ1
bGVNYXRjaGVzKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgY29uc3QgQ29udGFpbmVyCiAgICAg
Y29udGV4dC5lbGVtZW50U3R5bGUgPSBzdHlsZSgpOwogICAgIGNvbnRleHQuZWxlbWVudFBhcmVu
dFN0eWxlID0gbV9wYXJlbnROb2RlID8gbV9wYXJlbnROb2RlLT5yZW5kZXJTdHlsZSgpIDogMDsK
ICAgICBjb250ZXh0LnNjb3BlID0gc2NvcGU7CisgICAgY29udGV4dC5iZWhhdmlvckF0Qm91bmRh
cnkgPSBiZWhhdmlvckF0Qm91bmRhcnk7CiAgICAgY29udGV4dC5wc2V1ZG9TdHlsZSA9IG1fcHNl
dWRvU3R5bGU7CiAgICAgU2VsZWN0b3JDaGVja2VyOjpNYXRjaCBtYXRjaCA9IG1fc2VsZWN0b3JD
aGVja2VyLm1hdGNoKGNvbnRleHQsIG1fZHluYW1pY1BzZXVkbyk7CiAgICAgaWYgKG1hdGNoICE9
IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmgKaW5kZXggZGJlYjZlYWE3NTQ0ZjExMzNiYWExY2VhNmJjNTVkM2EzY2ViMTg3ZS4uNDJk
NWQ0NjdiYTkxYzE2ZTUxNmQyNTFiODg5ZWIxYWE4YzM4YzAyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5o
IgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUnVsZUZlYXR1cmUuaCIKKyNp
bmNsdWRlICJSdWxlU2V0LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgog
I2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgIlNlbGVjdG9yRmlsdGVyLmgi
CkBAIC03Niw3ICs3Nyw2IEBAIGNsYXNzIE1lZGlhUXVlcnlFdmFsdWF0b3I7CiBjbGFzcyBOb2Rl
OwogY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xhc3MgUnVsZURhdGE7Ci1jbGFzcyBSdWxlU2V0Owog
Y2xhc3MgU2V0dGluZ3M7CiBjbGFzcyBTdGF0aWNDU1NSdWxlTGlzdDsKIGNsYXNzIFN0eWxlQnVp
bGRlcjsKQEAgLTEzMSw2ICsxMzEsMzIgQEAgZW51bSBSdWxlTWF0Y2hpbmdCZWhhdmlvciB7CiAg
ICAgTWF0Y2hPbmx5VXNlckFnZW50UnVsZXMsCiB9OwogCitjbGFzcyBNYXRjaFJlcXVlc3Qgewor
cHVibGljOgorICAgIE1hdGNoUmVxdWVzdChSdWxlU2V0KiBydWxlU2V0LCBib29sIGluY2x1ZGVF
bXB0eVJ1bGVzID0gZmFsc2UsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlID0gMCwgU2VsZWN0
b3JDaGVja2VyOjpCZWhhdmlvckF0Qm91bmRhcnkgY3Jvc3NCb3VuZGFyeSA9IFNlbGVjdG9yQ2hl
Y2tlcjo6RG9lc05vdENyb3NzQm91bmRhcnkpCisgICAgICAgIDogcnVsZVNldChydWxlU2V0KQor
ICAgICAgICAsIGluY2x1ZGVFbXB0eVJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKQorICAgICAgICAs
IHNjb3BlKHNjb3BlKQorICAgICAgICAsIGNyb3NzQm91bmRhcnkoY3Jvc3NCb3VuZGFyeSkgeyB9
CisgICAgY29uc3QgUnVsZVNldCogcnVsZVNldDsKKyAgICBjb25zdCBib29sIGluY2x1ZGVFbXB0
eVJ1bGVzOworICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlOworICAgIGNvbnN0IFNlbGVj
dG9yQ2hlY2tlcjo6QmVoYXZpb3JBdEJvdW5kYXJ5IGNyb3NzQm91bmRhcnk7CisgICAgTWF0Y2hS
ZXF1ZXN0IGNsb25lV2l0aChSdWxlU2V0KiBuZXdSdWxlU2V0KSBjb25zdCB7IHJldHVybiBNYXRj
aFJlcXVlc3QobmV3UnVsZVNldCwgaW5jbHVkZUVtcHR5UnVsZXMsIHNjb3BlLCBjcm9zc0JvdW5k
YXJ5KTsgfQorfTsKKworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorY2xhc3MgU2hhZG93RGlzdHJp
YnV0ZWRSdWxlcyB7CitwdWJsaWM6CisgICAgdm9pZCBhZGRSdWxlKFN0eWxlUnVsZSosIHNpemVf
dCBzZWxlY3RvckluZGV4LCBDb250YWluZXJOb2RlKiBzY29wZSwgQWRkUnVsZUZsYWdzKTsKKyAg
ICB2b2lkIGNvbGxlY3RNYXRjaFJlcXVlc3RzKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIFZlY3Rv
cjxNYXRjaFJlcXVlc3Q+Jik7CisgICAgdm9pZCBjbGVhcigpIHsgbV9zaGFkb3dEaXN0cmlidXRl
ZFJ1bGVTZXRNYXAuY2xlYXIoKTsgfQorcHJpdmF0ZToKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29u
c3QgQ29udGFpbmVyTm9kZSosIE93blB0cjxSdWxlU2V0PiA+IFNoYWRvd0Rpc3RyaWJ1dGVkUnVs
ZVNldE1hcDsKKyAgICBTaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAgbV9zaGFkb3dEaXN0cmli
dXRlZFJ1bGVTZXRNYXA7Cit9OworI2VuZGlmCisKIC8vIFRoaXMgY2xhc3Mgc2VsZWN0cyBhIFJl
bmRlclN0eWxlIGZvciBhIGdpdmVuIGVsZW1lbnQgYmFzZWQgb24gYSBjb2xsZWN0aW9uIG9mIHN0
eWxlc2hlZXRzLgogY2xhc3MgU3R5bGVSZXNvbHZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU3R5bGVSZXNvbHZlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMjk5LDYgKzMy
NSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWRQZW5kaW5nUmVzb3VyY2VzKCk7CiAKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBTaGFkb3dEaXN0cmlidXRlZFJ1bGVzJiBzaGFkb3dE
aXN0cmlidXRlZFJ1bGVzKCkgeyByZXR1cm4gbV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVzOyB9Cisj
ZW5kaWYKKwogcHJpdmF0ZToKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGZpeGVzIHVwIHRoZSBkZWZh
dWx0IGZvbnQgc2l6ZSBpZiBpdCBkZXRlY3RzIHRoYXQgdGhlIGN1cnJlbnQgZ2VuZXJpYyBmb250
IGZhbWlseSBoYXMgY2hhbmdlZC4gLWR3aAogICAgIHZvaWQgY2hlY2tGb3JHZW5lcmljRmFtaWx5
Q2hhbmdlKFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKTsKQEAgLTM0Miwx
NiArMzcyLDYgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBpc0NhY2hlYWJsZTsKICAgICB9Owog
Ci0gICAgc3RydWN0IE1hdGNoUmVxdWVzdCB7Ci0gICAgICAgIE1hdGNoUmVxdWVzdChSdWxlU2V0
KiBydWxlU2V0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzID0gZmFsc2UsIGNvbnN0IENvbnRhaW5l
ck5vZGUqIHNjb3BlID0gMCkKLSAgICAgICAgICAgIDogcnVsZVNldChydWxlU2V0KQotICAgICAg
ICAgICAgLCBpbmNsdWRlRW1wdHlSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcykKLSAgICAgICAgICAg
ICwgc2NvcGUoc2NvcGUpIHsgfQotICAgICAgICBjb25zdCBSdWxlU2V0KiBydWxlU2V0OwotICAg
ICAgICBjb25zdCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzOwotICAgICAgICBjb25zdCBDb250YWlu
ZXJOb2RlKiBzY29wZTsKLSAgICB9OwotCiAgICAgc3RhdGljIHZvaWQgYWRkTWF0Y2hlZFByb3Bl
cnRpZXMoTWF0Y2hSZXN1bHQmLCBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzLCBT
dHlsZVJ1bGUqID0gMCwgdW5zaWduZWQgbGlua01hdGNoVHlwZSA9IFNlbGVjdG9yQ2hlY2tlcjo6
TWF0Y2hBbGwsIGJvb2wgaW5SZWdpb25SdWxlID0gZmFsc2UpOwogICAgIHZvaWQgYWRkRWxlbWVu
dFN0eWxlUHJvcGVydGllcyhNYXRjaFJlc3VsdCYsIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqLCBi
b29sIGlzQ2FjaGVhYmxlID0gdHJ1ZSk7CiAKQEAgLTM3MSw3ICszOTEsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc29ydE1hdGNoZWRSdWxlcygpOwogICAgIHZvaWQgc29ydEFuZFRyYW5zZmVyTWF0
Y2hlZFJ1bGVzKE1hdGNoUmVzdWx0Jik7CiAKLSAgICBib29sIHJ1bGVNYXRjaGVzKGNvbnN0IFJ1
bGVEYXRhJiwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUpOworICAgIGJvb2wgcnVsZU1hdGNo
ZXMoY29uc3QgUnVsZURhdGEmLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSwgU2VsZWN0b3JD
aGVja2VyOjpCZWhhdmlvckF0Qm91bmRhcnkgPSBTZWxlY3RvckNoZWNrZXI6OkRvZXNOb3RDcm9z
c0JvdW5kYXJ5KTsKICAgICBib29sIGNoZWNrUmVnaW9uU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHJl
Z2lvblNlbGVjdG9yLCBFbGVtZW50KiByZWdpb25FbGVtZW50KTsKICAgICB2b2lkIGFwcGx5TWF0
Y2hlZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBjb25zdCBFbGVtZW50Kik7CiAgICAg
ZW51bSBTdHlsZUFwcGxpY2F0aW9uUGFzcyB7CkBAIC00MTMsNiArNDMzLDkgQEAgcHJpdmF0ZToK
IAogICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgUmVmUHRyPFN0eWxlUnVs
ZUtleWZyYW1lcz4gPiBLZXlmcmFtZXNSdWxlTWFwOwogICAgIEtleWZyYW1lc1J1bGVNYXAgbV9r
ZXlmcmFtZXNSdWxlTWFwOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIFNoYWRvd0Rpc3Ry
aWJ1dGVkUnVsZXMgbV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVzOworI2VuZGlmCiAKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVuZGVyU3R5bGUqIHN0eWxlTm90WWV0QXZhaWxhYmxlKCkgeyByZXR1cm4g
c19zdHlsZU5vdFlldEF2YWlsYWJsZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0lu
c2VydGlvblBvaW50LmgKaW5kZXggNzQyNDNlOWNhYTQ1MzdjNTk0YTkyOTBiNDY4MTFlM2I2MDA1
YmNlNi4uOTM5NDZmZmE0OGMzYjdlZTJhNDUxZjkxYTE4OTU0YWY1N2E1ODI3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC0xNjEsNiArMTYxLDI5
IEBAIGlubGluZSBFbGVtZW50U2hhZG93KiBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbihj
b25zdCBOb2RlKiBub2RlKQogCiBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJlcHJvamVjdGlvbihj
b25zdCBOb2RlKik7CiAKK2lubGluZSB2b2lkIGNvbGxlY3RJbnNlcnRpb25Qb2ludHNXaGVyZU5v
ZGVJc0Rpc3RyaWJ1dGVkKGNvbnN0IE5vZGUqIG5vZGUsIFZlY3RvcjxJbnNlcnRpb25Qb2ludCos
IDg+JiByZXN1bHRzKQoreworICAgIGNvbnN0IE5vZGUqIGN1cnJlbnQgPSBub2RlOworICAgIHdo
aWxlICh0cnVlKSB7CisgICAgICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBzaGFkb3dP
ZlBhcmVudEZvckRpc3RyaWJ1dGlvbihjdXJyZW50KSkgeworICAgICAgICAgICAgc2hhZG93LT5l
bnN1cmVEaXN0cmlidXRpb24oKTsKKyAgICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5z
ZXJ0ZWRUbyA9IHNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5maW5kSW5zZXJ0aW9uUG9pbnRGb3Iobm9k
ZSkpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAg
ICAgICByZXN1bHRzLmFwcGVuZChpbnNlcnRlZFRvKTsKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoTm9kZSogcGFyZW50ID0g
cGFyZW50Tm9kZUZvckRpc3RyaWJ1dGlvbihjdXJyZW50KSkgeworICAgICAgICAgICAgaWYgKElu
c2VydGlvblBvaW50KiBpbnNlcnRlZFRvID0gcGFyZW50LT5pc1NoYWRvd1Jvb3QoKSA/IFNjb3Bl
Q29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWduZWRUbyh0b1NoYWRvd1Jvb3QocGFyZW50KSkgOiAw
KSB7CisgICAgICAgICAgICAgICAgY3VycmVudCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAg
ICAgcmVzdWx0cy5hcHBlbmQoaW5zZXJ0ZWRUbyk7CisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSW5zZXJ0aW9uUG9pbnRfaApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDViNjhkMmU5MGI1MGYyMGU0MThmYmU4ZjFjMDM4MTRkMjA5MTlhNzIuLjkwNDIxM2VlNDcy
Y2YzYzM5NTY1ZjRhODZlYzBiYTU5NzZhMDEzNDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAx
My0wMS0xNiAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1No
YWRvdyBET01dIEltcGxlbWVudHMgYSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxlbWVudC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMTY5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZv
ci1zaGFkb3ctZWxlbWVudC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC1tYXRjaC1hbGwtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
bWF0Y2gtZGVzY2VuZGFudC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtZGVzY2VuZGFudC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtbmVzdGVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3No
YWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5vLW1hdGNo
LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRlZC1wc2V1ZG8tZWxlbWVudC1uby1tYXRjaC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLWV4cGVj
dGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNjb3BlZC1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtc2NvcGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLWV4cGVjdGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC1zdXBwb3J0LXNlbGVjdG9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QtZXhwZWN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtd2l0aC1hbnktZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LXdpdGgtYW55Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC5odG1sOiBBZGRlZC4KKwogMjAxMy0w
MS0xNiAgVmljdG9yIENhcmJ1bmUgIDx2Y2FyYnVuZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
Q3VlcyBub3QgcmVuZGVyZWQgd2hlbiB0aGV5IHNob3VsZCBiZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWV4cGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGMyNmUyYjU2YzRjNmE3YzcwYzZjZmQ1
OGEyMjdmOGUwZjQ0NjRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCAr
MSw5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94
Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVl
bjwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93
LWVsZW1lbnQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQtZXhwZWN0ZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42NGMyNmUyYjU2YzRjNmE3YzcwYzZjZmQ1OGEyMjdmOGUwZjQ0NjRmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEs
OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+
CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48
L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1l
bGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRkYzM3YzVj
NmM0ODg2N2RmNWNiODE0NzI4YTM2OWZkOGQyM2U2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hh
ZG93LWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2
YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93
U3R5bGUuaW5uZXJIVE1MID0gJ3NoYWRvdzo6LXdlYmtpdC1kaXN0cmlidXRlZChkaXYpIHsgY29s
b3I6IGdyZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
c2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsn
aWQnOiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpLAorICAgICAgICAgICAgICBjcmVh
dGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAg
ICAgICAgICBjcmVhdGVET00oJ3NoYWRvdycpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQt
cHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLWV4cGVjdGVk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWE2MGI3MmUwZGU5MTc3NjJiMmEyYTRjNWVjM2VmOWY1NjZlYjQ5
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE2
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4K
KyAgPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdj4KKyAgICAgIG5vcm1hbAorICAgICAgPGRpdiBz
dHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXY+Cisg
ICAgICBub3JtYWwKKyAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4K
KyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gt
YWxsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRv
LWVsZW1lbnQtbWF0Y2gtYWxsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjlmMmZmMmI0MTM3YTBjNWFlZWRj
ODVlODkxMmYyZWMzNGViMmZiYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwuaHRtbApAQCAt
MCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2Nv
bnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoLmhlbGxvKSB7IGNvbG9yOiBncmVlbjsgfSc7CisK
K3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRi
b3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAg
ICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0
eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2hlbGxvJ30sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSwKKyAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdoZWxsbyd9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSkpKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWRlc2NlbmRhbnQtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWMxODc4
NTZmZWUxOGY0ZTQyN2YyMWE3NzFiMzJkMTEzMThmNTNiMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRj
aC1kZXNjZW5kYW50LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3Qi
PgorICAgIDxwPgorICAgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2Pgor
ICAgIDwvcD4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtZGVz
Y2VuZGFudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LW1hdGNoLWRlc2NlbmRhbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTQwNDNlODU1
YTUwOGQ0OGI1YTA2MDBlMGY2ODY2OTg4MzAwMjgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWRl
c2NlbmRhbnQuaHRtbApAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIg
c2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5
bGUuaW5uZXJIVE1MID0gJ2NvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2KSB7IGNvbG9y
OiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nh
bmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwK
KyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRv
d1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAgICAg
ICAgICAgICBjcmVhdGVET00oJ3AnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQt
cHNldWRvLWVsZW1lbnQtbmVzdGVkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTUxODM0NDJhMDc2YzdmODFhOWM1NDIxMzFlNzlmYjc3NmYwMTFjYwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC1uZXN0ZWQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIwIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBp
ZD0iaG9zdCI+CisgICAgPGRpdiBpZD0ibmVzdGVkLWhvc3QiPgorICAgICAgdGV4dDEKKyAgICAg
IDxkaXY+CisgICAgICAgIHRleHQyCisgICAgICAgIDxkaXY+CisgICAgICAgICAgdGV4dDMKKyAg
ICAgICAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAgICAgICAg
PGRpdj5ub3JtYWw8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rp
dj4KKyAgPC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC1uZXN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTY3YTNlZmVjYTBmNDA4YTZkMzg3NTY5Mjk3
ZWZlNjIzNTg4MGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC5odG1sCkBAIC0wLDAgKzEsMzIg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNh
bmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnZGl2IGNvbnRlbnQ6
Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2IGNvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2
LmdyZWVuKSkgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0
ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jv
b3QoCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnbmVzdGVkLWhv
c3QnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3RleHQxJyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSgndGV4dDInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJ2Rpdid9KSkpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdncmVlbid9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgn
dGV4dDMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdjb250ZW50Jywge30pKSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xh
c3MnOiAnZ3JlZW4nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKCdncmVlbicpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSkp
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5vLW1hdGNoLWV4cGVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRv
LWVsZW1lbnQtbm8tbWF0Y2gtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDVmZWZmNzVjNzlh
ZWRlNWJmOGU0OWJiZWQwYjcxNTVkY2U2ODBkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5vLW1hdGNoLWV4
cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxi
b2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxwPm5vcm1h
bDwvcD4KKyAgICA8ZGl2PgorICAgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAgICA8L2Rpdj4KKyAg
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbm8tbWF0Y2guaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uby1tYXRj
aC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJhZTM5Y2VjMzQ3NTkzN2ExZWQ1M2QxNTgyZTZmZTNjOGIyMDFk
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJp
YnV0ZWQtcHNldWRvLWVsZW1lbnQtbm8tbWF0Y2guaHRtbApAQCAtMCwwICsxLDI3IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRv
dy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48
L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ3RoaXMtZG9lcy1ub3QtbWF0Y2g6
Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CitzaGFkb3dTdHls
ZS5pbm5lckhUTUwgPSAncDo6LXdlYmtpdC1kaXN0cmlidXRlZChkaXYpIHsgY29sb3I6IGdyZWVu
OyB9JzsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdkaXY6Oi13ZWJraXQtZGlzdHJpYnV0ZWQo
ZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgK
KyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdwJywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgnbm9ybWFsJykpLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSkpLAor
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdC1jaGlsZCd9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpKSkp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY5Yzkx
MjdkZTVlNzAzYjdhMWE1YzkzNjk0ZWE3Y2QwYjEyNDg0MgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXBy
b2plY3Rpb24tZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+Cisg
ICAgPGRpdiBpZD0iaG9zdDIiPgorICAgICAgPGRpdiBzdHlsZT0nY29sb3I6IGdyZWVuJz4KKyAg
ICAgICAgZ3JlZW4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24uaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hNzM1ZmE3MDllODYxYjBkYjRhZTRjYzQ2NGZmN2FmYTFhMTllMGM4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRv
bS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2
PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0
eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnY29udGVudDo6LXdlYmtpdC1kaXN0cmli
dXRlZCguZm9vKSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93
Um9vdCgKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0Mid9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcuZm9vJ30pKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSkpLAorICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnZm9vJ30sCisgICAgICAgICAg
ICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNjb3BlZC1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNj
b3BlZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0OGQ5ZTJkZTNlNmZlNGJmZDg5ODBiNjNk
MDM5YmM1NGQ4ODMxYTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLWV4cGVjdGVkLmh0bWwKQEAg
LTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0i
c2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXY+bm9ybWFsPC9kaXY+CisgICAg
PGRpdj4KKyAgICAgIDxkaXYgc3R5bGU9J2NvbG9yOiBncmVlbic+Z3JlZW48L2Rpdj4KKyAgICA8
L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
c2NvcGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFhNzFhYmM3OTA5NjMzMDBhMzI0N2U4NTY4NTBhODM2
MTM1ODg1YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQuaHRtbApAQCAtMCwwICsxLDI3IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94
Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRlbnQ6Oi13ZWJraXQt
ZGlzdHJpYnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CitzaGFkb3dTdHlsZS5zZXRBdHRy
aWJ1dGUoJ3Njb3BlZCcsIHRydWUpOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisg
ICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcjaG9zdC1j
aGlsZDEnfSksCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJyNo
b3N0LWNoaWxkMid9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSkp
LAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdC1jaGlsZDEnfSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwn
KSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0LWNoaWxkMid9
LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVu
JykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNl
bGVjdG9yLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJp
YnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci1leHBlY3RlZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIzZGVkZTEzM2I4NjJkZDE0YzkyZTYwNWM0YTFiZWQyOGUzN2FkYWQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRv
LWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTYgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8
ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2PgorICAgICAgbm9ybWFsCisgICAgICA8ZGl2IHN0eWxl
PSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdj4KKyAgICAg
IG5vcm1hbAorICAgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQt
c2VsZWN0b3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZmRiZDg2ZWY3ODJiMTQxY2ZmNTliYTNjMTY1YmE1
N2ViM2U3ODVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3IuaHRtbApAQCAtMCww
ICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRl
bnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2LmhlbGxvIGRpdikgeyBjb2xvcjogZ3JlZW47IH0n
OworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7Citz
YW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30s
CisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFk
b3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2hlbGxvJ30sCisgICAgICAgICAg
ICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJyksCisgICAgICAg
ICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSksCisgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJyksCisgICAgICAgICAgICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSkpKSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QtZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC11c2VkLWluLXNlbGVjdG9yLWxpc3QtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjgyNTNl
NGRhYjc0MDU2NTgzOGQ4NDI1MGJiYTliZDkwNGQ5OTJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVzZWQt
aW4tc2VsZWN0b3ItbGlzdC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJo
b3N0Ij4KKyAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAgPHA+
bm9ybWFsPC9wPgorICAgIDxwIHN0eWxlPSJjb2xvcjogZ3JlZW4iPmdyZWVuPC9wPgorICA8L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC11c2VkLWluLXNlbGVjdG9yLWxpc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDZkNTQ4ZjZiYTM5MWNi
NzRhODIzMTZlZGI5NmRjNWQyZTcxZjM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0
b3ItbGlzdC5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBz
aGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHls
ZS5pbm5lckhUTUwgPSAnY29udGVudDo6LXdlYmtpdC1kaXN0cmlidXRlZChkaXYpLCBwIHsgY29s
b3I6IGdyZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
c2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsn
aWQnOiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAg
ICAgICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRl
bnQnKSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgncCcsIHt9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSksCisgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSksCisgICAgICAgICAgICAgIGNyZWF0ZURP
TSgncCcsIHsnY2xhc3MnOiAnaGVsbG8nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LXdpdGgtYW55LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtd2l0aC1hbnktZXhwZWN0ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xNzM3OTk0M2RmNjQ4OTAzMjRkYzAyZDlkZTMwMTg1MWExMTE4NjUx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxOCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+Cisg
IDxkaXY+CisgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3Jl
ZW4iPmdyZWVuPC9kaXY+CisgIDwvZGl2PgorICA8ZGl2PgorICAgIDxkaXY+bm9ybWFsPC9kaXY+
CisgICAgPGRpdiBzdHlsZT0iY29sb3I6IHJlZCI+cmVkPC9kaXY+CisgIDwvZGl2PgorICA8ZGl2
PgorICAgIDxkaXY+bm9ybWFsPC9kaXY+CisgICAgPGRpdiBzdHlsZT0iY29sb3I6IGJsdWUiPmJs
dWU8L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtd2l0aC1hbnku
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC13aXRoLWFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjYTIzNWE0M2RiM2Y3YjNiNzliOWFlNGNj
OTdhODM3ZThjNmE4ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtd2l0aC1hbnkuaHRtbApAQCAtMCwwICsx
LDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUxID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlMS5pbm5lckhUTUwgPSAnKjo6LXdl
YmtpdC1kaXN0cmlidXRlZChkaXYpIHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNoYWRvd1N0
eWxlMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZTIuaW5u
ZXJIVE1MID0gJ2NvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoKikgeyBjb2xvcjogcmVkOyB9
JzsKKwordmFyIHNoYWRvd1N0eWxlMyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7
CitzaGFkb3dTdHlsZTMuaW5uZXJIVE1MID0gJyo6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoKikgeyBj
b2xvcjogYmx1ZTsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7
fSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNo
YWRvd1N0eWxlMSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcp
KSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSkpOworCitzYW5kYm94LmFwcGVuZENoaWxkKAorICAg
IGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisg
ICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZTIsCisgICAgICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCdub3JtYWwnKSksCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRl
bnQnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgncmVkJykpKSk7CitzYW5kYm94LmFw
cGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgIGNyZWF0
ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZTMsCisgICAgICAgICAg
ICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSksCisgICAgICAgICAgICAgICAgICBj
cmVhdGVET00oJ2NvbnRlbnQnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30s
CisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnYmx1ZScp
KSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQyNDNjYTFjOGM5NGYzMjY4YjY0ZjcwZWRkMjEyNmIwN2IwZGYwMWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2
YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93
U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2KSB7IGNv
bG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7
fSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNo
YWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187789</attachid>
            <date>2013-02-12 00:13:58 -0800</date>
            <delta_ts>2013-02-12 23:47:30 -0800</delta_ts>
            <desc>Rebased.</desc>
            <filename>bug-82169-20130212171028.patch</filename>
            <type>text/plain</type>
            <size>62590</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmFiYWJlMzFkMWMxNDhm
NDRjZjIwMmVmNjVjOTZhNWM4NGE4OGY1YS4uMjFkZmMzMzhkMTBhNWE2MjM0ODg0ZjAxN2Y2YWZi
Y2FkNzg4ZGI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzOCBAQAorMjAxMy0wMi0xMSAgSGF5
YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NoYWRvdyBET01dIElt
cGxlbWVudHMgYSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxlbWVudC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMTY5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBhICc6OmRpc3Ry
aWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50LgorICAgICAgICBTZWUgdGhlIFNoYWRvdyBET00gc3Bl
Y2lmaWNhdGlvbiBmb3IgdGhlIGRldGFpbC4KKworICAgICAgICAjIEZJWE1FOiBVcGRhdGUgYSBV
UkwgYWZ0ZXIgdGhlIHNwZWMgaXMgdXBkYXRlZC4KKyAgICAgICAgaHR0cDovL2R2Y3MudzMub3Jn
L2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwjc2Vs
ZWN0aW5nLW5vZGVzLWRpc3RyaWJ1dGVkLXRvLWluc2VydGlvbi1wb2ludHMKKworICAgICAgICBG
b3IgZXhhbXBsZSwgc3VwcG9zZSB3ZSBhcmUgZ2l2ZW4gdGhlIGZvbGxvd2luZyBET00gdHJlZSBh
bmQgc2hhZG93IHRyZWU6CisKKyAgICAgICAgLSA8QT4KKyAgICAgICAgICAtIDxCPgorICAgICAg
ICAgICAgLSA8Qz4KKworICAgICAgICBbQSdzIFNoYWRvd1Jvb3RdCisgICAgICAgICAgPEQ+Cisg
ICAgICAgICAgLSA8c3R5bGU+CisgICAgICAgICAgICAgIEUgY29udGVudDo6ZGlzdHJpYnV0ZWQo
QiBDKSB7IGNvbG9yOiBncmVlbjsgfQorICAgICAgICAgIC0gPEU+CisgICAgICAgICAgICAtIDxj
b250ZW50PiAgKE5vZGUgQiBpcyBkaXN0cmlidXRlZCB0byB0aGlzIGluc2VydGlvbiBwb2ludC4p
CisKKyAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgc3R5bGUgcnVsZSBkZWZpbmVkIGluIHRoZSBz
aGFkb3cgdHJlZSBtYXRjaGVzIG5vZGUgJ0MnLgorCisgICAgICAgIEEgJzo6ZGlzdHJpYnV0ZWQo
KScgcHNldWRvIGVsZW1lbnQgY2FuIG5vdCBiZSBhIHBzZXVkbyBjbGFzcyBzaW5jZQorICAgICAg
ICBhbiBpbnRlcnNlY3Rpb24gYmV0d2VlbiBtYXRjaGVkX2VsZW1lbnRzKHNvbWVfc2VsZWN0b3Ip
IGFuZAorICAgICAgICBtYXRjaGVkX2VsZW1lbnRzKHNvbWVfc2VsZWN0b3I6OmRpc3RyaWJ1dGVk
KC4uLikpIGlzIGFsd2F5cyBhbgorICAgICAgICBlbXB0eSBzZXQuIEEgJzo6ZGlzdHJpYnV0ZWQo
KScgcHNldWRvIGVsZW1lbnQgaXMgdGhlIGZpcnN0LWV2ZXIKKyAgICAgICAgKmZ1bmN0aW9uYWwq
IHBzZXVkbyBlbGVtZW50IHdoaWNoIHRha2VzIGEgcGFyYW1ldGVyLCB3aGljaCBjYW4gYmUKKyAg
ICAgICAgYSBzZWxlY3Rvci4KKworICAgICAgICBUaGlzIHJ1bGUgY3Jvc3NlcyB0aGUgc2hhZG93
IGJvdW5kYXJ5IGZyb20gYSBzaGFkb3cgdHJlZSB0byB0aGUKKyAgICAgICAgdHJlZSBvZiBpdHMg
c2hhZG93IGhvc3QuIFRoYXQgbWVhbnMgYSBydWxlIHdoaWNoIGluY2x1ZGVzCisgICAgICAgICc6
OmRpc3RyaWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50IGlzIGRlZmluZWQgaW4gc2hhZG93IHRyZWUs
IGJ1dAorICAgICAgICB0aGUgbm9kZSB3aGljaCBpcyBtYXRjaGVkIGluIHRoZSBydWxlLCB0aGUg
c3ViamVjdCBvZiB0aGUKKyAgICAgICAgc2VsZWN0b3IsIGlzIG91dHNpZGUgb2YgdGhlIHNoYWRv
dyB0cmVlLiBUaGVyZWZvcmUsIHdlIGNhbm5vdAorICAgICAgICBwcmVkaWN0IHdoZXJlIHRoZSBz
dWJqZWN0IG9mIHRoZSBzZWxlY3RvciB3aWxsIGJlIGJlZm9yZWhhbmQuCisgICAgICAgIEN1cnJl
bnQgQ1NTIGltcGxlbWVudGF0aW9uIGFzc3VtZXMgdGhlIHN1YmplY3Qgb2YgdGhlIHNlbGVjdG9y
CisgICAgICAgIG11c3QgZXhpc3QgaW4gdGhlIGN1cnJlbnQgc2NvcGUuCisKKyAgICAgICAgVG8g
b3ZlcmNvbWUgdGhpcyBpc3N1ZSwgU3R5bGVSZXNvbHZlciBub3cgaGFzIGEgaW5zdGFuY2Ugb2YK
KyAgICAgICAgU2hhZG93RGlzdHJpYnV0ZWRSdWxlcyBjbGFzcy4gIEEgc3R5bGUgcnVsZSB3aWxs
IGJlIHN0b3JlZCBpbiB0aGlzCisgICAgICAgIGluc3RhbmNlIGlmIHRoZSBydWxlIGluY2x1ZGVz
IGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvIGVsZW1lbnQuCisgICAgICAgIFRoaXMgY2xhc3Mg
YWxzbyBrZWVwcyB0cmFjayBvZiBlYWNoIFJ1bGVTZXQgYnkgbWFwcGluZyBpdCB3aXRoIGEKKyAg
ICAgICAgc2NvcGUgd2hlcmUgdGhlIHJ1bGUgd2FzIG9yaWdpbmFsbHkgZGVmaW5lZC4gSW4gdGhl
IGV4YW1wbGUsIHRoZQorICAgICAgICBzY29wZSBpcyAnRCcuICBUaGUgc2NvcGUgaXMgdXNlZCB0
byBjaGVjayB3aGV0aGVyIHRoZSBsZWZ0LW1vc3QKKyAgICAgICAgbWF0Y2hlZCBlbGVtZW50IChp
biB0aGUgZXhhbXBsZSwgaXQncyBhIG5vZGUgJ0UnKSBleGlzdHMgaW4gdGhlCisgICAgICAgIHNj
b3BlLgorCisgICAgICAgIEludGVybmFsbHksIGEgJzo6ZGlzdHJpYnV0ZWQnIHBzZXVkbyBlbGVt
ZW50IGlzIHJlcHJlc2VudGVkIGJ5IGEKKyAgICAgICAgbmV3bHkgaW50cm9kdWNlZCAnU2hhZG93
RGlzdHJpYnV0ZWQnIHJlbGF0aW9uLiAgVGhhdCBtYWtlcyBhbgorICAgICAgICBpbXBsZW1lbnRh
dGlvbiBvZiBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoKSBtdWNoIHNpbXBsZXIuCisg
ICAgICAgIEEgdHJhbnNmb3JtYXRpb24gZnJvbSBhIGRpc3RyaWJ1dGVkIHBzZXVkbyBlbGVtZW50
IHRvIGEKKyAgICAgICAgU2hhZG93RGlzdHJpYnV0ZWQgaXMgZG9uZSBpbiBwYXJzaW5nIHN0YWdl
IG9mIENTUy4KKworICAgICAgICBTaW5jZSAnOjpkaXN0cmlidXRlZCgpJyBpcyBhbiBleHBlcmlt
ZW50YWwgZmVhdHVyZSwgaXQncyBhY3R1YWxseQorICAgICAgICBwcmVmaXhlZCB3aXRoICctd2Vi
a2l0LScgYW5kIGd1YXJkZWQgYnkgU0hBRE9XX0RPTSBmbGFnLgorCisgICAgICAgIFRlc3RzOiBm
YXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVt
ZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1
ZG8tZWxlbWVudC1tYXRjaC1hbGwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWRlc2NlbmRhbnQuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3Rl
ZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRv
LWVsZW1lbnQtbm8tbWF0Y2guaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC1zdXBwb3J0LXNlbGVjdG9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdp
dGgtYW55Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOgorICAg
ICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpk
ZXRlY3REYXNoVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpyZXdyaXRlU3Bl
Y2lmaWVyc1dpdGhFbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnJl
d3JpdGVTcGVjaWZpZXJzKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgICog
Y3NzL0NTU1BhcnNlclZhbHVlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxl
Y3Rvcjo6Q1NTUGFyc2VyU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMu
aDoKKyAgICAgICAgKENTU1BhcnNlclNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlclNlbGVjdG9yOjpmdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnNldEZ1bmN0aW9uQXJndW1lbnRTZWxlY3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6aXNEaXN0cmlidXRlZFBzZXVkb0VsZW1l
bnQpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTZWxlY3Rvcjo6cHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6bmFtZVRvUHNldWRvVHlw
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCk6CisgICAgICAg
ICogY3NzL0NTU1NlbGVjdG9yLmg6CisgICAgICAgIChDU1NTZWxlY3Rvcik6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjppc0Rpc3RyaWJ1dGVkUHNl
dWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6aXNTaGFkb3dEaXN0
cmlidXRlZCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFNlbGVjdG9ySGFzU2hhZG93RGlzdHJpYnV0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0b3JIYXNTaGFkb3dEaXN0cmlidXRlZDo6b3BlcmF0b3IoKSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxpc3Q6Omhhc1NoYWRvd0Rpc3RyaWJ1dGVkQXQp
OgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvckxpc3QuaDoKKyAgICAgICAgKENTU1NlbGVjdG9y
TGlzdCk6CisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVs
ZVNldDo6YWRkQ2hpbGRSdWxlcyk6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6Om1hdGNoKToKKyAgICAgICAgKiBj
c3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6
OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0OjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCk6CisgICAg
ICAgIChTZWxlY3RvckNoZWNraW5nQ29udGV4dCk6CisgICAgICAgICogY3NzL1NlbGVjdG9yRmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0SWRlbnRp
Zmllckhhc2hlcyk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEaXN0cmlidXRlZFJ1bGVzOjphZGRS
dWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXM6OmNvbGxlY3RN
YXRjaFJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnJlc2V0QXV0
aG9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNo
aW5nUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JS
dWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdS
dWxlc0Zvckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cnVsZU1hdGNo
ZXMpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChNYXRjaFJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWF0Y2hSZXF1ZXN0OjpNYXRjaFJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWF0Y2hSZXF1ZXN0OjpjbG9uZVdpdGgpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChTaGFkb3dEaXN0cmlidXRlZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXM6OmNsZWFyKToKKyAgICAgICAgKFN0eWxlUmVzb2x2ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c2hhZG93RGlzdHJpYnV0ZWRSdWxl
cyk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbGxlY3RJbnNlcnRpb25Qb2ludHNXaGVyZU5vZGVJc0Rpc3RyaWJ1dGVkKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorCiAyMDEzLTAyLTExICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbVjhdIFNjaGVkdWxlZEFjdGlvbjo6bV9jb250ZXh0IGNh
biBiZSBlbXB0eSwgc28gd2Ugc2hvdWxkbid0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55LmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgpp
bmRleCA0YWQzMzNkYzdlZDEzY2IwZjM2ZDk2YzZjZWY1M2M0NGQ3ZTE1MDQ4Li5lMWRjODBlY2Jm
Nzc1YjRhNjFjZGFhMzA0MWQxZTU2YWJmNDI3MGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JhbW1hci55LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFy
LnkuaW4KQEAgLTYxLDcgKzYxLDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IGNzc3l5ZXJyb3Iodm9p
ZCosIGNvbnN0IGNoYXIqKQogCiAlfQogCisjaWYgRU5BQkxFX1NIQURPV19ET00KKyVleHBlY3Qg
NjcKKyNlbHNlCiAlZXhwZWN0IDY2CisjZW5kaWYKIAogJW5vbmFzc29jIExPV0VTVF9QUkVDCiAK
QEAgLTE4MSw2ICsxODUsNyBAQCBzdGF0aWMgaW5saW5lIGludCBjc3N5eWVycm9yKHZvaWQqLCBj
b25zdCBjaGFyKikKICV0b2tlbiA8c3RyaW5nPiBDVUVGVU5DVElPTgogI2VuZGlmCiAldG9rZW4g
PHN0cmluZz4gTk9URlVOQ1RJT04KKyV0b2tlbiA8c3RyaW5nPiBESVNUUklCVVRFREZVTkNUSU9O
CiAldG9rZW4gPHN0cmluZz4gQ0FMQ0ZVTkNUSU9OCiAldG9rZW4gPHN0cmluZz4gTUlORlVOQ1RJ
T04KICV0b2tlbiA8c3RyaW5nPiBNQVhGVU5DVElPTgpAQCAtMTE3OSwxMiArMTE4NCwxMiBAQCBz
aW1wbGVfc2VsZWN0b3I6CiAgICAgfCBlbGVtZW50X25hbWUgc3BlY2lmaWVyX2xpc3QgewogICAg
ICAgICAkJCA9ICQyOwogICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICBwYXJzZXItPnVwZGF0
ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20sICQxLCAkJCk7CisgICAgICAgICAg
ICAkJCA9IHBhcnNlci0+cmV3cml0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20s
ICQxLCAkJCk7CiAgICAgfQogICAgIHwgc3BlY2lmaWVyX2xpc3QgewogICAgICAgICAkJCA9ICQx
OwogICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNX
aXRoTmFtZXNwYWNlSWZOZWVkZWQoJCQpOworICAgICAgICAgICAgJCQgPSBwYXJzZXItPnJld3Jp
dGVTcGVjaWZpZXJzV2l0aE5hbWVzcGFjZUlmTmVlZGVkKCQkKTsKICAgICB9CiAgICAgfCBuYW1l
c3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1lIHsKICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0
ZUZsb2F0aW5nU2VsZWN0b3JXaXRoVGFnTmFtZShwYXJzZXItPmRldGVybWluZU5hbWVJbk5hbWVz
cGFjZSgkMSwgJDIpKTsKQEAgLTExOTIsMTIgKzExOTcsMTIgQEAgc2ltcGxlX3NlbGVjdG9yOgog
ICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIGVsZW1lbnRfbmFtZSBzcGVjaWZpZXJfbGlzdCB7CiAg
ICAgICAgICQkID0gJDM7CiAgICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNlci0+dXBk
YXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSgkMSwgJDIsICQkKTsKKyAgICAgICAgICAgICQk
ID0gcGFyc2VyLT5yZXdyaXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSgkMSwgJDIsICQkKTsK
ICAgICB9CiAgICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3Igc3BlY2lmaWVyX2xpc3QgewogICAgICAg
ICAkJCA9ICQyOwogICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNw
ZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsIHN0YXJBdG9tLCAkJCk7CisgICAgICAgICAgICAk
JCA9IHBhcnNlci0+cmV3cml0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsIHN0YXJBdG9t
LCAkJCk7CiAgICAgfQogICA7CiAKQEAgLTEyNDIsNyArMTI0Nyw3IEBAIHNwZWNpZmllcl9saXN0
OgogICAgICAgICBpZiAoISQyKQogICAgICAgICAgICAgJCQgPSAwOwogICAgICAgICBlbHNlIGlm
ICgkMSkKLSAgICAgICAgICAgICQkID0gcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzKCQxLCAkMik7
CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+cmV3cml0ZVNwZWNpZmllcnMoJDEsICQyKTsKICAg
ICB9CiAgICAgfCBzcGVjaWZpZXJfbGlzdCBlcnJvciB7CiAgICAgICAgICQkID0gMDsKQEAgLTEz
ODksNiArMTM5NCwxOSBAQCBwc2V1ZG86CiAgICAgICAgICAgICAkJCA9IDA7CiAgICAgfQogI2Vu
ZGlmCisjaWYgRU5BQkxFX1NIQURPV19ET00KKyAgICB8ICc6JyAnOicgRElTVFJJQlVURURGVU5D
VElPTiBtYXliZV9zcGFjZSBzZWxlY3RvciBtYXliZV9zcGFjZSAnKScgeworICAgICAgICBpZiAo
ISQ1KQorICAgICAgICAgICAgJCQgPSAwOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICQk
ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICAgICAkJC0+c2V0
TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpOworICAgICAgICAgICAgJCQtPnNldEZ1
bmN0aW9uQXJndW1lbnRTZWxlY3RvcigkNSk7CisgICAgICAgICAgICAkMy5sb3dlcigpOworICAg
ICAgICAgICAgJCQtPnNldFZhbHVlKCQzKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgogICAg
IC8vIHVzZSBieSA6LXdlYmtpdC1hbnkuCiAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBzdXBwb3J0
IGdlbmVyaWMgc2VsZWN0b3JzIGhlcmUgb3IganVzdCBzaW1wbGVfc2VsZWN0b3JzPwogICAgIC8v
IFVzZSBzaW1wbGVfc2VsZWN0b3JfbGlzdCBmb3Igbm93IHRvIG1hdGNoIC1tb3otYW55LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCAyMDk4YjFlMzE1N2Y3MjAxMWE3MjU2NWMzYmNmZTI0
NzI3MDIyYTJlLi5lZTU3NmI4ODY0MGZiZWQ1YjU5Y2FiMDM5MDQ1Mzc0ZWFkNTMyYjhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTAwMzAsNiArMTAwMzAsMTAgQEAgaW5saW5lIHZv
aWQgQ1NTUGFyc2VyOjpkZXRlY3REYXNoVG9rZW4oaW50IGxlbmd0aCkKICNlbmRpZgogICAgIH0g
ZWxzZSBpZiAobGVuZ3RoID09IDEyICYmIGlzRXF1YWxUb0NTU0lkZW50aWZpZXIobmFtZSArIDEs
ICJ3ZWJraXQtY2FsYyIpKQogICAgICAgICBtX3Rva2VuID0gQ0FMQ0ZVTkNUSU9OOworI2lmIEVO
QUJMRShTSEFET1dfRE9NKQorICAgIGVsc2UgaWYgKGxlbmd0aCA9PSAxOSAmJiBpc0VxdWFsVG9D
U1NJZGVudGlmaWVyKG5hbWUgKyAxLCAid2Via2l0LWRpc3RyaWJ1dGVkIikpCisgICAgICAgIG1f
dG9rZW4gPSBESVNUUklCVVRFREZVTkNUSU9OOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgpAQCAtMTEwNDgsMjUgKzExMDUyLDQwIEBAIFF1YWxpZmllZE5h
bWUgQ1NTUGFyc2VyOjpkZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5n
JiBwcmVmaXgsIGNvCiAgICAgcmV0dXJuIFF1YWxpZmllZE5hbWUocHJlZml4LCBsb2NhbE5hbWUs
IG1fc3R5bGVTaGVldC0+ZGV0ZXJtaW5lTmFtZXNwYWNlKHByZWZpeCkpOwogfQogCi12b2lkIENT
U1BhcnNlcjo6dXBkYXRlU3BlY2lmaWVyc1dpdGhOYW1lc3BhY2VJZk5lZWRlZChDU1NQYXJzZXJT
ZWxlY3Rvciogc3BlY2lmaWVycykKK0NTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXI6OnJld3Jp
dGVTcGVjaWZpZXJzV2l0aE5hbWVzcGFjZUlmTmVlZGVkKENTU1BhcnNlclNlbGVjdG9yKiBzcGVj
aWZpZXJzKQogewogICAgIGlmIChtX2RlZmF1bHROYW1lc3BhY2UgIT0gc3RhckF0b20gfHwgc3Bl
Y2lmaWVycy0+aXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgIHVwZGF0ZVNwZWNpZmll
cnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20sIHN0YXJBdG9tLCBzcGVjaWZpZXJzLCAvKnRhZ0lz
Rm9yTmFtZXNwYWNlUnVsZSovdHJ1ZSk7CisgICAgICAgIHJldHVybiByZXdyaXRlU3BlY2lmaWVy
c1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwgc3RhckF0b20sIHNwZWNpZmllcnMsIC8qdGFnSXNG
b3JOYW1lc3BhY2VSdWxlKi90cnVlKTsKKyAgICByZXR1cm4gc3BlY2lmaWVyczsKIH0KIAotdm9p
ZCBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lc3BhY2VQcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudE5hbWUs
IENTU1BhcnNlclNlbGVjdG9yKiBzcGVjaWZpZXJzLCBib29sIHRhZ0lzRm9yTmFtZXNwYWNlUnVs
ZSkKK0NTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXI6OnJld3JpdGVTcGVjaWZpZXJzV2l0aEVs
ZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlZml4LCBjb25zdCBBdG9t
aWNTdHJpbmcmIGVsZW1lbnROYW1lLCBDU1NQYXJzZXJTZWxlY3Rvciogc3BlY2lmaWVycywgYm9v
bCB0YWdJc0Zvck5hbWVzcGFjZVJ1bGUpCiB7CiAgICAgQXRvbWljU3RyaW5nIGRldGVybWluZWRO
YW1lc3BhY2UgPSBuYW1lc3BhY2VQcmVmaXggIT0gbnVsbEF0b20gJiYgbV9zdHlsZVNoZWV0ID8g
bV9zdHlsZVNoZWV0LT5kZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNwYWNlUHJlZml4KSA6IG1fZGVm
YXVsdE5hbWVzcGFjZTsKICAgICBRdWFsaWZpZWROYW1lIHRhZyhuYW1lc3BhY2VQcmVmaXgsIGVs
ZW1lbnROYW1lLCBkZXRlcm1pbmVkTmFtZXNwYWNlKTsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9N
KQorICAgIGlmIChzcGVjaWZpZXJzLT5pc0Rpc3RyaWJ1dGVkUHNldWRvRWxlbWVudCgpKSB7Cisg
ICAgICAgIENTU1BhcnNlclNlbGVjdG9yKiBhcmd1bWVudFNlbGVjdG9yID0gc3BlY2lmaWVycy0+
ZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKCk7CisgICAgICAgIEFTU0VSVChhcmd1bWVudFNlbGVj
dG9yKTsKKyAgICAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGVuZCA9IGFyZ3VtZW50U2VsZWN0b3I7
CisgICAgICAgIHdoaWxlIChlbmQtPnRhZ0hpc3RvcnkoKSkKKyAgICAgICAgICAgIGVuZCA9IGVu
ZC0+dGFnSGlzdG9yeSgpOworICAgICAgICBPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IGVsZW1l
bnROYW1lU2VsZWN0b3IgPSBhZG9wdFB0cihuZXcgQ1NTUGFyc2VyU2VsZWN0b3IodGFnKSk7Cisg
ICAgICAgIGVuZC0+c2V0VGFnSGlzdG9yeShlbGVtZW50TmFtZVNlbGVjdG9yLnJlbGVhc2UoKSk7
CisgICAgICAgIGVuZC0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6OlNoYWRvd0Rpc3RyaWJ1dGVk
KTsKKyAgICAgICAgcmV0dXJuIGFyZ3VtZW50U2VsZWN0b3I7CisgICAgfQorI2VuZGlmCisKICAg
ICBpZiAoIXNwZWNpZmllcnMtPmlzQ3VzdG9tUHNldWRvRWxlbWVudCgpKSB7CiAgICAgICAgIGlm
ICh0YWcgPT0gYW55UU5hbWUoKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJl
dHVybiBzcGVjaWZpZXJzOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICAgICAgaWYgKCEo
c3BlY2lmaWVycy0+cHNldWRvVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DdWUpKQogI2Vu
ZGlmCiAgICAgICAgICAgICBzcGVjaWZpZXJzLT5wcmVwZW5kVGFnU2VsZWN0b3IodGFnLCB0YWdJ
c0Zvck5hbWVzcGFjZVJ1bGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBzcGVj
aWZpZXJzOwogICAgIH0KIAogICAgIENTU1BhcnNlclNlbGVjdG9yKiBsYXN0U2hhZG93RGVzY2Vu
ZGFudCA9IHNwZWNpZmllcnM7CkBAIC0xMTA4MCw3ICsxMTA5OSw3IEBAIHZvaWQgQ1NTUGFyc2Vy
Ojp1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZXNwYWNlUHJlCiAgICAgaWYgKGxhc3RTaGFkb3dEZXNjZW5kYW50LT50YWdIaXN0b3J5KCkpIHsK
ICAgICAgICAgaWYgKHRhZyAhPSBhbnlRTmFtZSgpKQogICAgICAgICAgICAgbGFzdFNoYWRvd0Rl
c2NlbmRhbnQtPnRhZ0hpc3RvcnkoKS0+cHJlcGVuZFRhZ1NlbGVjdG9yKHRhZywgdGFnSXNGb3JO
YW1lc3BhY2VSdWxlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gc3BlY2lmaWVy
czsKICAgICB9CiAKICAgICAvLyBGb3Igc2hhZG93LUlEIHBzZXVkby1lbGVtZW50cyB0byBiZSBj
b3JyZWN0bHkgbWF0Y2hlZCwgdGhlIFNoYWRvd0Rlc2NlbmRhbnQgY29tYmluYXRvciBoYXMgdG8g
YmUgdXNlZC4KQEAgLTExMDg4LDkgKzExMTA3LDEwIEBAIHZvaWQgQ1NTUGFyc2VyOjp1cGRhdGVT
cGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJl
CiAgICAgT3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBlbGVtZW50TmFtZVNlbGVjdG9yID0gYWRv
cHRQdHIobmV3IENTU1BhcnNlclNlbGVjdG9yKHRhZykpOwogICAgIGxhc3RTaGFkb3dEZXNjZW5k
YW50LT5zZXRUYWdIaXN0b3J5KGVsZW1lbnROYW1lU2VsZWN0b3IucmVsZWFzZSgpKTsKICAgICBs
YXN0U2hhZG93RGVzY2VuZGFudC0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6OlNoYWRvd0Rlc2Nl
bmRhbnQpOworICAgIHJldHVybiBzcGVjaWZpZXJzOwogfQogCi1DU1NQYXJzZXJTZWxlY3Rvciog
Q1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzKENTU1BhcnNlclNlbGVjdG9yKiBzcGVjaWZpZXJz
LCBDU1NQYXJzZXJTZWxlY3RvciogbmV3U3BlY2lmaWVyKQorQ1NTUGFyc2VyU2VsZWN0b3IqIENT
U1BhcnNlcjo6cmV3cml0ZVNwZWNpZmllcnMoQ1NTUGFyc2VyU2VsZWN0b3IqIHNwZWNpZmllcnMs
IENTU1BhcnNlclNlbGVjdG9yKiBuZXdTcGVjaWZpZXIpCiB7CiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQogICAgIGlmIChuZXdTcGVjaWZpZXItPmlzQ3VzdG9tUHNldWRvRWxlbWVudCgpIHx8IG5l
d1NwZWNpZmllci0+cHNldWRvVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DdWUpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuaAppbmRleCBkYjllYTk4MTU1NmQxMzRjNjAxZGI3NjRlZmNkNjljZjA0
ZTRhOWJhLi42ZjNkZTRhNDBiMDZkMGI1MDZmNjk5MzFiMmE3MWFiMGI0ZTg3NWZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5oCkBAIC0zMjQsOSArMzI0LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
YWRkTmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJp
bmcmIHVyaSk7CiAgICAgUXVhbGlmaWVkTmFtZSBkZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoY29u
c3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKTsK
LSAgICB2b2lkIHVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lc3BhY2VQcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudE5hbWUsIENT
U1BhcnNlclNlbGVjdG9yKiwgYm9vbCBpc05hbWVzcGFjZVBsYWNlaG9sZGVyID0gZmFsc2UpOwot
ICAgIHZvaWQgdXBkYXRlU3BlY2lmaWVyc1dpdGhOYW1lc3BhY2VJZk5lZWRlZChDU1NQYXJzZXJT
ZWxlY3RvciopOwotICAgIENTU1BhcnNlclNlbGVjdG9yKiB1cGRhdGVTcGVjaWZpZXJzKENTU1Bh
cnNlclNlbGVjdG9yKiwgQ1NTUGFyc2VyU2VsZWN0b3IqKTsKKworICAgIENTU1BhcnNlclNlbGVj
dG9yKiByZXdyaXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWVzcGFjZVByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50TmFtZSwgQ1NTUGFy
c2VyU2VsZWN0b3IqLCBib29sIGlzTmFtZXNwYWNlUGxhY2Vob2xkZXIgPSBmYWxzZSk7CisgICAg
Q1NTUGFyc2VyU2VsZWN0b3IqIHJld3JpdGVTcGVjaWZpZXJzV2l0aE5hbWVzcGFjZUlmTmVlZGVk
KENTU1BhcnNlclNlbGVjdG9yKik7CisgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIHJld3JpdGVTcGVj
aWZpZXJzKENTU1BhcnNlclNlbGVjdG9yKiwgQ1NTUGFyc2VyU2VsZWN0b3IqKTsKIAogICAgIHZv
aWQgaW52YWxpZEJsb2NrSGl0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXJWYWx1ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5j
cHAKaW5kZXggMmQ2MzFiMWY5ZjZhNGM4MzFjZWQ0NDk1ZTk3YmE0YjExZjdkY2RkNi4uZjBlNWYz
Y2ZmNTc2ZGZjMGQ2M2RhNjZkZDI2YWUwNWRmYWI4MWNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlclZhbHVlcy5jcHAKQEAgLTE0Nyw2ICsxNDcsOSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBDU1NQYXJzZXJWYWx1ZTo6Y3JlYXRlQ1NTVmFsdWUoKQogCiBDU1NQYXJzZXJTZWxlY3Rvcjo6
Q1NTUGFyc2VyU2VsZWN0b3IoKQogICAgIDogbV9zZWxlY3RvcihhZG9wdFB0cihmYXN0TmV3PENT
U1NlbGVjdG9yPigpKSkKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAsIG1fZnVuY3Rpb25B
cmd1bWVudFNlbGVjdG9yKDApCisjZW5kaWYKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
clZhbHVlcy5oCmluZGV4IDFiMjA3MWQ2M2RiNDg0MDExYTc1YTE5Y2I0MWI1MGFkOTk5MDMyMzYu
LjU4YTc2ZTdlNWNlYzRmYTA0YzE4M2IwOTcxYTQzMmQ5ODIxNTc3OWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyVmFsdWVzLmgKQEAgLTE4Niw2ICsxODYsMTIgQEAgcHVibGljOgogCiAgICAg
dm9pZCBhZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
ID4mIHNlbGVjdG9yVmVjdG9yKTsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIENTU1Bh
cnNlclNlbGVjdG9yKiBmdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X2Z1bmN0aW9uQXJndW1lbnRTZWxlY3RvcjsgfQorICAgIHZvaWQgc2V0RnVuY3Rpb25Bcmd1bWVu
dFNlbGVjdG9yKENTU1BhcnNlclNlbGVjdG9yKiBzZWxlY3RvcikgeyBtX2Z1bmN0aW9uQXJndW1l
bnRTZWxlY3RvciA9IHNlbGVjdG9yOyB9CisgICAgYm9vbCBpc0Rpc3RyaWJ1dGVkUHNldWRvRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3ItPmlzRGlzdHJpYnV0ZWRQc2V1ZG9FbGVt
ZW50KCk7IH0KKyNlbmRpZgorCiAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgcHNldWRvVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3ItPnBzZXVkb1R5cGUoKTsgfQogICAgIGJvb2wg
aXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvci0+aXNDdXN0
b21Qc2V1ZG9FbGVtZW50KCk7IH0KIApAQCAtMjAxLDYgKzIwNyw5IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgT3duUHRyPENTU1NlbGVjdG9yPiBtX3NlbGVjdG9yOwogICAgIE93blB0cjxDU1NQ
YXJzZXJTZWxlY3Rvcj4gbV90YWdIaXN0b3J5OworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAg
IENTU1BhcnNlclNlbGVjdG9yKiBtX2Z1bmN0aW9uQXJndW1lbnRTZWxlY3RvcjsKKyNlbmRpZgog
fTsKIAogaW5saW5lIGJvb2wgQ1NTUGFyc2VyU2VsZWN0b3I6Omhhc1NoYWRvd0Rlc2NlbmRhbnQo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXggMmUzNDkzZjhmYTg3Mzc4
YjJjOGMzNmUyNDhmZjBmMjI1OWJhMjU1Ni4uYmNkYzA5ZTAyYmI0ZmI3NmI4ZTMzOWFjMTE0Mjdi
MzA1ZTBhNjU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCkBAIC0yNDMsNiArMjQz
LDkgQEAgUHNldWRvSWQgQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVkb1R5cGUgdHlwZSkKICNp
ZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQogICAgIGNhc2UgUHNldWRvU2VhbWxlc3NEb2N1bWVu
dDoKICNlbmRpZgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGNhc2UgUHNldWRvRGlzdHJp
YnV0ZWQ6CisjZW5kaWYKICAgICAgICAgcmV0dXJuIE5PUFNFVURPOwogICAgIGNhc2UgUHNldWRv
Tm90UGFyc2VkOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTMzMyw2ICszMzYs
OSBAQCBzdGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsZWN0b3I6OlBzZXVk
b1R5cGU+KiBuYW1lVG9Qc2V1ZG9UeXBlTWFwKAogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1Mp
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNlYW1sZXNzRG9jdW1lbnQs
ICgiLXdlYmtpdC1zZWFtbGVzcy1kb2N1bWVudCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKICNlbmRpZgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBkaXN0cmlidXRlZCwgKCItd2Via2l0LWRpc3RyaWJ1
dGVkKCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyNlbmRpZgogICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpblJhbmdlLCAoImluLXJhbmdlIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBvdXRPZlJhbmdlLCAoIm91dC1vZi1yYW5nZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIApAQCAtNDE2LDYgKzQyMiw5IEBAIHN0YXRp
YyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5h
bWVUb1BzZXVkb1R5cGVNYXAoCiAjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKICAgICAgICAg
bmFtZVRvUHNldWRvVHlwZS0+c2V0KHNlYW1sZXNzRG9jdW1lbnQuaW1wbCgpLCBDU1NTZWxlY3Rv
cjo6UHNldWRvU2VhbWxlc3NEb2N1bWVudCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKKyAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGRpc3RyaWJ1dGVkLmltcGwoKSwgQ1NT
U2VsZWN0b3I6OlBzZXVkb0Rpc3RyaWJ1dGVkKTsKKyNlbmRpZgogICAgICAgICBuYW1lVG9Qc2V1
ZG9UeXBlLT5zZXQoaW5SYW5nZS5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9JblJhbmdlKTsK
ICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KG91dE9mUmFuZ2UuaW1wbCgpLCBDU1NTZWxl
Y3Rvcjo6UHNldWRvT3V0T2ZSYW5nZSk7CiAgICAgfQpAQCAtNDY2LDYgKzQ3NSw5IEBAIHZvaWQg
Q1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY29uc3QKICAgICBjYXNlIFBzZXVkb0Zp
cnN0TGV0dGVyOgogICAgIGNhc2UgUHNldWRvRmlyc3RMaW5lOgogICAgICAgICBjb21wYXQgPSB0
cnVlOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGNhc2UgUHNldWRvRGlzdHJpYnV0ZWQ6
CisjZW5kaWYKICAgICBjYXNlIFBzZXVkb1Jlc2l6ZXI6CiAgICAgY2FzZSBQc2V1ZG9TY3JvbGxi
YXI6CiAgICAgY2FzZSBQc2V1ZG9TY3JvbGxiYXJDb3JuZXI6CkBAIC03MDcsNiArNzE5LDEwIEBA
IFN0cmluZyBDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KCkgY29uc3QKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEZXNj
ZW5kYW50OgogICAgICAgICAgICAgcmV0dXJuIHRhZ0hpc3RvcnlUZXh0ICsgc3RyLnRvU3RyaW5n
KCk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNo
YWRvd0Rpc3RyaWJ1dGVkOgorICAgICAgICAgICAgcmV0dXJuIHRhZ0hpc3RvcnlUZXh0ICsgIjo6
LXdlYmtpdC1kaXN0cmlidXRlZCgiICsgc3RyLnRvU3RyaW5nKCkgKyAiKSI7CisjZW5kaWYKICAg
ICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCA1YmM2MzI3MzE0
MzY3MzE2MDFjMTc3ZmZkNGQ4MDFmYzJlZjkwMjFlLi43NTA3OGMxNjcwNGE0ZjM5YTBkOGNkOGVh
ZDU1Mzk1OTgwY2JlOGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApAQCAtNzcsNyArNzcs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgRGlyZWN0QWRqYWNlbnQsCiAg
ICAgICAgICAgICBJbmRpcmVjdEFkamFjZW50LAogICAgICAgICAgICAgU3ViU2VsZWN0b3IsCi0g
ICAgICAgICAgICBTaGFkb3dEZXNjZW5kYW50CisgICAgICAgICAgICBTaGFkb3dEZXNjZW5kYW50
LAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICAgICAgU2hhZG93RGlzdHJpYnV0ZWQK
KyNlbmRpZgogICAgICAgICB9OwogCiAgICAgICAgIGVudW0gUHNldWRvVHlwZSB7CkBAIC0xNjMs
NyArMTY2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFBzZXVkb1Bhc3RD
dWUsCiAjZW5kaWYKICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQotICAgICAgICAgICAgUHNl
dWRvU2VhbWxlc3NEb2N1bWVudAorICAgICAgICAgICAgUHNldWRvU2VhbWxlc3NEb2N1bWVudCwK
KyNlbmRpZgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICAgICAgUHNldWRvRGlzdHJp
YnV0ZWQKICNlbmRpZgogICAgICAgICB9OwogCkBAIC0yMjAsNiArMjI2LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0N1c3RvbVBzZXVkb0VsZW1lbnQoKSBjb25zdDsK
ICAgICAgICAgYm9vbCBpc1NpYmxpbmdTZWxlY3RvcigpIGNvbnN0OwogICAgICAgICBib29sIGlz
QXR0cmlidXRlU2VsZWN0b3IoKSBjb25zdDsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAg
ICAgYm9vbCBpc0Rpc3RyaWJ1dGVkUHNldWRvRWxlbWVudCgpIGNvbnN0OworICAgICAgICBib29s
IGlzU2hhZG93RGlzdHJpYnV0ZWQoKSBjb25zdDsKKyNlbmRpZgogCiAgICAgICAgIFJlbGF0aW9u
IHJlbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVsYXRpb24+KG1fcmVsYXRp
b24pOyB9CiAKQEAgLTMzMiw2ICszNDIsMTggQEAgaW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6Omlz
QXR0cmlidXRlU2VsZWN0b3IoKSBjb25zdAogICAgICAgICB8fCBtX21hdGNoID09IENTU1NlbGVj
dG9yOjpFbmQ7CiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKK2lubGluZSBib29sIENTU1Nl
bGVjdG9yOjppc0Rpc3RyaWJ1dGVkUHNldWRvRWxlbWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fbWF0Y2ggPT0gUHNldWRvRWxlbWVudCAmJiBwc2V1ZG9UeXBlKCkgPT0gUHNldWRvRGlzdHJp
YnV0ZWQ7Cit9CisKK2lubGluZSBib29sIENTU1NlbGVjdG9yOjppc1NoYWRvd0Rpc3RyaWJ1dGVk
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWxhdGlvbiA9PSBDU1NTZWxlY3Rvcjo6U2hhZG93
RGlzdHJpYnV0ZWQ7Cit9CisjZW5kaWYKKwogaW5saW5lIHZvaWQgQ1NTU2VsZWN0b3I6OnNldFZh
bHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgQVNTRVJUKG1fbWF0Y2ggIT0g
VGFnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKaW5kZXggZGZhYjAzNjIx
MjllMzI1YmE1NGM4MTMzNjZhZWEyZjJmYmU3ZjkzMy4uN2U4ZTE5MGRjYzcwZGZhZDg0ZDFlNmZl
NjBhMjg0MTkwOTcyNzE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAK
QEAgLTIxMSw2ICsyMTEsMjAgQEAgYm9vbCBDU1NTZWxlY3Rvckxpc3Q6Omhhc0ludmFsaWRTZWxl
Y3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIGZvckVhY2hTZWxlY3RvcihmdW5jdG9yLCB0aGlzKTsK
IH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorY2xhc3MgU2VsZWN0b3JIYXNTaGFkb3dEaXN0
cmlidXRlZCB7CitwdWJsaWM6CisgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IENTU1NlbGVjdG9y
KiBzZWxlY3RvcikKKyAgICB7CisgICAgICAgIHJldHVybiBzZWxlY3Rvci0+aXNTaGFkb3dEaXN0
cmlidXRlZCgpOworICAgIH0KK307CiAKK2Jvb2wgQ1NTU2VsZWN0b3JMaXN0OjpoYXNTaGFkb3dE
aXN0cmlidXRlZEF0KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICBTZWxlY3Rvckhhc1NoYWRv
d0Rpc3RyaWJ1dGVkIGZ1bmN0b3I7CisgICAgcmV0dXJuIGZvckVhY2hUYWdTZWxlY3RvcihmdW5j
dG9yLCBzZWxlY3RvckF0KGluZGV4KSk7Cit9CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCmluZGV4IGU0ZjkwZGI4ODlhNzI2
MmIyMGIxOWFlOGEwZTUxOWQzOTQ0MTllZWMuLjUxMDRlZGI1MWMxMzUyODdlN2FlM2EzNWM1MDQw
YTM4YmE3MTdiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxp
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgKQEAgLTYxLDYg
KzYxLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHNlbGVjdG9yc05lZWROYW1lc3BhY2VSZXNvbHV0
aW9uKCk7CiAgICAgYm9vbCBoYXNJbnZhbGlkU2VsZWN0b3IoKSBjb25zdDsKIAorI2lmIEVOQUJM
RShTSEFET1dfRE9NKQorICAgIGJvb2wgaGFzU2hhZG93RGlzdHJpYnV0ZWRBdChzaXplX3QgaW5k
ZXgpIGNvbnN0OworI2VuZGlmCisKICAgICBTdHJpbmcgc2VsZWN0b3JzVGV4dCgpIGNvbnN0Owog
CiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUnVsZVNldC5jcHAKaW5kZXggNjI2NzkwMzg5MzQzYWNmZmRiZWE5Y2E3N2QxZGU5OWRk
Yzg0YjMwNS4uOTRhZTYxOGZjNmIzM2JlYzRiNDEwNWQzMjljYjYxNWY1YThlMmJkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9SdWxlU2V0LmNwcApAQCAtMzA3LDkgKzMwNywyNSBAQCB2b2lkIFJ1bGVTZXQ6OmFkZENo
aWxkUnVsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiA+JiBydWxlcywgY29u
c3QgTQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBydWxlcy5zaXplKCk7ICsraSkgewog
ICAgICAgICBTdHlsZVJ1bGVCYXNlKiBydWxlID0gcnVsZXNbaV0uZ2V0KCk7CiAKLSAgICAgICAg
aWYgKHJ1bGUtPmlzU3R5bGVSdWxlKCkpCi0gICAgICAgICAgICBhZGRTdHlsZVJ1bGUoc3RhdGlj
X2Nhc3Q8U3R5bGVSdWxlKj4ocnVsZSksIGFkZFJ1bGVGbGFncyk7Ci0gICAgICAgIGVsc2UgaWYg
KHJ1bGUtPmlzUGFnZVJ1bGUoKSkKKyAgICAgICAgaWYgKHJ1bGUtPmlzU3R5bGVSdWxlKCkpIHsK
KyAgICAgICAgICAgIFN0eWxlUnVsZSogc3R5bGVSdWxlID0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxl
Kj4ocnVsZSk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgICAgICBpZiAoIXNjb3Bl
KQorICAgICAgICAgICAgICAgIGFkZFN0eWxlUnVsZShzdHlsZVJ1bGUsIGFkZFJ1bGVGbGFncyk7
CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb25zdCBDU1NTZWxlY3Rvckxp
c3QmIHNlbGVjdG9yTGlzdCA9IHN0eWxlUnVsZS0+c2VsZWN0b3JMaXN0KCk7CisgICAgICAgICAg
ICAgICAgZm9yIChzaXplX3Qgc2VsZWN0b3JJbmRleCA9IDA7IHNlbGVjdG9ySW5kZXggIT0gbm90
Rm91bmQ7IHNlbGVjdG9ySW5kZXggPSBzZWxlY3Rvckxpc3QuaW5kZXhPZk5leHRTZWxlY3RvckFm
dGVyKHNlbGVjdG9ySW5kZXgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvckxp
c3QuaGFzU2hhZG93RGlzdHJpYnV0ZWRBdChzZWxlY3RvckluZGV4KSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc29sdmVyLT5zaGFkb3dEaXN0cmlidXRlZFJ1bGVzKCkuYWRkUnVsZShzdHls
ZVJ1bGUsIHNlbGVjdG9ySW5kZXgsIGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSo+KHNjb3BlKSwg
YWRkUnVsZUZsYWdzKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgYWRkUnVsZShzdHlsZVJ1bGUsIHNlbGVjdG9ySW5kZXgsIGFkZFJ1bGVGbGFncyk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgICAgIGFk
ZFN0eWxlUnVsZShzdHlsZVJ1bGUsIGFkZFJ1bGVGbGFncyk7CisjZW5kaWYKKworICAgICAgICB9
IGVsc2UgaWYgKHJ1bGUtPmlzUGFnZVJ1bGUoKSkKICAgICAgICAgICAgIGFkZFBhZ2VSdWxlKHN0
YXRpY19jYXN0PFN0eWxlUnVsZVBhZ2UqPihydWxlKSk7CiAgICAgICAgIGVsc2UgaWYgKHJ1bGUt
PmlzTWVkaWFSdWxlKCkpIHsKICAgICAgICAgICAgIFN0eWxlUnVsZU1lZGlhKiBtZWRpYVJ1bGUg
PSBzdGF0aWNfY2FzdDxTdHlsZVJ1bGVNZWRpYSo+KHJ1bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcAppbmRleCAzMGZjNDlhZGJmZjMzM2UzYWZjOWY0ZDBkOGFjMWNlNTdj
ODM0MmE5Li5lYTkxNGU1YzdiOTBjZDIwY2M2ODlkZWM1ZWNmMWY4ZDMxZjUyMDM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1
ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFByb2dyZXNzRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbnNlcnRpb25Qb2lu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk5v
ZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTI4MSw4ICsyODIsMTMgQEAg
U2VsZWN0b3JDaGVja2VyOjpNYXRjaCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoKGNvbnN0IFNlbGVj
dG9yQ2hlY2tpbmdDb250ZXh0JiBjb24KIAogICAgIC8vIFByZXBhcmUgbmV4dCBzZWxlY3Rvcgog
ICAgIGNvbnN0IENTU1NlbGVjdG9yKiBoaXN0b3J5U2VsZWN0b3IgPSBjb250ZXh0LnNlbGVjdG9y
LT50YWdIaXN0b3J5KCk7Ci0gICAgaWYgKCFoaXN0b3J5U2VsZWN0b3IpCisgICAgaWYgKCFoaXN0
b3J5U2VsZWN0b3IpIHsKKyAgICAgICAgaWYgKGNvbnRleHQuYmVoYXZpb3JBdEJvdW5kYXJ5ID09
IENyb3NzZXNCb3VuZGFyeSkgeworICAgICAgICAgICAgQVNTRVJUKGNvbnRleHQuc2NvcGUpOwor
ICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuc2NvcGUtPmNvbnRhaW5zKGNvbnRleHQuZWxlbWVu
dCkgPyBTZWxlY3Rvck1hdGNoZXMgOiBTZWxlY3RvckZhaWxzTG9jYWxseTsKKyAgICAgICAgfQog
ICAgICAgICByZXR1cm4gU2VsZWN0b3JNYXRjaGVzOworICAgIH0KIAogICAgIFNlbGVjdG9yQ2hl
Y2tpbmdDb250ZXh0IG5leHRDb250ZXh0KGNvbnRleHQpOwogICAgIG5leHRDb250ZXh0LnNlbGVj
dG9yID0gaGlzdG9yeVNlbGVjdG9yOwpAQCAtMzc5LDYgKzM4NSwyNCBAQCBTZWxlY3RvckNoZWNr
ZXI6Ok1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2goY29uc3QgU2VsZWN0b3JDaGVja2luZ0Nv
bnRleHQmIGNvbgogICAgICAgICAgICAgbmV4dENvbnRleHQuZWxlbWVudFN0eWxlID0gMDsKICAg
ICAgICAgICAgIHJldHVybiBtYXRjaChuZXh0Q29udGV4dCwgaWdub3JlRHluYW1pY1BzZXVkbywg
c2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5KTsKICAgICAgICAgfQorI2lmIEVOQUJMRShTSEFET1df
RE9NKQorICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rpc3RyaWJ1dGVkOgorICAgICAgICB7
CisgICAgICAgICAgICBWZWN0b3I8SW5zZXJ0aW9uUG9pbnQqLCA4PiBpbnNlcnRpb25Qb2ludHM7
CisgICAgICAgICAgICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQgPSBjb250ZXh0LmVsZW1lbnQ7IGVs
ZW1lbnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKKyAgICAgICAgICAg
ICAgICBpbnNlcnRpb25Qb2ludHMuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjb2xsZWN0SW5z
ZXJ0aW9uUG9pbnRzV2hlcmVOb2RlSXNEaXN0cmlidXRlZChlbGVtZW50LCBpbnNlcnRpb25Qb2lu
dHMpOworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zZXJ0aW9uUG9p
bnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1l
bnQgPSBpbnNlcnRpb25Qb2ludHNbaV07CisgICAgICAgICAgICAgICAgICAgIG5leHRDb250ZXh0
LmlzU3ViU2VsZWN0b3IgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgbmV4dENvbnRleHQu
ZWxlbWVudFN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoKG5leHRDb250
ZXh0LCBpZ25vcmVEeW5hbWljUHNldWRvLCBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kpID09IFNl
bGVjdG9yTWF0Y2hlcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3Rvck1h
dGNoZXM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0
dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OworICAgICAgICB9CisjZW5kaWYKICAgICB9CiAK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TZWxlY3RvckNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
aAppbmRleCAzOTM5YmMzNTRlNGEzY2Q3MjM0NzdmMzhlZjYyYWZkYzRkNmZlZWZiLi4yMTMxZjNi
YWI4MDM3ZGE4YTQyMDVmM2Q3MjQzYTJhYjZhYzA1ZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVj
dG9yQ2hlY2tlci5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICBlbnVtIE1hdGNoIHsg
U2VsZWN0b3JNYXRjaGVzLCBTZWxlY3RvckZhaWxzTG9jYWxseSwgU2VsZWN0b3JGYWlsc0FsbFNp
YmxpbmdzLCBTZWxlY3RvckZhaWxzQ29tcGxldGVseSB9OwogICAgIGVudW0gVmlzaXRlZE1hdGNo
VHlwZSB7IFZpc2l0ZWRNYXRjaERpc2FibGVkLCBWaXNpdGVkTWF0Y2hFbmFibGVkIH07CiAgICAg
ZW51bSBNb2RlIHsgUmVzb2x2aW5nU3R5bGUgPSAwLCBDb2xsZWN0aW5nUnVsZXMsIFF1ZXJ5aW5n
UnVsZXMsIFNoYXJpbmdSdWxlcyB9OworICAgIGVudW0gQmVoYXZpb3JBdEJvdW5kYXJ5IHsgRG9l
c05vdENyb3NzQm91bmRhcnksIENyb3NzZXNCb3VuZGFyeSB9OwogCiAgICAgc3RydWN0IFNlbGVj
dG9yQ2hlY2tpbmdDb250ZXh0IHsKICAgICAgICAgLy8gSW5pdGlhbCBzZWxlY3RvciBjb25zdHJ1
Y3RvcgpAQCAtNjIsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAsIGlzU3ViU2VsZWN0
b3IoZmFsc2UpCiAgICAgICAgICAgICAsIGhhc1Njcm9sbGJhclBzZXVkbyhmYWxzZSkKICAgICAg
ICAgICAgICwgaGFzU2VsZWN0aW9uUHNldWRvKGZhbHNlKQorICAgICAgICAgICAgLCBiZWhhdmlv
ckF0Qm91bmRhcnkoRG9lc05vdENyb3NzQm91bmRhcnkpCiAgICAgICAgIHsgfQogCiAgICAgICAg
IGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcjsKQEAgLTczLDYgKzc1LDcgQEAgcHVibGljOgog
ICAgICAgICBib29sIGlzU3ViU2VsZWN0b3I7CiAgICAgICAgIGJvb2wgaGFzU2Nyb2xsYmFyUHNl
dWRvOwogICAgICAgICBib29sIGhhc1NlbGVjdGlvblBzZXVkbzsKKyAgICAgICAgQmVoYXZpb3JB
dEJvdW5kYXJ5IGJlaGF2aW9yQXRCb3VuZGFyeTsKICAgICB9OwogCiAgICAgYm9vbCBtYXRjaGVz
KGNvbnN0IENTU1NlbGVjdG9yKiwgRWxlbWVudCosIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0
b3IgPSBmYWxzZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcAppbmRl
eCBlYWY4ODY5YzQ2ODhlMWY1OWY5YWI0OTcyOTVmM2JlOTUwOTZmYmU4Li4xYzc2NTI5YjQzOWI5
MzZlYzZjODJhZTBlNDAwYTIzYTYyZWM2NjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU2VsZWN0b3JGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZp
bHRlci5jcHAKQEAgLTE0Nyw2ICsxNDcsOSBAQCB2b2lkIFNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0
SWRlbnRpZmllckhhc2hlcyhjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIHVuc2lnbgogICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpEaXJlY3RBZGphY2VudDoKICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2VudDoKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2hh
ZG93RGVzY2VuZGFudDoKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6U2hhZG93RGlzdHJpYnV0ZWQ6CisjZW5kaWYKICAgICAgICAgICAgIHNraXBPdmVy
U3Vic2VsZWN0b3JzID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpEZXNjZW5kYW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmlu
ZGV4IDE4MjkwZjM4NTY0ODk1Mzc2ZTU4OTZhY2EyNDBhODAwNzcyNjI3M2MuLmViZjU0MTgzMjU1
MDhhZDlkNGExMTkwZGU4YTUwYTgxYTRkMTBiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKQEAgLTIyMyw2ICsyMjMsMjUgQEAgc3RhdGljIFN0eWxlUHJvcGVydHlTZXQqIHJp
Z2h0VG9MZWZ0RGVjbGFyYXRpb24oKQogICAgIHJldHVybiByaWdodFRvTGVmdERlY2wuZ2V0KCk7
CiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKK3ZvaWQgU2hhZG93RGlzdHJpYnV0ZWRSdWxl
czo6YWRkUnVsZShTdHlsZVJ1bGUqIHJ1bGUsIHNpemVfdCBzZWxlY3RvckluZGV4LCBDb250YWlu
ZXJOb2RlKiBzY29wZSwgQWRkUnVsZUZsYWdzIGFkZFJ1bGVGbGFncykKK3sKKyAgICBpZiAobV9z
aGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAuY29udGFpbnMoc2NvcGUpKQorICAgICAgICBtX3No
YWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5nZXQoc2NvcGUpLT5hZGRSdWxlKHJ1bGUsIHNlbGVj
dG9ySW5kZXgsIGFkZFJ1bGVGbGFncyk7CisgICAgZWxzZSB7CisgICAgICAgIE93blB0cjxSdWxl
U2V0PiBydWxlU2V0Rm9yU2NvcGUgPSBhZG9wdFB0cihuZXcgUnVsZVNldCgpKTsKKyAgICAgICAg
cnVsZVNldEZvclNjb3BlLT5hZGRSdWxlKHJ1bGUsIHNlbGVjdG9ySW5kZXgsIGFkZFJ1bGVGbGFn
cyk7CisgICAgICAgIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLmFkZChzY29wZSwgcnVs
ZVNldEZvclNjb3BlLnJlbGVhc2UoKSk7CisgICAgfQorfQorCit2b2lkIFNoYWRvd0Rpc3RyaWJ1
dGVkUnVsZXM6OmNvbGxlY3RNYXRjaFJlcXVlc3RzKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIFZl
Y3RvcjxNYXRjaFJlcXVlc3Q+JiBtYXRjaFJlcXVlc3RzKQoreworICAgIGZvciAoU2hhZG93RGlz
dHJpYnV0ZWRSdWxlU2V0TWFwOjppdGVyYXRvciBpdCA9IG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxl
U2V0TWFwLmJlZ2luKCk7IGl0ICE9IG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLmVuZCgp
OyArK2l0KQorICAgICAgICBtYXRjaFJlcXVlc3RzLmFwcGVuZChNYXRjaFJlcXVlc3QoaXQtPnZh
bHVlLmdldCgpLCBpbmNsdWRlRW1wdHlSdWxlcywgaXQtPmtleSwgU2VsZWN0b3JDaGVja2VyOjpD
cm9zc2VzQm91bmRhcnkpKTsKK30KKworI2VuZGlmCiAKIFN0eWxlUmVzb2x2ZXI6OlN0eWxlUmVz
b2x2ZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykK
ICAgICA6IG1fbWF0Y2hlZFByb3BlcnRpZXNDYWNoZUFkZGl0aW9uc1NpbmNlTGFzdFN3ZWVwKDAp
CkBAIC0zMDYsNiArMzI1LDkgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpyZXNldEF1dGhvclN0eWxl
KCkKIHsKICAgICBtX2F1dGhvclN0eWxlID0gUnVsZVNldDo6Y3JlYXRlKCk7CiAgICAgbV9hdXRo
b3JTdHlsZS0+ZGlzYWJsZUF1dG9TaHJpbmtUb0ZpdCgpOworI2lmIEVOQUJMRShTSEFET1dfRE9N
KQorICAgIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlcy5jbGVhcigpOworI2VuZGlmCiB9CiAKIHZv
aWQgU3R5bGVSZXNvbHZlcjo6YXBwZW5kQXV0aG9yU3R5bGVTaGVldHModW5zaWduZWQgZmlyc3RO
ZXcsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgc3R5bGVTaGVldHMpCkBA
IC00OTcsNyArNTE5LDggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxl
cyhjb25zdCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdCwgUnVsZVIKICAgICBUcmVlU2NvcGUq
IHRyZWVTY29wZSA9IGVsZW1lbnQtPnRyZWVTY29wZSgpOwogICAgIGlmICghTWF0Y2hpbmdVQVJ1
bGVzU2NvcGU6OmlzTWF0Y2hpbmdVQVJ1bGVzKCkKICAgICAgICAgJiYgIXRyZWVTY29wZS0+YXBw
bHlBdXRob3JTdHlsZXMoKQotICAgICAgICAmJiAoIW1hdGNoUmVxdWVzdC5zY29wZSB8fCBtYXRj
aFJlcXVlc3Quc2NvcGUtPnRyZWVTY29wZSgpICE9IHRyZWVTY29wZSkpCisgICAgICAgICYmICgh
bWF0Y2hSZXF1ZXN0LnNjb3BlIHx8IG1hdGNoUmVxdWVzdC5zY29wZS0+dHJlZVNjb3BlKCkgIT0g
dHJlZVNjb3BlKQorICAgICAgICAmJiBtYXRjaFJlcXVlc3QuYmVoYXZpb3JBdEJvdW5kYXJ5ID09
IFNlbGVjdG9yQ2hlY2tlcjo6RG9lc05vdENyb3NzQm91bmRhcnkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIFdlIG5lZWQgdG8gY29sbGVjdCB0aGUgcnVsZXMgZm9yIGlkLCBjbGFzcywgdGFn
LCBhbmQgZXZlcnl0aGluZyBlbHNlIGludG8gYSBidWZmZXIgYW5kCkBAIC02NDMsNiArNjY2LDEz
IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYgcmVz
dWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzCiAgICAgUnVsZVJhbmdlIHJ1bGVSYW5nZSA9IHJl
c3VsdC5yYW5nZXMuYXV0aG9yUnVsZVJhbmdlKCk7CiAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMo
bWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwogICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVn
aW9uKG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAg
ICBWZWN0b3I8TWF0Y2hSZXF1ZXN0PiBtYXRjaFJlcXVlc3RzOworICAgIG1fc2hhZG93RGlzdHJp
YnV0ZWRSdWxlcy5jb2xsZWN0TWF0Y2hSZXF1ZXN0cyhpbmNsdWRlRW1wdHlSdWxlcywgbWF0Y2hS
ZXF1ZXN0cyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXRjaFJlcXVlc3RzLnNpemUo
KTsgKytpKQorICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhtYXRjaFJlcXVlc3RzW2ldLCBy
dWxlUmFuZ2UpOworI2VuZGlmCisKICAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMocmVz
dWx0KTsKIAogICAgIG1hdGNoU2NvcGVkQXV0aG9yUnVsZXMocmVzdWx0LCBpbmNsdWRlRW1wdHlS
dWxlcyk7CkBAIC02ODMsNyArNzEzLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0
Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogcnVsZXMsIGMKICAgICBT
dGF0ZSYgc3RhdGUgPSBtX3N0YXRlOwogICAgIC8vIEluIHNvbWUgY2FzZXMgd2UgbWF5IGVuZCB1
cCBsb29raW5nIHVwIHN0eWxlIGZvciByYW5kb20gZWxlbWVudHMgaW4gdGhlIG1pZGRsZSBvZiBh
IHJlY3Vyc2l2ZSB0cmVlIHJlc29sdmUuCiAgICAgLy8gQW5jZXN0b3IgaWRlbnRpZmllciBmaWx0
ZXIgd29uJ3QgYmUgdXAtdG8tZGF0ZSBpbiB0aGF0IGNhc2UgYW5kIHdlIGNhbid0IHVzZSB0aGUg
ZmFzdCBwYXRoLgotICAgIGJvb2wgY2FuVXNlRmFzdFJlamVjdCA9IG1fc2VsZWN0b3JGaWx0ZXIu
cGFyZW50U3RhY2tJc0NvbnNpc3RlbnQoc3RhdGUucGFyZW50Tm9kZSk7CisgICAgYm9vbCBjYW5V
c2VGYXN0UmVqZWN0ID0gbV9zZWxlY3RvckZpbHRlci5wYXJlbnRTdGFja0lzQ29uc2lzdGVudChz
dGF0ZS5wYXJlbnROb2RlKSAmJiBtYXRjaFJlcXVlc3QuYmVoYXZpb3JBdEJvdW5kYXJ5ID09IFNl
bGVjdG9yQ2hlY2tlcjo6RG9lc05vdENyb3NzQm91bmRhcnk7CiAKICAgICB1bnNpZ25lZCBzaXpl
ID0gcnVsZXMtPnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytp
KSB7CkBAIC02OTMsNyArNzIzLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hp
bmdSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogcnVsZXMsIGMKIAogICAgICAg
ICBTdHlsZVJ1bGUqIHJ1bGUgPSBydWxlRGF0YS5ydWxlKCk7CiAgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxNYXRjaFJ1bGUoZG9jdW1lbnQoKSwgcnVsZSwgdGhpcyk7Ci0gICAgICAgIGlmIChydWxlTWF0
Y2hlcyhydWxlRGF0YSwgbWF0Y2hSZXF1ZXN0LnNjb3BlKSkgeworICAgICAgICBpZiAocnVsZU1h
dGNoZXMocnVsZURhdGEsIG1hdGNoUmVxdWVzdC5zY29wZSwgbWF0Y2hSZXF1ZXN0LmJlaGF2aW9y
QXRCb3VuZGFyeSkpIHsKICAgICAgICAgICAgIC8vIElmIHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0
aWVzIHRvIGFwcGx5LCB0aGVuIGlnbm9yZSBpdCBpbiB0aGUgbm9uLWRlYnVnIG1vZGUuCiAgICAg
ICAgICAgICBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzID0gcnVsZS0+cHJvcGVy
dGllcygpOwogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0aWVzIHx8IChwcm9wZXJ0aWVzLT5pc0Vt
cHR5KCkgJiYgIW1hdGNoUmVxdWVzdC5pbmNsdWRlRW1wdHlSdWxlcykpIHsKQEAgLTIxMDcsNyAr
MjEzNyw3IEBAIFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IFN0eWxlUmVzb2x2ZXI6OnBzZXVkb1N0
eWxlUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqIGUsIFBzCiAgICAgcmV0dXJuIG1fc3RhdGUucnVs
ZUxpc3QucmVsZWFzZSgpOwogfQogCi1pbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpydWxlTWF0
Y2hlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3Bl
KQoraW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6cnVsZU1hdGNoZXMoY29uc3QgUnVsZURhdGEm
IHJ1bGVEYXRhLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSwgU2VsZWN0b3JDaGVja2VyOjpC
ZWhhdmlvckF0Qm91bmRhcnkgYmVoYXZpb3JBdEJvdW5kYXJ5KQogewogICAgIFN0YXRlJiBzdGF0
ZSA9IG1fc3RhdGU7CiAgICAgc3RhdGUuZHluYW1pY1BzZXVkbyA9IE5PUFNFVURPOwpAQCAtMjEz
NSw2ICsyMTY1LDcgQEAgaW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6cnVsZU1hdGNoZXMoY29u
c3QgUnVsZURhdGEmIHJ1bGVEYXRhLCBjb25zdCBDb250YWluZXIKICAgICBjb250ZXh0LmVsZW1l
bnRTdHlsZSA9IHN0YXRlLnN0eWxlLmdldCgpOwogICAgIGNvbnRleHQuc2NvcGUgPSBzY29wZTsK
ICAgICBjb250ZXh0LnBzZXVkb1N0eWxlID0gc3RhdGUucHNldWRvU3R5bGU7CisgICAgY29udGV4
dC5iZWhhdmlvckF0Qm91bmRhcnkgPSBiZWhhdmlvckF0Qm91bmRhcnk7CiAgICAgU2VsZWN0b3JD
aGVja2VyOjpNYXRjaCBtYXRjaCA9IG1fc2VsZWN0b3JDaGVja2VyLm1hdGNoKGNvbnRleHQsIHN0
YXRlLmR5bmFtaWNQc2V1ZG8sIERPTVNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneSgpKTsKICAgICBp
ZiAobWF0Y2ggIT0gU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoZXMpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IDg0YzNjZDFmYzAz
N2RhYjBkZmQ3NWE4ZmZkN2Q4YjlhNWM0OTczZjguLmM3MDE5MDk1OTVlNjkxNTBmNTViMjg5NDc1
Njc0NzA5ZWVhYWE5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtMTM1LDYg
KzEzNSwzMiBAQCBlbnVtIFJ1bGVNYXRjaGluZ0JlaGF2aW9yIHsKICAgICBNYXRjaE9ubHlVc2Vy
QWdlbnRSdWxlcywKIH07CiAKK2NsYXNzIE1hdGNoUmVxdWVzdCB7CitwdWJsaWM6CisgICAgTWF0
Y2hSZXF1ZXN0KFJ1bGVTZXQqIHJ1bGVTZXQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMgPSBmYWxz
ZSwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUgPSAwLCBTZWxlY3RvckNoZWNrZXI6OkJlaGF2
aW9yQXRCb3VuZGFyeSBiZWhhdmlvckF0Qm91bmRhcnkgPSBTZWxlY3RvckNoZWNrZXI6OkRvZXNO
b3RDcm9zc0JvdW5kYXJ5KQorICAgICAgICA6IHJ1bGVTZXQocnVsZVNldCkKKyAgICAgICAgLCBp
bmNsdWRlRW1wdHlSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcykKKyAgICAgICAgLCBzY29wZShzY29w
ZSkKKyAgICAgICAgLCBiZWhhdmlvckF0Qm91bmRhcnkoYmVoYXZpb3JBdEJvdW5kYXJ5KSB7IH0K
KyAgICBjb25zdCBSdWxlU2V0KiBydWxlU2V0OworICAgIGNvbnN0IGJvb2wgaW5jbHVkZUVtcHR5
UnVsZXM7CisgICAgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGU7CisgICAgY29uc3QgU2VsZWN0
b3JDaGVja2VyOjpCZWhhdmlvckF0Qm91bmRhcnkgYmVoYXZpb3JBdEJvdW5kYXJ5OworICAgIE1h
dGNoUmVxdWVzdCBjbG9uZVdpdGgoUnVsZVNldCogbmV3UnVsZVNldCkgY29uc3QgeyByZXR1cm4g
TWF0Y2hSZXF1ZXN0KG5ld1J1bGVTZXQsIGluY2x1ZGVFbXB0eVJ1bGVzLCBzY29wZSwgYmVoYXZp
b3JBdEJvdW5kYXJ5KTsgfQorfTsKKworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorY2xhc3MgU2hh
ZG93RGlzdHJpYnV0ZWRSdWxlcyB7CitwdWJsaWM6CisgICAgdm9pZCBhZGRSdWxlKFN0eWxlUnVs
ZSosIHNpemVfdCBzZWxlY3RvckluZGV4LCBDb250YWluZXJOb2RlKiBzY29wZSwgQWRkUnVsZUZs
YWdzKTsKKyAgICB2b2lkIGNvbGxlY3RNYXRjaFJlcXVlc3RzKGJvb2wgaW5jbHVkZUVtcHR5UnVs
ZXMsIFZlY3RvcjxNYXRjaFJlcXVlc3Q+Jik7CisgICAgdm9pZCBjbGVhcigpIHsgbV9zaGFkb3dE
aXN0cmlidXRlZFJ1bGVTZXRNYXAuY2xlYXIoKTsgfQorcHJpdmF0ZToKKyAgICB0eXBlZGVmIEhh
c2hNYXA8Y29uc3QgQ29udGFpbmVyTm9kZSosIE93blB0cjxSdWxlU2V0PiA+IFNoYWRvd0Rpc3Ry
aWJ1dGVkUnVsZVNldE1hcDsKKyAgICBTaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAgbV9zaGFk
b3dEaXN0cmlidXRlZFJ1bGVTZXRNYXA7Cit9OworI2VuZGlmCisKIC8vIFRoaXMgY2xhc3Mgc2Vs
ZWN0cyBhIFJlbmRlclN0eWxlIGZvciBhIGdpdmVuIGVsZW1lbnQgYmFzZWQgb24gYSBjb2xsZWN0
aW9uIG9mIHN0eWxlc2hlZXRzLgogY2xhc3MgU3R5bGVSZXNvbHZlciB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoU3R5bGVSZXNvbHZlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAt
MzAxLDYgKzMyNywxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWRQZW5kaW5nUmVzb3VyY2Vz
KCk7CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBTaGFkb3dEaXN0cmlidXRlZFJ1bGVz
JiBzaGFkb3dEaXN0cmlidXRlZFJ1bGVzKCkgeyByZXR1cm4gbV9zaGFkb3dEaXN0cmlidXRlZFJ1
bGVzOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGZpeGVzIHVw
IHRoZSBkZWZhdWx0IGZvbnQgc2l6ZSBpZiBpdCBkZXRlY3RzIHRoYXQgdGhlIGN1cnJlbnQgZ2Vu
ZXJpYyBmb250IGZhbWlseSBoYXMgY2hhbmdlZC4gLWR3aAogICAgIHZvaWQgY2hlY2tGb3JHZW5l
cmljRmFtaWx5Q2hhbmdlKFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKTsK
QEAgLTM1MywxNiArMzgzLDYgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBpc0NhY2hlYWJsZTsK
ICAgICB9OwogCi0gICAgc3RydWN0IE1hdGNoUmVxdWVzdCB7Ci0gICAgICAgIE1hdGNoUmVxdWVz
dChSdWxlU2V0KiBydWxlU2V0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzID0gZmFsc2UsIGNvbnN0
IENvbnRhaW5lck5vZGUqIHNjb3BlID0gMCkKLSAgICAgICAgICAgIDogcnVsZVNldChydWxlU2V0
KQotICAgICAgICAgICAgLCBpbmNsdWRlRW1wdHlSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcykKLSAg
ICAgICAgICAgICwgc2NvcGUoc2NvcGUpIHsgfQotICAgICAgICBjb25zdCBSdWxlU2V0KiBydWxl
U2V0OwotICAgICAgICBjb25zdCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzOwotICAgICAgICBjb25z
dCBDb250YWluZXJOb2RlKiBzY29wZTsKLSAgICB9OwotCiAgICAgc3RhdGljIHZvaWQgYWRkTWF0
Y2hlZFByb3BlcnRpZXMoTWF0Y2hSZXN1bHQmLCBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9w
ZXJ0aWVzLCBTdHlsZVJ1bGUqID0gMCwgdW5zaWduZWQgbGlua01hdGNoVHlwZSA9IFNlbGVjdG9y
Q2hlY2tlcjo6TWF0Y2hBbGwsIFByb3BlcnR5V2hpdGVsaXN0VHlwZSA9IFByb3BlcnR5V2hpdGVs
aXN0Tm9uZSk7CiAgICAgdm9pZCBhZGRFbGVtZW50U3R5bGVQcm9wZXJ0aWVzKE1hdGNoUmVzdWx0
JiwgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCosIGJvb2wgaXNDYWNoZWFibGUgPSB0cnVlKTsKIApA
QCAtMzgyLDcgKzQwMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzb3J0TWF0Y2hlZFJ1bGVzKCk7
CiAgICAgdm9pZCBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoTWF0Y2hSZXN1bHQmKTsKIAot
ICAgIGJvb2wgcnVsZU1hdGNoZXMoY29uc3QgUnVsZURhdGEmLCBjb25zdCBDb250YWluZXJOb2Rl
KiBzY29wZSk7CisgICAgYm9vbCBydWxlTWF0Y2hlcyhjb25zdCBSdWxlRGF0YSYsIGNvbnN0IENv
bnRhaW5lck5vZGUqIHNjb3BlLCBTZWxlY3RvckNoZWNrZXI6OkJlaGF2aW9yQXRCb3VuZGFyeSA9
IFNlbGVjdG9yQ2hlY2tlcjo6RG9lc05vdENyb3NzQm91bmRhcnkpOwogICAgIGJvb2wgY2hlY2tS
ZWdpb25TZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciogcmVnaW9uU2VsZWN0b3IsIEVsZW1lbnQq
IHJlZ2lvbkVsZW1lbnQpOwogICAgIHZvaWQgYXBwbHlNYXRjaGVkUHJvcGVydGllcyhjb25zdCBN
YXRjaFJlc3VsdCYsIGNvbnN0IEVsZW1lbnQqKTsKICAgICBlbnVtIFN0eWxlQXBwbGljYXRpb25Q
YXNzIHsKQEAgLTQyMSw2ICs0NDEsOSBAQCBwcml2YXRlOgogCiAgICAgdHlwZWRlZiBIYXNoTWFw
PEF0b21pY1N0cmluZ0ltcGwqLCBSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPiA+IEtleWZyYW1l
c1J1bGVNYXA7CiAgICAgS2V5ZnJhbWVzUnVsZU1hcCBtX2tleWZyYW1lc1J1bGVNYXA7CisjaWYg
RU5BQkxFKFNIQURPV19ET00pCisgICAgU2hhZG93RGlzdHJpYnV0ZWRSdWxlcyBtX3NoYWRvd0Rp
c3RyaWJ1dGVkUnVsZXM7CisjZW5kaWYKIAogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDxD
U1NQcm9wZXJ0eUlELCBSZWZQdHI8Q1NTVmFsdWU+ID4gUGVuZGluZ0ltYWdlUHJvcGVydHlNYXA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKaW5kZXgg
ZTA4MzE4YmZmNWE4ZTBiYmMwNDQ0ZmM4Nzg2ZDM5MTNmOThjN2M5Ni4uY2RmODIxZTJlYmM3NDZk
Njk2OWEzN2NjMTk0ODU3NDJiNjk5OTI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0luc2VydGlvblBvaW50LmNwcApAQCAtMjI5LDQgKzIyOSwyOCBAQCBJbnNlcnRpb25Qb2lu
dCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlKQogICAgIHJl
dHVybiBpbnNlcnRpb25Qb2ludDsKIH0KIAordm9pZCBjb2xsZWN0SW5zZXJ0aW9uUG9pbnRzV2hl
cmVOb2RlSXNEaXN0cmlidXRlZChjb25zdCBOb2RlKiBub2RlLCBWZWN0b3I8SW5zZXJ0aW9uUG9p
bnQqLCA4PiYgcmVzdWx0cykKK3sKKyAgICBjb25zdCBOb2RlKiBjdXJyZW50ID0gbm9kZTsKKyAg
ICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hh
ZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKKyAgICAgICAgICAgIGlmIChT
aGFkb3dSb290KiByb290ID0gY3VycmVudC0+Y29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKKyAgICAg
ICAgICAgICAgICBDb250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZURpc3RyaWJ1dGlvbihyb290KTsK
KyAgICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHNoYWRvdy0+ZGlz
dHJpYnV0b3IoKS5maW5kSW5zZXJ0aW9uUG9pbnRGb3Iobm9kZSkpIHsKKyAgICAgICAgICAgICAg
ICBjdXJyZW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChp
bnNlcnRlZFRvKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBpZiAoTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZUZvckRpc3RyaWJ1
dGlvbihjdXJyZW50KSkgeworICAgICAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRl
ZFRvID0gcGFyZW50LT5pc1NoYWRvd1Jvb3QoKSA/IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6
YXNzaWduZWRUbyh0b1NoYWRvd1Jvb3QocGFyZW50KSkgOiAwKSB7CisgICAgICAgICAgICAgICAg
Y3VycmVudCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoaW5z
ZXJ0ZWRUbyk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKaW5kZXggZDE4
OGM0NzhhMTlhZmM1MThlODIwZDlhOGZhZmNiYWUyZDlkZTk5Ny4uNzZkNzQ4NWM4YWQzNTg3YmM0
MWEyOGZlZjA3NjFjMTNmNGU1OTliOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9J
bnNlcnRpb25Qb2ludC5oCkBAIC0xNjEsNiArMTYxLDggQEAgaW5saW5lIEVsZW1lbnRTaGFkb3cq
IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCiAKIEluc2Vy
dGlvblBvaW50KiByZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqKTsKIAordm9pZCBjb2xs
ZWN0SW5zZXJ0aW9uUG9pbnRzV2hlcmVOb2RlSXNEaXN0cmlidXRlZChjb25zdCBOb2RlKiwgVmVj
dG9yPEluc2VydGlvblBvaW50KiwgOD4mIHJlc3VsdHMpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBJbnNlcnRpb25Qb2ludF9oCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTg3ZGE4MGY4MDg0NWQ5
M2YxMjBjMTRlMTBlMGFiMTlkMTExZTQ0My4uZDgzZWMzZDIxMDAyZjQzMzRmNDgzNWQxZjAwNzc4
NjkyMDZjMzE3YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEzLTAyLTExICBIYXlhdG8gSXRv
ICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gSW1wbGVtZW50
cyBhICc6OmRpc3RyaWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIxNjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRl
ZC1wc2V1ZG8tZWxlbWVudC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50LWV4
cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRl
ZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC1l
eHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50LWV4
cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRl
ZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQtZXhwZWN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LW5lc3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbm8tbWF0Y2gtZXhwZWN0ZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LW5vLW1hdGNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJv
amVjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50LXN1cHBvcnQtc2VsZWN0b3ItZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3Iu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVk
by1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1p
bi1zZWxlY3Rvci1saXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC13aXRoLWFueS1leHBlY3RlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtd2l0
aC1hbnkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTAyLTExICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgZGVsZXRpb25VSSB0ZXN0cyBpbnRv
IHBsYXRmb3JtL21hYwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42NGMyNmUyYjU2YzRjNmE3YzcwYzZjZmQ1OGEyMjdmOGUwZjQ0NjRmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVk
by1lbGVtZW50LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw5IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+Cisg
ICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICA8L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQtZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1m
b3Itc2hhZG93LWVsZW1lbnQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGMyNmUyYjU2YzRj
NmE3YzcwYzZjZmQ1OGEyMjdmOGUwZjQ0NjRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ct
ZWxlbWVudC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAg
IDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJp
YnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1l
bGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRkYzM3YzVjNmM0ODg2N2RmNWNiODE0NzI4YTM2OWZk
OGQyM2U2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQuaHRtbApAQCAtMCww
ICsxLDIzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ3NoYWRv
dzo6LXdlYmtpdC1kaXN0cmlidXRlZChkaXYpIHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNh
bmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBl
bmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAg
ICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSgnZ3JlZW4nKSkpLAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAg
ICAgICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3NoYWRv
dycpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxs
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQt
cHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE2MGI3
MmUwZGU5MTc3NjJiMmEyYTRjNWVjM2VmOWY1NjZlYjQ5OAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRj
aC1hbGwtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAg
PGRpdj4KKyAgICAgIG5vcm1hbAorICAgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVl
bjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXY+CisgICAgICBub3JtYWwKKyAgICAgIDxkaXYg
c3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjlmMmZmMmI0MTM3YTBjNWFlZWRjODVlODkxMmYyZWMzNGViMmZiYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwuaHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20u
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4K
KzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHls
ZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0
ZWQoLmhlbGxvKSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93
Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdjb250ZW50JykpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9
LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1h
bCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzog
J2hlbGxvJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoJ2dyZWVuJykpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3Jt
YWwnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6
ICdoZWxsbyd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCdncmVlbicpKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVk
by1lbGVtZW50LW1hdGNoLWRlc2NlbmRhbnQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50
LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWMxODc4NTZmZWUxOGY0ZTQyN2YyMWE3NzFiMzJk
MTEzMThmNTNiMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50LWV4cGVjdGVkLmh0
bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRp
diBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxwPgorICAgICAgPGRpdiBz
dHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgIDwvcD4KKyAgPC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlz
dHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtZGVzY2VuZGFudC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWRlc2Nl
bmRhbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTQwNDNlODU1YTUwOGQ0OGI1YTA2MDBlMGY2ODY2OTg4
MzAwMjgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWRlc2NlbmRhbnQuaHRtbApAQCAtMCwwICsx
LDIzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRlbnQ6
Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5k
Ym94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5k
Q2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hh
ZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ3AnLCB7
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVu
JykpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtbmVzdGVkLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTUxODM0NDJhMDc2
YzdmODFhOWM1NDIxMzFlNzlmYjc3NmYwMTFjYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQtZXhw
ZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJv
ZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdiBpZD0i
bmVzdGVkLWhvc3QiPgorICAgICAgdGV4dDEKKyAgICAgIDxkaXY+CisgICAgICAgIHRleHQyCisg
ICAgICAgIDxkaXY+CisgICAgICAgICAgdGV4dDMKKyAgICAgICAgICA8ZGl2IHN0eWxlPSJjb2xv
cjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgICAgICAgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAgICAg
ICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2Rpdj4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43MTY3YTNlZmVjYTBmNDA4YTZkMzg3NTY5Mjk3ZWZlNjIzNTg4MGQ3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1l
bGVtZW50LW5lc3RlZC5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4K
K3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFk
b3dTdHlsZS5pbm5lckhUTUwgPSAnZGl2IGNvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2
IGNvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2LmdyZWVuKSkgeyBjb2xvcjogZ3JlZW47
IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7
CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0
J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBj
cmVhdGVET00oJ2RpdicsIHsnaWQnOiAnbmVzdGVkLWhvc3QnfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ3RleHQxJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgndGV4dDInKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2Vs
ZWN0JzogJ2Rpdid9KSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydjbGFzcyc6ICdncmVlbid9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgndGV4dDMnKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jywge30pKSkpLAorICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnZ3JlZW4nfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSwKKyAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LW5vLW1hdGNoLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbm8tbWF0Y2gtZXhwZWN0
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMDVmZWZmNzVjNzlhZWRlNWJmOGU0OWJiZWQwYjcxNTVkY2U2
ODBkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LW5vLW1hdGNoLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwx
MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+
CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxwPm5vcm1hbDwvcD4KKyAgICA8ZGl2PgorICAgICAg
PGRpdj5ub3JtYWw8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtbm8tbWF0Y2guaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uby1tYXRjaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0NzEz
ZDYwYjIzYTczYjA2NmQ4ZTRiZjU2YjIwYzJkNzEyMzdiNWIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbm8t
bWF0Y2guaHRtbApAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hh
ZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUu
aW5uZXJIVE1MID0gJ3RoaXMtZG9lcy1ub3QtbWF0Y2g6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2
KSB7IGNvbG9yOiBncmVlbjsgfScKKyAgICArICdwOjotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdikg
eyBjb2xvcjogZ3JlZW47IH0nCisgICAgKyAnZGl2Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdikg
eyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2
JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAg
ICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
cCcsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJ25vcm1hbCcpKSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpKSwKKyAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QtY2hpbGQnfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSkpKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1l
bGVtZW50LXJlcHJvamVjdGlvbi1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2OWM5MTI3ZGU1
ZTcwM2I3YTFhNWM5MzY5NGVhN2NkMGIxMjQ4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0
aW9uLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxk
aXYgaWQ9Imhvc3QyIj4KKyAgICAgIDxkaXYgc3R5bGU9J2NvbG9yOiBncmVlbic+CisgICAgICAg
IGdyZWVuCisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQt
cHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9uLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTczNWZhNzA5ZTg2MWIwZGI0YWU0Y2M0NjRmZjdhZmExYTE5ZTBjOAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC1yZXByb2plY3Rpb24uaHRtbApAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxz
Y3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScp
Oworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0gJ2NvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQo
LmZvbykgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURP
TSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3Qo
CisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdDInfSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnLmZvbyd9KSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpKSwKKyAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2Zvbyd9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQt
ZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDhkOWUyZGUzZTZmZTRiZmQ4OTgwYjYzZDAzOWJj
NTRkODgzMWEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNjb3BlZC1leHBlY3RlZC5odG1sCkBAIC0wLDAg
KzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRi
b3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2Pm5vcm1hbDwvZGl2PgorICAgIDxkaXY+
CisgICAgICA8ZGl2IHN0eWxlPSdjb2xvcjogZ3JlZW4nPmdyZWVuPC9kaXY+CisgICAgPC9kaXY+
CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNjb3BlZC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNjb3Bl
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRhYTcxYWJjNzkwOTYzMzAwYTMyNDdlODU2ODUwYTgzNjEzNTg4
NWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJp
YnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ct
ZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9k
aXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
c3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3Ry
aWJ1dGVkKGRpdikgeyBjb2xvcjogZ3JlZW47IH0nOworc2hhZG93U3R5bGUuc2V0QXR0cmlidXRl
KCdzY29wZWQnLCB0cnVlKTsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2Rpdics
IHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnI2hvc3QtY2hpbGQx
J30pLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcjaG9zdC1j
aGlsZDInfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUpKSwKKyAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QtY2hpbGQxJ30sCisgICAg
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpLAor
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdC1jaGlsZDInfSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSkp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rv
ci1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3ItZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yM2RlZGUxMzNiODYyZGQxNGM5MmU2MDVjNGExYmVkMjhlMzdhZGFkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50LXN1cHBvcnQtc2VsZWN0b3ItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBp
ZD0iaG9zdCI+CisgICAgPGRpdj4KKyAgICAgIG5vcm1hbAorICAgICAgPGRpdiBzdHlsZT0iY29s
b3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXY+CisgICAgICBub3Jt
YWwKKyAgICAgIDxkaXY+bm9ybWFsPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3IuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVj
dG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZkYmQ4NmVmNzgyYjE0MWNmZjU5YmEzYzE2NWJhNTdlYjNl
Nzg1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLmh0bWwKQEAgLTAsMCArMSwy
OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
c2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50Ojot
d2Via2l0LWRpc3RyaWJ1dGVkKGRpdi5oZWxsbyBkaXYpIHsgY29sb3I6IGdyZWVuOyB9JzsKKwor
dmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJv
eC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9LAorICAg
ICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hhZG93U3R5
bGUsCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSksCisgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdoZWxsbyd9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpLAorICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0LWV4cGVjdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNl
ZC1pbi1zZWxlY3Rvci1saXN0LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI4MjUzZTRkYWI3
NDA1NjU4MzhkODQyNTBiYmE5YmQ5MDRkOTkyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNl
bGVjdG9yLWxpc3QtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9zdCI+
CisgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2PgorICAgIDxwPm5vcm1h
bDwvcD4KKyAgICA8cCBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvcD4KKyAgPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0Lmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNl
ZC1pbi1zZWxlY3Rvci1saXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA2ZDU0OGY2YmEzOTFjYjc0YTgy
MzE2ZWRiOTZkYzVkMmU3MWYzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxp
c3QuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93
U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5u
ZXJIVE1MID0gJ2NvbnRlbnQ6Oi13ZWJraXQtZGlzdHJpYnV0ZWQoZGl2KSwgcCB7IGNvbG9yOiBn
cmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRi
b3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzog
J2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAg
ICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jyks
CisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3AnLCB7fSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpLAorICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ3An
LCB7J2NsYXNzJzogJ2hlbGxvJ30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1
ZG8tZWxlbWVudC13aXRoLWFueS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55LWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTczNzk5NDNkZjY0ODkwMzI0ZGMwMmQ5ZGUzMDE4NTFhMTExODY1MQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC13aXRoLWFueS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2
PgorICAgIDxkaXY+bm9ybWFsPC9kaXY+CisgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5n
cmVlbjwvZGl2PgorICA8L2Rpdj4KKyAgPGRpdj4KKyAgICA8ZGl2Pm5vcm1hbDwvZGl2PgorICAg
IDxkaXYgc3R5bGU9ImNvbG9yOiByZWQiPnJlZDwvZGl2PgorICA8L2Rpdj4KKyAgPGRpdj4KKyAg
ICA8ZGl2Pm5vcm1hbDwvZGl2PgorICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBibHVlIj5ibHVlPC9k
aXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
d2l0aC1hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2EyMzVhNDNkYjNmN2IzYjc5YjlhZTRjYzk3YTgz
N2U4YzZhOGU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55Lmh0bWwKQEAgLTAsMCArMSw0OSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2Fu
ZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlMSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZTEuaW5uZXJIVE1MID0gJyo6Oi13ZWJraXQt
ZGlzdHJpYnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzaGFkb3dTdHlsZTIg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUyLmlubmVySFRN
TCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKCopIHsgY29sb3I6IHJlZDsgfSc7CisK
K3ZhciBzaGFkb3dTdHlsZTMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hh
ZG93U3R5bGUzLmlubmVySFRNTCA9ICcqOjotd2Via2l0LWRpc3RyaWJ1dGVkKCopIHsgY29sb3I6
IGJsdWU7IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5k
Ym94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisg
ICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dT
dHlsZTEsCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSksCisg
ICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSksCisgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgnZ3JlZW4nKSkpKTsKKworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVh
dGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAg
ICAgICAgICAgICAgc2hhZG93U3R5bGUyLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdk
aXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgnbm9ybWFsJykpLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jykp
LAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3JlZCcpKSkpOworc2FuZGJveC5hcHBlbmRD
aGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFk
b3dSb290KAorICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUzLAorICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpLAorICAgICAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdjb250ZW50JykpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2JsdWUnKSkpKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kMjQzY2ExYzhjOTRmMzI2OGI2NGY3MGVkZDIxMjZiMDdiMGRmMDFhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1l
bGVtZW50Lmh0bWwKQEAgLTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNo
YWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxl
LmlubmVySFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdikgeyBjb2xvcjog
Z3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5k
Ym94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisg
ICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dT
dHlsZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188023</attachid>
            <date>2013-02-12 23:47:39 -0800</date>
            <delta_ts>2013-02-13 23:24:01 -0800</delta_ts>
            <desc>Rabased again.</desc>
            <filename>bug-82169-20130213164407.patch</filename>
            <type>text/plain</type>
            <size>63716</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTAyNjM3NjJiMmMyNTdl
YmE4NTc2YzQ2ZWM3NjZlMTllZDJhOWE3OC4uOWRkNjk0NmZlNzBiNDllZTNjZjkwZGI1N2Y1MjA2
MmEwNDhjZjI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NSBAQAorMjAxMy0wMi0xMSAgSGF5
YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NoYWRvdyBET01dIElt
cGxlbWVudHMgYSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxlbWVudC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMTY5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBhICc6OmRpc3Ry
aWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50LgorICAgICAgICBTZWUgdGhlIFNoYWRvdyBET00gc3Bl
Y2lmaWNhdGlvbiBmb3IgdGhlIGRldGFpbC4KKworICAgICAgICAjIEZJWE1FOiBVcGRhdGUgYSBV
UkwgYWZ0ZXIgdGhlIHNwZWMgaXMgdXBkYXRlZC4KKyAgICAgICAgaHR0cDovL2R2Y3MudzMub3Jn
L2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwjc2Vs
ZWN0aW5nLW5vZGVzLWRpc3RyaWJ1dGVkLXRvLWluc2VydGlvbi1wb2ludHMKKworICAgICAgICBG
b3IgZXhhbXBsZSwgc3VwcG9zZSB3ZSBhcmUgZ2l2ZW4gdGhlIGZvbGxvd2luZyBET00gdHJlZSBh
bmQgc2hhZG93IHRyZWU6CisKKyAgICAgICAgLSA8QT4KKyAgICAgICAgICAtIDxCPgorICAgICAg
ICAgICAgLSA8Qz4KKworICAgICAgICBbQSdzIFNoYWRvd1Jvb3RdCisgICAgICAgICAgPEQ+Cisg
ICAgICAgICAgLSA8c3R5bGU+CisgICAgICAgICAgICAgIEUgY29udGVudDo6ZGlzdHJpYnV0ZWQo
QiBDKSB7IGNvbG9yOiBncmVlbjsgfQorICAgICAgICAgIC0gPEU+CisgICAgICAgICAgICAtIDxj
b250ZW50PiAgKE5vZGUgQiBpcyBkaXN0cmlidXRlZCB0byB0aGlzIGluc2VydGlvbiBwb2ludC4p
CisKKyAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgc3R5bGUgcnVsZSBkZWZpbmVkIGluIHRoZSBz
aGFkb3cgdHJlZSBtYXRjaGVzIG5vZGUgJ0MnLgorCisgICAgICAgIEEgJzo6ZGlzdHJpYnV0ZWQo
KScgcHNldWRvIGVsZW1lbnQgY2FuIG5vdCBiZSBhIHBzZXVkbyBjbGFzcyBzaW5jZQorICAgICAg
ICBhbiBpbnRlcnNlY3Rpb24gYmV0d2VlbiBtYXRjaGVkX2VsZW1lbnRzKHNvbWVfc2VsZWN0b3Ip
IGFuZAorICAgICAgICBtYXRjaGVkX2VsZW1lbnRzKHNvbWVfc2VsZWN0b3I6OmRpc3RyaWJ1dGVk
KC4uLikpIGlzIGFsd2F5cyBhbgorICAgICAgICBlbXB0eSBzZXQuIEEgJzo6ZGlzdHJpYnV0ZWQo
KScgcHNldWRvIGVsZW1lbnQgaXMgdGhlIGZpcnN0LWV2ZXIKKyAgICAgICAgKmZ1bmN0aW9uYWwq
IHBzZXVkbyBlbGVtZW50IHdoaWNoIHRha2VzIGEgcGFyYW1ldGVyLCB3aGljaCBjYW4gYmUKKyAg
ICAgICAgYSBzZWxlY3Rvci4KKworICAgICAgICBUaGlzIHJ1bGUgY3Jvc3NlcyB0aGUgc2hhZG93
IGJvdW5kYXJ5IGZyb20gYSBzaGFkb3cgdHJlZSB0byB0aGUKKyAgICAgICAgdHJlZSBvZiBpdHMg
c2hhZG93IGhvc3QuIFRoYXQgbWVhbnMgYSBydWxlIHdoaWNoIGluY2x1ZGVzCisgICAgICAgICc6
OmRpc3RyaWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50IGlzIGRlZmluZWQgaW4gc2hhZG93IHRyZWUs
IGJ1dAorICAgICAgICB0aGUgbm9kZSB3aGljaCBpcyBtYXRjaGVkIGluIHRoZSBydWxlLCB0aGUg
c3ViamVjdCBvZiB0aGUKKyAgICAgICAgc2VsZWN0b3IsIGlzIG91dHNpZGUgb2YgdGhlIHNoYWRv
dyB0cmVlLiBUaGVyZWZvcmUsIHdlIGNhbm5vdAorICAgICAgICBwcmVkaWN0IHdoZXJlIHRoZSBz
dWJqZWN0IG9mIHRoZSBzZWxlY3RvciB3aWxsIGJlIGJlZm9yZWhhbmQuCisgICAgICAgIEN1cnJl
bnQgQ1NTIGltcGxlbWVudGF0aW9uIGFzc3VtZXMgdGhlIHN1YmplY3Qgb2YgdGhlIHNlbGVjdG9y
CisgICAgICAgIG11c3QgZXhpc3QgaW4gdGhlIGN1cnJlbnQgc2NvcGUuCisKKyAgICAgICAgVG8g
b3ZlcmNvbWUgdGhpcyBpc3N1ZSwgRG9jdW1lbnRSdWxlU2V0cyBub3cgaGFzIGEgaW5zdGFuY2Ug
b2YKKyAgICAgICAgU2hhZG93RGlzdHJpYnV0ZWRSdWxlcyBjbGFzcy4gIEEgc3R5bGUgcnVsZSB3
aWxsIGJlIHN0b3JlZCBpbiB0aGlzCisgICAgICAgIGluc3RhbmNlIGlmIHRoZSBydWxlIGluY2x1
ZGVzIGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvIGVsZW1lbnQuCisgICAgICAgIFRoaXMgY2xh
c3MgYWxzbyBrZWVwcyB0cmFjayBvZiBlYWNoIFJ1bGVTZXQgYnkgbWFwcGluZyBpdCB3aXRoIGEK
KyAgICAgICAgc2NvcGUgd2hlcmUgdGhlIHJ1bGUgd2FzIG9yaWdpbmFsbHkgZGVmaW5lZC4gSW4g
dGhlIGV4YW1wbGUsIHRoZQorICAgICAgICBzY29wZSBpcyAnRCcuICBUaGUgc2NvcGUgaXMgdXNl
ZCB0byBjaGVjayB3aGV0aGVyIHRoZSBsZWZ0LW1vc3QKKyAgICAgICAgbWF0Y2hlZCBlbGVtZW50
IChpbiB0aGUgZXhhbXBsZSwgaXQncyBhIG5vZGUgJ0UnKSBleGlzdHMgaW4gdGhlCisgICAgICAg
IHNjb3BlLgorCisgICAgICAgIEludGVybmFsbHksIGEgJzo6ZGlzdHJpYnV0ZWQnIHBzZXVkbyBl
bGVtZW50IGlzIHJlcHJlc2VudGVkIGJ5IGEKKyAgICAgICAgbmV3bHkgaW50cm9kdWNlZCAnU2hh
ZG93RGlzdHJpYnV0ZWQnIHJlbGF0aW9uLiAgVGhhdCBtYWtlcyBhbgorICAgICAgICBpbXBsZW1l
bnRhdGlvbiBvZiBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoKSBtdWNoIHNpbXBsZXIu
CisgICAgICAgIEEgdHJhbnNmb3JtYXRpb24gZnJvbSBhIGRpc3RyaWJ1dGVkIHBzZXVkbyBlbGVt
ZW50IHRvIGEKKyAgICAgICAgU2hhZG93RGlzdHJpYnV0ZWQgaXMgZG9uZSBpbiBwYXJzaW5nIHN0
YWdlIG9mIENTUy4KKworICAgICAgICBTaW5jZSAnOjpkaXN0cmlidXRlZCgpJyBpcyBhbiBleHBl
cmltZW50YWwgZmVhdHVyZSwgaXQncyBhY3R1YWxseQorICAgICAgICBwcmVmaXhlZCB3aXRoICct
d2Via2l0LScgYW5kIGd1YXJkZWQgYnkgU0hBRE9XX0RPTSBmbGFnLgorCisgICAgICAgIFRlc3Rz
OiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1l
bGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWRlc2NlbmRhbnQuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5l
c3RlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtbm8tbWF0Y2guaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC1zdXBwb3J0LXNlbGVjdG9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNlbGVjdG9yLWxpc3QuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LXdpdGgtYW55Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRl
ZC1wc2V1ZG8tZWxlbWVudC5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOgor
ICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpkZXRlY3REYXNoVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpyZXdyaXRl
U3BlY2lmaWVyc1dpdGhOYW1lc3BhY2VJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6OnJld3JpdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6cmV3cml0ZVNwZWNpZmllcnMpOgorICAgICAgICAqIGNzcy9DU1NQYXJz
ZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlclNlbGVjdG9yOjpDU1NQYXJzZXJTZWxlY3Rvcik6CisgICAgICAgICogY3Nz
L0NTU1BhcnNlclZhbHVlcy5oOgorICAgICAgICAoQ1NTUGFyc2VyU2VsZWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OmZ1bmN0aW9uQXJndW1lbnRTZWxlY3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6c2V0RnVuY3Rpb25Bcmd1bWVu
dFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjppc0Rpc3Ry
aWJ1dGVkUHNldWRvRWxlbWVudCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpwc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3Jl
OjpuYW1lVG9Qc2V1ZG9UeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpl
eHRyYWN0UHNldWRvVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2VsZWN0
b3JUZXh0KToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuaDoKKyAgICAgICAgKENTU1NlbGVj
dG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6
OmlzRGlzdHJpYnV0ZWRQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVj
dG9yOjppc1NoYWRvd0Rpc3RyaWJ1dGVkKToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2VsZWN0b3JIYXNTaGFkb3dEaXN0
cmlidXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rvckhhc1NoYWRvd0Rpc3RyaWJ1dGVk
OjpvcGVyYXRvcigpKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yTGlzdDo6aGFzU2hh
ZG93RGlzdHJpYnV0ZWRBdCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yTGlzdC5oOgorICAg
ICAgICAoQ1NTU2VsZWN0b3JMaXN0KToKKyAgICAgICAgKiBjc3MvRG9jdW1lbnRSdWxlU2V0cy5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Rpc3RyaWJ1
dGVkUnVsZXM6OmFkZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93RGlzdHJpYnV0ZWRS
dWxlczo6Y29sbGVjdE1hdGNoUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRS
dWxlU2V0czo6cmVzZXRBdXRob3JTdHlsZSk6CisgICAgICAgICogY3NzL0RvY3VtZW50UnVsZVNl
dHMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2hhZG93RGlzdHJpYnV0ZWRSdWxl
cyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEaXN0cmlidXRlZFJ1bGVzOjpjbGVhcik6Cisg
ICAgICAgIChEb2N1bWVudFJ1bGVTZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVs
ZVNldHM6OnNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXMpOgorICAgICAgICAqIGNzcy9SdWxlU2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZENoaWxkUnVsZXMpOgorICAgICAgICAq
IGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVj
a2VyOjptYXRjaCk6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5oOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dDo6U2VsZWN0
b3JDaGVja2luZ0NvbnRleHQpOgorICAgICAgICAoU2VsZWN0b3JDaGVja2luZ0NvbnRleHQpOgor
ICAgICAgICAqIGNzcy9TZWxlY3RvckZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3RvckZpbHRlcjo6Y29sbGVjdElkZW50aWZpZXJIYXNoZXMpOgorICAgICAgICAqIGNzcy9TdHls
ZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RN
YXRjaGluZ1J1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Om1hdGNoQXV0
aG9yUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNo
aW5nUnVsZXNGb3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnJ1bGVN
YXRjaGVzKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAoTWF0Y2hS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGNoUmVxdWVzdDo6TWF0Y2hSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1hdGNoUmVxdWVzdDo6Y2xvbmVXaXRoKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoU3R5bGVSZXNvbHZlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cv
SW5zZXJ0aW9uUG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEluc2VydGlvblBv
aW50c1doZXJlTm9kZUlzRGlzdHJpYnV0ZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAy
MDEzLTAyLTEyICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBSZW1vdmUgdGhlIEdMaWIgdW5pY29kZSBiYWNrZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0dyYW1tYXIueS5pbgppbmRleCAxMDU0NGMzYmE3MTc4YTFlNTRjYmRiYmZkNWYyZTE1MTA3NzUx
ZDAzLi5jNGI3ZjU1MDExMGI2OWU3YjMxYmQ3OWZiNjQ2NWY0ODU5MGE3ZDJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcmFtbWFyLnkuaW4KQEAgLTYxLDcgKzYxLDExIEBAIHN0YXRpYyBpbmxpbmUgaW50
IGNzc3l5ZXJyb3Iodm9pZCosIGNvbnN0IGNoYXIqKQogCiAlfQogCisjaWYgRU5BQkxFX1NIQURP
V19ET00KKyVleHBlY3QgNjcKKyNlbHNlCiAlZXhwZWN0IDY2CisjZW5kaWYKIAogJW5vbmFzc29j
IExPV0VTVF9QUkVDCiAKQEAgLTE4MSw2ICsxODUsNyBAQCBzdGF0aWMgaW5saW5lIGludCBjc3N5
eWVycm9yKHZvaWQqLCBjb25zdCBjaGFyKikKICV0b2tlbiA8c3RyaW5nPiBDVUVGVU5DVElPTgog
I2VuZGlmCiAldG9rZW4gPHN0cmluZz4gTk9URlVOQ1RJT04KKyV0b2tlbiA8c3RyaW5nPiBESVNU
UklCVVRFREZVTkNUSU9OCiAldG9rZW4gPHN0cmluZz4gQ0FMQ0ZVTkNUSU9OCiAldG9rZW4gPHN0
cmluZz4gTUlORlVOQ1RJT04KICV0b2tlbiA8c3RyaW5nPiBNQVhGVU5DVElPTgpAQCAtMTE4OSwx
MiArMTE5NCwxMiBAQCBzaW1wbGVfc2VsZWN0b3I6CiAgICAgfCBlbGVtZW50X25hbWUgc3BlY2lm
aWVyX2xpc3QgewogICAgICAgICAkJCA9ICQyOwogICAgICAgICBpZiAoJCQpCi0gICAgICAgICAg
ICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20sICQxLCAk
JCk7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+cmV3cml0ZVNwZWNpZmllcnNXaXRoRWxlbWVu
dE5hbWUobnVsbEF0b20sICQxLCAkJCk7CiAgICAgfQogICAgIHwgc3BlY2lmaWVyX2xpc3Qgewog
ICAgICAgICAkJCA9ICQxOwogICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICBwYXJzZXItPnVw
ZGF0ZVNwZWNpZmllcnNXaXRoTmFtZXNwYWNlSWZOZWVkZWQoJCQpOworICAgICAgICAgICAgJCQg
PSBwYXJzZXItPnJld3JpdGVTcGVjaWZpZXJzV2l0aE5hbWVzcGFjZUlmTmVlZGVkKCQkKTsKICAg
ICB9CiAgICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1lIHsKICAgICAgICAgJCQg
PSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3JXaXRoVGFnTmFtZShwYXJzZXItPmRldGVy
bWluZU5hbWVJbk5hbWVzcGFjZSgkMSwgJDIpKTsKQEAgLTEyMDIsMTIgKzEyMDcsMTIgQEAgc2lt
cGxlX3NlbGVjdG9yOgogICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIGVsZW1lbnRfbmFtZSBzcGVj
aWZpZXJfbGlzdCB7CiAgICAgICAgICQkID0gJDM7CiAgICAgICAgIGlmICgkJCkKLSAgICAgICAg
ICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSgkMSwgJDIsICQkKTsK
KyAgICAgICAgICAgICQkID0gcGFyc2VyLT5yZXdyaXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFt
ZSgkMSwgJDIsICQkKTsKICAgICB9CiAgICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3Igc3BlY2lmaWVy
X2xpc3QgewogICAgICAgICAkJCA9ICQyOwogICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICBw
YXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsIHN0YXJBdG9tLCAkJCk7
CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+cmV3cml0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5h
bWUoJDEsIHN0YXJBdG9tLCAkJCk7CiAgICAgfQogICA7CiAKQEAgLTEyNTIsNyArMTI1Nyw3IEBA
IHNwZWNpZmllcl9saXN0OgogICAgICAgICBpZiAoISQyKQogICAgICAgICAgICAgJCQgPSAwOwog
ICAgICAgICBlbHNlIGlmICgkMSkKLSAgICAgICAgICAgICQkID0gcGFyc2VyLT51cGRhdGVTcGVj
aWZpZXJzKCQxLCAkMik7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+cmV3cml0ZVNwZWNpZmll
cnMoJDEsICQyKTsKICAgICB9CiAgICAgfCBzcGVjaWZpZXJfbGlzdCBlcnJvciB7CiAgICAgICAg
ICQkID0gMDsKQEAgLTEzOTksNiArMTQwNCwxOSBAQCBwc2V1ZG86CiAgICAgICAgICAgICAkJCA9
IDA7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFX1NIQURPV19ET00KKyAgICB8ICc6JyAnOicg
RElTVFJJQlVURURGVU5DVElPTiBtYXliZV9zcGFjZSBzZWxlY3RvciBtYXliZV9zcGFjZSAnKScg
eworICAgICAgICBpZiAoISQ1KQorICAgICAgICAgICAgJCQgPSAwOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAg
ICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpOworICAgICAg
ICAgICAgJCQtPnNldEZ1bmN0aW9uQXJndW1lbnRTZWxlY3RvcigkNSk7CisgICAgICAgICAgICAk
My5sb3dlcigpOworICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQzKTsKKyAgICAgICAgfQorICAg
IH0KKyNlbmRpZgogICAgIC8vIHVzZSBieSA6LXdlYmtpdC1hbnkuCiAgICAgLy8gRklYTUU6IHNo
b3VsZCB3ZSBzdXBwb3J0IGdlbmVyaWMgc2VsZWN0b3JzIGhlcmUgb3IganVzdCBzaW1wbGVfc2Vs
ZWN0b3JzPwogICAgIC8vIFVzZSBzaW1wbGVfc2VsZWN0b3JfbGlzdCBmb3Igbm93IHRvIG1hdGNo
IC1tb3otYW55LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCAxMDVmMThjNGRjY2M5Yzkx
MmIyNWZmYmE0OGVmNmFhZmY3NWJiNjdkLi45MjdlOWExN2E4NTlhZGU0NjQ4NGYxN2QxZjFmZjA0
ZjliZTlmNTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTAwMzAsNiArMTAwMzAs
MTAgQEAgaW5saW5lIHZvaWQgQ1NTUGFyc2VyOjpkZXRlY3REYXNoVG9rZW4oaW50IGxlbmd0aCkK
ICNlbmRpZgogICAgIH0gZWxzZSBpZiAobGVuZ3RoID09IDEyICYmIGlzRXF1YWxUb0NTU0lkZW50
aWZpZXIobmFtZSArIDEsICJ3ZWJraXQtY2FsYyIpKQogICAgICAgICBtX3Rva2VuID0gQ0FMQ0ZV
TkNUSU9OOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGVsc2UgaWYgKGxlbmd0aCA9PSAx
OSAmJiBpc0VxdWFsVG9DU1NJZGVudGlmaWVyKG5hbWUgKyAxLCAid2Via2l0LWRpc3RyaWJ1dGVk
IikpCisgICAgICAgIG1fdG9rZW4gPSBESVNUUklCVVRFREZVTkNUSU9OOworI2VuZGlmCiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgpAQCAtMTEwNTIsMjUgKzExMDU2LDQw
IEBAIFF1YWxpZmllZE5hbWUgQ1NTUGFyc2VyOjpkZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoY29u
c3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvCiAgICAgcmV0dXJuIFF1YWxpZmllZE5hbWUocHJl
Zml4LCBsb2NhbE5hbWUsIG1fc3R5bGVTaGVldC0+ZGV0ZXJtaW5lTmFtZXNwYWNlKHByZWZpeCkp
OwogfQogCi12b2lkIENTU1BhcnNlcjo6dXBkYXRlU3BlY2lmaWVyc1dpdGhOYW1lc3BhY2VJZk5l
ZWRlZChDU1NQYXJzZXJTZWxlY3Rvciogc3BlY2lmaWVycykKK0NTU1BhcnNlclNlbGVjdG9yKiBD
U1NQYXJzZXI6OnJld3JpdGVTcGVjaWZpZXJzV2l0aE5hbWVzcGFjZUlmTmVlZGVkKENTU1BhcnNl
clNlbGVjdG9yKiBzcGVjaWZpZXJzKQogewogICAgIGlmIChtX2RlZmF1bHROYW1lc3BhY2UgIT0g
c3RhckF0b20gfHwgc3BlY2lmaWVycy0+aXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkpCi0gICAgICAg
IHVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20sIHN0YXJBdG9tLCBzcGVj
aWZpZXJzLCAvKnRhZ0lzRm9yTmFtZXNwYWNlUnVsZSovdHJ1ZSk7CisgICAgICAgIHJldHVybiBy
ZXdyaXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwgc3RhckF0b20sIHNwZWNp
ZmllcnMsIC8qdGFnSXNGb3JOYW1lc3BhY2VSdWxlKi90cnVlKTsKKyAgICByZXR1cm4gc3BlY2lm
aWVyczsKIH0KIAotdm9pZCBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5h
bWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VQcmVmaXgsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZWxlbWVudE5hbWUsIENTU1BhcnNlclNlbGVjdG9yKiBzcGVjaWZpZXJzLCBib29sIHRhZ0lz
Rm9yTmFtZXNwYWNlUnVsZSkKK0NTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXI6OnJld3JpdGVT
cGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJl
Zml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnROYW1lLCBDU1NQYXJzZXJTZWxlY3Rvciog
c3BlY2lmaWVycywgYm9vbCB0YWdJc0Zvck5hbWVzcGFjZVJ1bGUpCiB7CiAgICAgQXRvbWljU3Ry
aW5nIGRldGVybWluZWROYW1lc3BhY2UgPSBuYW1lc3BhY2VQcmVmaXggIT0gbnVsbEF0b20gJiYg
bV9zdHlsZVNoZWV0ID8gbV9zdHlsZVNoZWV0LT5kZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNwYWNl
UHJlZml4KSA6IG1fZGVmYXVsdE5hbWVzcGFjZTsKICAgICBRdWFsaWZpZWROYW1lIHRhZyhuYW1l
c3BhY2VQcmVmaXgsIGVsZW1lbnROYW1lLCBkZXRlcm1pbmVkTmFtZXNwYWNlKTsKIAorI2lmIEVO
QUJMRShTSEFET1dfRE9NKQorICAgIGlmIChzcGVjaWZpZXJzLT5pc0Rpc3RyaWJ1dGVkUHNldWRv
RWxlbWVudCgpKSB7CisgICAgICAgIENTU1BhcnNlclNlbGVjdG9yKiBhcmd1bWVudFNlbGVjdG9y
ID0gc3BlY2lmaWVycy0+ZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKCk7CisgICAgICAgIEFTU0VS
VChhcmd1bWVudFNlbGVjdG9yKTsKKyAgICAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGVuZCA9IGFy
Z3VtZW50U2VsZWN0b3I7CisgICAgICAgIHdoaWxlIChlbmQtPnRhZ0hpc3RvcnkoKSkKKyAgICAg
ICAgICAgIGVuZCA9IGVuZC0+dGFnSGlzdG9yeSgpOworICAgICAgICBPd25QdHI8Q1NTUGFyc2Vy
U2VsZWN0b3I+IGVsZW1lbnROYW1lU2VsZWN0b3IgPSBhZG9wdFB0cihuZXcgQ1NTUGFyc2VyU2Vs
ZWN0b3IodGFnKSk7CisgICAgICAgIGVuZC0+c2V0VGFnSGlzdG9yeShlbGVtZW50TmFtZVNlbGVj
dG9yLnJlbGVhc2UoKSk7CisgICAgICAgIGVuZC0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6OlNo
YWRvd0Rpc3RyaWJ1dGVkKTsKKyAgICAgICAgcmV0dXJuIGFyZ3VtZW50U2VsZWN0b3I7CisgICAg
fQorI2VuZGlmCisKICAgICBpZiAoIXNwZWNpZmllcnMtPmlzQ3VzdG9tUHNldWRvRWxlbWVudCgp
KSB7CiAgICAgICAgIGlmICh0YWcgPT0gYW55UU5hbWUoKSkKLSAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIHJldHVybiBzcGVjaWZpZXJzOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
ICAgICAgICAgaWYgKCEoc3BlY2lmaWVycy0+cHNldWRvVHlwZSgpID09IENTU1NlbGVjdG9yOjpQ
c2V1ZG9DdWUpKQogI2VuZGlmCiAgICAgICAgICAgICBzcGVjaWZpZXJzLT5wcmVwZW5kVGFnU2Vs
ZWN0b3IodGFnLCB0YWdJc0Zvck5hbWVzcGFjZVJ1bGUpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBzcGVjaWZpZXJzOwogICAgIH0KIAogICAgIENTU1BhcnNlclNlbGVjdG9yKiBs
YXN0U2hhZG93RGVzY2VuZGFudCA9IHNwZWNpZmllcnM7CkBAIC0xMTA4NCw3ICsxMTEwMyw3IEBA
IHZvaWQgQ1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlCiAgICAgaWYgKGxhc3RTaGFkb3dEZXNjZW5kYW50LT50
YWdIaXN0b3J5KCkpIHsKICAgICAgICAgaWYgKHRhZyAhPSBhbnlRTmFtZSgpKQogICAgICAgICAg
ICAgbGFzdFNoYWRvd0Rlc2NlbmRhbnQtPnRhZ0hpc3RvcnkoKS0+cHJlcGVuZFRhZ1NlbGVjdG9y
KHRhZywgdGFnSXNGb3JOYW1lc3BhY2VSdWxlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gc3BlY2lmaWVyczsKICAgICB9CiAKICAgICAvLyBGb3Igc2hhZG93LUlEIHBzZXVkby1l
bGVtZW50cyB0byBiZSBjb3JyZWN0bHkgbWF0Y2hlZCwgdGhlIFNoYWRvd0Rlc2NlbmRhbnQgY29t
YmluYXRvciBoYXMgdG8gYmUgdXNlZC4KQEAgLTExMDkyLDkgKzExMTExLDEwIEBAIHZvaWQgQ1NT
UGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZXNwYWNlUHJlCiAgICAgT3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBlbGVtZW50TmFt
ZVNlbGVjdG9yID0gYWRvcHRQdHIobmV3IENTU1BhcnNlclNlbGVjdG9yKHRhZykpOwogICAgIGxh
c3RTaGFkb3dEZXNjZW5kYW50LT5zZXRUYWdIaXN0b3J5KGVsZW1lbnROYW1lU2VsZWN0b3IucmVs
ZWFzZSgpKTsKICAgICBsYXN0U2hhZG93RGVzY2VuZGFudC0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0
b3I6OlNoYWRvd0Rlc2NlbmRhbnQpOworICAgIHJldHVybiBzcGVjaWZpZXJzOwogfQogCi1DU1NQ
YXJzZXJTZWxlY3RvciogQ1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzKENTU1BhcnNlclNlbGVj
dG9yKiBzcGVjaWZpZXJzLCBDU1NQYXJzZXJTZWxlY3RvciogbmV3U3BlY2lmaWVyKQorQ1NTUGFy
c2VyU2VsZWN0b3IqIENTU1BhcnNlcjo6cmV3cml0ZVNwZWNpZmllcnMoQ1NTUGFyc2VyU2VsZWN0
b3IqIHNwZWNpZmllcnMsIENTU1BhcnNlclNlbGVjdG9yKiBuZXdTcGVjaWZpZXIpCiB7CiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGlmIChuZXdTcGVjaWZpZXItPmlzQ3VzdG9tUHNldWRv
RWxlbWVudCgpIHx8IG5ld1NwZWNpZmllci0+cHNldWRvVHlwZSgpID09IENTU1NlbGVjdG9yOjpQ
c2V1ZG9DdWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCBkY2I1MTM0YzYzZjljNjZkYjZi
ZjZiMjIxMzdjMDBhY2NiYTBiMmQ5Li5hZjRkY2RkZDkzZTgwNTI3ZTA0OTBhMjU1YmJhNGVkNzIw
YzdlZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0zMjUsOSArMzI1LDEwIEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgYWRkTmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBj
b25zdCBBdG9taWNTdHJpbmcmIHVyaSk7CiAgICAgUXVhbGlmaWVkTmFtZSBkZXRlcm1pbmVOYW1l
SW5OYW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbG9jYWxOYW1lKTsKLSAgICB2b2lkIHVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VQcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYg
ZWxlbWVudE5hbWUsIENTU1BhcnNlclNlbGVjdG9yKiwgYm9vbCBpc05hbWVzcGFjZVBsYWNlaG9s
ZGVyID0gZmFsc2UpOwotICAgIHZvaWQgdXBkYXRlU3BlY2lmaWVyc1dpdGhOYW1lc3BhY2VJZk5l
ZWRlZChDU1NQYXJzZXJTZWxlY3RvciopOwotICAgIENTU1BhcnNlclNlbGVjdG9yKiB1cGRhdGVT
cGVjaWZpZXJzKENTU1BhcnNlclNlbGVjdG9yKiwgQ1NTUGFyc2VyU2VsZWN0b3IqKTsKKworICAg
IENTU1BhcnNlclNlbGVjdG9yKiByZXdyaXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGVt
ZW50TmFtZSwgQ1NTUGFyc2VyU2VsZWN0b3IqLCBib29sIGlzTmFtZXNwYWNlUGxhY2Vob2xkZXIg
PSBmYWxzZSk7CisgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIHJld3JpdGVTcGVjaWZpZXJzV2l0aE5h
bWVzcGFjZUlmTmVlZGVkKENTU1BhcnNlclNlbGVjdG9yKik7CisgICAgQ1NTUGFyc2VyU2VsZWN0
b3IqIHJld3JpdGVTcGVjaWZpZXJzKENTU1BhcnNlclNlbGVjdG9yKiwgQ1NTUGFyc2VyU2VsZWN0
b3IqKTsKIAogICAgIHZvaWQgaW52YWxpZEJsb2NrSGl0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlclZhbHVlcy5jcHAKaW5kZXggMmQ2MzFiMWY5ZjZhNGM4MzFjZWQ0NDk1ZTk3YmE0YjEx
ZjdkY2RkNi4uZjBlNWYzY2ZmNTc2ZGZjMGQ2M2RhNjZkZDI2YWUwNWRmYWI4MWNkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKQEAgLTE0Nyw2ICsxNDcsOSBAQCBQYXNz
UmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXJWYWx1ZTo6Y3JlYXRlQ1NTVmFsdWUoKQogCiBDU1NQ
YXJzZXJTZWxlY3Rvcjo6Q1NTUGFyc2VyU2VsZWN0b3IoKQogICAgIDogbV9zZWxlY3RvcihhZG9w
dFB0cihmYXN0TmV3PENTU1NlbGVjdG9yPigpKSkKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAg
ICAsIG1fZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKDApCisjZW5kaWYKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCmluZGV4IDFiMjA3MWQ2M2RiNDg0MDExYTc1YTE5Y2I0
MWI1MGFkOTk5MDMyMzYuLjU4YTc2ZTdlNWNlYzRmYTA0YzE4M2IwOTcxYTQzMmQ5ODIxNTc3OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKQEAgLTE4Niw2ICsxODYsMTIgQEAg
cHVibGljOgogCiAgICAgdm9pZCBhZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NT
UGFyc2VyU2VsZWN0b3I+ID4mIHNlbGVjdG9yVmVjdG9yKTsKIAorI2lmIEVOQUJMRShTSEFET1df
RE9NKQorICAgIENTU1BhcnNlclNlbGVjdG9yKiBmdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX2Z1bmN0aW9uQXJndW1lbnRTZWxlY3RvcjsgfQorICAgIHZvaWQgc2V0
RnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKENTU1BhcnNlclNlbGVjdG9yKiBzZWxlY3RvcikgeyBt
X2Z1bmN0aW9uQXJndW1lbnRTZWxlY3RvciA9IHNlbGVjdG9yOyB9CisgICAgYm9vbCBpc0Rpc3Ry
aWJ1dGVkUHNldWRvRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3ItPmlzRGlzdHJp
YnV0ZWRQc2V1ZG9FbGVtZW50KCk7IH0KKyNlbmRpZgorCiAgICAgQ1NTU2VsZWN0b3I6OlBzZXVk
b1R5cGUgcHNldWRvVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3ItPnBzZXVkb1R5cGUo
KTsgfQogICAgIGJvb2wgaXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9z
ZWxlY3Rvci0+aXNDdXN0b21Qc2V1ZG9FbGVtZW50KCk7IH0KIApAQCAtMjAxLDYgKzIwNyw5IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgT3duUHRyPENTU1NlbGVjdG9yPiBtX3NlbGVjdG9yOwog
ICAgIE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gbV90YWdIaXN0b3J5OworI2lmIEVOQUJMRShT
SEFET1dfRE9NKQorICAgIENTU1BhcnNlclNlbGVjdG9yKiBtX2Z1bmN0aW9uQXJndW1lbnRTZWxl
Y3RvcjsKKyNlbmRpZgogfTsKIAogaW5saW5lIGJvb2wgQ1NTUGFyc2VyU2VsZWN0b3I6Omhhc1No
YWRvd0Rlc2NlbmRhbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXgg
MmUzNDkzZjhmYTg3Mzc4YjJjOGMzNmUyNDhmZjBmMjI1OWJhMjU1Ni4uYmNkYzA5ZTAyYmI0ZmI3
NmI4ZTMzOWFjMTE0MjdiMzA1ZTBhNjU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3Bw
CkBAIC0yNDMsNiArMjQzLDkgQEAgUHNldWRvSWQgQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVk
b1R5cGUgdHlwZSkKICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQogICAgIGNhc2UgUHNldWRv
U2VhbWxlc3NEb2N1bWVudDoKICNlbmRpZgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGNh
c2UgUHNldWRvRGlzdHJpYnV0ZWQ6CisjZW5kaWYKICAgICAgICAgcmV0dXJuIE5PUFNFVURPOwog
ICAgIGNhc2UgUHNldWRvTm90UGFyc2VkOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
QEAgLTMzMyw2ICszMzYsOSBAQCBzdGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NT
U2VsZWN0b3I6OlBzZXVkb1R5cGU+KiBuYW1lVG9Qc2V1ZG9UeXBlTWFwKAogI2lmIEVOQUJMRShJ
RlJBTUVfU0VBTUxFU1MpCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNl
YW1sZXNzRG9jdW1lbnQsICgiLXdlYmtpdC1zZWFtbGVzcy1kb2N1bWVudCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICNlbmRpZgorI2lmIEVOQUJMRShTSEFET1dfRE9N
KQorICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBkaXN0cmlidXRlZCwgKCIt
d2Via2l0LWRpc3RyaWJ1dGVkKCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyNlbmRpZgogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpblJhbmdl
LCAoImluLXJhbmdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBvdXRPZlJhbmdlLCAoIm91dC1vZi1y
YW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIApAQCAtNDE2LDYg
KzQyMiw5IEBAIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6
UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVkb1R5cGVNYXAoCiAjaWYgRU5BQkxFKElGUkFNRV9TRUFN
TEVTUykKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KHNlYW1sZXNzRG9jdW1lbnQuaW1w
bCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvU2VhbWxlc3NEb2N1bWVudCk7CiAjZW5kaWYKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGRpc3RyaWJ1
dGVkLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Rpc3RyaWJ1dGVkKTsKKyNlbmRpZgogICAg
ICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoaW5SYW5nZS5pbXBsKCksIENTU1NlbGVjdG9yOjpQ
c2V1ZG9JblJhbmdlKTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KG91dE9mUmFuZ2Uu
aW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvT3V0T2ZSYW5nZSk7CiAgICAgfQpAQCAtNDY2LDYg
KzQ3NSw5IEBAIHZvaWQgQ1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY29uc3QKICAg
ICBjYXNlIFBzZXVkb0ZpcnN0TGV0dGVyOgogICAgIGNhc2UgUHNldWRvRmlyc3RMaW5lOgogICAg
ICAgICBjb21wYXQgPSB0cnVlOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGNhc2UgUHNl
dWRvRGlzdHJpYnV0ZWQ6CisjZW5kaWYKICAgICBjYXNlIFBzZXVkb1Jlc2l6ZXI6CiAgICAgY2Fz
ZSBQc2V1ZG9TY3JvbGxiYXI6CiAgICAgY2FzZSBQc2V1ZG9TY3JvbGxiYXJDb3JuZXI6CkBAIC03
MDcsNiArNzE5LDEwIEBAIFN0cmluZyBDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KCkgY29uc3QK
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpTaGFkb3dEZXNjZW5kYW50OgogICAgICAgICAgICAgcmV0dXJuIHRhZ0hpc3RvcnlUZXh0
ICsgc3RyLnRvU3RyaW5nKCk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OlNoYWRvd0Rpc3RyaWJ1dGVkOgorICAgICAgICAgICAgcmV0dXJuIHRhZ0hp
c3RvcnlUZXh0ICsgIjo6LXdlYmtpdC1kaXN0cmlidXRlZCgiICsgc3RyLnRvU3RyaW5nKCkgKyAi
KSI7CisjZW5kaWYKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApp
bmRleCA1YmM2MzI3MzE0MzY3MzE2MDFjMTc3ZmZkNGQ4MDFmYzJlZjkwMjFlLi43NTA3OGMxNjcw
NGE0ZjM5YTBkOGNkOGVhZDU1Mzk1OTgwY2JlOGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3Iu
aApAQCAtNzcsNyArNzcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgRGly
ZWN0QWRqYWNlbnQsCiAgICAgICAgICAgICBJbmRpcmVjdEFkamFjZW50LAogICAgICAgICAgICAg
U3ViU2VsZWN0b3IsCi0gICAgICAgICAgICBTaGFkb3dEZXNjZW5kYW50CisgICAgICAgICAgICBT
aGFkb3dEZXNjZW5kYW50LAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICAgICAgU2hh
ZG93RGlzdHJpYnV0ZWQKKyNlbmRpZgogICAgICAgICB9OwogCiAgICAgICAgIGVudW0gUHNldWRv
VHlwZSB7CkBAIC0xNjMsNyArMTY2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
ICAgIFBzZXVkb1Bhc3RDdWUsCiAjZW5kaWYKICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQot
ICAgICAgICAgICAgUHNldWRvU2VhbWxlc3NEb2N1bWVudAorICAgICAgICAgICAgUHNldWRvU2Vh
bWxlc3NEb2N1bWVudCwKKyNlbmRpZgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICAg
ICAgUHNldWRvRGlzdHJpYnV0ZWQKICNlbmRpZgogICAgICAgICB9OwogCkBAIC0yMjAsNiArMjI2
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0N1c3RvbVBzZXVkb0Vs
ZW1lbnQoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc1NpYmxpbmdTZWxlY3RvcigpIGNvbnN0Owog
ICAgICAgICBib29sIGlzQXR0cmlidXRlU2VsZWN0b3IoKSBjb25zdDsKKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKKyAgICAgICAgYm9vbCBpc0Rpc3RyaWJ1dGVkUHNldWRvRWxlbWVudCgpIGNvbnN0
OworICAgICAgICBib29sIGlzU2hhZG93RGlzdHJpYnV0ZWQoKSBjb25zdDsKKyNlbmRpZgogCiAg
ICAgICAgIFJlbGF0aW9uIHJlbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVs
YXRpb24+KG1fcmVsYXRpb24pOyB9CiAKQEAgLTMzMiw2ICszNDIsMTggQEAgaW5saW5lIGJvb2wg
Q1NTU2VsZWN0b3I6OmlzQXR0cmlidXRlU2VsZWN0b3IoKSBjb25zdAogICAgICAgICB8fCBtX21h
dGNoID09IENTU1NlbGVjdG9yOjpFbmQ7CiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKK2lu
bGluZSBib29sIENTU1NlbGVjdG9yOjppc0Rpc3RyaWJ1dGVkUHNldWRvRWxlbWVudCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fbWF0Y2ggPT0gUHNldWRvRWxlbWVudCAmJiBwc2V1ZG9UeXBlKCkg
PT0gUHNldWRvRGlzdHJpYnV0ZWQ7Cit9CisKK2lubGluZSBib29sIENTU1NlbGVjdG9yOjppc1No
YWRvd0Rpc3RyaWJ1dGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWxhdGlvbiA9PSBDU1NT
ZWxlY3Rvcjo6U2hhZG93RGlzdHJpYnV0ZWQ7Cit9CisjZW5kaWYKKwogaW5saW5lIHZvaWQgQ1NT
U2VsZWN0b3I6OnNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgQVNT
RVJUKG1fbWF0Y2ggIT0gVGFnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAK
aW5kZXggZGZhYjAzNjIxMjllMzI1YmE1NGM4MTMzNjZhZWEyZjJmYmU3ZjkzMy4uN2U4ZTE5MGRj
YzcwZGZhZDg0ZDFlNmZlNjBhMjg0MTkwOTcyNzE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Nl
bGVjdG9yTGlzdC5jcHAKQEAgLTIxMSw2ICsyMTEsMjAgQEAgYm9vbCBDU1NTZWxlY3Rvckxpc3Q6
Omhhc0ludmFsaWRTZWxlY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIGZvckVhY2hTZWxlY3Rvcihm
dW5jdG9yLCB0aGlzKTsKIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorY2xhc3MgU2VsZWN0
b3JIYXNTaGFkb3dEaXN0cmlidXRlZCB7CitwdWJsaWM6CisgICAgYm9vbCBvcGVyYXRvcigpKGNv
bnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKKyAgICB7CisgICAgICAgIHJldHVybiBzZWxlY3Rv
ci0+aXNTaGFkb3dEaXN0cmlidXRlZCgpOworICAgIH0KK307CiAKK2Jvb2wgQ1NTU2VsZWN0b3JM
aXN0OjpoYXNTaGFkb3dEaXN0cmlidXRlZEF0KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICBT
ZWxlY3Rvckhhc1NoYWRvd0Rpc3RyaWJ1dGVkIGZ1bmN0b3I7CisgICAgcmV0dXJuIGZvckVhY2hU
YWdTZWxlY3RvcihmdW5jdG9yLCBzZWxlY3RvckF0KGluZGV4KSk7Cit9CisjZW5kaWYKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Nl
bGVjdG9yTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCmluZGV4
IGU0ZjkwZGI4ODlhNzI2MmIyMGIxOWFlOGEwZTUxOWQzOTQ0MTllZWMuLjUxMDRlZGI1MWMxMzUy
ODdlN2FlM2EzNWM1MDQwYTM4YmE3MTdiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTZWxlY3Rvckxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JM
aXN0LmgKQEAgLTYxLDYgKzYxLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHNlbGVjdG9yc05lZWRO
YW1lc3BhY2VSZXNvbHV0aW9uKCk7CiAgICAgYm9vbCBoYXNJbnZhbGlkU2VsZWN0b3IoKSBjb25z
dDsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGJvb2wgaGFzU2hhZG93RGlzdHJpYnV0
ZWRBdChzaXplX3QgaW5kZXgpIGNvbnN0OworI2VuZGlmCisKICAgICBTdHJpbmcgc2VsZWN0b3Jz
VGV4dCgpIGNvbnN0OwogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxl
U2V0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAKaW5kZXgg
NDA1OTdjYjU3ZDcwMzE0ODg4OTVhOTliMmE1NDQ5NjQ1MGZiMTZiZi4uMjMwMDllZGZiYWExMjI4
OWMwYTE3NDA0ZmIxNzlmZjBlZjU5NzI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0RvY3VtZW50UnVsZVNldHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1
bGVTZXRzLmNwcApAQCAtMzgsNiArMzgsMjUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisj
aWYgRU5BQkxFKFNIQURPV19ET00pCit2b2lkIFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXM6OmFkZFJ1
bGUoU3R5bGVSdWxlKiBydWxlLCBzaXplX3Qgc2VsZWN0b3JJbmRleCwgQ29udGFpbmVyTm9kZSog
c2NvcGUsIEFkZFJ1bGVGbGFncyBhZGRSdWxlRmxhZ3MpCit7CisgICAgaWYgKG1fc2hhZG93RGlz
dHJpYnV0ZWRSdWxlU2V0TWFwLmNvbnRhaW5zKHNjb3BlKSkKKyAgICAgICAgbV9zaGFkb3dEaXN0
cmlidXRlZFJ1bGVTZXRNYXAuZ2V0KHNjb3BlKS0+YWRkUnVsZShydWxlLCBzZWxlY3RvckluZGV4
LCBhZGRSdWxlRmxhZ3MpOworICAgIGVsc2UgeworICAgICAgICBPd25QdHI8UnVsZVNldD4gcnVs
ZVNldEZvclNjb3BlID0gYWRvcHRQdHIobmV3IFJ1bGVTZXQoKSk7CisgICAgICAgIHJ1bGVTZXRG
b3JTY29wZS0+YWRkUnVsZShydWxlLCBzZWxlY3RvckluZGV4LCBhZGRSdWxlRmxhZ3MpOworICAg
ICAgICBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5hZGQoc2NvcGUsIHJ1bGVTZXRGb3JT
Y29wZS5yZWxlYXNlKCkpOworICAgIH0KK30KKwordm9pZCBTaGFkb3dEaXN0cmlidXRlZFJ1bGVz
Ojpjb2xsZWN0TWF0Y2hSZXF1ZXN0cyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBWZWN0b3I8TWF0
Y2hSZXF1ZXN0PiYgbWF0Y2hSZXF1ZXN0cykKK3sKKyAgICBmb3IgKFNoYWRvd0Rpc3RyaWJ1dGVk
UnVsZVNldE1hcDo6aXRlcmF0b3IgaXQgPSBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5i
ZWdpbigpOyBpdCAhPSBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5lbmQoKTsgKytpdCkK
KyAgICAgICAgbWF0Y2hSZXF1ZXN0cy5hcHBlbmQoTWF0Y2hSZXF1ZXN0KGl0LT52YWx1ZS5nZXQo
KSwgaW5jbHVkZUVtcHR5UnVsZXMsIGl0LT5rZXksIFNlbGVjdG9yQ2hlY2tlcjo6Q3Jvc3Nlc0Jv
dW5kYXJ5KSk7Cit9CisjZW5kaWYKKwogRG9jdW1lbnRSdWxlU2V0czo6RG9jdW1lbnRSdWxlU2V0
cygpCiB7CiB9CkBAIC04MSw2ICsxMDAsOSBAQCB2b2lkIERvY3VtZW50UnVsZVNldHM6OnJlc2V0
QXV0aG9yU3R5bGUoKQogewogICAgIG1fYXV0aG9yU3R5bGUgPSBSdWxlU2V0OjpjcmVhdGUoKTsK
ICAgICBtX2F1dGhvclN0eWxlLT5kaXNhYmxlQXV0b1Nocmlua1RvRml0KCk7CisjaWYgRU5BQkxF
KFNIQURPV19ET00pCisgICAgbV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVzLmNsZWFyKCk7CisjZW5k
aWYKIH0KIAogdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjphcHBlbmRBdXRob3JTdHlsZVNoZWV0cyh1
bnNpZ25lZCBmaXJzdE5ldywgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBz
dHlsZVNoZWV0cywgTWVkaWFRdWVyeUV2YWx1YXRvciogbWVkaXVtLCBJbnNwZWN0b3JDU1NPTVdy
YXBwZXJzJiBpbnNwZWN0b3JDU1NPTVdyYXBwZXJzLCBib29sIGlzVmlld1NvdXJjZSwgU3R5bGVS
ZXNvbHZlciogcmVzb2x2ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1l
bnRSdWxlU2V0cy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuaAppbmRl
eCA0NmE1MGZjNDUzOThjOWQzZGM1NTcyYmY4Y2Q5YmVkOGNmYzk4MzZiLi5hNWY0ZWRjMjMyMTRj
YmQwYmVjYjA5NTYwMGYyZWM4MDRlZWQ4MjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvRG9jdW1lbnRSdWxlU2V0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1
bGVTZXRzLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNkZWZpbmUgRG9jdW1lbnRSdWxlU2V0c19oCiAK
ICNpbmNsdWRlICJSdWxlRmVhdHVyZS5oIgorI2luY2x1ZGUgIlJ1bGVTZXQuaCIKIAogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0zNSwxMSArMzYs
MjQgQEAgY2xhc3MgQ1NTU3R5bGVSdWxlOwogY2xhc3MgQ1NTU3R5bGVTaGVldDsKIGNsYXNzIERv
Y3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb247CiBjbGFzcyBJbnNwZWN0b3JDU1NPTVdyYXBwZXJz
OworY2xhc3MgTWF0Y2hSZXF1ZXN0OwogY2xhc3MgTWVkaWFRdWVyeUV2YWx1YXRvcjsKIGNsYXNz
IFJ1bGVTZXQ7CiBjbGFzcyBTdHlsZVJlc29sdmVyOwogY2xhc3MgU3R5bGVTY29wZVJlc29sdmVy
OwogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCitjbGFzcyBTaGFkb3dEaXN0cmlidXRlZFJ1bGVz
IHsKK3B1YmxpYzoKKyAgICB2b2lkIGFkZFJ1bGUoU3R5bGVSdWxlKiwgc2l6ZV90IHNlbGVjdG9y
SW5kZXgsIENvbnRhaW5lck5vZGUqIHNjb3BlLCBBZGRSdWxlRmxhZ3MpOworICAgIHZvaWQgY29s
bGVjdE1hdGNoUmVxdWVzdHMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcywgVmVjdG9yPE1hdGNoUmVx
dWVzdD4mKTsKKyAgICB2b2lkIGNsZWFyKCkgeyBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1h
cC5jbGVhcigpOyB9Citwcml2YXRlOgorICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBDb250YWlu
ZXJOb2RlKiwgT3duUHRyPFJ1bGVTZXQ+ID4gU2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwOwor
ICAgIFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcCBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNl
dE1hcDsKK307CisjZW5kaWYKKwogY2xhc3MgRG9jdW1lbnRSdWxlU2V0cyB7CiBwdWJsaWM6CiAg
ICAgRG9jdW1lbnRSdWxlU2V0cygpOwpAQCAtNTcsNiArNzEsOSBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNvbGxlY3RGZWF0dXJlcyhib29sIGlzVmlld1NvdXJjZSwgU3R5bGVTY29wZVJlc29sdmVy
Kik7CiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7
CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgU2hhZG93RGlzdHJpYnV0ZWRSdWxlcyYgc2hh
ZG93RGlzdHJpYnV0ZWRSdWxlcygpIHsgcmV0dXJuIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlczsg
fQorI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0UnVsZXNGcm9tVXNlclN0eWxl
U2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYsIFJ1bGVTZXQmIHVz
ZXJTdHlsZSwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYsIFN0eWxlUmVzb2x2ZXImKTsKQEAg
LTY1LDYgKzgyLDkgQEAgcHJpdmF0ZToKICAgICBSdWxlRmVhdHVyZVNldCBtX2ZlYXR1cmVzOwog
ICAgIE93blB0cjxSdWxlU2V0PiBtX3NpYmxpbmdSdWxlU2V0OwogICAgIE93blB0cjxSdWxlU2V0
PiBtX3VuY29tbW9uQXR0cmlidXRlUnVsZVNldDsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAg
ICBTaGFkb3dEaXN0cmlidXRlZFJ1bGVzIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlczsKKyNlbmRp
ZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1J1bGVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCmluZGV4
IDYyNjc5MDM4OTM0M2FjZmZkYmVhOWNhNzdkMWRlOTlkZGM4NGIzMDUuLmY4NmIwMThiM2NiMzE1
ODA4Yjc0OGIzZGRhYmYwZTJhNDc2NTgyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKQEAgLTMw
Nyw5ICszMDcsMjUgQEAgdm9pZCBSdWxlU2V0OjphZGRDaGlsZFJ1bGVzKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U3R5bGVSdWxlQmFzZT4gPiYgcnVsZXMsIGNvbnN0IE0KICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgcnVsZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgU3R5bGVSdWxlQmFzZSog
cnVsZSA9IHJ1bGVzW2ldLmdldCgpOwogCi0gICAgICAgIGlmIChydWxlLT5pc1N0eWxlUnVsZSgp
KQotICAgICAgICAgICAgYWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0PFN0eWxlUnVsZSo+KHJ1bGUp
LCBhZGRSdWxlRmxhZ3MpOwotICAgICAgICBlbHNlIGlmIChydWxlLT5pc1BhZ2VSdWxlKCkpCisg
ICAgICAgIGlmIChydWxlLT5pc1N0eWxlUnVsZSgpKSB7CisgICAgICAgICAgICBTdHlsZVJ1bGUq
IHN0eWxlUnVsZSA9IHN0YXRpY19jYXN0PFN0eWxlUnVsZSo+KHJ1bGUpOworI2lmIEVOQUJMRShT
SEFET1dfRE9NKQorICAgICAgICAgICAgaWYgKCFzY29wZSkKKyAgICAgICAgICAgICAgICBhZGRT
dHlsZVJ1bGUoc3R5bGVSdWxlLCBhZGRSdWxlRmxhZ3MpOworICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QgPSBzdHls
ZVJ1bGUtPnNlbGVjdG9yTGlzdCgpOworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IHNlbGVj
dG9ySW5kZXggPSAwOyBzZWxlY3RvckluZGV4ICE9IG5vdEZvdW5kOyBzZWxlY3RvckluZGV4ID0g
c2VsZWN0b3JMaXN0LmluZGV4T2ZOZXh0U2VsZWN0b3JBZnRlcihzZWxlY3RvckluZGV4KSkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3JMaXN0Lmhhc1NoYWRvd0Rpc3RyaWJ1dGVk
QXQoc2VsZWN0b3JJbmRleCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlci0+cnVs
ZVNldHMoKS5zaGFkb3dEaXN0cmlidXRlZFJ1bGVzKCkuYWRkUnVsZShzdHlsZVJ1bGUsIHNlbGVj
dG9ySW5kZXgsIGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSo+KHNjb3BlKSwgYWRkUnVsZUZsYWdz
KTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgYWRk
UnVsZShzdHlsZVJ1bGUsIHNlbGVjdG9ySW5kZXgsIGFkZFJ1bGVGbGFncyk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgICAgIGFkZFN0eWxlUnVsZShz
dHlsZVJ1bGUsIGFkZFJ1bGVGbGFncyk7CisjZW5kaWYKKworICAgICAgICB9IGVsc2UgaWYgKHJ1
bGUtPmlzUGFnZVJ1bGUoKSkKICAgICAgICAgICAgIGFkZFBhZ2VSdWxlKHN0YXRpY19jYXN0PFN0
eWxlUnVsZVBhZ2UqPihydWxlKSk7CiAgICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlzTWVkaWFSdWxl
KCkpIHsKICAgICAgICAgICAgIFN0eWxlUnVsZU1lZGlhKiBtZWRpYVJ1bGUgPSBzdGF0aWNfY2Fz
dDxTdHlsZVJ1bGVNZWRpYSo+KHJ1bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2Vy
LmNwcAppbmRleCBkMjI2M2VmZTM0NjUwODZiM2IzNzBlNjVmZmY0ZWQ3Yjk0ZTlkYjkyLi5iOTdi
ZGUwY2VlMWI3OWM4OWQ0NjBjNDg5MTRlMmRjZTZjYWI5MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkhUTUxPcHRp
b25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFByb2dyZXNzRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxTdHlsZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgogI2luY2x1
ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHls
ZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTI4MSw4ICsyODIsMTMgQEAgU2VsZWN0b3JDaGVj
a2VyOjpNYXRjaCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdD
b250ZXh0JiBjb24KIAogICAgIC8vIFByZXBhcmUgbmV4dCBzZWxlY3RvcgogICAgIGNvbnN0IENT
U1NlbGVjdG9yKiBoaXN0b3J5U2VsZWN0b3IgPSBjb250ZXh0LnNlbGVjdG9yLT50YWdIaXN0b3J5
KCk7Ci0gICAgaWYgKCFoaXN0b3J5U2VsZWN0b3IpCisgICAgaWYgKCFoaXN0b3J5U2VsZWN0b3Ip
IHsKKyAgICAgICAgaWYgKGNvbnRleHQuYmVoYXZpb3JBdEJvdW5kYXJ5ID09IENyb3NzZXNCb3Vu
ZGFyeSkgeworICAgICAgICAgICAgQVNTRVJUKGNvbnRleHQuc2NvcGUpOworICAgICAgICAgICAg
cmV0dXJuIGNvbnRleHQuc2NvcGUtPmNvbnRhaW5zKGNvbnRleHQuZWxlbWVudCkgPyBTZWxlY3Rv
ck1hdGNoZXMgOiBTZWxlY3RvckZhaWxzTG9jYWxseTsKKyAgICAgICAgfQogICAgICAgICByZXR1
cm4gU2VsZWN0b3JNYXRjaGVzOworICAgIH0KIAogICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0
IG5leHRDb250ZXh0KGNvbnRleHQpOwogICAgIG5leHRDb250ZXh0LnNlbGVjdG9yID0gaGlzdG9y
eVNlbGVjdG9yOwpAQCAtMzc5LDYgKzM4NSwyNCBAQCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoIFNl
bGVjdG9yQ2hlY2tlcjo6bWF0Y2goY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbgog
ICAgICAgICAgICAgbmV4dENvbnRleHQuZWxlbWVudFN0eWxlID0gMDsKICAgICAgICAgICAgIHJl
dHVybiBtYXRjaChuZXh0Q29udGV4dCwgaWdub3JlRHluYW1pY1BzZXVkbywgc2libGluZ1RyYXZl
cnNhbFN0cmF0ZWd5KTsKICAgICAgICAgfQorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rpc3RyaWJ1dGVkOgorICAgICAgICB7CisgICAgICAgICAg
ICBWZWN0b3I8SW5zZXJ0aW9uUG9pbnQqLCA4PiBpbnNlcnRpb25Qb2ludHM7CisgICAgICAgICAg
ICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQgPSBjb250ZXh0LmVsZW1lbnQ7IGVsZW1lbnQ7IGVsZW1l
bnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKKyAgICAgICAgICAgICAgICBpbnNlcnRp
b25Qb2ludHMuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjb2xsZWN0SW5zZXJ0aW9uUG9pbnRz
V2hlcmVOb2RlSXNEaXN0cmlidXRlZChlbGVtZW50LCBpbnNlcnRpb25Qb2ludHMpOworICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zZXJ0aW9uUG9pbnRzLnNpemUoKTsg
KytpKSB7CisgICAgICAgICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnQgPSBpbnNlcnRp
b25Qb2ludHNbaV07CisgICAgICAgICAgICAgICAgICAgIG5leHRDb250ZXh0LmlzU3ViU2VsZWN0
b3IgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgbmV4dENvbnRleHQuZWxlbWVudFN0eWxl
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoKG5leHRDb250ZXh0LCBpZ25vcmVE
eW5hbWljUHNldWRvLCBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kpID09IFNlbGVjdG9yTWF0Y2hl
cykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3Rvck1hdGNoZXM7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9y
RmFpbHNDb21wbGV0ZWx5OworICAgICAgICB9CisjZW5kaWYKICAgICB9CiAKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNo
ZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAppbmRleCBiNjE5
Y2Q1MGQ4OWM0YzBiMGJkMTA1NGQ4NmM1NGU0MzkwNTU2MTMyLi43MmVlNDc1OGIxM2I5ODBlMTA2
ZjlmY2YyNDc1MjRkZWQyNjhiZThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2Vs
ZWN0b3JDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5o
CkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICBlbnVtIFZpc2l0ZWRNYXRjaFR5cGUgeyBW
aXNpdGVkTWF0Y2hEaXNhYmxlZCwgVmlzaXRlZE1hdGNoRW5hYmxlZCB9OwogICAgIGVudW0gTW9k
ZSB7IFJlc29sdmluZ1N0eWxlID0gMCwgQ29sbGVjdGluZ1J1bGVzLCBRdWVyeWluZ1J1bGVzLCBT
aGFyaW5nUnVsZXMgfTsKICAgICBleHBsaWNpdCBTZWxlY3RvckNoZWNrZXIoRG9jdW1lbnQqLCBN
b2RlKTsKKyAgICBlbnVtIEJlaGF2aW9yQXRCb3VuZGFyeSB7IERvZXNOb3RDcm9zc0JvdW5kYXJ5
LCBDcm9zc2VzQm91bmRhcnkgfTsKIAogICAgIHN0cnVjdCBTZWxlY3RvckNoZWNraW5nQ29udGV4
dCB7CiAgICAgICAgIC8vIEluaXRpYWwgc2VsZWN0b3IgY29uc3RydWN0b3IKQEAgLTYxLDYgKzYy
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgLCBpc1N1YlNlbGVjdG9yKGZhbHNlKQogICAgICAg
ICAgICAgLCBoYXNTY3JvbGxiYXJQc2V1ZG8oZmFsc2UpCiAgICAgICAgICAgICAsIGhhc1NlbGVj
dGlvblBzZXVkbyhmYWxzZSkKKyAgICAgICAgICAgICwgYmVoYXZpb3JBdEJvdW5kYXJ5KERvZXNO
b3RDcm9zc0JvdW5kYXJ5KQogICAgICAgICB7IH0KIAogICAgICAgICBjb25zdCBDU1NTZWxlY3Rv
ciogc2VsZWN0b3I7CkBAIC03Miw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc1N1
YlNlbGVjdG9yOwogICAgICAgICBib29sIGhhc1Njcm9sbGJhclBzZXVkbzsKICAgICAgICAgYm9v
bCBoYXNTZWxlY3Rpb25Qc2V1ZG87CisgICAgICAgIEJlaGF2aW9yQXRCb3VuZGFyeSBiZWhhdmlv
ckF0Qm91bmRhcnk7CiAgICAgfTsKIAogICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBDU1NTZWxlY3Rv
ciosIEVsZW1lbnQqLCBib29sIGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yID0gZmFsc2UpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAKaW5kZXggZWFmODg2OWM0Njg4ZTFm
NTlmOWFiNDk3Mjk1ZjNiZTk1MDk2ZmJlOC4uMWM3NjUyOWI0MzliOTM2ZWM2YzgyYWUwZTQwMGEy
M2E2MmVjNjY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwCkBAIC0xNDcs
NiArMTQ3LDkgQEAgdm9pZCBTZWxlY3RvckZpbHRlcjo6Y29sbGVjdElkZW50aWZpZXJIYXNoZXMo
Y29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCB1bnNpZ24KICAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6RGlyZWN0QWRqYWNlbnQ6CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkluZGlyZWN0
QWRqYWNlbnQ6CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rlc2NlbmRhbnQ6Cisj
aWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rp
c3RyaWJ1dGVkOgorI2VuZGlmCiAgICAgICAgICAgICBza2lwT3ZlclN1YnNlbGVjdG9ycyA9IHRy
dWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RGVzY2Vu
ZGFudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBiMTlhZjc2OWMwN2Ux
MzcxZWJkMmQ2N2JiYjhmNTg0NGIxZWQ0NjI3Li41YThmMTJiZWRjZmRmMDYwZGIzMzY2NjZmYTgz
YzVmMDNlMGU5ODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC00NDMs
NyArNDQzLDggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyhjb25z
dCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdCwgUnVsZVIKICAgICBUcmVlU2NvcGUqIHRyZWVT
Y29wZSA9IGVsZW1lbnQtPnRyZWVTY29wZSgpOwogICAgIGlmICghTWF0Y2hpbmdVQVJ1bGVzU2Nv
cGU6OmlzTWF0Y2hpbmdVQVJ1bGVzKCkKICAgICAgICAgJiYgIXRyZWVTY29wZS0+YXBwbHlBdXRo
b3JTdHlsZXMoKQotICAgICAgICAmJiAoIW1hdGNoUmVxdWVzdC5zY29wZSB8fCBtYXRjaFJlcXVl
c3Quc2NvcGUtPnRyZWVTY29wZSgpICE9IHRyZWVTY29wZSkpCisgICAgICAgICYmICghbWF0Y2hS
ZXF1ZXN0LnNjb3BlIHx8IG1hdGNoUmVxdWVzdC5zY29wZS0+dHJlZVNjb3BlKCkgIT0gdHJlZVNj
b3BlKQorICAgICAgICAmJiBtYXRjaFJlcXVlc3QuYmVoYXZpb3JBdEJvdW5kYXJ5ID09IFNlbGVj
dG9yQ2hlY2tlcjo6RG9lc05vdENyb3NzQm91bmRhcnkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIFdlIG5lZWQgdG8gY29sbGVjdCB0aGUgcnVsZXMgZm9yIGlkLCBjbGFzcywgdGFnLCBhbmQg
ZXZlcnl0aGluZyBlbHNlIGludG8gYSBidWZmZXIgYW5kCkBAIC01ODksNiArNTkwLDEzIEBAIHZv
aWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBi
b29sIGluY2x1ZGVFbXB0eVJ1bGVzCiAgICAgUnVsZVJhbmdlIHJ1bGVSYW5nZSA9IHJlc3VsdC5y
YW5nZXMuYXV0aG9yUnVsZVJhbmdlKCk7CiAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMobWF0Y2hS
ZXF1ZXN0LCBydWxlUmFuZ2UpOwogICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKG1h
dGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBWZWN0
b3I8TWF0Y2hSZXF1ZXN0PiBtYXRjaFJlcXVlc3RzOworICAgIG1fcnVsZVNldHMuc2hhZG93RGlz
dHJpYnV0ZWRSdWxlcygpLmNvbGxlY3RNYXRjaFJlcXVlc3RzKGluY2x1ZGVFbXB0eVJ1bGVzLCBt
YXRjaFJlcXVlc3RzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hdGNoUmVxdWVzdHMu
c2l6ZSgpOyArK2kpCisgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKG1hdGNoUmVxdWVzdHNb
aV0sIHJ1bGVSYW5nZSk7CisjZW5kaWYKKwogICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxl
cyhyZXN1bHQpOwogCiAgICAgbWF0Y2hTY29wZWRBdXRob3JSdWxlcyhyZXN1bHQsIGluY2x1ZGVF
bXB0eVJ1bGVzKTsKQEAgLTYyOSw3ICs2MzcsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxl
Y3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBydWxlcywgYwog
ICAgIFN0YXRlJiBzdGF0ZSA9IG1fc3RhdGU7CiAgICAgLy8gSW4gc29tZSBjYXNlcyB3ZSBtYXkg
ZW5kIHVwIGxvb2tpbmcgdXAgc3R5bGUgZm9yIHJhbmRvbSBlbGVtZW50cyBpbiB0aGUgbWlkZGxl
IG9mIGEgcmVjdXJzaXZlIHRyZWUgcmVzb2x2ZS4KICAgICAvLyBBbmNlc3RvciBpZGVudGlmaWVy
IGZpbHRlciB3b24ndCBiZSB1cC10by1kYXRlIGluIHRoYXQgY2FzZSBhbmQgd2UgY2FuJ3QgdXNl
IHRoZSBmYXN0IHBhdGguCi0gICAgYm9vbCBjYW5Vc2VGYXN0UmVqZWN0ID0gbV9zZWxlY3RvckZp
bHRlci5wYXJlbnRTdGFja0lzQ29uc2lzdGVudChzdGF0ZS5wYXJlbnROb2RlKTsKKyAgICBib29s
IGNhblVzZUZhc3RSZWplY3QgPSBtX3NlbGVjdG9yRmlsdGVyLnBhcmVudFN0YWNrSXNDb25zaXN0
ZW50KHN0YXRlLnBhcmVudE5vZGUpICYmIG1hdGNoUmVxdWVzdC5iZWhhdmlvckF0Qm91bmRhcnkg
PT0gU2VsZWN0b3JDaGVja2VyOjpEb2VzTm90Q3Jvc3NCb3VuZGFyeTsKIAogICAgIHVuc2lnbmVk
IHNpemUgPSBydWxlcy0+c2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKQEAgLTYzOSw3ICs2NDcsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RN
YXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBydWxlcywgYwogCiAg
ICAgICAgIFN0eWxlUnVsZSogcnVsZSA9IHJ1bGVEYXRhLnJ1bGUoKTsKICAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbE1hdGNoUnVsZShkb2N1bWVudCgpLCBydWxlLCB0aGlzKTsKLSAgICAgICAgaWYgKHJ1
bGVNYXRjaGVzKHJ1bGVEYXRhLCBtYXRjaFJlcXVlc3Quc2NvcGUpKSB7CisgICAgICAgIGlmIChy
dWxlTWF0Y2hlcyhydWxlRGF0YSwgbWF0Y2hSZXF1ZXN0LnNjb3BlLCBtYXRjaFJlcXVlc3QuYmVo
YXZpb3JBdEJvdW5kYXJ5KSkgewogICAgICAgICAgICAgLy8gSWYgdGhlIHJ1bGUgaGFzIG5vIHBy
b3BlcnRpZXMgdG8gYXBwbHksIHRoZW4gaWdub3JlIGl0IGluIHRoZSBub24tZGVidWcgbW9kZS4K
ICAgICAgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMgPSBydWxlLT5w
cm9wZXJ0aWVzKCk7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnRpZXMgfHwgKHByb3BlcnRpZXMt
PmlzRW1wdHkoKSAmJiAhbWF0Y2hSZXF1ZXN0LmluY2x1ZGVFbXB0eVJ1bGVzKSkgewpAQCAtMjA1
Myw3ICsyMDYxLDcgQEAgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gU3R5bGVSZXNvbHZlcjo6cHNl
dWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCogZSwgUHMKICAgICByZXR1cm4gbV9zdGF0
ZS5ydWxlTGlzdC5yZWxlYXNlKCk7CiB9CiAKLWlubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6OnJ1
bGVNYXRjaGVzKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgY29uc3QgQ29udGFpbmVyTm9kZSog
c2NvcGUpCitpbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpydWxlTWF0Y2hlcyhjb25zdCBSdWxl
RGF0YSYgcnVsZURhdGEsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlLCBTZWxlY3RvckNoZWNr
ZXI6OkJlaGF2aW9yQXRCb3VuZGFyeSBiZWhhdmlvckF0Qm91bmRhcnkpCiB7CiAgICAgU3RhdGUm
IHN0YXRlID0gbV9zdGF0ZTsKICAgICBzdGF0ZS5keW5hbWljUHNldWRvID0gTk9QU0VVRE87CkBA
IC0yMDgyLDYgKzIwOTAsNyBAQCBpbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpydWxlTWF0Y2hl
cyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0IENvbnRhaW5lcgogICAgIGNvbnRleHQu
ZWxlbWVudFN0eWxlID0gc3RhdGUuc3R5bGUuZ2V0KCk7CiAgICAgY29udGV4dC5zY29wZSA9IHNj
b3BlOwogICAgIGNvbnRleHQucHNldWRvU3R5bGUgPSBzdGF0ZS5wc2V1ZG9TdHlsZTsKKyAgICBj
b250ZXh0LmJlaGF2aW9yQXRCb3VuZGFyeSA9IGJlaGF2aW9yQXRCb3VuZGFyeTsKICAgICBTZWxl
Y3RvckNoZWNrZXI6Ok1hdGNoIG1hdGNoID0gc2VsZWN0b3JDaGVja2VyLm1hdGNoKGNvbnRleHQs
IHN0YXRlLmR5bmFtaWNQc2V1ZG8sIERPTVNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneSgpKTsKICAg
ICBpZiAobWF0Y2ggIT0gU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoZXMpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IGYxNTY5MzU1
MDc3M2NmY2Q5YjkyNTU5N2NiNDFlZTY0ZTc2YzljN2UuLjNjYjg3ZTU1YjBlYzg5MTkxMjhmNWVj
OWZlODlhZDNkN2Q2NTQxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtMTM2
LDYgKzEzNiwyMCBAQCBlbnVtIFJ1bGVNYXRjaGluZ0JlaGF2aW9yIHsKICAgICBNYXRjaE9ubHlV
c2VyQWdlbnRSdWxlcywKIH07CiAKK2NsYXNzIE1hdGNoUmVxdWVzdCB7CitwdWJsaWM6CisgICAg
TWF0Y2hSZXF1ZXN0KFJ1bGVTZXQqIHJ1bGVTZXQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMgPSBm
YWxzZSwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUgPSAwLCBTZWxlY3RvckNoZWNrZXI6OkJl
aGF2aW9yQXRCb3VuZGFyeSBiZWhhdmlvckF0Qm91bmRhcnkgPSBTZWxlY3RvckNoZWNrZXI6OkRv
ZXNOb3RDcm9zc0JvdW5kYXJ5KQorICAgICAgICA6IHJ1bGVTZXQocnVsZVNldCkKKyAgICAgICAg
LCBpbmNsdWRlRW1wdHlSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcykKKyAgICAgICAgLCBzY29wZShz
Y29wZSkKKyAgICAgICAgLCBiZWhhdmlvckF0Qm91bmRhcnkoYmVoYXZpb3JBdEJvdW5kYXJ5KSB7
IH0KKyAgICBjb25zdCBSdWxlU2V0KiBydWxlU2V0OworICAgIGNvbnN0IGJvb2wgaW5jbHVkZUVt
cHR5UnVsZXM7CisgICAgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGU7CisgICAgY29uc3QgU2Vs
ZWN0b3JDaGVja2VyOjpCZWhhdmlvckF0Qm91bmRhcnkgYmVoYXZpb3JBdEJvdW5kYXJ5OworICAg
IE1hdGNoUmVxdWVzdCBjbG9uZVdpdGgoUnVsZVNldCogbmV3UnVsZVNldCkgY29uc3QgeyByZXR1
cm4gTWF0Y2hSZXF1ZXN0KG5ld1J1bGVTZXQsIGluY2x1ZGVFbXB0eVJ1bGVzLCBzY29wZSwgYmVo
YXZpb3JBdEJvdW5kYXJ5KTsgfQorfTsKKwogLy8gVGhpcyBjbGFzcyBzZWxlY3RzIGEgUmVuZGVy
U3R5bGUgZm9yIGEgZ2l2ZW4gZWxlbWVudCBiYXNlZCBvbiBhIGNvbGxlY3Rpb24gb2Ygc3R5bGVz
aGVldHMuCiBjbGFzcyBTdHlsZVJlc29sdmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
dHlsZVJlc29sdmVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0zNTgsMTYgKzM3Miw2
IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaXNDYWNoZWFibGU7CiAgICAgfTsKIAotICAgIHN0
cnVjdCBNYXRjaFJlcXVlc3QgewotICAgICAgICBNYXRjaFJlcXVlc3QoUnVsZVNldCogcnVsZVNl
dCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyA9IGZhbHNlLCBjb25zdCBDb250YWluZXJOb2RlKiBz
Y29wZSA9IDApCi0gICAgICAgICAgICA6IHJ1bGVTZXQocnVsZVNldCkKLSAgICAgICAgICAgICwg
aW5jbHVkZUVtcHR5UnVsZXMoaW5jbHVkZUVtcHR5UnVsZXMpCi0gICAgICAgICAgICAsIHNjb3Bl
KHNjb3BlKSB7IH0KLSAgICAgICAgY29uc3QgUnVsZVNldCogcnVsZVNldDsKLSAgICAgICAgY29u
c3QgYm9vbCBpbmNsdWRlRW1wdHlSdWxlczsKLSAgICAgICAgY29uc3QgQ29udGFpbmVyTm9kZSog
c2NvcGU7Ci0gICAgfTsKLQogICAgIHN0YXRpYyB2b2lkIGFkZE1hdGNoZWRQcm9wZXJ0aWVzKE1h
dGNoUmVzdWx0JiwgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcywgU3R5bGVSdWxl
KiA9IDAsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUgPSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoQWxs
LCBQcm9wZXJ0eVdoaXRlbGlzdFR5cGUgPSBQcm9wZXJ0eVdoaXRlbGlzdE5vbmUpOwogICAgIHZv
aWQgYWRkRWxlbWVudFN0eWxlUHJvcGVydGllcyhNYXRjaFJlc3VsdCYsIGNvbnN0IFN0eWxlUHJv
cGVydHlTZXQqLCBib29sIGlzQ2FjaGVhYmxlID0gdHJ1ZSk7CiAKQEAgLTM4Nyw3ICszOTEsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc29ydE1hdGNoZWRSdWxlcygpOwogICAgIHZvaWQgc29ydEFu
ZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKE1hdGNoUmVzdWx0Jik7CiAKLSAgICBib29sIHJ1bGVNYXRj
aGVzKGNvbnN0IFJ1bGVEYXRhJiwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUpOworICAgIGJv
b2wgcnVsZU1hdGNoZXMoY29uc3QgUnVsZURhdGEmLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29w
ZSwgU2VsZWN0b3JDaGVja2VyOjpCZWhhdmlvckF0Qm91bmRhcnkgPSBTZWxlY3RvckNoZWNrZXI6
OkRvZXNOb3RDcm9zc0JvdW5kYXJ5KTsKICAgICBib29sIGNoZWNrUmVnaW9uU2VsZWN0b3IoY29u
c3QgQ1NTU2VsZWN0b3IqIHJlZ2lvblNlbGVjdG9yLCBFbGVtZW50KiByZWdpb25FbGVtZW50KTsK
ICAgICB2b2lkIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBjb25z
dCBFbGVtZW50Kik7CiAgICAgZW51bSBTdHlsZUFwcGxpY2F0aW9uUGFzcyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKaW5kZXggZTA4MzE4YmZmNWE4
ZTBiYmMwNDQ0ZmM4Nzg2ZDM5MTNmOThjN2M5Ni4uY2RmODIxZTJlYmM3NDZkNjk2OWEzN2NjMTk0
ODU3NDJiNjk5OTI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5z
ZXJ0aW9uUG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlv
blBvaW50LmNwcApAQCAtMjI5LDQgKzIyOSwyOCBAQCBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJl
cHJvamVjdGlvbihjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlKQogICAgIHJldHVybiBpbnNlcnRp
b25Qb2ludDsKIH0KIAordm9pZCBjb2xsZWN0SW5zZXJ0aW9uUG9pbnRzV2hlcmVOb2RlSXNEaXN0
cmlidXRlZChjb25zdCBOb2RlKiBub2RlLCBWZWN0b3I8SW5zZXJ0aW9uUG9pbnQqLCA4PiYgcmVz
dWx0cykKK3sKKyAgICBjb25zdCBOb2RlKiBjdXJyZW50ID0gbm9kZTsKKyAgICB3aGlsZSAodHJ1
ZSkgeworICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRG
b3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKKyAgICAgICAgICAgIGlmIChTaGFkb3dSb290KiBy
b290ID0gY3VycmVudC0+Y29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgICAgICBD
b250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZURpc3RyaWJ1dGlvbihyb290KTsKKyAgICAgICAgICAg
IGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5m
aW5kSW5zZXJ0aW9uUG9pbnRGb3Iobm9kZSkpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0g
aW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChpbnNlcnRlZFRvKTsK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBpZiAoTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZUZvckRpc3RyaWJ1dGlvbihjdXJyZW50
KSkgeworICAgICAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRlZFRvID0gcGFyZW50
LT5pc1NoYWRvd1Jvb3QoKSA/IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWduZWRUbyh0
b1NoYWRvd1Jvb3QocGFyZW50KSkgOiAwKSB7CisgICAgICAgICAgICAgICAgY3VycmVudCA9IGlu
c2VydGVkVG87CisgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoaW5zZXJ0ZWRUbyk7Cisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKaW5kZXggZDE4OGM0NzhhMTlhZmM1
MThlODIwZDlhOGZhZmNiYWUyZDlkZTk5Ny4uNzZkNzQ4NWM4YWQzNTg3YmM0MWEyOGZlZjA3NjFj
MTNmNGU1OTliOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0
aW9uUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2lu
dC5oCkBAIC0xNjEsNiArMTYxLDggQEAgaW5saW5lIEVsZW1lbnRTaGFkb3cqIHNoYWRvd09mUGFy
ZW50Rm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCiAKIEluc2VydGlvblBvaW50KiBy
ZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqKTsKIAordm9pZCBjb2xsZWN0SW5zZXJ0aW9u
UG9pbnRzV2hlcmVOb2RlSXNEaXN0cmlidXRlZChjb25zdCBOb2RlKiwgVmVjdG9yPEluc2VydGlv
blBvaW50KiwgOD4mIHJlc3VsdHMpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBJbnNlcnRpb25Qb2ludF9oCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjI5ZDgxMjlmM2M3YjVhZjI2YzZkZGYzMjM1
ZWJhNDVjNWNhN2VhMy4uYWJkNzA5YzRmMzk5OWI0N2NhZWUyN2YxZDJmYmYyMjUyNWM0ODFmZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEzLTAyLTExICBIYXlhdG8gSXRvICA8aGF5YXRvQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gSW1wbGVtZW50cyBhICc6OmRpc3Ry
aWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODIxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlz
dHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50LWV4cGVjdGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC1mb3Itc2hhZG93LWVsZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtbWF0Y2gtYWxsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50LWV4cGVjdGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC1tYXRjaC1kZXNjZW5kYW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3No
YWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQtZXhwZWN0ZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LW5lc3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtbm8tbWF0Y2gtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5vLW1hdGNoLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtc2NvcGVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3No
YWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQt
c2VsZWN0b3ItZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3IuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVz
ZWQtaW4tc2VsZWN0b3ItbGlzdC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1s
aXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC13aXRoLWFueS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtd2l0aC1hbnkuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTAyLTEyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgRXJhZGljYXRlIGZhc3QvanMvZGZnLXBvaXNvbi1mdXp6Lmh0bWwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1
ZG8tZWxlbWVudC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRjMjZl
MmI1NmM0YzZhN2M3MGM2Y2ZkNThhMjI3ZjhlMGY0NDY0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1leHBl
Y3RlZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5
PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYgc3R5bGU9
ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRv
LWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVt
ZW50LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRjMjZlMmI1NmM0YzZhN2M3MGM2Y2ZkNThh
MjI3ZjhlMGY0NDY0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQtZXhwZWN0
ZWQuaHRtbApAQCAtMCwwICsxLDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4K
KzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2IHN0eWxlPSJj
b2xvcjogZ3JlZW4iPmdyZWVuPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1l
bGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkZGMzN2M1YzZjNDg4NjdkZjVjYjgxNDcyOGEzNjlmZDhkMjNlNjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFk
b3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+
PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdzaGFkb3c6Oi13ZWJraXQtZGlz
dHJpYnV0ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hh
ZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSwK
KyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRv
d1N0eWxlLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdzaGFkb3cnKSkpKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LW1hdGNoLWFsbC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhNjBiNzJlMGRlOTE3NzYyYjJh
MmE0YzVlYzNlZjlmNTY2ZWI0OTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLWV4cGVjdGVk
Lmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5Pgor
PGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXY+CisgICAgICBu
b3JtYWwKKyAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgICA8
L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgbm9ybWFsCisgICAgICA8ZGl2IHN0eWxlPSJjb2xvcjog
Z3JlZW4iPmdyZWVuPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LW1hdGNoLWFsbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5
ZjJmZjJiNDEzN2EwYzVhZWVkYzg1ZTg5MTJmMmVjMzRlYjJmYmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
bWF0Y2gtYWxsLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFy
IHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0
eWxlLmlubmVySFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKC5oZWxsbykgeyBj
b2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAg
ICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29u
dGVudCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdoZWxsbyd9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdn
cmVlbicpKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAg
ICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJyksCisgICAgICAg
ICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnaGVsbG8nfSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgn
Z3JlZW4nKSkpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRj
aC1kZXNjZW5kYW50LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtZGVzY2VuZGFudC1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjFjMTg3ODU2ZmVlMThmNGU0MjdmMjFhNzcxYjMyZDExMzE4ZjUzYjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQt
cHNldWRvLWVsZW1lbnQtbWF0Y2gtZGVzY2VuZGFudC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEs
MTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3gi
PgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8cD4KKyAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBn
cmVlbiI+Z3JlZW48L2Rpdj4KKyAgICA8L3A+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVk
by1lbGVtZW50LW1hdGNoLWRlc2NlbmRhbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmU0MDQzZTg1NWE1MDhkNDhiNWEwNjAwZTBmNjg2Njk4ODMwMDI4MgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1
ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50Lmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ct
ZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9k
aXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
c3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3Ry
aWJ1dGVkKGRpdikgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNy
ZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAg
ICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
Y29udGVudCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdwJywge30sCisgICAgICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSkpKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5l
c3RlZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1MTgzNDQyYTA3NmM3ZjgxYTljNTQyMTMx
ZTc5ZmI3NzZmMDExY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLWV4cGVjdGVkLmh0bWwKQEAg
LTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0i
c2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYgaWQ9Im5lc3RlZC1ob3N0Ij4K
KyAgICAgIHRleHQxCisgICAgICA8ZGl2PgorICAgICAgICB0ZXh0MgorICAgICAgICA8ZGl2Pgor
ICAgICAgICAgIHRleHQzCisgICAgICAgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVl
bjwvZGl2PgorICAgICAgICAgIDxkaXY+bm9ybWFsPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
ICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtbmVzdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlz
dHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzE2N2EzZWZl
Y2EwZjQwOGE2ZDM4NzU2OTI5N2VmZTYyMzU4ODBkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQu
aHRtbApAQCAtMCwwICsxLDMyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5
bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJI
VE1MID0gJ2RpdiBjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdiBjb250ZW50Ojotd2Vi
a2l0LWRpc3RyaWJ1dGVkKGRpdi5ncmVlbikpIHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNh
bmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBl
bmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAg
ICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7J2lkJzogJ25lc3RlZC1ob3N0J30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93U3R5
bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCd0ZXh0MScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3RleHQyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICdkaXYnfSkp
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3Mn
OiAnZ3JlZW4nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ3RleHQzJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHt9KSkpKSwKKyAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2dyZWVuJ30sCisgICAgICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSksCisgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgnbm9ybWFsJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC1uby1tYXRjaC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5vLW1hdGNoLWV4cGVjdGVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjA1ZmVmZjc1Yzc5YWVkZTViZjhlNDliYmVkMGI3MTU1ZGNlNjgwZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC1uby1tYXRjaC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJo
b3N0Ij4KKyAgICA8cD5ub3JtYWw8L3A+CisgICAgPGRpdj4KKyAgICAgIDxkaXY+bm9ybWFsPC9k
aXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5v
LW1hdGNoLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtbm8tbWF0Y2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NDcxM2Q2MGIyM2E3M2IwNjZk
OGU0YmY1NmIyMGMyZDcxMjM3YjViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5vLW1hdGNoLmh0bWwKQEAg
LTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICd0
aGlzLWRvZXMtbm90LW1hdGNoOjotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdikgeyBjb2xvcjogZ3Jl
ZW47IH0nCisgICAgKyAncDo6LXdlYmtpdC1kaXN0cmlidXRlZChkaXYpIHsgY29sb3I6IGdyZWVu
OyB9JworICAgICsgJ2Rpdjo6LXdlYmtpdC1kaXN0cmlidXRlZChkaXYpIHsgY29sb3I6IGdyZWVu
OyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcp
Oworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9z
dCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAg
c2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3AnLCB7fSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSks
CisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSksCisgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnZGl2JywgeydpZCc6ICdob3N0LWNoaWxkJ30sCisgICAgICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2pl
Y3Rpb24tZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjljOTEyN2RlNWU3MDNiN2ExYTVjOTM2
OTRlYTdjZDBiMTI0ODQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxk
aXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2IGlkPSJob3N0MiI+
CisgICAgICA8ZGl2IHN0eWxlPSdjb2xvcjogZ3JlZW4nPgorICAgICAgICBncmVlbgorICAgICAg
PC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LXJlcHJvamVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3MzVmYTcw
OWU4NjFiMGRiNGFlNGNjNDY0ZmY3YWZhMWExOWUwYzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9q
ZWN0aW9uLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNo
YWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxl
LmlubmVySFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKC5mb28pIHsgY29sb3I6
IGdyZWVuOyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Fu
ZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnaG9zdCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QyJ30sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJy5mb28nfSkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSksCisgICAgICAgICAgICAgIGNyZWF0ZURP
TSgnZGl2JywgeydjbGFzcyc6ICdmb28nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQt
cHNldWRvLWVsZW1lbnQtc2NvcGVkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzQ4ZDllMmRlM2U2ZmU0YmZkODk4MGI2M2QwMzliYzU0ZDg4MzFhMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC1zY29wZWQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBp
ZD0iaG9zdCI+CisgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgPGRpdiBz
dHlsZT0nY29sb3I6IGdyZWVuJz5ncmVlbjwvZGl2PgorICAgIDwvZGl2PgorICA8L2Rpdj4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kYWE3MWFiYzc5MDk2MzMwMGEzMjQ3ZTg1Njg1MGE4MzYxMzU4ODVjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1l
bGVtZW50LXNjb3BlZC5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4K
K3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFk
b3dTdHlsZS5pbm5lckhUTUwgPSAnY29udGVudDo6LXdlYmtpdC1kaXN0cmlidXRlZChkaXYpIHsg
Y29sb3I6IGdyZWVuOyB9JzsKK3NoYWRvd1N0eWxlLnNldEF0dHJpYnV0ZSgnc2NvcGVkJywgdHJ1
ZSk7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsK
K3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3Qn
fSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJyNob3N0LWNoaWxkMSd9KSwKKyAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnI2hvc3QtY2hpbGQyJ30pLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlKSksCisgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0LWNoaWxkMSd9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpKSwKKyAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QtY2hpbGQyJ30sCisgICAgICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3ItZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC1zdXBwb3J0LXNlbGVjdG9yLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjNkZWRlMTMzYjg2
MmRkMTRjOTJlNjA1YzRhMWJlZDI4ZTM3YWRhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNl
bGVjdG9yLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAg
IDxkaXY+CisgICAgICBub3JtYWwKKyAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3Jl
ZW48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgbm9ybWFsCisgICAgICA8ZGl2
Pm5vcm1hbDwvZGl2PgorICAgIDwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjNmZGJkODZlZjc4MmIxNDFjZmY1OWJhM2MxNjViYTU3ZWIzZTc4NWQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRv
LWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRv
bS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2
PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0
eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnY29udGVudDo6LXdlYmtpdC1kaXN0cmli
dXRlZChkaXYuaGVsbG8gZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQo
CisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3Jl
YXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHsnY2xhc3MnOiAnaGVsbG8nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCdub3JtYWwnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
e30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoJ25vcm1hbCcpKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3It
bGlzdC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiODI1M2U0ZGFiNzQwNTY1ODM4ZDg0MjUw
YmJhOWJkOTA0ZDk5MmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0LWV4
cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxi
b2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYgc3R5
bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgICA8cD5ub3JtYWw8L3A+CisgICAgPHAg
c3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L3A+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3It
bGlzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwNmQ1NDhmNmJhMzkxY2I3NGE4MjMxNmVkYjk2ZGM1ZDJl
NzFmMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlz
dHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0Lmh0bWwKQEAgLTAs
MCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250
ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdiksIHAgeyBjb2xvcjogZ3JlZW47IH0nOworCit2
YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94
LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAg
ICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHls
ZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpLAorICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdwJywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCdncmVlbicpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdwJywgeydjbGFzcyc6ICdo
ZWxsbyd9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
J25vcm1hbCcpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtd2l0
aC1hbnktZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRlZC1wc2V1ZG8tZWxlbWVudC13aXRoLWFueS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3
Mzc5OTQzZGY2NDg5MDMyNGRjMDJkOWRlMzAxODUxYTExMTg2NTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
d2l0aC1hbnktZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdj4KKyAgICA8ZGl2Pm5v
cm1hbDwvZGl2PgorICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAg
PC9kaXY+CisgIDxkaXY+CisgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAgICA8ZGl2IHN0eWxlPSJj
b2xvcjogcmVkIj5yZWQ8L2Rpdj4KKyAgPC9kaXY+CisgIDxkaXY+CisgICAgPGRpdj5ub3JtYWw8
L2Rpdj4KKyAgICA8ZGl2IHN0eWxlPSJjb2xvcjogYmx1ZSI+Ymx1ZTwvZGl2PgorICA8L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC13aXRoLWFueS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uM2NhMjM1YTQzZGIzZjdiM2I3OWI5YWU0Y2M5N2E4MzdlOGM2YThlNwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC13aXRoLWFueS5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2Pgor
PHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZTEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHls
ZScpOworc2hhZG93U3R5bGUxLmlubmVySFRNTCA9ICcqOjotd2Via2l0LWRpc3RyaWJ1dGVkKGRp
dikgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2hhZG93U3R5bGUyID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlMi5pbm5lckhUTUwgPSAnY29udGVudDo6
LXdlYmtpdC1kaXN0cmlidXRlZCgqKSB7IGNvbG9yOiByZWQ7IH0nOworCit2YXIgc2hhZG93U3R5
bGUzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlMy5pbm5l
ckhUTUwgPSAnKjo6LXdlYmtpdC1kaXN0cmlidXRlZCgqKSB7IGNvbG9yOiBibHVlOyB9JzsKKwor
dmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJv
eC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICBj
cmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUxLAorICAgICAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpLAorICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dy
ZWVuJykpKSk7CisKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7
fSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNo
YWRvd1N0eWxlMiwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcp
KSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCdyZWQnKSkpKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAg
ICAgICAgICAgICAgIHNoYWRvd1N0eWxlMywKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoJ25vcm1hbCcpKSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcp
KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdibHVlJykpKSk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDI0M2NhMWM4
Yzk0ZjMyNjhiNjRmNzBlZGQyMTI2YjA3YjBkZjAxYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC5odG1sCkBA
IC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAn
Y29udGVudDo6LXdlYmtpdC1kaXN0cmlidXRlZChkaXYpIHsgY29sb3I6IGdyZWVuOyB9JzsKKwor
dmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJv
eC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICBj
cmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUsCisgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURP
TSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgnZ3JlZW4nKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188267</attachid>
            <date>2013-02-13 23:24:10 -0800</date>
            <delta_ts>2013-02-13 23:53:24 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-82169-20130214162038.patch</filename>
            <type>text/plain</type>
            <size>65021</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjE4M2E1Nzc0MmUwZWQ5
NTcwM2NiNTkxYzVkNzQzZDQxMzA1MWU2Ny4uMTBiMzY3MDhiMmQzYTNkNTg3OGQzOTRlNGU0NzUx
NDcxMjIyMTM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2MSBAQAorMjAxMy0wMi0xMyAgSGF5
YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NoYWRvdyBET01dIElt
cGxlbWVudHMgYSAnOjpkaXN0cmlidXRlZCgpJyBwc2V1ZG8gZWxlbWVudC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMTY5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgorCisgICAgICAgIEltcGxlbWVudHMgYSAnOjpkaXN0
cmlidXRlZCgpJyBwc2V1ZG8gZWxlbWVudC4KKyAgICAgICAgU2VlIHRoZSBTaGFkb3cgRE9NIHNw
ZWNpZmljYXRpb24gYW5kIHRoZSBmaWxlZCBidWcgZm9yIHRoZSBkZXRhaWwuCisKKyAgICAgICAg
LSBodHRwOi8vZHZjcy53My5vcmcvaGcvd2ViY29tcG9uZW50cy9yYXctZmlsZS90aXAvc3BlYy9z
aGFkb3cvaW5kZXguaHRtbCNzZWxlY3Rpbmctbm9kZXMtZGlzdHJpYnV0ZWQtdG8taW5zZXJ0aW9u
LXBvaW50cworICAgICAgICAtIGh0dHBzOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1
Zy5jZ2k/aWQ9MTk2ODQKKworICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB3ZSBhcmUgZ2l2
ZW4gdGhlIGZvbGxvd2luZyBET00gdHJlZSBhbmQgc2hhZG93IHRyZWU6CisKKyAgICAgICAgLSA8
QT4KKyAgICAgICAgICAtIDxCPgorICAgICAgICAgICAgLSA8Qz4KKworICAgICAgICBbQSdzIFNo
YWRvd1Jvb3RdCisgICAgICAgICAgPEQ+CisgICAgICAgICAgLSA8c3R5bGU+CisgICAgICAgICAg
ICAgIEUgY29udGVudDo6ZGlzdHJpYnV0ZWQoQiBDKSB7IGNvbG9yOiBncmVlbjsgfQorICAgICAg
ICAgIC0gPEU+CisgICAgICAgICAgICAtIDxjb250ZW50PiAgKE5vZGUgQiBpcyBkaXN0cmlidXRl
ZCB0byB0aGlzIGluc2VydGlvbiBwb2ludC4pCisKKyAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUg
c3R5bGUgcnVsZSBkZWZpbmVkIGluIHRoZSBzaGFkb3cgdHJlZSBtYXRjaGVzIG5vZGUgJ0MnLgor
CisgICAgICAgIEEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvIGVsZW1lbnQgY2FuIG5vdCBiZSBh
IHBzZXVkbyBjbGFzcyBzaW5jZQorICAgICAgICBhbiBpbnRlcnNlY3Rpb24gYmV0d2VlbiBtYXRj
aGVkX2VsZW1lbnRzKHNvbWVfc2VsZWN0b3IpIGFuZAorICAgICAgICBtYXRjaGVkX2VsZW1lbnRz
KHNvbWVfc2VsZWN0b3I6OmRpc3RyaWJ1dGVkKC4uLikpIGlzIGFsd2F5cyBhbgorICAgICAgICBl
bXB0eSBzZXQuIEEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRvIGVsZW1lbnQgaXMgdGhlIGZpcnN0
LWV2ZXIKKyAgICAgICAgKmZ1bmN0aW9uYWwqIHBzZXVkbyBlbGVtZW50IHdoaWNoIHRha2VzIGEg
cGFyYW1ldGVyLCB3aGljaCBjYW4gYmUKKyAgICAgICAgYSBzZWxlY3Rvci4KKworICAgICAgICBU
aGlzIHJ1bGUgY3Jvc3NlcyB0aGUgc2hhZG93IGJvdW5kYXJ5IGZyb20gYSBzaGFkb3cgdHJlZSB0
byB0aGUKKyAgICAgICAgdHJlZSBvZiBpdHMgc2hhZG93IGhvc3QuIFRoYXQgbWVhbnMgYSBydWxl
IHdoaWNoIGluY2x1ZGVzCisgICAgICAgICc6OmRpc3RyaWJ1dGVkKCknIHBzZXVkbyBlbGVtZW50
IGlzIGRlZmluZWQgaW4gc2hhZG93IHRyZWUsIGJ1dAorICAgICAgICB0aGUgbm9kZSB3aGljaCBp
cyBtYXRjaGVkIGluIHRoZSBydWxlLCB0aGUgc3ViamVjdCBvZiB0aGUKKyAgICAgICAgc2VsZWN0
b3IsIGlzIG91dHNpZGUgb2YgdGhlIHNoYWRvdyB0cmVlLiBUaGVyZWZvcmUsIHdlIGNhbm5vdAor
ICAgICAgICBwcmVkaWN0IHdoZXJlIHRoZSBzdWJqZWN0IG9mIHRoZSBzZWxlY3RvciB3aWxsIGJl
IGJlZm9yZWhhbmQuCisgICAgICAgIEN1cnJlbnQgQ1NTIGltcGxlbWVudGF0aW9uIGFzc3VtZXMg
dGhlIHN1YmplY3Qgb2YgdGhlIHNlbGVjdG9yCisgICAgICAgIG11c3QgZXhpc3QgaW4gdGhlIGN1
cnJlbnQgc2NvcGUuCisKKyAgICAgICAgVG8gb3ZlcmNvbWUgdGhpcyBpc3N1ZSwgRG9jdW1lbnRS
dWxlU2V0cyBub3cgaGFzIGEgaW5zdGFuY2Ugb2YKKyAgICAgICAgU2hhZG93RGlzdHJpYnV0ZWRS
dWxlcyBjbGFzcy4gIEEgc3R5bGUgcnVsZSB3aWxsIGJlIHN0b3JlZCBpbiB0aGlzCisgICAgICAg
IGluc3RhbmNlIGlmIHRoZSBydWxlIGluY2x1ZGVzIGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRv
IGVsZW1lbnQuCisgICAgICAgIFRoaXMgY2xhc3MgYWxzbyBrZWVwcyB0cmFjayBvZiBlYWNoIFJ1
bGVTZXQgYnkgbWFwcGluZyBpdCB3aXRoIGEKKyAgICAgICAgc2NvcGUgd2hlcmUgdGhlIHJ1bGUg
d2FzIG9yaWdpbmFsbHkgZGVmaW5lZC4gSW4gdGhlIGV4YW1wbGUsIHRoZQorICAgICAgICBzY29w
ZSBpcyBBJ3MgU2hhZG93Um9vdC4gIFRoZSBzY29wZSBpcyB1c2VkIHRvIGNoZWNrIHdoZXRoZXIg
dGhlCisgICAgICAgIGxlZnQtbW9zdCBtYXRjaGVkIGVsZW1lbnQgKGluIHRoZSBleGFtcGxlLCBp
dCdzIGEgbm9kZSAnRScpIGV4aXN0cworICAgICAgICBpbiB0aGUgc2NvcGUuCisKKyAgICAgICAg
SW50ZXJuYWxseSwgYSAnOjpkaXN0cmlidXRlZCcgcHNldWRvIGVsZW1lbnQgaXMgcmVwcmVzZW50
ZWQgYnkgYQorICAgICAgICBuZXdseSBpbnRyb2R1Y2VkICdTaGFkb3dEaXN0cmlidXRlZCcgcmVs
YXRpb24uICBUaGF0IG1ha2VzIGFuCisgICAgICAgIGltcGxlbWVudGF0aW9uIG9mIFNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tTZWxlY3RvcigpIG11Y2ggc2ltcGxlci4KKyAgICAgICAgQSB0cmFuc2Zv
cm1hdGlvbiBmcm9tIGEgZGlzdHJpYnV0ZWQgcHNldWRvIGVsZW1lbnQgdG8gYQorICAgICAgICBT
aGFkb3dEaXN0cmlidXRlZCBpcyBkb25lIGluIHBhcnNpbmcgc3RhZ2Ugb2YgQ1NTLgorCisgICAg
ICAgIFNpbmNlICc6OmRpc3RyaWJ1dGVkKCknIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlLCBp
dCdzIGFjdHVhbGx5CisgICAgICAgIHByZWZpeGVkIHdpdGggJy13ZWJraXQtJyBhbmQgZ3VhcmRl
ZCBieSBTSEFET1dfRE9NIGZsYWcuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNo
LWFsbC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNl
dWRvLWVsZW1lbnQtbWF0Y2gtZGVzY2VuZGFudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uby1tYXRj
aC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRv
LWVsZW1lbnQtcmVwcm9qZWN0aW9uLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0
b3IuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVk
by1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtd2l0aC1hbnkuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50Lmh0
bWwKKworICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnkuaW46CisgICAgICAgIENTUyBHcmFtbWFy
IHdhcyB1cGRhdGVkIHRvIHN1cHBvcnQgJzo6ZGlzdHJidXRlZChzZWxlY3RvciknLgorICAgICAg
ICBUaGlzIHBzZXVkbyBlbGVtZW50IGlzIHRoZSBmaXJzdCBwc2V1ZG8gZWxlbWVudCB3aGljaCBj
YW4gdGFrZSBhIHNlbGVjdG9yIGFzIGEgcGFyYW1ldGVyLgorICAgICAgICAqIGNzcy9DU1NQYXJz
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpkZXRlY3REYXNoVG9rZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpyZXdyaXRlU3BlY2lmaWVyc1dpdGhOYW1lc3Bh
Y2VJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnJld3JpdGVTcGVjaWZp
ZXJzV2l0aEVsZW1lbnROYW1lKToKKyAgICAgICAgSGVyZSB3ZSBhcmUgY29udmVydGluZyBhICc6
OmRpc3RyaWJ1dGVkJyBwc2V1ZG8gZWxlbWVudCBpbnRvIGEKKyAgICAgICAgU2hhZG93RGlzdHJp
YnV0ZWQgcmVsYXRpb24gaW50ZXJuYWxseS4gIFRvIHN1cHBvcnQgdGhlIGNvbnZlcnNpb24sCisg
ICAgICAgIHRoZXNlIHJld3JpdGVTcGVjaWZpZXJzWFhYIGZ1bmN0aW9ucyAoZm9ybWFsbHkgY2Fs
bGVkCisgICAgICAgIHVwZGF0ZVNwZWNpZmllcnNYWFgpIG5vdyByZXR1cm4gdGhlIHNwZWNpZmll
cnMgd2hpY2ggbWF5IGJlCisgICAgICAgIGNvbnZlcnRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6cmV3cml0ZVNwZWNpZmllcnMpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoK
KyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlclNlbGVjdG9yOjpDU1NQYXJzZXJTZWxlY3Rvcik6CisgICAgICAgICogY3NzL0NTU1Bh
cnNlclZhbHVlcy5oOgorICAgICAgICAoQ1NTUGFyc2VyU2VsZWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OmZ1bmN0aW9uQXJndW1lbnRTZWxlY3Rvcik6CisgICAg
ICAgIFRvIGhvbGQgYW4gaW50ZXJtZWRpYXRlIHNlbGVjdG9yIHdoaWNoIGFwcGVhcnMgYXQgdGhl
IHBvc2l0aW9uIG9mIGFuIGFyZ3VtZW50IGluCisgICAgICAgIGZ1bmN0aW9uYWwgcHNldWRvIGVs
ZW1lbnQgd2hlbiBwYXJzaW5nIENTUy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVj
dG9yOjpzZXRGdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyU2VsZWN0b3I6OmlzRGlzdHJpYnV0ZWRQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKiBj
c3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICBBZGQgbmV3IHBzZXVkbyBlbGVtZW50LCBQc2V1
ZG9EaXN0cmlidXRlZCwgYW5kIGl0cyBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiwgU2hhZG93RGlz
dHJpYnV0ZWQgcmVsYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6cHNldWRv
SWQpOgorICAgICAgICAoV2ViQ29yZTo6bmFtZVRvUHNldWRvVHlwZU1hcCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9y
Lmg6CisgICAgICAgIChDU1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1NlbGVjdG9yOjppc0Rpc3RyaWJ1dGVkUHNldWRvRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6aXNTaGFkb3dEaXN0cmlidXRlZCk6CisgICAgICAg
ICogY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFNlbGVjdG9ySGFzU2hhZG93RGlzdHJpYnV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JIYXNTaGFkb3dEaXN0cmlidXRlZDo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTZWxlY3Rvckxpc3Q6Omhhc1NoYWRvd0Rpc3RyaWJ1dGVkQXQpOgorICAgICAgICAqIGNzcy9D
U1NTZWxlY3Rvckxpc3QuaDoKKyAgICAgICAgKENTU1NlbGVjdG9yTGlzdCk6CisgICAgICAgICog
Y3NzL0RvY3VtZW50UnVsZVNldHMuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dEaXN0cmlidXRlZFJ1bGVzOjphZGRSdWxlKToKKyAgICAgICAgRXZlcnkg
Q1NTIHJ1bGUgd2hpY2ggaW5jbHVkZXMgJzo6ZGlzdHJpYnV0ZWQoLi4uKScgc2hvdWxkIGJlIG1h
bmFnZWQgYnkgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93
RGlzdHJpYnV0ZWRSdWxlczo6Y29sbGVjdE1hdGNoUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRSdWxlU2V0czo6cmVzZXRBdXRob3JTdHlsZSk6CisgICAgICAgICogY3NzL0Rv
Y3VtZW50UnVsZVNldHMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2hhZG93RGlz
dHJpYnV0ZWRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEaXN0cmlidXRlZFJ1bGVz
OjpjbGVhcik6CisgICAgICAgIChEb2N1bWVudFJ1bGVTZXRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50UnVsZVNldHM6OnNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXMpCisgICAgICAgIERvY3Vt
ZW50UnVsZVNldHMgb3ducyBhbiBpbnN0YW5jZSBvZiBTaGFkb3dEaXN0cmlidXRlZFJ1bGVzLgor
ICAgICAgICAqIGNzcy9SdWxlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFk
ZENoaWxkUnVsZXMpOgorICAgICAgICBVcGRhdGVkIHRvIGNoZWNrIHdoZXRoZXIgdGhlIHJ1bGUg
Y29udGFpbnMgJzo6ZGlzdHJpYnV0ZWQoKScgb3Igbm90LgorICAgICAgICAqIGNzcy9TZWxlY3Rv
ckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjptYXRjaCk6
CisgICAgICAgIFN1cHBvcnQgU2hhZG93RGlzdHJpYnV0ZWQgcmVsYXRpb24uIENoZWNrIGFsbCBw
b3NzaWJsZSBpbnNlcnRpb24gcG9pbnRzIHdoZXJlIGEgbm9kZSBpcyBkaXN0cmlidXRlZC4KKyAg
ICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rv
ckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0OjpTZWxlY3RvckNoZWNraW5nQ29udGV4
dCk6CisgICAgICAgIEFkZHMgZW51bSBvZiBCZWhhdmlvckF0Qm91bmRhcnkuICc6OmRpc3RyaWJ1
dGVkKCknIGlzIHRoZSBvbmx5CisgICAgICAgIHJ1bGUgd2hpY2ggdXNlcyAnQ3Jvc3NlZEJvdW5k
YXJ5JyBzaW5jZSBpdCBpcyB0aGUgb25seSBydWxlIHdoaWNoCisgICAgICAgIGNyb3NzZXMgc2hh
ZG93IGJvdW5kYXJpZXMuCisgICAgICAgIChTZWxlY3RvckNoZWNraW5nQ29udGV4dCk6CisgICAg
ICAgICogY3NzL1NlbGVjdG9yRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
RmlsdGVyOjpjb2xsZWN0SWRlbnRpZmllckhhc2hlcyk6CisgICAgICAgICogY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNo
aW5nUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JS
dWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdS
dWxlc0Zvckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cnVsZU1hdGNo
ZXMpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChNYXRjaFJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWF0Y2hSZXF1ZXN0OjpNYXRjaFJlcXVlc3QpOiBBZGQg
YmVoYXZpb3JBdEJvdW5kYXJ5IGZpZWxkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChT
dHlsZVJlc29sdmVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0SW5zZXJ0aW9uUG9pbnRzV2hlcmVOb2RlSXNEaXN0
cmlidXRlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNl
cnRpb25Qb2ludC5oOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTMtMDItMTMgICBWaW5lZXQg
Q2hhdWRoYXJ5ICA8cmdmNzQ4QG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBbUmVncmVzc2lvbl0g
QWZ0ZXIgcjE0MjgzMSAgY29sbGVjdGlvbi1udWxsLWxpa2UtYXJndW1lbnRzLmh0bWwgbGF5b3V0
IHRlc3QgZmFpbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIu
eS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KaW5kZXggY2I4NGZlMjkx
MDRhOGFlZTQxNGM2MWQ2OTIzYTM3ZTRlNTcyNjJhYS4uZjQ2NGU2MDM3MTNlNzFjZmZlNWVlYjc5
NjZhZGEyNTcxNzYyMGIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1t
YXIueS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCkBAIC02MSw3
ICs2MSwxMSBAQCBzdGF0aWMgaW5saW5lIGludCBjc3N5eWVycm9yKHZvaWQqLCBjb25zdCBjaGFy
KikKIAogJX0KIAorI2lmIEVOQUJMRV9TSEFET1dfRE9NCislZXhwZWN0IDY3CisjZWxzZQogJWV4
cGVjdCA2NgorI2VuZGlmCiAKICVub25hc3NvYyBMT1dFU1RfUFJFQwogCkBAIC0xODQsNiArMTg4
LDcgQEAgc3RhdGljIGlubGluZSBpbnQgY3NzeXllcnJvcih2b2lkKiwgY29uc3QgY2hhciopCiAl
dG9rZW4gPHN0cmluZz4gQ1VFRlVOQ1RJT04KICNlbmRpZgogJXRva2VuIDxzdHJpbmc+IE5PVEZV
TkNUSU9OCisldG9rZW4gPHN0cmluZz4gRElTVFJJQlVURURGVU5DVElPTgogJXRva2VuIDxzdHJp
bmc+IENBTENGVU5DVElPTgogJXRva2VuIDxzdHJpbmc+IE1JTkZVTkNUSU9OCiAldG9rZW4gPHN0
cmluZz4gTUFYRlVOQ1RJT04KQEAgLTEyMDMsMTIgKzEyMDgsMTIgQEAgc2ltcGxlX3NlbGVjdG9y
OgogICAgIHwgZWxlbWVudF9uYW1lIHNwZWNpZmllcl9saXN0IHsKICAgICAgICAgJCQgPSAkMjsK
ICAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0
aEVsZW1lbnROYW1lKG51bGxBdG9tLCAkMSwgJCQpOworICAgICAgICAgICAgJCQgPSBwYXJzZXIt
PnJld3JpdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKG51bGxBdG9tLCAkMSwgJCQpOwogICAg
IH0KICAgICB8IHNwZWNpZmllcl9saXN0IHsKICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgaWYg
KCQkKQotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aE5hbWVzcGFjZUlm
TmVlZGVkKCQkKTsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5yZXdyaXRlU3BlY2lmaWVyc1dp
dGhOYW1lc3BhY2VJZk5lZWRlZCgkJCk7CiAgICAgfQogICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9y
IGVsZW1lbnRfbmFtZSB7CiAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVj
dG9yV2l0aFRhZ05hbWUocGFyc2VyLT5kZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoJDEsICQyKSk7
CkBAIC0xMjE2LDEyICsxMjIxLDEyIEBAIHNpbXBsZV9zZWxlY3RvcjoKICAgICB8IG5hbWVzcGFj
ZV9zZWxlY3RvciBlbGVtZW50X25hbWUgc3BlY2lmaWVyX2xpc3QgewogICAgICAgICAkJCA9ICQz
OwogICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNX
aXRoRWxlbWVudE5hbWUoJDEsICQyLCAkJCk7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+cmV3
cml0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsICQyLCAkJCk7CiAgICAgfQogICAgIHwg
bmFtZXNwYWNlX3NlbGVjdG9yIHNwZWNpZmllcl9saXN0IHsKICAgICAgICAgJCQgPSAkMjsKICAg
ICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVs
ZW1lbnROYW1lKCQxLCBzdGFyQXRvbSwgJCQpOworICAgICAgICAgICAgJCQgPSBwYXJzZXItPnJl
d3JpdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKCQxLCBzdGFyQXRvbSwgJCQpOwogICAgIH0K
ICAgOwogCkBAIC0xMjY2LDcgKzEyNzEsNyBAQCBzcGVjaWZpZXJfbGlzdDoKICAgICAgICAgaWYg
KCEkMikKICAgICAgICAgICAgICQkID0gMDsKICAgICAgICAgZWxzZSBpZiAoJDEpCi0gICAgICAg
ICAgICAkJCA9IHBhcnNlci0+dXBkYXRlU3BlY2lmaWVycygkMSwgJDIpOworICAgICAgICAgICAg
JCQgPSBwYXJzZXItPnJld3JpdGVTcGVjaWZpZXJzKCQxLCAkMik7CiAgICAgfQogICAgIHwgc3Bl
Y2lmaWVyX2xpc3QgZXJyb3IgewogICAgICAgICAkJCA9IDA7CkBAIC0xNDEzLDYgKzE0MTgsMTkg
QEAgcHNldWRvOgogICAgICAgICAgICAgJCQgPSAwOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJM
RV9TSEFET1dfRE9NCisgICAgfCAnOicgJzonIERJU1RSSUJVVEVERlVOQ1RJT04gbWF5YmVfc3Bh
Y2Ugc2VsZWN0b3IgbWF5YmVfc3BhY2UgJyknIHsKKyAgICAgICAgaWYgKCEkNSkKKyAgICAgICAg
ICAgICQkID0gMDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3Jl
YXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVj
dG9yOjpQc2V1ZG9FbGVtZW50KTsKKyAgICAgICAgICAgICQkLT5zZXRGdW5jdGlvbkFyZ3VtZW50
U2VsZWN0b3IoJDUpOworICAgICAgICAgICAgJDMubG93ZXIoKTsKKyAgICAgICAgICAgICQkLT5z
ZXRWYWx1ZSgkMyk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKICAgICAvLyB1c2UgYnkgOi13
ZWJraXQtYW55LgogICAgIC8vIEZJWE1FOiBzaG91bGQgd2Ugc3VwcG9ydCBnZW5lcmljIHNlbGVj
dG9ycyBoZXJlIG9yIGp1c3Qgc2ltcGxlX3NlbGVjdG9ycz8KICAgICAvLyBVc2Ugc2ltcGxlX3Nl
bGVjdG9yX2xpc3QgZm9yIG5vdyB0byBtYXRjaCAtbW96LWFueS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAKaW5kZXggNTA5YzBhYzU1MDA5OTQ2Y2Q3ZjIzZmIyOWMzMDk4NTczZWI3YjEyNS4uMDg4
OTU5ZDUzYmVlYWFiZmUyZTMxZTMwYTEwOGM3NjVlYTcyNDc3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAKQEAgLTEwMDQzLDYgKzEwMDQzLDEwIEBAIGlubGluZSB2b2lkIENTU1BhcnNlcjo6
ZGV0ZWN0RGFzaFRva2VuKGludCBsZW5ndGgpCiAjZW5kaWYKICAgICB9IGVsc2UgaWYgKGxlbmd0
aCA9PSAxMiAmJiBpc0VxdWFsVG9DU1NJZGVudGlmaWVyKG5hbWUgKyAxLCAid2Via2l0LWNhbGMi
KSkKICAgICAgICAgbV90b2tlbiA9IENBTENGVU5DVElPTjsKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKKyAgICBlbHNlIGlmIChsZW5ndGggPT0gMTkgJiYgaXNFcXVhbFRvQ1NTSWRlbnRpZmllcihu
YW1lICsgMSwgIndlYmtpdC1kaXN0cmlidXRlZCIpKQorICAgICAgICBtX3Rva2VuID0gRElTVFJJ
QlVURURGVU5DVElPTjsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4KQEAgLTExMDc0LDI1ICsxMTA3OCw0MCBAQCBRdWFsaWZpZWROYW1lIENTU1BhcnNlcjo6
ZGV0ZXJtaW5lTmFtZUluTmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjbwog
ICAgIHJldHVybiBRdWFsaWZpZWROYW1lKHByZWZpeCwgbG9jYWxOYW1lLCBtX3N0eWxlU2hlZXQt
PmRldGVybWluZU5hbWVzcGFjZShwcmVmaXgpKTsKIH0KIAotdm9pZCBDU1NQYXJzZXI6OnVwZGF0
ZVNwZWNpZmllcnNXaXRoTmFtZXNwYWNlSWZOZWVkZWQoQ1NTUGFyc2VyU2VsZWN0b3IqIHNwZWNp
ZmllcnMpCitDU1NQYXJzZXJTZWxlY3RvciogQ1NTUGFyc2VyOjpyZXdyaXRlU3BlY2lmaWVyc1dp
dGhOYW1lc3BhY2VJZk5lZWRlZChDU1NQYXJzZXJTZWxlY3Rvciogc3BlY2lmaWVycykKIHsKICAg
ICBpZiAobV9kZWZhdWx0TmFtZXNwYWNlICE9IHN0YXJBdG9tIHx8IHNwZWNpZmllcnMtPmlzQ3Vz
dG9tUHNldWRvRWxlbWVudCgpKQotICAgICAgICB1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnRO
YW1lKG51bGxBdG9tLCBzdGFyQXRvbSwgc3BlY2lmaWVycywgLyp0YWdJc0Zvck5hbWVzcGFjZVJ1
bGUqL3RydWUpOworICAgICAgICByZXR1cm4gcmV3cml0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5h
bWUobnVsbEF0b20sIHN0YXJBdG9tLCBzcGVjaWZpZXJzLCAvKnRhZ0lzRm9yTmFtZXNwYWNlUnVs
ZSovdHJ1ZSk7CisgICAgcmV0dXJuIHNwZWNpZmllcnM7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjp1
cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNw
YWNlUHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnROYW1lLCBDU1NQYXJzZXJTZWxl
Y3Rvciogc3BlY2lmaWVycywgYm9vbCB0YWdJc0Zvck5hbWVzcGFjZVJ1bGUpCitDU1NQYXJzZXJT
ZWxlY3RvciogQ1NTUGFyc2VyOjpyZXdyaXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGVt
ZW50TmFtZSwgQ1NTUGFyc2VyU2VsZWN0b3IqIHNwZWNpZmllcnMsIGJvb2wgdGFnSXNGb3JOYW1l
c3BhY2VSdWxlKQogewogICAgIEF0b21pY1N0cmluZyBkZXRlcm1pbmVkTmFtZXNwYWNlID0gbmFt
ZXNwYWNlUHJlZml4ICE9IG51bGxBdG9tICYmIG1fc3R5bGVTaGVldCA/IG1fc3R5bGVTaGVldC0+
ZGV0ZXJtaW5lTmFtZXNwYWNlKG5hbWVzcGFjZVByZWZpeCkgOiBtX2RlZmF1bHROYW1lc3BhY2U7
CiAgICAgUXVhbGlmaWVkTmFtZSB0YWcobmFtZXNwYWNlUHJlZml4LCBlbGVtZW50TmFtZSwgZGV0
ZXJtaW5lZE5hbWVzcGFjZSk7CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBpZiAoc3Bl
Y2lmaWVycy0+aXNEaXN0cmlidXRlZFBzZXVkb0VsZW1lbnQoKSkgeworICAgICAgICBDU1NQYXJz
ZXJTZWxlY3RvciogYXJndW1lbnRTZWxlY3RvciA9IHNwZWNpZmllcnMtPmZ1bmN0aW9uQXJndW1l
bnRTZWxlY3RvcigpOworICAgICAgICBBU1NFUlQoYXJndW1lbnRTZWxlY3Rvcik7CisgICAgICAg
IENTU1BhcnNlclNlbGVjdG9yKiBlbmQgPSBhcmd1bWVudFNlbGVjdG9yOworICAgICAgICB3aGls
ZSAoZW5kLT50YWdIaXN0b3J5KCkpCisgICAgICAgICAgICBlbmQgPSBlbmQtPnRhZ0hpc3Rvcnko
KTsKKyAgICAgICAgT3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBlbGVtZW50TmFtZVNlbGVjdG9y
ID0gYWRvcHRQdHIobmV3IENTU1BhcnNlclNlbGVjdG9yKHRhZykpOworICAgICAgICBlbmQtPnNl
dFRhZ0hpc3RvcnkoZWxlbWVudE5hbWVTZWxlY3Rvci5yZWxlYXNlKCkpOworICAgICAgICBlbmQt
PnNldFJlbGF0aW9uKENTU1NlbGVjdG9yOjpTaGFkb3dEaXN0cmlidXRlZCk7CisgICAgICAgIHJl
dHVybiBhcmd1bWVudFNlbGVjdG9yOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKCFzcGVjaWZp
ZXJzLT5pc0N1c3RvbVBzZXVkb0VsZW1lbnQoKSkgewogICAgICAgICBpZiAodGFnID09IGFueVFO
YW1lKCkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gc3BlY2lmaWVy
czsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgICAgIGlmICghKHNwZWNpZmllcnMtPnBz
ZXVkb1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ3VlKSkKICNlbmRpZgogICAgICAgICAg
ICAgc3BlY2lmaWVycy0+cHJlcGVuZFRhZ1NlbGVjdG9yKHRhZywgdGFnSXNGb3JOYW1lc3BhY2VS
dWxlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gc3BlY2lmaWVyczsKICAgICB9
CiAKICAgICBDU1NQYXJzZXJTZWxlY3RvciogbGFzdFNoYWRvd0Rlc2NlbmRhbnQgPSBzcGVjaWZp
ZXJzOwpAQCAtMTExMDYsNyArMTExMjUsNyBAQCB2b2lkIENTU1BhcnNlcjo6dXBkYXRlU3BlY2lm
aWVyc1dpdGhFbGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVByZQogICAg
IGlmIChsYXN0U2hhZG93RGVzY2VuZGFudC0+dGFnSGlzdG9yeSgpKSB7CiAgICAgICAgIGlmICh0
YWcgIT0gYW55UU5hbWUoKSkKICAgICAgICAgICAgIGxhc3RTaGFkb3dEZXNjZW5kYW50LT50YWdI
aXN0b3J5KCktPnByZXBlbmRUYWdTZWxlY3Rvcih0YWcsIHRhZ0lzRm9yTmFtZXNwYWNlUnVsZSk7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHNwZWNpZmllcnM7CiAgICAgfQogCiAg
ICAgLy8gRm9yIHNoYWRvdy1JRCBwc2V1ZG8tZWxlbWVudHMgdG8gYmUgY29ycmVjdGx5IG1hdGNo
ZWQsIHRoZSBTaGFkb3dEZXNjZW5kYW50IGNvbWJpbmF0b3IgaGFzIHRvIGJlIHVzZWQuCkBAIC0x
MTExNCw5ICsxMTEzMywxMCBAQCB2b2lkIENTU1BhcnNlcjo6dXBkYXRlU3BlY2lmaWVyc1dpdGhF
bGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVByZQogICAgIE93blB0cjxD
U1NQYXJzZXJTZWxlY3Rvcj4gZWxlbWVudE5hbWVTZWxlY3RvciA9IGFkb3B0UHRyKG5ldyBDU1NQ
YXJzZXJTZWxlY3Rvcih0YWcpKTsKICAgICBsYXN0U2hhZG93RGVzY2VuZGFudC0+c2V0VGFnSGlz
dG9yeShlbGVtZW50TmFtZVNlbGVjdG9yLnJlbGVhc2UoKSk7CiAgICAgbGFzdFNoYWRvd0Rlc2Nl
bmRhbnQtPnNldFJlbGF0aW9uKENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50KTsKKyAgICBy
ZXR1cm4gc3BlY2lmaWVyczsKIH0KIAotQ1NTUGFyc2VyU2VsZWN0b3IqIENTU1BhcnNlcjo6dXBk
YXRlU3BlY2lmaWVycyhDU1NQYXJzZXJTZWxlY3Rvciogc3BlY2lmaWVycywgQ1NTUGFyc2VyU2Vs
ZWN0b3IqIG5ld1NwZWNpZmllcikKK0NTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXI6OnJld3Jp
dGVTcGVjaWZpZXJzKENTU1BhcnNlclNlbGVjdG9yKiBzcGVjaWZpZXJzLCBDU1NQYXJzZXJTZWxl
Y3RvciogbmV3U3BlY2lmaWVyKQogewogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAo
bmV3U3BlY2lmaWVyLT5pc0N1c3RvbVBzZXVkb0VsZW1lbnQoKSB8fCBuZXdTcGVjaWZpZXItPnBz
ZXVkb1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ3VlKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmgKaW5kZXggYTI1YmE0YzAyZjAxNzRhZDA1YzlkNDQ3ZjlkMzIxNDIwOWFmZGYyNS4uYzBhMzlj
M2JiMGQ5OTFjNjJhNmZjM2FjYTg2ZDE3MWVjMzNiZWM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
aApAQCAtMzI4LDkgKzMyOCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZE5hbWVzcGFjZShj
b25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiB1cmkpOwogICAg
IFF1YWxpZmllZE5hbWUgZGV0ZXJtaW5lTmFtZUluTmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSk7Ci0gICAgdm9pZCB1cGRh
dGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNl
UHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnROYW1lLCBDU1NQYXJzZXJTZWxlY3Rv
ciosIGJvb2wgaXNOYW1lc3BhY2VQbGFjZWhvbGRlciA9IGZhbHNlKTsKLSAgICB2b2lkIHVwZGF0
ZVNwZWNpZmllcnNXaXRoTmFtZXNwYWNlSWZOZWVkZWQoQ1NTUGFyc2VyU2VsZWN0b3IqKTsKLSAg
ICBDU1NQYXJzZXJTZWxlY3RvciogdXBkYXRlU3BlY2lmaWVycyhDU1NQYXJzZXJTZWxlY3Rvcios
IENTU1BhcnNlclNlbGVjdG9yKik7CisKKyAgICBDU1NQYXJzZXJTZWxlY3RvciogcmV3cml0ZVNw
ZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VQcmVm
aXgsIGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudE5hbWUsIENTU1BhcnNlclNlbGVjdG9yKiwg
Ym9vbCBpc05hbWVzcGFjZVBsYWNlaG9sZGVyID0gZmFsc2UpOworICAgIENTU1BhcnNlclNlbGVj
dG9yKiByZXdyaXRlU3BlY2lmaWVyc1dpdGhOYW1lc3BhY2VJZk5lZWRlZChDU1NQYXJzZXJTZWxl
Y3RvciopOworICAgIENTU1BhcnNlclNlbGVjdG9yKiByZXdyaXRlU3BlY2lmaWVycyhDU1NQYXJz
ZXJTZWxlY3RvciosIENTU1BhcnNlclNlbGVjdG9yKik7CiAKICAgICB2b2lkIGludmFsaWRCbG9j
a0hpdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCmluZGV4IDJkNjMx
YjFmOWY2YTRjODMxY2VkNDQ5NWU5N2JhNGIxMWY3ZGNkZDYuLmYwZTVmM2NmZjU3NmRmYzBkNjNk
YTY2ZGQyNmFlMDVkZmFiODFjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXJWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMu
Y3BwCkBAIC0xNDcsNiArMTQ3LDkgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyVmFs
dWU6OmNyZWF0ZUNTU1ZhbHVlKCkKIAogQ1NTUGFyc2VyU2VsZWN0b3I6OkNTU1BhcnNlclNlbGVj
dG9yKCkKICAgICA6IG1fc2VsZWN0b3IoYWRvcHRQdHIoZmFzdE5ldzxDU1NTZWxlY3Rvcj4oKSkp
CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgLCBtX2Z1bmN0aW9uQXJndW1lbnRTZWxlY3Rv
cigwKQorI2VuZGlmCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXJWYWx1ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAppbmRl
eCAxYjIwNzFkNjNkYjQ4NDAxMWE3NWExOWNiNDFiNTBhZDk5OTAzMjM2Li41OGE3NmU3ZTVjZWM0
ZmEwNGMxODNiMDk3MWE0MzJkOTgyMTU3NzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyVmFsdWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZh
bHVlcy5oCkBAIC0xODYsNiArMTg2LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRvcHRTZWxl
Y3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+JiBzZWxlY3RvclZl
Y3Rvcik7CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBDU1NQYXJzZXJTZWxlY3Rvciog
ZnVuY3Rpb25Bcmd1bWVudFNlbGVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbkFyZ3Vt
ZW50U2VsZWN0b3I7IH0KKyAgICB2b2lkIHNldEZ1bmN0aW9uQXJndW1lbnRTZWxlY3RvcihDU1NQ
YXJzZXJTZWxlY3Rvciogc2VsZWN0b3IpIHsgbV9mdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3IgPSBz
ZWxlY3RvcjsgfQorICAgIGJvb2wgaXNEaXN0cmlidXRlZFBzZXVkb0VsZW1lbnQoKSBjb25zdCB7
IHJldHVybiBtX3NlbGVjdG9yLT5pc0Rpc3RyaWJ1dGVkUHNldWRvRWxlbWVudCgpOyB9CisjZW5k
aWYKKwogICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHBzZXVkb1R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3NlbGVjdG9yLT5wc2V1ZG9UeXBlKCk7IH0KICAgICBib29sIGlzQ3VzdG9tUHNldWRv
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3ItPmlzQ3VzdG9tUHNldWRvRWxlbWVu
dCgpOyB9CiAKQEAgLTIwMSw2ICsyMDcsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE93blB0
cjxDU1NTZWxlY3Rvcj4gbV9zZWxlY3RvcjsKICAgICBPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
IG1fdGFnSGlzdG9yeTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBDU1NQYXJzZXJTZWxl
Y3RvciogbV9mdW5jdGlvbkFyZ3VtZW50U2VsZWN0b3I7CisjZW5kaWYKIH07CiAKIGlubGluZSBi
b29sIENTU1BhcnNlclNlbGVjdG9yOjpoYXNTaGFkb3dEZXNjZW5kYW50KCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCmluZGV4IDJlMzQ5M2Y4ZmE4NzM3OGIyYzhjMzZlMjQ4ZmYw
ZjIyNTliYTI1NTYuLmJjZGMwOWUwMmJiNGZiNzZiOGUzMzlhYzExNDI3YjMwNWUwYTY1NTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcApAQCAtMjQzLDYgKzI0Myw5IEBAIFBzZXVkb0lk
IENTU1NlbGVjdG9yOjpwc2V1ZG9JZChQc2V1ZG9UeXBlIHR5cGUpCiAjaWYgRU5BQkxFKElGUkFN
RV9TRUFNTEVTUykKICAgICBjYXNlIFBzZXVkb1NlYW1sZXNzRG9jdW1lbnQ6CiAjZW5kaWYKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBjYXNlIFBzZXVkb0Rpc3RyaWJ1dGVkOgorI2VuZGlm
CiAgICAgICAgIHJldHVybiBOT1BTRVVETzsKICAgICBjYXNlIFBzZXVkb05vdFBhcnNlZDoKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0zMzMsNiArMzM2LDkgQEAgc3RhdGljIEhh
c2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlPiogbmFtZVRv
UHNldWRvVHlwZU1hcCgKICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQogICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzZWFtbGVzc0RvY3VtZW50LCAoIi13ZWJraXQtc2Vh
bWxlc3MtZG9jdW1lbnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgZGlzdHJpYnV0ZWQsICgiLXdlYmtpdC1kaXN0cmlidXRlZCgiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisjZW5kaWYKICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgaW5SYW5nZSwgKCJpbi1yYW5nZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgb3V0T2ZSYW5nZSwgKCJvdXQtb2YtcmFuZ2UiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CiAKQEAgLTQxNiw2ICs0MjIsOSBAQCBzdGF0aWMgSGFzaE1hcDxBdG9t
aWNTdHJpbmdJbXBsKiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGU+KiBuYW1lVG9Qc2V1ZG9UeXBl
TWFwKAogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCiAgICAgICAgIG5hbWVUb1BzZXVkb1R5
cGUtPnNldChzZWFtbGVzc0RvY3VtZW50LmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb1NlYW1s
ZXNzRG9jdW1lbnQpOwogI2VuZGlmCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgIG5h
bWVUb1BzZXVkb1R5cGUtPnNldChkaXN0cmlidXRlZC5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1
ZG9EaXN0cmlidXRlZCk7CisjZW5kaWYKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGlu
UmFuZ2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvSW5SYW5nZSk7CiAgICAgICAgIG5hbWVU
b1BzZXVkb1R5cGUtPnNldChvdXRPZlJhbmdlLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb091
dE9mUmFuZ2UpOwogICAgIH0KQEAgLTQ2Niw2ICs0NzUsOSBAQCB2b2lkIENTU1NlbGVjdG9yOjpl
eHRyYWN0UHNldWRvVHlwZSgpIGNvbnN0CiAgICAgY2FzZSBQc2V1ZG9GaXJzdExldHRlcjoKICAg
ICBjYXNlIFBzZXVkb0ZpcnN0TGluZToKICAgICAgICAgY29tcGF0ID0gdHJ1ZTsKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKKyAgICBjYXNlIFBzZXVkb0Rpc3RyaWJ1dGVkOgorI2VuZGlmCiAgICAg
Y2FzZSBQc2V1ZG9SZXNpemVyOgogICAgIGNhc2UgUHNldWRvU2Nyb2xsYmFyOgogICAgIGNhc2Ug
UHNldWRvU2Nyb2xsYmFyQ29ybmVyOgpAQCAtNzA3LDYgKzcxOSwxMCBAQCBTdHJpbmcgQ1NTU2Vs
ZWN0b3I6OnNlbGVjdG9yVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2hhZG93RGVzY2VuZGFudDoKICAgICAg
ICAgICAgIHJldHVybiB0YWdIaXN0b3J5VGV4dCArIHN0ci50b1N0cmluZygpOworI2lmIEVOQUJM
RShTSEFET1dfRE9NKQorICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEaXN0cmlidXRl
ZDoKKyAgICAgICAgICAgIHJldHVybiB0YWdIaXN0b3J5VGV4dCArICI6Oi13ZWJraXQtZGlzdHJp
YnV0ZWQoIiArIHN0ci50b1N0cmluZygpICsgIikiOworI2VuZGlmCiAgICAgICAgIH0KICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKaW5kZXggNWJjNjMyNzMxNDM2NzMxNjAxYzE3N2Zm
ZDRkODAxZmMyZWY5MDIxZS4uNzUwNzhjMTY3MDRhNGYzOWEwZDhjZDhlYWQ1NTM5NTk4MGNiZThk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTc3LDcgKzc3LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERpcmVjdEFkamFjZW50LAogICAgICAgICAgICAgSW5k
aXJlY3RBZGphY2VudCwKICAgICAgICAgICAgIFN1YlNlbGVjdG9yLAotICAgICAgICAgICAgU2hh
ZG93RGVzY2VuZGFudAorICAgICAgICAgICAgU2hhZG93RGVzY2VuZGFudCwKKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKKyAgICAgICAgICAgIFNoYWRvd0Rpc3RyaWJ1dGVkCisjZW5kaWYKICAgICAg
ICAgfTsKIAogICAgICAgICBlbnVtIFBzZXVkb1R5cGUgewpAQCAtMTYzLDcgKzE2NiwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBQc2V1ZG9QYXN0Q3VlLAogI2VuZGlmCiAj
aWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKLSAgICAgICAgICAgIFBzZXVkb1NlYW1sZXNzRG9j
dW1lbnQKKyAgICAgICAgICAgIFBzZXVkb1NlYW1sZXNzRG9jdW1lbnQsCisjZW5kaWYKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgICAgIFBzZXVkb0Rpc3RyaWJ1dGVkCiAjZW5kaWYK
ICAgICAgICAgfTsKIApAQCAtMjIwLDYgKzIyNiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGJvb2wgaXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkgY29uc3Q7CiAgICAgICAgIGJvb2wg
aXNTaWJsaW5nU2VsZWN0b3IoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc0F0dHJpYnV0ZVNlbGVj
dG9yKCkgY29uc3Q7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgIGJvb2wgaXNEaXN0
cmlidXRlZFBzZXVkb0VsZW1lbnQoKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc1NoYWRvd0Rpc3Ry
aWJ1dGVkKCkgY29uc3Q7CisjZW5kaWYKIAogICAgICAgICBSZWxhdGlvbiByZWxhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlbGF0aW9uPihtX3JlbGF0aW9uKTsgfQogCkBAIC0z
MzIsNiArMzQyLDE4IEBAIGlubGluZSBib29sIENTU1NlbGVjdG9yOjppc0F0dHJpYnV0ZVNlbGVj
dG9yKCkgY29uc3QKICAgICAgICAgfHwgbV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6RW5kOwogfQog
CisjaWYgRU5BQkxFKFNIQURPV19ET00pCitpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6aXNEaXN0
cmlidXRlZFBzZXVkb0VsZW1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX21hdGNoID09IFBz
ZXVkb0VsZW1lbnQgJiYgcHNldWRvVHlwZSgpID09IFBzZXVkb0Rpc3RyaWJ1dGVkOworfQorCitp
bmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6aXNTaGFkb3dEaXN0cmlidXRlZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6OlNoYWRvd0Rpc3RyaWJ1dGVkOwor
fQorI2VuZGlmCisKIGlubGluZSB2b2lkIENTU1NlbGVjdG9yOjpzZXRWYWx1ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQogewogICAgIEFTU0VSVChtX21hdGNoICE9IFRhZyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCmluZGV4IGRmYWIwMzYyMTI5ZTMyNWJhNTRjODEz
MzY2YWVhMmYyZmJlN2Y5MzMuLjdlOGUxOTBkY2M3MGRmYWQ4NGQxZTZmZTYwYTI4NDE5MDk3Mjcx
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCkBAIC0yMTEsNiArMjEx
LDIwIEBAIGJvb2wgQ1NTU2VsZWN0b3JMaXN0OjpoYXNJbnZhbGlkU2VsZWN0b3IoKSBjb25zdAog
ICAgIHJldHVybiBmb3JFYWNoU2VsZWN0b3IoZnVuY3RvciwgdGhpcyk7CiB9CiAKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKK2NsYXNzIFNlbGVjdG9ySGFzU2hhZG93RGlzdHJpYnV0ZWQgeworcHVi
bGljOgorICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCisg
ICAgeworICAgICAgICByZXR1cm4gc2VsZWN0b3ItPmlzU2hhZG93RGlzdHJpYnV0ZWQoKTsKKyAg
ICB9Cit9OwogCitib29sIENTU1NlbGVjdG9yTGlzdDo6aGFzU2hhZG93RGlzdHJpYnV0ZWRBdChz
aXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgU2VsZWN0b3JIYXNTaGFkb3dEaXN0cmlidXRlZCBm
dW5jdG9yOworICAgIHJldHVybiBmb3JFYWNoVGFnU2VsZWN0b3IoZnVuY3Rvciwgc2VsZWN0b3JB
dChpbmRleCkpOworfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvckxpc3QuaAppbmRleCBlNGY5MGRiODg5YTcyNjJiMjBiMTlhZThhMGU1
MTlkMzk0NDE5ZWVjLi41MTA0ZWRiNTFjMTM1Mjg3ZTdhZTNhMzVjNTA0MGEzOGJhNzE3YjlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCkBAIC02MSw2ICs2MSwxMCBAQCBwdWJs
aWM6CiAgICAgYm9vbCBzZWxlY3RvcnNOZWVkTmFtZXNwYWNlUmVzb2x1dGlvbigpOwogICAgIGJv
b2wgaGFzSW52YWxpZFNlbGVjdG9yKCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
KyAgICBib29sIGhhc1NoYWRvd0Rpc3RyaWJ1dGVkQXQoc2l6ZV90IGluZGV4KSBjb25zdDsKKyNl
bmRpZgorCiAgICAgU3RyaW5nIHNlbGVjdG9yc1RleHQoKSBjb25zdDsKIAogICAgIHZvaWQgcmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0RvY3VtZW50UnVsZVNldHMuY3BwCmluZGV4IDQwNTk3Y2I1N2Q3MDMxNDg4ODk1YTk5YjJhNTQ0
OTY0NTBmYjE2YmYuLjIzMDA5ZWRmYmFhMTIyODljMGExNzQwNGZiMTc5ZmYwZWY1OTcyNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAKQEAgLTM4LDYgKzM4LDI1IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQordm9pZCBT
aGFkb3dEaXN0cmlidXRlZFJ1bGVzOjphZGRSdWxlKFN0eWxlUnVsZSogcnVsZSwgc2l6ZV90IHNl
bGVjdG9ySW5kZXgsIENvbnRhaW5lck5vZGUqIHNjb3BlLCBBZGRSdWxlRmxhZ3MgYWRkUnVsZUZs
YWdzKQoreworICAgIGlmIChtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5jb250YWlucyhz
Y29wZSkpCisgICAgICAgIG1fc2hhZG93RGlzdHJpYnV0ZWRSdWxlU2V0TWFwLmdldChzY29wZSkt
PmFkZFJ1bGUocnVsZSwgc2VsZWN0b3JJbmRleCwgYWRkUnVsZUZsYWdzKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgT3duUHRyPFJ1bGVTZXQ+IHJ1bGVTZXRGb3JTY29wZSA9IGFkb3B0UHRyKG5ldyBS
dWxlU2V0KCkpOworICAgICAgICBydWxlU2V0Rm9yU2NvcGUtPmFkZFJ1bGUocnVsZSwgc2VsZWN0
b3JJbmRleCwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAgbV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVT
ZXRNYXAuYWRkKHNjb3BlLCBydWxlU2V0Rm9yU2NvcGUucmVsZWFzZSgpKTsKKyAgICB9Cit9CisK
K3ZvaWQgU2hhZG93RGlzdHJpYnV0ZWRSdWxlczo6Y29sbGVjdE1hdGNoUmVxdWVzdHMoYm9vbCBp
bmNsdWRlRW1wdHlSdWxlcywgVmVjdG9yPE1hdGNoUmVxdWVzdD4mIG1hdGNoUmVxdWVzdHMpCit7
CisgICAgZm9yIChTaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9z
aGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAuYmVnaW4oKTsgaXQgIT0gbV9zaGFkb3dEaXN0cmli
dXRlZFJ1bGVTZXRNYXAuZW5kKCk7ICsraXQpCisgICAgICAgIG1hdGNoUmVxdWVzdHMuYXBwZW5k
KE1hdGNoUmVxdWVzdChpdC0+dmFsdWUuZ2V0KCksIGluY2x1ZGVFbXB0eVJ1bGVzLCBpdC0+a2V5
LCBTZWxlY3RvckNoZWNrZXI6OkNyb3NzZXNCb3VuZGFyeSkpOworfQorI2VuZGlmCisKIERvY3Vt
ZW50UnVsZVNldHM6OkRvY3VtZW50UnVsZVNldHMoKQogewogfQpAQCAtODEsNiArMTAwLDkgQEAg
dm9pZCBEb2N1bWVudFJ1bGVTZXRzOjpyZXNldEF1dGhvclN0eWxlKCkKIHsKICAgICBtX2F1dGhv
clN0eWxlID0gUnVsZVNldDo6Y3JlYXRlKCk7CiAgICAgbV9hdXRob3JTdHlsZS0+ZGlzYWJsZUF1
dG9TaHJpbmtUb0ZpdCgpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIG1fc2hhZG93RGlz
dHJpYnV0ZWRSdWxlcy5jbGVhcigpOworI2VuZGlmCiB9CiAKIHZvaWQgRG9jdW1lbnRSdWxlU2V0
czo6YXBwZW5kQXV0aG9yU3R5bGVTaGVldHModW5zaWduZWQgZmlyc3ROZXcsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgc3R5bGVTaGVldHMsIE1lZGlhUXVlcnlFdmFsdWF0
b3IqIG1lZGl1bSwgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyYgaW5zcGVjdG9yQ1NTT01XcmFwcGVy
cywgYm9vbCBpc1ZpZXdTb3VyY2UsIFN0eWxlUmVzb2x2ZXIqIHJlc29sdmVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmgKaW5kZXggNDZhNTBmYzQ1Mzk4YzlkM2RjNTU3MmJmOGNk
OWJlZDhjZmM5ODM2Yi4uMTNjNGVlNTg2ZWE5Yjg2ZjFjYTQ5ZTU1N2NlYmQzYzkxOTU5OTc5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5oCkBAIC0yNCw2ICsyNCw3IEBACiAj
ZGVmaW5lIERvY3VtZW50UnVsZVNldHNfaAogCiAjaW5jbHVkZSAiUnVsZUZlYXR1cmUuaCIKKyNp
bmNsdWRlICJSdWxlU2V0LmgiCiAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgpAQCAtMzUsMTEgKzM2LDIzIEBAIGNsYXNzIENTU1N0eWxlUnVsZTsKIGNs
YXNzIENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOwog
Y2xhc3MgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczsKK2NsYXNzIE1hdGNoUmVxdWVzdDsKIGNsYXNz
IE1lZGlhUXVlcnlFdmFsdWF0b3I7CiBjbGFzcyBSdWxlU2V0OwotY2xhc3MgU3R5bGVSZXNvbHZl
cjsKIGNsYXNzIFN0eWxlU2NvcGVSZXNvbHZlcjsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQor
Y2xhc3MgU2hhZG93RGlzdHJpYnV0ZWRSdWxlcyB7CitwdWJsaWM6CisgICAgdm9pZCBhZGRSdWxl
KFN0eWxlUnVsZSosIHNpemVfdCBzZWxlY3RvckluZGV4LCBDb250YWluZXJOb2RlKiBzY29wZSwg
QWRkUnVsZUZsYWdzKTsKKyAgICB2b2lkIGNvbGxlY3RNYXRjaFJlcXVlc3RzKGJvb2wgaW5jbHVk
ZUVtcHR5UnVsZXMsIFZlY3RvcjxNYXRjaFJlcXVlc3Q+Jik7CisgICAgdm9pZCBjbGVhcigpIHsg
bV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXAuY2xlYXIoKTsgfQorcHJpdmF0ZToKKyAgICB0
eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ29udGFpbmVyTm9kZSosIE93blB0cjxSdWxlU2V0PiA+IFNo
YWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcDsKKyAgICBTaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRN
YXAgbV9zaGFkb3dEaXN0cmlidXRlZFJ1bGVTZXRNYXA7Cit9OworI2VuZGlmCisKIGNsYXNzIERv
Y3VtZW50UnVsZVNldHMgewogcHVibGljOgogICAgIERvY3VtZW50UnVsZVNldHMoKTsKQEAgLTU3
LDYgKzcwLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb2xsZWN0RmVhdHVyZXMoYm9vbCBpc1Zp
ZXdTb3VyY2UsIFN0eWxlU2NvcGVSZXNvbHZlciopOwogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAg
IFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXMmIHNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXMoKSB7IHJldHVy
biBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZXM7IH0KKyNlbmRpZgogCiBwcml2YXRlOgogICAgIHZv
aWQgY29sbGVjdFJ1bGVzRnJvbVVzZXJTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENT
U1N0eWxlU2hlZXQ+ID4mLCBSdWxlU2V0JiB1c2VyU3R5bGUsIGNvbnN0IE1lZGlhUXVlcnlFdmFs
dWF0b3ImLCBTdHlsZVJlc29sdmVyJik7CkBAIC02NSw2ICs4MSw5IEBAIHByaXZhdGU6CiAgICAg
UnVsZUZlYXR1cmVTZXQgbV9mZWF0dXJlczsKICAgICBPd25QdHI8UnVsZVNldD4gbV9zaWJsaW5n
UnVsZVNldDsKICAgICBPd25QdHI8UnVsZVNldD4gbV91bmNvbW1vbkF0dHJpYnV0ZVJ1bGVTZXQ7
CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgU2hhZG93RGlzdHJpYnV0ZWRSdWxlcyBtX3No
YWRvd0Rpc3RyaWJ1dGVkUnVsZXM7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAppbmRleCA2MjY3OTAzODkzNDNhY2ZmZGJlYTljYTc3ZDFk
ZTk5ZGRjODRiMzA1Li5mODZiMDE4YjNjYjMxNTgwOGI3NDhiM2RkYWJmMGUyYTQ3NjU4MjE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1J1bGVTZXQuY3BwCkBAIC0zMDcsOSArMzA3LDI1IEBAIHZvaWQgUnVsZVNldDo6
YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+ID4mIHJ1bGVz
LCBjb25zdCBNCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJ1bGVzLnNpemUoKTsgKytp
KSB7CiAgICAgICAgIFN0eWxlUnVsZUJhc2UqIHJ1bGUgPSBydWxlc1tpXS5nZXQoKTsKIAotICAg
ICAgICBpZiAocnVsZS0+aXNTdHlsZVJ1bGUoKSkKLSAgICAgICAgICAgIGFkZFN0eWxlUnVsZShz
dGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihydWxlKSwgYWRkUnVsZUZsYWdzKTsKLSAgICAgICAgZWxz
ZSBpZiAocnVsZS0+aXNQYWdlUnVsZSgpKQorICAgICAgICBpZiAocnVsZS0+aXNTdHlsZVJ1bGUo
KSkgeworICAgICAgICAgICAgU3R5bGVSdWxlKiBzdHlsZVJ1bGUgPSBzdGF0aWNfY2FzdDxTdHls
ZVJ1bGUqPihydWxlKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgICAgIGlmICgh
c2NvcGUpCisgICAgICAgICAgICAgICAgYWRkU3R5bGVSdWxlKHN0eWxlUnVsZSwgYWRkUnVsZUZs
YWdzKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGNvbnN0IENTU1NlbGVj
dG9yTGlzdCYgc2VsZWN0b3JMaXN0ID0gc3R5bGVSdWxlLT5zZWxlY3Rvckxpc3QoKTsKKyAgICAg
ICAgICAgICAgICBmb3IgKHNpemVfdCBzZWxlY3RvckluZGV4ID0gMDsgc2VsZWN0b3JJbmRleCAh
PSBub3RGb3VuZDsgc2VsZWN0b3JJbmRleCA9IHNlbGVjdG9yTGlzdC5pbmRleE9mTmV4dFNlbGVj
dG9yQWZ0ZXIoc2VsZWN0b3JJbmRleCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVj
dG9yTGlzdC5oYXNTaGFkb3dEaXN0cmlidXRlZEF0KHNlbGVjdG9ySW5kZXgpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZXItPnJ1bGVTZXRzKCkuc2hhZG93RGlzdHJpYnV0ZWRSdWxl
cygpLmFkZFJ1bGUoc3R5bGVSdWxlLCBzZWxlY3RvckluZGV4LCBjb25zdF9jYXN0PENvbnRhaW5l
ck5vZGUqPihzY29wZSksIGFkZFJ1bGVGbGFncyk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFJ1bGUoc3R5bGVSdWxlLCBzZWxlY3RvckluZGV4
LCBhZGRSdWxlRmxhZ3MpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyNlbHNl
CisgICAgICAgICAgICBhZGRTdHlsZVJ1bGUoc3R5bGVSdWxlLCBhZGRSdWxlRmxhZ3MpOworI2Vu
ZGlmCisKKyAgICAgICAgfSBlbHNlIGlmIChydWxlLT5pc1BhZ2VSdWxlKCkpCiAgICAgICAgICAg
ICBhZGRQYWdlUnVsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGVQYWdlKj4ocnVsZSkpOwogICAgICAg
ICBlbHNlIGlmIChydWxlLT5pc01lZGlhUnVsZSgpKSB7CiAgICAgICAgICAgICBTdHlsZVJ1bGVN
ZWRpYSogbWVkaWFSdWxlID0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxlTWVkaWEqPihydWxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggZDIyNjNlZmUzNDY1MDg2YjNi
MzcwZTY1ZmZmNGVkN2I5NGU5ZGI5Mi4uYjk3YmRlMGNlZTFiNzljODlkNDYwYzQ4OTE0ZTJkY2U2
Y2FiOTFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTQxLDYg
KzQxLDcgQEAKICNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxQ
cm9ncmVzc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSW5zZXJ0aW9uUG9pbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0y
ODEsOCArMjgyLDEzIEBAIFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpt
YXRjaChjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29uCiAKICAgICAvLyBQcmVwYXJl
IG5leHQgc2VsZWN0b3IKICAgICBjb25zdCBDU1NTZWxlY3RvciogaGlzdG9yeVNlbGVjdG9yID0g
Y29udGV4dC5zZWxlY3Rvci0+dGFnSGlzdG9yeSgpOwotICAgIGlmICghaGlzdG9yeVNlbGVjdG9y
KQorICAgIGlmICghaGlzdG9yeVNlbGVjdG9yKSB7CisgICAgICAgIGlmIChjb250ZXh0LmJlaGF2
aW9yQXRCb3VuZGFyeSA9PSBDcm9zc2VzQm91bmRhcnkpIHsKKyAgICAgICAgICAgIEFTU0VSVChj
b250ZXh0LnNjb3BlKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnNjb3BlLT5jb250YWlu
cyhjb250ZXh0LmVsZW1lbnQpID8gU2VsZWN0b3JNYXRjaGVzIDogU2VsZWN0b3JGYWlsc0xvY2Fs
bHk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFNlbGVjdG9yTWF0Y2hlczsKKyAgICB9CiAK
ICAgICBTZWxlY3RvckNoZWNraW5nQ29udGV4dCBuZXh0Q29udGV4dChjb250ZXh0KTsKICAgICBu
ZXh0Q29udGV4dC5zZWxlY3RvciA9IGhpc3RvcnlTZWxlY3RvcjsKQEAgLTM3OSw2ICszODUsMjQg
QEAgU2VsZWN0b3JDaGVja2VyOjpNYXRjaCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoKGNvbnN0IFNl
bGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb24KICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1l
bnRTdHlsZSA9IDA7CiAgICAgICAgICAgICByZXR1cm4gbWF0Y2gobmV4dENvbnRleHQsIGlnbm9y
ZUR5bmFtaWNQc2V1ZG8sIHNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneSk7CiAgICAgICAgIH0KKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEaXN0cmli
dXRlZDoKKyAgICAgICAgeworICAgICAgICAgICAgVmVjdG9yPEluc2VydGlvblBvaW50KiwgOD4g
aW5zZXJ0aW9uUG9pbnRzOworICAgICAgICAgICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0gY29u
dGV4dC5lbGVtZW50OyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgp
KSB7CisgICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnRzLmNsZWFyKCk7CisgICAgICAgICAg
ICAgICAgY29sbGVjdEluc2VydGlvblBvaW50c1doZXJlTm9kZUlzRGlzdHJpYnV0ZWQoZWxlbWVu
dCwgaW5zZXJ0aW9uUG9pbnRzKTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGluc2VydGlvblBvaW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBu
ZXh0Q29udGV4dC5lbGVtZW50ID0gaW5zZXJ0aW9uUG9pbnRzW2ldOworICAgICAgICAgICAgICAg
ICAgICBuZXh0Q29udGV4dC5pc1N1YlNlbGVjdG9yID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
ICAgIG5leHRDb250ZXh0LmVsZW1lbnRTdHlsZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIGlm
IChtYXRjaChuZXh0Q29udGV4dCwgaWdub3JlRHluYW1pY1BzZXVkbywgc2libGluZ1RyYXZlcnNh
bFN0cmF0ZWd5KSA9PSBTZWxlY3Rvck1hdGNoZXMpCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gU2VsZWN0b3JNYXRjaGVzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKKyAgICAgICAgfQor
I2VuZGlmCiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmgKaW5kZXggYjYxOWNkNTBkODljNGMwYjBiZDEwNTRkODZjNTRlNDM5
MDU1NjEzMi4uNzJlZTQ3NThiMTNiOTgwZTEwNmY5ZmNmMjQ3NTI0ZGVkMjY4YmU4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaApAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAg
ICAgZW51bSBWaXNpdGVkTWF0Y2hUeXBlIHsgVmlzaXRlZE1hdGNoRGlzYWJsZWQsIFZpc2l0ZWRN
YXRjaEVuYWJsZWQgfTsKICAgICBlbnVtIE1vZGUgeyBSZXNvbHZpbmdTdHlsZSA9IDAsIENvbGxl
Y3RpbmdSdWxlcywgUXVlcnlpbmdSdWxlcywgU2hhcmluZ1J1bGVzIH07CiAgICAgZXhwbGljaXQg
U2VsZWN0b3JDaGVja2VyKERvY3VtZW50KiwgTW9kZSk7CisgICAgZW51bSBCZWhhdmlvckF0Qm91
bmRhcnkgeyBEb2VzTm90Q3Jvc3NCb3VuZGFyeSwgQ3Jvc3Nlc0JvdW5kYXJ5IH07CiAKICAgICBz
dHJ1Y3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQgewogICAgICAgICAvLyBJbml0aWFsIHNlbGVj
dG9yIGNvbnN0cnVjdG9yCkBAIC02MSw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICwg
aXNTdWJTZWxlY3RvcihmYWxzZSkKICAgICAgICAgICAgICwgaGFzU2Nyb2xsYmFyUHNldWRvKGZh
bHNlKQogICAgICAgICAgICAgLCBoYXNTZWxlY3Rpb25Qc2V1ZG8oZmFsc2UpCisgICAgICAgICAg
ICAsIGJlaGF2aW9yQXRCb3VuZGFyeShEb2VzTm90Q3Jvc3NCb3VuZGFyeSkKICAgICAgICAgeyB9
CiAKICAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yOwpAQCAtNzIsNiArNzQsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXNTdWJTZWxlY3RvcjsKICAgICAgICAgYm9vbCBoYXNT
Y3JvbGxiYXJQc2V1ZG87CiAgICAgICAgIGJvb2wgaGFzU2VsZWN0aW9uUHNldWRvOworICAgICAg
ICBCZWhhdmlvckF0Qm91bmRhcnkgYmVoYXZpb3JBdEJvdW5kYXJ5OwogICAgIH07CiAKICAgICBi
b29sIG1hdGNoZXMoY29uc3QgQ1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgYm9vbCBpc0Zhc3RDaGVj
a2FibGVTZWxlY3RvciA9IGZhbHNlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TZWxlY3RvckZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0
ZXIuY3BwCmluZGV4IGVhZjg4NjljNDY4OGUxZjU5ZjlhYjQ5NzI5NWYzYmU5NTA5NmZiZTguLjFj
NzY1MjliNDM5YjkzNmVjNmM4MmFlMGU0MDBhMjNhNjJlYzY2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1NlbGVjdG9yRmlsdGVyLmNwcApAQCAtMTQ3LDYgKzE0Nyw5IEBAIHZvaWQgU2VsZWN0b3JGaWx0
ZXI6OmNvbGxlY3RJZGVudGlmaWVySGFzaGVzKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3Rvciwg
dW5zaWduCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50OgogICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpJbmRpcmVjdEFkamFjZW50OgogICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50OgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEaXN0cmlidXRlZDoKKyNlbmRpZgogICAgICAgICAg
ICAgc2tpcE92ZXJTdWJzZWxlY3RvcnMgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKaW5kZXggNTM3NTJmNTNmYzgzMTEwNWVmM2VkMTRlYjlhNjdlMmNhNzE5NjY4Yy4u
ZWRmNTMzY2RjOGI3MDU2YzBmZDA3YThjNWVkYzVjYzg1ZjkwMGI3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNDc4LDcgKzQ3OCw4IEBAIHZvaWQgU3R5bGVSZXNvbHZl
cjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3Qs
IFJ1bGVSCiAgICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUgPSBlbGVtZW50LT50cmVlU2NvcGUoKTsK
ICAgICBpZiAoIU1hdGNoaW5nVUFSdWxlc1Njb3BlOjppc01hdGNoaW5nVUFSdWxlcygpCiAgICAg
ICAgICYmICF0cmVlU2NvcGUtPmFwcGx5QXV0aG9yU3R5bGVzKCkKLSAgICAgICAgJiYgKCFtYXRj
aFJlcXVlc3Quc2NvcGUgfHwgbWF0Y2hSZXF1ZXN0LnNjb3BlLT50cmVlU2NvcGUoKSAhPSB0cmVl
U2NvcGUpKQorICAgICAgICAmJiAoIW1hdGNoUmVxdWVzdC5zY29wZSB8fCBtYXRjaFJlcXVlc3Qu
c2NvcGUtPnRyZWVTY29wZSgpICE9IHRyZWVTY29wZSkKKyAgICAgICAgJiYgbWF0Y2hSZXF1ZXN0
LmJlaGF2aW9yQXRCb3VuZGFyeSA9PSBTZWxlY3RvckNoZWNrZXI6OkRvZXNOb3RDcm9zc0JvdW5k
YXJ5KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBuZWVkIHRvIGNvbGxlY3QgdGhlIHJ1
bGVzIGZvciBpZCwgY2xhc3MsIHRhZywgYW5kIGV2ZXJ5dGhpbmcgZWxzZSBpbnRvIGEgYnVmZmVy
IGFuZApAQCAtNjIzLDYgKzYyNCwxMyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoQXV0aG9y
UnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcwogICAgIFJ1
bGVSYW5nZSBydWxlUmFuZ2UgPSByZXN1bHQucmFuZ2VzLmF1dGhvclJ1bGVSYW5nZSgpOwogICAg
IGNvbGxlY3RNYXRjaGluZ1J1bGVzKG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKICAgICBjb2xs
ZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CisjaWYg
RU5BQkxFKFNIQURPV19ET00pCisgICAgVmVjdG9yPE1hdGNoUmVxdWVzdD4gbWF0Y2hSZXF1ZXN0
czsKKyAgICBtX3J1bGVTZXRzLnNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXMoKS5jb2xsZWN0TWF0Y2hS
ZXF1ZXN0cyhpbmNsdWRlRW1wdHlSdWxlcywgbWF0Y2hSZXF1ZXN0cyk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtYXRjaFJlcXVlc3RzLnNpemUoKTsgKytpKQorICAgICAgICBjb2xsZWN0
TWF0Y2hpbmdSdWxlcyhtYXRjaFJlcXVlc3RzW2ldLCBydWxlUmFuZ2UpOworI2VuZGlmCisKICAg
ICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMocmVzdWx0KTsKIAogICAgIG1hdGNoU2NvcGVk
QXV0aG9yUnVsZXMocmVzdWx0LCBpbmNsdWRlRW1wdHlSdWxlcyk7CkBAIC02NjMsNyArNjcxLDcg
QEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3Qg
VmVjdG9yPFJ1bGVEYXRhPiogcnVsZXMsIGMKICAgICBTdGF0ZSYgc3RhdGUgPSBtX3N0YXRlOwog
ICAgIC8vIEluIHNvbWUgY2FzZXMgd2UgbWF5IGVuZCB1cCBsb29raW5nIHVwIHN0eWxlIGZvciBy
YW5kb20gZWxlbWVudHMgaW4gdGhlIG1pZGRsZSBvZiBhIHJlY3Vyc2l2ZSB0cmVlIHJlc29sdmUu
CiAgICAgLy8gQW5jZXN0b3IgaWRlbnRpZmllciBmaWx0ZXIgd29uJ3QgYmUgdXAtdG8tZGF0ZSBp
biB0aGF0IGNhc2UgYW5kIHdlIGNhbid0IHVzZSB0aGUgZmFzdCBwYXRoLgotICAgIGJvb2wgY2Fu
VXNlRmFzdFJlamVjdCA9IG1fc2VsZWN0b3JGaWx0ZXIucGFyZW50U3RhY2tJc0NvbnNpc3RlbnQo
c3RhdGUucGFyZW50Tm9kZSgpKTsKKyAgICBib29sIGNhblVzZUZhc3RSZWplY3QgPSBtX3NlbGVj
dG9yRmlsdGVyLnBhcmVudFN0YWNrSXNDb25zaXN0ZW50KHN0YXRlLnBhcmVudE5vZGUoKSkgJiYg
bWF0Y2hSZXF1ZXN0LmJlaGF2aW9yQXRCb3VuZGFyeSA9PSBTZWxlY3RvckNoZWNrZXI6OkRvZXNO
b3RDcm9zc0JvdW5kYXJ5OwogCiAgICAgdW5zaWduZWQgc2l6ZSA9IHJ1bGVzLT5zaXplKCk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewpAQCAtNjc0LDcgKzY4Miw3
IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0
IFZlY3RvcjxSdWxlRGF0YT4qIHJ1bGVzLCBjCiAgICAgICAgIFN0eWxlUnVsZSogcnVsZSA9IHJ1
bGVEYXRhLnJ1bGUoKTsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNv
b2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1hdGNoUnVsZShkb2N1bWVudCgp
LCBydWxlLCB0aGlzKTsKICAgICAgICAgUHNldWRvSWQgZHluYW1pY1BzZXVkbyA9IE5PUFNFVURP
OwotICAgICAgICBpZiAocnVsZU1hdGNoZXMocnVsZURhdGEsIG1hdGNoUmVxdWVzdC5zY29wZSwg
ZHluYW1pY1BzZXVkbykpIHsKKyAgICAgICAgaWYgKHJ1bGVNYXRjaGVzKHJ1bGVEYXRhLCBtYXRj
aFJlcXVlc3Quc2NvcGUsIGR5bmFtaWNQc2V1ZG8sIG1hdGNoUmVxdWVzdC5iZWhhdmlvckF0Qm91
bmRhcnkpKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUgcnVsZSBoYXMgbm8gcHJvcGVydGllcyB0
byBhcHBseSwgdGhlbiBpZ25vcmUgaXQgaW4gdGhlIG5vbi1kZWJ1ZyBtb2RlLgogICAgICAgICAg
ICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcyA9IHJ1bGUtPnByb3BlcnRpZXMo
KTsKICAgICAgICAgICAgIGlmICghcHJvcGVydGllcyB8fCAocHJvcGVydGllcy0+aXNFbXB0eSgp
ICYmICFtYXRjaFJlcXVlc3QuaW5jbHVkZUVtcHR5UnVsZXMpKSB7CkBAIC0yMDc1LDcgKzIwODMs
NyBAQCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBTdHlsZVJlc29sdmVyOjpwc2V1ZG9TdHlsZVJ1
bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCBQcwogICAgIHJldHVybiBtX3N0YXRlLnRha2VSdWxl
TGlzdCgpOwogfQogCi1pbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpydWxlTWF0Y2hlcyhjb25z
dCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlLCBQc2V1ZG9J
ZCYgZHluYW1pY1BzZXVkbykKK2lubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6OnJ1bGVNYXRjaGVz
KGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUsIFBz
ZXVkb0lkJiBkeW5hbWljUHNldWRvLCBTZWxlY3RvckNoZWNrZXI6OkJlaGF2aW9yQXRCb3VuZGFy
eSBiZWhhdmlvckF0Qm91bmRhcnkpCiB7CiAgICAgU3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsKIApA
QCAtMjEwMyw2ICsyMTExLDcgQEAgaW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6cnVsZU1hdGNo
ZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCBjb25zdCBDb250YWluZXIKICAgICBjb250ZXh0
LmVsZW1lbnRTdHlsZSA9IHN0YXRlLnN0eWxlKCk7CiAgICAgY29udGV4dC5zY29wZSA9IHNjb3Bl
OwogICAgIGNvbnRleHQucHNldWRvU3R5bGUgPSBzdGF0ZS5wc2V1ZG9TdHlsZSgpOworICAgIGNv
bnRleHQuYmVoYXZpb3JBdEJvdW5kYXJ5ID0gYmVoYXZpb3JBdEJvdW5kYXJ5OwogICAgIFNlbGVj
dG9yQ2hlY2tlcjo6TWF0Y2ggbWF0Y2ggPSBzZWxlY3RvckNoZWNrZXIubWF0Y2goY29udGV4dCwg
ZHluYW1pY1BzZXVkbywgRE9NU2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5KCkpOwogICAgIGlmICht
YXRjaCAhPSBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2hlcykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggZjU0NzZmNDA4YjlkYTA5
NzNjMmU2NGIxMmUyNmJjMmEyMzcwZTc2Zi4uMmNkYWMxZWRhZTUxYjhlMzUwNDE1OTQ4MWJiNjMz
ZjhkMTIxMGJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC0xMzYsNiArMTM2
LDE5IEBAIGVudW0gUnVsZU1hdGNoaW5nQmVoYXZpb3IgewogICAgIE1hdGNoT25seVVzZXJBZ2Vu
dFJ1bGVzLAogfTsKIAorY2xhc3MgTWF0Y2hSZXF1ZXN0IHsKK3B1YmxpYzoKKyAgICBNYXRjaFJl
cXVlc3QoUnVsZVNldCogcnVsZVNldCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyA9IGZhbHNlLCBj
b25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9IDAsIFNlbGVjdG9yQ2hlY2tlcjo6QmVoYXZpb3JB
dEJvdW5kYXJ5IGJlaGF2aW9yQXRCb3VuZGFyeSA9IFNlbGVjdG9yQ2hlY2tlcjo6RG9lc05vdENy
b3NzQm91bmRhcnkpCisgICAgICAgIDogcnVsZVNldChydWxlU2V0KQorICAgICAgICAsIGluY2x1
ZGVFbXB0eVJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKQorICAgICAgICAsIHNjb3BlKHNjb3BlKQor
ICAgICAgICAsIGJlaGF2aW9yQXRCb3VuZGFyeShiZWhhdmlvckF0Qm91bmRhcnkpIHsgfQorICAg
IGNvbnN0IFJ1bGVTZXQqIHJ1bGVTZXQ7CisgICAgY29uc3QgYm9vbCBpbmNsdWRlRW1wdHlSdWxl
czsKKyAgICBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZTsKKyAgICBjb25zdCBTZWxlY3RvckNo
ZWNrZXI6OkJlaGF2aW9yQXRCb3VuZGFyeSBiZWhhdmlvckF0Qm91bmRhcnk7Cit9OworCiAvLyBU
aGlzIGNsYXNzIHNlbGVjdHMgYSBSZW5kZXJTdHlsZSBmb3IgYSBnaXZlbiBlbGVtZW50IGJhc2Vk
IG9uIGEgY29sbGVjdGlvbiBvZiBzdHlsZXNoZWV0cy4KIGNsYXNzIFN0eWxlUmVzb2x2ZXIgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0eWxlUmVzb2x2ZXIpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKQEAgLTM0NywxNiArMzYwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBpc0Nh
Y2hlYWJsZTsKICAgICB9OwogCi0gICAgc3RydWN0IE1hdGNoUmVxdWVzdCB7Ci0gICAgICAgIE1h
dGNoUmVxdWVzdChSdWxlU2V0KiBydWxlU2V0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzID0gZmFs
c2UsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlID0gMCkKLSAgICAgICAgICAgIDogcnVsZVNl
dChydWxlU2V0KQotICAgICAgICAgICAgLCBpbmNsdWRlRW1wdHlSdWxlcyhpbmNsdWRlRW1wdHlS
dWxlcykKLSAgICAgICAgICAgICwgc2NvcGUoc2NvcGUpIHsgfQotICAgICAgICBjb25zdCBSdWxl
U2V0KiBydWxlU2V0OwotICAgICAgICBjb25zdCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzOwotICAg
ICAgICBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZTsKLSAgICB9OwotCiAgICAgc3RhdGljIHZv
aWQgYWRkTWF0Y2hlZFByb3BlcnRpZXMoTWF0Y2hSZXN1bHQmLCBjb25zdCBTdHlsZVByb3BlcnR5
U2V0KiBwcm9wZXJ0aWVzLCBTdHlsZVJ1bGUqID0gMCwgdW5zaWduZWQgbGlua01hdGNoVHlwZSA9
IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hBbGwsIFByb3BlcnR5V2hpdGVsaXN0VHlwZSA9IFByb3Bl
cnR5V2hpdGVsaXN0Tm9uZSk7CiAgICAgdm9pZCBhZGRFbGVtZW50U3R5bGVQcm9wZXJ0aWVzKE1h
dGNoUmVzdWx0JiwgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCosIGJvb2wgaXNDYWNoZWFibGUgPSB0
cnVlKTsKIApAQCAtMzc2LDcgKzM3OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzb3J0TWF0Y2hl
ZFJ1bGVzKCk7CiAgICAgdm9pZCBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoTWF0Y2hSZXN1
bHQmKTsKIAotICAgIGJvb2wgcnVsZU1hdGNoZXMoY29uc3QgUnVsZURhdGEmLCBjb25zdCBDb250
YWluZXJOb2RlKiBzY29wZSwgUHNldWRvSWQmKTsKKyAgICBib29sIHJ1bGVNYXRjaGVzKGNvbnN0
IFJ1bGVEYXRhJiwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUsIFBzZXVkb0lkJiwgU2VsZWN0
b3JDaGVja2VyOjpCZWhhdmlvckF0Qm91bmRhcnkgPSBTZWxlY3RvckNoZWNrZXI6OkRvZXNOb3RD
cm9zc0JvdW5kYXJ5KTsKICAgICBib29sIGNoZWNrUmVnaW9uU2VsZWN0b3IoY29uc3QgQ1NTU2Vs
ZWN0b3IqIHJlZ2lvblNlbGVjdG9yLCBFbGVtZW50KiByZWdpb25FbGVtZW50KTsKICAgICB2b2lk
IGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBjb25zdCBFbGVtZW50
Kik7CiAgICAgZW51bSBTdHlsZUFwcGxpY2F0aW9uUGFzcyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKaW5kZXggZTA4MzE4YmZmNWE4ZTBiYmMwNDQ0
ZmM4Nzg2ZDM5MTNmOThjN2M5Ni4uY2RmODIxZTJlYmM3NDZkNjk2OWEzN2NjMTk0ODU3NDJiNjk5
OTI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9p
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNw
cApAQCAtMjI5LDQgKzIyOSwyOCBAQCBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJlcHJvamVjdGlv
bihjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlKQogICAgIHJldHVybiBpbnNlcnRpb25Qb2ludDsK
IH0KIAordm9pZCBjb2xsZWN0SW5zZXJ0aW9uUG9pbnRzV2hlcmVOb2RlSXNEaXN0cmlidXRlZChj
b25zdCBOb2RlKiBub2RlLCBWZWN0b3I8SW5zZXJ0aW9uUG9pbnQqLCA4PiYgcmVzdWx0cykKK3sK
KyAgICBjb25zdCBOb2RlKiBjdXJyZW50ID0gbm9kZTsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAg
ICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmli
dXRpb24oY3VycmVudCkpIHsKKyAgICAgICAgICAgIGlmIChTaGFkb3dSb290KiByb290ID0gY3Vy
cmVudC0+Y29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgICAgICBDb250ZW50RGlz
dHJpYnV0b3I6OmVuc3VyZURpc3RyaWJ1dGlvbihyb290KTsKKyAgICAgICAgICAgIGlmIChJbnNl
cnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5maW5kSW5zZXJ0
aW9uUG9pbnRGb3Iobm9kZSkpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gaW5zZXJ0ZWRU
bzsKKyAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChpbnNlcnRlZFRvKTsKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAo
Tm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZUZvckRpc3RyaWJ1dGlvbihjdXJyZW50KSkgeworICAg
ICAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRlZFRvID0gcGFyZW50LT5pc1NoYWRv
d1Jvb3QoKSA/IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWduZWRUbyh0b1NoYWRvd1Jv
b3QocGFyZW50KSkgOiAwKSB7CisgICAgICAgICAgICAgICAgY3VycmVudCA9IGluc2VydGVkVG87
CisgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoaW5zZXJ0ZWRUbyk7CisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
OworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKaW5kZXggZDE4OGM0NzhhMTlhZmM1MThlODIwZDlh
OGZhZmNiYWUyZDlkZTk5Ny4uNzZkNzQ4NWM4YWQzNTg3YmM0MWEyOGZlZjA3NjFjMTNmNGU1OTli
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC0x
NjEsNiArMTYxLDggQEAgaW5saW5lIEVsZW1lbnRTaGFkb3cqIHNoYWRvd09mUGFyZW50Rm9yRGlz
dHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCiAKIEluc2VydGlvblBvaW50KiByZXNvbHZlUmVw
cm9qZWN0aW9uKGNvbnN0IE5vZGUqKTsKIAordm9pZCBjb2xsZWN0SW5zZXJ0aW9uUG9pbnRzV2hl
cmVOb2RlSXNEaXN0cmlidXRlZChjb25zdCBOb2RlKiwgVmVjdG9yPEluc2VydGlvblBvaW50Kiwg
OD4mIHJlc3VsdHMpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBJbnNl
cnRpb25Qb2ludF9oCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzUyMGRlOWE1NDk4ZmMyYjQzNTJhZWQyMGVmMmIxNjNmZGQ3
MDU3OC4uYzI1OGVhYWI1ZGE0YTQ2YmVkOTY0NzFiNTdiMDBmZTczNmRjZTdmYyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMzIEBACisyMDEzLTAyLTEzICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbU2hhZG93IERPTV0gSW1wbGVtZW50cyBhICc6OmRpc3RyaWJ1dGVkKCkn
IHBzZXVkbyBlbGVtZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODIxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCisK
KyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVk
LXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC1leHBlY3RlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9y
LXNoYWRvdy1lbGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1hbGwtZXhwZWN0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1h
dGNoLWFsbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtZGVzY2VuZGFudC1leHBlY3RlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0
Y2gtZGVzY2VuZGFudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlz
dHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVk
by1lbGVtZW50LW5vLW1hdGNoLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uby1tYXRjaC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQt
cmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3No
YWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24uaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXNj
b3BlZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlz
dHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9y
LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9yLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC11c2VkLWluLXNl
bGVjdG9yLWxpc3QtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtd2l0aC1hbnktZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC5odG1s
OiBBZGRlZC4KKwogMjAxMy0wMi0xMiAgR3JlZ2cgVGF2YXJlcyAgPGdtYW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIEFkZHMgZmFpbGluZyBXZWJHTCBDb25mb3JtYW5jZSBUZXN0cy4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGVkLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRjMjZlMmI1NmM0
YzZhN2M3MGM2Y2ZkNThhMjI3ZjhlMGY0NDY0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRp
diBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYgc3R5bGU9ImNvbG9y
OiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtZm9yLXNoYWRvdy1lbGVtZW50LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50LWV4
cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRjMjZlMmI1NmM0YzZhN2M3MGM2Y2ZkNThhMjI3Zjhl
MGY0NDY0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1mb3Itc2hhZG93LWVsZW1lbnQtZXhwZWN0ZWQuaHRt
bApAQCAtMCwwICsxLDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYg
aWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2IHN0eWxlPSJjb2xvcjog
Z3JlZW4iPmdyZWVuPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LWZvci1zaGFkb3ctZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LWZvci1zaGFkb3ctZWxlbWVudC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkZGMzN2M1YzZjNDg4NjdkZjVjYjgxNDcyOGEzNjlmZDhkMjNlNjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtZm9yLXNoYWRvdy1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9t
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+
Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5
bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdzaGFkb3c6Oi13ZWJraXQtZGlzdHJpYnV0
ZWQoZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRl
RE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9v
dCgKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSwKKyAgICAg
ICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxl
LAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdzaGFkb3cnKSkpKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC1leHBlY3RlZC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNo
LWFsbC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhNjBiNzJlMGRlOTE3NzYyYjJhMmE0YzVl
YzNlZjlmNTY2ZWI0OTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtYWxsLWV4cGVjdGVkLmh0bWwK
QEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBp
ZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXY+CisgICAgICBub3JtYWwK
KyAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgICA8L2Rpdj4K
KyAgICA8ZGl2PgorICAgICAgbm9ybWFsCisgICAgICA8ZGl2IHN0eWxlPSJjb2xvcjogZ3JlZW4i
PmdyZWVuPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1l
bGVtZW50LW1hdGNoLWFsbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LW1hdGNoLWFsbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZjJmZjJi
NDEzN2EwYzVhZWVkYzg1ZTg5MTJmMmVjMzRlYjJmYmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gt
YWxsLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRv
d1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlu
bmVySFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKC5oZWxsbykgeyBjb2xvcjog
Z3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5k
Ym94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6
ICdob3N0J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAg
ICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcp
KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdoZWxsbyd9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicp
KSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJyksCisgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnaGVsbG8nfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4n
KSkpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNj
ZW5kYW50LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJp
YnV0ZWQtcHNldWRvLWVsZW1lbnQtbWF0Y2gtZGVzY2VuZGFudC1leHBlY3RlZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFjMTg3ODU2ZmVlMThmNGU0MjdmMjFhNzcxYjMyZDExMzE4ZjUzYjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRv
LWVsZW1lbnQtbWF0Y2gtZGVzY2VuZGFudC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTEgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8
ZGl2IGlkPSJob3N0Ij4KKyAgICA8cD4KKyAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+
Z3JlZW48L2Rpdj4KKyAgICA8L3A+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVt
ZW50LW1hdGNoLWRlc2NlbmRhbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1tYXRjaC1kZXNjZW5kYW50Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZmU0MDQzZTg1NWE1MDhkNDhiNWEwNjAwZTBmNjg2Njk4ODMwMDI4MgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxl
bWVudC1tYXRjaC1kZXNjZW5kYW50Lmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8
c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUn
KTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVk
KGRpdikgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURP
TSgnZGl2Jywge30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAg
ICAgICAgICBzaGFkb3dTdHlsZSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVu
dCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdwJywge30sCisgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdncmVlbicpKSkpKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5lc3RlZC1l
eHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1MTgzNDQyYTA3NmM3ZjgxYTljNTQyMTMxZTc5ZmI3
NzZmMDExY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCAr
MSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ic2FuZGJv
eCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYgaWQ9Im5lc3RlZC1ob3N0Ij4KKyAgICAg
IHRleHQxCisgICAgICA8ZGl2PgorICAgICAgICB0ZXh0MgorICAgICAgICA8ZGl2PgorICAgICAg
ICAgIHRleHQzCisgICAgICAgICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5ncmVlbjwvZGl2
PgorICAgICAgICAgIDxkaXY+bm9ybWFsPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgPC9k
aXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtbmVzdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtbmVzdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzE2N2EzZWZlY2EwZjQw
OGE2ZDM4NzU2OTI5N2VmZTYyMzU4ODBkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1uZXN0ZWQuaHRtbApA
QCAtMCwwICsxLDMyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2hhZG93U3R5bGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworc2hhZG93U3R5bGUuaW5uZXJIVE1MID0g
J2RpdiBjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdiBjb250ZW50Ojotd2Via2l0LWRp
c3RyaWJ1dGVkKGRpdi5ncmVlbikpIHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNhbmRib3gg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBlbmRDaGls
ZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9LAorICAgICAgICAgICAgICBj
cmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lk
JzogJ25lc3RlZC1ob3N0J30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hh
ZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCd0
ZXh0MScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoJ3RleHQyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICdkaXYnfSkpKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnZ3Jl
ZW4nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoJ3RleHQzJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHt9KSkpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2NsYXNzJzogJ2dyZWVuJ30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSgnbm9ybWFsJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1u
by1tYXRjaC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LW5vLW1hdGNoLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjA1ZmVmZjc1Yzc5YWVkZTViZjhlNDliYmVkMGI3MTU1ZGNlNjgwZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC1uby1tYXRjaC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4K
KyAgICA8cD5ub3JtYWw8L3A+CisgICAgPGRpdj4KKyAgICAgIDxkaXY+bm9ybWFsPC9kaXY+Cisg
ICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5vLW1hdGNo
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVs
ZW1lbnQtbm8tbWF0Y2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NDcxM2Q2MGIyM2E3M2IwNjZkOGU0YmY1
NmIyMGMyZDcxMjM3YjViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LW5vLW1hdGNoLmh0bWwKQEAgLTAsMCAr
MSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICd0aGlzLWRv
ZXMtbm90LW1hdGNoOjotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdikgeyBjb2xvcjogZ3JlZW47IH0n
CisgICAgKyAncDo6LXdlYmtpdC1kaXN0cmlidXRlZChkaXYpIHsgY29sb3I6IGdyZWVuOyB9Jwor
ICAgICsgJ2Rpdjo6LXdlYmtpdC1kaXN0cmlidXRlZChkaXYpIHsgY29sb3I6IGdyZWVuOyB9JzsK
KwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOworc2Fu
ZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9LAor
ICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hhZG93
U3R5bGUsCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3AnLCB7fSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdub3JtYWwnKSksCisgICAg
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydpZCc6ICdob3N0LWNoaWxkJ30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRl
ZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1yZXByb2plY3Rpb24t
ZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjljOTEyN2RlNWU3MDNiN2ExYTVjOTM2OTRlYTdj
ZDBiMTI0ODQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi1leHBlY3RlZC5odG1sCkBA
IC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9
InNhbmRib3giPgorICA8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2IGlkPSJob3N0MiI+CisgICAg
ICA8ZGl2IHN0eWxlPSdjb2xvcjogZ3JlZW4nPgorICAgICAgICBncmVlbgorICAgICAgPC9kaXY+
CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXJlcHJv
amVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBz
ZXVkby1lbGVtZW50LXJlcHJvamVjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3MzVmYTcwOWU4NjFi
MGRiNGFlNGNjNDY0ZmY3YWZhMWExOWUwYzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtcmVwcm9qZWN0aW9u
Lmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0
eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVy
SFRNTCA9ICdjb250ZW50Ojotd2Via2l0LWRpc3RyaWJ1dGVkKC5mb28pIHsgY29sb3I6IGdyZWVu
OyB9JzsKKwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcp
Oworc2FuZGJveC5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9z
dCd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QyJ30sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2hhZG93U3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
Y29udGVudCcsIHsnc2VsZWN0JzogJy5mb28nfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2
JywgeydjbGFzcyc6ICdmb28nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCdncmVlbicpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRv
LWVsZW1lbnQtc2NvcGVkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc2NvcGVkLWV4cGVjdGVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzQ4ZDllMmRlM2U2ZmU0YmZkODk4MGI2M2QwMzliYzU0ZDg4MzFhMgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC1zY29wZWQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdiBpZD0iaG9z
dCI+CisgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgPGRpdiBzdHlsZT0n
Y29sb3I6IGdyZWVuJz5ncmVlbjwvZGl2PgorICAgIDwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zY29wZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
YWE3MWFiYzc5MDk2MzMwMGEzMjQ3ZTg1Njg1MGE4MzYxMzU4ODVjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50
LXNjb3BlZC5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBz
aGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHls
ZS5pbm5lckhUTUwgPSAnY29udGVudDo6LXdlYmtpdC1kaXN0cmlidXRlZChkaXYpIHsgY29sb3I6
IGdyZWVuOyB9JzsKK3NoYWRvd1N0eWxlLnNldEF0dHJpYnV0ZSgnc2NvcGVkJywgdHJ1ZSk7CisK
K3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRi
b3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAg
ICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURP
TSgnY29udGVudCcsIHsnc2VsZWN0JzogJyNob3N0LWNoaWxkMSd9KSwKKyAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnI2hvc3QtY2hpbGQyJ30pLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlKSksCisgICAgICAgICAgICAgIGNyZWF0ZURP
TSgnZGl2JywgeydpZCc6ICdob3N0LWNoaWxkMSd9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QtY2hpbGQyJ30sCisgICAgICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZ3JlZW4nKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGVkLXBzZXVkby1lbGVtZW50LXN1cHBvcnQtc2VsZWN0b3ItZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBw
b3J0LXNlbGVjdG9yLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjNkZWRlMTMzYjg2MmRkMTRj
OTJlNjA1YzRhMWJlZDI4ZTM3YWRhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC1zdXBwb3J0LXNlbGVjdG9y
LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
Kzxib2R5PgorPGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXY+
CisgICAgICBub3JtYWwKKyAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rp
dj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgbm9ybWFsCisgICAgICA8ZGl2Pm5vcm1h
bDwvZGl2PgorICAgIDwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVu
dC1zdXBwb3J0LXNlbGVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlz
dHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtc3VwcG9ydC1zZWxlY3Rvci5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNmZGJkODZlZjc4MmIxNDFjZmY1OWJhM2MxNjViYTU3ZWIzZTc4NWQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1l
bnQtc3VwcG9ydC1zZWxlY3Rvci5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNj
cmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7
CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnY29udGVudDo6LXdlYmtpdC1kaXN0cmlidXRlZChk
aXYuaGVsbG8gZGl2KSB7IGNvbG9yOiBncmVlbjsgfSc7CisKK3ZhciBzYW5kYm94ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hh
ZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0eWxlLAorICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHsnY2xhc3MnOiAnaGVsbG8nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCdub3JtYWwnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURP
TSgnZGl2Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdu
b3JtYWwnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
J25vcm1hbCcpKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVz
ZWQtaW4tc2VsZWN0b3ItbGlzdC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC1l
eHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiODI1M2U0ZGFiNzQwNTY1ODM4ZDg0MjUwYmJhOWJk
OTA0ZDk5MmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0LWV4cGVjdGVk
Lmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5Pgor
PGRpdiBpZD0ic2FuZGJveCI+CisgIDxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYgc3R5bGU9ImNv
bG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgICA8cD5ub3JtYWw8L3A+CisgICAgPHAgc3R5bGU9
ImNvbG9yOiBncmVlbiI+Z3JlZW48L3A+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1l
bGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXVzZWQtaW4tc2VsZWN0b3ItbGlzdC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjkwNmQ1NDhmNmJhMzkxY2I3NGE4MjMxNmVkYjk2ZGM1ZDJlNzFmMzYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
ZWQtcHNldWRvLWVsZW1lbnQtdXNlZC1pbi1zZWxlY3Rvci1saXN0Lmh0bWwKQEAgLTAsMCArMSwy
NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
c2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIHNoYWRvd1N0eWxlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlLmlubmVySFRNTCA9ICdjb250ZW50Ojot
d2Via2l0LWRpc3RyaWJ1dGVkKGRpdiksIHAgeyBjb2xvcjogZ3JlZW47IH0nOworCit2YXIgc2Fu
ZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CitzYW5kYm94LmFwcGVu
ZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0J30sCisgICAgICAgICAg
ICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBzaGFkb3dTdHlsZSwKKyAg
ICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpLAorICAgICAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdwJywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdn
cmVlbicpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdwJywgeydjbGFzcyc6ICdoZWxsbyd9
LAorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1h
bCcpKSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtd2l0aC1hbnkt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1w
c2V1ZG8tZWxlbWVudC13aXRoLWFueS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3Mzc5OTQz
ZGY2NDg5MDMyNGRjMDJkOWRlMzAxODUxYTExMTg2NTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0ZWQtcHNldWRvLWVsZW1lbnQtd2l0aC1h
bnktZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGJvZHk+Cis8ZGl2IGlkPSJzYW5kYm94Ij4KKyAgPGRpdj4KKyAgICA8ZGl2Pm5vcm1hbDwv
ZGl2PgorICAgIDxkaXYgc3R5bGU9ImNvbG9yOiBncmVlbiI+Z3JlZW48L2Rpdj4KKyAgPC9kaXY+
CisgIDxkaXY+CisgICAgPGRpdj5ub3JtYWw8L2Rpdj4KKyAgICA8ZGl2IHN0eWxlPSJjb2xvcjog
cmVkIj5yZWQ8L2Rpdj4KKyAgPC9kaXY+CisgIDxkaXY+CisgICAgPGRpdj5ub3JtYWw8L2Rpdj4K
KyAgICA8ZGl2IHN0eWxlPSJjb2xvcjogYmx1ZSI+Ymx1ZTwvZGl2PgorICA8L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRlZC1wc2V1ZG8tZWxlbWVudC13aXRoLWFueS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L2Rpc3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50LXdpdGgtYW55Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2NhMjM1YTQzZGIzZjdiM2I3OWI5YWU0Y2M5N2E4MzdlOGM2YThlNwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8t
ZWxlbWVudC13aXRoLWFueS5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlw
dD4KK3ZhciBzaGFkb3dTdHlsZTEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwor
c2hhZG93U3R5bGUxLmlubmVySFRNTCA9ICcqOjotd2Via2l0LWRpc3RyaWJ1dGVkKGRpdikgeyBj
b2xvcjogZ3JlZW47IH0nOworCit2YXIgc2hhZG93U3R5bGUyID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlMi5pbm5lckhUTUwgPSAnY29udGVudDo6LXdlYmtp
dC1kaXN0cmlidXRlZCgqKSB7IGNvbG9yOiByZWQ7IH0nOworCit2YXIgc2hhZG93U3R5bGUzID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKK3NoYWRvd1N0eWxlMy5pbm5lckhUTUwg
PSAnKjo6LXdlYmtpdC1kaXN0cmlidXRlZCgqKSB7IGNvbG9yOiBibHVlOyB9JzsKKwordmFyIHNh
bmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBl
bmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICBjcmVhdGVT
aGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUxLAorICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbm9ybWFsJykpLAorICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdjb250ZW50JykpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2dyZWVuJykp
KSk7CisKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAg
ICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIHNoYWRvd1N0
eWxlMiwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ25vcm1hbCcpKSwKKyAg
ICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCdyZWQnKSkpKTsKK3NhbmRib3guYXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRE9N
KCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAg
ICAgICAgIHNoYWRvd1N0eWxlMywKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
e30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
J25vcm1hbCcpKSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwKKyAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdibHVlJykpKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRlZC1wc2V1ZG8tZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGVkLXBzZXVkby1lbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDI0M2NhMWM4Yzk0ZjMy
NjhiNjRmNzBlZGQyMTI2YjA3YjBkZjAxYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRlZC1wc2V1ZG8tZWxlbWVudC5odG1sCkBAIC0wLDAg
KzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzaGFkb3dTdHlsZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CitzaGFkb3dTdHlsZS5pbm5lckhUTUwgPSAnY29udGVu
dDo6LXdlYmtpdC1kaXN0cmlidXRlZChkaXYpIHsgY29sb3I6IGdyZWVuOyB9JzsKKwordmFyIHNh
bmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOworc2FuZGJveC5hcHBl
bmRDaGlsZCgKKyAgICBjcmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICBjcmVhdGVT
aGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgc2hhZG93U3R5bGUsCisgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2
Jywge30sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgn
Z3JlZW4nKSkpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>