<?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>95178</bug_id>
          
          <creation_ts>2012-08-28 01:09:33 -0700</creation_ts>
          <short_desc>Support CSS3 Keyboard control</short_desc>
          <delta_ts>2013-06-24 09:31:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>66027</dup_id>
          
          <bug_file_loc>http://dev.w3.org/csswg/css3-ui/#keyboard</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Binyamin">7raivis</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>7raivis</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>shikolay</cc>
    
    <cc>syoichi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>706165</commentid>
    <comment_count>0</comment_count>
    <who name="Binyamin">7raivis</who>
    <bug_when>2012-08-28 01:09:33 -0700</bug_when>
    <thetext>Add support for CSS3 Keyboard control http://dev.w3.org/csswg/css3-ui/#keyboard, the new properties: nav-index, nav-up, nav-right, nav-down, nav-left, ime-mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706422</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-28 09:34:35 -0700</bug_when>
    <thetext>Do you want any of these features specifically? Having a use case would go a long way towards establishing importance of a feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706548</commentid>
    <comment_count>2</comment_count>
    <who name="Binyamin">7raivis</who>
    <bug_when>2012-08-28 11:23:42 -0700</bug_when>
    <thetext>(In reply to comment #1)

@Alexey, I think it would be grate to have support for all those features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878941</commentid>
    <comment_count>3</comment_count>
      <attachid>198982</attachid>
    <who name="Sangho Kim">thomas.kim</who>
    <bug_when>2013-04-21 19:09:21 -0700</bug_when>
    <thetext>Created attachment 198982
add the feature of css3 keyboard navigation

I attached the patch which has the feature of CSS3 keyboard navigation.
Please review...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878993</commentid>
    <comment_count>4</comment_count>
      <attachid>198982</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-04-22 00:21:39 -0700</bug_when>
    <thetext>Comment on attachment 198982
add the feature of css3 keyboard navigation

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

ChangeLog is missing. Also, can the new files be explicitely put under LGPL2 or BSD license? And don&apos;t forget to set the r flag to &apos;?&apos;

&gt; Source/WebKit2/Shared/WebPreferencesStore.h:-39
&gt; -#if PLATFORM(GTK)

Unrelated change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879604</commentid>
    <comment_count>5</comment_count>
      <attachid>199152</attachid>
    <who name="Sangho Kim">thomas.kim</who>
    <bug_when>2013-04-22 22:53:35 -0700</bug_when>
    <thetext>Created attachment 199152
add change log and license

I add the change log and license.
Do I have to do another?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879605</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-22 22:56:01 -0700</bug_when>
    <thetext>Attachment 199152 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCore/css/CSSComputedStyleDeclaration.cpp&apos;, u&apos;Source/WebCore/css/CSSGrammar.y.in&apos;, u&apos;Source/WebCore/css/CSSParser.cpp&apos;, u&apos;Source/WebCore/css/CSSPrimitiveValue.cpp&apos;, u&apos;Source/WebCore/css/CSSPrimitiveValue.h&apos;, u&apos;Source/WebCore/css/CSSProperty.cpp&apos;, u&apos;Source/WebCore/css/CSSPropertyNames.in&apos;, u&apos;Source/WebCore/css/CSSValueKeywords.in&apos;, u&apos;Source/WebCore/css/StyleResolver.cpp&apos;, u&apos;Source/WebCore/dom/Element.h&apos;, u&apos;Source/WebCore/page/EventHandler.cpp&apos;, u&apos;Source/WebCore/page/FocusController.cpp&apos;, u&apos;Source/WebCore/rendering/style/RenderStyle.cpp&apos;, u&apos;Source/WebCore/rendering/style/RenderStyle.h&apos;, u&apos;Source/WebCore/rendering/style/StyleNavData.cpp&apos;, u&apos;Source/WebCore/rendering/style/StyleNavData.h&apos;, u&apos;Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp&apos;, u&apos;Source/WebCore/rendering/style/StyleRareNonInheritedData.h&apos;, u&apos;Source/WebKit2/Shared/WebPreferencesStore.h&apos;]&quot; exit_code: 1
ChangeLog:12:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ChangeLog:13:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ChangeLog:14:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ChangeLog:15:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ChangeLog:16:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ChangeLog:17:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ChangeLog:18:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ChangeLog:19:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ChangeLog:20:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ChangeLog:21:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ChangeLog:22:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ChangeLog:23:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ChangeLog:24:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ChangeLog:25:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ChangeLog:26:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ChangeLog:27:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ChangeLog:28:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ChangeLog:29:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ChangeLog:30:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ChangeLog:31:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/WebCore/css/CSSPrimitiveValue.h:137:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 21 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879606</commentid>
    <comment_count>7</comment_count>
      <attachid>199152</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-04-22 22:59:24 -0700</bug_when>
    <thetext>Comment on attachment 199152
add change log and license

Attachment 199152 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/16639</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879611</commentid>
    <comment_count>8</comment_count>
      <attachid>199152</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-22 23:21:11 -0700</bug_when>
    <thetext>Comment on attachment 199152
add change log and license

Attachment 199152 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/16640</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879613</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-04-22 23:30:32 -0700</bug_when>
    <thetext>What regression tests do you have for this feature? It will require a substantial number of tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879614</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-22 23:30:41 -0700</bug_when>
    <thetext>Has this feature been announced on webkit-dev yet? (See http://www.webkit.org/coding/adding-features.html)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879617</commentid>
    <comment_count>11</comment_count>
      <attachid>199152</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-22 23:34:31 -0700</bug_when>
    <thetext>Comment on attachment 199152
add change log and license

Attachment 199152 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/110757</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879621</commentid>
    <comment_count>12</comment_count>
      <attachid>199152</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-22 23:39:58 -0700</bug_when>
    <thetext>Comment on attachment 199152
add change log and license

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

Thank you for the patch but this patch needs tests. Every new feature or bug fix needs to come up with a layout test whenever possible.
See http://www.webkit.org/coding/contributing.html

There is a lot of stylistic and naming issues as I&apos;ve pointed out below.

&gt; ChangeLog:6
&gt; +        Reviewed by .

Please don&apos;t remove NOBODY (OOPS!). (You used webkit-patch upload or prepare-ChangeLog in Tools/Scripts, right?)

&gt;&gt; ChangeLog:12
&gt;&gt; +        * Source/WebCore/Target.pri
&gt; 
&gt; Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]

You&apos;re missing a colon after the file name.

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:2109
&gt; +            const StyleNavIndex* nav = style-&gt;getNavIndex();

Please don&apos;t use abbreviations like nav. Spell out navigation.

&gt; Source/WebCore/css/CSSParser.cpp:2953
&gt; +        if ((num &gt; 2) || (value-&gt;unit != CSSPrimitiveValue::CSS_PARSER_HEXCOLOR &amp;&amp; value-&gt;unit != CSSPrimitiveValue::CSS_ELEMENT_ID))

No need to wrap inner conditions with parentheses. Why are you comparing the unit to CSS_PARSER_HEXCOLOR and CSS_ELEMENT_ID? That doesn&apos;t make much sense.

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1703
&gt; +const StyleNavData* RenderStyle::getNav(int propId)

this name is too terse. Please give more descriptive name. Also, we don&apos;t prefix a function with &quot;get&quot; unless it has an out argument.

&gt; Source/WebCore/rendering/style/StyleNavData.cpp:27
&gt; +StyleNavData::StyleNavData()

Please don&apos;t use abbreviations like Nav.
Also, StyleNavData is a very vague name. Please consider giving it a more descriptive name.

&gt; Source/WebCore/rendering/style/StyleNavData.cpp:29
&gt; +    : m_id(&quot;&quot;)
&gt; +    , m_target(&quot;&quot;)

Please use emptyString instead or let the default constructor run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879623</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-22 23:41:21 -0700</bug_when>
    <thetext>http://www.webkit.org/coding/coding-style.html is our style guideline. Please have a look at it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881081</commentid>
    <comment_count>14</comment_count>
      <attachid>199152</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-04-24 22:29:46 -0700</bug_when>
    <thetext>Comment on attachment 199152
add change log and license

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

&gt; ChangeLog:8
&gt; +        Add support for CSS3 Keyboard control http://dev.w3.org/csswg/css3-ui/#keyboard.

I&apos;m wondering if you notify webkit-dev of this feature. According to webkit policy, new feature should be notified to webkit-dev first.

&gt; Source/WebCore/GNUmakefile.list.am:4722
&gt; +	Source/WebCore/rendering/style/StyleNavData.cpp \

I think this file needs to be added to CMake files as well in order to support EFL, blackberry and wince ports. Besides it looks you need to add this file to xcode for Mac.

&gt; Source/WebCore/rendering/style/StyleNavData.cpp:2
&gt; + * Copyright (C) 2013 Sangho Kim (thomas.kim@lge.com)

If contributor belongs to company, contributor has added a company copyright generally.

&gt; Source/WebKit2/Shared/WebPreferencesStore.h:39
&gt; +#if PLATFORM(GTK) || PLATFORM(QT)

There is no WK2 ChangeLog update for this file. As Ryosuke said, please use Tools/Script/prepare-ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883723</commentid>
    <comment_count>15</comment_count>
      <attachid>200300</attachid>
    <who name="Sangho Kim">thomas.kim</who>
    <bug_when>2013-05-01 22:30:58 -0700</bug_when>
    <thetext>Created attachment 200300
css3 keyboard navigation patch

I changed some code as reference your reviews.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883724</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-01 22:33:30 -0700</bug_when>
    <thetext>Attachment 200300 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCore/css/CSSComputedStyleDeclaration.cpp&apos;, u&apos;Source/WebCore/css/CSSGrammar.y.in&apos;, u&apos;Source/WebCore/css/CSSParser.cpp&apos;, u&apos;Source/WebCore/css/CSSPrimitiveValue.cpp&apos;, u&apos;Source/WebCore/css/CSSPrimitiveValue.h&apos;, u&apos;Source/WebCore/css/CSSProperty.cpp&apos;, u&apos;Source/WebCore/css/CSSPropertyNames.in&apos;, u&apos;Source/WebCore/css/CSSValueKeywords.in&apos;, u&apos;Source/WebCore/css/StyleResolver.cpp&apos;, u&apos;Source/WebCore/dom/Element.h&apos;, u&apos;Source/WebCore/page/EventHandler.cpp&apos;, u&apos;Source/WebCore/page/FocusController.cpp&apos;, u&apos;Source/WebCore/rendering/style/RenderStyle.cpp&apos;, u&apos;Source/WebCore/rendering/style/RenderStyle.h&apos;, u&apos;Source/WebCore/rendering/style/StyleNavDirection.cpp&apos;, u&apos;Source/WebCore/rendering/style/StyleNavDirection.h&apos;, u&apos;Source/WebCore/rendering/style/StyleNavIndex.cpp&apos;, u&apos;Source/WebCore/rendering/style/StyleNavIndex.h&apos;, u&apos;Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp&apos;, u&apos;Source/WebCore/rendering/style/StyleRareNonInheritedData.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Shared/WebPreferencesStore.h&apos;]&quot; exit_code: 1
Source/WebCore/css/CSSPrimitiveValue.h:137:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883725</commentid>
    <comment_count>17</comment_count>
      <attachid>200300</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-01 22:37:16 -0700</bug_when>
    <thetext>Comment on attachment 200300
css3 keyboard navigation patch

Attachment 200300 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/384040</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883726</commentid>
    <comment_count>18</comment_count>
      <attachid>200300</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-01 22:39:02 -0700</bug_when>
    <thetext>Comment on attachment 200300
css3 keyboard navigation patch

Attachment 200300 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/268060</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883729</commentid>
    <comment_count>19</comment_count>
      <attachid>200300</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-01 22:58:36 -0700</bug_when>
    <thetext>Comment on attachment 200300
css3 keyboard navigation patch

Attachment 200300 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/393032</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883730</commentid>
    <comment_count>20</comment_count>
      <attachid>200300</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-01 22:59:53 -0700</bug_when>
    <thetext>Comment on attachment 200300
css3 keyboard navigation patch

Attachment 200300 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/268064</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883731</commentid>
    <comment_count>21</comment_count>
      <attachid>200300</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-01 23:09:19 -0700</bug_when>
    <thetext>Comment on attachment 200300
css3 keyboard navigation patch

Attachment 200300 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/333116</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883911</commentid>
    <comment_count>22</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-05-02 14:09:24 -0700</bug_when>
    <thetext>We should not support any of the nav properties. nav-index, nav-up, nav-right, nav-down, and nav-left are all features at risk and we should let them remain at risk until they are removed from this version of the specification.

The main thing nav-index is lacking is a context. This could potentially be solved with an additional property, potentially:

     nav-context:  ignore | relative | absolute;

Yet, as specified, nav-index has all the same serious negative implications of positive integer values of tabindex, where each node has to know about the layout order of every other node in the document. If you&apos;re only specifying nav index on first level branches, this is fine, but there is no good way to use this on leaf nodes, and it has severe consequences for breaking index order of keyboard navigation.

Another problem this does not solve is the potential for infinite navigation loops with circular references using any of the nav-* properties. The specification should define that circular references are illegal, and it should also define recovery behavior when a rendering engine encounters circular navigation loops.

I mentioned both of these problems to Tantek at last years TPAC. I can&apos;t recall whether I sent a formal note to the list, but I will send a follow-up objection now.

The ime-mode property also seems problematic but I&apos;m not yet familiar enough with this part of the proposal to officially object. Why should a web page get to disable my Pinyin character window? The example given it would not allow extended set characters to be entered into a form, but it seems this would be better solved by either 1) simple form validation, or 2) regex accept patterns in HTML input. Allowing CSS to disable IMEs seems like overkill for this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883916</commentid>
    <comment_count>23</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-05-02 14:27:47 -0700</bug_when>
    <thetext>Bug 21279 tracks ime-mode, and I also had objections against it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884013</commentid>
    <comment_count>24</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-05-02 16:36:16 -0700</bug_when>
    <thetext>Sent objections to www-style:
http://lists.w3.org/Archives/Public/www-style/2013May/0076.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884279</commentid>
    <comment_count>25</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-05-03 12:19:34 -0700</bug_when>
    <thetext>David Baron says, &quot;The group resolved a few weeks ago to drop them from level 3&quot;
http://lists.w3.org/Archives/Public/www-style/2013Apr/0428.html

Any objections to closing this as &quot;RESOLVED INVALID&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884733</commentid>
    <comment_count>26</comment_count>
      <attachid>200300</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-05-05 12:57:08 -0700</bug_when>
    <thetext>Comment on attachment 200300
css3 keyboard navigation patch

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

It sounds like we shouldn&apos;t be implementing this at all. Regardless, r- because this should be behind an ENABLE-flag, and new features should be announced on webkit-dev.

&gt; Source/WebCore/rendering/style/StyleRareNonInheritedData.h:206
&gt; +    DataRef&lt;StyleNavDirection&gt; m_navUp;
&gt; +    DataRef&lt;StyleNavDirection&gt; m_navDown;
&gt; +    DataRef&lt;StyleNavDirection&gt; m_navLeft;
&gt; +    DataRef&lt;StyleNavDirection&gt; m_navRight;
&gt; +    DataRef&lt;StyleNavIndex&gt;     m_navIndex;

I don&apos;t like the idea of growing StyleRareNonInheritedData by 5 whole pointers for a single feature that&apos;s not used on the web yet. Can we make group this stuff under a single pointer here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902884</commentid>
    <comment_count>27</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-06-24 02:21:15 -0700</bug_when>
    <thetext>Likely a duplicate of bug 66027.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902981</commentid>
    <comment_count>28</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-06-24 09:31:47 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 66027 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198982</attachid>
            <date>2013-04-21 19:09:21 -0700</date>
            <delta_ts>2013-04-22 00:21:39 -0700</delta_ts>
            <desc>add the feature of css3 keyboard navigation</desc>
            <filename>css3_nav.patch</filename>
            <type>text/plain</type>
            <size>28326</size>
            <attacher name="Sangho Kim">thomas.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGU3NmUxZDAuLjZjMTQ3ZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDY5NSw2ICs0Njk1LDggQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNYXJxdWVl
