<?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>70931</bug_id>
          
          <creation_ts>2011-10-26 08:37:20 -0700</creation_ts>
          <short_desc>Matched declaration cache</short_desc>
          <delta_ts>2011-11-30 10:32:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>davidbarr</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>hyatt</cc>
    
    <cc>kling</cc>
    
    <cc>levin</cc>
    
    <cc>macpherson</cc>
    
    <cc>pfeldman</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>490867</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-10-26 08:37:20 -0700</bug_when>
    <thetext>Sets of style declarations are applied repeatedly for different elements when calculating the document style. The same set off applied declarations result in the same non-inherited style, independent of the element and its context. We can use this to build a cache to speed up style applying and to share more style data for reduced memory usage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490925</commentid>
    <comment_count>1</comment_count>
      <attachid>112550</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-10-26 09:31:04 -0700</bug_when>
    <thetext>Created attachment 112550
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490939</commentid>
    <comment_count>2</comment_count>
      <attachid>112550</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-10-26 09:45:08 -0700</bug_when>
    <thetext>Comment on attachment 112550
patch

Attachment 112550 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10220257</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490942</commentid>
    <comment_count>3</comment_count>
      <attachid>112550</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-26 09:47:48 -0700</bug_when>
    <thetext>Comment on attachment 112550
patch

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

&gt; Source/WebCore/css/CSSProperty.cpp:384
&gt; +    COMPILE_ASSERT(349 == numCSSProperties, _when_adding_new_properties_add_the_inherited_here_and_bump_the_property_count);

Looks like this assertion is failing on various platforms. Maybe the number of properties varies based on feature defines?

&gt; Source/WebCore/css/CSSProperty.h:73
&gt; +    signed m_id : 14;
&gt; +    signed m_shorthandID : 14; // If this property was set as part of a shorthand, gives the shorthand.

Is there a good way to do a runtime check to assert we have enough bits here? Does this really need to be signed rather than unsigned?

&gt; Source/WebCore/css/CSSStyleSelector.cpp:2153
&gt; +    unsigned hash = 0;
&gt; +    for (unsigned i = 0; i &lt; size; ++i) {
&gt; +        unsigned ptrHash = PtrHash&lt;CSSMutableStyleDeclaration*&gt;::hash(declarations[i].styleDeclaration);
&gt; +        ptrHash ^= IntHash&lt;unsigned&gt;::hash(declarations[i].linkMatchType);
&gt; +        // Make the position matter.
&gt; +        hash ^= (ptrHash &lt;&lt; i) | (ptrHash &gt;&gt; (32 - i));
&gt; +    }
&gt; +    return hash;

I think a better way to compute this hash is to just compute a hash across each bit of data using the algorithm like StringHasher::hashMemory. Combining multiple hashes into a new one is typically not as good as that function. I believe that would be both faster and a better algorithm than this. The function that is needed to make StringHasher usable for this would be StringHasher::addMemory that would let you add things other than characters to a hash. Should be really easy to write.

&gt; Source/WebCore/css/CSSStyleSelector.cpp:2186
&gt; +        if (!(m_matchedDecls[i] == cacheItem.matchedStyleDeclarations[i]))

I think this would be easier to read with (a != b) rather than (!(a == b)).

&gt; Source/WebCore/css/CSSStyleSelector.cpp:2189
&gt; +    if (!(cacheItem.matchResult == matchResult))

Ditto.

&gt; Source/WebCore/css/CSSStyleSelector.cpp:2264
&gt; +    if (m_style-&gt;unique() || m_style-&gt;hasAppearance() || (m_style-&gt;styleType() != NOPSEUDO &amp;&amp; m_parentStyle-&gt;unique()) 
&gt; +        || m_style-&gt;zoom() != RenderStyle::initialZoom())
&gt; +        return;

You could break this up into two or more return statements to avoid having the awkwardly broken long line.

&gt; Source/WebCore/css/CSSStyleSelector.h:230
&gt; +        bool operator==(const MatchResult&amp;) const;

Usually as a matter of default C++ style operator== should be a free function, not a member function. In cases where type conversions are possible the free function allows type conversions on the left side. But I guess that might be a little tricky to do inside a class definition.

We should add an operator != that just calls operator== and does the ! part.

&gt; Source/WebCore/css/CSSStyleSelector.h:333
&gt; +        bool operator==(const MatchedStyleDeclaration&amp;) const;

Same as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490948</commentid>
    <comment_count>4</comment_count>
      <attachid>112550</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-26 09:53:01 -0700</bug_when>
    <thetext>Comment on attachment 112550
patch

Attachment 112550 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10220259</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490954</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-26 09:55:59 -0700</bug_when>
    <thetext>Attachment 112550 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/css/CSSStyleSelector.h:338:  Extra space before last semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Total errors found: 1 in 9 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>490977</commentid>
    <comment_count>6</comment_count>
      <attachid>112550</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-10-26 10:15:10 -0700</bug_when>
    <thetext>Comment on attachment 112550
patch

Attachment 112550 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10214548</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491017</commentid>
    <comment_count>7</comment_count>
      <attachid>112550</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-10-26 10:59:38 -0700</bug_when>
    <thetext>Comment on attachment 112550
patch

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

Looks good. One thing I think we should be doing is sampling the Web to try to find out how to break up our data structs these days. I think we may get a big win from having more smaller structs (especially with the gigantic RareXXX structs we&apos;ve got going on now).

&gt; Source/WebCore/css/CSSProperty.cpp:381
&gt; +    default:

What about removing this default and instead listing all the other properties? Then you&apos;ll get a compile error that the case isn&apos;t handled by the switch for any new props added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491020</commentid>
    <comment_count>8</comment_count>
      <attachid>112550</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-10-26 11:01:40 -0700</bug_when>
    <thetext>Comment on attachment 112550
patch

Attachment 112550 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10214564</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491389</commentid>
    <comment_count>9</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-10-27 00:47:06 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 112550 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=112550&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSProperty.cpp:384
&gt; &gt; +    COMPILE_ASSERT(349 == numCSSProperties, _when_adding_new_properties_add_the_inherited_here_and_bump_the_property_count);
&gt; 
&gt; Looks like this assertion is failing on various platforms. Maybe the number of properties varies based on feature defines?

As Hyatt suggested, I just added all properties to the switch instead (with some feature ifdefs).

&gt; &gt; Source/WebCore/css/CSSProperty.h:73
&gt; &gt; +    signed m_id : 14;
&gt; &gt; +    signed m_shorthandID : 14; // If this property was set as part of a shorthand, gives the shorthand.
&gt; 
&gt; Is there a good way to do a runtime check to assert we have enough bits here? Does this really need to be signed rather than unsigned?

I don&apos;t know any good way to do that. Switched to unsigned.

&gt; I think a better way to compute this hash is to just compute a hash across each bit of data using the algorithm like StringHasher::hashMemory. Combining multiple hashes into a new one is typically not as good as that function. I believe that would be both faster and a better algorithm than this. The function that is needed to make StringHasher usable for this would be StringHasher::addMemory that would let you add things other than characters to a hash. Should be really easy to write.

True. Will leave this as a future excercise.

&gt; &gt; Source/WebCore/css/CSSStyleSelector.cpp:2186
&gt; &gt; +        if (!(m_matchedDecls[i] == cacheItem.matchedStyleDeclarations[i]))
&gt; 
&gt; I think this would be easier to read with (a != b) rather than (!(a == b)).

Done.

&gt; You could break this up into two or more return statements to avoid having the awkwardly broken long line.

Done.

&gt; &gt; Source/WebCore/css/CSSStyleSelector.h:230
&gt; &gt; +        bool operator==(const MatchResult&amp;) const;
&gt; 
&gt; Usually as a matter of default C++ style operator== should be a free function, not a member function. In cases where type conversions are possible the free function allows type conversions on the left side. But I guess that might be a little tricky to do inside a class definition.

Made these free functions, just had to make them friends too.

&gt; We should add an operator != that just calls operator== and does the ! part.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491406</commentid>
    <comment_count>10</comment_count>
      <attachid>112650</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-10-27 01:31:40 -0700</bug_when>
    <thetext>Created attachment 112650
for bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491408</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-27 01:33:47 -0700</bug_when>
    <thetext>Attachment 112650 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/css/CSSStyleSelector.h:336:  Extra space before last semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Total errors found: 1 in 9 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>491411</commentid>
    <comment_count>12</comment_count>
      <attachid>112650</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-10-27 01:52:19 -0700</bug_when>
    <thetext>Comment on attachment 112650
for bots

Attachment 112650 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10228274</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491416</commentid>
    <comment_count>13</comment_count>
      <attachid>112653</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-10-27 02:05:19 -0700</bug_when>
    <thetext>Created attachment 112653
for bots 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491431</commentid>
    <comment_count>14</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-10-27 02:40:09 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/98542</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491619</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-27 08:54:25 -0700</bug_when>
    <thetext>This patch may have broken tables/mozilla_expected_failures/bugs/bug14007-2.html on SL:
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r98564%20(34231)/results.html

Blame list: http://trac.webkit.org/log/?action=stop_on_copy&amp;mode=stop_on_copy&amp;rev=98563&amp;stop_rev=98534&amp;limit=100&amp;verbose=on</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491914</commentid>
    <comment_count>16</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-10-27 13:58:09 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; This patch may have broken tables/mozilla_expected_failures/bugs/bug14007-2.html on SL:
&gt; http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r98564%20(34231)/results.html
&gt; 
&gt; Blame list: http://trac.webkit.org/log/?action=stop_on_copy&amp;mode=stop_on_copy&amp;rev=98563&amp;stop_rev=98534&amp;limit=100&amp;verbose=on

Looks like https://bugs.webkit.org/show_bug.cgi?id=71019 tracks one regression caused by this change. I&apos;m suspecting that there may be others.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491928</commentid>
    <comment_count>17</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-10-27 14:07:12 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/98615 fixed tables/mozilla_expected_failures/bugs/bug14007-2.html

https://bugs.webkit.org/show_bug.cgi?id=71019 may be fixed by https://bugs.webkit.org/attachment.cgi?id=112694&amp;action=review .

What else do you suspect?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491943</commentid>
    <comment_count>18</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-10-27 14:18:09 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; http://trac.webkit.org/changeset/98615 fixed tables/mozilla_expected_failures/bugs/bug14007-2.html
&gt; 
&gt; https://bugs.webkit.org/show_bug.cgi?id=71019 may be fixed by https://bugs.webkit.org/attachment.cgi?id=112694&amp;action=review .
&gt; 
&gt; What else do you suspect?

We have a regression on Linux x64 which happened in the range r98537:r98546

For some reason, we&apos;re having some non-deterministic behavior in the output of various worker tests and it started in this range. http://build.chromium.org/p/chromium.webkit/builders/Linux%20Tests/builds/15333/steps/ui_tests/logs/WorkerContextMultiPort

This change was the only one that seemed to do something interesting that range. I&apos;ll like have to see if I can repro the failure locally and if I can, then try to narrow down which patch caused this.

I was just looking forward to a fix to the other issues to see if this issue went away at the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497265</commentid>
    <comment_count>19</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-11-07 10:06:05 -0800</bug_when>
    <thetext>It seems like it also makes CSS render on the page:

https://bugs.webkit.org/show_bug.cgi?id=71703</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498310</commentid>
    <comment_count>20</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-08 12:00:51 -0800</bug_when>
    <thetext>Sad that we&apos;re getting slower on our HTML5-spec loading benchmark.  But a 40% memory win is nice. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498382</commentid>
    <comment_count>21</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-11-08 13:04:20 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Sad that we&apos;re getting slower on our HTML5-spec loading benchmark.  But a 40% memory win is nice. :)

Really? How much?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498385</commentid>
    <comment_count>22</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-11-08 13:08:13 -0800</bug_when>
    <thetext>As I stated in the ChangeLog, I saw about 10% progression in HTML5-spec loading benchmark so I&apos;m suprised you are seeing the opposite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498391</commentid>
    <comment_count>23</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-08 13:20:48 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; As I stated in the ChangeLog, I saw about 10% progression in HTML5-spec loading benchmark so I&apos;m suprised you are seeing the opposite.

My sincere apologies, I misread your ChangeLog!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499615</commentid>
    <comment_count>24</comment_count>
    <who name="David Barr">davidbarr</who>
    <bug_when>2011-11-09 20:45:34 -0800</bug_when>
    <thetext>http://code.google.com/p/chromium/issues/detail?id=102521 Google maps fails to render on the latest build
I&apos;ve traced this bug to http://trac.webkit.org/changeset/98542</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511869</commentid>
    <comment_count>25</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-11-30 10:32:59 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; http://code.google.com/p/chromium/issues/detail?id=102521 Google maps fails to render on the latest build
&gt; I&apos;ve traced this bug to http://trac.webkit.org/changeset/98542

Bug 71996.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112550</attachid>
            <date>2011-10-26 09:31:04 -0700</date>
            <delta_ts>2011-10-27 01:31:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>style-cache-10.patch</filename>
            <type>text/plain</type>
            <size>27892</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4NDc4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTEtMTAtMjYgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIE1hdGNoZWQgZGVjbGFyYXRpb24g