RGF0YS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERh
dGEuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERh
dGEuaCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTmF2RGF0YS5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU5hdkRhdGEuaCBcCiAJU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdTaGFkZXIuaCBcCiAJU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggMTNhMGZjMS4uNmI5
YjY0OAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKQEAgLTEyOTYsNiArMTI5Niw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJlbmRl
cmluZy9zdHlsZS9TdHlsZVN1cnJvdW5kRGF0YS5jcHAgXAogICAgIHJlbmRlcmluZy9zdHlsZS9T
dHlsZVRyYW5zZm9ybURhdGEuY3BwIFwKICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxE
YXRhLmNwcCBcCisgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlTmF2RGF0YS5jcHAgXAogICAgIHN0
b3JhZ2UvU3RvcmFnZVRhc2suY3BwIFwKICAgICBzdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwIFwK
ICAgICBzdG9yYWdlL1N0b3JhZ2UuY3BwIFwKQEAgLTI1ODMsNiArMjU4NCw3IEBAIEhFQURFUlMg
Kz0gXAogICAgIHJlbmRlcmluZy9zdHlsZS9HcmlkVHJhY2tTaXplLmggXAogICAgIHJlbmRlcmlu
Zy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaCBcCiAgICAgcmVuZGVyaW5nL3N0eWxlL1NWR1Jl
bmRlclN0eWxlLmggXAorICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZU5hdkRhdGEuaCBcCiAgICAg
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oIFwKICAgICByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0NvbnRhaW5lci5oIFwKICAgICByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggODA1NDBkMC4uZjM2MDgx
NgotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cApAQCAtMTYyLDYgKzE2MiwxMSBAQCBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBjb21wdXRl
ZFByb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eU1heFdpZHRoLAogICAgIENTU1Byb3Bl
cnR5TWluSGVpZ2h0LAogICAgIENTU1Byb3BlcnR5TWluV2lkdGgsCisgICAgQ1NTUHJvcGVydHlO
YXZJbmRleCwKKyAgICBDU1NQcm9wZXJ0eU5hdkRvd24sCisgICAgQ1NTUHJvcGVydHlOYXZMZWZ0
LAorICAgIENTU1Byb3BlcnR5TmF2UmlnaHQsCisgICAgQ1NTUHJvcGVydHlOYXZVcCwKICAgICBD
U1NQcm9wZXJ0eU9wYWNpdHksCiAgICAgQ1NTUHJvcGVydHlPcnBoYW5zLAogICAgIENTU1Byb3Bl
cnR5T3V0bGluZUNvbG9yLApAQCAtMjA5MCw2ICsyMDk1LDM4IEBAIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQ
cm9wZXJ0CiAgICAgICAgICAgICBpZiAoc3R5bGUtPm1pbldpZHRoKCkuaXNBdXRvKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoMCwgc3R5bGUuZ2V0KCkp
OwogICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5
bGUtPm1pbldpZHRoKCksIHN0eWxlLmdldCgpKTsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU5h
dkluZGV4OiB7CisgICAgICAgICAgICBjb25zdCBTdHlsZU5hdkluZGV4KiBuYXYgPSBzdHlsZS0+
Z2V0TmF2SW5kZXgoKTsKKyAgICAgICAgICAgIGlmICghbmF2KQorICAgICAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgaWYgKG5hdi0+aXNBdXRvKCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQXV0byk7
CisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShuYXYtPmluZGV4
KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIENTU1Byb3BlcnR5TmF2RG93bjoKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdkxlZnQ6
CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZSaWdodDoKKyAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eU5hdlVwOiB7CisgICAgICAgICAgICBjb25zdCBTdHlsZU5hdkRhdGEqIG5hdiA9IHN0eWxl
LT5nZXROYXYocHJvcGVydHlJRCk7CisgICAgICAgICAgICBpZiAoIW5hdikKKyAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlmICghbmF2LT5uYXZUYXJnZXRUeXBlKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVy
KENTU1ZhbHVlQXV0byk7CisKKyAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsSWQ7Cisg
ICAgICAgICAgICB2YWxJZCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobmF2LT5pZCgpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VMRU1FTlRfSUQpOworCisgICAgICAgICAgICBpZiAobmF2
LT5uYXZUYXJnZXRUeXBlKCkgPT0gU3R5bGVOYXZEYXRhOjpOYXZUYXJnZXRDdXJyZW50KQorICAg
ICAgICAgICAgICAgIHJldHVybiB2YWxJZC5yZWxlYXNlKCk7CisKKyAgICAgICAgICAgIFJlZlB0
cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVk
KCk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQodmFsSWQucmVsZWFzZSgpKTsKKyAgICAgICAg
ICAgIGlmIChuYXYtPm5hdlRhcmdldFR5cGUoKSA9PSBTdHlsZU5hdkRhdGE6Ok5hdlRhcmdldE5h
bWUpCisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUobmF2LT50YXJnZXQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSURFTlRJRklF
UikpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVJvb3QpKTsKKyAgICAgICAg
ICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAgICAgICAgfQogICAgICAgICBjYXNlIENTU1By
b3BlcnR5T3BhY2l0eToKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVW
YWx1ZShzdHlsZS0+b3BhY2l0eSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPcnBoYW5zOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyYW1tYXIueS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnku
aW4Kb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA1MzllYTY4Li4zYjRiMjQz
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgpAQCAtODgsOSArODgsOSBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgaXNDU1NUb2tlbkFTdHJpbmcoaW50IHl5dHlwZSkKICV9CiAKICNpZiBFTkFCTEVfU0hB
RE9XX0RPTQotJWV4cGVjdCA2OAorJWV4cGVjdCA2OQogI2Vsc2UKLSVleHBlY3QgNjcKKyVleHBl
Y3QgNjgKICNlbmRpZgogCiAlbm9uYXNzb2MgTE9XRVNUX1BSRUMKQEAgLTE3NDksNiArMTc0OSwx
MSBAQCB0ZXJtOgogICB8IFVSSSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0g
JDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSTsgfQogICB8IFVOSUNPREVS
QU5HRSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOSUNPREVfUkFOR0U7IH0KICAgfCBIRVggbWF5YmVfc3Bh
Y2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0KKyAgfCBJRFNFTCBtYXliZV9zcGFjZSB7CisgICAg
ICAkJC5pZCA9IDA7CisgICAgICAkJC5zdHJpbmcgPSAkMTsKKyAgICAgICQkLnVuaXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0VMRU1FTlRfSUQ7CisgIH0KICAgfCAnIycgbWF5YmVfc3BhY2Ug
eyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9IENTU1BhcnNlclN0cmluZygpOyAkJC51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0gLyogSGFuZGxlIGVycm9yIGNh
c2U6ICJjb2xvcjogIzsiICovCiAgIHwgVkFSRlVOQ1RJT04gbWF5YmVfc3BhY2UgSURFTlQgJykn
IG1heWJlX3NwYWNlIHsKICNpZiBFTkFCTEVfQ1NTX1ZBUklBQkxFUwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDIwYzYwMTIuLjk2
OWI5ZDcKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTI5MzMsNyArMjkzMyw0NiBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQp
CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVNpZGV3YXlzIHx8IGlkID09IENTU1ZhbHVlU2lk
ZXdheXNSaWdodCB8fCBpZCA9PSBDU1NWYWx1ZVZlcnRpY2FsUmlnaHQgfHwgaWQgPT0gQ1NTVmFs
dWVVcHJpZ2h0KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5TmF2SW5kZXg6CisgICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZUF1dG8pIHsKKyAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAm
JiB2YWxpZFVuaXQodmFsdWUsIEZJbnRlZ2VyLCBDU1NRdWlya3NNb2RlKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZEb3duOgorICAgIGNhc2UgQ1NTUHJvcGVydHlO
YXZMZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZSaWdodDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5TmF2VXA6IHsKKyAgICAgICAgLy8gYXV0byB8IDxpZD4gWyBjdXJyZW50IHwgcm9vdCB8IDx0
YXJnZXQtbmFtZT4gXT8gfCBpbmhlcml0CisgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8p
IHsKKyAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKChudW0gPiAyKSB8fCAodmFsdWUtPnVuaXQgIT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1IgJiYgdmFsdWUtPnVuaXQgIT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTEVNRU5UX0lEKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbElkOworICAgICAgICB2YWxJZCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUtPnN0cmluZywgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19FTEVNRU5UX0lEKTsKKyAgICAgICAgdmFsdWUgPSBtX3ZhbHVlTGlzdC0+bmV4dCgp
OworCisgICAgICAgIGlmICgobnVtID09IDEpIHx8ICh2YWx1ZS0+dW5pdCAhPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0lERU5UKSkgeworICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcElkLCB2
YWxJZC5yZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQogCisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgIGxpc3QtPmFwcGVuZCh2YWxJZC5y
ZWxlYXNlKCkpOworICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbFRhcmdldDsKKyAgICAgICAg
aWYgKCh2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVSb290KSB8fCAodmFsdWUtPmlkID09IENTU1ZhbHVl
Q3VycmVudCkpCisgICAgICAgICAgICB2YWxUYXJnZXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlSWRlbnRpZmllcih2YWx1ZS0+aWQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2YWxU
YXJnZXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLT5zdHJpbmcsIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEFSU0VSX0lERU5USUZJRVIpOworICAgICAgICBsaXN0LT5hcHBlbmQo
dmFsVGFyZ2V0LnJlbGVhc2UoKSk7CisgICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwgbGlzdC5y
ZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJveENvbnRhaW46CiAgICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZU5vbmUpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUg
MTAwNzU1CmluZGV4IGFjZDc4NzcuLjFjM2M3YTEKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwCkBAIC0xMjQsNiArMTI0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRD
U1NVbml0VHlwZUZvckRvdWJsZUNvbnZlcnNpb24oQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXQKICNp
ZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
VkFSSUFCTEVfTkFNRToKICNlbmRpZgorICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19F
TEVNRU5UX0lEOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC03NjksNiArNzcw
LDggQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRTdHJpbmdWYWx1ZShFeGNlcHRpb25D
b2RlJiBlYykgY29uc3QKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICAgICAgY2FzZSBD
U1NfVkFSSUFCTEVfTkFNRToKICNlbmRpZgorICAgICAgICBjYXNlIENTU19QQVJTRVJfSURFTlRJ
RklFUjoKKyAgICAgICAgY2FzZSBDU1NfRUxFTUVOVF9JRDoKICAgICAgICAgICAgIHJldHVybiBt
X3ZhbHVlLnN0cmluZzsKICAgICAgICAgY2FzZSBDU1NfSURFTlQ6CiAgICAgICAgICAgICByZXR1
cm4gdmFsdWVPclByb3BlcnR5TmFtZShtX3ZhbHVlLmlkZW50KTsKQEAgLTc4OSw2ICs3OTIsOCBA
QCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmdldFN0cmluZ1ZhbHVlKCkgY29uc3QKICNpZiBF
TkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICAgICAgY2FzZSBDU1NfVkFSSUFCTEVfTkFNRToKICNl
bmRpZgorICAgICAgICBjYXNlIENTU19QQVJTRVJfSURFTlRJRklFUjoKKyAgICAgICAgY2FzZSBD
U1NfRUxFTUVOVF9JRDoKICAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLnN0cmluZzsKICAgICAg
ICAgY2FzZSBDU1NfSURFTlQ6CiAgICAgICAgICAgICByZXR1cm4gdmFsdWVPclByb3BlcnR5TmFt
ZShtX3ZhbHVlLmlkZW50KTsKQEAgLTEwOTgsNiArMTEwMyw5IEBAIFN0cmluZyBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgICAgIGNhc2UgQ1NTX1BBUlNFUl9J
REVOVElGSUVSOgogICAgICAgICAgICAgdGV4dCA9IHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQobV92
YWx1ZS5zdHJpbmcpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTX0VMRU1F
TlRfSUQ6CisgICAgICAgICAgICB0ZXh0ID0gIiMiICsgcXVvdGVDU1NTdHJpbmdJZk5lZWRlZCht
X3ZhbHVlLnN0cmluZyk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfQ0FM
QzoKICAgICAgICAgICAgIHRleHQgPSBtX3ZhbHVlLmNhbGMtPmNzc1RleHQoKTsKICAgICAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaApvbGQgbW9kZSAx
MDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGRhM2EzM2IuLjFmMDA5OTMKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTEzNCw2ICsxMzQsNyBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKENTU19WQVJJQUJMRVMpCiAgICAgICAgIENTU19WQVJJQUJMRV9OQU1FID0gMTE2LAogI2Vu
ZGlmCisgICAgICAgIENTU19FTEVNRU5UX0lEID0gMTE3LAogICAgIH07CiAKICAgICAvLyBUaGlz
IGVudW0gZm9sbG93cyB0aGUgQ1NTUGFyc2VyOjpVbml0cyBlbnVtIGF1Z21lbnRlZCB3aXRoIFVO
SVRfRlJFUVVFTkNZIGZvciBmcmVxdWVuY2llcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3Bw
Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggODE4ZWVkYi4uYmVjZDU3OQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAKQEAgLTcwNSw2ICs3MDUsMTIgQEAgYm9vbCBDU1NQcm9w
ZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiAjaWYg
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXREYXNo
Ym9hcmRSZWdpb246CiAjZW5kaWYKKyAgICBjYXNlIENTU1Byb3BlcnR5TmF2SW5kZXg6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eU5hdkRvd246CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdkxlZnQ6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eU5hdlJpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZVcDoK
KwogI2lmIEVOQUJMRShEUkFHR0FCTEVfUkVHSU9OKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRBcHBSZWdpb246CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4K
b2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA5YjI1ZDkwLi40MjA2MDNhCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCkBAIC0xMjIsNiArMTIyLDExIEBAIGxpc3Qt
c3R5bGUKIGxpc3Qtc3R5bGUtaW1hZ2UKIGxpc3Qtc3R5bGUtcG9zaXRpb24KIGxpc3Qtc3R5bGUt
dHlwZQorbmF2LWRvd24KK25hdi1sZWZ0CituYXYtcmlnaHQKK25hdi11cAorbmF2LWluZGV4CiBt
YXJnaW4KIG1hcmdpbi1ib3R0b20KIG1hcmdpbi1sZWZ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1
ZUtleXdvcmRzLmluCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggY2NhMWNm
MS4uMDJhYmFhOAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgpAQCAtMTAxNCw2ICsx
MDE0LDEwIEBAIGZyb20taW1hZ2UKIHNuYXAKICNlbmRpZgogCisvLyBuYXYtKgorY3VycmVudAor
cm9vdAorCiAvLyBvdmVyZmxvdwogLXdlYmtpdC1wYWdlZC14CiAtd2Via2l0LXBhZ2VkLXkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAw
NzU1CmluZGV4IDI3NjBhNzMuLjIxY2Q1YzQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApA
QCAtMjg4OSw4ICsyODg5LDgyIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShD
U1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgICAgIHN0YXRlLnN0eWxlKCkt
PnNldEdyaWRJdGVtQWZ0ZXIoYWZ0ZXJQb3NpdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdkluZGV4OiB7CisgICAgICAgIGlmIChpc0luaGVyaXQp
IHsKKyAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPmluaGVyaXROYXYoaWQsIHN0YXRlLnBhcmVu
dFN0eWxlKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJvb2wg
aXNBdXRvID0gKGlzSW5pdGlhbCB8fCBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NW
YWx1ZUF1dG8pOworCisgICAgICAgIFN0eWxlTmF2SW5kZXgqIG5hdiA9IHN0YXRlLnN0eWxlKCkt
PmFjY2Vzc05hdkluZGV4KCk7CisgICAgICAgIGlmICghbmF2KQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGlmIChpc0F1dG8pIHsKKyAgICAgICAgICAgIG5hdi0+c2V0SXNBdXRvKHRy
dWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAvLyBUaGVzZSBwcm9w
ZXJ0aWVzIGFyZSBhbGlhc2VkIGFuZCBEZXByZWNhdGVkU3R5bGVCdWlsZGVyIGFscmVhZHkgYXBw
bGllZCB0aGUgcHJvcGVydHkgb24gdGhlIHByZWZpeGVkIHZlcnNpb24uCisgICAgICAgIG5hdi0+
c2V0SXNBdXRvKGZhbHNlKTsKKyAgICAgICAgbmF2LT5zZXRJbmRleChtYXgoc3RhdGljX2Nhc3Q8
aW50PihzdGQ6Om51bWVyaWNfbGltaXRzPHNob3J0Pjo6bWluKCkpLCBtaW4ocHJpbWl0aXZlVmFs
dWUtPmdldEludFZhbHVlKCksIHN0YXRpY19jYXN0PGludD4oc3RkOjpudW1lcmljX2xpbWl0czxz
aG9ydD46Om1heCgpKSkpKTsKKyAgICAgICAgc3RhdGUuZWxlbWVudCgpLT5zZXRUYWJJbmRleEV4
cGxpY2l0bHkobmF2LT5pbmRleCgpKTsKKworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNh
c2UgQ1NTUHJvcGVydHlOYXZEb3duOgorICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZMZWZ0OgorICAg
IGNhc2UgQ1NTUHJvcGVydHlOYXZSaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TmF2VXA6IHsK
KyAgICAgICAgaWYgKGlzSW5oZXJpdCkgeworICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+aW5o
ZXJpdE5hdihpZCwgc3RhdGUucGFyZW50U3R5bGUoKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBib29sIGlzQXV0byA9IHByaW1pdGl2ZVZhbHVlICYmIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pOworICAgICAgICBpZiAoaXNB
dXRvKSB7CisgICAgICAgICAgICBjb25zdCBTdHlsZU5hdkRhdGEqIG9sZE5hdiA9IHN0YXRlLnN0
eWxlKCktPmdldE5hdihpZCk7CisgICAgICAgICAgICBpZiAoIW9sZE5hdiB8fCAhb2xkTmF2LT5u
YXZUYXJnZXRUeXBlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgU3R5bGVOYXZEYXRhKiBuYXYgPSBzdGF0ZS5zdHlsZSgpLT5hY2Nlc3NOYXYoaWQpOwor
ICAgICAgICBpZiAoIW5hdikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoaXNB
dXRvKSB7CisgICAgICAgICAgICBuYXYtPnNldE5hdlRhcmdldFR5cGUoU3R5bGVOYXZEYXRhOjpO
YXZOb25lKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZSkgeworICAgICAgICAgICAgbmF2LT5zZXROYXZUYXJnZXRUeXBlKFN0eWxl
TmF2RGF0YTo6TmF2VGFyZ2V0Q3VycmVudCk7CisgICAgICAgICAgICBuYXYtPnNldElkKHByaW1p
dGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsKKyAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS0+
aXNWYWx1ZUxpc3QoKSkgeworICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gc3RhdGlj
X2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOworICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0g
PSBsaXN0LT5pdGVtKDApOworICAgICAgICAgICAgaWYgKCFpdGVtIHx8ICFpdGVtLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAg
ICAgICAgICBuYXYtPnNldElkKHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsKKwor
ICAgICAgICAgICAgaXRlbSA9IGxpc3QtPml0ZW0oMSk7CisgICAgICAgICAgICBpZiAoaXRlbSAm
JiBpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICBwcmltaXRpdmVW
YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAgICAgICAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ3VycmVudCkK
KyAgICAgICAgICAgICAgICAgICAgbmF2LT5zZXROYXZUYXJnZXRUeXBlKFN0eWxlTmF2RGF0YTo6
TmF2VGFyZ2V0Q3VycmVudCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVSb290KQorICAgICAgICAgICAgICAgICAgICBuYXYt
PnNldE5hdlRhcmdldFR5cGUoU3R5bGVOYXZEYXRhOjpOYXZUYXJnZXRSb290KTsKKyAgICAgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbmF2LT5zZXROYXZUYXJnZXRUeXBl
KFN0eWxlTmF2RGF0YTo6TmF2VGFyZ2V0TmFtZSk7CisgICAgICAgICAgICAgICAgICAgIG5hdi0+
c2V0VGFyZ2V0KHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBuYXYtPnNldE5hdlRh
cmdldFR5cGUoU3R5bGVOYXZEYXRhOjpOYXZUYXJnZXRDdXJyZW50KTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgYXJlIGFsaWFzZWQg
YW5kIFN0eWxlQnVpbGRlciBhbHJlYWR5IGFwcGxpZWQgdGhlIHByb3BlcnR5IG9uIHRoZSBwcmVm
aXhlZCB2ZXJzaW9uLgogICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uRGVsYXk6CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25EdXJhdGlvbjoKICAgICBjYXNlIENTU1Byb3BlcnR5
VHJhbnNpdGlvblByb3BlcnR5OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBt
b2RlIDEwMDc1NQppbmRleCA1MTRmNTgwLi5mMGI0NGJmCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNjIzLDYg
KzYyMyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CiAKKyAgICB2b2lkIHNldFRhYkluZGV4
RXhwbGljaXRseShzaG9ydCk7CisKIHByb3RlY3RlZDoKICAgICBFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0
eXBlKQogICAgICAgICA6IENvbnRhaW5lck5vZGUoZG9jdW1lbnQsIHR5cGUpCkBAIC02NDMsNyAr
NjQ1LDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWdpc3RlckFzRXh0
cmFOYW1lZEl0ZW0oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBjbGVhclRh
YkluZGV4RXhwbGljaXRseUlmTmVlZGVkKCk7ICAgIAotICAgIHZvaWQgc2V0VGFiSW5kZXhFeHBs
aWNpdGx5KHNob3J0KTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgc2hvcnQgdGFiSW5kZXgoKSBjb25zdCBPVkVSUklERTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAx
MDA3NTUKaW5kZXggMGU4ZTM1Ny4uMjAzMmRiOAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CkBAIC0zNzM3LDkgKzM3MzcsNiBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZl
bnRIYW5kbGVyKEZvY3VzRGlyZWN0aW9uIGZvY3VzRGlyZWN0aW9uLCBLZXlibwogICAgIGlmICgh
cGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFpc1NwYXRpYWxOYXZpZ2F0aW9uRW5h
YmxlZChtX2ZyYW1lKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8gQXJyb3dzIGFuZCBvdGhl
ciBwb3NzaWJsZSBkaXJlY3Rpb25hbCBuYXZpZ2F0aW9uIGtleXMgY2FuIGJlIHVzZWQgaW4gZGVz
aWduCiAgICAgLy8gbW9kZSBlZGl0aW5nLgogICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT5p
bkRlc2lnbk1vZGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApvbGQg
bW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGFhZmMzM2MuLmIxYWRhZjUKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAtODQ5LDYgKzg0OSw1NSBAQCBib29sIEZv
Y3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShGb2N1c0RpcmVjdGlvbiBk
aXJlY3Rpb24sIEtleWJvYQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBOb2RlKiBmb2N1
c2VkTm9kZSA9IGZvY3VzZWREb2N1bWVudC0+Zm9jdXNlZE5vZGUoKTsKKyAgICBpZiAoZm9jdXNl
ZE5vZGUpIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGZvY3VzZWROb2RlLT5y
ZW5kZXJlcigpOworICAgICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSByZW5kZXJlciA/IHJlbmRl
cmVyLT5zdHlsZSgpIDogMDsKKyAgICAgICAgaWYgKHN0eWxlKSB7CisgICAgICAgICAgICBpbnQg
cHJvcElkID0gMDsKKyAgICAgICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgICAgICAg
ICBjYXNlIEZvY3VzRGlyZWN0aW9uVXA6CisgICAgICAgICAgICAgICAgcHJvcElkID0gQ1NTUHJv
cGVydHlOYXZVcDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRm9j
dXNEaXJlY3Rpb25Eb3duOgorICAgICAgICAgICAgICAgIHByb3BJZCA9IENTU1Byb3BlcnR5TmF2
RG93bjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRm9jdXNEaXJl
Y3Rpb25MZWZ0OgorICAgICAgICAgICAgICAgIHByb3BJZCA9IENTU1Byb3BlcnR5TmF2TGVmdDsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25S
aWdodDoKKyAgICAgICAgICAgICAgICBwcm9wSWQgPSBDU1NQcm9wZXJ0eU5hdlJpZ2h0OworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29uc3QgU3R5bGVOYXZEYXRh
KiBuYXYgPSBzdHlsZS0+Z2V0TmF2KHByb3BJZCk7CisgICAgICAgICAgICBpZiAobmF2ICYmIG5h
di0+bmF2VGFyZ2V0VHlwZSgpKSB7CisgICAgICAgICAgICAgICAgRnJhbWUqIHRhcmdldEZyYW1l
ID0gMDsKKyAgICAgICAgICAgICAgICBpZiAobmF2LT5uYXZUYXJnZXRUeXBlKCkgPT0gU3R5bGVO
YXZEYXRhOjpOYXZUYXJnZXRSb290KQorICAgICAgICAgICAgICAgICAgICB0YXJnZXRGcmFtZSA9
IGN1ckZyYW1lLT50cmVlKCktPnRvcCgpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hdi0+
bmF2VGFyZ2V0VHlwZSgpID09IFN0eWxlTmF2RGF0YTo6TmF2VGFyZ2V0TmFtZSkKKyAgICAgICAg
ICAgICAgICAgICAgdGFyZ2V0RnJhbWUgPSBjdXJGcmFtZS0+dHJlZSgpLT5maW5kKG5hdi0+dGFy
Z2V0KCkpOworCisgICAgICAgICAgICAgICAgRG9jdW1lbnQqIHRhcmdldERvY3VtZW50ID0gMDsK
KyAgICAgICAgICAgICAgICBpZiAodGFyZ2V0RnJhbWUpCisgICAgICAgICAgICAgICAgICAgIHRh
cmdldERvY3VtZW50ID0gdGFyZ2V0RnJhbWUtPmRvY3VtZW50KCk7CisgICAgICAgICAgICAgICAg
aWYgKCF0YXJnZXREb2N1bWVudCkKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0RG9jdW1lbnQg
PSBmb2N1c2VkRG9jdW1lbnQ7CisKKyAgICAgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0g
dGFyZ2V0RG9jdW1lbnQtPmdldEVsZW1lbnRCeUlkKG5hdi0+aWQoKSk7CisgICAgICAgICAgICAg
ICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgIT0gZm9jdXNlZE5vZGUpCisgICAgICAg
ICAgICAgICAgICAgICAgICBlbGVtZW50LT5mb2N1cyhmYWxzZSk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIGlmICghaXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoY3VyRnJh
bWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBOb2RlKiBjb250YWluZXIgPSBmb2N1
c2VkRG9jdW1lbnQ7CiAKICAgICBpZiAoY29udGFpbmVyLT5pc0RvY3VtZW50Tm9kZSgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKb2xkIG1vZGUg
MTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAxNjNmNDc4Li5kYzljZTkyCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTQ0LDYgKzE0NCwxMSBA
QCBBTFdBWVNfSU5MSU5FIFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShib29sKQogI2VuZGlmCiAg
ICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZ3JpZC5pbml0KCk7CiAgICAgcmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZ3JpZEl0ZW0uaW5pdCgpOworICAgIHJhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX25hdlVwLmluaXQoKTsKKyAgICByYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9uYXZEb3duLmluaXQoKTsKKyAgICByYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS0+bV9uYXZMZWZ0LmluaXQoKTsKKyAgICByYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS0+bV9uYXZSaWdodC5pbml0KCk7CisgICAgcmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCktPm1fbmF2SW5kZXguaW5pdCgpOwogICAgIHJhcmVJbmhlcml0ZWREYXRhLmlu
aXQoKTsKICAgICBpbmhlcml0ZWQuaW5pdCgpOwogI2lmIEVOQUJMRShTVkcpCkBAIC0xNjk1LDQg
KzE3MDAsNzIgQEAgdm9pZCBSZW5kZXJTdHlsZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBpbmZvLmFkZE1lbWJlcihub25p
bmhlcml0ZWRfZmxhZ3MsICJub25pbmhlcml0ZWRfZmxhZ3MiKTsKIH0KIAorY29uc3QgU3R5bGVO
YXZEYXRhKiBSZW5kZXJTdHlsZTo6Z2V0TmF2KGludCBwcm9wSWQpCit7CisgICAgc3dpdGNoIChz
dGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wSWQpKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eU5hdkRvd246CisgICAgICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9uYXZEb3du
LmdldCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZMZWZ0OgorICAgICAgICByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fbmF2TGVmdC5nZXQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
TmF2UmlnaHQ6CisgICAgICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9uYXZSaWdo
dC5nZXQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TmF2VXA6CisgICAgICAgIHJldHVybiByYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9uYXZVcC5nZXQoKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK2NvbnN0IFN0eWxlTmF2SW5kZXgqIFJl
bmRlclN0eWxlOjpnZXROYXZJbmRleCgpCit7CisgICAgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX25hdkluZGV4LmdldCgpOworfQorCitTdHlsZU5hdkluZGV4KiBSZW5kZXJTdHlsZTo6
YWNjZXNzTmF2SW5kZXgoKQoreworICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS0+bV9uYXZJbmRleC5hY2Nlc3MoKTsKK30KKworU3R5bGVOYXZEYXRhKiBSZW5kZXJTdHls
ZTo6YWNjZXNzTmF2KGludCBwcm9wSWQpCit7CisgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxDU1NQ
cm9wZXJ0eUlEPihwcm9wSWQpKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdkRvd246CisgICAg
ICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9uYXZEb3duLmFjY2Vz
cygpOworICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZMZWZ0OgorICAgICAgICByZXR1cm4gcmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbmF2TGVmdC5hY2Nlc3MoKTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5TmF2UmlnaHQ6CisgICAgICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS0+bV9uYXZSaWdodC5hY2Nlc3MoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TmF2VXA6
CisgICAgICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9uYXZVcC5h
Y2Nlc3MoKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJu
IDA7Cit9CisKK3ZvaWQgUmVuZGVyU3R5bGU6OmluaGVyaXROYXYoaW50IHByb3BJZCwgY29uc3Qg
UmVuZGVyU3R5bGUqIGluaGVyaXRQYXJlbnQpCit7CisgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxD
U1NQcm9wZXJ0eUlEPihwcm9wSWQpKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdkRvd246Cisg
ICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX25hdkRvd24gPSBpbmhlcml0
UGFyZW50LT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9uYXZEb3duOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENTU1Byb3BlcnR5TmF2TGVmdDoKKyAgICAgICAgcmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCktPm1fbmF2TGVmdCA9IGluaGVyaXRQYXJlbnQtPnJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX25hdkxlZnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZS
aWdodDoKKyAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbmF2UmlnaHQg
PSBpbmhlcml0UGFyZW50LT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9uYXZSaWdodDsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdlVwOgorICAgICAgICByYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9uYXZVcCA9IGluaGVyaXRQYXJlbnQtPnJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX25hdlVwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5
TmF2SW5kZXg6CisgICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX25hdklu
ZGV4ID0gaW5oZXJpdFBhcmVudC0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbmF2SW5kZXg7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggNGRh
ZmUxMi4uNmE0MzY0YwotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aApAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgIlN0eWxlR3JpZEl0ZW1EYXRhLmgiCiAjaW5j
bHVkZSAiU3R5bGVNYXJxdWVlRGF0YS5oIgogI2luY2x1ZGUgIlN0eWxlTXVsdGlDb2xEYXRhLmgi
CisjaW5jbHVkZSAiU3R5bGVOYXZEYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVSYXJlSW5oZXJpdGVk
RGF0YS5oIgogI2luY2x1ZGUgIlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaCIKICNpbmNsdWRl
ICJTdHlsZVJlZmxlY3Rpb24uaCIKQEAgLTE3NjUsNiArMTc2NiwxMiBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKENTU19DT01QT1NJVElORykKICAgICBzdGF0aWMgQmxlbmRNb2RlIGluaXRpYWxCbGVu
ZE1vZGUoKSB7IHJldHVybiBCbGVuZE1vZGVOb3JtYWw7IH0KICNlbmRpZgorICAgIGNvbnN0IFN0
eWxlTmF2RGF0YSogZ2V0TmF2KGludCBwcm9wSWQpOworICAgIFN0eWxlTmF2RGF0YSogYWNjZXNz
TmF2KGludCBwcm9wSWQpOworICAgIGNvbnN0IFN0eWxlTmF2SW5kZXgqIGdldE5hdkluZGV4KCk7
CisgICAgU3R5bGVOYXZJbmRleCogYWNjZXNzTmF2SW5kZXgoKTsKKyAgICB2b2lkIGluaGVyaXRO
YXYoaW50IHByb3BJZCwgY29uc3QgUmVuZGVyU3R5bGUqIGluaGVyaXRQYXJlbnQpOworCiBwcml2
YXRlOgogICAgIHZvaWQgc2V0VmlzaXRlZExpbmtDb2xvcihjb25zdCBDb2xvciYpOwogICAgIHZv
aWQgc2V0VmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xvciwgdik7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1
CmluZGV4IDBjOThkMzQuLjRjMmIzYTEKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcApAQCAtMTcyLDYgKzE3
MiwxMiBAQCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhKGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJ
TkcpCiAgICAgLCBtX2VmZmVjdGl2ZUJsZW5kTW9kZShvLm1fZWZmZWN0aXZlQmxlbmRNb2RlKQog
I2VuZGlmCisgICAgLCBtX25hdlVwKG8ubV9uYXZVcCkKKyAgICAsIG1fbmF2RG93bihvLm1fbmF2
RG93bikKKyAgICAsIG1fbmF2TGVmdChvLm1fbmF2TGVmdCkKKyAgICAsIG1fbmF2UmlnaHQoby5t
X25hdlJpZ2h0KQorICAgICwgbV9uYXZJbmRleChvLm1fbmF2SW5kZXgpCisKIHsKIH0KIApAQCAt
MjYwLDYgKzI2NiwxMSBAQCBib29sIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om9wZXJhdG9y
PT0oY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYgbykgYwogI2lmIEVOQUJMRShDU1Nf
Q09NUE9TSVRJTkcpCiAgICAgICAgICYmIG1fZWZmZWN0aXZlQmxlbmRNb2RlID09IG8ubV9lZmZl
Y3RpdmVCbGVuZE1vZGUKICNlbmRpZgorICAgICAgICAmJiBtX25hdlVwID09IG8ubV9uYXZVcAor
ICAgICAgICAmJiBtX25hdkRvd24gPT0gby5tX25hdkRvd24KKyAgICAgICAgJiYgbV9uYXZMZWZ0
ID09IG8ubV9uYXZMZWZ0CisgICAgICAgICYmIG1fbmF2UmlnaHQgPT0gby5tX25hdlJpZ2h0Cisg
ICAgICAgICYmIG1fbmF2SW5kZXggPT0gby5tX25hdkluZGV4CiAgICAgICAgICYmIG1faGFzQXNw
ZWN0UmF0aW8gPT0gby5tX2hhc0FzcGVjdFJhdGlvOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaApv
bGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDlhYmE2ZjEuLmRkZjI3ZjkKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRmlsbExheWVyLmgiCiAj
aW5jbHVkZSAiTGluZUNsYW1wVmFsdWUuaCIKICNpbmNsdWRlICJOaW5lUGllY2VJbWFnZS5oIgor
I2luY2x1ZGUgIlN0eWxlTmF2RGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTE5OSw2
ICsyMDAsMTIgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG1fZWZmZWN0aXZlQmxlbmRNb2RlOiA1
OyAvLyBFQmxlbmRNb2RlCiAjZW5kaWYKIAorICAgIERhdGFSZWY8U3R5bGVOYXZEYXRhPiBtX25h
dlVwOworICAgIERhdGFSZWY8U3R5bGVOYXZEYXRhPiBtX25hdkRvd247CisgICAgRGF0YVJlZjxT
dHlsZU5hdkRhdGE+IG1fbmF2TGVmdDsKKyAgICBEYXRhUmVmPFN0eWxlTmF2RGF0YT4gbV9uYXZS
aWdodDsKKyAgICBEYXRhUmVmPFN0eWxlTmF2SW5kZXg+IG1fbmF2SW5kZXg7CisKIHByaXZhdGU6
CiAgICAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSgpOwogICAgIFN0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTmF2RGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVOYXZEYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCAwMDAwMDAwLi44NTlhZWY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTmF2RGF0YS5jcHAKQEAgLTAsMCArMSw1MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW5naG8gS2ltICh0aG9tYXMua2ltQGxnZS5jb20p
CisgKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3R5bGVO
YXZEYXRhLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3R5bGVOYXZEYXRhOjpTdHlsZU5h
dkRhdGEoKQorICAgIDogbV9pZCgiIikKKyAgICAsIG1fdGFyZ2V0KCIiKQorICAgICwgbV9uYXZU
YXJnZXRUeXBlKE5hdk5vbmUpCit7Cit9CisKK1N0eWxlTmF2RGF0YTo6U3R5bGVOYXZEYXRhKGNv
bnN0IFN0eWxlTmF2RGF0YSYgbykKKyAgICA6IFJlZkNvdW50ZWQ8U3R5bGVOYXZEYXRhPigpCisg
ICAgLCBtX2lkKG8ubV9pZCkKKyAgICAsIG1fdGFyZ2V0KG8ubV90YXJnZXQpCisgICAgLCBtX25h
dlRhcmdldFR5cGUoby5tX25hdlRhcmdldFR5cGUpCit7Cit9CisKK2Jvb2wgU3R5bGVOYXZEYXRh
OjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlTmF2RGF0YSYgbykgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9uYXZUYXJnZXRUeXBlID09IG8ubV9uYXZUYXJnZXRUeXBlICYmIG1faWQgPT0gby5tX2lkICYm
IG1fdGFyZ2V0ID09IG8ubV90YXJnZXQ7Cit9CisKK1N0eWxlTmF2SW5kZXg6OlN0eWxlTmF2SW5k
ZXgoKQorICAgIDogbV9pbmRleCgwKQorICAgICwgbV9pc0F1dG8odHJ1ZSkKK3sKK30KKworU3R5
bGVOYXZJbmRleDo6U3R5bGVOYXZJbmRleChjb25zdCBTdHlsZU5hdkluZGV4JiBvKQorICAgIDog
UmVmQ291bnRlZDxTdHlsZU5hdkluZGV4PigpCisgICAgLCBtX2luZGV4KG8ubV9pbmRleCkKKyAg
ICAsIG1faXNBdXRvKG8ubV9pc0F1dG8pCit7Cit9CisKK2Jvb2wgU3R5bGVOYXZJbmRleDo6b3Bl
cmF0b3I9PShjb25zdCBTdHlsZU5hdkluZGV4JiBvKSBjb25zdAoreworICAgIHJldHVybiAoKG1f
aXNBdXRvIHx8IG8ubV9pc0F1dG8pID8gbV9pc0F1dG8gPT0gby5tX2lzQXV0byA6IG1faW5kZXgg
PT0gby5tX2luZGV4KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVOYXZEYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVOYXZEYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA3
NTUKaW5kZXggMDAwMDAwMC4uNmJjMzA2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU5hdkRhdGEuaApAQCAtMCwwICsxLDc0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbmdobyBLaW0gKHRob21hcy5raW1AbGdlLmNvbSkKKyAq
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICovCisKKyNpZm5kZWYgU3R5bGVOYXZEYXRhX2gKKyNkZWZpbmUgU3R5bGVOYXZE
YXRhX2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBTdHlsZU5hdkRhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZU5h
dkRhdGE+IHsKK3B1YmxpYzoKKyAgICBlbnVtIE5hdlRhcmdldFR5cGUgeworICAgICAgICBOYXZO
b25lID0gMCwKKyAgICAgICAgTmF2VGFyZ2V0Q3VycmVudCA9IDEsCisgICAgICAgIE5hdlRhcmdl
dE5hbWUgPSAyLAorICAgICAgICBOYXZUYXJnZXRSb290ID0gNCwKKyAgICB9OworCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3R5bGVOYXZEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgU3R5bGVOYXZEYXRhKTsgfQorICAgIFBhc3NSZWZQdHI8U3R5bGVOYXZEYXRhPiBjb3B5KCkg
Y29uc3QgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlTmF2RGF0YSgqdGhpcykpOyB9CisKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVOYXZEYXRhJikgY29uc3Q7CisgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFN0eWxlTmF2RGF0YSYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9
PSBvKTsgfQorCisgICAgY29uc3QgU3RyaW5nJiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0K
KyAgICB2b2lkIHNldElkKGNvbnN0IFN0cmluZyYgaXRlbSkgeyBtX2lkID0gaXRlbTsgfQorICAg
IGNvbnN0IFN0cmluZyYgdGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXQ7IH0KKyAgICB2
b2lkIHNldFRhcmdldChjb25zdCBTdHJpbmcmIGl0ZW0pIHsgbV90YXJnZXQgPSBpdGVtOyB9Cisg
ICAgdW5zaWduZWQgY2hhciBuYXZUYXJnZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9uYXZUYXJn
ZXRUeXBlOyB9CisgICAgdm9pZCBzZXROYXZUYXJnZXRUeXBlKGNvbnN0IHVuc2lnbmVkIGNoYXIg
aXRlbSkgeyBtX25hdlRhcmdldFR5cGUgPSBpdGVtOyB9CisKK3ByaXZhdGU6CisgICAgU3R5bGVO
YXZEYXRhKCk7CisgICAgU3R5bGVOYXZEYXRhKGNvbnN0IFN0eWxlTmF2RGF0YSYpOworCisgICAg
U3RyaW5nIG1faWQ7CisgICAgU3RyaW5nIG1fdGFyZ2V0OworICAgIHVuc2lnbmVkIGNoYXIgbV9u
YXZUYXJnZXRUeXBlOworCit9OworCitjbGFzcyBTdHlsZU5hdkluZGV4IDogcHVibGljIFJlZkNv
dW50ZWQ8U3R5bGVOYXZJbmRleD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
eWxlTmF2SW5kZXg+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZU5hdkluZGV4
KTsgfQorICAgIFBhc3NSZWZQdHI8U3R5bGVOYXZJbmRleD4gY29weSgpIGNvbnN0IHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTdHlsZU5hdkluZGV4KCp0aGlzKSk7IH0KKworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTdHlsZU5hdkluZGV4JikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFN0eWxlTmF2SW5kZXgmIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KKwor
ICAgIGludCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICB2b2lkIHNldElu
ZGV4KGNvbnN0IGludCBpdGVtKSB7IG1faW5kZXggPSBpdGVtOyB9CisgICAgYm9vbCBpc0F1dG8o
KSBjb25zdCB7IHJldHVybiBtX2lzQXV0bzsgfQorICAgIHZvaWQgc2V0SXNBdXRvKGNvbnN0IGJv
b2wgaXRlbSkgeyBtX2lzQXV0byA9IGl0ZW07IH0KKworcHJpdmF0ZToKKyAgICBTdHlsZU5hdklu
ZGV4KCk7CisgICAgU3R5bGVOYXZJbmRleChjb25zdCBTdHlsZU5hdkluZGV4Jik7CisKKyAgICBp
bnQgbV9pbmRleDsKKyAgICBib29sIG1faXNBdXRvOworCit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBTdHlsZU5hdkRhdGFfaAorCgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1
NQppbmRleCAzZjJkNzUxLi4yOTI1NDg0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cmVmZXJlbmNlc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzU3RvcmUuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogLy8gbWFj
cm8oS2V5VXBwZXIsIEtleUxvd2VyLCBUeXBlTmFtZVVwcGVyLCBUeXBlTmFtZSwgRGVmYXVsdFZh
bHVlKSAKIAotI2lmIFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KFFUKQogI2RlZmluZSBERUZBVUxUX1dFQktJVF9UQUJTVE9MSU5LU19FTkFCTEVEIHRydWUKICNl
bHNlCiAjZGVmaW5lIERFRkFVTFRfV0VCS0lUX1RBQlNUT0xJTktTX0VOQUJMRUQgZmFsc2UK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199152</attachid>
            <date>2013-04-22 22:53:35 -0700</date>
            <delta_ts>2013-04-24 22:29:46 -0700</delta_ts>
            <desc>add change log and license</desc>
            <filename>css_nav_2.patch</filename>
            <type>text/plain</type>
            <size>31597</size>
            <attacher name="Sangho Kim">thomas.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwpvbGQgbW9kZSAxMDA2NDQKbmV3IG1v