Y2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcw
OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0
cyBvZiBzdHlsZSBkZWNsYXJhdGlvbnMgYXJlIGFwcGxpZWQgcmVwZWF0ZWRseSBmb3IgZGlmZmVy
ZW50IGVsZW1lbnRzIHdoZW4gY2FsY3VsYXRpbmcgdGhlIGRvY3VtZW50IHN0eWxlLgorICAgICAg
ICBUaGUgc2FtZSBzZXQgb2ZmIGFwcGxpZWQgZGVjbGFyYXRpb25zIHJlc3VsdCBpbiB0aGUgc2Ft
ZSBub24taW5oZXJpdGVkIHN0eWxlLCBpbmRlcGVuZGVudCBvZiB0aGUgZWxlbWVudCBhbmQgCisg
ICAgICAgIGl0cyBjb250ZXh0LiBXZSBjYW4gdXNlIHRoaXMgdG8gYnVpbGQgYSBjYWNoZSB0byBz
cGVlZCB1cCBzdHlsZSBhcHBseWluZyBhbmQgdG8gc2hhcmUgbW9yZSBzdHlsZSBkYXRhIGZvcgor
ICAgICAgICByZWR1Y2VkIG1lbW9yeSB1c2FnZS4KKyAgICAgICAgCisgICAgICAgIFRoZSBwYXRj
aCByZWR1Y2VzIFJlbmRlclN0eWxlIG1lbW9yeSB1c2UgfjQwJSBhbmQgdG90YWwgbWVtb3J5IHVz
ZSBieSB+NyUgb3ZlciBIVE1MNSBzcGVjIGxvYWQuCisgICAgICAgIEl0IGlzIGFsc28gfjEwJSBw
cm9ncmVzc2lvbiBpbiBQZXJmb3JtYW5jZVRlc3RzL1BhcnNlci9odG1sNS1mdWxsLXJlbmRlci5o
dG1sLgorCisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NTUHJv
cGVydHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5OjpDU1NQcm9wZXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWQpOgorICAgICAgICAKKyAg
ICAgICAgICAgIFdlIG5lZWQgdG8ga25vdyB3aGljaCBwcm9wZXJ0aWVzIGFyZSBpbmhlcml0ZWQs
IHNvbWV0aGluZyB3ZSBkaWRuJ3QgaGF2ZSBhdmFpbGFibGUgc28gZmFyLgorICAgICAgICAKKyAg
ICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
dHlsZVNlbGVjdG9yOjptYXRjaEFsbFJ1bGVzKToKKyAgICAgICAgCisgICAgICAgICAgICBBIHNl
dCBvZiBkZWNsYXJhdGlvbnMgaXMgb25seSBjYWNoZWFibGUgaWYgaXQgY29udGFpbnMgbm8gZWxl
bWVudCBzcGVjaWZpYyBzdHlsZS4gVGhpcyB3YXkgd2UKKyAgICAgICAgICAgIGRvbid0IG5lZWQg
dG8gd29ycnkgYWJvdXQgY2FjaGUgaW52YWxpZGF0aW9uLiBUaGUgd2hvbGUgc3R5bGUgc2VsZWN0
b3IgaXMgcmVjb25zdHJ1Y3RlZCBpZiB0aGUKKyAgICAgICAgICAgIHN0eWxlc2hlZXRzIGNoYW5n
ZSwgaW52YWxpZGF0aW5nIHRoZSBjYWNoZSB0b28uCisgICAgCisgICAgICAgIChXZWJDb3JlOjpD
U1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckVsZW1lbnQpOgorICAgICAgICAKKyAgICAgICAgICAg
IFRyaWdnZXIgaW1hZ2UgbG9hZHMgYml0IGVhcmxpZXIgc28gY2FjaGVkIHN0eWxlIHdpbGwgaGF2
ZSB0aGVtIHRvby4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
OjphcHBseURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6
OmFwcGx5RGVjbGFyYXRpb25zKToKKyAgICAgICAgCisgICAgICAgICAgICBBbGxvdyBza2lwcGlu
ZyBvdmVyIG5vbi1pbmhlcml0ZWQgcHJvcGVydGllcy4KKyAgICAgICAgCisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjb21wdXRlRGVjbGFyYXRpb25IYXNoKToKKyAgICAgICAg
CisgICAgICAgICAgICBIYXNoIGZ1bmN0aW9uIGZvciBkZWNsYXJ0aW9uIGNhY2hlIGxvb2t1cHMu
CisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6TWF0Y2hSZXN1
bHQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6TWF0
Y2hlZFN0eWxlRGVjbGFyYXRpb246Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U3R5bGVTZWxlY3Rvcjo6ZmluZEZyb21NYXRjaGVkRGVjbGFyYXRpb25DYWNoZSk6CisgICAgICAg
IAorICAgICAgICAgICAgTG9va3VwIGZyb20gY2FjaGUuCisgICAgICAgIAorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YWRkVG9NYXRjaGVkRGVjbGFyYXRpb25DYWNoZSk6Cisg
ICAgICAgIAorICAgICAgICAgICAgQWRkIHRvIGNhY2hlLgorICAgICAgICAKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5TWF0Y2hlZERlY2xhcmF0aW9ucyk6CisgICAg
ICAgIAorICAgICAgICAgICAgSWYgY2FjaGVkIHN0eWxlIGlzIGZvdW5kLCBjb3B5IHRoZSBub24t
aW5oZXJpdGVkIHByb3BlcnRpZXMgZnJvbSB0aGUgY2FjaGUgYW5kIGFwcGx5IHRoZSBpbmhlcml0
ZWQgcHJvcGVydGllcyAoaWYgYW55KSBvbmx5LgorICAgICAgICAKKyAgICAgICAgICAgIEZvbnQg
YW5kIHpvb20gY2hhbmdlcyBmb3JjZSBmdWxsIGFwcGx5aW5nIGFzIHRoZXkgY2FuIGFmZmVjdCB2
YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllcyAodGhpcyBjYW4gYmUgcmVsYXhlZCBsYXRlcikuCisg
ICAgICAgIAorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpNYXRjaFJlc3VsdDo6TWF0Y2hSZXN1bHQpOgorICAgICAg
ICAKKyAgICAgICAgICAgIENhY2hlYWJpbGl0eSBiaXQuCisgICAgICAgIAorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6Y29weU5vbkluaGVyaXRlZEZyb20pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6Y29weU5vbkluaGVyaXRlZEZy
b20pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oOgorICAgICAg
ICAKKyAgICAgICAgICAgIEZ1bmN0aW9ucyBmb3IgYXNzZW1ibGluZyBSZW5kZXJTdHlsZSBmcm9t
IG5vbi1pbmhlcml0ZWQgcGFydHMgb2YgdGhlIGNhY2hlZCBzdHlsZS4KKwogMjAxMS0xMC0yNiAg
UGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgTm90IHJldmll
d2VkOiBmb2xsb3cgdXAgdG8gOTgyMzYgLSBtb3ZlZCBpbnNwZWN0b3Igc2V0dGluZ3MgaW5pdGlh
bGl6YXRpb24gZWFybGllciB0byB1bmJyZWFrIHNldHRpbmdzIHBhbmVsLgpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydHkuY3BwCShyZXZpc2lvbiA5ODQ3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw0ICsyODIsMTA2IEBA
IGludCBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHIKICAgICB9CiB9CiAKK2Jv
b2wgQ1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJvcGVydHkodW5zaWduZWQgcHJvcGVydHlJRCkK
K3sKKyAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBhdXRvZ2VuZXJhdGVkIGFsb25nIHdpdGgg
dGhlIHByb3BlcnR5IG5hbWUgdGFibGUuCisgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxDU1NQcm9w
ZXJ0eUlEPihwcm9wZXJ0eUlEKSkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBz
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZzoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Q2FwdGlvblNpZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlDdXJzb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eURpcmVjdGlvbjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5RW1wdHlDZWxsczoKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5Rm9udEZhbWlseToKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFNpemU6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9u
dFZhcmlhbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQ6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUltYWdlUmVuZGVyaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5n
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlMaW5lSGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlM
aXN0U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVQ
b3NpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5UG9pbnRlckV2ZW50czoKKyAgICBjYXNlIENT
U1Byb3BlcnR5UXVvdGVzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlSZXNpemU6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVNwZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0QWxpZ246CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0SW5k
ZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0U2hhZG93OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlWaXNpYmlsaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJIb3Jpem9udGFsU3BhY2luZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
VmVydGljYWxTcGFjaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb246
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbjoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TG9jYWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIaWdobGln
aHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlcjoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRBZnRlcjoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRCZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEh5cGhlbmF0ZUxpbWl0TGluZXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhl
bnM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCb3hDb250YWluOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWs6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE5i
c3BNb2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZzoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRleHREZWNvcmF0aW9uc0luRWZmZWN0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRleHRGaWxsQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1
cml0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3Q6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRTdHJva2VDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdp
ZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5OgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRVc2VyU2VsZWN0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcml0
aW5nTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2hpdGVTcGFjZToKKyAgICBjYXNlIENTU1By
b3BlcnR5V29yZEJyZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkU3BhY2luZzoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V29yZFdyYXA6CisgICAgLy8gU1ZHIGluaGVyaXRlZCBwcm9wZXJ0aWVz
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNsaXBSdWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xv
ckludGVycG9sYXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbkZp
bHRlcnM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yUmVuZGVyaW5nOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlGaWxsOgorICAgIGNhc2UgQ1NTUHJvcGVydHlGaWxsT3BhY2l0eToKKyAgICBjYXNl
IENTU1Byb3BlcnR5RmlsbFJ1bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdseXBoT3JpZW50YXRp
b25Ib3Jpem9udGFsOgorICAgIGNhc2UgQ1NTUHJvcGVydHlHbHlwaE9yaWVudGF0aW9uVmVydGlj
YWw6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUtlcm5pbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1h
cmtlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFya2VyRW5kOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlNYXJrZXJNaWQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmtlclN0YXJ0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlTdHJva2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZURhc2hhcnJheToK
KyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlRGFzaG9mZnNldDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5U3Ryb2tlTGluZWNhcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlTGluZWpvaW46Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZU1pdGVybGltaXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVN0cm9rZU9wYWNpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZVdpZHRoOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlTaGFwZVJlbmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFu
Y2hvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V3JpdGluZ01vZGU6CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgQ09N
UElMRV9BU1NFUlQoMzQ5ID09IG51bUNTU1Byb3BlcnRpZXMsIF93aGVuX2FkZGluZ19uZXdfcHJv
cGVydGllc19hZGRfdGhlX2luaGVyaXRlZF9oZXJlX2FuZF9idW1wX3RoZV9wcm9wZXJ0eV9jb3Vu
dCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0eS5oCShyZXZpc2lvbiA5ODQ3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBt
X3Nob3J0aGFuZElEKHNob3J0aGFuZElEKQogICAgICAgICAsIG1faW1wb3J0YW50KGltcG9ydGFu
dCkKICAgICAgICAgLCBtX2ltcGxpY2l0KGltcGxpY2l0KQorICAgICAgICAsIG1faW5oZXJpdGVk
KGlzSW5oZXJpdGVkUHJvcGVydHkocHJvcElEKSkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQog
ICAgIHsKICAgICB9CkBAIC01NiwyMCArNTcsMjMgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0lt
cG9ydGFudCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wb3J0YW50OyB9CiAgICAgYm9vbCBpc0ltcGxp
Y2l0KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsaWNpdDsgfQorICAgIGJvb2wgaXNJbmhlcml0ZWQo
KSBjb25zdCB7IHJldHVybiBtX2luaGVyaXRlZDsgfQogCiAgICAgQ1NTVmFsdWUqIHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsgfQogCiAgICAgU3RyaW5nIGNzc1RleHQoKSBj
b25zdDsKIAogICAgIHN0YXRpYyBpbnQgcmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoaW50
IHByb3BlcnR5SUQsIFRleHREaXJlY3Rpb24sIFdyaXRpbmdNb2RlKTsKKyAgICBzdGF0aWMgYm9v
bCBpc0luaGVyaXRlZFByb3BlcnR5KHVuc2lnbmVkIHByb3BlcnR5SUQpOwogCiAgICAgZnJpZW5k
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NQcm9wZXJ0eSYsIGNvbnN0IENTU1Byb3BlcnR5Jik7
CiAKICAgICAvLyBNYWtlIHN1cmUgdGhlIGZvbGxvd2luZyBmaXRzIGluIDQgYnl0ZXMuIFJlYWxs
eS4KLSAgICBzaWduZWQgbV9pZCA6IDE1OwotICAgIHNpZ25lZCBtX3Nob3J0aGFuZElEIDogMTU7
IC8vIElmIHRoaXMgcHJvcGVydHkgd2FzIHNldCBhcyBwYXJ0IG9mIGEgc2hvcnRoYW5kLCBnaXZl
cyB0aGUgc2hvcnRoYW5kLgorICAgIHNpZ25lZCBtX2lkIDogMTQ7CisgICAgc2lnbmVkIG1fc2hv
cnRoYW5kSUQgOiAxNDsgLy8gSWYgdGhpcyBwcm9wZXJ0eSB3YXMgc2V0IGFzIHBhcnQgb2YgYSBz
aG9ydGhhbmQsIGdpdmVzIHRoZSBzaG9ydGhhbmQuCiAgICAgYm9vbCBtX2ltcG9ydGFudCA6IDE7
CiAgICAgYm9vbCBtX2ltcGxpY2l0IDogMTsgLy8gV2hldGhlciBvciBub3QgdGhlIHByb3BlcnR5
IHdhcyBzZXQgaW1wbGljaXRseSBhcyB0aGUgcmVzdWx0IG9mIGEgc2hvcnRoYW5kLgorICAgIGJv
b2wgbV9pbmhlcml0ZWQgOiAxOwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiBtX3ZhbHVlOwogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDk4
NDc4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NjYsNiArNzY2LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXRjaEFs
bFJ1bGVzKE1hdAogICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmZpcnN0QXV0aG9yUnVs
ZSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maXJzdEF1dGhvclJ1bGUg
PSByZXN1bHQubGFzdEF1dGhvclJ1bGU7CiAgICAgICAgICAgICAgICAgICAgIGFkZE1hdGNoZWRE
ZWNsYXJhdGlvbihhdHRyLT5kZWNsKCkpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQuaXND
YWNoZWFibGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KQEAgLTc4Myw2ICs3ODQsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoQWxs
UnVsZXMoTWF0CiAgICAgICAgICAgICAgICAgcmVzdWx0Lmxhc3RBdXRob3JSdWxlID0gbV9tYXRj
aGVkRGVjbHMuc2l6ZSgpICsgYWRkaXRpb25hbERlY2xzU2l6ZSAtIDE7CiAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFkZGl0aW9uYWxEZWNsc1NpemU7ICsraSkKICAg
ICAgICAgICAgICAgICAgICAgYWRkTWF0Y2hlZERlY2xhcmF0aW9uKG1fYWRkaXRpb25hbEF0dHJp
YnV0ZVN0eWxlRGVjbHNbaV0pOworICAgICAgICAgICAgICAgIHJlc3VsdC5pc0NhY2hlYWJsZSA9
IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChtX3N0eWxlZEVs
ZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSkgewpAQCAtODA1LDYgKzgwNyw3IEBAIHZvaWQgQ1NTU3R5
bGVTZWxlY3Rvcjo6bWF0Y2hBbGxSdWxlcyhNYXQKICAgICAgICAgICAgIGlmIChyZXN1bHQuZmly
c3RBdXRob3JSdWxlID09IC0xKQogICAgICAgICAgICAgICAgIHJlc3VsdC5maXJzdEF1dGhvclJ1
bGUgPSByZXN1bHQubGFzdEF1dGhvclJ1bGU7CiAgICAgICAgICAgICBhZGRNYXRjaGVkRGVjbGFy
YXRpb24oaW5saW5lRGVjbCk7CisgICAgICAgICAgICByZXN1bHQuaXNDYWNoZWFibGUgPSBmYWxz
ZTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEyNDMsOSArMTI0Niw2IEBAIFBhc3NSZWZQdHI8
UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3IKICAgICAvLyBDbGVhbiB1cCBvdXIgc3R5bGUg
b2JqZWN0J3MgZGlzcGxheSBhbmQgdGV4dCBkZWNvcmF0aW9ucyAoYW1vbmcgb3RoZXIgZml4dXBz
KS4KICAgICBhZGp1c3RSZW5kZXJTdHlsZShzdHlsZSgpLCBtX3BhcmVudFN0eWxlLCBlbGVtZW50
KTsKIAotICAgIC8vIFN0YXJ0IGxvYWRpbmcgaW1hZ2VzIHJlZmVyZW5jZWQgYnkgdGhpcyBzdHls
ZS4KLSAgICBsb2FkUGVuZGluZ0ltYWdlcygpOwotCiAgICAgaW5pdEVsZW1lbnQoMCk7IC8vIENs
ZWFyIG91dCBmb3IgdGhlIG5leHQgcmVzb2x2ZS4KIAogICAgIC8vIE5vdyByZXR1cm4gdGhlIHN0
eWxlLgpAQCAtMjA4Miw3ICsyMDgyLDcgQEAgc3RhdGljIExlbmd0aCBjb252ZXJ0VG9GbG9hdExl
bmd0aChDU1NQcgogfQogCiB0ZW1wbGF0ZSA8Ym9vbCBhcHBseUZpcnN0Pgotdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjphcHBseURlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBz
dHlsZURlY2xhcmF0aW9uLCBib29sIGlzSW1wb3J0YW50KQordm9pZCBDU1NTdHlsZVNlbGVjdG9y
OjphcHBseURlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZURlY2xh
cmF0aW9uLCBib29sIGlzSW1wb3J0YW50LCBib29sIGluaGVyaXRlZE9ubHkpCiB7CiAgICAgQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHN0eWxlRGVjbGFy
YXRpb24tPmVuZCgpOwogICAgIGZvciAoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gc3R5bGVEZWNsYXJhdGlvbi0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7CkBAIC0yMDkyLDYgKzIwOTIsOSBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5RGVj
bGFyYXRpb24oCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpbnQgcHJvcGVydHkg
PSBjdXJyZW50LmlkKCk7CisgICAgICAgIAorICAgICAgICBpZiAoaW5oZXJpdGVkT25seSAmJiAh
Y3VycmVudC5pc0luaGVyaXRlZCgpICYmIGN1cnJlbnQudmFsdWUoKS0+Y3NzVmFsdWVUeXBlKCkg
IT0gQ1NTVmFsdWU6OkNTU19JTkhFUklUKQorICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgaWYgKGFwcGx5Rmlyc3QpIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKGZpcnN0Q1NT
UHJvcGVydHkgPT0gQ1NTUHJvcGVydHlDb2xvciwgQ1NTX2NvbG9yX2lzX2ZpcnN0X3Byb3BlcnR5
KTsKQEAgLTIxMTUsNyArMjExOCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlEZWNs
YXJhdGlvbigKIH0KIAogdGVtcGxhdGUgPGJvb2wgYXBwbHlGaXJzdD4KLXZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6YXBwbHlEZWNsYXJhdGlvbnMoYm9vbCBpc0ltcG9ydGFudCwgaW50IHN0YXJ0SW5k
ZXgsIGludCBlbmRJbmRleCkKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlEZWNsYXJhdGlv
bnMoYm9vbCBpc0ltcG9ydGFudCwgaW50IHN0YXJ0SW5kZXgsIGludCBlbmRJbmRleCwgYm9vbCBp
bmhlcml0ZWRPbmx5KQogewogICAgIGlmIChzdGFydEluZGV4ID09IC0xKQogICAgICAgICByZXR1
cm47CkBAIC0yMTI4LDQ4ICsyMTMxLDEzOCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5
RGVjbGFyYXRpb25zCiAgICAgICAgICAgICBtX2FwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSA9
IGxpbmtNYXRjaFR5cGUgJiBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGluazsKICAgICAgICAgICAg
IG1fYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSA9IGxpbmtNYXRjaFR5cGUgJiBTZWxl
Y3RvckNoZWNrZXI6Ok1hdGNoVmlzaXRlZDsKIAotICAgICAgICAgICAgYXBwbHlEZWNsYXJhdGlv
bjxhcHBseUZpcnN0PihzdHlsZURlY2xhcmF0aW9uLCBpc0ltcG9ydGFudCk7CisgICAgICAgICAg
ICBhcHBseURlY2xhcmF0aW9uPGFwcGx5Rmlyc3Q+KHN0eWxlRGVjbGFyYXRpb24sIGlzSW1wb3J0
YW50LCBpbmhlcml0ZWRPbmx5KTsKICAgICAgICAgfQogICAgICAgICBtX2FwcGx5UHJvcGVydHlU
b1JlZ3VsYXJTdHlsZSA9IHRydWU7CiAgICAgICAgIG1fYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExp
bmtTdHlsZSA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGZvciAoaW50IGkg
PSBzdGFydEluZGV4OyBpIDw9IGVuZEluZGV4OyArK2kpCi0gICAgICAgIGFwcGx5RGVjbGFyYXRp
b248YXBwbHlGaXJzdD4obV9tYXRjaGVkRGVjbHNbaV0uc3R5bGVEZWNsYXJhdGlvbiwgaXNJbXBv
cnRhbnQpOworICAgICAgICBhcHBseURlY2xhcmF0aW9uPGFwcGx5Rmlyc3Q+KG1fbWF0Y2hlZERl
Y2xzW2ldLnN0eWxlRGVjbGFyYXRpb24sIGlzSW1wb3J0YW50LCBpbmhlcml0ZWRPbmx5KTsKK30K
KwordW5zaWduZWQgQ1NTU3R5bGVTZWxlY3Rvcjo6Y29tcHV0ZURlY2xhcmF0aW9uSGFzaChNYXRj
aGVkU3R5bGVEZWNsYXJhdGlvbiogZGVjbGFyYXRpb25zLCB1bnNpZ25lZCBzaXplKQoreworICAg
IHVuc2lnbmVkIGhhc2ggPSAwOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKKyAgICAgICAgdW5zaWduZWQgcHRySGFzaCA9IFB0ckhhc2g8Q1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24qPjo6aGFzaChkZWNsYXJhdGlvbnNbaV0uc3R5bGVEZWNsYXJhdGlvbik7Cisg
ICAgICAgIHB0ckhhc2ggXj0gSW50SGFzaDx1bnNpZ25lZD46Omhhc2goZGVjbGFyYXRpb25zW2ld
LmxpbmtNYXRjaFR5cGUpOworICAgICAgICAvLyBNYWtlIHRoZSBwb3NpdGlvbiBtYXR0ZXIuCisg
ICAgICAgIGhhc2ggXj0gKHB0ckhhc2ggPDwgaSkgfCAocHRySGFzaCA+PiAoMzIgLSBpKSk7Cisg
ICAgfQorICAgIHJldHVybiBoYXNoOworfQorCitib29sIENTU1N0eWxlU2VsZWN0b3I6Ok1hdGNo
UmVzdWx0OjpvcGVyYXRvcj09KGNvbnN0IE1hdGNoUmVzdWx0JiBvKSBjb25zdAoreworICAgIHJl
dHVybiBmaXJzdFVBUnVsZSA9PSBvLmZpcnN0VUFSdWxlCisgICAgICAgICYmIGxhc3RVQVJ1bGUg
PT0gby5sYXN0VUFSdWxlCisgICAgICAgICYmIGZpcnN0QXV0aG9yUnVsZSA9PSBvLmZpcnN0QXV0
aG9yUnVsZQorICAgICAgICAmJiBsYXN0QXV0aG9yUnVsZSA9PSBvLmxhc3RBdXRob3JSdWxlCisg
ICAgICAgICYmIGZpcnN0VXNlclJ1bGUgPT0gby5maXJzdFVzZXJSdWxlCisgICAgICAgICYmIGxh
c3RVc2VyUnVsZSA9PSBvLmxhc3RVc2VyUnVsZQorICAgICAgICAmJiBpc0NhY2hlYWJsZSA9PSBv
LmlzQ2FjaGVhYmxlOworfQorCitib29sIENTU1N0eWxlU2VsZWN0b3I6Ok1hdGNoZWRTdHlsZURl
Y2xhcmF0aW9uOjpvcGVyYXRvcj09KGNvbnN0IE1hdGNoZWRTdHlsZURlY2xhcmF0aW9uJiBvKSBj
b25zdAoreworICAgIHJldHVybiBzdHlsZURlY2xhcmF0aW9uID09IG8uc3R5bGVEZWNsYXJhdGlv
biAmJiBsaW5rTWF0Y2hUeXBlID09IG8ubGlua01hdGNoVHlwZTsKK30KKworUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6ZmluZEZyb21NYXRjaGVkRGVjbGFyYXRpb25D
YWNoZSh1bnNpZ25lZCBoYXNoLCBjb25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQpCit7Cisg
ICAgQVNTRVJUKGhhc2gpOworCisgICAgTWF0Y2hlZFN0eWxlRGVjbGFyYXRpb25DYWNoZTo6aXRl
cmF0b3IgaXQgPSBtX21hdGNoU3R5bGVEZWNsYXJhdGlvbkNhY2hlLmZpbmQoaGFzaCk7CisgICAg
aWYgKGl0ID09IG1fbWF0Y2hTdHlsZURlY2xhcmF0aW9uQ2FjaGUuZW5kKCkpCisgICAgICAgIHJl
dHVybiAwOworICAgIE1hdGNoZWRTdHlsZURlY2xhcmF0aW9uQ2FjaGVJdGVtJiBjYWNoZUl0ZW0g
PSBpdC0+c2Vjb25kOworICAgIEFTU0VSVChjYWNoZUl0ZW0ubWF0Y2hSZXN1bHQuaXNDYWNoZWFi
bGUpOworICAgIAorICAgIHNpemVfdCBzaXplID0gbV9tYXRjaGVkRGVjbHMuc2l6ZSgpOworICAg
IGlmIChzaXplICE9IGNhY2hlSXRlbS5tYXRjaGVkU3R5bGVEZWNsYXJhdGlvbnMuc2l6ZSgpKQor
ICAgICAgICByZXR1cm4gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkg
eworICAgICAgICBpZiAoIShtX21hdGNoZWREZWNsc1tpXSA9PSBjYWNoZUl0ZW0ubWF0Y2hlZFN0
eWxlRGVjbGFyYXRpb25zW2ldKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBp
ZiAoIShjYWNoZUl0ZW0ubWF0Y2hSZXN1bHQgPT0gbWF0Y2hSZXN1bHQpKQorICAgICAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gY2FjaGVJdGVtLnJlbmRlclN0eWxlOworfQorCit2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OmFkZFRvTWF0Y2hlZERlY2xhcmF0aW9uQ2FjaGUoY29uc3QgUmVuZGVyU3R5
bGUqIHN0eWxlLCB1bnNpZ25lZCBoYXNoLCBjb25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQp
Cit7CisgICAgQVNTRVJUKGhhc2gpOworICAgIE1hdGNoZWRTdHlsZURlY2xhcmF0aW9uQ2FjaGVJ
dGVtIGNhY2hlSXRlbTsKKyAgICBjYWNoZUl0ZW0ubWF0Y2hlZFN0eWxlRGVjbGFyYXRpb25zLmFw
cGVuZChtX21hdGNoZWREZWNscyk7CisgICAgY2FjaGVJdGVtLm1hdGNoUmVzdWx0ID0gbWF0Y2hS
ZXN1bHQ7CisgICAgLy8gTm90ZSB0aGF0IHdlIGRvbid0IGNhY2hlIHRoZSBvcmlnaW5hbCBSZW5k
ZXJTdHlsZSBpbnN0YW5jZS4gSXQgbWF5IGJlIGZ1cnRoZXIgbW9kaWZpZWQuCisgICAgLy8gVGhl
IFJlbmRlclN0eWxlIGluIHRoZSBjYWNoZSBpcyByZWFsbHkganVzdCBhIGhvbGRlciBvZiB0aGUg
bm9uLWluaGVyaXRlZCBzdWJzdHJ1Y3R1cmVzIGFuZCBuZXZlciB1c2VkIGFzLWlzLgorICAgIGNh
Y2hlSXRlbS5yZW5kZXJTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShzdHlsZSk7CisgICAgbV9t
YXRjaFN0eWxlRGVjbGFyYXRpb25DYWNoZS5hZGQoaGFzaCwgY2FjaGVJdGVtKTsKIH0KIAogdm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseU1hdGNoZWREZWNsYXJhdGlvbnMoY29uc3QgTWF0Y2hS
ZXN1bHQmIG1hdGNoUmVzdWx0KQogeworICAgIHVuc2lnbmVkIGNhY2hlSGFzaCA9IG1hdGNoUmVz
dWx0LmlzQ2FjaGVhYmxlID8gY29tcHV0ZURlY2xhcmF0aW9uSGFzaChtX21hdGNoZWREZWNscy5k
YXRhKCksIG1fbWF0Y2hlZERlY2xzLnNpemUoKSkgOiAwOworICAgIGJvb2wgYXBwbHlJbmhlcml0
ZWRPbmx5ID0gZmFsc2U7CisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBjYWNoZWRTdHlsZTsKKyAg
ICBpZiAoY2FjaGVIYXNoICYmIChjYWNoZWRTdHlsZSA9IGZpbmRGcm9tTWF0Y2hlZERlY2xhcmF0
aW9uQ2FjaGUoY2FjaGVIYXNoLCBtYXRjaFJlc3VsdCkpKSB7CisgICAgICAgIC8vIFdlIGNhbiBi
dWlsZCB1cCB0aGUgc3R5bGUgYnkgY29weWluZyBub24taW5oZXJpdGVkIHByb3BlcnRpZXMgZnJv
bSBhbiBlYXJsaWVyIHN0eWxlIG9iamVjdCBidWlsdCB1c2luZyB0aGUgc2FtZSBleGFjdAorICAg
ICAgICAvLyBzdHlsZSBkZWNsYXJhdGlvbnMuIFdlIHRoZW4gb25seSBuZWVkIHRvIGFwcGx5IHRo
ZSBpbmhlcml0ZWQgcHJvcGVydGllcywgaWYgYW55LCBhcyB0aGVpciB2YWx1ZXMgY2FuIGRlcGVu
ZCBvbiB0aGUgCisgICAgICAgIC8vIGVsZW1lbnQgY29udGV4dC4gVGhpcyBpcyBmYXN0IGFuZCBz
YXZlcyBtZW1vcnkgYnkgcmV1c2luZyB0aGUgc3R5bGUgZGF0YSBzdHJ1Y3R1cmVzLgorICAgICAg
ICBtX3N0eWxlLT5jb3B5Tm9uSW5oZXJpdGVkRnJvbShjYWNoZWRTdHlsZS5nZXQoKSk7CisgICAg
ICAgIGFwcGx5SW5oZXJpdGVkT25seSA9IHRydWU7IAorICAgIH0KICAgICAvLyBOb3cgd2UgaGF2
ZSBhbGwgb2YgdGhlIG1hdGNoZWQgcnVsZXMgaW4gdGhlIGFwcHJvcHJpYXRlIG9yZGVyLiBXYWxr
IHRoZSBydWxlcyBhbmQgYXBwbHkKICAgICAvLyBoaWdoLXByaW9yaXR5IHByb3BlcnRpZXMgZmly
c3QsIGkuZS4sIHRob3NlIHByb3BlcnRpZXMgdGhhdCBvdGhlciBwcm9wZXJ0aWVzIGRlcGVuZCBv
bi4KICAgICAvLyBUaGUgb3JkZXIgaXMgKDEpIGhpZ2gtcHJpb3JpdHkgbm90IGltcG9ydGFudCwg
KDIpIGhpZ2gtcHJpb3JpdHkgaW1wb3J0YW50LCAoMykgbm9ybWFsIG5vdCBpbXBvcnRhbnQKICAg
ICAvLyBhbmQgKDQpIG5vcm1hbCBpbXBvcnRhbnQuCiAgICAgbV9saW5lSGVpZ2h0VmFsdWUgPSAw
OwotICAgIGFwcGx5RGVjbGFyYXRpb25zPHRydWU+KGZhbHNlLCAwLCBtX21hdGNoZWREZWNscy5z
aXplKCkgLSAxKTsKLSAgICBhcHBseURlY2xhcmF0aW9uczx0cnVlPih0cnVlLCBtYXRjaFJlc3Vs
dC5maXJzdEF1dGhvclJ1bGUsIG1hdGNoUmVzdWx0Lmxhc3RBdXRob3JSdWxlKTsKLSAgICBhcHBs
eURlY2xhcmF0aW9uczx0cnVlPih0cnVlLCBtYXRjaFJlc3VsdC5maXJzdFVzZXJSdWxlLCBtYXRj
aFJlc3VsdC5sYXN0VXNlclJ1bGUpOwotICAgIGFwcGx5RGVjbGFyYXRpb25zPHRydWU+KHRydWUs
IG1hdGNoUmVzdWx0LmZpcnN0VUFSdWxlLCBtYXRjaFJlc3VsdC5sYXN0VUFSdWxlKTsKLSAgICAK
KyAgICBhcHBseURlY2xhcmF0aW9uczx0cnVlPihmYWxzZSwgMCwgbV9tYXRjaGVkRGVjbHMuc2l6
ZSgpIC0gMSwgYXBwbHlJbmhlcml0ZWRPbmx5KTsKKyAgICBhcHBseURlY2xhcmF0aW9uczx0cnVl
Pih0cnVlLCBtYXRjaFJlc3VsdC5maXJzdEF1dGhvclJ1bGUsIG1hdGNoUmVzdWx0Lmxhc3RBdXRo
b3JSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOworICAgIGFwcGx5RGVjbGFyYXRpb25zPHRydWU+
KHRydWUsIG1hdGNoUmVzdWx0LmZpcnN0VXNlclJ1bGUsIG1hdGNoUmVzdWx0Lmxhc3RVc2VyUnVs
ZSwgYXBwbHlJbmhlcml0ZWRPbmx5KTsKKyAgICBhcHBseURlY2xhcmF0aW9uczx0cnVlPih0cnVl
LCBtYXRjaFJlc3VsdC5maXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQubGFzdFVBUnVsZSwgYXBwbHlJ
bmhlcml0ZWRPbmx5KTsKKworICAgIGlmIChjYWNoZWRTdHlsZSAmJiBjYWNoZWRTdHlsZS0+ZWZm
ZWN0aXZlWm9vbSgpICE9IG1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSkgeworICAgICAgICBtX2Zv
bnREaXJ0eSA9IHRydWU7CisgICAgICAgIGFwcGx5SW5oZXJpdGVkT25seSA9IGZhbHNlOworICAg
IH0KKwogICAgIC8vIElmIG91ciBmb250IGdvdCBkaXJ0aWVkLCBnbyBhaGVhZCBhbmQgdXBkYXRl
IGl0IG5vdy4KICAgICB1cGRhdGVGb250KCk7CiAKICAgICAvLyBMaW5lLWhlaWdodCBpcyBzZXQg
d2hlbiB3ZSBhcmUgc3VyZSB3ZSBkZWNpZGVkIG9uIHRoZSBmb250LXNpemUuCiAgICAgaWYgKG1f
bGluZUhlaWdodFZhbHVlKQogICAgICAgICBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5TGluZUhl
aWdodCwgbV9saW5lSGVpZ2h0VmFsdWUpOwotICAgICAgICAKKworICAgIC8vIE1hbnkgcHJvcGVy
dGllcyBkZXBlbmQgb24gdGhlIGZvbnQuIElmIGl0IGNoYW5nZXMgd2UganVzdCBhcHBseSBhbGwg
cHJvcGVydGllcy4KKyAgICBpZiAoY2FjaGVkU3R5bGUgJiYgY2FjaGVkU3R5bGUtPmZvbnREZXNj
cmlwdGlvbigpICE9IG1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpKQorICAgICAgICBhcHBseUlu
aGVyaXRlZE9ubHkgPSBmYWxzZTsKKwogICAgIC8vIE5vdyBkbyB0aGUgbm9ybWFsIHByaW9yaXR5
IFVBIHByb3BlcnRpZXMuCi0gICAgYXBwbHlEZWNsYXJhdGlvbnM8ZmFsc2U+KGZhbHNlLCBtYXRj
aFJlc3VsdC5maXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQubGFzdFVBUnVsZSk7CisgICAgYXBwbHlE
ZWNsYXJhdGlvbnM8ZmFsc2U+KGZhbHNlLCBtYXRjaFJlc3VsdC5maXJzdFVBUnVsZSwgbWF0Y2hS
ZXN1bHQubGFzdFVBUnVsZSwgYXBwbHlJbmhlcml0ZWRPbmx5KTsKICAgICAKICAgICAvLyBDYWNo
ZSBvdXIgYm9yZGVyIGFuZCBiYWNrZ3JvdW5kIHNvIHRoYXQgd2UgY2FuIGV4YW1pbmUgdGhlbSBs
YXRlci4KICAgICBjYWNoZUJvcmRlckFuZEJhY2tncm91bmQoKTsKICAgICAKICAgICAvLyBOb3cg
ZG8gdGhlIGF1dGhvciBhbmQgdXNlciBub3JtYWwgcHJpb3JpdHkgcHJvcGVydGllcyBhbmQgYWxs
IHRoZSAhaW1wb3J0YW50IHByb3BlcnRpZXMuCi0gICAgYXBwbHlEZWNsYXJhdGlvbnM8ZmFsc2U+
KGZhbHNlLCBtYXRjaFJlc3VsdC5sYXN0VUFSdWxlICsgMSwgbV9tYXRjaGVkRGVjbHMuc2l6ZSgp
IC0gMSk7Ci0gICAgYXBwbHlEZWNsYXJhdGlvbnM8ZmFsc2U+KHRydWUsIG1hdGNoUmVzdWx0LmZp
cnN0QXV0aG9yUnVsZSwgbWF0Y2hSZXN1bHQubGFzdEF1dGhvclJ1bGUpOwotICAgIGFwcGx5RGVj
bGFyYXRpb25zPGZhbHNlPih0cnVlLCBtYXRjaFJlc3VsdC5maXJzdFVzZXJSdWxlLCBtYXRjaFJl
c3VsdC5sYXN0VXNlclJ1bGUpOwotICAgIGFwcGx5RGVjbGFyYXRpb25zPGZhbHNlPih0cnVlLCBt
YXRjaFJlc3VsdC5maXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQubGFzdFVBUnVsZSk7CisgICAgYXBw
bHlEZWNsYXJhdGlvbnM8ZmFsc2U+KGZhbHNlLCBtYXRjaFJlc3VsdC5sYXN0VUFSdWxlICsgMSwg
bV9tYXRjaGVkRGVjbHMuc2l6ZSgpIC0gMSwgYXBwbHlJbmhlcml0ZWRPbmx5KTsKKyAgICBhcHBs
eURlY2xhcmF0aW9uczxmYWxzZT4odHJ1ZSwgbWF0Y2hSZXN1bHQuZmlyc3RBdXRob3JSdWxlLCBt
YXRjaFJlc3VsdC5sYXN0QXV0aG9yUnVsZSwgYXBwbHlJbmhlcml0ZWRPbmx5KTsKKyAgICBhcHBs
eURlY2xhcmF0aW9uczxmYWxzZT4odHJ1ZSwgbWF0Y2hSZXN1bHQuZmlyc3RVc2VyUnVsZSwgbWF0
Y2hSZXN1bHQubGFzdFVzZXJSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOworICAgIGFwcGx5RGVj
bGFyYXRpb25zPGZhbHNlPih0cnVlLCBtYXRjaFJlc3VsdC5maXJzdFVBUnVsZSwgbWF0Y2hSZXN1
bHQubGFzdFVBUnVsZSwgYXBwbHlJbmhlcml0ZWRPbmx5KTsKICAgICAKKyAgICBsb2FkUGVuZGlu
Z0ltYWdlcygpOworICAgICAgICAKICAgICBBU1NFUlQoIW1fZm9udERpcnR5KTsKKyAgICAKKyAg
ICBpZiAoY2FjaGVkU3R5bGUgfHwgIWNhY2hlSGFzaCkKKyAgICAgICAgcmV0dXJuOworICAgIGlm
IChtX3N0eWxlLT51bmlxdWUoKSB8fCBtX3N0eWxlLT5oYXNBcHBlYXJhbmNlKCkgfHwgKG1fc3R5
bGUtPnN0eWxlVHlwZSgpICE9IE5PUFNFVURPICYmIG1fcGFyZW50U3R5bGUtPnVuaXF1ZSgpKSAK
KyAgICAgICAgfHwgbV9zdHlsZS0+em9vbSgpICE9IFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgp
KQorICAgICAgICByZXR1cm47CisgICAgYWRkVG9NYXRjaGVkRGVjbGFyYXRpb25DYWNoZShtX3N0
eWxlLmdldCgpLCBjYWNoZUhhc2gsIG1hdGNoUmVzdWx0KTsKIH0KIAogdm9pZCBDU1NTdHlsZVNl
bGVjdG9yOjptYXRjaFBhZ2VSdWxlcyhSdWxlU2V0KiBydWxlcywgYm9vbCBpc0xlZnRQYWdlLCBi
b29sIGlzRmlyc3RQYWdlLCBjb25zdCBTdHJpbmcmIHBhZ2VOYW1lKQpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCShyZXZpc2lvbiA5ODQ3OCkKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNiwxMyArMjI2
LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRNYXRjaGVkRGVjbGFyYXRpb24oQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24qLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlID0gU2VsZWN0b3JDaGVj
a2VyOjpNYXRjaEFsbCk7CiAKICAgICBzdHJ1Y3QgTWF0Y2hSZXN1bHQgewotICAgICAgICBNYXRj
aFJlc3VsdCgpIDogZmlyc3RVQVJ1bGUoLTEpLCBsYXN0VUFSdWxlKC0xKSwgZmlyc3RBdXRob3JS
dWxlKC0xKSwgbGFzdEF1dGhvclJ1bGUoLTEpLCBmaXJzdFVzZXJSdWxlKC0xKSwgbGFzdFVzZXJS
dWxlKC0xKSB7IH0KKyAgICAgICAgTWF0Y2hSZXN1bHQoKSA6IGZpcnN0VUFSdWxlKC0xKSwgbGFz
dFVBUnVsZSgtMSksIGZpcnN0QXV0aG9yUnVsZSgtMSksIGxhc3RBdXRob3JSdWxlKC0xKSwgZmly
c3RVc2VyUnVsZSgtMSksIGxhc3RVc2VyUnVsZSgtMSksIGlzQ2FjaGVhYmxlKHRydWUpIHsgfQor
ICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWF0Y2hSZXN1bHQmKSBjb25zdDsKICAgICAg
ICAgaW50IGZpcnN0VUFSdWxlOwogICAgICAgICBpbnQgbGFzdFVBUnVsZTsKICAgICAgICAgaW50
IGZpcnN0QXV0aG9yUnVsZTsKICAgICAgICAgaW50IGxhc3RBdXRob3JSdWxlOwogICAgICAgICBp
bnQgZmlyc3RVc2VyUnVsZTsKICAgICAgICAgaW50IGxhc3RVc2VyUnVsZTsKKyAgICAgICAgYm9v
bCBpc0NhY2hlYWJsZTsKICAgICB9OwogICAgIHZvaWQgbWF0Y2hBbGxSdWxlcyhNYXRjaFJlc3Vs
dCYpOwogICAgIHZvaWQgbWF0Y2hVQVJ1bGVzKE1hdGNoUmVzdWx0Jik7CkBAIC0yNDUsOSArMjQ3
LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYXBwbHlNYXRjaGVkRGVjbGFyYXRpb25zKGNvbnN0
IE1hdGNoUmVzdWx0Jik7CiAgICAgdGVtcGxhdGUgPGJvb2wgZmlyc3RQYXNzPgotICAgIHZvaWQg
YXBwbHlEZWNsYXJhdGlvbnMoYm9vbCBpbXBvcnRhbnQsIGludCBzdGFydEluZGV4LCBpbnQgZW5k
SW5kZXgpOworICAgIHZvaWQgYXBwbHlEZWNsYXJhdGlvbnMoYm9vbCBpbXBvcnRhbnQsIGludCBz
dGFydEluZGV4LCBpbnQgZW5kSW5kZXgsIGJvb2wgaW5oZXJpdGVkT25seSA9IGZhbHNlKTsKICAg
ICB0ZW1wbGF0ZSA8Ym9vbCBmaXJzdFBhc3M+Ci0gICAgdm9pZCBhcHBseURlY2xhcmF0aW9uKENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgYm9vbCBpc0ltcG9ydGFudCk7CisgICAgdm9pZCBh
cHBseURlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgYm9vbCBpc0ltcG9y
dGFudCwgYm9vbCBpbmhlcml0ZWRPbmx5KTsKIAogICAgIHZvaWQgbWF0Y2hQYWdlUnVsZXMoUnVs
ZVNldCosIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5nJiBw
YWdlTmFtZSk7CiAgICAgdm9pZCBtYXRjaFBhZ2VSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1
bGVEYXRhPiosIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5n
JiBwYWdlTmFtZSk7CkBAIC0yNzEsNiArMjczLDcgQEAgcHJpdmF0ZToKIAogICAgIHR5cGVkZWYg
VmVjdG9yPFJlZlB0cjxDU1NSZWdpb25TdHlsZVJ1bGU+ID4gUmVnaW9uU3R5bGVSdWxlczsKICAg
ICBSZWdpb25TdHlsZVJ1bGVzIG1fcmVnaW9uU3R5bGVSdWxlczsKKwogcHVibGljOgogICAgIHN0
YXRpYyBSZW5kZXJTdHlsZSogc3R5bGVOb3RZZXRBdmFpbGFibGUoKSB7IHJldHVybiBzX3N0eWxl
Tm90WWV0QXZhaWxhYmxlOyB9CiAKQEAgLTMyNCwxNyArMzI3LDMwIEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgIHZvaWQgbG9hZFBlbmRpbmdJbWFnZXMoKTsKLQotICAgIC8vIFdlIGNvbGxlY3Qg
dGhlIHNldCBvZiBkZWNscyB0aGF0IG1hdGNoIGluIHxtX21hdGNoZWREZWNsc3wuIFdlIHRoZW4g
d2FsayB0aGUKLSAgICAvLyBzZXQgb2YgbWF0Y2hlZCBkZWNscyBmb3VyIHRpbWVzLCBvbmNlIGZv
ciB0aG9zZSBwcm9wZXJ0aWVzIHRoYXQgb3RoZXJzIGRlcGVuZCBvbiAobGlrZSBmb250LXNpemUp
LAotICAgIC8vIGFuZCB0aGVuIGEgc2Vjb25kIHRpbWUgZm9yIGFsbCB0aGUgcmVtYWluaW5nIHBy
b3BlcnRpZXMuIFdlIHRoZW4gZG8gdGhlIHNhbWUgdHdvIHBhc3NlcwotICAgIC8vIGZvciBhbnkg
IWltcG9ydGFudCBydWxlcy4KKyAgICAKICAgICBzdHJ1Y3QgTWF0Y2hlZFN0eWxlRGVjbGFyYXRp
b24gewogICAgICAgICBNYXRjaGVkU3R5bGVEZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbiogZGVjbCwgdW5zaWduZWQgdHlwZSkgOiBzdHlsZURlY2xhcmF0aW9uKGRlY2wpLCBs
aW5rTWF0Y2hUeXBlKHR5cGUpIHsgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWF0
Y2hlZFN0eWxlRGVjbGFyYXRpb24mKSBjb25zdDsKICAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24qIHN0eWxlRGVjbGFyYXRpb247CiAgICAgICAgIHVuc2lnbmVkIGxpbmtNYXRjaFR5
cGU7CiAgICAgfTsKKyAgICBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZURlY2xhcmF0aW9uSGFzaChN
YXRjaGVkU3R5bGVEZWNsYXJhdGlvbiosIHVuc2lnbmVkIHNpemUpOworICAgIFBhc3NSZWZQdHI8
UmVuZGVyU3R5bGU+IGZpbmRGcm9tTWF0Y2hlZERlY2xhcmF0aW9uQ2FjaGUodW5zaWduZWQgaGFz
aCwgY29uc3QgTWF0Y2hSZXN1bHQmKSA7ICAgCisgICAgdm9pZCBhZGRUb01hdGNoZWREZWNsYXJh
dGlvbkNhY2hlKGNvbnN0IFJlbmRlclN0eWxlKiwgdW5zaWduZWQgaGFzaCwgY29uc3QgTWF0Y2hS
ZXN1bHQmKTsKKworICAgIC8vIFdlIGNvbGxlY3QgdGhlIHNldCBvZiBkZWNscyB0aGF0IG1hdGNo
IGluIHxtX21hdGNoZWREZWNsc3wuIFdlIHRoZW4gd2FsayB0aGUKKyAgICAvLyBzZXQgb2YgbWF0
Y2hlZCBkZWNscyBmb3VyIHRpbWVzLCBvbmNlIGZvciB0aG9zZSBwcm9wZXJ0aWVzIHRoYXQgb3Ro
ZXJzIGRlcGVuZCBvbiAobGlrZSBmb250LXNpemUpLAorICAgIC8vIGFuZCB0aGVuIGEgc2Vjb25k
IHRpbWUgZm9yIGFsbCB0aGUgcmVtYWluaW5nIHByb3BlcnRpZXMuIFdlIHRoZW4gZG8gdGhlIHNh
bWUgdHdvIHBhc3NlcworICAgIC8vIGZvciBhbnkgIWltcG9ydGFudCBydWxlcy4KICAgICBWZWN0
b3I8TWF0Y2hlZFN0eWxlRGVjbGFyYXRpb24sIDY0PiBtX21hdGNoZWREZWNsczsKKyAgICAKKyAg
ICBzdHJ1Y3QgTWF0Y2hlZFN0eWxlRGVjbGFyYXRpb25DYWNoZUl0ZW0geworICAgICAgICBWZWN0
b3I8TWF0Y2hlZFN0eWxlRGVjbGFyYXRpb24+IG1hdGNoZWRTdHlsZURlY2xhcmF0aW9uczsKKyAg
ICAgICAgTWF0Y2hSZXN1bHQgbWF0Y2hSZXN1bHQ7CisgICAgICAgIFJlZlB0cjxSZW5kZXJTdHls
ZT4gcmVuZGVyU3R5bGU7CisgICAgfTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIE1h
dGNoZWRTdHlsZURlY2xhcmF0aW9uQ2FjaGVJdGVtPiBNYXRjaGVkU3R5bGVEZWNsYXJhdGlvbkNh
Y2hlOworICAgIE1hdGNoZWRTdHlsZURlY2xhcmF0aW9uQ2FjaGUgbV9tYXRjaFN0eWxlRGVjbGFy
YXRpb25DYWNoZTsKIAogICAgIC8vIEEgYnVmZmVyIHVzZWQgdG8gaG9sZCB0aGUgc2V0IG9mIG1h
dGNoZWQgcnVsZXMgZm9yIGFuIGVsZW1lbnQsIGFuZCBhIHRlbXBvcmFyeSBidWZmZXIgdXNlZCBm
b3IKICAgICAvLyBtZXJnZSBzb3J0aW5nLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiA5ODQ3OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4MSw2ICsxODEsMzQgQEAgdm9pZCBSZW5kZXJTdHlsZTo6aW5oZXJpdEZyb20oY29uc3QgUmVu
ZAogI2VuZGlmCiB9CiAKK3ZvaWQgUmVuZGVyU3R5bGU6OmNvcHlOb25Jbmhlcml0ZWRGcm9tKGNv
bnN0IFJlbmRlclN0eWxlKiBvdGhlcikKK3sKKyAgICBtX2JveCA9IG90aGVyLT5tX2JveDsKKyAg
ICB2aXN1YWwgPSBvdGhlci0+dmlzdWFsOworICAgIG1fYmFja2dyb3VuZCA9IG90aGVyLT5tX2Jh
Y2tncm91bmQ7CisgICAgc3Vycm91bmQgPSBvdGhlci0+c3Vycm91bmQ7CisgICAgcmFyZU5vbklu
aGVyaXRlZERhdGEgPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGE7CisgICAgLy8gVGhlIGZs
YWdzIGFyZSBjb3BpZWQgb25lLWJ5LW9uZSBiZWNhdXNlIG5vbmluaGVyaXRlZF9mbGFncyBjb250
YWlucyBhIGJ1bmNoIG9mIHN0dWZmIG90aGVyIHRoYW4gcmVhbCBzdHlsZSBkYXRhLgorICAgIG5v
bmluaGVyaXRlZF9mbGFncy5fZWZmZWN0aXZlRGlzcGxheSA9IG90aGVyLT5ub25pbmhlcml0ZWRf
ZmxhZ3MuX2VmZmVjdGl2ZURpc3BsYXk7CisgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9vcmlnaW5h
bERpc3BsYXkgPSBvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLl9vcmlnaW5hbERpc3BsYXk7Cisg
ICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9vdmVyZmxvd1ggPSBvdGhlci0+bm9uaW5oZXJpdGVkX2Zs
YWdzLl9vdmVyZmxvd1g7CisgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9vdmVyZmxvd1kgPSBvdGhl
ci0+bm9uaW5oZXJpdGVkX2ZsYWdzLl9vdmVyZmxvd1k7CisgICAgbm9uaW5oZXJpdGVkX2ZsYWdz
Ll92ZXJ0aWNhbF9hbGlnbiA9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX3ZlcnRpY2FsX2Fs
aWduOworICAgIG5vbmluaGVyaXRlZF9mbGFncy5fY2xlYXIgPSBvdGhlci0+bm9uaW5oZXJpdGVk
X2ZsYWdzLl9jbGVhcjsKKyAgICBub25pbmhlcml0ZWRfZmxhZ3MuX3Bvc2l0aW9uID0gb3RoZXIt
Pm5vbmluaGVyaXRlZF9mbGFncy5fcG9zaXRpb247CisgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9m
bG9hdGluZyA9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX2Zsb2F0aW5nOworICAgIG5vbmlu
aGVyaXRlZF9mbGFncy5fdGFibGVfbGF5b3V0ID0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5f
dGFibGVfbGF5b3V0OworICAgIG5vbmluaGVyaXRlZF9mbGFncy5fcGFnZV9icmVha19iZWZvcmUg
PSBvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLl9wYWdlX2JyZWFrX2JlZm9yZTsKKyAgICBub25p
bmhlcml0ZWRfZmxhZ3MuX3BhZ2VfYnJlYWtfYWZ0ZXIgPSBvdGhlci0+bm9uaW5oZXJpdGVkX2Zs
YWdzLl9wYWdlX2JyZWFrX2FmdGVyOworICAgIG5vbmluaGVyaXRlZF9mbGFncy5fcGFnZV9icmVh
a19pbnNpZGUgPSBvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLl9wYWdlX2JyZWFrX2luc2lkZTsK
KyAgICBub25pbmhlcml0ZWRfZmxhZ3MuX3VuaWNvZGVCaWRpID0gb3RoZXItPm5vbmluaGVyaXRl
ZF9mbGFncy5fdW5pY29kZUJpZGk7CisjaWYgRU5BQkxFKFNWRykKKyAgICBpZiAobV9zdmdTdHls
ZSAhPSBvdGhlci0+bV9zdmdTdHlsZSkKKyAgICAgICAgbV9zdmdTdHlsZS5hY2Nlc3MoKS0+Y29w
eU5vbkluaGVyaXRlZEZyb20ob3RoZXItPm1fc3ZnU3R5bGUuZ2V0KCkpOworI2VuZGlmCisgICAg
QVNTRVJUKHpvb20oKSA9PSBpbml0aWFsWm9vbSgpKTsKK30KKwogUmVuZGVyU3R5bGU6On5SZW5k
ZXJTdHlsZSgpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaAkocmV2aXNpb24gOTg0NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjY2LDYgKzI2Niw3IEBA
IHByb3RlY3RlZDoKICAgICAgICAgdW5zaWduZWQgY2hhciBfcHNldWRvQml0cyA6IDc7CiAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgX3VuaWNvZGVCaWRpIDogMzsgLy8gRVVuaWNvZGVCaWRpCiAgICAg
ICAgIGJvb2wgX2lzTGluayA6IDE7CisgICAgICAgIC8vIElmIHlvdSBhZGQgbW9yZSBzdHlsZSBi
aXRzIGhlcmUsIHlvdSB3aWxsIGFsc28gbmVlZCB0byB1cGRhdGUgUmVuZGVyU3R5bGU6OmNvcHlO
b25Jbmhlcml0ZWRGcm9tKCkKICAgICAgICAgLy8gNTMgYml0cwogICAgIH0gbm9uaW5oZXJpdGVk
X2ZsYWdzOwogCkBAIC0zMjgsNiArMzI5LDcgQEAgcHVibGljOgogICAgIH5SZW5kZXJTdHlsZSgp
OwogCiAgICAgdm9pZCBpbmhlcml0RnJvbShjb25zdCBSZW5kZXJTdHlsZSogaW5oZXJpdFBhcmVu
dCk7CisgICAgdm9pZCBjb3B5Tm9uSW5oZXJpdGVkRnJvbShjb25zdCBSZW5kZXJTdHlsZSopOwog
CiAgICAgUHNldWRvSWQgc3R5bGVUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHNl
dWRvSWQ+KG5vbmluaGVyaXRlZF9mbGFncy5fc3R5bGVUeXBlKTsgfQogICAgIHZvaWQgc2V0U3R5
bGVUeXBlKFBzZXVkb0lkIHN0eWxlVHlwZSkgeyBub25pbmhlcml0ZWRfZmxhZ3MuX3N0eWxlVHlw
ZSA9IHN0eWxlVHlwZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NW
R1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiA5ODQ3OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyNiw2ICsxMjYsMTUgQEAgdm9pZCBTVkdSZW5kZXJTdHlsZTo6aW5oZXJpdEZyb20oY29uc3Qg
UwogICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MgPSBzdmdJbmhlcml0UGFyZW50LT5zdmdfaW5oZXJp
dGVkX2ZsYWdzOwogfQogCit2b2lkIFNWR1JlbmRlclN0eWxlOjpjb3B5Tm9uSW5oZXJpdGVkRnJv
bShjb25zdCBTVkdSZW5kZXJTdHlsZSogb3RoZXIpCit7CisgICAgc3ZnX25vbmluaGVyaXRlZF9m
bGFncyA9IG90aGVyLT5zdmdfbm9uaW5oZXJpdGVkX2ZsYWdzOworICAgIHN0b3BzID0gb3RoZXIt
PnN0b3BzOworICAgIG1pc2MgPSBvdGhlci0+bWlzYzsKKyAgICBzaGFkb3dTVkcgPSBvdGhlci0+
c2hhZG93U1ZHOworICAgIHJlc291cmNlcyA9IG90aGVyLT5yZXNvdXJjZXM7Cit9CisKIFN0eWxl
RGlmZmVyZW5jZSBTVkdSZW5kZXJTdHlsZTo6ZGlmZihjb25zdCBTVkdSZW5kZXJTdHlsZSogb3Ro
ZXIpIGNvbnN0CiB7CiAgICAgLy8gTk9URTogQWxsIGNvbXBhcmlzaW9ucyB0aGF0IG1heSByZXR1
cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0IGhhdmUgdG8gZ28gYmVmb3JlIHRob3NlIHdobyByZXR1
cm4gU3R5bGVEaWZmZXJlbmNlUmVwYWludApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDk4NDc4KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDYgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpbmhlcml0ZWROb3RFcXVhbChj
b25zdCBTVkdSZW5kZXJTdHlsZSopIGNvbnN0OwogICAgIHZvaWQgaW5oZXJpdEZyb20oY29uc3Qg
U1ZHUmVuZGVyU3R5bGUqKTsKKyAgICB2b2lkIGNvcHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IFNW
R1JlbmRlclN0eWxlKik7CiAKICAgICBTdHlsZURpZmZlcmVuY2UgZGlmZihjb25zdCBTVkdSZW5k
ZXJTdHlsZSopIGNvbnN0OwogCg==
</data>
<flag name="review"
          id="110635"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="110636"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112650</attachid>
            <date>2011-10-27 01:31:40 -0700</date>
            <delta_ts>2011-10-27 02:05:19 -0700</delta_ts>
            <desc>for bots</desc>
            <filename>style-cache-11.patch</filename>
            <type>text/plain</type>
            <size>39524</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4NDc4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTEtMTAtMjYgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIE1hdGNoZWQgZGVjbGFyYXRpb24g
Y2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcw
OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0
cyBvZiBzdHlsZSBkZWNsYXJhdGlvbnMgYXJlIGFwcGxpZWQgcmVwZWF0ZWRseSBmb3IgZGlmZmVy
ZW50IGVsZW1lbnRzIHdoZW4gY2FsY3VsYXRpbmcgdGhlIGRvY3VtZW50IHN0eWxlLgorICAgICAg
ICBUaGUgc2FtZSBzZXQgb2ZmIGFwcGxpZWQgZGVjbGFyYXRpb25zIHJlc3VsdCBpbiB0aGUgc2Ft
ZSBub24taW5oZXJpdGVkIHN0eWxlLCBpbmRlcGVuZGVudCBvZiB0aGUgZWxlbWVudCBhbmQgCisg
ICAgICAgIGl0cyBjb250ZXh0LiBXZSBjYW4gdXNlIHRoaXMgdG8gYnVpbGQgYSBjYWNoZSB0byBz
cGVlZCB1cCBzdHlsZSBhcHBseWluZyBhbmQgdG8gc2hhcmUgbW9yZSBzdHlsZSBkYXRhIGZvcgor
ICAgICAgICByZWR1Y2VkIG1lbW9yeSB1c2FnZS4KKyAgICAgICAgCisgICAgICAgIFRoZSBwYXRj
aCByZWR1Y2VzIFJlbmRlclN0eWxlIG1lbW9yeSB1c2UgfjQwJSBhbmQgdG90YWwgbWVtb3J5IHVz
ZSBieSB+NyUgb3ZlciBIVE1MNSBzcGVjIGxvYWQuCisgICAgICAgIEl0IGlzIGFsc28gfjEwJSBw
cm9ncmVzc2lvbiBpbiBQZXJmb3JtYW5jZVRlc3RzL1BhcnNlci9odG1sNS1mdWxsLXJlbmRlci5o
dG1sLgorCisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NTUHJv
cGVydHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5OjpDU1NQcm9wZXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWQpOgorICAgICAgICAKKyAg
ICAgICAgICAgIFdlIG5lZWQgdG8ga25vdyB3aGljaCBwcm9wZXJ0aWVzIGFyZSBpbmhlcml0ZWQs
IHNvbWV0aGluZyB3ZSBkaWRuJ3QgaGF2ZSBhdmFpbGFibGUgc28gZmFyLgorICAgICAgICAKKyAg
ICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
dHlsZVNlbGVjdG9yOjptYXRjaEFsbFJ1bGVzKToKKyAgICAgICAgCisgICAgICAgICAgICBBIHNl
dCBvZiBkZWNsYXJhdGlvbnMgaXMgb25seSBjYWNoZWFibGUgaWYgaXQgY29udGFpbnMgbm8gZWxl
bWVudCBzcGVjaWZpYyBzdHlsZS4gVGhpcyB3YXkgd2UKKyAgICAgICAgICAgIGRvbid0IG5lZWQg
dG8gd29ycnkgYWJvdXQgY2FjaGUgaW52YWxpZGF0aW9uLiBUaGUgd2hvbGUgc3R5bGUgc2VsZWN0
b3IgaXMgcmVjb25zdHJ1Y3RlZCBpZiB0aGUKKyAgICAgICAgICAgIHN0eWxlc2hlZXRzIGNoYW5n
ZSwgaW52YWxpZGF0aW5nIHRoZSBjYWNoZSB0b28uCisgICAgCisgICAgICAgIChXZWJDb3JlOjpD
U1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckVsZW1lbnQpOgorICAgICAgICAKKyAgICAgICAgICAg
IFRyaWdnZXIgaW1hZ2UgbG9hZHMgYml0IGVhcmxpZXIgc28gY2FjaGVkIHN0eWxlIHdpbGwgaGF2
ZSB0aGVtIHRvby4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
OjphcHBseURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6
OmFwcGx5RGVjbGFyYXRpb25zKToKKyAgICAgICAgCisgICAgICAgICAgICBBbGxvdyBza2lwcGlu
ZyBvdmVyIG5vbi1pbmhlcml0ZWQgcHJvcGVydGllcy4KKyAgICAgICAgCisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjb21wdXRlRGVjbGFyYXRpb25IYXNoKToKKyAgICAgICAg
CisgICAgICAgICAgICBIYXNoIGZ1bmN0aW9uIGZvciBkZWNsYXJ0aW9uIGNhY2hlIGxvb2t1cHMu
CisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6TWF0Y2hSZXN1
bHQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6TWF0
Y2hlZFN0eWxlRGVjbGFyYXRpb246Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U3R5bGVTZWxlY3Rvcjo6ZmluZEZyb21NYXRjaGVkRGVjbGFyYXRpb25DYWNoZSk6CisgICAgICAg
IAorICAgICAgICAgICAgTG9va3VwIGZyb20gY2FjaGUuCisgICAgICAgIAorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YWRkVG9NYXRjaGVkRGVjbGFyYXRpb25DYWNoZSk6Cisg
ICAgICAgIAorICAgICAgICAgICAgQWRkIHRvIGNhY2hlLgorICAgICAgICAKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5TWF0Y2hlZERlY2xhcmF0aW9ucyk6CisgICAg
ICAgIAorICAgICAgICAgICAgSWYgY2FjaGVkIHN0eWxlIGlzIGZvdW5kLCBjb3B5IHRoZSBub24t
aW5oZXJpdGVkIHByb3BlcnRpZXMgZnJvbSB0aGUgY2FjaGUgYW5kIGFwcGx5IHRoZSBpbmhlcml0
ZWQgcHJvcGVydGllcyAoaWYgYW55KSBvbmx5LgorICAgICAgICAKKyAgICAgICAgICAgIEZvbnQg
YW5kIHpvb20gY2hhbmdlcyBmb3JjZSBmdWxsIGFwcGx5aW5nIGFzIHRoZXkgY2FuIGFmZmVjdCB2
YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllcyAodGhpcyBjYW4gYmUgcmVsYXhlZCBsYXRlcikuCisg
ICAgICAgIAorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpNYXRjaFJlc3VsdDo6TWF0Y2hSZXN1bHQpOgorICAgICAg
ICAKKyAgICAgICAgICAgIENhY2hlYWJpbGl0eSBiaXQuCisgICAgICAgIAorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6Y29weU5vbkluaGVyaXRlZEZyb20pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6Y29weU5vbkluaGVyaXRlZEZy
b20pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oOgorICAgICAg
ICAKKyAgICAgICAgICAgIEZ1bmN0aW9ucyBmb3IgYXNzZW1ibGluZyBSZW5kZXJTdHlsZSBmcm9t
IG5vbi1pbmhlcml0ZWQgcGFydHMgb2YgdGhlIGNhY2hlZCBzdHlsZS4KKwogMjAxMS0xMC0yNiAg
UGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgTm90IHJldmll
d2VkOiBmb2xsb3cgdXAgdG8gOTgyMzYgLSBtb3ZlZCBpbnNwZWN0b3Igc2V0dGluZ3MgaW5pdGlh
bGl6YXRpb24gZWFybGllciB0byB1bmJyZWFrIHNldHRpbmdzIHBhbmVsLgpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydHkuY3BwCShyZXZpc2lvbiA5ODQ3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw0ICsyODIsMzgxIEBA
IGludCBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHIKICAgICB9CiB9CiAKK2Jv
b2wgQ1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJvcGVydHkodW5zaWduZWQgcHJvcGVydHlJRCkK
K3sKKyAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BlcnR5SUQpKSB7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJTcGFjaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDYXB0aW9uU2lkZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUN1cnNvcjoKKyAgICBj
YXNlIENTU1Byb3BlcnR5RGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlFbXB0eUNlbGxz
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250OgorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250RmFt
aWx5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U2l6ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
Rm9udFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250VmFyaWFudDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5Rm9udFdlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmc6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUxpbmVIZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5
cGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlPcnBoYW5zOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlRdW90ZXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVJlc2l6ZToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5U3BlYWs6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRBbGlnbjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHRJbmRlbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmc6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRleHRTaGFkb3c6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zv
cm06CisgICAgY2FzZSBDU1NQcm9wZXJ0eVZpc2liaWxpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveERp
cmVjdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2NhbGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEhpZ2hsaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVy
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVMaW1pdEFmdGVyOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVMaW1pdEJlZm9yZToKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRMaW5lczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0SHlwaGVuczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJveENvbnRhaW46Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhazoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TmJzcE1vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3Q6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRFbXBoYXNpczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lz
Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VGV4dFNlY3VyaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0
U3Ryb2tlV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnk6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3Q6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFdyaXRpbmdNb2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXaWRvd3M6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRCcmVhazoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V29yZFNwYWNpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRX
cmFwOgorI2lmIEVOQUJMRShTVkcpCisgICAgY2FzZSBDU1NQcm9wZXJ0eUNsaXBSdWxlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlDb2xvckludGVycG9sYXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yUmVu
ZGVyaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlGaWxsOgorICAgIGNhc2UgQ1NTUHJvcGVydHlG
aWxsT3BhY2l0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5RmlsbFJ1bGU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOgorICAgIGNhc2UgQ1NTUHJvcGVydHlH
bHlwaE9yaWVudGF0aW9uVmVydGljYWw6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUtlcm5pbmc6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmtlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFya2VyRW5k
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXJNaWQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1h
cmtlclN0YXJ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2U6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVN0cm9rZURhc2hhcnJheToKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlRGFzaG9mZnNl
dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlTGluZWNhcDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5U3Ryb2tlTGluZWpvaW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZU1pdGVybGltaXQ6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZU9wYWNpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVN0cm9rZVdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTaGFwZVJlbmRlcmluZzoKKyAgICBj
YXNlIENTU1Byb3BlcnR5VGV4dEFuY2hvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V3JpdGluZ01v
ZGU6CisjZW5kaWYKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUYXBIaWdobGlnaHRDb2xvcjoKKyNlbmRpZgorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5RGlzcGxheToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Rm9udEZlYXR1cmVTZXR0aW5nczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290
aGluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dE9yaWVudGF0aW9uOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlab29tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5QmFja2dyb3VuZENsaXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kT3JpZ2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRp
b246CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblg6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WToKKyAgICBjYXNlIENTU1Byb3BlcnR5
QmFja2dyb3VuZFNpemU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjoKKyAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21D
b2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1czoKKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21X
aWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZU91dHNldDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VSZXBlYXQ6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckltYWdlU2xpY2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU291
cmNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVdpZHRoOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3I6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXM6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJSaWdodENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJUb3BDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVm
dFJhZGl1czoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXM6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGg6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUJvdHRvbToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2hhZG93OgorICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3hTaXppbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNsZWFyOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlDbGlwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb250ZW50OgorICAg
IGNhc2UgQ1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlD
b3VudGVyUmVzZXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsb2F0OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlGb250U3RyZXRjaDoKKyAgICBjYXNlIENTU1Byb3BlcnR5SGVpZ2h0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlMZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW46CisgICAgY2FzZSBD
U1NQcm9wZXJ0eU1hcmdpbkJvdHRvbToKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luTGVmdDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1h
cmdpblRvcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWF4SGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlNYXhXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWluSGVpZ2h0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlNaW5XaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3BhY2l0eToKKyAgICBj
YXNlIENTU1Byb3BlcnR5T3V0bGluZToKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZUNvbG9y
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0OgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlPdXRsaW5lU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5T3ZlcmZsb3c6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dZOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRk
aW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlQYWRkaW5nTGVmdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0OgorICAg
IGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nVG9wOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
UGFnZUJyZWFrQmVmb3JlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGU6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVBvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlSaWdodDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5U2l6ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5U3JjOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlUYWJsZUxheW91dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExp
bmVUaHJvdWdoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hDb2xvcjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoTW9kZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dExpbmVUaHJvdWdoU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhy
b3VnaFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3c6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVRleHRPdmVybGluZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5l
Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZU1vZGU6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVRleHRPdmVybGluZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3Zl
cmxpbmVXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZToKKyAgICBjYXNl
IENTU1Byb3BlcnR5VGV4dFVuZGVybGluZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0
VW5kZXJsaW5lTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVN0eWxlOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lV2lkdGg6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRvcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VW5pY29kZUJpZGk6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVVuaWNvZGVSYW5nZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VmVydGljYWxBbGlnbjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVpJbmRleDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRBbmltYXRpb25EZWxheToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0
aW9uRGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlv
bjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGU6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25QbGF5U3RhdGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRp
bWluZ0Z1bmN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHk6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
YWNrZ3JvdW5kQ29tcG9zaXRlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5k
T3JpZ2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckFmdGVyQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFm
dGVyU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyV2lkdGg6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyQmVmb3JlQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckJlZm9yZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVX
aWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyRW5kU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFdpZHRo
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQ6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJS
YWRpdXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJTdGFydFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJT
dGFydFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm94RmxleDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94
RmxleEdyb3VwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lczoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm94T3JkaW5hbEdyb3VwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3hPcmllbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2s6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3Q6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJveFNoYWRvdzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtBZnRl
cjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmU6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5zaWRlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRDb2x1bW5Db3VudDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uR2Fw
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtblJ1bGVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRo
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5TcGFuOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5XaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
czoKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZp
bHRlcjoKKyNlbmRpZgorI2lmIEVOQUJMRShDU1MzX0ZMRVhCT1gpCisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEZsZXhPcmRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleFBhY2s6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhBbGlnbjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0RmxleEZsb3c6CisjZW5kaWYKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9u
dFNpemVEZWx0YToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUNsYW1wOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdExvZ2ljYWxIZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVy
Q29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5BZnRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5FbmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hcmdpblN0YXJ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXJxdWVlSW5jcmVtZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJx
dWVlUmVwZXRpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGU6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2s6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2U6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZU91dHNldDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza0JveEltYWdlUmVwZWF0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94
SW1hZ2VTbGljZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU291cmNl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VXaWR0aDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tDb21wb3NpdGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza1Bvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25Y
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXNrUmVwZWF0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNr
UmVwZWF0WDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFk6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXhMb2dpY2FsV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxI
ZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbEhlaWdodDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0UGFkZGluZ0FmdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5n
QmVmb3JlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nRW5kOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRQYWRkaW5nU3RhcnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFBlcnNwZWN0aXZlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdp
bjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblk6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRyYW5zZm9ybToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3Jt
T3JpZ2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm1TdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zaXRpb25Qcm9wZXJ0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlv
blRpbWluZ0Z1bmN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZzoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rmxvd0ludG86CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEZsb3dGcm9tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSZWdpb25PdmVyZmxvdzoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcFNoYXBlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRSZWdpb25CcmVha0FmdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSZWdp
b25CcmVha0JlZm9yZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtJbnNp
ZGU6CisjaWYgRU5BQkxFKFNWRykKKyAgICBjYXNlIENTU1Byb3BlcnR5Q2xpcFBhdGg6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eU1hc2s6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUVuYWJsZUJhY2tncm91
bmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbHRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Rmxv
b2RDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Rmxvb2RPcGFjaXR5OgorICAgIGNhc2UgQ1NT
UHJvcGVydHlMaWdodGluZ0NvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTdG9wQ29sb3I6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVN0b3BPcGFjaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xv
clByb2ZpbGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWdubWVudEJhc2VsaW5lOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlCYXNlbGluZVNoaWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlEb21pbmFu
dEJhc2VsaW5lOgorICAgIGNhc2UgQ1NTUHJvcGVydHlWZWN0b3JFZmZlY3Q6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFN2Z1NoYWRvdzoKKyNlbmRpZgorI2lmIEVOQUJMRShEQVNIQk9BUkRf
U1VQUE9SVCkKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uOgorI2Vu
ZGlmCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5SW52YWxpZDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0eS5oCShyZXZpc2lvbiA5ODQ3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMSArMzIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQ1NTUHJvcGVydHkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIENTU1Byb3BlcnR5KGludCBwcm9wSUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZh
bHVlLCBib29sIGltcG9ydGFudCA9IGZhbHNlLCBpbnQgc2hvcnRoYW5kSUQgPSAwLCBib29sIGlt
cGxpY2l0ID0gZmFsc2UpCisgICAgQ1NTUHJvcGVydHkodW5zaWduZWQgcHJvcElELCBQYXNzUmVm
UHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSwgaW50IHNob3J0aGFu
ZElEID0gMCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNlKQogICAgICAgICA6IG1faWQocHJvcElEKQog
ICAgICAgICAsIG1fc2hvcnRoYW5kSUQoc2hvcnRoYW5kSUQpCiAgICAgICAgICwgbV9pbXBvcnRh
bnQoaW1wb3J0YW50KQogICAgICAgICAsIG1faW1wbGljaXQoaW1wbGljaXQpCisgICAgICAgICwg
bV9pbmhlcml0ZWQoaXNJbmhlcml0ZWRQcm9wZXJ0eShwcm9wSUQpKQogICAgICAgICAsIG1fdmFs
dWUodmFsdWUpCiAgICAgewogICAgIH0KQEAgLTU2LDIwICs1NywyMyBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGlzSW1wb3J0YW50KCkgY29uc3QgeyByZXR1cm4gbV9pbXBvcnRhbnQ7IH0KICAgICBi
b29sIGlzSW1wbGljaXQoKSBjb25zdCB7IHJldHVybiBtX2ltcGxpY2l0OyB9CisgICAgYm9vbCBp
c0luaGVyaXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5oZXJpdGVkOyB9CiAKICAgICBDU1NWYWx1
ZSogdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLmdldCgpOyB9CiAKICAgICBTdHJpbmcg
Y3NzVGV4dCgpIGNvbnN0OwogCiAgICAgc3RhdGljIGludCByZXNvbHZlRGlyZWN0aW9uQXdhcmVQ
cm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgVGV4dERpcmVjdGlvbiwgV3JpdGluZ01vZGUpOworICAg
IHN0YXRpYyBib29sIGlzSW5oZXJpdGVkUHJvcGVydHkodW5zaWduZWQgcHJvcGVydHlJRCk7CiAK
ICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1Byb3BlcnR5JiwgY29uc3QgQ1NT
UHJvcGVydHkmKTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgZm9sbG93aW5nIGZpdHMgaW4gNCBi
eXRlcy4gUmVhbGx5LgotICAgIHNpZ25lZCBtX2lkIDogMTU7Ci0gICAgc2lnbmVkIG1fc2hvcnRo
YW5kSUQgOiAxNTsgLy8gSWYgdGhpcyBwcm9wZXJ0eSB3YXMgc2V0IGFzIHBhcnQgb2YgYSBzaG9y
dGhhbmQsIGdpdmVzIHRoZSBzaG9ydGhhbmQuCisgICAgdW5zaWduZWQgbV9pZCA6IDE0OworICAg
IHVuc2lnbmVkIG1fc2hvcnRoYW5kSUQgOiAxNDsgLy8gSWYgdGhpcyBwcm9wZXJ0eSB3YXMgc2V0
IGFzIHBhcnQgb2YgYSBzaG9ydGhhbmQsIGdpdmVzIHRoZSBzaG9ydGhhbmQuCiAgICAgYm9vbCBt
X2ltcG9ydGFudCA6IDE7CiAgICAgYm9vbCBtX2ltcGxpY2l0IDogMTsgLy8gV2hldGhlciBvciBu
b3QgdGhlIHByb3BlcnR5IHdhcyBzZXQgaW1wbGljaXRseSBhcyB0aGUgcmVzdWx0IG9mIGEgc2hv
cnRoYW5kLgorICAgIGJvb2wgbV9pbmhlcml0ZWQgOiAxOwogCiAgICAgUmVmUHRyPENTU1ZhbHVl
PiBtX3ZhbHVlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHAJKHJldmlzaW9uIDk4NDc4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjYsNiArNzY2LDcgQEAgdm9pZCBDU1NTdHlsZVNl
bGVjdG9yOjptYXRjaEFsbFJ1bGVzKE1hdAogICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0
LmZpcnN0QXV0aG9yUnVsZSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5m
aXJzdEF1dGhvclJ1bGUgPSByZXN1bHQubGFzdEF1dGhvclJ1bGU7CiAgICAgICAgICAgICAgICAg
ICAgIGFkZE1hdGNoZWREZWNsYXJhdGlvbihhdHRyLT5kZWNsKCkpOworICAgICAgICAgICAgICAg
ICAgICByZXN1bHQuaXNDYWNoZWFibGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTc4Myw2ICs3ODQsNyBAQCB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6Om1hdGNoQWxsUnVsZXMoTWF0CiAgICAgICAgICAgICAgICAgcmVzdWx0Lmxhc3RBdXRo
b3JSdWxlID0gbV9tYXRjaGVkRGVjbHMuc2l6ZSgpICsgYWRkaXRpb25hbERlY2xzU2l6ZSAtIDE7
CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFkZGl0aW9uYWxEZWNs
c1NpemU7ICsraSkKICAgICAgICAgICAgICAgICAgICAgYWRkTWF0Y2hlZERlY2xhcmF0aW9uKG1f
YWRkaXRpb25hbEF0dHJpYnV0ZVN0eWxlRGVjbHNbaV0pOworICAgICAgICAgICAgICAgIHJlc3Vs
dC5pc0NhY2hlYWJsZSA9IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IGlmIChtX3N0eWxlZEVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSkgewpAQCAtODA1LDYgKzgwNyw3
IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hBbGxSdWxlcyhNYXQKICAgICAgICAgICAg
IGlmIChyZXN1bHQuZmlyc3RBdXRob3JSdWxlID09IC0xKQogICAgICAgICAgICAgICAgIHJlc3Vs
dC5maXJzdEF1dGhvclJ1bGUgPSByZXN1bHQubGFzdEF1dGhvclJ1bGU7CiAgICAgICAgICAgICBh
ZGRNYXRjaGVkRGVjbGFyYXRpb24oaW5saW5lRGVjbCk7CisgICAgICAgICAgICByZXN1bHQuaXND
YWNoZWFibGUgPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEyNDMsOSArMTI0Niw2
IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3IKICAgICAvLyBDbGVh
biB1cCBvdXIgc3R5bGUgb2JqZWN0J3MgZGlzcGxheSBhbmQgdGV4dCBkZWNvcmF0aW9ucyAoYW1v
bmcgb3RoZXIgZml4dXBzKS4KICAgICBhZGp1c3RSZW5kZXJTdHlsZShzdHlsZSgpLCBtX3BhcmVu
dFN0eWxlLCBlbGVtZW50KTsKIAotICAgIC8vIFN0YXJ0IGxvYWRpbmcgaW1hZ2VzIHJlZmVyZW5j
ZWQgYnkgdGhpcyBzdHlsZS4KLSAgICBsb2FkUGVuZGluZ0ltYWdlcygpOwotCiAgICAgaW5pdEVs
ZW1lbnQoMCk7IC8vIENsZWFyIG91dCBmb3IgdGhlIG5leHQgcmVzb2x2ZS4KIAogICAgIC8vIE5v
dyByZXR1cm4gdGhlIHN0eWxlLgpAQCAtMjA4Miw3ICsyMDgyLDcgQEAgc3RhdGljIExlbmd0aCBj
b252ZXJ0VG9GbG9hdExlbmd0aChDU1NQcgogfQogCiB0ZW1wbGF0ZSA8Ym9vbCBhcHBseUZpcnN0
Pgotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseURlY2xhcmF0aW9uKENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uKiBzdHlsZURlY2xhcmF0aW9uLCBib29sIGlzSW1wb3J0YW50KQordm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjphcHBseURlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uKiBzdHlsZURlY2xhcmF0aW9uLCBib29sIGlzSW1wb3J0YW50LCBib29sIGluaGVyaXRlZE9u
bHkpCiB7CiAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IHN0eWxlRGVjbGFyYXRpb24tPmVuZCgpOwogICAgIGZvciAoQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc3R5bGVEZWNsYXJhdGlvbi0+YmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7CkBAIC0yMDkyLDYgKzIwOTIsOSBAQCB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OmFwcGx5RGVjbGFyYXRpb24oCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICBpbnQgcHJvcGVydHkgPSBjdXJyZW50LmlkKCk7CisgICAgICAgIAorICAgICAgICBpZiAoaW5o
ZXJpdGVkT25seSAmJiAhY3VycmVudC5pc0luaGVyaXRlZCgpICYmIGN1cnJlbnQudmFsdWUoKS0+
Y3NzVmFsdWVUeXBlKCkgIT0gQ1NTVmFsdWU6OkNTU19JTkhFUklUKQorICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgaWYgKGFwcGx5Rmlyc3QpIHsKICAgICAgICAgICAgIENPTVBJTEVf
QVNTRVJUKGZpcnN0Q1NTUHJvcGVydHkgPT0gQ1NTUHJvcGVydHlDb2xvciwgQ1NTX2NvbG9yX2lz
X2ZpcnN0X3Byb3BlcnR5KTsKQEAgLTIxMTUsNyArMjExOCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6YXBwbHlEZWNsYXJhdGlvbigKIH0KIAogdGVtcGxhdGUgPGJvb2wgYXBwbHlGaXJzdD4K
LXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlEZWNsYXJhdGlvbnMoYm9vbCBpc0ltcG9ydGFu
dCwgaW50IHN0YXJ0SW5kZXgsIGludCBlbmRJbmRleCkKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
YXBwbHlEZWNsYXJhdGlvbnMoYm9vbCBpc0ltcG9ydGFudCwgaW50IHN0YXJ0SW5kZXgsIGludCBl
bmRJbmRleCwgYm9vbCBpbmhlcml0ZWRPbmx5KQogewogICAgIGlmIChzdGFydEluZGV4ID09IC0x
KQogICAgICAgICByZXR1cm47CkBAIC0yMTI4LDQ4ICsyMTMxLDE1OCBAQCB2b2lkIENTU1N0eWxl
U2VsZWN0b3I6OmFwcGx5RGVjbGFyYXRpb25zCiAgICAgICAgICAgICBtX2FwcGx5UHJvcGVydHlU
b1JlZ3VsYXJTdHlsZSA9IGxpbmtNYXRjaFR5cGUgJiBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGlu
azsKICAgICAgICAgICAgIG1fYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSA9IGxpbmtN
YXRjaFR5cGUgJiBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoVmlzaXRlZDsKIAotICAgICAgICAgICAg
YXBwbHlEZWNsYXJhdGlvbjxhcHBseUZpcnN0PihzdHlsZURlY2xhcmF0aW9uLCBpc0ltcG9ydGFu
dCk7CisgICAgICAgICAgICBhcHBseURlY2xhcmF0aW9uPGFwcGx5Rmlyc3Q+KHN0eWxlRGVjbGFy
YXRpb24sIGlzSW1wb3J0YW50LCBpbmhlcml0ZWRPbmx5KTsKICAgICAgICAgfQogICAgICAgICBt
X2FwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSA9IHRydWU7CiAgICAgICAgIG1fYXBwbHlQcm9w
ZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGZvciAoaW50IGkgPSBzdGFydEluZGV4OyBpIDw9IGVuZEluZGV4OyArK2kpCi0gICAgICAg
IGFwcGx5RGVjbGFyYXRpb248YXBwbHlGaXJzdD4obV9tYXRjaGVkRGVjbHNbaV0uc3R5bGVEZWNs
YXJhdGlvbiwgaXNJbXBvcnRhbnQpOworICAgICAgICBhcHBseURlY2xhcmF0aW9uPGFwcGx5Rmly
c3Q+KG1fbWF0Y2hlZERlY2xzW2ldLnN0eWxlRGVjbGFyYXRpb24sIGlzSW1wb3J0YW50LCBpbmhl
cml0ZWRPbmx5KTsKK30KKwordW5zaWduZWQgQ1NTU3R5bGVTZWxlY3Rvcjo6Y29tcHV0ZURlY2xh
cmF0aW9uSGFzaChNYXRjaGVkU3R5bGVEZWNsYXJhdGlvbiogZGVjbGFyYXRpb25zLCB1bnNpZ25l
ZCBzaXplKQoreworICAgIHVuc2lnbmVkIGhhc2ggPSAwOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgdW5zaWduZWQgcHRySGFzaCA9IFB0ckhhc2g8
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qPjo6aGFzaChkZWNsYXJhdGlvbnNbaV0uc3R5bGVE
ZWNsYXJhdGlvbik7CisgICAgICAgIHB0ckhhc2ggXj0gSW50SGFzaDx1bnNpZ25lZD46Omhhc2go
ZGVjbGFyYXRpb25zW2ldLmxpbmtNYXRjaFR5cGUpOworICAgICAgICAvLyBNYWtlIHRoZSBwb3Np
dGlvbiBtYXR0ZXIuCisgICAgICAgIGhhc2ggXj0gKHB0ckhhc2ggPDwgaSkgfCAocHRySGFzaCA+
PiAoMzIgLSBpKSk7CisgICAgfQorICAgIHJldHVybiBoYXNoOworfQorCitib29sIG9wZXJhdG9y
PT0oY29uc3QgQ1NTU3R5bGVTZWxlY3Rvcjo6TWF0Y2hSZXN1bHQmIGEsIGNvbnN0IENTU1N0eWxl
U2VsZWN0b3I6Ok1hdGNoUmVzdWx0JiBiKQoreworICAgIHJldHVybiBhLmZpcnN0VUFSdWxlID09
IGIuZmlyc3RVQVJ1bGUKKyAgICAgICAgJiYgYS5sYXN0VUFSdWxlID09IGIubGFzdFVBUnVsZQor
ICAgICAgICAmJiBhLmZpcnN0QXV0aG9yUnVsZSA9PSBiLmZpcnN0QXV0aG9yUnVsZQorICAgICAg
ICAmJiBhLmxhc3RBdXRob3JSdWxlID09IGIubGFzdEF1dGhvclJ1bGUKKyAgICAgICAgJiYgYS5m
aXJzdFVzZXJSdWxlID09IGIuZmlyc3RVc2VyUnVsZQorICAgICAgICAmJiBhLmxhc3RVc2VyUnVs
ZSA9PSBiLmxhc3RVc2VyUnVsZQorICAgICAgICAmJiBhLmlzQ2FjaGVhYmxlID09IGIuaXNDYWNo
ZWFibGU7Cit9CisKK2Jvb2wgb3BlcmF0b3IhPShjb25zdCBDU1NTdHlsZVNlbGVjdG9yOjpNYXRj
aFJlc3VsdCYgYSwgY29uc3QgQ1NTU3R5bGVTZWxlY3Rvcjo6TWF0Y2hSZXN1bHQmIGIpCit7Cisg
ICAgcmV0dXJuICEoYSA9PSBiKTsKK30KKworYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1N0eWxl
U2VsZWN0b3I6Ok1hdGNoZWRTdHlsZURlY2xhcmF0aW9uJiBhLCBjb25zdCBDU1NTdHlsZVNlbGVj
dG9yOjpNYXRjaGVkU3R5bGVEZWNsYXJhdGlvbiYgYikKK3sKKyAgICByZXR1cm4gYS5zdHlsZURl
Y2xhcmF0aW9uID09IGIuc3R5bGVEZWNsYXJhdGlvbiAmJiBhLmxpbmtNYXRjaFR5cGUgPT0gYi5s
aW5rTWF0Y2hUeXBlOworfQorCitib29sIG9wZXJhdG9yIT0oY29uc3QgQ1NTU3R5bGVTZWxlY3Rv
cjo6TWF0Y2hlZFN0eWxlRGVjbGFyYXRpb24mIGEsIGNvbnN0IENTU1N0eWxlU2VsZWN0b3I6Ok1h
dGNoZWRTdHlsZURlY2xhcmF0aW9uJiBiKQoreworICAgIHJldHVybiAhKGEgPT0gYik7Cit9CisK
K1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3I6OmZpbmRGcm9tTWF0Y2hl
ZERlY2xhcmF0aW9uQ2FjaGUodW5zaWduZWQgaGFzaCwgY29uc3QgTWF0Y2hSZXN1bHQmIG1hdGNo
UmVzdWx0KQoreworICAgIEFTU0VSVChoYXNoKTsKKworICAgIE1hdGNoZWRTdHlsZURlY2xhcmF0
aW9uQ2FjaGU6Oml0ZXJhdG9yIGl0ID0gbV9tYXRjaFN0eWxlRGVjbGFyYXRpb25DYWNoZS5maW5k
KGhhc2gpOworICAgIGlmIChpdCA9PSBtX21hdGNoU3R5bGVEZWNsYXJhdGlvbkNhY2hlLmVuZCgp
KQorICAgICAgICByZXR1cm4gMDsKKyAgICBNYXRjaGVkU3R5bGVEZWNsYXJhdGlvbkNhY2hlSXRl
bSYgY2FjaGVJdGVtID0gaXQtPnNlY29uZDsKKyAgICBBU1NFUlQoY2FjaGVJdGVtLm1hdGNoUmVz
dWx0LmlzQ2FjaGVhYmxlKTsKKyAgICAKKyAgICBzaXplX3Qgc2l6ZSA9IG1fbWF0Y2hlZERlY2xz
LnNpemUoKTsKKyAgICBpZiAoc2l6ZSAhPSBjYWNoZUl0ZW0ubWF0Y2hlZFN0eWxlRGVjbGFyYXRp
b25zLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpIHsKKyAgICAgICAgaWYgKG1fbWF0Y2hlZERlY2xzW2ldICE9IGNhY2hlSXRl
bS5tYXRjaGVkU3R5bGVEZWNsYXJhdGlvbnNbaV0pCisgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisgICAgaWYgKGNhY2hlSXRlbS5tYXRjaFJlc3VsdCAhPSBtYXRjaFJlc3VsdCkKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGNhY2hlSXRlbS5yZW5kZXJTdHlsZTsKK30KKwordm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjphZGRUb01hdGNoZWREZWNsYXJhdGlvbkNhY2hlKGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZSwgdW5zaWduZWQgaGFzaCwgY29uc3QgTWF0Y2hSZXN1bHQmIG1hdGNo
UmVzdWx0KQoreworICAgIEFTU0VSVChoYXNoKTsKKyAgICBNYXRjaGVkU3R5bGVEZWNsYXJhdGlv
bkNhY2hlSXRlbSBjYWNoZUl0ZW07CisgICAgY2FjaGVJdGVtLm1hdGNoZWRTdHlsZURlY2xhcmF0
aW9ucy5hcHBlbmQobV9tYXRjaGVkRGVjbHMpOworICAgIGNhY2hlSXRlbS5tYXRjaFJlc3VsdCA9
IG1hdGNoUmVzdWx0OworICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCBjYWNoZSB0aGUgb3JpZ2lu
YWwgUmVuZGVyU3R5bGUgaW5zdGFuY2UuIEl0IG1heSBiZSBmdXJ0aGVyIG1vZGlmaWVkLgorICAg
IC8vIFRoZSBSZW5kZXJTdHlsZSBpbiB0aGUgY2FjaGUgaXMgcmVhbGx5IGp1c3QgYSBob2xkZXIg
Zm9yIHRoZSBub24taW5oZXJpdGVkIHN1YnN0cnVjdHVyZXMgYW5kIG5ldmVyIHVzZWQgYXMtaXMu
CisgICAgY2FjaGVJdGVtLnJlbmRlclN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKHN0eWxlKTsK
KyAgICBtX21hdGNoU3R5bGVEZWNsYXJhdGlvbkNhY2hlLmFkZChoYXNoLCBjYWNoZUl0ZW0pOwor
fQorCitzdGF0aWMgYm9vbCBpc0NhY2hlYWJsZUluTWF0Y2hlZERlY2xhcmF0aW9uQ2FjaGUoY29u
c3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpCit7
CisgICAgaWYgKHN0eWxlLT51bmlxdWUoKSB8fCAoc3R5bGUtPnN0eWxlVHlwZSgpICE9IE5PUFNF
VURPICYmIHBhcmVudFN0eWxlLT51bmlxdWUoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoc3R5bGUtPmhhc0FwcGVhcmFuY2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChzdHlsZS0+em9vbSgpICE9IFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6YXBwbHlNYXRjaGVkRGVjbGFyYXRpb25zKGNvbnN0IE1hdGNoUmVzdWx0JiBtYXRjaFJl
c3VsdCkKIHsKKyAgICB1bnNpZ25lZCBjYWNoZUhhc2ggPSBtYXRjaFJlc3VsdC5pc0NhY2hlYWJs
ZSA/IGNvbXB1dGVEZWNsYXJhdGlvbkhhc2gobV9tYXRjaGVkRGVjbHMuZGF0YSgpLCBtX21hdGNo
ZWREZWNscy5zaXplKCkpIDogMDsKKyAgICBib29sIGFwcGx5SW5oZXJpdGVkT25seSA9IGZhbHNl
OworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gY2FjaGVkU3R5bGU7CisgICAgaWYgKGNhY2hlSGFz
aCAmJiAoY2FjaGVkU3R5bGUgPSBmaW5kRnJvbU1hdGNoZWREZWNsYXJhdGlvbkNhY2hlKGNhY2hl
SGFzaCwgbWF0Y2hSZXN1bHQpKSkgeworICAgICAgICAvLyBXZSBjYW4gYnVpbGQgdXAgdGhlIHN0
eWxlIGJ5IGNvcHlpbmcgbm9uLWluaGVyaXRlZCBwcm9wZXJ0aWVzIGZyb20gYW4gZWFybGllciBz
dHlsZSBvYmplY3QgYnVpbHQgdXNpbmcgdGhlIHNhbWUgZXhhY3QKKyAgICAgICAgLy8gc3R5bGUg
ZGVjbGFyYXRpb25zLiBXZSB0aGVuIG9ubHkgbmVlZCB0byBhcHBseSB0aGUgaW5oZXJpdGVkIHBy
b3BlcnRpZXMsIGlmIGFueSwgYXMgdGhlaXIgdmFsdWVzIGNhbiBkZXBlbmQgb24gdGhlIAorICAg
ICAgICAvLyBlbGVtZW50IGNvbnRleHQuIFRoaXMgaXMgZmFzdCBhbmQgc2F2ZXMgbWVtb3J5IGJ5
IHJldXNpbmcgdGhlIHN0eWxlIGRhdGEgc3RydWN0dXJlcy4KKyAgICAgICAgbV9zdHlsZS0+Y29w
eU5vbkluaGVyaXRlZEZyb20oY2FjaGVkU3R5bGUuZ2V0KCkpOworICAgICAgICBhcHBseUluaGVy
aXRlZE9ubHkgPSB0cnVlOyAKKyAgICB9CiAgICAgLy8gTm93IHdlIGhhdmUgYWxsIG9mIHRoZSBt
YXRjaGVkIHJ1bGVzIGluIHRoZSBhcHByb3ByaWF0ZSBvcmRlci4gV2FsayB0aGUgcnVsZXMgYW5k
IGFwcGx5CiAgICAgLy8gaGlnaC1wcmlvcml0eSBwcm9wZXJ0aWVzIGZpcnN0LCBpLmUuLCB0aG9z
ZSBwcm9wZXJ0aWVzIHRoYXQgb3RoZXIgcHJvcGVydGllcyBkZXBlbmQgb24uCiAgICAgLy8gVGhl
IG9yZGVyIGlzICgxKSBoaWdoLXByaW9yaXR5IG5vdCBpbXBvcnRhbnQsICgyKSBoaWdoLXByaW9y
aXR5IGltcG9ydGFudCwgKDMpIG5vcm1hbCBub3QgaW1wb3J0YW50CiAgICAgLy8gYW5kICg0KSBu
b3JtYWwgaW1wb3J0YW50LgogICAgIG1fbGluZUhlaWdodFZhbHVlID0gMDsKLSAgICBhcHBseURl
Y2xhcmF0aW9uczx0cnVlPihmYWxzZSwgMCwgbV9tYXRjaGVkRGVjbHMuc2l6ZSgpIC0gMSk7Ci0g
ICAgYXBwbHlEZWNsYXJhdGlvbnM8dHJ1ZT4odHJ1ZSwgbWF0Y2hSZXN1bHQuZmlyc3RBdXRob3JS
dWxlLCBtYXRjaFJlc3VsdC5sYXN0QXV0aG9yUnVsZSk7Ci0gICAgYXBwbHlEZWNsYXJhdGlvbnM8
dHJ1ZT4odHJ1ZSwgbWF0Y2hSZXN1bHQuZmlyc3RVc2VyUnVsZSwgbWF0Y2hSZXN1bHQubGFzdFVz
ZXJSdWxlKTsKLSAgICBhcHBseURlY2xhcmF0aW9uczx0cnVlPih0cnVlLCBtYXRjaFJlc3VsdC5m
aXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQubGFzdFVBUnVsZSk7Ci0gICAgCisgICAgYXBwbHlEZWNs
YXJhdGlvbnM8dHJ1ZT4oZmFsc2UsIDAsIG1fbWF0Y2hlZERlY2xzLnNpemUoKSAtIDEsIGFwcGx5
SW5oZXJpdGVkT25seSk7CisgICAgYXBwbHlEZWNsYXJhdGlvbnM8dHJ1ZT4odHJ1ZSwgbWF0Y2hS
ZXN1bHQuZmlyc3RBdXRob3JSdWxlLCBtYXRjaFJlc3VsdC5sYXN0QXV0aG9yUnVsZSwgYXBwbHlJ
bmhlcml0ZWRPbmx5KTsKKyAgICBhcHBseURlY2xhcmF0aW9uczx0cnVlPih0cnVlLCBtYXRjaFJl
c3VsdC5maXJzdFVzZXJSdWxlLCBtYXRjaFJlc3VsdC5sYXN0VXNlclJ1bGUsIGFwcGx5SW5oZXJp
dGVkT25seSk7CisgICAgYXBwbHlEZWNsYXJhdGlvbnM8dHJ1ZT4odHJ1ZSwgbWF0Y2hSZXN1bHQu
Zmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0Lmxhc3RVQVJ1bGUsIGFwcGx5SW5oZXJpdGVkT25seSk7
CisKKyAgICBpZiAoY2FjaGVkU3R5bGUgJiYgY2FjaGVkU3R5bGUtPmVmZmVjdGl2ZVpvb20oKSAh
PSBtX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpIHsKKyAgICAgICAgbV9mb250RGlydHkgPSB0cnVl
OworICAgICAgICBhcHBseUluaGVyaXRlZE9ubHkgPSBmYWxzZTsKKyAgICB9CisKICAgICAvLyBJ
ZiBvdXIgZm9udCBnb3QgZGlydGllZCwgZ28gYWhlYWQgYW5kIHVwZGF0ZSBpdCBub3cuCiAgICAg
dXBkYXRlRm9udCgpOwogCiAgICAgLy8gTGluZS1oZWlnaHQgaXMgc2V0IHdoZW4gd2UgYXJlIHN1
cmUgd2UgZGVjaWRlZCBvbiB0aGUgZm9udC1zaXplLgogICAgIGlmIChtX2xpbmVIZWlnaHRWYWx1
ZSkKICAgICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpbmVIZWlnaHQsIG1fbGluZUhl
aWdodFZhbHVlKTsKLSAgICAgICAgCisKKyAgICAvLyBNYW55IHByb3BlcnRpZXMgZGVwZW5kIG9u
IHRoZSBmb250LiBJZiBpdCBjaGFuZ2VzIHdlIGp1c3QgYXBwbHkgYWxsIHByb3BlcnRpZXMuCisg
ICAgaWYgKGNhY2hlZFN0eWxlICYmIGNhY2hlZFN0eWxlLT5mb250RGVzY3JpcHRpb24oKSAhPSBt
X3N0eWxlLT5mb250RGVzY3JpcHRpb24oKSkKKyAgICAgICAgYXBwbHlJbmhlcml0ZWRPbmx5ID0g
ZmFsc2U7CisKICAgICAvLyBOb3cgZG8gdGhlIG5vcm1hbCBwcmlvcml0eSBVQSBwcm9wZXJ0aWVz
LgotICAgIGFwcGx5RGVjbGFyYXRpb25zPGZhbHNlPihmYWxzZSwgbWF0Y2hSZXN1bHQuZmlyc3RV
QVJ1bGUsIG1hdGNoUmVzdWx0Lmxhc3RVQVJ1bGUpOworICAgIGFwcGx5RGVjbGFyYXRpb25zPGZh
bHNlPihmYWxzZSwgbWF0Y2hSZXN1bHQuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0Lmxhc3RVQVJ1
bGUsIGFwcGx5SW5oZXJpdGVkT25seSk7CiAgICAgCiAgICAgLy8gQ2FjaGUgb3VyIGJvcmRlciBh
bmQgYmFja2dyb3VuZCBzbyB0aGF0IHdlIGNhbiBleGFtaW5lIHRoZW0gbGF0ZXIuCiAgICAgY2Fj
aGVCb3JkZXJBbmRCYWNrZ3JvdW5kKCk7CiAgICAgCiAgICAgLy8gTm93IGRvIHRoZSBhdXRob3Ig
YW5kIHVzZXIgbm9ybWFsIHByaW9yaXR5IHByb3BlcnRpZXMgYW5kIGFsbCB0aGUgIWltcG9ydGFu
dCBwcm9wZXJ0aWVzLgotICAgIGFwcGx5RGVjbGFyYXRpb25zPGZhbHNlPihmYWxzZSwgbWF0Y2hS
ZXN1bHQubGFzdFVBUnVsZSArIDEsIG1fbWF0Y2hlZERlY2xzLnNpemUoKSAtIDEpOwotICAgIGFw
cGx5RGVjbGFyYXRpb25zPGZhbHNlPih0cnVlLCBtYXRjaFJlc3VsdC5maXJzdEF1dGhvclJ1bGUs
IG1hdGNoUmVzdWx0Lmxhc3RBdXRob3JSdWxlKTsKLSAgICBhcHBseURlY2xhcmF0aW9uczxmYWxz
ZT4odHJ1ZSwgbWF0Y2hSZXN1bHQuZmlyc3RVc2VyUnVsZSwgbWF0Y2hSZXN1bHQubGFzdFVzZXJS
dWxlKTsKLSAgICBhcHBseURlY2xhcmF0aW9uczxmYWxzZT4odHJ1ZSwgbWF0Y2hSZXN1bHQuZmly
c3RVQVJ1bGUsIG1hdGNoUmVzdWx0Lmxhc3RVQVJ1bGUpOworICAgIGFwcGx5RGVjbGFyYXRpb25z
PGZhbHNlPihmYWxzZSwgbWF0Y2hSZXN1bHQubGFzdFVBUnVsZSArIDEsIG1fbWF0Y2hlZERlY2xz
LnNpemUoKSAtIDEsIGFwcGx5SW5oZXJpdGVkT25seSk7CisgICAgYXBwbHlEZWNsYXJhdGlvbnM8
ZmFsc2U+KHRydWUsIG1hdGNoUmVzdWx0LmZpcnN0QXV0aG9yUnVsZSwgbWF0Y2hSZXN1bHQubGFz
dEF1dGhvclJ1bGUsIGFwcGx5SW5oZXJpdGVkT25seSk7CisgICAgYXBwbHlEZWNsYXJhdGlvbnM8
ZmFsc2U+KHRydWUsIG1hdGNoUmVzdWx0LmZpcnN0VXNlclJ1bGUsIG1hdGNoUmVzdWx0Lmxhc3RV
c2VyUnVsZSwgYXBwbHlJbmhlcml0ZWRPbmx5KTsKKyAgICBhcHBseURlY2xhcmF0aW9uczxmYWxz
ZT4odHJ1ZSwgbWF0Y2hSZXN1bHQuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0Lmxhc3RVQVJ1bGUs
IGFwcGx5SW5oZXJpdGVkT25seSk7CiAgICAgCisgICAgbG9hZFBlbmRpbmdJbWFnZXMoKTsKKyAg
ICAgICAgCiAgICAgQVNTRVJUKCFtX2ZvbnREaXJ0eSk7CisgICAgCisgICAgaWYgKGNhY2hlZFN0
eWxlIHx8ICFjYWNoZUhhc2gpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWlzQ2FjaGVhYmxl
SW5NYXRjaGVkRGVjbGFyYXRpb25DYWNoZShtX3N0eWxlLmdldCgpLCBtX3BhcmVudFN0eWxlKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGFkZFRvTWF0Y2hlZERlY2xhcmF0aW9uQ2FjaGUobV9zdHls
ZS5nZXQoKSwgY2FjaGVIYXNoLCBtYXRjaFJlc3VsdCk7CiB9CiAKIHZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6bWF0Y2hQYWdlUnVsZXMoUnVsZVNldCogcnVsZXMsIGJvb2wgaXNMZWZ0UGFnZSwgYm9v
bCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5nJiBwYWdlTmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuaAkocmV2aXNpb24gOTg0NzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjYsMTMgKzIyNiwx
NCBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkTWF0Y2hlZERlY2xhcmF0aW9uKENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uKiwgdW5zaWduZWQgbGlua01hdGNoVHlwZSA9IFNlbGVjdG9yQ2hlY2tl
cjo6TWF0Y2hBbGwpOwogCiAgICAgc3RydWN0IE1hdGNoUmVzdWx0IHsKLSAgICAgICAgTWF0Y2hS
ZXN1bHQoKSA6IGZpcnN0VUFSdWxlKC0xKSwgbGFzdFVBUnVsZSgtMSksIGZpcnN0QXV0aG9yUnVs
ZSgtMSksIGxhc3RBdXRob3JSdWxlKC0xKSwgZmlyc3RVc2VyUnVsZSgtMSksIGxhc3RVc2VyUnVs
ZSgtMSkgeyB9CisgICAgICAgIE1hdGNoUmVzdWx0KCkgOiBmaXJzdFVBUnVsZSgtMSksIGxhc3RV
QVJ1bGUoLTEpLCBmaXJzdEF1dGhvclJ1bGUoLTEpLCBsYXN0QXV0aG9yUnVsZSgtMSksIGZpcnN0
VXNlclJ1bGUoLTEpLCBsYXN0VXNlclJ1bGUoLTEpLCBpc0NhY2hlYWJsZSh0cnVlKSB7IH0KICAg
ICAgICAgaW50IGZpcnN0VUFSdWxlOwogICAgICAgICBpbnQgbGFzdFVBUnVsZTsKICAgICAgICAg
aW50IGZpcnN0QXV0aG9yUnVsZTsKICAgICAgICAgaW50IGxhc3RBdXRob3JSdWxlOwogICAgICAg
ICBpbnQgZmlyc3RVc2VyUnVsZTsKICAgICAgICAgaW50IGxhc3RVc2VyUnVsZTsKKyAgICAgICAg
Ym9vbCBpc0NhY2hlYWJsZTsKICAgICB9OwogICAgIHZvaWQgbWF0Y2hBbGxSdWxlcyhNYXRjaFJl
c3VsdCYpOwogICAgIHZvaWQgbWF0Y2hVQVJ1bGVzKE1hdGNoUmVzdWx0Jik7CkBAIC0yNDUsOSAr
MjQ2LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYXBwbHlNYXRjaGVkRGVjbGFyYXRpb25zKGNv
bnN0IE1hdGNoUmVzdWx0Jik7CiAgICAgdGVtcGxhdGUgPGJvb2wgZmlyc3RQYXNzPgotICAgIHZv
aWQgYXBwbHlEZWNsYXJhdGlvbnMoYm9vbCBpbXBvcnRhbnQsIGludCBzdGFydEluZGV4LCBpbnQg
ZW5kSW5kZXgpOworICAgIHZvaWQgYXBwbHlEZWNsYXJhdGlvbnMoYm9vbCBpbXBvcnRhbnQsIGlu
dCBzdGFydEluZGV4LCBpbnQgZW5kSW5kZXgsIGJvb2wgaW5oZXJpdGVkT25seSA9IGZhbHNlKTsK
ICAgICB0ZW1wbGF0ZSA8Ym9vbCBmaXJzdFBhc3M+Ci0gICAgdm9pZCBhcHBseURlY2xhcmF0aW9u
KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgYm9vbCBpc0ltcG9ydGFudCk7CisgICAgdm9p
ZCBhcHBseURlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgYm9vbCBpc0lt
cG9ydGFudCwgYm9vbCBpbmhlcml0ZWRPbmx5KTsKIAogICAgIHZvaWQgbWF0Y2hQYWdlUnVsZXMo
UnVsZVNldCosIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5n
JiBwYWdlTmFtZSk7CiAgICAgdm9pZCBtYXRjaFBhZ2VSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9y
PFJ1bGVEYXRhPiosIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3QgU3Ry
aW5nJiBwYWdlTmFtZSk7CkBAIC0yNzEsNiArMjcyLDcgQEAgcHJpdmF0ZToKIAogICAgIHR5cGVk
ZWYgVmVjdG9yPFJlZlB0cjxDU1NSZWdpb25TdHlsZVJ1bGU+ID4gUmVnaW9uU3R5bGVSdWxlczsK
ICAgICBSZWdpb25TdHlsZVJ1bGVzIG1fcmVnaW9uU3R5bGVSdWxlczsKKwogcHVibGljOgogICAg
IHN0YXRpYyBSZW5kZXJTdHlsZSogc3R5bGVOb3RZZXRBdmFpbGFibGUoKSB7IHJldHVybiBzX3N0
eWxlTm90WWV0QXZhaWxhYmxlOyB9CiAKQEAgLTMyNSwxNiArMzI3LDI4IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGxvYWRQZW5kaW5nSW1hZ2VzKCk7CiAKLSAgICAvLyBXZSBjb2xsZWN0IHRoZSBz
ZXQgb2YgZGVjbHMgdGhhdCBtYXRjaCBpbiB8bV9tYXRjaGVkRGVjbHN8LiBXZSB0aGVuIHdhbGsg
dGhlCi0gICAgLy8gc2V0IG9mIG1hdGNoZWQgZGVjbHMgZm91ciB0aW1lcywgb25jZSBmb3IgdGhv
c2UgcHJvcGVydGllcyB0aGF0IG90aGVycyBkZXBlbmQgb24gKGxpa2UgZm9udC1zaXplKSwKLSAg
ICAvLyBhbmQgdGhlbiBhIHNlY29uZCB0aW1lIGZvciBhbGwgdGhlIHJlbWFpbmluZyBwcm9wZXJ0
aWVzLiBXZSB0aGVuIGRvIHRoZSBzYW1lIHR3byBwYXNzZXMKLSAgICAvLyBmb3IgYW55ICFpbXBv
cnRhbnQgcnVsZXMuCiAgICAgc3RydWN0IE1hdGNoZWRTdHlsZURlY2xhcmF0aW9uIHsKICAgICAg
ICAgTWF0Y2hlZFN0eWxlRGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGRl
Y2wsIHVuc2lnbmVkIHR5cGUpIDogc3R5bGVEZWNsYXJhdGlvbihkZWNsKSwgbGlua01hdGNoVHlw
ZSh0eXBlKSB7IH0KICAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxlRGVj
bGFyYXRpb247CiAgICAgICAgIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGU7CiAgICAgfTsKKyAgICBz
dGF0aWMgdW5zaWduZWQgY29tcHV0ZURlY2xhcmF0aW9uSGFzaChNYXRjaGVkU3R5bGVEZWNsYXJh
dGlvbiosIHVuc2lnbmVkIHNpemUpOworICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGZpbmRG
cm9tTWF0Y2hlZERlY2xhcmF0aW9uQ2FjaGUodW5zaWduZWQgaGFzaCwgY29uc3QgTWF0Y2hSZXN1
bHQmKSA7ICAgCisgICAgdm9pZCBhZGRUb01hdGNoZWREZWNsYXJhdGlvbkNhY2hlKGNvbnN0IFJl
bmRlclN0eWxlKiwgdW5zaWduZWQgaGFzaCwgY29uc3QgTWF0Y2hSZXN1bHQmKTsKKworICAgIC8v
IFdlIGNvbGxlY3QgdGhlIHNldCBvZiBkZWNscyB0aGF0IG1hdGNoIGluIHxtX21hdGNoZWREZWNs
c3wuIFdlIHRoZW4gd2FsayB0aGUKKyAgICAvLyBzZXQgb2YgbWF0Y2hlZCBkZWNscyBmb3VyIHRp
bWVzLCBvbmNlIGZvciB0aG9zZSBwcm9wZXJ0aWVzIHRoYXQgb3RoZXJzIGRlcGVuZCBvbiAobGlr
ZSBmb250LXNpemUpLAorICAgIC8vIGFuZCB0aGVuIGEgc2Vjb25kIHRpbWUgZm9yIGFsbCB0aGUg
cmVtYWluaW5nIHByb3BlcnRpZXMuIFdlIHRoZW4gZG8gdGhlIHNhbWUgdHdvIHBhc3NlcworICAg
IC8vIGZvciBhbnkgIWltcG9ydGFudCBydWxlcy4KICAgICBWZWN0b3I8TWF0Y2hlZFN0eWxlRGVj
bGFyYXRpb24sIDY0PiBtX21hdGNoZWREZWNsczsKKyAgICAKKyAgICBzdHJ1Y3QgTWF0Y2hlZFN0
eWxlRGVjbGFyYXRpb25DYWNoZUl0ZW0geworICAgICAgICBWZWN0b3I8TWF0Y2hlZFN0eWxlRGVj
bGFyYXRpb24+IG1hdGNoZWRTdHlsZURlY2xhcmF0aW9uczsKKyAgICAgICAgTWF0Y2hSZXN1bHQg
bWF0Y2hSZXN1bHQ7CisgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gcmVuZGVyU3R5bGU7Cisg
ICAgfTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIE1hdGNoZWRTdHlsZURlY2xhcmF0
aW9uQ2FjaGVJdGVtPiBNYXRjaGVkU3R5bGVEZWNsYXJhdGlvbkNhY2hlOworICAgIE1hdGNoZWRT
dHlsZURlY2xhcmF0aW9uQ2FjaGUgbV9tYXRjaFN0eWxlRGVjbGFyYXRpb25DYWNoZTsKIAogICAg
IC8vIEEgYnVmZmVyIHVzZWQgdG8gaG9sZCB0aGUgc2V0IG9mIG1hdGNoZWQgcnVsZXMgZm9yIGFu
IGVsZW1lbnQsIGFuZCBhIHRlbXBvcmFyeSBidWZmZXIgdXNlZCBmb3IKICAgICAvLyBtZXJnZSBz
b3J0aW5nLgpAQCAtMzcyLDYgKzM4NiwxMCBAQCBwcml2YXRlOgogICAgIGNvbnN0IENTU1N0eWxl
QXBwbHlQcm9wZXJ0eSYgbV9hcHBseVByb3BlcnR5OwogCiAgICAgZnJpZW5kIGNsYXNzIENTU1N0
eWxlQXBwbHlQcm9wZXJ0eTsKKyAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hdGNo
ZWRTdHlsZURlY2xhcmF0aW9uJiwgY29uc3QgTWF0Y2hlZFN0eWxlRGVjbGFyYXRpb24mKTsKKyAg
ICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE1hdGNoZWRTdHlsZURlY2xhcmF0aW9uJiwg
Y29uc3QgTWF0Y2hlZFN0eWxlRGVjbGFyYXRpb24mKTsKKyAgICBmcmllbmQgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IE1hdGNoUmVzdWx0JiwgY29uc3QgTWF0Y2hSZXN1bHQmKTsKKyAgICBmcmllbmQg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IE1hdGNoUmVzdWx0JiwgY29uc3QgTWF0Y2hSZXN1bHQmKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkocmV2aXNpb24gOTg0NzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODEsNiArMTgxLDM0IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmluaGVyaXRGcm9tKGNvbnN0
IFJlbmQKICNlbmRpZgogfQogCit2b2lkIFJlbmRlclN0eWxlOjpjb3B5Tm9uSW5oZXJpdGVkRnJv
bShjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIpCit7CisgICAgbV9ib3ggPSBvdGhlci0+bV9ib3g7
CisgICAgdmlzdWFsID0gb3RoZXItPnZpc3VhbDsKKyAgICBtX2JhY2tncm91bmQgPSBvdGhlci0+
bV9iYWNrZ3JvdW5kOworICAgIHN1cnJvdW5kID0gb3RoZXItPnN1cnJvdW5kOworICAgIHJhcmVO
b25Jbmhlcml0ZWREYXRhID0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhOworICAgIC8vIFRo
ZSBmbGFncyBhcmUgY29waWVkIG9uZS1ieS1vbmUgYmVjYXVzZSBub25pbmhlcml0ZWRfZmxhZ3Mg
Y29udGFpbnMgYSBidW5jaCBvZiBzdHVmZiBvdGhlciB0aGFuIHJlYWwgc3R5bGUgZGF0YS4KKyAg
ICBub25pbmhlcml0ZWRfZmxhZ3MuX2VmZmVjdGl2ZURpc3BsYXkgPSBvdGhlci0+bm9uaW5oZXJp
dGVkX2ZsYWdzLl9lZmZlY3RpdmVEaXNwbGF5OworICAgIG5vbmluaGVyaXRlZF9mbGFncy5fb3Jp
Z2luYWxEaXNwbGF5ID0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5fb3JpZ2luYWxEaXNwbGF5
OworICAgIG5vbmluaGVyaXRlZF9mbGFncy5fb3ZlcmZsb3dYID0gb3RoZXItPm5vbmluaGVyaXRl
ZF9mbGFncy5fb3ZlcmZsb3dYOworICAgIG5vbmluaGVyaXRlZF9mbGFncy5fb3ZlcmZsb3dZID0g
b3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5fb3ZlcmZsb3dZOworICAgIG5vbmluaGVyaXRlZF9m
bGFncy5fdmVydGljYWxfYWxpZ24gPSBvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLl92ZXJ0aWNh
bF9hbGlnbjsKKyAgICBub25pbmhlcml0ZWRfZmxhZ3MuX2NsZWFyID0gb3RoZXItPm5vbmluaGVy
aXRlZF9mbGFncy5fY2xlYXI7CisgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9wb3NpdGlvbiA9IG90
aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX3Bvc2l0aW9uOworICAgIG5vbmluaGVyaXRlZF9mbGFn
cy5fZmxvYXRpbmcgPSBvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLl9mbG9hdGluZzsKKyAgICBu
b25pbmhlcml0ZWRfZmxhZ3MuX3RhYmxlX2xheW91dCA9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxh
Z3MuX3RhYmxlX2xheW91dDsKKyAgICBub25pbmhlcml0ZWRfZmxhZ3MuX3BhZ2VfYnJlYWtfYmVm
b3JlID0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5fcGFnZV9icmVha19iZWZvcmU7CisgICAg
bm9uaW5oZXJpdGVkX2ZsYWdzLl9wYWdlX2JyZWFrX2FmdGVyID0gb3RoZXItPm5vbmluaGVyaXRl
ZF9mbGFncy5fcGFnZV9icmVha19hZnRlcjsKKyAgICBub25pbmhlcml0ZWRfZmxhZ3MuX3BhZ2Vf
YnJlYWtfaW5zaWRlID0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5fcGFnZV9icmVha19pbnNp
ZGU7CisgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl91bmljb2RlQmlkaSA9IG90aGVyLT5ub25pbmhl
cml0ZWRfZmxhZ3MuX3VuaWNvZGVCaWRpOworI2lmIEVOQUJMRShTVkcpCisgICAgaWYgKG1fc3Zn
U3R5bGUgIT0gb3RoZXItPm1fc3ZnU3R5bGUpCisgICAgICAgIG1fc3ZnU3R5bGUuYWNjZXNzKCkt
PmNvcHlOb25Jbmhlcml0ZWRGcm9tKG90aGVyLT5tX3N2Z1N0eWxlLmdldCgpKTsKKyNlbmRpZgor
ICAgIEFTU0VSVCh6b29tKCkgPT0gaW5pdGlhbFpvb20oKSk7Cit9CisKIFJlbmRlclN0eWxlOjp+
UmVuZGVyU3R5bGUoKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDk4NDc4KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2Niw2ICsyNjYs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgX3BzZXVkb0JpdHMgOiA3Owog
ICAgICAgICB1bnNpZ25lZCBjaGFyIF91bmljb2RlQmlkaSA6IDM7IC8vIEVVbmljb2RlQmlkaQog
ICAgICAgICBib29sIF9pc0xpbmsgOiAxOworICAgICAgICAvLyBJZiB5b3UgYWRkIG1vcmUgc3R5
bGUgYml0cyBoZXJlLCB5b3Ugd2lsbCBhbHNvIG5lZWQgdG8gdXBkYXRlIFJlbmRlclN0eWxlOjpj
b3B5Tm9uSW5oZXJpdGVkRnJvbSgpCiAgICAgICAgIC8vIDUzIGJpdHMKICAgICB9IG5vbmluaGVy
aXRlZF9mbGFnczsKIApAQCAtMzI4LDYgKzMyOSw3IEBAIHB1YmxpYzoKICAgICB+UmVuZGVyU3R5
bGUoKTsKIAogICAgIHZvaWQgaW5oZXJpdEZyb20oY29uc3QgUmVuZGVyU3R5bGUqIGluaGVyaXRQ
YXJlbnQpOworICAgIHZvaWQgY29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgUmVuZGVyU3R5bGUq
KTsKIAogICAgIFBzZXVkb0lkIHN0eWxlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PFBzZXVkb0lkPihub25pbmhlcml0ZWRfZmxhZ3MuX3N0eWxlVHlwZSk7IH0KICAgICB2b2lkIHNl
dFN0eWxlVHlwZShQc2V1ZG9JZCBzdHlsZVR5cGUpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLl9zdHls
ZVR5cGUgPSBzdHlsZVR5cGU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TVkdSZW5kZXJTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmNwcAkocmV2aXNpb24gOTg0NzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjYsNiArMTI2LDE1IEBAIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OmluaGVyaXRGcm9tKGNv
bnN0IFMKICAgICBzdmdfaW5oZXJpdGVkX2ZsYWdzID0gc3ZnSW5oZXJpdFBhcmVudC0+c3ZnX2lu
aGVyaXRlZF9mbGFnczsKIH0KIAordm9pZCBTVkdSZW5kZXJTdHlsZTo6Y29weU5vbkluaGVyaXRl
ZEZyb20oY29uc3QgU1ZHUmVuZGVyU3R5bGUqIG90aGVyKQoreworICAgIHN2Z19ub25pbmhlcml0
ZWRfZmxhZ3MgPSBvdGhlci0+c3ZnX25vbmluaGVyaXRlZF9mbGFnczsKKyAgICBzdG9wcyA9IG90
aGVyLT5zdG9wczsKKyAgICBtaXNjID0gb3RoZXItPm1pc2M7CisgICAgc2hhZG93U1ZHID0gb3Ro
ZXItPnNoYWRvd1NWRzsKKyAgICByZXNvdXJjZXMgPSBvdGhlci0+cmVzb3VyY2VzOworfQorCiBT
dHlsZURpZmZlcmVuY2UgU1ZHUmVuZGVyU3R5bGU6OmRpZmYoY29uc3QgU1ZHUmVuZGVyU3R5bGUq
IG90aGVyKSBjb25zdAogewogICAgIC8vIE5PVEU6IEFsbCBjb21wYXJpc2lvbnMgdGhhdCBtYXkg
cmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dCBoYXZlIHRvIGdvIGJlZm9yZSB0aG9zZSB3aG8g
cmV0dXJuIFN0eWxlRGlmZmVyZW5jZVJlcGFpbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCShyZXZpc2lvbiA5ODQ3OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Niw2ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaW5oZXJpdGVkTm90RXF1
YWwoY29uc3QgU1ZHUmVuZGVyU3R5bGUqKSBjb25zdDsKICAgICB2b2lkIGluaGVyaXRGcm9tKGNv
bnN0IFNWR1JlbmRlclN0eWxlKik7CisgICAgdm9pZCBjb3B5Tm9uSW5oZXJpdGVkRnJvbShjb25z
dCBTVkdSZW5kZXJTdHlsZSopOwogCiAgICAgU3R5bGVEaWZmZXJlbmNlIGRpZmYoY29uc3QgU1ZH
UmVuZGVyU3R5bGUqKSBjb25zdDsKIAo=
</data>
<flag name="commit-queue"
          id="110757"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112653</attachid>
            <date>2011-10-27 02:05:19 -0700</date>
            <delta_ts>2011-10-27 02:05:19 -0700</delta_ts>
            <desc>for bots 2</desc>
            <filename>style-cache-12.patch</filename>
            <type>text/plain</type>
            <size>39954</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4NDc4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTEtMTAtMjYgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIE1hdGNoZWQgZGVjbGFyYXRpb24g