ZGUgMTAwNzU1CmluZGV4IDFiYzEzZWMuLjUyMDg3ODYKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEzLTA0LTIzICBTYW5naG8gS2ltICA8dGhvbWFz
LmtpbUBsZ2UuY29tPgorCisgICAgICAgIFtDU1MzXVN1cHBvcnQgQ1NTMyBrZXlib2FyZCBuYXZp
Z2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NTE3OC4KKworICAgICAgICBSZXZpZXdlZCBieSAuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IENTUzMgS2V5Ym9hcmQgY29udHJvbCBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MzLXVpLyNr
ZXlib2FyZC4KKyAgICAgICAgdGhlIG5ldyBwcm9wZXJ0aWVzOiBuYXYtaW5kZXgsIG5hdi11cCwg
bmF2LXJpZ2h0LCBuYXYtZG93biwgbmF2LWxlZnQuCisKKyAgICAgICAgKiBTb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkKKyAgICAgICAgKiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAorICAgICAgICAqIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KKyAg
ICAgICAgKiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorICAgICAgICAqIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKyAgICAgICAgKiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAorICAgICAgICAqIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eS5jcHAKKyAgICAgICAgKiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHlOYW1lcy5pbgorICAgICAgICAqIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRz
LmluCisgICAgICAgICogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisgICAg
ICAgICogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorICAgICAgICAqIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorICAgICAgICAqIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Rm9jdXNDb250cm9sbGVyLmNwcAorICAgICAgICAqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAKKyAgICAgICAgKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaAorICAgICAgICAqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAorICAgICAgICAqIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKKyAgICAgICAg
KiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVOYXZEYXRhLmNwcAorICAgICAg
ICAqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU5hdkRhdGEuaAorICAgICAg
ICAqIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKKwogMjAxMy0w
NC0yMCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgRW5h
YmxlIHN1Yi1waXhlbCBsYXlvdXQgZm9yIHRoZSBHVEsgcG9ydApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0Kb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBkMjMzZWUxLi43
MGFiOTMxCi0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDcxOSw2ICs0NzE5LDggQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVN
YXJxdWVlRGF0YS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0
aUNvbERhdGEuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0
aUNvbERhdGEuaCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTmF2RGF0
YS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU5hdkRhdGEuaCBc
CiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmggXAog
CVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdTaGFkZXIuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3Bw
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggMjdhNjBk
Mi4uMDVlM2Q5MQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEyOTcsNiArMTI5Nyw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IHJlbmRlcmluZy9zdHlsZS9TdHlsZVN1cnJvdW5kRGF0YS5jcHAgXAogICAgIHJlbmRlcmluZy9z
dHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuY3BwIFwKICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVW
aXN1YWxEYXRhLmNwcCBcCisgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlTmF2RGF0YS5jcHAgXAog
ICAgIHN0b3JhZ2UvU3RvcmFnZVRhc2suY3BwIFwKICAgICBzdG9yYWdlL1N0b3JhZ2VUaHJlYWQu
Y3BwIFwKICAgICBzdG9yYWdlL1N0b3JhZ2UuY3BwIFwKQEAgLTI1ODYsNiArMjU4Nyw3IEBAIEhF
QURFUlMgKz0gXAogICAgIHJlbmRlcmluZy9zdHlsZS9HcmlkVHJhY2tTaXplLmggXAogICAgIHJl
bmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaCBcCiAgICAgcmVuZGVyaW5nL3N0eWxl
L1NWR1JlbmRlclN0eWxlLmggXAorICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZU5hdkRhdGEuaCBc
CiAgICAgcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oIFwKICAgICByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0NvbnRhaW5lci5oIFwKICAgICByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlw
c2UuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggYzEwYTY1YS4u
ZGFhODU3MQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcApAQCAtMTYzLDYgKzE2MywxMSBAQCBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBj
b21wdXRlZFByb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eU1heFdpZHRoLAogICAgIENT
U1Byb3BlcnR5TWluSGVpZ2h0LAogICAgIENTU1Byb3BlcnR5TWluV2lkdGgsCisgICAgQ1NTUHJv
cGVydHlOYXZJbmRleCwKKyAgICBDU1NQcm9wZXJ0eU5hdkRvd24sCisgICAgQ1NTUHJvcGVydHlO
YXZMZWZ0LAorICAgIENTU1Byb3BlcnR5TmF2UmlnaHQsCisgICAgQ1NTUHJvcGVydHlOYXZVcCwK
ICAgICBDU1NQcm9wZXJ0eU9wYWNpdHksCiAgICAgQ1NTUHJvcGVydHlPcnBoYW5zLAogICAgIENT
U1Byb3BlcnR5T3V0bGluZUNvbG9yLApAQCAtMjEwMCw2ICsyMTA1LDM4IEBAIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1
ZShDU1NQcm9wZXJ0CiAgICAgICAgICAgICBpZiAoc3R5bGUtPm1pbldpZHRoKCkuaXNBdXRvKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoMCwgc3R5bGUu
Z2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5n
dGgoc3R5bGUtPm1pbldpZHRoKCksIHN0eWxlLmdldCgpKTsKKyAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eU5hdkluZGV4OiB7CisgICAgICAgICAgICBjb25zdCBTdHlsZU5hdkluZGV4KiBuYXYgPSBz
dHlsZS0+Z2V0TmF2SW5kZXgoKTsKKyAgICAgICAgICAgIGlmICghbmF2KQorICAgICAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICAgICAgaWYgKG5hdi0+aXNBdXRvKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVl
QXV0byk7CisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShuYXYt
PmluZGV4KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5TmF2RG93bjoKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU5h
dkxlZnQ6CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZSaWdodDoKKyAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eU5hdlVwOiB7CisgICAgICAgICAgICBjb25zdCBTdHlsZU5hdkRhdGEqIG5hdiA9
IHN0eWxlLT5nZXROYXYocHJvcGVydHlJRCk7CisgICAgICAgICAgICBpZiAoIW5hdikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlmICghbmF2LT5uYXZUYXJnZXRUeXBl
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVu
dGlmaWVyKENTU1ZhbHVlQXV0byk7CisKKyAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFs
SWQ7CisgICAgICAgICAgICB2YWxJZCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobmF2LT5p
ZCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VMRU1FTlRfSUQpOworCisgICAgICAgICAgICBp
ZiAobmF2LT5uYXZUYXJnZXRUeXBlKCkgPT0gU3R5bGVOYXZEYXRhOjpOYXZUYXJnZXRDdXJyZW50
KQorICAgICAgICAgICAgICAgIHJldHVybiB2YWxJZC5yZWxlYXNlKCk7CisKKyAgICAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2Vw
YXJhdGVkKCk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQodmFsSWQucmVsZWFzZSgpKTsKKyAg
ICAgICAgICAgIGlmIChuYXYtPm5hdlRhcmdldFR5cGUoKSA9PSBTdHlsZU5hdkRhdGE6Ok5hdlRh
cmdldE5hbWUpCisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUobmF2LT50YXJnZXQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSURF
TlRJRklFUikpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVJvb3QpKTsKKyAg
ICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAgICAgICAgfQogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5T3BhY2l0eToKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5j
cmVhdGVWYWx1ZShzdHlsZS0+b3BhY2l0eSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
Uik7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPcnBoYW5zOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFt
bWFyLnkuaW4Kb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA1MzllYTY4Li4z
YjRiMjQzCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgpAQCAtODgsOSArODgsOSBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgaXNDU1NUb2tlbkFTdHJpbmcoaW50IHl5dHlwZSkKICV9CiAKICNpZiBFTkFC
TEVfU0hBRE9XX0RPTQotJWV4cGVjdCA2OAorJWV4cGVjdCA2OQogI2Vsc2UKLSVleHBlY3QgNjcK
KyVleHBlY3QgNjgKICNlbmRpZgogCiAlbm9uYXNzb2MgTE9XRVNUX1BSRUMKQEAgLTE3NDksNiAr
MTc0OSwxMSBAQCB0ZXJtOgogICB8IFVSSSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3Ry
aW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSTsgfQogICB8IFVO
SUNPREVSQU5HRSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVu
aXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOSUNPREVfUkFOR0U7IH0KICAgfCBIRVggbWF5
YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0KKyAgfCBJRFNFTCBtYXliZV9zcGFjZSB7
CisgICAgICAkJC5pZCA9IDA7CisgICAgICAkJC5zdHJpbmcgPSAkMTsKKyAgICAgICQkLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VMRU1FTlRfSUQ7CisgIH0KICAgfCAnIycgbWF5YmVf
c3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9IENTU1BhcnNlclN0cmluZygpOyAkJC51bml0
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0gLyogSGFuZGxlIGVy
cm9yIGNhc2U6ICJjb2xvcjogIzsiICovCiAgIHwgVkFSRlVOQ1RJT04gbWF5YmVfc3BhY2UgSURF
TlQgJyknIG1heWJlX3NwYWNlIHsKICNpZiBFTkFCTEVfQ1NTX1ZBUklBQkxFUwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGE5MTg0
NTAuLjVjMWZmMjgKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTI5MzMsNyArMjkzMyw0NiBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBv
cnRhbnQpCiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVNpZGV3YXlzIHx8IGlkID09IENTU1Zh
bHVlU2lkZXdheXNSaWdodCB8fCBpZCA9PSBDU1NWYWx1ZVZlcnRpY2FsUmlnaHQgfHwgaWQgPT0g
Q1NTVmFsdWVVcHJpZ2h0KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5TmF2SW5kZXg6CisgICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZUF1dG8pIHsKKyAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
KCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZJbnRlZ2VyLCBDU1NRdWlya3NNb2RlKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZEb3duOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlOYXZMZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZSaWdodDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5TmF2VXA6IHsKKyAgICAgICAgLy8gYXV0byB8IDxpZD4gWyBjdXJyZW50IHwgcm9v
dCB8IDx0YXJnZXQtbmFtZT4gXT8gfCBpbmhlcml0CisgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZUF1dG8pIHsKKyAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKChudW0gPiAyKSB8fCAodmFsdWUtPnVu
aXQgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1IgJiYgdmFsdWUtPnVu
aXQgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTEVNRU5UX0lEKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbElkOworICAgICAgICB2
YWxJZCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUtPnN0cmluZywgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19FTEVNRU5UX0lEKTsKKyAgICAgICAgdmFsdWUgPSBtX3ZhbHVlTGlzdC0+
bmV4dCgpOworCisgICAgICAgIGlmICgobnVtID09IDEpIHx8ICh2YWx1ZS0+dW5pdCAhPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKSkgeworICAgICAgICAgICAgYWRkUHJvcGVydHkocHJv
cElkLCB2YWxJZC5yZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQogCisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgIGxpc3QtPmFwcGVuZCh2
YWxJZC5yZWxlYXNlKCkpOworICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbFRhcmdldDsKKyAg
ICAgICAgaWYgKCh2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVSb290KSB8fCAodmFsdWUtPmlkID09IENT
U1ZhbHVlQ3VycmVudCkpCisgICAgICAgICAgICB2YWxUYXJnZXQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlSWRlbnRpZmllcih2YWx1ZS0+aWQpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICB2YWxUYXJnZXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLT5zdHJpbmcsIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEFSU0VSX0lERU5USUZJRVIpOworICAgICAgICBsaXN0LT5h
cHBlbmQodmFsVGFyZ2V0LnJlbGVhc2UoKSk7CisgICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwg
bGlzdC5yZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJveENvbnRhaW46CiAgICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApvbGQgbW9kZSAxMDA2NDQKbmV3
IG1vZGUgMTAwNzU1CmluZGV4IDZmMzVlZTMuLjM4ZjIyN2MKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWUuY3BwCkBAIC0xMjQsNiArMTI0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlz
VmFsaWRDU1NVbml0VHlwZUZvckRvdWJsZUNvbnZlcnNpb24oQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXQKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfVkFSSUFCTEVfTkFNRToKICNlbmRpZgorICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19FTEVNRU5UX0lEOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC03Njks
NiArNzcwLDggQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRTdHJpbmdWYWx1ZShFeGNl
cHRpb25Db2RlJiBlYykgY29uc3QKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICAgICAg
Y2FzZSBDU1NfVkFSSUFCTEVfTkFNRToKICNlbmRpZgorICAgICAgICBjYXNlIENTU19QQVJTRVJf
SURFTlRJRklFUjoKKyAgICAgICAgY2FzZSBDU1NfRUxFTUVOVF9JRDoKICAgICAgICAgICAgIHJl
dHVybiBtX3ZhbHVlLnN0cmluZzsKICAgICAgICAgY2FzZSBDU1NfSURFTlQ6CiAgICAgICAgICAg
ICByZXR1cm4gdmFsdWVPclByb3BlcnR5TmFtZShtX3ZhbHVlLmlkZW50KTsKQEAgLTc4OSw2ICs3
OTIsOCBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmdldFN0cmluZ1ZhbHVlKCkgY29uc3QK
ICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICAgICAgY2FzZSBDU1NfVkFSSUFCTEVfTkFN
RToKICNlbmRpZgorICAgICAgICBjYXNlIENTU19QQVJTRVJfSURFTlRJRklFUjoKKyAgICAgICAg
Y2FzZSBDU1NfRUxFTUVOVF9JRDoKICAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLnN0cmluZzsK
ICAgICAgICAgY2FzZSBDU1NfSURFTlQ6CiAgICAgICAgICAgICByZXR1cm4gdmFsdWVPclByb3Bl
cnR5TmFtZShtX3ZhbHVlLmlkZW50KTsKQEAgLTEwOTgsNiArMTEwMyw5IEBAIFN0cmluZyBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgICAgIGNhc2UgQ1NTX1BB
UlNFUl9JREVOVElGSUVSOgogICAgICAgICAgICAgdGV4dCA9IHF1b3RlQ1NTU3RyaW5nSWZOZWVk
ZWQobV92YWx1ZS5zdHJpbmcpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NT
X0VMRU1FTlRfSUQ6CisgICAgICAgICAgICB0ZXh0ID0gIiMiICsgcXVvdGVDU1NTdHJpbmdJZk5l
ZWRlZChtX3ZhbHVlLnN0cmluZyk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
U1NfQ0FMQzoKICAgICAgICAgICAgIHRleHQgPSBtX3ZhbHVlLmNhbGMtPmNzc1RleHQoKTsKICAg
ICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaApvbGQg
bW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDg5MjIzYzAuLjNiMGJiYjcKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTEzNCw2ICsxMzQsNyBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgICAgIENTU19WQVJJQUJMRV9OQU1FID0gMTE2
LAogI2VuZGlmCisgICAgICAgIENTU19FTEVNRU5UX0lEID0gMTI3LAogICAgIH07CiAKICAgICAv
LyBUaGlzIGVudW0gZm9sbG93cyB0aGUgQ1NTUGFyc2VyOjpVbml0cyBlbnVtIGF1Z21lbnRlZCB3
aXRoIFVOSVRfRlJFUVVFTkNZIGZvciBmcmVxdWVuY2llcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHkuY3BwCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggODE4ZWVkYi4uYmVj
ZDU3OQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAKQEAgLTcwNSw2ICs3MDUsMTIgQEAgYm9vbCBD
U1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQp
CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXREYXNoYm9hcmRSZWdpb246CiAjZW5kaWYKKyAgICBjYXNlIENTU1Byb3BlcnR5TmF2SW5kZXg6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdkRvd246CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdkxl
ZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdlJpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlO
YXZVcDoKKwogI2lmIEVOQUJMRShEUkFHR0FCTEVfUkVHSU9OKQogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRBcHBSZWdpb246CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFt
ZXMuaW4Kb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA5YjI1ZDkwLi40MjA2
MDNhCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCkBAIC0xMjIsNiArMTIyLDExIEBA
IGxpc3Qtc3R5bGUKIGxpc3Qtc3R5bGUtaW1hZ2UKIGxpc3Qtc3R5bGUtcG9zaXRpb24KIGxpc3Qt
c3R5bGUtdHlwZQorbmF2LWRvd24KK25hdi1sZWZ0CituYXYtcmlnaHQKK25hdi11cAorbmF2LWlu
ZGV4CiBtYXJnaW4KIG1hcmdpbi1ib3R0b20KIG1hcmdpbi1sZWZ0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZUtleXdvcmRzLmluCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXgg
Y2NhMWNmMS4uMDJhYmFhOAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jk
cy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgpAQCAtMTAx
NCw2ICsxMDE0LDEwIEBAIGZyb20taW1hZ2UKIHNuYXAKICNlbmRpZgogCisvLyBuYXYtKgorY3Vy
cmVudAorcm9vdAorCiAvLyBvdmVyZmxvdwogLXdlYmtpdC1wYWdlZC14CiAtd2Via2l0LXBhZ2Vk
LXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApvbGQgbW9kZSAxMDA2NDQKbmV3IG1v
ZGUgMTAwNzU1CmluZGV4IGQ0YzQ5YmYuLjhkYjIyOTUKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcApAQCAtMjg4NCw4ICsyODg0LDgyIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgICAgIHN0YXRlLnN0
eWxlKCktPnNldEdyaWRJdGVtQWZ0ZXIoYWZ0ZXJQb3NpdGlvbik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdkluZGV4OiB7CisgICAgICAgIGlmIChpc0lu
aGVyaXQpIHsKKyAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPmluaGVyaXROYXYoaWQsIHN0YXRl
LnBhcmVudFN0eWxlKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IGJvb2wgaXNBdXRvID0gKGlzSW5pdGlhbCB8fCBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9
PSBDU1NWYWx1ZUF1dG8pOworCisgICAgICAgIFN0eWxlTmF2SW5kZXgqIG5hdiA9IHN0YXRlLnN0
eWxlKCktPmFjY2Vzc05hdkluZGV4KCk7CisgICAgICAgIGlmICghbmF2KQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGlmIChpc0F1dG8pIHsKKyAgICAgICAgICAgIG5hdi0+c2V0SXNB
dXRvKHRydWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAvLyBUaGVz
ZSBwcm9wZXJ0aWVzIGFyZSBhbGlhc2VkIGFuZCBEZXByZWNhdGVkU3R5bGVCdWlsZGVyIGFscmVh
ZHkgYXBwbGllZCB0aGUgcHJvcGVydHkgb24gdGhlIHByZWZpeGVkIHZlcnNpb24uCisgICAgICAg
IG5hdi0+c2V0SXNBdXRvKGZhbHNlKTsKKyAgICAgICAgbmF2LT5zZXRJbmRleChtYXgoc3RhdGlj
X2Nhc3Q8aW50PihzdGQ6Om51bWVyaWNfbGltaXRzPHNob3J0Pjo6bWluKCkpLCBtaW4ocHJpbWl0
aXZlVmFsdWUtPmdldEludFZhbHVlKCksIHN0YXRpY19jYXN0PGludD4oc3RkOjpudW1lcmljX2xp
bWl0czxzaG9ydD46Om1heCgpKSkpKTsKKyAgICAgICAgc3RhdGUuZWxlbWVudCgpLT5zZXRUYWJJ
bmRleEV4cGxpY2l0bHkobmF2LT5pbmRleCgpKTsKKworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZEb3duOgorICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZMZWZ0
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZSaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TmF2
VXA6IHsKKyAgICAgICAgaWYgKGlzSW5oZXJpdCkgeworICAgICAgICAgICAgc3RhdGUuc3R5bGUo
KS0+aW5oZXJpdE5hdihpZCwgc3RhdGUucGFyZW50U3R5bGUoKSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBib29sIGlzQXV0byA9IHByaW1pdGl2ZVZhbHVlICYm
IChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pOworICAgICAgICBp
ZiAoaXNBdXRvKSB7CisgICAgICAgICAgICBjb25zdCBTdHlsZU5hdkRhdGEqIG9sZE5hdiA9IHN0
YXRlLnN0eWxlKCktPmdldE5hdihpZCk7CisgICAgICAgICAgICBpZiAoIW9sZE5hdiB8fCAhb2xk
TmF2LT5uYXZUYXJnZXRUeXBlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgU3R5bGVOYXZEYXRhKiBuYXYgPSBzdGF0ZS5zdHlsZSgpLT5hY2Nlc3NOYXYo
aWQpOworICAgICAgICBpZiAoIW5hdikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBp
ZiAoaXNBdXRvKSB7CisgICAgICAgICAgICBuYXYtPnNldE5hdlRhcmdldFR5cGUoU3R5bGVOYXZE
YXRhOjpOYXZOb25lKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZSkgeworICAgICAgICAgICAgbmF2LT5zZXROYXZUYXJnZXRUeXBl
KFN0eWxlTmF2RGF0YTo6TmF2VGFyZ2V0Q3VycmVudCk7CisgICAgICAgICAgICBuYXYtPnNldElk
KHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsKKyAgICAgICAgfSBlbHNlIGlmICh2
YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeworICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0g
c3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOworICAgICAgICAgICAgQ1NTVmFsdWUq
IGl0ZW0gPSBsaXN0LT5pdGVtKDApOworICAgICAgICAgICAgaWYgKCFpdGVtIHx8ICFpdGVtLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7
CisgICAgICAgICAgICBuYXYtPnNldElkKHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgp
KTsKKworICAgICAgICAgICAgaXRlbSA9IGxpc3QtPml0ZW0oMSk7CisgICAgICAgICAgICBpZiAo
aXRlbSAmJiBpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAg
ICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ3Vy
cmVudCkKKyAgICAgICAgICAgICAgICAgICAgbmF2LT5zZXROYXZUYXJnZXRUeXBlKFN0eWxlTmF2
RGF0YTo6TmF2VGFyZ2V0Q3VycmVudCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAocHJpbWl0
aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVSb290KQorICAgICAgICAgICAgICAgICAg
ICBuYXYtPnNldE5hdlRhcmdldFR5cGUoU3R5bGVOYXZEYXRhOjpOYXZUYXJnZXRSb290KTsKKyAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbmF2LT5zZXROYXZUYXJn
ZXRUeXBlKFN0eWxlTmF2RGF0YTo6TmF2VGFyZ2V0TmFtZSk7CisgICAgICAgICAgICAgICAgICAg
IG5hdi0+c2V0VGFyZ2V0KHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBuYXYtPnNl
dE5hdlRhcmdldFR5cGUoU3R5bGVOYXZEYXRhOjpOYXZUYXJnZXRDdXJyZW50KTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgYXJlIGFs
aWFzZWQgYW5kIFN0eWxlQnVpbGRlciBhbHJlYWR5IGFwcGxpZWQgdGhlIHByb3BlcnR5IG9uIHRo
ZSBwcmVmaXhlZCB2ZXJzaW9uLgogICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uRGVsYXk6
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25EdXJhdGlvbjoKICAgICBjYXNlIENTU1By
b3BlcnR5VHJhbnNpdGlvblByb3BlcnR5OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKb2xkIG1vZGUgMTAwNjQ0
Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAzYWNhZDVjLi4wMTgxNTMwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAt
NjIyLDYgKzYyMiw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CiAKKyAgICB2b2lkIHNldFRh
YkluZGV4RXhwbGljaXRseShzaG9ydCk7CisKIHByb3RlY3RlZDoKICAgICBFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9u
VHlwZSB0eXBlKQogICAgICAgICA6IENvbnRhaW5lck5vZGUoZG9jdW1lbnQsIHR5cGUpCkBAIC02
NDIsNyArNjQ0LDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWdpc3Rl
ckFzRXh0cmFOYW1lZEl0ZW0oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBj
bGVhclRhYkluZGV4RXhwbGljaXRseUlmTmVlZGVkKCk7ICAgIAotICAgIHZvaWQgc2V0VGFiSW5k
ZXhFeHBsaWNpdGx5KHNob3J0KTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgc2hvcnQgdGFiSW5kZXgoKSBjb25zdCBPVkVSUklE
RTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCm9sZCBtb2RlIDEwMDY0NApuZXcg
bW9kZSAxMDA3NTUKaW5kZXggOTYzNjA0Yi4uY2U1Mzg5YQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCkBAIC0zNzM1LDkgKzM3MzUsNiBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFy
cm93RXZlbnRIYW5kbGVyKEZvY3VzRGlyZWN0aW9uIGZvY3VzRGlyZWN0aW9uLCBLZXlibwogICAg
IGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFpc1NwYXRpYWxOYXZpZ2F0
aW9uRW5hYmxlZChtX2ZyYW1lKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8gQXJyb3dzIGFu
ZCBvdGhlciBwb3NzaWJsZSBkaXJlY3Rpb25hbCBuYXZpZ2F0aW9uIGtleXMgY2FuIGJlIHVzZWQg
aW4gZGVzaWduCiAgICAgLy8gbW9kZSBlZGl0aW5nLgogICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5pbkRlc2lnbk1vZGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNw
cApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGFhZmMzM2MuLmIxYWRhZjUK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAtODQ5LDYgKzg0OSw1NSBAQCBi
b29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShGb2N1c0RpcmVj
dGlvbiBkaXJlY3Rpb24sIEtleWJvYQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBOb2Rl
KiBmb2N1c2VkTm9kZSA9IGZvY3VzZWREb2N1bWVudC0+Zm9jdXNlZE5vZGUoKTsKKyAgICBpZiAo
Zm9jdXNlZE5vZGUpIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGZvY3VzZWRO
b2RlLT5yZW5kZXJlcigpOworICAgICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSByZW5kZXJlciA/
IHJlbmRlcmVyLT5zdHlsZSgpIDogMDsKKyAgICAgICAgaWYgKHN0eWxlKSB7CisgICAgICAgICAg
ICBpbnQgcHJvcElkID0gMDsKKyAgICAgICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAg
ICAgICAgICBjYXNlIEZvY3VzRGlyZWN0aW9uVXA6CisgICAgICAgICAgICAgICAgcHJvcElkID0g
Q1NTUHJvcGVydHlOYXZVcDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgRm9jdXNEaXJlY3Rpb25Eb3duOgorICAgICAgICAgICAgICAgIHByb3BJZCA9IENTU1Byb3Bl
cnR5TmF2RG93bjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRm9j
dXNEaXJlY3Rpb25MZWZ0OgorICAgICAgICAgICAgICAgIHByb3BJZCA9IENTU1Byb3BlcnR5TmF2
TGVmdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRm9jdXNEaXJl
Y3Rpb25SaWdodDoKKyAgICAgICAgICAgICAgICBwcm9wSWQgPSBDU1NQcm9wZXJ0eU5hdlJpZ2h0
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29uc3QgU3R5bGVO
YXZEYXRhKiBuYXYgPSBzdHlsZS0+Z2V0TmF2KHByb3BJZCk7CisgICAgICAgICAgICBpZiAobmF2
ICYmIG5hdi0+bmF2VGFyZ2V0VHlwZSgpKSB7CisgICAgICAgICAgICAgICAgRnJhbWUqIHRhcmdl
dEZyYW1lID0gMDsKKyAgICAgICAgICAgICAgICBpZiAobmF2LT5uYXZUYXJnZXRUeXBlKCkgPT0g
U3R5bGVOYXZEYXRhOjpOYXZUYXJnZXRSb290KQorICAgICAgICAgICAgICAgICAgICB0YXJnZXRG
cmFtZSA9IGN1ckZyYW1lLT50cmVlKCktPnRvcCgpOworICAgICAgICAgICAgICAgIGVsc2UgaWYg
KG5hdi0+bmF2VGFyZ2V0VHlwZSgpID09IFN0eWxlTmF2RGF0YTo6TmF2VGFyZ2V0TmFtZSkKKyAg
ICAgICAgICAgICAgICAgICAgdGFyZ2V0RnJhbWUgPSBjdXJGcmFtZS0+dHJlZSgpLT5maW5kKG5h
di0+dGFyZ2V0KCkpOworCisgICAgICAgICAgICAgICAgRG9jdW1lbnQqIHRhcmdldERvY3VtZW50
ID0gMDsKKyAgICAgICAgICAgICAgICBpZiAodGFyZ2V0RnJhbWUpCisgICAgICAgICAgICAgICAg
ICAgIHRhcmdldERvY3VtZW50ID0gdGFyZ2V0RnJhbWUtPmRvY3VtZW50KCk7CisgICAgICAgICAg
ICAgICAgaWYgKCF0YXJnZXREb2N1bWVudCkKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0RG9j
dW1lbnQgPSBmb2N1c2VkRG9jdW1lbnQ7CisKKyAgICAgICAgICAgICAgICBFbGVtZW50KiBlbGVt
ZW50ID0gdGFyZ2V0RG9jdW1lbnQtPmdldEVsZW1lbnRCeUlkKG5hdi0+aWQoKSk7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNLZXlib2FyZEZvY3VzYWJsZShldmVu
dCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgIT0gZm9jdXNlZE5vZGUpCisg
ICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LT5mb2N1cyhmYWxzZSk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghaXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQo
Y3VyRnJhbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBOb2RlKiBjb250YWluZXIg
PSBmb2N1c2VkRG9jdW1lbnQ7CiAKICAgICBpZiAoY29udGFpbmVyLT5pc0RvY3VtZW50Tm9kZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKb2xk
IG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAxNjNmNDc4Li5kYzljZTkyCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTQ0LDYgKzE0
NCwxMSBAQCBBTFdBWVNfSU5MSU5FIFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShib29sKQogI2Vu
ZGlmCiAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZ3JpZC5pbml0KCk7CiAg
ICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZ3JpZEl0ZW0uaW5pdCgpOworICAg
IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX25hdlVwLmluaXQoKTsKKyAgICByYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9uYXZEb3duLmluaXQoKTsKKyAgICByYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9uYXZMZWZ0LmluaXQoKTsKKyAgICByYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9uYXZSaWdodC5pbml0KCk7CisgICAgcmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCktPm1fbmF2SW5kZXguaW5pdCgpOwogICAgIHJhcmVJbmhlcml0ZWRE
YXRhLmluaXQoKTsKICAgICBpbmhlcml0ZWQuaW5pdCgpOwogI2lmIEVOQUJMRShTVkcpCkBAIC0x
Njk1LDQgKzE3MDAsNzIgQEAgdm9pZCBSZW5kZXJTdHlsZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBpbmZvLmFkZE1lbWJl
cihub25pbmhlcml0ZWRfZmxhZ3MsICJub25pbmhlcml0ZWRfZmxhZ3MiKTsKIH0KIAorY29uc3Qg
U3R5bGVOYXZEYXRhKiBSZW5kZXJTdHlsZTo6Z2V0TmF2KGludCBwcm9wSWQpCit7CisgICAgc3dp
dGNoIChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wSWQpKSB7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eU5hdkRvd246CisgICAgICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9u
YXZEb3duLmdldCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZMZWZ0OgorICAgICAgICByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbmF2TGVmdC5nZXQoKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5TmF2UmlnaHQ6CisgICAgICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9u
YXZSaWdodC5nZXQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TmF2VXA6CisgICAgICAgIHJldHVy
biByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9uYXZVcC5nZXQoKTsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK2NvbnN0IFN0eWxlTmF2SW5k
ZXgqIFJlbmRlclN0eWxlOjpnZXROYXZJbmRleCgpCit7CisgICAgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX25hdkluZGV4LmdldCgpOworfQorCitTdHlsZU5hdkluZGV4KiBSZW5kZXJT
dHlsZTo6YWNjZXNzTmF2SW5kZXgoKQoreworICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS0+bV9uYXZJbmRleC5hY2Nlc3MoKTsKK30KKworU3R5bGVOYXZEYXRhKiBSZW5k
ZXJTdHlsZTo6YWNjZXNzTmF2KGludCBwcm9wSWQpCit7CisgICAgc3dpdGNoIChzdGF0aWNfY2Fz
dDxDU1NQcm9wZXJ0eUlEPihwcm9wSWQpKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdkRvd246
CisgICAgICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9uYXZEb3du
LmFjY2VzcygpOworICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZMZWZ0OgorICAgICAgICByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbmF2TGVmdC5hY2Nlc3MoKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5TmF2UmlnaHQ6CisgICAgICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS0+bV9uYXZSaWdodC5hY2Nlc3MoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
TmF2VXA6CisgICAgICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9u
YXZVcC5hY2Nlc3MoKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAg
cmV0dXJuIDA7Cit9CisKK3ZvaWQgUmVuZGVyU3R5bGU6OmluaGVyaXROYXYoaW50IHByb3BJZCwg
Y29uc3QgUmVuZGVyU3R5bGUqIGluaGVyaXRQYXJlbnQpCit7CisgICAgc3dpdGNoIChzdGF0aWNf
Y2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wSWQpKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdkRv
d246CisgICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX25hdkRvd24gPSBp
bmhlcml0UGFyZW50LT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9uYXZEb3duOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5TmF2TGVmdDoKKyAgICAgICAgcmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCktPm1fbmF2TGVmdCA9IGluaGVyaXRQYXJlbnQtPnJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX25hdkxlZnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlOYXZSaWdodDoKKyAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbmF2
UmlnaHQgPSBpbmhlcml0UGFyZW50LT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9uYXZSaWdodDsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdlVwOgorICAgICAgICByYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9uYXZVcCA9IGluaGVyaXRQYXJlbnQtPnJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX25hdlVwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1By
b3BlcnR5TmF2SW5kZXg6CisgICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5t
X25hdkluZGV4ID0gaW5oZXJpdFBhcmVudC0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbmF2SW5k
ZXg7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0K
K30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5k
ZXggNGRhZmUxMi4uNmE0MzY0YwotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaApAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgIlN0eWxlR3JpZEl0ZW1EYXRhLmgi
CiAjaW5jbHVkZSAiU3R5bGVNYXJxdWVlRGF0YS5oIgogI2luY2x1ZGUgIlN0eWxlTXVsdGlDb2xE
YXRhLmgiCisjaW5jbHVkZSAiU3R5bGVOYXZEYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YS5oIgogI2luY2x1ZGUgIlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaCIKICNp
bmNsdWRlICJTdHlsZVJlZmxlY3Rpb24uaCIKQEAgLTE3NjUsNiArMTc2NiwxMiBAQCBwdWJsaWM6
CiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKICAgICBzdGF0aWMgQmxlbmRNb2RlIGluaXRp
YWxCbGVuZE1vZGUoKSB7IHJldHVybiBCbGVuZE1vZGVOb3JtYWw7IH0KICNlbmRpZgorICAgIGNv
bnN0IFN0eWxlTmF2RGF0YSogZ2V0TmF2KGludCBwcm9wSWQpOworICAgIFN0eWxlTmF2RGF0YSog
YWNjZXNzTmF2KGludCBwcm9wSWQpOworICAgIGNvbnN0IFN0eWxlTmF2SW5kZXgqIGdldE5hdklu
ZGV4KCk7CisgICAgU3R5bGVOYXZJbmRleCogYWNjZXNzTmF2SW5kZXgoKTsKKyAgICB2b2lkIGlu
aGVyaXROYXYoaW50IHByb3BJZCwgY29uc3QgUmVuZGVyU3R5bGUqIGluaGVyaXRQYXJlbnQpOwor
CiBwcml2YXRlOgogICAgIHZvaWQgc2V0VmlzaXRlZExpbmtDb2xvcihjb25zdCBDb2xvciYpOwog
ICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsg
U0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xv
ciwgdik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZU5hdkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTmF2RGF0
YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZGQwYTM3MgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU5hdkRhdGEu
Y3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2FuZ2hvIEtp
bSAodGhvbWFzLmtpbUBsZ2UuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZXRyb25p
Y3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU3R5bGVOYXZEYXRhLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3R5bGVOYXZEYXRh
OjpTdHlsZU5hdkRhdGEoKQorICAgIDogbV9pZCgiIikKKyAgICAsIG1fdGFyZ2V0KCIiKQorICAg
ICwgbV9uYXZUYXJnZXRUeXBlKE5hdk5vbmUpCit7Cit9CisKK1N0eWxlTmF2RGF0YTo6U3R5bGVO
YXZEYXRhKGNvbnN0IFN0eWxlTmF2RGF0YSYgbykKKyAgICA6IFJlZkNvdW50ZWQ8U3R5bGVOYXZE
YXRhPigpCisgICAgLCBtX2lkKG8ubV9pZCkKKyAgICAsIG1fdGFyZ2V0KG8ubV90YXJnZXQpCisg
ICAgLCBtX25hdlRhcmdldFR5cGUoby5tX25hdlRhcmdldFR5cGUpCit7Cit9CisKK2Jvb2wgU3R5
bGVOYXZEYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlTmF2RGF0YSYgbykgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9uYXZUYXJnZXRUeXBlID09IG8ubV9uYXZUYXJnZXRUeXBlICYmIG1faWQgPT0g
by5tX2lkICYmIG1fdGFyZ2V0ID09IG8ubV90YXJnZXQ7Cit9CisKK1N0eWxlTmF2SW5kZXg6OlN0
eWxlTmF2SW5kZXgoKQorICAgIDogbV9pbmRleCgwKQorICAgICwgbV9pc0F1dG8odHJ1ZSkKK3sK
K30KKworU3R5bGVOYXZJbmRleDo6U3R5bGVOYXZJbmRleChjb25zdCBTdHlsZU5hdkluZGV4JiBv
KQorICAgIDogUmVmQ291bnRlZDxTdHlsZU5hdkluZGV4PigpCisgICAgLCBtX2luZGV4KG8ubV9p
bmRleCkKKyAgICAsIG1faXNBdXRvKG8ubV9pc0F1dG8pCit7Cit9CisKK2Jvb2wgU3R5bGVOYXZJ
bmRleDo6b3BlcmF0b3I9PShjb25zdCBTdHlsZU5hdkluZGV4JiBvKSBjb25zdAoreworICAgIHJl
dHVybiAoKG1faXNBdXRvIHx8IG8ubV9pc0F1dG8pID8gbV9pc0F1dG8gPT0gby5tX2lzQXV0byA6
IG1faW5kZXggPT0gby5tX2luZGV4KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVOYXZEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVOYXZEYXRhLmgKbmV3IGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTY5ZDI1OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU5hdkRhdGEuaApAQCAtMCwwICsxLDg4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbmdobyBLaW0gKHRob21hcy5raW1AbGdl
LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGV0cm9uaWNzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqCisgKi8KKworI2lmbmRlZiBTdHlsZU5hdkRhdGFfaAorI2RlZmluZSBTdHlsZU5hdkRhdGFf
aAorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFN0eWxlTmF2RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlTmF2RGF0
YT4geworcHVibGljOgorICAgIGVudW0gTmF2VGFyZ2V0VHlwZSB7CisgICAgICAgIE5hdk5vbmUg
PSAwLAorICAgICAgICBOYXZUYXJnZXRDdXJyZW50ID0gMSwKKyAgICAgICAgTmF2VGFyZ2V0TmFt
ZSA9IDIsCisgICAgICAgIE5hdlRhcmdldFJvb3QgPSA0LAorICAgIH07CisKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHlsZU5hdkRhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
dHlsZU5hdkRhdGEpOyB9CisgICAgUGFzc1JlZlB0cjxTdHlsZU5hdkRhdGE+IGNvcHkoKSBjb25z
dCB7IHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVOYXZEYXRhKCp0aGlzKSk7IH0KKworICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZU5hdkRhdGEmKSBjb25zdDsKKyAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgU3R5bGVOYXZEYXRhJiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG8p
OyB9CisKKyAgICBTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgdm9pZCBz
ZXRJZChjb25zdCBTdHJpbmcmIGl0ZW0pIHsgbV9pZCA9IGl0ZW07IH0KKyAgICBTdHJpbmcgdGFy
Z2V0KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXQ7IH0KKyAgICB2b2lkIHNldFRhcmdldChjb25z
dCBTdHJpbmcmIGl0ZW0pIHsgbV90YXJnZXQgPSBpdGVtOyB9CisgICAgdW5zaWduZWQgY2hhciBu
YXZUYXJnZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9uYXZUYXJnZXRUeXBlOyB9CisgICAgdm9p
ZCBzZXROYXZUYXJnZXRUeXBlKGNvbnN0IHVuc2lnbmVkIGNoYXIgaXRlbSkgeyBtX25hdlRhcmdl
dFR5cGUgPSBpdGVtOyB9CisKK3ByaXZhdGU6CisgICAgU3R5bGVOYXZEYXRhKCk7CisgICAgU3R5
bGVOYXZEYXRhKGNvbnN0IFN0eWxlTmF2RGF0YSYpOworCisgICAgU3RyaW5nIG1faWQ7CisgICAg
U3RyaW5nIG1fdGFyZ2V0OworICAgIHVuc2lnbmVkIGNoYXIgbV9uYXZUYXJnZXRUeXBlOworCit9
OworCitjbGFzcyBTdHlsZU5hdkluZGV4IDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVOYXZJbmRl
eD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlTmF2SW5kZXg+IGNyZWF0
ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZU5hdkluZGV4KTsgfQorICAgIFBhc3NSZWZQ
dHI8U3R5bGVOYXZJbmRleD4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHls
ZU5hdkluZGV4KCp0aGlzKSk7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZU5h
dkluZGV4JikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlTmF2SW5kZXgm
IG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KKworICAgIGludCBpbmRleCgpIGNv
bnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICB2b2lkIHNldEluZGV4KGNvbnN0IGludCBpdGVt
KSB7IG1faW5kZXggPSBpdGVtOyB9CisgICAgYm9vbCBpc0F1dG8oKSBjb25zdCB7IHJldHVybiBt
X2lzQXV0bzsgfQorICAgIHZvaWQgc2V0SXNBdXRvKGNvbnN0IGJvb2wgaXRlbSkgeyBtX2lzQXV0
byA9IGl0ZW07IH0KKworcHJpdmF0ZToKKyAgICBTdHlsZU5hdkluZGV4KCk7CisgICAgU3R5bGVO
YXZJbmRleChjb25zdCBTdHlsZU5hdkluZGV4Jik7CisKKyAgICBpbnQgbV9pbmRleDsKKyAgICBi
b29sIG1faXNBdXRvOworCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBTdHlsZU5hdkRhdGFfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKb2xkIG1vZGUgMTAwNjQ0
Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAwYzk4ZDM0Li40YzJiM2ExCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5j
cHAKQEAgLTE3Miw2ICsxNzIsMTIgQEAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWQKICNpZiBFTkFC
TEUoQ1NTX0NPTVBPU0lUSU5HKQogICAgICwgbV9lZmZlY3RpdmVCbGVuZE1vZGUoby5tX2VmZmVj
dGl2ZUJsZW5kTW9kZSkKICNlbmRpZgorICAgICwgbV9uYXZVcChvLm1fbmF2VXApCisgICAgLCBt
X25hdkRvd24oby5tX25hdkRvd24pCisgICAgLCBtX25hdkxlZnQoby5tX25hdkxlZnQpCisgICAg
LCBtX25hdlJpZ2h0KG8ubV9uYXZSaWdodCkKKyAgICAsIG1fbmF2SW5kZXgoby5tX25hdkluZGV4
KQorCiB7CiB9CiAKQEAgLTI2MCw2ICsyNjYsMTEgQEAgYm9vbCBTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmIG8pIGMK
ICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQogICAgICAgICAmJiBtX2VmZmVjdGl2ZUJsZW5k
TW9kZSA9PSBvLm1fZWZmZWN0aXZlQmxlbmRNb2RlCiAjZW5kaWYKKyAgICAgICAgJiYgbV9uYXZV
cCA9PSBvLm1fbmF2VXAKKyAgICAgICAgJiYgbV9uYXZEb3duID09IG8ubV9uYXZEb3duCisgICAg
ICAgICYmIG1fbmF2TGVmdCA9PSBvLm1fbmF2TGVmdAorICAgICAgICAmJiBtX25hdlJpZ2h0ID09
IG8ubV9uYXZSaWdodAorICAgICAgICAmJiBtX25hdkluZGV4ID09IG8ubV9uYXZJbmRleAogICAg
ICAgICAmJiBtX2hhc0FzcGVjdFJhdGlvID09IG8ubV9oYXNBc3BlY3RSYXRpbzsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25J
bmhlcml0ZWREYXRhLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA5YWJh
NmYxLi5kZGYyN2Y5Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkZpbGxMYXllci5oIgogI2luY2x1ZGUgIkxpbmVDbGFtcFZhbHVlLmgiCiAjaW5jbHVkZSAiTmlu
ZVBpZWNlSW1hZ2UuaCIKKyNpbmNsdWRlICJTdHlsZU5hdkRhdGEuaCIKICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CkBAIC0xOTksNiArMjAwLDEyIEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBtX2VmZmVj
dGl2ZUJsZW5kTW9kZTogNTsgLy8gRUJsZW5kTW9kZQogI2VuZGlmCiAKKyAgICBEYXRhUmVmPFN0
eWxlTmF2RGF0YT4gbV9uYXZVcDsKKyAgICBEYXRhUmVmPFN0eWxlTmF2RGF0YT4gbV9uYXZEb3du
OworICAgIERhdGFSZWY8U3R5bGVOYXZEYXRhPiBtX25hdkxlZnQ7CisgICAgRGF0YVJlZjxTdHls
ZU5hdkRhdGE+IG1fbmF2UmlnaHQ7CisgICAgRGF0YVJlZjxTdHlsZU5hdkluZGV4PiBtX25hdklu
ZGV4OworCiBwcml2YXRlOgogICAgIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKTsKICAgICBT
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCm9sZCBtb2Rl
IDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggM2YyZDc1MS4uMjkyNTQ4NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIC8vIG1hY3JvKEtleVVwcGVyLCBLZXlMb3dlciwgVHlwZU5hbWVVcHBl
ciwgVHlwZU5hbWUsIERlZmF1bHRWYWx1ZSkgCiAKLSNpZiBQTEFURk9STShHVEspCisjaWYgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkKICNkZWZpbmUgREVGQVVMVF9XRUJLSVRfVEFCU1RP
TElOS1NfRU5BQkxFRCB0cnVlCiAjZWxzZQogI2RlZmluZSBERUZBVUxUX1dFQktJVF9UQUJTVE9M
SU5LU19FTkFCTEVEIGZhbHNlCg==
</data>
<flag name="review"
          id="220818"
          type_id="1"
          status="-"
          setter="rniwa"
    />
    <flag name="commit-queue"
          id="220819"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200300</attachid>
            <date>2013-05-01 22:30:58 -0700</date>
            <delta_ts>2013-05-05 12:57:08 -0700</delta_ts>
            <desc>css3 keyboard navigation patch</desc>
            <filename>css_nav.patch</filename>
            <type>text/plain</type>
            <size>37637</size>
            <attacher name="Sangho Kim">thomas.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZmRiNGM5Mi4uZmQ5ODQxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIyNDksNiArMjI0OSw4IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmNwcAogICAgIHJlbmRlcmluZy9zdHlsZS9T