Y2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcw
OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0
cyBvZiBzdHlsZSBkZWNsYXJhdGlvbnMgYXJlIGFwcGxpZWQgcmVwZWF0ZWRseSBmb3IgZGlmZmVy
ZW50IGVsZW1lbnRzIHdoZW4gY2FsY3VsYXRpbmcgdGhlIGRvY3VtZW50IHN0eWxlLgorICAgICAg
ICBUaGUgc2FtZSBzZXQgb2ZmIGFwcGxpZWQgZGVjbGFyYXRpb25zIHJlc3VsdCBpbiB0aGUgc2Ft
ZSBub24taW5oZXJpdGVkIHN0eWxlLCBpbmRlcGVuZGVudCBvZiB0aGUgZWxlbWVudCBhbmQgCisg
ICAgICAgIGl0cyBjb250ZXh0LiBXZSBjYW4gdXNlIHRoaXMgdG8gYnVpbGQgYSBjYWNoZSB0byBz
cGVlZCB1cCBzdHlsZSBhcHBseWluZyBhbmQgdG8gc2hhcmUgbW9yZSBzdHlsZSBkYXRhIGZvcgor
ICAgICAgICByZWR1Y2VkIG1lbW9yeSB1c2FnZS4KKyAgICAgICAgCisgICAgICAgIFRoZSBwYXRj
aCByZWR1Y2VzIFJlbmRlclN0eWxlIG1lbW9yeSB1c2UgfjQwJSBhbmQgdG90YWwgbWVtb3J5IHVz
ZSBieSB+NyUgb3ZlciBIVE1MNSBzcGVjIGxvYWQuCisgICAgICAgIEl0IGlzIGFsc28gfjEwJSBw
cm9ncmVzc2lvbiBpbiBQZXJmb3JtYW5jZVRlc3RzL1BhcnNlci9odG1sNS1mdWxsLXJlbmRlci5o
dG1sLgorCisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NTUHJv
cGVydHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5OjpDU1NQcm9wZXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWQpOgorICAgICAgICAKKyAg
ICAgICAgICAgIFdlIG5lZWQgdG8ga25vdyB3aGljaCBwcm9wZXJ0aWVzIGFyZSBpbmhlcml0ZWQs
IHNvbWV0aGluZyB3ZSBkaWRuJ3QgaGF2ZSBhdmFpbGFibGUgc28gZmFyLgorICAgICAgICAKKyAg
ICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
dHlsZVNlbGVjdG9yOjptYXRjaEFsbFJ1bGVzKToKKyAgICAgICAgCisgICAgICAgICAgICBBIHNl
dCBvZiBkZWNsYXJhdGlvbnMgaXMgb25seSBjYWNoZWFibGUgaWYgaXQgY29udGFpbnMgbm8gZWxl
bWVudCBzcGVjaWZpYyBzdHlsZS4gVGhpcyB3YXkgd2UKKyAgICAgICAgICAgIGRvbid0IG5lZWQg
dG8gd29ycnkgYWJvdXQgY2FjaGUgaW52YWxpZGF0aW9uLiBUaGUgd2hvbGUgc3R5bGUgc2VsZWN0
b3IgaXMgcmVjb25zdHJ1Y3RlZCBpZiB0aGUKKyAgICAgICAgICAgIHN0eWxlc2hlZXRzIGNoYW5n
ZSwgaW52YWxpZGF0aW5nIHRoZSBjYWNoZSB0b28uCisgICAgCisgICAgICAgIChXZWJDb3JlOjpD
U1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckVsZW1lbnQpOgorICAgICAgICAKKyAgICAgICAgICAg
IFRyaWdnZXIgaW1hZ2UgbG9hZHMgYml0IGVhcmxpZXIgc28gY2FjaGVkIHN0eWxlIHdpbGwgaGF2
ZSB0aGVtIHRvby4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
OjphcHBseURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6
OmFwcGx5RGVjbGFyYXRpb25zKToKKyAgICAgICAgCisgICAgICAgICAgICBBbGxvdyBza2lwcGlu
ZyBvdmVyIG5vbi1pbmhlcml0ZWQgcHJvcGVydGllcy4KKyAgICAgICAgCisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjb21wdXRlRGVjbGFyYXRpb25IYXNoKToKKyAgICAgICAg
CisgICAgICAgICAgICBIYXNoIGZ1bmN0aW9uIGZvciBkZWNsYXJ0aW9uIGNhY2hlIGxvb2t1cHMu
CisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6TWF0Y2hSZXN1
bHQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6TWF0
Y2hlZFN0eWxlRGVjbGFyYXRpb246Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U3R5bGVTZWxlY3Rvcjo6ZmluZEZyb21NYXRjaGVkRGVjbGFyYXRpb25DYWNoZSk6CisgICAgICAg
IAorICAgICAgICAgICAgTG9va3VwIGZyb20gY2FjaGUuCisgICAgICAgIAorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YWRkVG9NYXRjaGVkRGVjbGFyYXRpb25DYWNoZSk6Cisg
ICAgICAgIAorICAgICAgICAgICAgQWRkIHRvIGNhY2hlLgorICAgICAgICAKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5TWF0Y2hlZERlY2xhcmF0aW9ucyk6CisgICAg
ICAgIAorICAgICAgICAgICAgSWYgY2FjaGVkIHN0eWxlIGlzIGZvdW5kLCBjb3B5IHRoZSBub24t
aW5oZXJpdGVkIHByb3BlcnRpZXMgZnJvbSB0aGUgY2FjaGUgYW5kIGFwcGx5IHRoZSBpbmhlcml0
ZWQgcHJvcGVydGllcyAoaWYgYW55KSBvbmx5LgorICAgICAgICAKKyAgICAgICAgICAgIEZvbnQg
YW5kIHpvb20gY2hhbmdlcyBmb3JjZSBmdWxsIGFwcGx5aW5nIGFzIHRoZXkgY2FuIGFmZmVjdCB2
YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllcyAodGhpcyBjYW4gYmUgcmVsYXhlZCBsYXRlcikuCisg
ICAgICAgIAorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpNYXRjaFJlc3VsdDo6TWF0Y2hSZXN1bHQpOgorICAgICAg
ICAKKyAgICAgICAgICAgIENhY2hlYWJpbGl0eSBiaXQuCisgICAgICAgIAorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6Y29weU5vbkluaGVyaXRlZEZyb20pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6Y29weU5vbkluaGVyaXRlZEZy
b20pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oOgorICAgICAg
ICAKKyAgICAgICAgICAgIEZ1bmN0aW9ucyBmb3IgYXNzZW1ibGluZyBSZW5kZXJTdHlsZSBmcm9t
IG5vbi1pbmhlcml0ZWQgcGFydHMgb2YgdGhlIGNhY2hlZCBzdHlsZS4KKwogMjAxMS0xMC0yNiAg
UGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgTm90IHJldmll
d2VkOiBmb2xsb3cgdXAgdG8gOTgyMzYgLSBtb3ZlZCBpbnNwZWN0b3Igc2V0dGluZ3MgaW5pdGlh
bGl6YXRpb24gZWFybGllciB0byB1bmJyZWFrIHNldHRpbmdzIHBhbmVsLgpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydHkuY3BwCShyZXZpc2lvbiA5ODQ3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw0ICsyODIsMzgzIEBA
IGludCBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHIKICAgICB9CiB9CiAKK2Jv
b2wgQ1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJvcGVydHkodW5zaWduZWQgcHJvcGVydHlJRCkK
K3sKKyAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BlcnR5SUQpKSB7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJTcGFjaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDYXB0aW9uU2lkZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUN1cnNvcjoKKyAgICBj
YXNlIENTU1Byb3BlcnR5RGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlFbXB0eUNlbGxz
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250OgorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250RmFt
aWx5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U2l6ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
Rm9udFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250VmFyaWFudDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5Rm9udFdlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmc6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUxpbmVIZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5
cGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlPcnBoYW5zOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlRdW90ZXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVJlc2l6ZToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5U3BlYWs6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRBbGlnbjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHRJbmRlbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmc6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRleHRTaGFkb3c6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zv
cm06CisgICAgY2FzZSBDU1NQcm9wZXJ0eVZpc2liaWxpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveERp
cmVjdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2NhbGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEhpZ2hsaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVy
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVMaW1pdEFmdGVyOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVMaW1pdEJlZm9yZToKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRMaW5lczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0SHlwaGVuczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJveENvbnRhaW46Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhazoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TmJzcE1vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3Q6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRFbXBoYXNpczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lz
Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VGV4dFNlY3VyaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0
U3Ryb2tlV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnk6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3Q6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFdyaXRpbmdNb2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXaWRvd3M6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRCcmVhazoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V29yZFNwYWNpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRX
cmFwOgorI2lmIEVOQUJMRShTVkcpCisgICAgY2FzZSBDU1NQcm9wZXJ0eUNsaXBSdWxlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlDb2xvckludGVycG9sYXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yUmVu
ZGVyaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlGaWxsOgorICAgIGNhc2UgQ1NTUHJvcGVydHlG
aWxsT3BhY2l0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5RmlsbFJ1bGU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOgorICAgIGNhc2UgQ1NTUHJvcGVydHlH
bHlwaE9yaWVudGF0aW9uVmVydGljYWw6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUtlcm5pbmc6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmtlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFya2VyRW5k
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXJNaWQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1h
cmtlclN0YXJ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2U6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVN0cm9rZURhc2hhcnJheToKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlRGFzaG9mZnNl
dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlTGluZWNhcDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5U3Ryb2tlTGluZWpvaW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZU1pdGVybGltaXQ6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZU9wYWNpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVN0cm9rZVdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTaGFwZVJlbmRlcmluZzoKKyAgICBj
YXNlIENTU1Byb3BlcnR5VGV4dEFuY2hvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V3JpdGluZ01v
ZGU6CisjZW5kaWYKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUYXBIaWdobGlnaHRDb2xvcjoKKyNlbmRpZgorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5RGlzcGxheToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Rm9udEZlYXR1cmVTZXR0aW5nczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290
aGluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dE9yaWVudGF0aW9uOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlab29tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5QmFja2dyb3VuZENsaXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kT3JpZ2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRp
b246CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblg6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WToKKyAgICBjYXNlIENTU1Byb3BlcnR5
QmFja2dyb3VuZFNpemU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjoKKyAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21D
b2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1czoKKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21X
aWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZU91dHNldDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VSZXBlYXQ6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckltYWdlU2xpY2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU291
cmNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVdpZHRoOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3I6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXM6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJSaWdodENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJUb3BDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVm
dFJhZGl1czoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXM6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGg6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUJvdHRvbToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2hhZG93OgorICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3hTaXppbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNsZWFyOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlDbGlwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb250ZW50OgorICAg
IGNhc2UgQ1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlD
b3VudGVyUmVzZXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsb2F0OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlGb250U3RyZXRjaDoKKyAgICBjYXNlIENTU1Byb3BlcnR5SGVpZ2h0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlMZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW46CisgICAgY2FzZSBD
U1NQcm9wZXJ0eU1hcmdpbkJvdHRvbToKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luTGVmdDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1h
cmdpblRvcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWF4SGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlNYXhXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWluSGVpZ2h0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlNaW5XaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3BhY2l0eToKKyAgICBj
YXNlIENTU1Byb3BlcnR5T3V0bGluZToKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZUNvbG9y
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0OgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlPdXRsaW5lU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5T3ZlcmZsb3c6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dZOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRk
aW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlQYWRkaW5nTGVmdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0OgorICAg
IGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nVG9wOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
UGFnZUJyZWFrQmVmb3JlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGU6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVBvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlSaWdodDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5U2l6ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5U3JjOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlUYWJsZUxheW91dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExp
bmVUaHJvdWdoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hDb2xvcjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoTW9kZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dExpbmVUaHJvdWdoU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhy
b3VnaFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3c6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVRleHRPdmVybGluZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5l
Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZU1vZGU6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVRleHRPdmVybGluZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3Zl
cmxpbmVXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZToKKyAgICBjYXNl
IENTU1Byb3BlcnR5VGV4dFVuZGVybGluZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0
VW5kZXJsaW5lTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVN0eWxlOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lV2lkdGg6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRvcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VW5pY29kZUJpZGk6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVVuaWNvZGVSYW5nZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VmVydGljYWxBbGlnbjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVpJbmRleDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRBbmltYXRpb25EZWxheToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0
aW9uRGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlv
bjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGU6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25QbGF5U3RhdGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRp
bWluZ0Z1bmN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHk6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
YWNrZ3JvdW5kQ29tcG9zaXRlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5k
T3JpZ2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckFmdGVyQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFm
dGVyU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyV2lkdGg6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyQmVmb3JlQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckJlZm9yZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVX
aWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyRW5kU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFdpZHRo
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQ6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJS
YWRpdXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJTdGFydFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJT
dGFydFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm94RmxleDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94
RmxleEdyb3VwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lczoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm94T3JkaW5hbEdyb3VwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3hPcmllbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2s6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3Q6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJveFNoYWRvdzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtBZnRl
cjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmU6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5zaWRlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRDb2x1bW5Db3VudDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uR2Fw
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtblJ1bGVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRo
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5TcGFuOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5XaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
czoKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZp
bHRlcjoKKyNlbmRpZgorI2lmIEVOQUJMRShDU1MzX0ZMRVhCT1gpCisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEZsZXhPcmRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleFBhY2s6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhBbGlnbjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0RmxleEZsb3c6CisjZW5kaWYKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9u
dFNpemVEZWx0YToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUNsYW1wOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdExvZ2ljYWxIZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVy
Q29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5BZnRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5FbmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hcmdpblN0YXJ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXJxdWVlSW5jcmVtZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJx
dWVlUmVwZXRpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGU6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2s6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2U6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZU91dHNldDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza0JveEltYWdlUmVwZWF0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94
SW1hZ2VTbGljZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU291cmNl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VXaWR0aDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tDb21wb3NpdGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza1Bvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25Y
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXNrUmVwZWF0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNr
UmVwZWF0WDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFk6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXhMb2dpY2FsV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxI
ZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbEhlaWdodDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0UGFkZGluZ0FmdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5n
QmVmb3JlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nRW5kOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRQYWRkaW5nU3RhcnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFBlcnNwZWN0aXZlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdp
bjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblk6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRyYW5zZm9ybToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3Jt
T3JpZ2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm1TdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zaXRpb25Qcm9wZXJ0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlv
blRpbWluZ0Z1bmN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZzoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rmxvd0ludG86CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEZsb3dGcm9tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSZWdpb25PdmVyZmxvdzoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcFNoYXBlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRSZWdpb25CcmVha0FmdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSZWdp
b25CcmVha0JlZm9yZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtJbnNp
ZGU6CisjaWYgRU5BQkxFKFNWRykKKyAgICBjYXNlIENTU1Byb3BlcnR5Q2xpcFBhdGg6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eU1hc2s6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUVuYWJsZUJhY2tncm91
bmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbHRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Rmxv
b2RDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Rmxvb2RPcGFjaXR5OgorICAgIGNhc2UgQ1NT
UHJvcGVydHlMaWdodGluZ0NvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTdG9wQ29sb3I6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVN0b3BPcGFjaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xv
clByb2ZpbGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWdubWVudEJhc2VsaW5lOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlCYXNlbGluZVNoaWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlEb21pbmFu
dEJhc2VsaW5lOgorICAgIGNhc2UgQ1NTUHJvcGVydHlWZWN0b3JFZmZlY3Q6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFN2Z1NoYWRvdzoKKyNlbmRpZgorI2lmIEVOQUJMRShEQVNIQk9BUkRf
U1VQUE9SVCkKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uOgorI2Vu
ZGlmCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5SW52YWxpZDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAkocmV2
aXNpb24gOTg0NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsMTEgKzMyLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENT
U1Byb3BlcnR5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBD
U1NQcm9wZXJ0eShpbnQgcHJvcElELCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBp
bXBvcnRhbnQgPSBmYWxzZSwgaW50IHNob3J0aGFuZElEID0gMCwgYm9vbCBpbXBsaWNpdCA9IGZh
bHNlKQorICAgIENTU1Byb3BlcnR5KHVuc2lnbmVkIHByb3BJRCwgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gdmFsdWUsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UsIGludCBzaG9ydGhhbmRJRCA9IDAsIGJv
b2wgaW1wbGljaXQgPSBmYWxzZSkKICAgICAgICAgOiBtX2lkKHByb3BJRCkKICAgICAgICAgLCBt
X3Nob3J0aGFuZElEKHNob3J0aGFuZElEKQogICAgICAgICAsIG1faW1wb3J0YW50KGltcG9ydGFu
dCkKICAgICAgICAgLCBtX2ltcGxpY2l0KGltcGxpY2l0KQorICAgICAgICAsIG1faW5oZXJpdGVk
KGlzSW5oZXJpdGVkUHJvcGVydHkocHJvcElEKSkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQog
ICAgIHsKICAgICB9CkBAIC01NiwyMCArNTcsMjMgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0lt
cG9ydGFudCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wb3J0YW50OyB9CiAgICAgYm9vbCBpc0ltcGxp
Y2l0KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsaWNpdDsgfQorICAgIGJvb2wgaXNJbmhlcml0ZWQo
KSBjb25zdCB7IHJldHVybiBtX2luaGVyaXRlZDsgfQogCiAgICAgQ1NTVmFsdWUqIHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsgfQogCiAgICAgU3RyaW5nIGNzc1RleHQoKSBj
b25zdDsKIAogICAgIHN0YXRpYyBpbnQgcmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoaW50
IHByb3BlcnR5SUQsIFRleHREaXJlY3Rpb24sIFdyaXRpbmdNb2RlKTsKKyAgICBzdGF0aWMgYm9v
bCBpc0luaGVyaXRlZFByb3BlcnR5KHVuc2lnbmVkIHByb3BlcnR5SUQpOwogCiAgICAgZnJpZW5k
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NQcm9wZXJ0eSYsIGNvbnN0IENTU1Byb3BlcnR5Jik7
CiAKICAgICAvLyBNYWtlIHN1cmUgdGhlIGZvbGxvd2luZyBmaXRzIGluIDQgYnl0ZXMuIFJlYWxs
eS4KLSAgICBzaWduZWQgbV9pZCA6IDE1OwotICAgIHNpZ25lZCBtX3Nob3J0aGFuZElEIDogMTU7
IC8vIElmIHRoaXMgcHJvcGVydHkgd2FzIHNldCBhcyBwYXJ0IG9mIGEgc2hvcnRoYW5kLCBnaXZl
cyB0aGUgc2hvcnRoYW5kLgorICAgIHVuc2lnbmVkIG1faWQgOiAxNDsKKyAgICB1bnNpZ25lZCBt
X3Nob3J0aGFuZElEIDogMTQ7IC8vIElmIHRoaXMgcHJvcGVydHkgd2FzIHNldCBhcyBwYXJ0IG9m
IGEgc2hvcnRoYW5kLCBnaXZlcyB0aGUgc2hvcnRoYW5kLgogICAgIGJvb2wgbV9pbXBvcnRhbnQg
OiAxOwogICAgIGJvb2wgbV9pbXBsaWNpdCA6IDE7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBwcm9w
ZXJ0eSB3YXMgc2V0IGltcGxpY2l0bHkgYXMgdGhlIHJlc3VsdCBvZiBhIHNob3J0aGFuZC4KKyAg
ICBib29sIG1faW5oZXJpdGVkIDogMTsKIAogICAgIFJlZlB0cjxDU1NWYWx1ZT4gbV92YWx1ZTsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lv
biA5ODQ3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzY2LDYgKzc2Niw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0
Y2hBbGxSdWxlcyhNYXQKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5maXJzdEF1dGhv
clJ1bGUgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZmlyc3RBdXRob3JS
dWxlID0gcmVzdWx0Lmxhc3RBdXRob3JSdWxlOwogICAgICAgICAgICAgICAgICAgICBhZGRNYXRj
aGVkRGVjbGFyYXRpb24oYXR0ci0+ZGVjbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0
LmlzQ2FjaGVhYmxlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
ICAgICAgICB9CkBAIC03ODMsNiArNzg0LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXRj
aEFsbFJ1bGVzKE1hdAogICAgICAgICAgICAgICAgIHJlc3VsdC5sYXN0QXV0aG9yUnVsZSA9IG1f
bWF0Y2hlZERlY2xzLnNpemUoKSArIGFkZGl0aW9uYWxEZWNsc1NpemUgLSAxOwogICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhZGRpdGlvbmFsRGVjbHNTaXplOyArK2kp
CiAgICAgICAgICAgICAgICAgICAgIGFkZE1hdGNoZWREZWNsYXJhdGlvbihtX2FkZGl0aW9uYWxB
dHRyaWJ1dGVTdHlsZURlY2xzW2ldKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuaXNDYWNoZWFi
bGUgPSBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAobV9zdHls
ZWRFbGVtZW50LT5pc0hUTUxFbGVtZW50KCkpIHsKQEAgLTgwNSw2ICs4MDcsNyBAQCB2b2lkIENT
U1N0eWxlU2VsZWN0b3I6Om1hdGNoQWxsUnVsZXMoTWF0CiAgICAgICAgICAgICBpZiAocmVzdWx0
LmZpcnN0QXV0aG9yUnVsZSA9PSAtMSkKICAgICAgICAgICAgICAgICByZXN1bHQuZmlyc3RBdXRo
b3JSdWxlID0gcmVzdWx0Lmxhc3RBdXRob3JSdWxlOwogICAgICAgICAgICAgYWRkTWF0Y2hlZERl
Y2xhcmF0aW9uKGlubGluZURlY2wpOworICAgICAgICAgICAgcmVzdWx0LmlzQ2FjaGVhYmxlID0g
ZmFsc2U7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xMjQzLDkgKzEyNDYsNiBAQCBQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yCiAgICAgLy8gQ2xlYW4gdXAgb3VyIHN0
eWxlIG9iamVjdCdzIGRpc3BsYXkgYW5kIHRleHQgZGVjb3JhdGlvbnMgKGFtb25nIG90aGVyIGZp
eHVwcykuCiAgICAgYWRqdXN0UmVuZGVyU3R5bGUoc3R5bGUoKSwgbV9wYXJlbnRTdHlsZSwgZWxl
bWVudCk7CiAKLSAgICAvLyBTdGFydCBsb2FkaW5nIGltYWdlcyByZWZlcmVuY2VkIGJ5IHRoaXMg
c3R5bGUuCi0gICAgbG9hZFBlbmRpbmdJbWFnZXMoKTsKLQogICAgIGluaXRFbGVtZW50KDApOyAv
LyBDbGVhciBvdXQgZm9yIHRoZSBuZXh0IHJlc29sdmUuCiAKICAgICAvLyBOb3cgcmV0dXJuIHRo
ZSBzdHlsZS4KQEAgLTIwODIsMjIgKzIwODIsMjAgQEAgc3RhdGljIExlbmd0aCBjb252ZXJ0VG9G
bG9hdExlbmd0aChDU1NQcgogfQogCiB0ZW1wbGF0ZSA8Ym9vbCBhcHBseUZpcnN0Pgotdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjphcHBseURlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uKiBzdHlsZURlY2xhcmF0aW9uLCBib29sIGlzSW1wb3J0YW50KQordm9pZCBDU1NTdHlsZVNl
bGVjdG9yOjphcHBseURlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHls
ZURlY2xhcmF0aW9uLCBib29sIGlzSW1wb3J0YW50LCBib29sIGluaGVyaXRlZE9ubHkpCiB7CiAg
ICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHN0eWxl
RGVjbGFyYXRpb24tPmVuZCgpOwogICAgIGZvciAoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc3R5bGVEZWNsYXJhdGlvbi0+YmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7CiAgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5JiBjdXJyZW50ID0gKml0OwotCiAg
ICAgICAgIGlmIChpc0ltcG9ydGFudCAhPSBjdXJyZW50LmlzSW1wb3J0YW50KCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKLQorICAgICAgICBpZiAoaW5oZXJpdGVkT25seSAmJiAhY3VycmVudC5p
c0luaGVyaXRlZCgpICYmIGN1cnJlbnQudmFsdWUoKS0+Y3NzVmFsdWVUeXBlKCkgIT0gQ1NTVmFs
dWU6OkNTU19JTkhFUklUKQorICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGludCBwcm9w
ZXJ0eSA9IGN1cnJlbnQuaWQoKTsKLQogICAgICAgICBpZiAoYXBwbHlGaXJzdCkgewogICAgICAg
ICAgICAgQ09NUElMRV9BU1NFUlQoZmlyc3RDU1NQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUNvbG9y
LCBDU1NfY29sb3JfaXNfZmlyc3RfcHJvcGVydHkpOwogICAgICAgICAgICAgQ09NUElMRV9BU1NF
UlQoQ1NTUHJvcGVydHlab29tID09IENTU1Byb3BlcnR5Q29sb3IgKyAxNiwgQ1NTX3pvb21faXNf
ZW5kX29mX2ZpcnN0X3Byb3BfcmFuZ2UpOwogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoQ1NT
UHJvcGVydHlMaW5lSGVpZ2h0ID09IENTU1Byb3BlcnR5Wm9vbSArIDEsIENTU19saW5lX2hlaWdo
dF9pc19hZnRlcl96b29tKTsKLQogICAgICAgICAgICAgLy8gZ2l2ZSBzcGVjaWFsIHByaW9yaXR5
IHRvIGZvbnQteHh4LCBjb2xvciBwcm9wZXJ0aWVzLCBldGMKICAgICAgICAgICAgIGlmIChwcm9w
ZXJ0eSA+IENTU1Byb3BlcnR5TGluZUhlaWdodCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTIxMTUsNyArMjExMyw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlEZWNsYXJh
dGlvbigKIH0KIAogdGVtcGxhdGUgPGJvb2wgYXBwbHlGaXJzdD4KLXZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6YXBwbHlEZWNsYXJhdGlvbnMoYm9vbCBpc0ltcG9ydGFudCwgaW50IHN0YXJ0SW5kZXgs
IGludCBlbmRJbmRleCkKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlEZWNsYXJhdGlvbnMo
Ym9vbCBpc0ltcG9ydGFudCwgaW50IHN0YXJ0SW5kZXgsIGludCBlbmRJbmRleCwgYm9vbCBpbmhl
cml0ZWRPbmx5KQogewogICAgIGlmIChzdGFydEluZGV4ID09IC0xKQogICAgICAgICByZXR1cm47
CkBAIC0yMTI4LDQ4ICsyMTI2LDE1OCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5RGVj
bGFyYXRpb25zCiAgICAgICAgICAgICBtX2FwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSA9IGxp
bmtNYXRjaFR5cGUgJiBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGluazsKICAgICAgICAgICAgIG1f
YXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSA9IGxpbmtNYXRjaFR5cGUgJiBTZWxlY3Rv
ckNoZWNrZXI6Ok1hdGNoVmlzaXRlZDsKIAotICAgICAgICAgICAgYXBwbHlEZWNsYXJhdGlvbjxh
cHBseUZpcnN0PihzdHlsZURlY2xhcmF0aW9uLCBpc0ltcG9ydGFudCk7CisgICAgICAgICAgICBh
cHBseURlY2xhcmF0aW9uPGFwcGx5Rmlyc3Q+KHN0eWxlRGVjbGFyYXRpb24sIGlzSW1wb3J0YW50
LCBpbmhlcml0ZWRPbmx5KTsKICAgICAgICAgfQogICAgICAgICBtX2FwcGx5UHJvcGVydHlUb1Jl
Z3VsYXJTdHlsZSA9IHRydWU7CiAgICAgICAgIG1fYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtT
dHlsZSA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGZvciAoaW50IGkgPSBz
dGFydEluZGV4OyBpIDw9IGVuZEluZGV4OyArK2kpCi0gICAgICAgIGFwcGx5RGVjbGFyYXRpb248
YXBwbHlGaXJzdD4obV9tYXRjaGVkRGVjbHNbaV0uc3R5bGVEZWNsYXJhdGlvbiwgaXNJbXBvcnRh
bnQpOworICAgICAgICBhcHBseURlY2xhcmF0aW9uPGFwcGx5Rmlyc3Q+KG1fbWF0Y2hlZERlY2xz
W2ldLnN0eWxlRGVjbGFyYXRpb24sIGlzSW1wb3J0YW50LCBpbmhlcml0ZWRPbmx5KTsKK30KKwor
dW5zaWduZWQgQ1NTU3R5bGVTZWxlY3Rvcjo6Y29tcHV0ZURlY2xhcmF0aW9uSGFzaChNYXRjaGVk
U3R5bGVEZWNsYXJhdGlvbiogZGVjbGFyYXRpb25zLCB1bnNpZ25lZCBzaXplKQoreworICAgIHVu
c2lnbmVkIGhhc2ggPSAwOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kp
IHsKKyAgICAgICAgdW5zaWduZWQgcHRySGFzaCA9IFB0ckhhc2g8Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24qPjo6aGFzaChkZWNsYXJhdGlvbnNbaV0uc3R5bGVEZWNsYXJhdGlvbik7CisgICAg
ICAgIHB0ckhhc2ggXj0gSW50SGFzaDx1bnNpZ25lZD46Omhhc2goZGVjbGFyYXRpb25zW2ldLmxp
bmtNYXRjaFR5cGUpOworICAgICAgICAvLyBNYWtlIHRoZSBwb3NpdGlvbiBtYXR0ZXIuCisgICAg
ICAgIGhhc2ggXj0gKHB0ckhhc2ggPDwgaSkgfCAocHRySGFzaCA+PiAoMzIgLSBpKSk7CisgICAg
fQorICAgIHJldHVybiBoYXNoOworfQorCitib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTU3R5bGVT
ZWxlY3Rvcjo6TWF0Y2hSZXN1bHQmIGEsIGNvbnN0IENTU1N0eWxlU2VsZWN0b3I6Ok1hdGNoUmVz
dWx0JiBiKQoreworICAgIHJldHVybiBhLmZpcnN0VUFSdWxlID09IGIuZmlyc3RVQVJ1bGUKKyAg
ICAgICAgJiYgYS5sYXN0VUFSdWxlID09IGIubGFzdFVBUnVsZQorICAgICAgICAmJiBhLmZpcnN0
QXV0aG9yUnVsZSA9PSBiLmZpcnN0QXV0aG9yUnVsZQorICAgICAgICAmJiBhLmxhc3RBdXRob3JS
dWxlID09IGIubGFzdEF1dGhvclJ1bGUKKyAgICAgICAgJiYgYS5maXJzdFVzZXJSdWxlID09IGIu
Zmlyc3RVc2VyUnVsZQorICAgICAgICAmJiBhLmxhc3RVc2VyUnVsZSA9PSBiLmxhc3RVc2VyUnVs
ZQorICAgICAgICAmJiBhLmlzQ2FjaGVhYmxlID09IGIuaXNDYWNoZWFibGU7Cit9CisKK2Jvb2wg
b3BlcmF0b3IhPShjb25zdCBDU1NTdHlsZVNlbGVjdG9yOjpNYXRjaFJlc3VsdCYgYSwgY29uc3Qg
Q1NTU3R5bGVTZWxlY3Rvcjo6TWF0Y2hSZXN1bHQmIGIpCit7CisgICAgcmV0dXJuICEoYSA9PSBi
KTsKK30KKworYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1N0eWxlU2VsZWN0b3I6Ok1hdGNoZWRT
dHlsZURlY2xhcmF0aW9uJiBhLCBjb25zdCBDU1NTdHlsZVNlbGVjdG9yOjpNYXRjaGVkU3R5bGVE
ZWNsYXJhdGlvbiYgYikKK3sKKyAgICByZXR1cm4gYS5zdHlsZURlY2xhcmF0aW9uID09IGIuc3R5
bGVEZWNsYXJhdGlvbiAmJiBhLmxpbmtNYXRjaFR5cGUgPT0gYi5saW5rTWF0Y2hUeXBlOworfQor
Citib29sIG9wZXJhdG9yIT0oY29uc3QgQ1NTU3R5bGVTZWxlY3Rvcjo6TWF0Y2hlZFN0eWxlRGVj
bGFyYXRpb24mIGEsIGNvbnN0IENTU1N0eWxlU2VsZWN0b3I6Ok1hdGNoZWRTdHlsZURlY2xhcmF0
aW9uJiBiKQoreworICAgIHJldHVybiAhKGEgPT0gYik7Cit9CisKK2NvbnN0IFJlbmRlclN0eWxl
KiBDU1NTdHlsZVNlbGVjdG9yOjpmaW5kRnJvbU1hdGNoZWREZWNsYXJhdGlvbkNhY2hlKHVuc2ln
bmVkIGhhc2gsIGNvbnN0IE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCkKK3sKKyAgICBBU1NFUlQo
aGFzaCk7CisKKyAgICBNYXRjaGVkU3R5bGVEZWNsYXJhdGlvbkNhY2hlOjppdGVyYXRvciBpdCA9
IG1fbWF0Y2hTdHlsZURlY2xhcmF0aW9uQ2FjaGUuZmluZChoYXNoKTsKKyAgICBpZiAoaXQgPT0g
bV9tYXRjaFN0eWxlRGVjbGFyYXRpb25DYWNoZS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgTWF0Y2hlZFN0eWxlRGVjbGFyYXRpb25DYWNoZUl0ZW0mIGNhY2hlSXRlbSA9IGl0LT5zZWNv
bmQ7CisgICAgQVNTRVJUKGNhY2hlSXRlbS5tYXRjaFJlc3VsdC5pc0NhY2hlYWJsZSk7CisgICAg
CisgICAgc2l6ZV90IHNpemUgPSBtX21hdGNoZWREZWNscy5zaXplKCk7CisgICAgaWYgKHNpemUg
IT0gY2FjaGVJdGVtLm1hdGNoZWRTdHlsZURlY2xhcmF0aW9ucy5zaXplKCkpCisgICAgICAgIHJl
dHVybiAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAg
IGlmIChtX21hdGNoZWREZWNsc1tpXSAhPSBjYWNoZUl0ZW0ubWF0Y2hlZFN0eWxlRGVjbGFyYXRp
b25zW2ldKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmIChjYWNoZUl0ZW0u
bWF0Y2hSZXN1bHQgIT0gbWF0Y2hSZXN1bHQpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVy
biBjYWNoZUl0ZW0ucmVuZGVyU3R5bGUuZ2V0KCk7Cit9CisKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6YWRkVG9NYXRjaGVkRGVjbGFyYXRpb25DYWNoZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUs
IHVuc2lnbmVkIGhhc2gsIGNvbnN0IE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCkKK3sKKyAgICBB
U1NFUlQoaGFzaCk7CisgICAgTWF0Y2hlZFN0eWxlRGVjbGFyYXRpb25DYWNoZUl0ZW0gY2FjaGVJ
dGVtOworICAgIGNhY2hlSXRlbS5tYXRjaGVkU3R5bGVEZWNsYXJhdGlvbnMuYXBwZW5kKG1fbWF0
Y2hlZERlY2xzKTsKKyAgICBjYWNoZUl0ZW0ubWF0Y2hSZXN1bHQgPSBtYXRjaFJlc3VsdDsKKyAg
ICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3QgY2FjaGUgdGhlIG9yaWdpbmFsIFJlbmRlclN0eWxlIGlu
c3RhbmNlLiBJdCBtYXkgYmUgZnVydGhlciBtb2RpZmllZC4KKyAgICAvLyBUaGUgUmVuZGVyU3R5
bGUgaW4gdGhlIGNhY2hlIGlzIHJlYWxseSBqdXN0IGEgaG9sZGVyIGZvciB0aGUgbm9uLWluaGVy
aXRlZCBzdWJzdHJ1Y3R1cmVzIGFuZCBuZXZlciB1c2VkIGFzLWlzLgorICAgIGNhY2hlSXRlbS5y
ZW5kZXJTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShzdHlsZSk7CisgICAgbV9tYXRjaFN0eWxl
RGVjbGFyYXRpb25DYWNoZS5hZGQoaGFzaCwgY2FjaGVJdGVtKTsKK30KKworc3RhdGljIGJvb2wg
aXNDYWNoZWFibGVJbk1hdGNoZWREZWNsYXJhdGlvbkNhY2hlKGNvbnN0IFJlbmRlclN0eWxlKiBz
dHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKQoreworICAgIGlmIChzdHlsZS0+
dW5pcXVlKCkgfHwgKHN0eWxlLT5zdHlsZVR5cGUoKSAhPSBOT1BTRVVETyAmJiBwYXJlbnRTdHls
ZS0+dW5pcXVlKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHN0eWxlLT5oYXNB
cHBlYXJhbmNlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoc3R5bGUtPnpvb20o
KSAhPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5TWF0Y2hl
ZERlY2xhcmF0aW9ucyhjb25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQpCiB7CisgICAgdW5z
aWduZWQgY2FjaGVIYXNoID0gbWF0Y2hSZXN1bHQuaXNDYWNoZWFibGUgPyBjb21wdXRlRGVjbGFy
YXRpb25IYXNoKG1fbWF0Y2hlZERlY2xzLmRhdGEoKSwgbV9tYXRjaGVkRGVjbHMuc2l6ZSgpKSA6
IDA7CisgICAgYm9vbCBhcHBseUluaGVyaXRlZE9ubHkgPSBmYWxzZTsKKyAgICBjb25zdCBSZW5k
ZXJTdHlsZSogY2FjaGVkU3R5bGUgPSAwOworICAgIGlmIChjYWNoZUhhc2ggJiYgKGNhY2hlZFN0
eWxlID0gZmluZEZyb21NYXRjaGVkRGVjbGFyYXRpb25DYWNoZShjYWNoZUhhc2gsIG1hdGNoUmVz
dWx0KSkpIHsKKyAgICAgICAgLy8gV2UgY2FuIGJ1aWxkIHVwIHRoZSBzdHlsZSBieSBjb3B5aW5n
IG5vbi1pbmhlcml0ZWQgcHJvcGVydGllcyBmcm9tIGFuIGVhcmxpZXIgc3R5bGUgb2JqZWN0IGJ1
aWx0IHVzaW5nIHRoZSBzYW1lIGV4YWN0CisgICAgICAgIC8vIHN0eWxlIGRlY2xhcmF0aW9ucy4g
V2UgdGhlbiBvbmx5IG5lZWQgdG8gYXBwbHkgdGhlIGluaGVyaXRlZCBwcm9wZXJ0aWVzLCBpZiBh
bnksIGFzIHRoZWlyIHZhbHVlcyBjYW4gZGVwZW5kIG9uIHRoZSAKKyAgICAgICAgLy8gZWxlbWVu
dCBjb250ZXh0LiBUaGlzIGlzIGZhc3QgYW5kIHNhdmVzIG1lbW9yeSBieSByZXVzaW5nIHRoZSBz
dHlsZSBkYXRhIHN0cnVjdHVyZXMuCisgICAgICAgIG1fc3R5bGUtPmNvcHlOb25Jbmhlcml0ZWRG
cm9tKGNhY2hlZFN0eWxlKTsKKyAgICAgICAgYXBwbHlJbmhlcml0ZWRPbmx5ID0gdHJ1ZTsgCisg
ICAgfQogICAgIC8vIE5vdyB3ZSBoYXZlIGFsbCBvZiB0aGUgbWF0Y2hlZCBydWxlcyBpbiB0aGUg
YXBwcm9wcmlhdGUgb3JkZXIuIFdhbGsgdGhlIHJ1bGVzIGFuZCBhcHBseQogICAgIC8vIGhpZ2gt
cHJpb3JpdHkgcHJvcGVydGllcyBmaXJzdCwgaS5lLiwgdGhvc2UgcHJvcGVydGllcyB0aGF0IG90
aGVyIHByb3BlcnRpZXMgZGVwZW5kIG9uLgogICAgIC8vIFRoZSBvcmRlciBpcyAoMSkgaGlnaC1w
cmlvcml0eSBub3QgaW1wb3J0YW50LCAoMikgaGlnaC1wcmlvcml0eSBpbXBvcnRhbnQsICgzKSBu
b3JtYWwgbm90IGltcG9ydGFudAogICAgIC8vIGFuZCAoNCkgbm9ybWFsIGltcG9ydGFudC4KICAg
ICBtX2xpbmVIZWlnaHRWYWx1ZSA9IDA7Ci0gICAgYXBwbHlEZWNsYXJhdGlvbnM8dHJ1ZT4oZmFs
c2UsIDAsIG1fbWF0Y2hlZERlY2xzLnNpemUoKSAtIDEpOwotICAgIGFwcGx5RGVjbGFyYXRpb25z
PHRydWU+KHRydWUsIG1hdGNoUmVzdWx0LmZpcnN0QXV0aG9yUnVsZSwgbWF0Y2hSZXN1bHQubGFz
dEF1dGhvclJ1bGUpOwotICAgIGFwcGx5RGVjbGFyYXRpb25zPHRydWU+KHRydWUsIG1hdGNoUmVz
dWx0LmZpcnN0VXNlclJ1bGUsIG1hdGNoUmVzdWx0Lmxhc3RVc2VyUnVsZSk7Ci0gICAgYXBwbHlE
ZWNsYXJhdGlvbnM8dHJ1ZT4odHJ1ZSwgbWF0Y2hSZXN1bHQuZmlyc3RVQVJ1bGUsIG1hdGNoUmVz
dWx0Lmxhc3RVQVJ1bGUpOwotICAgIAorICAgIGFwcGx5RGVjbGFyYXRpb25zPHRydWU+KGZhbHNl
LCAwLCBtX21hdGNoZWREZWNscy5zaXplKCkgLSAxLCBhcHBseUluaGVyaXRlZE9ubHkpOworICAg
IGFwcGx5RGVjbGFyYXRpb25zPHRydWU+KHRydWUsIG1hdGNoUmVzdWx0LmZpcnN0QXV0aG9yUnVs
ZSwgbWF0Y2hSZXN1bHQubGFzdEF1dGhvclJ1bGUsIGFwcGx5SW5oZXJpdGVkT25seSk7CisgICAg
YXBwbHlEZWNsYXJhdGlvbnM8dHJ1ZT4odHJ1ZSwgbWF0Y2hSZXN1bHQuZmlyc3RVc2VyUnVsZSwg
bWF0Y2hSZXN1bHQubGFzdFVzZXJSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOworICAgIGFwcGx5
RGVjbGFyYXRpb25zPHRydWU+KHRydWUsIG1hdGNoUmVzdWx0LmZpcnN0VUFSdWxlLCBtYXRjaFJl
c3VsdC5sYXN0VUFSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOworCisgICAgaWYgKGNhY2hlZFN0
eWxlICYmIGNhY2hlZFN0eWxlLT5lZmZlY3RpdmVab29tKCkgIT0gbV9zdHlsZS0+ZWZmZWN0aXZl
Wm9vbSgpKSB7CisgICAgICAgIG1fZm9udERpcnR5ID0gdHJ1ZTsKKyAgICAgICAgYXBwbHlJbmhl
cml0ZWRPbmx5ID0gZmFsc2U7CisgICAgfQorCiAgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRpcnRp
ZWQsIGdvIGFoZWFkIGFuZCB1cGRhdGUgaXQgbm93LgogICAgIHVwZGF0ZUZvbnQoKTsKIAogICAg
IC8vIExpbmUtaGVpZ2h0IGlzIHNldCB3aGVuIHdlIGFyZSBzdXJlIHdlIGRlY2lkZWQgb24gdGhl
IGZvbnQtc2l6ZS4KICAgICBpZiAobV9saW5lSGVpZ2h0VmFsdWUpCiAgICAgICAgIGFwcGx5UHJv
cGVydHkoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0LCBtX2xpbmVIZWlnaHRWYWx1ZSk7Ci0gICAgICAg
IAorCisgICAgLy8gTWFueSBwcm9wZXJ0aWVzIGRlcGVuZCBvbiB0aGUgZm9udC4gSWYgaXQgY2hh
bmdlcyB3ZSBqdXN0IGFwcGx5IGFsbCBwcm9wZXJ0aWVzLgorICAgIGlmIChjYWNoZWRTdHlsZSAm
JiBjYWNoZWRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkgIT0gbV9zdHlsZS0+Zm9udERlc2NyaXB0
aW9uKCkpCisgICAgICAgIGFwcGx5SW5oZXJpdGVkT25seSA9IGZhbHNlOworCiAgICAgLy8gTm93
IGRvIHRoZSBub3JtYWwgcHJpb3JpdHkgVUEgcHJvcGVydGllcy4KLSAgICBhcHBseURlY2xhcmF0
aW9uczxmYWxzZT4oZmFsc2UsIG1hdGNoUmVzdWx0LmZpcnN0VUFSdWxlLCBtYXRjaFJlc3VsdC5s
YXN0VUFSdWxlKTsKKyAgICBhcHBseURlY2xhcmF0aW9uczxmYWxzZT4oZmFsc2UsIG1hdGNoUmVz
dWx0LmZpcnN0VUFSdWxlLCBtYXRjaFJlc3VsdC5sYXN0VUFSdWxlLCBhcHBseUluaGVyaXRlZE9u
bHkpOwogICAgIAogICAgIC8vIENhY2hlIG91ciBib3JkZXIgYW5kIGJhY2tncm91bmQgc28gdGhh
dCB3ZSBjYW4gZXhhbWluZSB0aGVtIGxhdGVyLgogICAgIGNhY2hlQm9yZGVyQW5kQmFja2dyb3Vu
ZCgpOwogICAgIAogICAgIC8vIE5vdyBkbyB0aGUgYXV0aG9yIGFuZCB1c2VyIG5vcm1hbCBwcmlv
cml0eSBwcm9wZXJ0aWVzIGFuZCBhbGwgdGhlICFpbXBvcnRhbnQgcHJvcGVydGllcy4KLSAgICBh
cHBseURlY2xhcmF0aW9uczxmYWxzZT4oZmFsc2UsIG1hdGNoUmVzdWx0Lmxhc3RVQVJ1bGUgKyAx
LCBtX21hdGNoZWREZWNscy5zaXplKCkgLSAxKTsKLSAgICBhcHBseURlY2xhcmF0aW9uczxmYWxz
ZT4odHJ1ZSwgbWF0Y2hSZXN1bHQuZmlyc3RBdXRob3JSdWxlLCBtYXRjaFJlc3VsdC5sYXN0QXV0
aG9yUnVsZSk7Ci0gICAgYXBwbHlEZWNsYXJhdGlvbnM8ZmFsc2U+KHRydWUsIG1hdGNoUmVzdWx0
LmZpcnN0VXNlclJ1bGUsIG1hdGNoUmVzdWx0Lmxhc3RVc2VyUnVsZSk7Ci0gICAgYXBwbHlEZWNs
YXJhdGlvbnM8ZmFsc2U+KHRydWUsIG1hdGNoUmVzdWx0LmZpcnN0VUFSdWxlLCBtYXRjaFJlc3Vs
dC5sYXN0VUFSdWxlKTsKKyAgICBhcHBseURlY2xhcmF0aW9uczxmYWxzZT4oZmFsc2UsIG1hdGNo
UmVzdWx0Lmxhc3RVQVJ1bGUgKyAxLCBtX21hdGNoZWREZWNscy5zaXplKCkgLSAxLCBhcHBseUlu
aGVyaXRlZE9ubHkpOworICAgIGFwcGx5RGVjbGFyYXRpb25zPGZhbHNlPih0cnVlLCBtYXRjaFJl
c3VsdC5maXJzdEF1dGhvclJ1bGUsIG1hdGNoUmVzdWx0Lmxhc3RBdXRob3JSdWxlLCBhcHBseUlu
aGVyaXRlZE9ubHkpOworICAgIGFwcGx5RGVjbGFyYXRpb25zPGZhbHNlPih0cnVlLCBtYXRjaFJl
c3VsdC5maXJzdFVzZXJSdWxlLCBtYXRjaFJlc3VsdC5sYXN0VXNlclJ1bGUsIGFwcGx5SW5oZXJp
dGVkT25seSk7CisgICAgYXBwbHlEZWNsYXJhdGlvbnM8ZmFsc2U+KHRydWUsIG1hdGNoUmVzdWx0
LmZpcnN0VUFSdWxlLCBtYXRjaFJlc3VsdC5sYXN0VUFSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkp
OwogICAgIAorICAgIGxvYWRQZW5kaW5nSW1hZ2VzKCk7CisgICAgICAgIAogICAgIEFTU0VSVCgh
bV9mb250RGlydHkpOworICAgIAorICAgIGlmIChjYWNoZWRTdHlsZSB8fCAhY2FjaGVIYXNoKQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKCFpc0NhY2hlYWJsZUluTWF0Y2hlZERlY2xhcmF0aW9u
Q2FjaGUobV9zdHlsZS5nZXQoKSwgbV9wYXJlbnRTdHlsZSkpCisgICAgICAgIHJldHVybjsKKyAg
ICBhZGRUb01hdGNoZWREZWNsYXJhdGlvbkNhY2hlKG1fc3R5bGUuZ2V0KCksIGNhY2hlSGFzaCwg
bWF0Y2hSZXN1bHQpOwogfQogCiB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUGFnZVJ1bGVz
KFJ1bGVTZXQqIHJ1bGVzLCBib29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNGaXJzdFBhZ2UsIGNvbnN0
IFN0cmluZyYgcGFnZU5hbWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmgJKHJldmlzaW9uIDk4NDc4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjI2LDEzICsyMjYsMTQgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGFkZE1hdGNoZWREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiosIHVu
c2lnbmVkIGxpbmtNYXRjaFR5cGUgPSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoQWxsKTsKIAogICAg
IHN0cnVjdCBNYXRjaFJlc3VsdCB7Ci0gICAgICAgIE1hdGNoUmVzdWx0KCkgOiBmaXJzdFVBUnVs
ZSgtMSksIGxhc3RVQVJ1bGUoLTEpLCBmaXJzdEF1dGhvclJ1bGUoLTEpLCBsYXN0QXV0aG9yUnVs
ZSgtMSksIGZpcnN0VXNlclJ1bGUoLTEpLCBsYXN0VXNlclJ1bGUoLTEpIHsgfQorICAgICAgICBN
YXRjaFJlc3VsdCgpIDogZmlyc3RVQVJ1bGUoLTEpLCBsYXN0VUFSdWxlKC0xKSwgZmlyc3RBdXRo
b3JSdWxlKC0xKSwgbGFzdEF1dGhvclJ1bGUoLTEpLCBmaXJzdFVzZXJSdWxlKC0xKSwgbGFzdFVz
ZXJSdWxlKC0xKSwgaXNDYWNoZWFibGUodHJ1ZSkgeyB9CiAgICAgICAgIGludCBmaXJzdFVBUnVs
ZTsKICAgICAgICAgaW50IGxhc3RVQVJ1bGU7CiAgICAgICAgIGludCBmaXJzdEF1dGhvclJ1bGU7
CiAgICAgICAgIGludCBsYXN0QXV0aG9yUnVsZTsKICAgICAgICAgaW50IGZpcnN0VXNlclJ1bGU7
CiAgICAgICAgIGludCBsYXN0VXNlclJ1bGU7CisgICAgICAgIGJvb2wgaXNDYWNoZWFibGU7CiAg
ICAgfTsKICAgICB2b2lkIG1hdGNoQWxsUnVsZXMoTWF0Y2hSZXN1bHQmKTsKICAgICB2b2lkIG1h
dGNoVUFSdWxlcyhNYXRjaFJlc3VsdCYpOwpAQCAtMjQ1LDkgKzI0Niw5IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGFwcGx5TWF0Y2hlZERlY2xhcmF0aW9ucyhjb25zdCBNYXRjaFJlc3VsdCYpOwog
ICAgIHRlbXBsYXRlIDxib29sIGZpcnN0UGFzcz4KLSAgICB2b2lkIGFwcGx5RGVjbGFyYXRpb25z
KGJvb2wgaW1wb3J0YW50LCBpbnQgc3RhcnRJbmRleCwgaW50IGVuZEluZGV4KTsKKyAgICB2b2lk
IGFwcGx5RGVjbGFyYXRpb25zKGJvb2wgaW1wb3J0YW50LCBpbnQgc3RhcnRJbmRleCwgaW50IGVu
ZEluZGV4LCBib29sIGluaGVyaXRlZE9ubHkgPSBmYWxzZSk7CiAgICAgdGVtcGxhdGUgPGJvb2wg
Zmlyc3RQYXNzPgotICAgIHZvaWQgYXBwbHlEZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbiosIGJvb2wgaXNJbXBvcnRhbnQpOworICAgIHZvaWQgYXBwbHlEZWNsYXJhdGlvbihD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiosIGJvb2wgaXNJbXBvcnRhbnQsIGJvb2wgaW5oZXJp
dGVkT25seSk7CiAKICAgICB2b2lkIG1hdGNoUGFnZVJ1bGVzKFJ1bGVTZXQqLCBib29sIGlzTGVm
dFBhZ2UsIGJvb2wgaXNGaXJzdFBhZ2UsIGNvbnN0IFN0cmluZyYgcGFnZU5hbWUpOwogICAgIHZv
aWQgbWF0Y2hQYWdlUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qLCBib29sIGlz
TGVmdFBhZ2UsIGJvb2wgaXNGaXJzdFBhZ2UsIGNvbnN0IFN0cmluZyYgcGFnZU5hbWUpOwpAQCAt
MjcxLDYgKzI3Miw3IEBAIHByaXZhdGU6CiAKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8Q1NT
UmVnaW9uU3R5bGVSdWxlPiA+IFJlZ2lvblN0eWxlUnVsZXM7CiAgICAgUmVnaW9uU3R5bGVSdWxl
cyBtX3JlZ2lvblN0eWxlUnVsZXM7CisKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVuZGVyU3R5bGUq
IHN0eWxlTm90WWV0QXZhaWxhYmxlKCkgeyByZXR1cm4gc19zdHlsZU5vdFlldEF2YWlsYWJsZTsg
fQogCkBAIC0zMjUsMTYgKzMyNywyOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBsb2FkUGVuZGlu
Z0ltYWdlcygpOwogCi0gICAgLy8gV2UgY29sbGVjdCB0aGUgc2V0IG9mIGRlY2xzIHRoYXQgbWF0
Y2ggaW4gfG1fbWF0Y2hlZERlY2xzfC4gV2UgdGhlbiB3YWxrIHRoZQotICAgIC8vIHNldCBvZiBt
YXRjaGVkIGRlY2xzIGZvdXIgdGltZXMsIG9uY2UgZm9yIHRob3NlIHByb3BlcnRpZXMgdGhhdCBv
dGhlcnMgZGVwZW5kIG9uIChsaWtlIGZvbnQtc2l6ZSksCi0gICAgLy8gYW5kIHRoZW4gYSBzZWNv
bmQgdGltZSBmb3IgYWxsIHRoZSByZW1haW5pbmcgcHJvcGVydGllcy4gV2UgdGhlbiBkbyB0aGUg
c2FtZSB0d28gcGFzc2VzCi0gICAgLy8gZm9yIGFueSAhaW1wb3J0YW50IHJ1bGVzLgogICAgIHN0
cnVjdCBNYXRjaGVkU3R5bGVEZWNsYXJhdGlvbiB7CiAgICAgICAgIE1hdGNoZWRTdHlsZURlY2xh
cmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNsLCB1bnNpZ25lZCB0eXBlKSA6
IHN0eWxlRGVjbGFyYXRpb24oZGVjbCksIGxpbmtNYXRjaFR5cGUodHlwZSkgeyB9CiAgICAgICAg
IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZURlY2xhcmF0aW9uOwogICAgICAgICB1
bnNpZ25lZCBsaW5rTWF0Y2hUeXBlOwogICAgIH07CisgICAgc3RhdGljIHVuc2lnbmVkIGNvbXB1
dGVEZWNsYXJhdGlvbkhhc2goTWF0Y2hlZFN0eWxlRGVjbGFyYXRpb24qLCB1bnNpZ25lZCBzaXpl
KTsKKyAgICBjb25zdCBSZW5kZXJTdHlsZSogZmluZEZyb21NYXRjaGVkRGVjbGFyYXRpb25DYWNo
ZSh1bnNpZ25lZCBoYXNoLCBjb25zdCBNYXRjaFJlc3VsdCYpOyAgIAorICAgIHZvaWQgYWRkVG9N
YXRjaGVkRGVjbGFyYXRpb25DYWNoZShjb25zdCBSZW5kZXJTdHlsZSosIHVuc2lnbmVkIGhhc2gs
IGNvbnN0IE1hdGNoUmVzdWx0Jik7CisKKyAgICAvLyBXZSBjb2xsZWN0IHRoZSBzZXQgb2YgZGVj
bHMgdGhhdCBtYXRjaCBpbiB8bV9tYXRjaGVkRGVjbHN8LiBXZSB0aGVuIHdhbGsgdGhlCisgICAg
Ly8gc2V0IG9mIG1hdGNoZWQgZGVjbHMgZm91ciB0aW1lcywgb25jZSBmb3IgdGhvc2UgcHJvcGVy
dGllcyB0aGF0IG90aGVycyBkZXBlbmQgb24gKGxpa2UgZm9udC1zaXplKSwKKyAgICAvLyBhbmQg
dGhlbiBhIHNlY29uZCB0aW1lIGZvciBhbGwgdGhlIHJlbWFpbmluZyBwcm9wZXJ0aWVzLiBXZSB0
aGVuIGRvIHRoZSBzYW1lIHR3byBwYXNzZXMKKyAgICAvLyBmb3IgYW55ICFpbXBvcnRhbnQgcnVs
ZXMuCiAgICAgVmVjdG9yPE1hdGNoZWRTdHlsZURlY2xhcmF0aW9uLCA2ND4gbV9tYXRjaGVkRGVj
bHM7CisgICAgCisgICAgc3RydWN0IE1hdGNoZWRTdHlsZURlY2xhcmF0aW9uQ2FjaGVJdGVtIHsK
KyAgICAgICAgVmVjdG9yPE1hdGNoZWRTdHlsZURlY2xhcmF0aW9uPiBtYXRjaGVkU3R5bGVEZWNs
YXJhdGlvbnM7CisgICAgICAgIE1hdGNoUmVzdWx0IG1hdGNoUmVzdWx0OworICAgICAgICBSZWZQ
dHI8UmVuZGVyU3R5bGU+IHJlbmRlclN0eWxlOworICAgIH07CisgICAgdHlwZWRlZiBIYXNoTWFw
PHVuc2lnbmVkLCBNYXRjaGVkU3R5bGVEZWNsYXJhdGlvbkNhY2hlSXRlbT4gTWF0Y2hlZFN0eWxl
RGVjbGFyYXRpb25DYWNoZTsKKyAgICBNYXRjaGVkU3R5bGVEZWNsYXJhdGlvbkNhY2hlIG1fbWF0
Y2hTdHlsZURlY2xhcmF0aW9uQ2FjaGU7CiAKICAgICAvLyBBIGJ1ZmZlciB1c2VkIHRvIGhvbGQg
dGhlIHNldCBvZiBtYXRjaGVkIHJ1bGVzIGZvciBhbiBlbGVtZW50LCBhbmQgYSB0ZW1wb3Jhcnkg
YnVmZmVyIHVzZWQgZm9yCiAgICAgLy8gbWVyZ2Ugc29ydGluZy4KQEAgLTM3Miw2ICszODYsMTAg
QEAgcHJpdmF0ZToKICAgICBjb25zdCBDU1NTdHlsZUFwcGx5UHJvcGVydHkmIG1fYXBwbHlQcm9w
ZXJ0eTsKIAogICAgIGZyaWVuZCBjbGFzcyBDU1NTdHlsZUFwcGx5UHJvcGVydHk7CisgICAgZnJp
ZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXRjaGVkU3R5bGVEZWNsYXJhdGlvbiYsIGNvbnN0
IE1hdGNoZWRTdHlsZURlY2xhcmF0aW9uJik7CisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBNYXRjaGVkU3R5bGVEZWNsYXJhdGlvbiYsIGNvbnN0IE1hdGNoZWRTdHlsZURlY2xhcmF0
aW9uJik7CisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXRjaFJlc3VsdCYsIGNv
bnN0IE1hdGNoUmVzdWx0Jik7CisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBNYXRj
aFJlc3VsdCYsIGNvbnN0IE1hdGNoUmVzdWx0Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHAJKHJldmlzaW9uIDk4NDc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDYgKzE4MSwzNCBAQCB2b2lk
IFJlbmRlclN0eWxlOjppbmhlcml0RnJvbShjb25zdCBSZW5kCiAjZW5kaWYKIH0KIAordm9pZCBS
ZW5kZXJTdHlsZTo6Y29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgUmVuZGVyU3R5bGUqIG90aGVy
KQoreworICAgIG1fYm94ID0gb3RoZXItPm1fYm94OworICAgIHZpc3VhbCA9IG90aGVyLT52aXN1
YWw7CisgICAgbV9iYWNrZ3JvdW5kID0gb3RoZXItPm1fYmFja2dyb3VuZDsKKyAgICBzdXJyb3Vu
ZCA9IG90aGVyLT5zdXJyb3VuZDsKKyAgICByYXJlTm9uSW5oZXJpdGVkRGF0YSA9IG90aGVyLT5y
YXJlTm9uSW5oZXJpdGVkRGF0YTsKKyAgICAvLyBUaGUgZmxhZ3MgYXJlIGNvcGllZCBvbmUtYnkt
b25lIGJlY2F1c2Ugbm9uaW5oZXJpdGVkX2ZsYWdzIGNvbnRhaW5zIGEgYnVuY2ggb2Ygc3R1ZmYg
b3RoZXIgdGhhbiByZWFsIHN0eWxlIGRhdGEuCisgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9lZmZl
Y3RpdmVEaXNwbGF5ID0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5fZWZmZWN0aXZlRGlzcGxh
eTsKKyAgICBub25pbmhlcml0ZWRfZmxhZ3MuX29yaWdpbmFsRGlzcGxheSA9IG90aGVyLT5ub25p
bmhlcml0ZWRfZmxhZ3MuX29yaWdpbmFsRGlzcGxheTsKKyAgICBub25pbmhlcml0ZWRfZmxhZ3Mu
X292ZXJmbG93WCA9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX292ZXJmbG93WDsKKyAgICBu
b25pbmhlcml0ZWRfZmxhZ3MuX292ZXJmbG93WSA9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3Mu
X292ZXJmbG93WTsKKyAgICBub25pbmhlcml0ZWRfZmxhZ3MuX3ZlcnRpY2FsX2FsaWduID0gb3Ro
ZXItPm5vbmluaGVyaXRlZF9mbGFncy5fdmVydGljYWxfYWxpZ247CisgICAgbm9uaW5oZXJpdGVk
X2ZsYWdzLl9jbGVhciA9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX2NsZWFyOworICAgIG5v
bmluaGVyaXRlZF9mbGFncy5fcG9zaXRpb24gPSBvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLl9w
b3NpdGlvbjsKKyAgICBub25pbmhlcml0ZWRfZmxhZ3MuX2Zsb2F0aW5nID0gb3RoZXItPm5vbmlu
aGVyaXRlZF9mbGFncy5fZmxvYXRpbmc7CisgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl90YWJsZV9s
YXlvdXQgPSBvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLl90YWJsZV9sYXlvdXQ7CisgICAgbm9u
aW5oZXJpdGVkX2ZsYWdzLl9wYWdlX2JyZWFrX2JlZm9yZSA9IG90aGVyLT5ub25pbmhlcml0ZWRf
ZmxhZ3MuX3BhZ2VfYnJlYWtfYmVmb3JlOworICAgIG5vbmluaGVyaXRlZF9mbGFncy5fcGFnZV9i
cmVha19hZnRlciA9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX3BhZ2VfYnJlYWtfYWZ0ZXI7
CisgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9wYWdlX2JyZWFrX2luc2lkZSA9IG90aGVyLT5ub25p
bmhlcml0ZWRfZmxhZ3MuX3BhZ2VfYnJlYWtfaW5zaWRlOworICAgIG5vbmluaGVyaXRlZF9mbGFn
cy5fdW5pY29kZUJpZGkgPSBvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLl91bmljb2RlQmlkaTsK
KyNpZiBFTkFCTEUoU1ZHKQorICAgIGlmIChtX3N2Z1N0eWxlICE9IG90aGVyLT5tX3N2Z1N0eWxl
KQorICAgICAgICBtX3N2Z1N0eWxlLmFjY2VzcygpLT5jb3B5Tm9uSW5oZXJpdGVkRnJvbShvdGhl
ci0+bV9zdmdTdHlsZS5nZXQoKSk7CisjZW5kaWYKKyAgICBBU1NFUlQoem9vbSgpID09IGluaXRp
YWxab29tKCkpOworfQorCiBSZW5kZXJTdHlsZTo6flJlbmRlclN0eWxlKCkKIHsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lv
biA5ODQ3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsNiArMjY2LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB1
bnNpZ25lZCBjaGFyIF9wc2V1ZG9CaXRzIDogNzsKICAgICAgICAgdW5zaWduZWQgY2hhciBfdW5p
Y29kZUJpZGkgOiAzOyAvLyBFVW5pY29kZUJpZGkKICAgICAgICAgYm9vbCBfaXNMaW5rIDogMTsK
KyAgICAgICAgLy8gSWYgeW91IGFkZCBtb3JlIHN0eWxlIGJpdHMgaGVyZSwgeW91IHdpbGwgYWxz
byBuZWVkIHRvIHVwZGF0ZSBSZW5kZXJTdHlsZTo6Y29weU5vbkluaGVyaXRlZEZyb20oKQogICAg
ICAgICAvLyA1MyBiaXRzCiAgICAgfSBub25pbmhlcml0ZWRfZmxhZ3M7CiAKQEAgLTMyOCw2ICsz
MjksNyBAQCBwdWJsaWM6CiAgICAgflJlbmRlclN0eWxlKCk7CiAKICAgICB2b2lkIGluaGVyaXRG
cm9tKGNvbnN0IFJlbmRlclN0eWxlKiBpbmhlcml0UGFyZW50KTsKKyAgICB2b2lkIGNvcHlOb25J
bmhlcml0ZWRGcm9tKGNvbnN0IFJlbmRlclN0eWxlKik7CiAKICAgICBQc2V1ZG9JZCBzdHlsZVR5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQc2V1ZG9JZD4obm9uaW5oZXJpdGVkX2Zs
YWdzLl9zdHlsZVR5cGUpOyB9CiAgICAgdm9pZCBzZXRTdHlsZVR5cGUoUHNldWRvSWQgc3R5bGVU
eXBlKSB7IG5vbmluaGVyaXRlZF9mbGFncy5fc3R5bGVUeXBlID0gc3R5bGVUeXBlOyB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5j
cHAJKHJldmlzaW9uIDk4NDc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NW
R1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiwxNSBAQCB2b2lk
IFNWR1JlbmRlclN0eWxlOjppbmhlcml0RnJvbShjb25zdCBTCiAgICAgc3ZnX2luaGVyaXRlZF9m
bGFncyA9IHN2Z0luaGVyaXRQYXJlbnQtPnN2Z19pbmhlcml0ZWRfZmxhZ3M7CiB9CiAKK3ZvaWQg
U1ZHUmVuZGVyU3R5bGU6OmNvcHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IFNWR1JlbmRlclN0eWxl
KiBvdGhlcikKK3sKKyAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzID0gb3RoZXItPnN2Z19ub25p
bmhlcml0ZWRfZmxhZ3M7CisgICAgc3RvcHMgPSBvdGhlci0+c3RvcHM7CisgICAgbWlzYyA9IG90
aGVyLT5taXNjOworICAgIHNoYWRvd1NWRyA9IG90aGVyLT5zaGFkb3dTVkc7CisgICAgcmVzb3Vy
Y2VzID0gb3RoZXItPnJlc291cmNlczsKK30KKwogU3R5bGVEaWZmZXJlbmNlIFNWR1JlbmRlclN0
eWxlOjpkaWZmKGNvbnN0IFNWR1JlbmRlclN0eWxlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBO
T1RFOiBBbGwgY29tcGFyaXNpb25zIHRoYXQgbWF5IHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlv
dXQgaGF2ZSB0byBnbyBiZWZvcmUgdGhvc2Ugd2hvIHJldHVybiBTdHlsZURpZmZlcmVuY2VSZXBh
aW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVy
U3R5bGUuaAkocmV2aXNpb24gOTg0NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU1ZHUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBwdWJs
aWM6CiAKICAgICBib29sIGluaGVyaXRlZE5vdEVxdWFsKGNvbnN0IFNWR1JlbmRlclN0eWxlKikg
Y29uc3Q7CiAgICAgdm9pZCBpbmhlcml0RnJvbShjb25zdCBTVkdSZW5kZXJTdHlsZSopOworICAg
IHZvaWQgY29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgU1ZHUmVuZGVyU3R5bGUqKTsKIAogICAg
IFN0eWxlRGlmZmVyZW5jZSBkaWZmKGNvbnN0IFNWR1JlbmRlclN0eWxlKikgY29uc3Q7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>