dHlsZU1hcnF1ZWVEYXRhLmNwcAogICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0
YS5jcHAKKyAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVOYXZEaXJlY3Rpb24uY3BwCisgICAgcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlTmF2SW5kZXguY3BwCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZUluaGVyaXRlZERhdGEuY3BwCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGEuY3BwCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlU3Vycm91bmREYXRhLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IGE3ODIxMzMuLjhlMTg2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4
NCBAQAorMjAxMy0wNC0zMCAgU2FuZ2hvIEtpbSAgPHRob21hcy5raW1AbGdlLmNvbT4KKworICAg
ICAgICBbQ1NTUzNdU3VwcG9ydCBDU1MzIGtleWJvYXJkIG5hdmlnYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MTc4LgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBDU1Mz
IEtleWJvYXJkIGNvbnRyb2wgaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzMy11aS8ja2V5Ym9h
cmQuCisgICAgICAgIHRoZSBuZXcgcHJvcGVydGllczogbmF2LWluZGV4LCBuYXYtdXAsIG5hdi1y
aWdodCwgbmF2LWRvd24sIG5hdi1sZWZ0LiAgICAgICAgCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAqIGNzcy9D
U1NHcmFtbWFyLnkuaW46CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRp
dmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkQ1NTVW5pdFR5cGVGb3JEb3Vi
bGVDb252ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpnZXRT
dHJpbmdWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y3VzdG9t
Q3NzVGV4dCk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgICog
Y3NzL0NTU1Byb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Ojppc0lu
aGVyaXRlZFByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbjoKKyAg
ICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAg
ICAoRWxlbWVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZhdWx0QXJyb3dFdmVudEhhbmRsZXIpOgorICAgICAg
ICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29u
dHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseSk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpS
ZW5kZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6bmF2RGlyZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Om5h
dkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphY2Nlc3NOYXZJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWNjZXNzTmF2RGlyZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbmhlcml0TmF2UHJvcGVydHkpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9TdHlsZU5hdkRpcmVjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZU5hdkRpcmVjdGlvbjo6U3R5bGVOYXZEaXJlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVOYXZEaXJlY3Rpb246Om9wZXJhdG9yPT0pOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZU5hdkRpcmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoU3R5bGVOYXZEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVOYXZEaXJlY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU5h
dkRpcmVjdGlvbjo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU5hdkRpcmVjdGlvbjo6
b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU5hdkRpcmVjdGlvbjo6aWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVOYXZEaXJlY3Rpb246OnNldElkKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlTmF2RGlyZWN0aW9uOjp0YXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVOYXZEaXJlY3Rpb246OnNldFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU5hdkRp
cmVjdGlvbjo6bmF2VGFyZ2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU5hdkRpcmVj
dGlvbjo6c2V0TmF2VGFyZ2V0VHlwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxl
TmF2SW5kZXguY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVOYXZJbmRleDo6U3R5bGVOYXZJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZU5hdkluZGV4OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVO
YXZJbmRleC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU3R5bGVOYXZJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU5hdkluZGV4OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVOYXZJbmRleDo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZU5hdkluZGV4OjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlTmF2SW5kZXg6
OmluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlTmF2SW5kZXg6OnNldEluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlTmF2SW5kZXg6OmlzQXV0byk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZU5hdkluZGV4OjpzZXRJc0F1dG8pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDoKKyAgICAgICAg
KFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorCiAyMDEzLTA0LTI5ICBBbGJlcnRvIEdhcmNp
YSAgPGFnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZW1vdmUgYWxsIHJlbWFpbmluZyBT
a2lhIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDc3OTEzYzkuLjFlYTBi
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDcyNyw2ICs0NzI3LDEwIEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlTWFycXVlZURhdGEuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
TXVsdGlDb2xEYXRhLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
TXVsdGlDb2xEYXRhLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU5h
dkRpcmVjdGlvbi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU5h
dkRpcmVjdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVOYXZJ
bmRleC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU5hdkluZGV4
LmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nU2hhZGVyLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRh
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQppbmRleCBmNTc0NTM2Li42ZDcxNDBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAg
LTEyODcsNiArMTI4Nyw4IEBAIFNPVVJDRVMgKz0gXAogICAgIHJlbmRlcmluZy9zdHlsZS9TdHls
ZUluaGVyaXRlZERhdGEuY3BwIFwKICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVNYXJxdWVlRGF0
YS5jcHAgXAogICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHAgXAorICAg
IHJlbmRlcmluZy9zdHlsZS9TdHlsZU5hdkRpcmVjdGlvbi5jcHAgXAorICAgIHJlbmRlcmluZy9z
dHlsZS9TdHlsZU5hdkluZGV4LmNwcCBcCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUlu
aGVyaXRlZERhdGEuY3BwIFwKICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5jcHAgXAogICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZVN1cnJvdW5kRGF0YS5jcHAg
XApAQCAtMjU2NSw2ICsyNTY3LDggQEAgSEVBREVSUyArPSBcCiAgICAgcmVuZGVyaW5nL3N0eWxl
L1N0eWxlSW5oZXJpdGVkRGF0YS5oIFwKICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVNYXJxdWVl
RGF0YS5oIFwKICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaCBcCisgICAg
cmVuZGVyaW5nL3N0eWxlL1N0eWxlTmF2RGlyZWN0aW9uLmggXAorICAgIHJlbmRlcmluZy9zdHls
ZS9TdHlsZU5hdkluZGV4LmggXAogICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdTaGFk
ZXIuaCBcCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaCBcCiAg
ICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4
IDdmZTQwMGYuLjQ2NWM4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yMTEwLDYgKzIxMTAsMzggQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1Zh
bHVlKENTU1Byb3BlcnQKICAgICAgICAgICAgIGlmIChzdHlsZS0+bWluV2lkdGgoKS5pc0F1dG8o
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSgwLCBzdHls
ZS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxl
bmd0aChzdHlsZS0+bWluV2lkdGgoKSwgc3R5bGUuZ2V0KCkpOworICAgICAgICBjYXNlIENTU1By
b3BlcnR5TmF2SW5kZXg6IHsKKyAgICAgICAgICAgIGNvbnN0IFN0eWxlTmF2SW5kZXgqIG5hdklu
ZGV4ID0gc3R5bGUtPm5hdkluZGV4KCk7CisgICAgICAgICAgICBpZiAoIW5hdkluZGV4KQorICAg
ICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgaWYgKG5hdkluZGV4LT5pc0F1dG8o
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50
aWZpZXIoQ1NTVmFsdWVBdXRvKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKG5hdkluZGV4LT5pbmRleCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
Uik7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdkRvd246CisgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlOYXZMZWZ0OgorICAgICAgICBjYXNlIENTU1Byb3BlcnR5TmF2Umln
aHQ6CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZVcDogeworICAgICAgICAgICAgY29uc3Qg
U3R5bGVOYXZEaXJlY3Rpb24qIG5hdkRpcmVjdGlvbiA9IHN0eWxlLT5uYXZEaXJlY3Rpb24ocHJv
cGVydHlJRCk7CisgICAgICAgICAgICBpZiAoIW5hdkRpcmVjdGlvbikKKyAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlmICghbmF2RGlyZWN0aW9uLT5uYXZUYXJnZXRUeXBl
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVu
dGlmaWVyKENTU1ZhbHVlQXV0byk7CisKKyAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFs
SWQ7CisgICAgICAgICAgICB2YWxJZCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobmF2RGly
ZWN0aW9uLT5pZCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VMRU1FTlRfSUQpOworCisgICAg
ICAgICAgICBpZiAobmF2RGlyZWN0aW9uLT5uYXZUYXJnZXRUeXBlKCkgPT0gU3R5bGVOYXZEaXJl
Y3Rpb246Ok5hdlRhcmdldEN1cnJlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbElkLnJl
bGVhc2UoKTsKKworICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZCh2YWxJZC5yZWxlYXNlKCkpOworICAgICAgICAgICAgaWYgKG5hdkRpcmVjdGlvbi0+bmF2VGFy
Z2V0VHlwZSgpID09IFN0eWxlTmF2RGlyZWN0aW9uOjpOYXZUYXJnZXROYW1lKQorICAgICAgICAg
ICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG5hdkRpcmVjdGlv
bi0+dGFyZ2V0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEFSU0VSX0lERU5USUZJRVIpKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVSb290KSk7CisgICAgICAgICAgICBy
ZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eU9wYWNpdHk6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUo
c3R5bGUtPm9wYWNpdHkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5T3JwaGFuczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCmlu
ZGV4IDg2MWY2Y2MuLjU5NDU2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFtbWFyLnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgpAQCAt
ODgsOSArODgsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNDU1NUb2tlbkFTdHJpbmcoaW50IHl5
dHlwZSkKICV9CiAKICNpZiBFTkFCTEVfU0hBRE9XX0RPTQotJWV4cGVjdCA2OAorJWV4cGVjdCA2
OQogI2Vsc2UKLSVleHBlY3QgNjcKKyVleHBlY3QgNjgKICNlbmRpZgogCiAlbm9uYXNzb2MgTE9X
RVNUX1BSRUMKQEAgLTE3NTQsNiArMTc1NCwxMSBAQCB0ZXJtOgogICB8IFVSSSBtYXliZV9zcGFj
ZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1VSSTsgfQogICB8IFVOSUNPREVSQU5HRSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsg
JCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOSUNPREVf
UkFOR0U7IH0KICAgfCBIRVggbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQx
OyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0KKyAg
fCBJRFNFTCBtYXliZV9zcGFjZSB7CisgICAgICAkJC5pZCA9IDA7CisgICAgICAkJC5zdHJpbmcg
PSAkMTsKKyAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VMRU1FTlRfSUQ7
CisgIH0KICAgfCAnIycgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9IENTU1Bh
cnNlclN0cmluZygpOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVY
Q09MT1I7IH0gLyogSGFuZGxlIGVycm9yIGNhc2U6ICJjb2xvcjogIzsiICovCiAgIHwgVkFSRlVO
Q1RJT04gbWF5YmVfc3BhY2UgSURFTlQgJyknIG1heWJlX3NwYWNlIHsKICNpZiBFTkFCTEVfQ1NT
X1ZBUklBQkxFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCAwNTk4NjBiLi4yMmEwN2Jl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMjkyNyw3ICsyOTI3LDQ2IEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFu
dCkKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU2lkZXdheXMgfHwgaWQgPT0gQ1NTVmFsdWVT
aWRld2F5c1JpZ2h0IHx8IGlkID09IENTU1ZhbHVlVmVydGljYWxSaWdodCB8fCBpZCA9PSBDU1NW
YWx1ZVVwcmlnaHQpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZJbmRleDoKKyAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlQXV0bykgeworICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlk
ICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkludGVnZXIsIENTU1F1aXJrc01vZGUpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdkRvd246CisgICAgY2FzZSBDU1NQcm9wZXJ0
eU5hdkxlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdlJpZ2h0OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlOYXZVcDogeworICAgICAgICAvLyBhdXRvIHwgPGlkPiBbIGN1cnJlbnQgfCByb290IHwg
PHRhcmdldC1uYW1lPiBdPyB8IGluaGVyaXQKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0
bykgeworICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoKG51bSA+IDIpIHx8ICh2YWx1ZS0+dW5pdCAh
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BBUlNFUl9IRVhDT0xPUiAmJiB2YWx1ZS0+dW5pdCAh
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VMRU1FTlRfSUQpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsSWQ7CisgICAgICAgIHZhbElk
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZS0+c3RyaW5nLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0VMRU1FTlRfSUQpOworICAgICAgICB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5uZXh0
KCk7CisKKyAgICAgICAgaWYgKChudW0gPT0gMSkgfHwgKHZhbHVlLT51bml0ICE9IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfSURFTlQpKSB7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wSWQs
IHZhbElkLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CiAKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKHZhbElk
LnJlbGVhc2UoKSk7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsVGFyZ2V0OworICAgICAg
ICBpZiAoKHZhbHVlLT5pZCA9PSBDU1NWYWx1ZVJvb3QpIHx8ICh2YWx1ZS0+aWQgPT0gQ1NTVmFs
dWVDdXJyZW50KSkKKyAgICAgICAgICAgIHZhbFRhcmdldCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGVJZGVudGlmaWVyKHZhbHVlLT5pZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZh
bFRhcmdldCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUtPnN0cmluZywgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSURFTlRJRklFUik7CisgICAgICAgIGxpc3QtPmFwcGVu
ZCh2YWxUYXJnZXQucmVsZWFzZSgpKTsKKyAgICAgICAgYWRkUHJvcGVydHkocHJvcElkLCBsaXN0
LnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQm94Q29udGFpbjoKICAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IDhhMTYzZmEuLjdmZTkzNzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtMTIzLDYgKzEy
Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkQ1NTVW5pdFR5cGVGb3JEb3VibGVDb252
ZXJzaW9uKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0CiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMp
CiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZBUklBQkxFX05BTUU6CiAjZW5kaWYK
KyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRUxFTUVOVF9JRDoKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNzY4LDYgKzc2OSw4IEBAIFN0cmluZyBDU1NQcmltaXRp
dmVWYWx1ZTo6Z2V0U3RyaW5nVmFsdWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAjaWYgRU5B
QkxFKENTU19WQVJJQUJMRVMpCiAgICAgICAgIGNhc2UgQ1NTX1ZBUklBQkxFX05BTUU6CiAjZW5k
aWYKKyAgICAgICAgY2FzZSBDU1NfUEFSU0VSX0lERU5USUZJRVI6CisgICAgICAgIGNhc2UgQ1NT
X0VMRU1FTlRfSUQ6CiAgICAgICAgICAgICByZXR1cm4gbV92YWx1ZS5zdHJpbmc7CiAgICAgICAg
IGNhc2UgQ1NTX0lERU5UOgogICAgICAgICAgICAgcmV0dXJuIHZhbHVlT3JQcm9wZXJ0eU5hbWUo
bV92YWx1ZS5pZGVudCk7CkBAIC03ODgsNiArNzkxLDggQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZh
bHVlOjpnZXRTdHJpbmdWYWx1ZSgpIGNvbnN0CiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAg
ICAgICAgIGNhc2UgQ1NTX1ZBUklBQkxFX05BTUU6CiAjZW5kaWYKKyAgICAgICAgY2FzZSBDU1Nf
UEFSU0VSX0lERU5USUZJRVI6CisgICAgICAgIGNhc2UgQ1NTX0VMRU1FTlRfSUQ6CiAgICAgICAg
ICAgICByZXR1cm4gbV92YWx1ZS5zdHJpbmc7CiAgICAgICAgIGNhc2UgQ1NTX0lERU5UOgogICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlT3JQcm9wZXJ0eU5hbWUobV92YWx1ZS5pZGVudCk7CkBAIC0x
MDk3LDYgKzExMDIsOSBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmN1c3RvbUNzc1RleHQo
KSBjb25zdAogICAgICAgICBjYXNlIENTU19QQVJTRVJfSURFTlRJRklFUjoKICAgICAgICAgICAg
IHRleHQgPSBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKTsKICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU19FTEVNRU5UX0lEOgorICAgICAgICAgICAgdGV4
dCA9ICIjIiArIHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpOworICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0NBTEM6CiAgICAgICAgICAgICB0ZXh0ID0g
bV92YWx1ZS5jYWxjLT5jc3NUZXh0KCk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKaW5kZXggNjcyY2E0ZS4uYTA5OTViOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTEzNCw2ICsxMzQsNyBAQCBwdWJsaWM6
CiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgICAgIENTU19WQVJJQUJMRV9OQU1FID0g
MTE2LAogI2VuZGlmCisgICAgICAgIENTU19FTEVNRU5UX0lEID0gMTE3LAogICAgIH07CiAKICAg
ICAvLyBUaGlzIGVudW0gZm9sbG93cyB0aGUgQ1NTUGFyc2VyOjpVbml0cyBlbnVtIGF1Z21lbnRl
ZCB3aXRoIFVOSVRfRlJFUVVFTkNZIGZvciBmcmVxdWVuY2llcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJv
cGVydHkuY3BwCmluZGV4IDNlZjYxZDUuLjk3OWM5M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0eS5jcHAKQEAgLTcwNCw2ICs3MDQsMTIgQEAgYm9vbCBDU1NQcm9wZXJ0eTo6aXNJbmhlcml0
ZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiAjaWYgRU5BQkxFKERBU0hCT0FS
RF9TVVBQT1JUKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXREYXNoYm9hcmRSZWdpb246CiAj
ZW5kaWYKKyAgICBjYXNlIENTU1Byb3BlcnR5TmF2SW5kZXg6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eU5hdkRvd246CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdkxlZnQ6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eU5hdlJpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZVcDoKKwogI2lmIEVOQUJMRShE
UkFHR0FCTEVfUkVHSU9OKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBSZWdpb246CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmlu
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KaW5kZXggOWIyNWQ5MC4u
NDIwNjAzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMu
aW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KQEAgLTEyMiw2
ICsxMjIsMTEgQEAgbGlzdC1zdHlsZQogbGlzdC1zdHlsZS1pbWFnZQogbGlzdC1zdHlsZS1wb3Np
dGlvbgogbGlzdC1zdHlsZS10eXBlCituYXYtZG93bgorbmF2LWxlZnQKK25hdi1yaWdodAorbmF2
LXVwCituYXYtaW5kZXgKIG1hcmdpbgogbWFyZ2luLWJvdHRvbQogbWFyZ2luLWxlZnQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4Kb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEw
MDc1NQppbmRleCBjNTkxOTk2Li43OGY5YzlkCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZUtleXdvcmRzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRz
LmluCkBAIC0xMDEyLDYgKzEwMTIsMTAgQEAgZnJvbS1pbWFnZQogc25hcAogI2VuZGlmCiAKKy8v
IG5hdi0qCitjdXJyZW50Cityb290CisKIC8vIG92ZXJmbG93CiAtd2Via2l0LXBhZ2VkLXgKIC13
ZWJraXQtcGFnZWQteQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDY5NTI3
OTMuLjUzMmMxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTI4NzQs
OCArMjg3NCw4MiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVy
dHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQogICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRHcmlk
SXRlbUFmdGVyKGFmdGVyUG9zaXRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNh
c2UgQ1NTUHJvcGVydHlOYXZJbmRleDogeworICAgICAgICBpZiAoaXNJbmhlcml0KSB7CisgICAg
ICAgICAgICBzdGF0ZS5zdHlsZSgpLT5pbmhlcml0TmF2UHJvcGVydHkoaWQsIHN0YXRlLnBhcmVu
dFN0eWxlKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJvb2wg
aXNBdXRvID0gKGlzSW5pdGlhbCB8fCBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NW
YWx1ZUF1dG8pOworCisgICAgICAgIFN0eWxlTmF2SW5kZXgqIG5hdkluZGV4ID0gc3RhdGUuc3R5
bGUoKS0+YWNjZXNzTmF2SW5kZXgoKTsKKyAgICAgICAgaWYgKCFuYXZJbmRleCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBpZiAoaXNBdXRvKSB7CisgICAgICAgICAgICBuYXZJbmRl
eC0+c2V0SXNBdXRvKHRydWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAg
ICAvLyBUaGVzZSBwcm9wZXJ0aWVzIGFyZSBhbGlhc2VkIGFuZCBEZXByZWNhdGVkU3R5bGVCdWls
ZGVyIGFscmVhZHkgYXBwbGllZCB0aGUgcHJvcGVydHkgb24gdGhlIHByZWZpeGVkIHZlcnNpb24u
CisgICAgICAgIG5hdkluZGV4LT5zZXRJc0F1dG8oZmFsc2UpOworICAgICAgICBuYXZJbmRleC0+
c2V0SW5kZXgobWF4KHN0YXRpY19jYXN0PGludD4oc3RkOjpudW1lcmljX2xpbWl0czxzaG9ydD46
Om1pbigpKSwgbWluKHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpLCBzdGF0aWNfY2FzdDxp
bnQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8c2hvcnQ+OjptYXgoKSkpKSk7CisgICAgICAgIHN0YXRl
LmVsZW1lbnQoKS0+c2V0VGFiSW5kZXhFeHBsaWNpdGx5KG5hdkluZGV4LT5pbmRleCgpKTsKKwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZEb3duOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlOYXZMZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZSaWdodDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5TmF2VXA6IHsKKyAgICAgICAgaWYgKGlzSW5oZXJpdCkgewor
ICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+aW5oZXJpdE5hdlByb3BlcnR5KGlkLCBzdGF0ZS5w
YXJlbnRTdHlsZSgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGJvb2wgaXNBdXRvID0gcHJpbWl0aXZlVmFsdWUgJiYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpID09IENTU1ZhbHVlQXV0byk7CisgICAgICAgIGlmIChpc0F1dG8pIHsKKyAgICAgICAgICAg
IGNvbnN0IFN0eWxlTmF2RGlyZWN0aW9uKiBvbGROYXZEaXJlY3Rpb24gPSBzdGF0ZS5zdHlsZSgp
LT5uYXZEaXJlY3Rpb24oaWQpOworICAgICAgICAgICAgaWYgKCFvbGROYXZEaXJlY3Rpb24gfHwg
IW9sZE5hdkRpcmVjdGlvbi0+bmF2VGFyZ2V0VHlwZSgpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIFN0eWxlTmF2RGlyZWN0aW9uKiBuYXZEaXJlY3Rpb24g
PSBzdGF0ZS5zdHlsZSgpLT5hY2Nlc3NOYXZEaXJlY3Rpb24oaWQpOworICAgICAgICBpZiAoIW5h
dkRpcmVjdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoaXNBdXRvKSB7
CisgICAgICAgICAgICBuYXZEaXJlY3Rpb24tPnNldE5hdlRhcmdldFR5cGUoU3R5bGVOYXZEaXJl
Y3Rpb246Ok5hdk5vbmUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlKSB7CisgICAgICAgICAgICBuYXZEaXJlY3Rpb24tPnNldE5h
dlRhcmdldFR5cGUoU3R5bGVOYXZEaXJlY3Rpb246Ok5hdlRhcmdldEN1cnJlbnQpOworICAgICAg
ICAgICAgbmF2RGlyZWN0aW9uLT5zZXRJZChwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUo
KSk7CisgICAgICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKKyAgICAgICAg
ICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVl
KTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gbGlzdC0+aXRlbSgwKTsKKyAgICAgICAg
ICAgIGlmICghaXRlbSB8fCAhaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOworICAgICAgICAgICAgbmF2RGlyZWN0aW9uLT5zZXRJ
ZChwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKSk7CisKKyAgICAgICAgICAgIGl0ZW0g
PSBsaXN0LT5pdGVtKDEpOworICAgICAgICAgICAgaWYgKGl0ZW0gJiYgaXRlbS0+aXNQcmltaXRp
dmVWYWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOworICAgICAgICAgICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUN1cnJlbnQpCisgICAgICAgICAgICAgICAg
ICAgIG5hdkRpcmVjdGlvbi0+c2V0TmF2VGFyZ2V0VHlwZShTdHlsZU5hdkRpcmVjdGlvbjo6TmF2
VGFyZ2V0Q3VycmVudCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkgPT0gQ1NTVmFsdWVSb290KQorICAgICAgICAgICAgICAgICAgICBuYXZEaXJl
Y3Rpb24tPnNldE5hdlRhcmdldFR5cGUoU3R5bGVOYXZEaXJlY3Rpb246Ok5hdlRhcmdldFJvb3Qp
OworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBuYXZEaXJlY3Rp
b24tPnNldE5hdlRhcmdldFR5cGUoU3R5bGVOYXZEaXJlY3Rpb246Ok5hdlRhcmdldE5hbWUpOwor
ICAgICAgICAgICAgICAgICAgICBuYXZEaXJlY3Rpb24tPnNldFRhcmdldChwcmltaXRpdmVWYWx1
ZS0+Z2V0U3RyaW5nVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgbmF2RGlyZWN0aW9uLT5zZXROYXZUYXJnZXRUeXBlKFN0eWxl
TmF2RGlyZWN0aW9uOjpOYXZUYXJnZXRDdXJyZW50KTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm47CisgICAgfQorICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgYXJlIGFsaWFzZWQgYW5kIFN0eWxl
QnVpbGRlciBhbHJlYWR5IGFwcGxpZWQgdGhlIHByb3BlcnR5IG9uIHRoZSBwcmVmaXhlZCB2ZXJz
aW9uLgogICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uRGVsYXk6CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRyYW5zaXRpb25EdXJhdGlvbjoKICAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlv
blByb3BlcnR5OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNDMyMDk1NC4uZmMyZDE1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCkBAIC02MjMsNiArNjIzLDcgQEAgcHVibGljOgogICAgIEludFNpemUgc2F2
ZWRMYXllclNjcm9sbE9mZnNldCgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2F2ZWRMYXllclNjcm9s
bE9mZnNldChjb25zdCBJbnRTaXplJik7CiAKKyAgICB2b2lkIHNldFRhYkluZGV4RXhwbGljaXRs
eShzaG9ydCk7CiBwcm90ZWN0ZWQ6CiAgICAgRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICAgICAg
ICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50LCB0eXBlKQpAQCAtNjQzLDcgKzY0NCw2IEBAIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVnaXN0ZXJBc0V4dHJhTmFtZWRJdGVt
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQgY2xlYXJUYWJJbmRleEV4cGxp
Y2l0bHlJZk5lZWRlZCgpOyAgICAKLSAgICB2b2lkIHNldFRhYkluZGV4RXhwbGljaXRseShzaG9y
dCk7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHNob3J0IHRhYkluZGV4KCkgY29uc3QgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA0MjdmZTIxLi5lMjU4NDU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zNzM3LDkgKzM3MzcsNiBAQCB2b2lkIEV2ZW50SGFu
ZGxlcjo6ZGVmYXVsdEFycm93RXZlbnRIYW5kbGVyKEZvY3VzRGlyZWN0aW9uIGZvY3VzRGlyZWN0
aW9uLCBLZXlibwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFp
c1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChtX2ZyYW1lKSkKLSAgICAgICAgcmV0dXJuOwotCiAg
ICAgLy8gQXJyb3dzIGFuZCBvdGhlciBwb3NzaWJsZSBkaXJlY3Rpb25hbCBuYXZpZ2F0aW9uIGtl
eXMgY2FuIGJlIHVzZWQgaW4gZGVzaWduCiAgICAgLy8gbW9kZSBlZGl0aW5nLgogICAgIGlmICht
X2ZyYW1lLT5kb2N1bWVudCgpLT5pbkRlc2lnbk1vZGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcAppbmRleCBhYWZjMzNjLi5kODdlMmY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCkBAIC04NDksNiArODQ5LDU1IEBAIGJvb2wgRm9jdXND
b250cm9sbGVyOjphZHZhbmNlRm9jdXNEaXJlY3Rpb25hbGx5KEZvY3VzRGlyZWN0aW9uIGRpcmVj
dGlvbiwgS2V5Ym9hCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIE5vZGUqIGZvY3VzZWRO
b2RlID0gZm9jdXNlZERvY3VtZW50LT5mb2N1c2VkTm9kZSgpOworICAgIGlmIChmb2N1c2VkTm9k
ZSkgeworICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZm9jdXNlZE5vZGUtPnJlbmRl
cmVyKCk7CisgICAgICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlcmVyID8gcmVuZGVyZXIt
PnN0eWxlKCkgOiAwOworICAgICAgICBpZiAoc3R5bGUpIHsKKyAgICAgICAgICAgIGludCBwcm9w
SWQgPSAwOworICAgICAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKKyAgICAgICAgICAgIGNh
c2UgRm9jdXNEaXJlY3Rpb25VcDoKKyAgICAgICAgICAgICAgICBwcm9wSWQgPSBDU1NQcm9wZXJ0
eU5hdlVwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGb2N1c0Rp
cmVjdGlvbkRvd246CisgICAgICAgICAgICAgICAgcHJvcElkID0gQ1NTUHJvcGVydHlOYXZEb3du
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGb2N1c0RpcmVjdGlv
bkxlZnQ6CisgICAgICAgICAgICAgICAgcHJvcElkID0gQ1NTUHJvcGVydHlOYXZMZWZ0OworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGb2N1c0RpcmVjdGlvblJpZ2h0
OgorICAgICAgICAgICAgICAgIHByb3BJZCA9IENTU1Byb3BlcnR5TmF2UmlnaHQ7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb25zdCBTdHlsZU5hdkRpcmVjdGlv
biogY3VyTmF2RGlyZWN0aW9uID0gc3R5bGUtPm5hdkRpcmVjdGlvbihwcm9wSWQpOworICAgICAg
ICAgICAgaWYgKGN1ck5hdkRpcmVjdGlvbiAmJiBjdXJOYXZEaXJlY3Rpb24tPm5hdlRhcmdldFR5
cGUoKSkgeworICAgICAgICAgICAgICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IDA7CisgICAgICAg
ICAgICAgICAgaWYgKGN1ck5hdkRpcmVjdGlvbi0+bmF2VGFyZ2V0VHlwZSgpID09IFN0eWxlTmF2
RGlyZWN0aW9uOjpOYXZUYXJnZXRSb290KQorICAgICAgICAgICAgICAgICAgICB0YXJnZXRGcmFt
ZSA9IGN1ckZyYW1lLT50cmVlKCktPnRvcCgpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1
ck5hdkRpcmVjdGlvbi0+bmF2VGFyZ2V0VHlwZSgpID09IFN0eWxlTmF2RGlyZWN0aW9uOjpOYXZU
YXJnZXROYW1lKQorICAgICAgICAgICAgICAgICAgICB0YXJnZXRGcmFtZSA9IGN1ckZyYW1lLT50
cmVlKCktPmZpbmQoY3VyTmF2RGlyZWN0aW9uLT50YXJnZXQoKSk7CisKKyAgICAgICAgICAgICAg
ICBEb2N1bWVudCogdGFyZ2V0RG9jdW1lbnQgPSAwOworICAgICAgICAgICAgICAgIGlmICh0YXJn
ZXRGcmFtZSkKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0RG9jdW1lbnQgPSB0YXJnZXRGcmFt
ZS0+ZG9jdW1lbnQoKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRhcmdldERvY3VtZW50KQorICAg
ICAgICAgICAgICAgICAgICB0YXJnZXREb2N1bWVudCA9IGZvY3VzZWREb2N1bWVudDsKKworICAg
ICAgICAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0YXJnZXREb2N1bWVudC0+Z2V0RWxlbWVu
dEJ5SWQoY3VyTmF2RGlyZWN0aW9uLT5pZCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVu
dCAmJiBlbGVtZW50LT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KSkgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoZWxlbWVudCAhPSBmb2N1c2VkTm9kZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVsZW1lbnQtPmZvY3VzKGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgaWYgKCFpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChjdXJGcmFtZSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKwogICAgIE5vZGUqIGNvbnRhaW5lciA9IGZvY3VzZWREb2N1bWVudDsK
IAogICAgIGlmIChjb250YWluZXItPmlzRG9jdW1lbnROb2RlKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCBiNzc1YzNjLi4wMGRmN2Yy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAK
QEAgLTE0MSw2ICsxNDEsMTEgQEAgQUxXQVlTX0lOTElORSBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5
bGUoYm9vbCkKICNlbmRpZgogICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2dy
aWQuaW5pdCgpOwogICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2dyaWRJdGVt
LmluaXQoKTsKKyAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9uYXZVcC5pbml0
KCk7CisgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbmF2RG93bi5pbml0KCk7
CisgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbmF2TGVmdC5pbml0KCk7Cisg
ICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbmF2UmlnaHQuaW5pdCgpOworICAg
IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX25hdkluZGV4LmluaXQoKTsKICAgICBy
YXJlSW5oZXJpdGVkRGF0YS5pbml0KCk7CiAgICAgaW5oZXJpdGVkLmluaXQoKTsKICNpZiBFTkFC
TEUoU1ZHKQpAQCAtMTY3MSw0ICsxNjc2LDcwIEBAIEV4Y2x1c2lvblNoYXBlVmFsdWUqIFJlbmRl
clN0eWxlOjppbml0aWFsU2hhcGVJbnNpZGUoKQogICAgIHJldHVybiBzT3V0c2lkZVZhbHVlLmdl
dCgpOwogfQogCitjb25zdCBTdHlsZU5hdkRpcmVjdGlvbiogUmVuZGVyU3R5bGU6Om5hdkRpcmVj
dGlvbihpbnQgcHJvcElkKQoreworICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJ
RD4ocHJvcElkKSkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZEb3duOgorICAgICAgICByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbmF2RG93bi5nZXQoKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5TmF2TGVmdDoKKyAgICAgICAgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX25h
dkxlZnQuZ2V0KCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdlJpZ2h0OgorICAgICAgICByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbmF2UmlnaHQuZ2V0KCk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eU5hdlVwOgorICAgICAgICByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbmF2
VXAuZ2V0KCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVy
biAwOworfQorCitjb25zdCBTdHlsZU5hdkluZGV4KiBSZW5kZXJTdHlsZTo6bmF2SW5kZXgoKQor
eworICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9uYXZJbmRleC5nZXQoKTsKK30K
KworU3R5bGVOYXZJbmRleCogUmVuZGVyU3R5bGU6OmFjY2Vzc05hdkluZGV4KCkKK3sKKyAgICBy
ZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbmF2SW5kZXguYWNjZXNzKCk7
Cit9CisKK1N0eWxlTmF2RGlyZWN0aW9uKiBSZW5kZXJTdHlsZTo6YWNjZXNzTmF2RGlyZWN0aW9u
KGludCBwcm9wSWQpCit7CisgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihw
cm9wSWQpKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdkRvd246CisgICAgICAgIHJldHVybiBy
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9uYXZEb3duLmFjY2VzcygpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlOYXZMZWZ0OgorICAgICAgICByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCktPm1fbmF2TGVmdC5hY2Nlc3MoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TmF2
UmlnaHQ6CisgICAgICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9u
YXZSaWdodC5hY2Nlc3MoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TmF2VXA6CisgICAgICAgIHJl
dHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9uYXZVcC5hY2Nlc3MoKTsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3Zv
aWQgUmVuZGVyU3R5bGU6OmluaGVyaXROYXZQcm9wZXJ0eShpbnQgcHJvcElkLCBjb25zdCBSZW5k
ZXJTdHlsZSogaW5oZXJpdFBhcmVudCkKK3sKKyAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PENTU1By
b3BlcnR5SUQ+KHByb3BJZCkpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5TmF2RG93bjoKKyAgICAg
ICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbmF2RG93biA9IGluaGVyaXRQYXJl
bnQtPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX25hdkRvd247CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ1NTUHJvcGVydHlOYXZMZWZ0OgorICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS0+bV9uYXZMZWZ0ID0gaW5oZXJpdFBhcmVudC0+cmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fbmF2TGVmdDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdlJpZ2h0
OgorICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9uYXZSaWdodCA9IGlu
aGVyaXRQYXJlbnQtPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX25hdlJpZ2h0OworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5TmF2VXA6CisgICAgICAgIHJhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5tX25hdlVwID0gaW5oZXJpdFBhcmVudC0+cmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fbmF2VXA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZJ
bmRleDoKKyAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbmF2SW5kZXgg
PSBpbmhlcml0UGFyZW50LT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9uYXZJbmRleDsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaAppbmRleCA5MDhlYzMwLi5iMTg1NWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtNTcsNiArNTcsOCBAQAogI2luY2x1ZGUgIlN0
eWxlR3JpZEl0ZW1EYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVNYXJxdWVlRGF0YS5oIgogI2luY2x1
ZGUgIlN0eWxlTXVsdGlDb2xEYXRhLmgiCisjaW5jbHVkZSAiU3R5bGVOYXZEaXJlY3Rpb24uaCIK
KyNpbmNsdWRlICJTdHlsZU5hdkluZGV4LmgiCiAjaW5jbHVkZSAiU3R5bGVSYXJlSW5oZXJpdGVk
RGF0YS5oIgogI2luY2x1ZGUgIlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaCIKICNpbmNsdWRl
ICJTdHlsZVJlZmxlY3Rpb24uaCIKQEAgLTE3NjMsNiArMTc2NSwxMiBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKENTU19DT01QT1NJVElORykKICAgICBzdGF0aWMgQmxlbmRNb2RlIGluaXRpYWxCbGVu
ZE1vZGUoKSB7IHJldHVybiBCbGVuZE1vZGVOb3JtYWw7IH0KICNlbmRpZgorICAgIGNvbnN0IFN0
eWxlTmF2RGlyZWN0aW9uKiBuYXZEaXJlY3Rpb24oaW50IHByb3BJZCk7CisgICAgU3R5bGVOYXZE
aXJlY3Rpb24qIGFjY2Vzc05hdkRpcmVjdGlvbihpbnQgcHJvcElkKTsKKyAgICBjb25zdCBTdHls
ZU5hdkluZGV4KiBuYXZJbmRleCgpOworICAgIFN0eWxlTmF2SW5kZXgqIGFjY2Vzc05hdkluZGV4
KCk7CisgICAgdm9pZCBpbmhlcml0TmF2UHJvcGVydHkoaW50IHByb3BJZCwgY29uc3QgUmVuZGVy
U3R5bGUqIGluaGVyaXRQYXJlbnQpOworCiBwcml2YXRlOgogICAgIHZvaWQgc2V0VmlzaXRlZExp
bmtDb2xvcihjb25zdCBDb2xvciYpOwogICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCYWNrZ3JvdW5k
Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92
aXNpdGVkTGlua0JhY2tncm91bmRDb2xvciwgdik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU5hdkRpcmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVOYXZEaXJlY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjFhOGU5MmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVOYXZEaXJlY3Rpb24uY3BwCkBAIC0wLDAgKzEsNDYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2FuZ2hvIEtpbSAodGhvbWFzLmtpbUBsZ2Uu
Y29tKQorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZXRyb25pY3MuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICoKKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHlsZU5hdkRpcmVjdGlv
bi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0eWxlTmF2RGlyZWN0aW9uOjpTdHlsZU5h
dkRpcmVjdGlvbigpCisgICAgOiBtX25hdlRhcmdldFR5cGUoTmF2Tm9uZSkKK3sKK30KKworU3R5
bGVOYXZEaXJlY3Rpb246OlN0eWxlTmF2RGlyZWN0aW9uKGNvbnN0IFN0eWxlTmF2RGlyZWN0aW9u
JiBvKQorICAgIDogUmVmQ291bnRlZDxTdHlsZU5hdkRpcmVjdGlvbj4oKQorICAgICwgbV9pZChv
Lm1faWQpCisgICAgLCBtX3RhcmdldChvLm1fdGFyZ2V0KQorICAgICwgbV9uYXZUYXJnZXRUeXBl
KG8ubV9uYXZUYXJnZXRUeXBlKQoreworfQorCitib29sIFN0eWxlTmF2RGlyZWN0aW9uOjpvcGVy
YXRvcj09KGNvbnN0IFN0eWxlTmF2RGlyZWN0aW9uJiBvKSBjb25zdAoreworICAgIHJldHVybiBt
X25hdlRhcmdldFR5cGUgPT0gby5tX25hdlRhcmdldFR5cGUgJiYgbV9pZCA9PSBvLm1faWQgJiYg
bV90YXJnZXQgPT0gby5tX3RhcmdldDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVOYXZEaXJlY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU5hdkRpcmVjdGlvbi5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjYTc5MjkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVOYXZEaXJlY3Rpb24u
aApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbmdobyBLaW0g
KHRob21hcy5raW1AbGdlLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGV0cm9uaWNz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBTdHlsZU5hdkRpcmVjdGlvbl9oCisj
ZGVmaW5lIFN0eWxlTmF2RGlyZWN0aW9uX2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTdHlsZU5hdkRpcmVjdGlvbiA6
IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlTmF2RGlyZWN0aW9uPiB7CitwdWJsaWM6CisgICAgZW51
bSBOYXZUYXJnZXRUeXBlIHsKKyAgICAgICAgTmF2Tm9uZSA9IDAsCisgICAgICAgIE5hdlRhcmdl
dEN1cnJlbnQgPSAxLAorICAgICAgICBOYXZUYXJnZXROYW1lID0gMiwKKyAgICAgICAgTmF2VGFy
Z2V0Um9vdCA9IDQsCisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlTmF2RGly
ZWN0aW9uPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVOYXZEaXJlY3Rpb24p
OyB9CisgICAgUGFzc1JlZlB0cjxTdHlsZU5hdkRpcmVjdGlvbj4gY29weSgpIGNvbnN0IHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTdHlsZU5hdkRpcmVjdGlvbigqdGhpcykpOyB9CisKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgU3R5bGVOYXZEaXJlY3Rpb24mKSBjb25zdDsKKyAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgU3R5bGVOYXZEaXJlY3Rpb24mIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRo
aXMgPT0gbyk7IH0KKworICAgIFN0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAg
ICB2b2lkIHNldElkKGNvbnN0IFN0cmluZyYgaXRlbSkgeyBtX2lkID0gaXRlbTsgfQorICAgIFN0
cmluZyB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldDsgfQorICAgIHZvaWQgc2V0VGFy
Z2V0KGNvbnN0IFN0cmluZyYgaXRlbSkgeyBtX3RhcmdldCA9IGl0ZW07IH0KKyAgICB1bnNpZ25l
ZCBjaGFyIG5hdlRhcmdldFR5cGUoKSBjb25zdCB7IHJldHVybiBtX25hdlRhcmdldFR5cGU7IH0K
KyAgICB2b2lkIHNldE5hdlRhcmdldFR5cGUoY29uc3QgdW5zaWduZWQgY2hhciBpdGVtKSB7IG1f
bmF2VGFyZ2V0VHlwZSA9IGl0ZW07IH0KKworcHJpdmF0ZToKKyAgICBTdHlsZU5hdkRpcmVjdGlv
bigpOworICAgIFN0eWxlTmF2RGlyZWN0aW9uKGNvbnN0IFN0eWxlTmF2RGlyZWN0aW9uJik7CisK
KyAgICBTdHJpbmcgbV9pZDsKKyAgICBTdHJpbmcgbV90YXJnZXQ7CisgICAgdW5zaWduZWQgY2hh
ciBtX25hdlRhcmdldFR5cGU7CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIFN0eWxlTmF2RGlyZWN0aW9uX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlTmF2SW5kZXguY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlTmF2SW5kZXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmQ3YjZjODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVOYXZJbmRleC5jcHAKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBTYW5naG8gS2ltICh0aG9tYXMua2ltQGxnZS5jb20pCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgTEcgRWxldHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0eWxlTmF2SW5kZXguaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitTdHlsZU5hdkluZGV4OjpTdHlsZU5hdkluZGV4KCkKKyAgICA6IG1faW5kZXgo
MCkKKyAgICAsIG1faXNBdXRvKHRydWUpCit7Cit9CisKK1N0eWxlTmF2SW5kZXg6OlN0eWxlTmF2
SW5kZXgoY29uc3QgU3R5bGVOYXZJbmRleCYgbykKKyAgICA6IFJlZkNvdW50ZWQ8U3R5bGVOYXZJ
bmRleD4oKQorICAgICwgbV9pbmRleChvLm1faW5kZXgpCisgICAgLCBtX2lzQXV0byhvLm1faXNB
dXRvKQoreworfQorCitib29sIFN0eWxlTmF2SW5kZXg6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVO
YXZJbmRleCYgbykgY29uc3QKK3sKKyAgICByZXR1cm4gKChtX2lzQXV0byB8fCBvLm1faXNBdXRv
KSA/IG1faXNBdXRvID09IG8ubV9pc0F1dG8gOiBtX2luZGV4ID09IG8ubV9pbmRleCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlTmF2SW5kZXguaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZU5hdkluZGV4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MGIxZjE0MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZU5hdkluZGV4LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBTYW5naG8gS2ltICh0aG9tYXMua2ltQGxnZS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgTEcgRWxldHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgU3R5bGVO
YXZJbmRleF9oCisjZGVmaW5lIFN0eWxlTmF2SW5kZXhfaAorCisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFN0eWxlTmF2SW5k
ZXggOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZU5hdkluZGV4PiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3R5bGVOYXZJbmRleD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IFN0eWxlTmF2SW5kZXgpOyB9CisgICAgUGFzc1JlZlB0cjxTdHlsZU5hdkluZGV4PiBjb3B5
KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlTmF2SW5kZXgoKnRoaXMpKTsgfQor
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlTmF2SW5kZXgmKSBjb25zdDsKKyAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVOYXZJbmRleCYgbykgY29uc3QgeyByZXR1cm4gISgq
dGhpcyA9PSBvKTsgfQorCisgICAgaW50IGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsg
fQorICAgIHZvaWQgc2V0SW5kZXgoY29uc3QgaW50IGl0ZW0pIHsgbV9pbmRleCA9IGl0ZW07IH0K
KyAgICBib29sIGlzQXV0bygpIGNvbnN0IHsgcmV0dXJuIG1faXNBdXRvOyB9CisgICAgdm9pZCBz
ZXRJc0F1dG8oY29uc3QgYm9vbCBpdGVtKSB7IG1faXNBdXRvID0gaXRlbTsgfQorCitwcml2YXRl
OgorICAgIFN0eWxlTmF2SW5kZXgoKTsKKyAgICBTdHlsZU5hdkluZGV4KGNvbnN0IFN0eWxlTmF2
SW5kZXgmKTsKKworICAgIGludCBtX2luZGV4OworICAgIGJvb2wgbV9pc0F1dG87CisKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFN0eWxlTmF2RGF0YV9oCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhLmNwcAppbmRleCBmNWM2YmI4Li5lNGY4MTZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGEuY3BwCkBAIC0xNjgsNiArMTY4LDEyIEBAIFN0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVk
CiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKICAgICAsIG1fZWZmZWN0aXZlQmxlbmRNb2Rl
KG8ubV9lZmZlY3RpdmVCbGVuZE1vZGUpCiAjZW5kaWYKKyAgICAsIG1fbmF2VXAoby5tX25hdlVw
KQorICAgICwgbV9uYXZEb3duKG8ubV9uYXZEb3duKQorICAgICwgbV9uYXZMZWZ0KG8ubV9uYXZM
ZWZ0KQorICAgICwgbV9uYXZSaWdodChvLm1fbmF2UmlnaHQpCisgICAgLCBtX25hdkluZGV4KG8u
bV9uYXZJbmRleCkKKwogewogfQogCkBAIC0yNTYsNiArMjYyLDExIEBAIGJvb2wgU3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhJiBvKSBjCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKICAgICAgICAgJiYgbV9lZmZl
Y3RpdmVCbGVuZE1vZGUgPT0gby5tX2VmZmVjdGl2ZUJsZW5kTW9kZQogI2VuZGlmCisgICAgICAg
ICYmIG1fbmF2VXAgPT0gby5tX25hdlVwCisgICAgICAgICYmIG1fbmF2RG93biA9PSBvLm1fbmF2
RG93bgorICAgICAgICAmJiBtX25hdkxlZnQgPT0gby5tX25hdkxlZnQKKyAgICAgICAgJiYgbV9u
YXZSaWdodCA9PSBvLm1fbmF2UmlnaHQKKyAgICAgICAgJiYgbV9uYXZJbmRleCA9PSBvLm1fbmF2
SW5kZXgKICAgICAgICAgJiYgbV9oYXNBc3BlY3RSYXRpbyA9PSBvLm1faGFzQXNwZWN0UmF0aW87
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCmluZGV4IDBhM2M3YTguLjAwOWVhMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGEuaApAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1ZGUgIkZpbGxMYXllci5oIgog
I2luY2x1ZGUgIkxpbmVDbGFtcFZhbHVlLmgiCiAjaW5jbHVkZSAiTmluZVBpZWNlSW1hZ2UuaCIK
KyNpbmNsdWRlICJTdHlsZU5hdkRpcmVjdGlvbi5oIgorI2luY2x1ZGUgIlN0eWxlTmF2SW5kZXgu
aCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xOTcsNiArMTk5LDEyIEBAIHB1YmxpYzoKICAg
ICB1bnNpZ25lZCBtX2VmZmVjdGl2ZUJsZW5kTW9kZTogNTsgLy8gRUJsZW5kTW9kZQogI2VuZGlm
CiAKKyAgICBEYXRhUmVmPFN0eWxlTmF2RGlyZWN0aW9uPiBtX25hdlVwOworICAgIERhdGFSZWY8
U3R5bGVOYXZEaXJlY3Rpb24+IG1fbmF2RG93bjsKKyAgICBEYXRhUmVmPFN0eWxlTmF2RGlyZWN0
aW9uPiBtX25hdkxlZnQ7CisgICAgRGF0YVJlZjxTdHlsZU5hdkRpcmVjdGlvbj4gbV9uYXZSaWdo
dDsKKyAgICBEYXRhUmVmPFN0eWxlTmF2SW5kZXg+ICAgICBtX25hdkluZGV4OworCiBwcml2YXRl
OgogICAgIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKTsKICAgICBTdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCA2ZjAyZWE2Li4xZDFiMWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDQt
MzAgIFNhbmdobyBLaW0gIDx0aG9tYXMua2ltQGxnZS5jb20+CisKKyAgICAgICAgW0NTUzNdU3Vw
cG9ydCBDU1MzIGtleWJvYXJkIG5hdmlnYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MTc4LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBDU1MzIEtleWJvYXJkIGNvbnRy
b2wgaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzMy11aS8ja2V5Ym9hcmQuCisgICAgICAgIHRo
ZSBuZXcgcHJvcGVydGllczogbmF2LWluZGV4LCBuYXYtdXAsIG5hdi1yaWdodCwgbmF2LWRvd24s
IG5hdi1sZWZ0LgorCisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaDoKKyAg
ICAgICAgKFdlYktpdCk6CisKIDIwMTMtMDQtMjkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNo
QGFwcGxlLmNvbT4KIAogICAgICAgICBXRUIgU1BFRUNIOiBuZWVkIHRvIGlkZW50aWZ5IHRoZSBk
ZWZhdWx0IHZvaWNlIHBlciBsYW5ndWFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVm
ZXJlbmNlc1N0b3JlLmgKaW5kZXggM2YyZDc1MS4uMjkyNTQ4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiAvLyBtYWNybyhLZXlVcHBlciwgS2V5TG93ZXIsIFR5cGVOYW1lVXBwZXIs
IFR5cGVOYW1lLCBEZWZhdWx0VmFsdWUpIAogCi0jaWYgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oUVQpCiAjZGVmaW5lIERFRkFVTFRfV0VCS0lUX1RBQlNUT0xJ
TktTX0VOQUJMRUQgdHJ1ZQogI2Vsc2UKICNkZWZpbmUgREVGQVVMVF9XRUJLSVRfVEFCU1RPTElO
S1NfRU5BQkxFRCBmYWxzZQo=
</data>
<flag name="review"
          id="221764"
          type_id="1"
          status="-"
          setter="kling"
    />
    <flag name="commit-queue"
          id="221765"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>